Лекция № 3
Организация и управление процессом разработки
Задачи / функции:
Управление верхнего уровня: принятие общих решений о технологии, запуске проекта, принципиальных изменениях в нем
Планирование и распределение ресурсов
Материальных: финансы, аппаратура, софт, инфраструктура
Человеческих: специалисты - участники разработки
Временных: календарное планирование
Контроль хода выполнения и качества проекта
Планирование:
долгосрочное (стратегическое и предпроектное) и оперативное (в ходе выполнения проекта). Проблемы:
Надежное предсказание трудоемкости Вопрос 1.
Структура команды и распределение функций / ответственности - нужна модель команды
Частое перепланирование из-за итераций проекта
Параллельное выполнение нескольких проектов
Текучесть кадров
Пример календарного плана в форме Excel-таблицы:
Веха |
Форма |
Срок |
Ресурсы |
Роль |
Исполнитель |
Загрузка |
Функциона-льные специ-фикации |
Диаграммы прецедентов |
01.01-15.01 |
1 неделя |
Аналитик |
А.А.Аналитиков |
100% |
Диаграммы активности |
1 неделя |
|||||
Текст |
01.01-20.01 |
2 недели |
Аналитик |
Н.Н.Начальников |
45% |
|
Прототип |
Пользовательские формы |
15.01-30.01 |
2 недели |
Программист |
П.П.Программистов |
100% |
План внедрения |
Текст |
01.01-30.01 |
1 день |
Аналитик |
Н.Н.Начальников |
5% |
Более нагляден сетевой график, например, построенный с помощью Microsoft Project:
Вопрос 2
Контроль хода разработки:
Контроль сроков внешних и внутренних этапов (вех, milestones) Вопрос 3
Контроль качества проекта / продукта
Осуществляется на основе анализа результатов этапов ("установление соответствия" в каскадной модели). Виды контроля:
Инспекция кода:
Просмотр (review) проектных документов и исходных кодов
Ревизия (audit) - то же, но более глубокий анализ
Проверка соответствия (verification) - формальными способами, в частности, тестирование
Оценка (validation) - качественная оценка и количественные измерения на поздних этапах или с помощью моделирования
Таким образом, контролер - это, в частности, тестировщик.
Модели команды разработчиков
Модель команды является методической основой для разработки конкретных должностных инструкций и формализованных процедур, связанных с подбором и расстановкой кадров, вовлеченных в процесс разработки и определением ролевых функций и связей между участниками проекта.
Иерархическая (древовидная) модель
Это традиционная модель организации. Ее достоинства:
Надежность, устойчивость, управляемость
Х орошая масштабируемость
Офицер = руководитель отдела, сержант = руководитель группы, солдат = программист
Принципиальные недостатки модели:
Экстенсивность: наращивание функциональности обеспечивается увеличением состава
Недостаточная гибкость Вопрос 4.
Консервативность: жесткое закрепление за каждым исполнителем его ролевой функции. Модель плохо приспособлена для быстрой смены технологий и парадигм.
Главный недостаток – первый, поскольку увеличение численности исполнителей ведет к увеличению издержек на коммуникацию. Брукс показал, что в программировании измерение трудоемкости человеко-месяцами весьма относительно:
M (месяцев) 3 - Работа со сложными взаимосвязями (программирование)
2 - Неразделяемая работа (вынашивание ребенка или идеи)
1- Хорошо разделяемая работа (копание канав): M x N = Const
N (человек)
В программировании добавление исполнителей (и, значит, разбиение общей задачи на более мелкие подзадачи) увеличивает непроизводительные расходы на обмен информацией между участниками, согласование решений, совещания – т.е. передачу знания. Эти расходы растут как квадрат числа участников, что обесценивает эффект добавления. Это демонстрирует кривая 3 на графике; эмпирически известный минимум кривой – при N = 5-7 чел. А программные проекты чаще проваливаются от нехватки календарного времени, чем по другим причинам.
«Закон Брукса»: Если проект не укладывается в сроки, то добавление рабочей силы задержит его еще больше.