Модели команды разработчиков
Модель команды является методической основой для разработки конкретных должностных инструкций и формализованных процедур, связанных с подбором и расстановкой кадров, вовлеченных в процесс разработки и определением ролевых функций и связей между участниками проекта.
Это традиционная модель организации. Ее достоинства:
- Надежность, устойчивость, управляемость
-
Хорошая масштабируемость
Офицер = руководитель отдела, сержант = руководитель группы, солдат = программист
Принципиальные недостатки модели:
· Экстенсивность: наращивание функциональности обеспечивается увеличением состава
· Недостаточная гибкость Вопрос 4.
· Консервативность: жесткое закрепление за каждым исполнителем его ролевой функции. Модель плохо приспособлена для быстрой смены технологий и парадигм.
Главный недостаток – первый, поскольку увеличение численности исполнителей ведет к увеличению издержек на коммуникацию. Брукс показал, что в программировании измерение трудоемкости человеко-месяцами весьма относительно:
|
|
M (месяцев) 3 - Работа со сложными взаимосвязями (программирование)
2 - Неразделяемая работа (вынашивание ребенка или идеи)
1- Хорошо разделяемая работа (копание канав): M x N = Const
N (человек)
В программировании добавление исполнителей (и, значит, разбиение общей задачи на более мелкие подзадачи) увеличивает непроизводительные расходы на обмен информацией между участниками, согласование решений, совещания – т.е. передачу знания. Эти расходы растут как квадрат числа участников, что обесценивает эффект добавления. Это демонстрирует кривая 3 на графике; эмпирически известный минимум кривой – при N = 5-7 чел. А программные проекты чаще проваливаются от нехватки календарного времени, чем по другим причинам.
«Закон Брукса»: Если проект не укладывается в сроки, то добавление рабочей силы задержит его еще больше. J