- •1.Предметная область. Прикладные программные системы (пс). Условия создания прикладных программных систем.
- •2.Автоматизированные системы управления и современные прикладные программные системы. Классификация, особенности.
- •3.Информационные системы и системы реального времени.
- •4.Требования к прикладным системам. Характеристика требований.
- •5.Требования к пс: адекватность предметной области; дружественность; возможность модификации.
- •6.Требования к пс: живучесть; защищенность. Проблемы переносимости. Универсальность и специализация.
- •7.Тиражирование прикладных систем. Тиражируемые, индивидуальные, слабо тиражируемые пс.
- •8.Модели жизненного цикла. Их характеристики.
- •9.Модели проектирования – каскадная, поэтапная, спиральная. Их особенности и области применения.
- •10.Планирование работы. Сетевой график.
- •11.Организация коллективной работы. Типы коллективов программистов.
- •12.Условия работы коллектива программистов.
- •13.Роли участников проекта: заказчик, пользователь, разработчик, руководитель, администратор.
- •14.Руководитель проекта, его действия по созданию работоспособного коллектива.
- •15.Профессиональная зрелость коллектива программистов.
- •16.Начальный этап проектирования. Анализ требований. Извлечение информации о предметной области.
- •17.Структурный системный анализ. Методология структурного системного анализа sadt (стандарт idef0).
- •18.Этап проектирования. Проектирование данных, функций, интерфейса, событий, выходных документов.
- •19.Потоки данных и процессы их обработки Диаграммы потоков данных в методологии Гейна-Сарсона.
- •20.Обсуждения: сквозной структурный контроль.
- •21.Принципы и виды отладки программ. Стратегии тестирования. Автономная и комплексная отладка.
- •22.Правила («Заповеди») тестирования.
- •23. Автономная отладка. Восходящее и нисходящее тестирование. Шаги автономного тестирования.
- •24. Комплексная отладка. Тестирование архитектуры, внешних функций, качества, документации, требований.
- •25. Особенности структурного тестирования (белый ящик). Его достоинства и недостатки.
- •26. Функциональное тестирование (черный ящик). Категории выявляемых ошибок.
- •27. Документирование прикладных программных систем. Этапы создания документации для тиражируемых систем.
- •28. Сдача прикладных систем в эксплуатацию.
- •29. Смена систем. Особенности проектирования «второй системы». Тактические приемы смены систем.
- •30. Особенности разработки заказных программных систем.
- •31. Подходы к перепроектированию технологических процессов: реинжиниринг бизнес-процессов (рбп) и асу.
- •32. Перепроектирование технологических процессов: модель управления по функциям и модель горизонтального потока. Цель и средства рбп.
- •33. Перепроектирование технологических процессов: риски. Критика подхода.
- •34. Перепроектирование технологических процессов и информационные технологии.
- •35. Классические и легкие методологии проектирования. Области применения.
- •36. Особенности подхода в методологии экстремального программирования.
- •37. Участники команды разработчиков в экстремальном программировании.
- •38. Экстремальное программирование: ценности, базовые принципы, виды деятельности.
- •39.Двенадцать правил экстремального программирования.
- •40. Риски легких методологий (на примере экстремального программирования).
- •41. Определение безнадежного проекта (бп). Категории бп.
- •42. Причины, порождающие безнадежные проекты.
- •43. Участники безнадежного проекта.
- •44. Отношение руководителя проекта и разработчиков к бп различных типов.
- •45. Оценка сложности проекта. Переговоры. Допустимые компромиссы.
- •46. Стратегии проведения переговоров в бп.
- •47. Человеческий фактор в бп: формирование команды.
- •48. Человеческий фактор в бп: условия работы.
- •49. Человеческий фактор в бп: мотивация, вознаграждение.
- •50. Роли участников команды бп.
10.Планирование работы. Сетевой график.
Работе над проектом предшествует планирование. Цель планирования – определить необходимое время разработки, количество участников, выделить наиболее ответственные работы. Этапы планирования работ по созданию программного проекта следующие.
Проект разбивается на элементарные функции (работы), каждая из которых выполняется одним человеком и не может быть распараллелена.
Определяется трудоемкость каждой функции и ее связи с другими.
По этим данным строится сетевой график выполнения проекта.
В графике (сети) определяется критический – самый длинный – путь.
Определяется продолжительность работы над проектом, которая равна общему времени выполнения функций, входящих в критический путь.
Определяется количество параллельно выполнимых работ в данный момент времени, которое соответствует числу ребер, проектирующихся в эту точку на оси времени.
Сетевой график – это графическое представление сетевой модели.
Сетевая модель – это информационная модель комплекса взаимосвязанных работ, заданная в форме сети, отображающей частичную упорядоченность работ по времени. Сеть рассматривается как ориентированный граф без циклов, ребра которого соответствуют работам, а вершины – событиям. Начальная вершина соответствует началу работ (исходному событию), конечная (целевая) – завершению. Модель отображает отношения предшествования между работами и определяет порядок их выполнения во времени. Дуги графа помечены числами, обозначающими длительность работ. Каждое событие, обозначаемое вершиной, совершается при завершении предшествующих работ, обозначенных входящими в вершину рёбрами. Свершение события создаёт условие выполнения работ, обозначенных исходящими из вершины рёбрами.
Критический путь – набольший по времени путь из начальной вершины в конечную, он показывает минимальное время, за которое может быть выполнен проект. Помимо этого, сетевой график показывает количество параллельно выполняемых работ в каждый момент времени, а также ресурс времени, который образуется из-за не одновременного окончания работ, ведущих к одному событию.
Предельному количеству участников соответствует максимальное число параллельно выполнимых работ за весь период разработки. Если реальное число разработчиков меньше, часть функций, не лежащих на критическом пути, выполняется не параллельно, а последовательно. Нужно следить, чтобы при таком преобразовании графика время работ не увеличилось.
Но даже при правильно определенном количестве участников разработки их количество может сделать проект неуправляемым. В этом случае его нужно разбить на два максимально независимых (две подсистемы). Тогда руководитель общего проекта должен взять на себя обязанности по согласованию подсистем в рамках проекта.
11.Организация коллективной работы. Типы коллективов программистов.
Программирование как процесс отображения некоторого множества целей, определенных предметной областью, на множество машинных команд и данных – творческий процесс преобразования неформальных понятий в формальные. Создание работоспособного коллектива творческих личностей, направленного на достижение единой цели, действующего в жёстких временных рамках и подчиняющийся строгой производственной дисциплине – задача достаточно сложная.
Оптимальная структура коллектива программистов (бригады) определяется характером проекта, условиями, в которых он выполняется, особенностями участников проекта. Характер проекта, то есть, его сложность, объем, сроки выполнения, уровень оплаты, позволяет определить количество, квалификацию и профессиональный состав участников. Бригада программистов может быть устроена по-разному, в зависимости от организации, особенностей проекта, свойств участников разработки. Рассмотрим наиболее популярные типы бригад.
Традиционная бригада – это иерархическая структура, в которой у руководителя проекта в подчинении есть старшие программисты, которые, в свою очередь, руководят более младшими. Каждый участник точно знает свой участок работы, свою цель, сроки, форму сдачи работы и т.п. Положительные стороны такой организации – прозрачность структуры, индивидуальная ответственность, возможность стимула в виде продвижения по службе.
Недостатки: нередко проект плохо делится на равные части, что приводит к сложному интерфейсу между ними; плохо учитывается специфика программной разработки, в которой ошибки одного программиста обычно влияют на результаты других; структура не способствует взаимному обучению участников; продвижение по службе вымывает высококлассных программистов из коллектива разработчиков.
Бригада без персонализации – здесь нет подчиненности, члены бригады на равных участвуют как в распределении работ, так и в выполнении. Основа успеха такой бригады – командный дух, стремление помочь, отсутствие конкуренции. Все успехи и неудачи рассматриваются как успехи и неудачи всей команды. Проекты, разрабатываемые такими командами, часто обладают высоким качеством, а их участники работают охотно и с высокой производительностью.
Недостатки: сложность создания бригады; отсутствие перспективы продвижения участников; сложность длительного поддержания стабильной работы.
Бригада главного программиста – суть бригады этого типа в том, что основная работа над проектом производится программистом очень высокого класса, которому ассистирует «второй пилот» – тоже высококлассный программист. Остальные участники (всего их десять в варианте [Брукс-6]) играют вспомогательные роли, направленные на получение максимальной производительности именно главным игроком. Главный программист принимает основные решения и несет полную ответственность за проект. Роль второго программиста – критическое осмысление решений главного, вскрытие их недостатков, а в том случае, когда главный не сможет продолжать работу над проектом – его замена. Основное достоинство этой модели – наиболее эффективное использование потенциала программистов высокого класса.
Недостатки: высок риск провала проекта, так как он завязан на одного человека; сложно найти действительно хорошего специалиста; при заданном коллективе реально организовать работу такой бригады трудно.
