Распределение времени и объема работ по стадиям
Стадия | Время работы, % | Объем работы, % |
Начальная стадия | ||
Разработка | ||
Конструирование | ||
Ввод в действие |
Данное распределение может быть достаточно гибким, оно подчиняется указанным ниже эвристическим правилам.
· Если для определения области действия проекта, изыскания финансирования, изучения рынка или создания первоначального прототипа нужно значительное время, — увеличивается начальная стадия.
· Если отсутствует архитектура, предусматривается применение новых (или незнакомых) технологий и (или) имеются жесткие ограничения производительности, значительное число технических рисков, а персонал большей частью состоит из новичков, — увеличивается стадия разработки.
· Если проект представляет собой разработку второго поколения существующего продукта и в архитектуру не вносятся значительные изменения — уменьшаются стадии разработки и конструирования.
· Если нужно быстро выпустить продукт на рынок (из-за высокой конкуренции) и спланировать постепенное завершение разработки — уменьшается стадия конструирования и увеличивается стадия ввода в действие.
· Если затруднено внедрение, например, при замещении одной системы другой без прерывания эксплуатации или при необходимости сертификации (в таких областях, как медицинское оборудование, ядерная промышленность или авиационная электроника), — увеличивается стадия ввода в действие.
Следующий важный вопрос «Сколько итераций будет содержать каждая стадия?». Прежде чем принять решение по этому вопросу, нужно рассмотреть продолжительность каждой итерации.
В идеальной ситуации итерация длится от двух до шести недель, хотя в действительности это зависит от характера проекта и размера организации-разработчика. Приведем несколько примеров.
· Группа из пяти человек может выполнить некоторое планирование в понедельник утром, наблюдать за ходом проекта и перераспределять задания во время ежедневных совместных обедов, начать конструирование во вторник, а завершить итерацию в пятницу вечером.
· Если попытаться применить этот сценарий для группы из 20 человек, то это окажется затруднительным. Распределение работы, синхронизация подгрупп и интеграция будут занимать больше времени. В этом случае итерация может занять три—четыре недели.
· Если же группа будет состоять из 40 человек, то только неделя уйдет на прохождение указаний от руководства к исполнителям. Нужны промежуточные уровни управления; кроме того, достижение общего понимания целей потребует большей формальности и документирования. В этом случае разумной продолжительностью итерации будет уже три месяца.
Кроме того, влияние оказывают и другие факторы: степень знакомства организации с итерационным подходом, стабильность и уровень развития организации, а также уровень технологической зрелости процессов создания ПО. В табл. 6.20 приведена приблизительная оценка длительности итерации, обобщающая результаты, полученные в реальных проектах.
Таблица 6.20
Длительность итерации
Количество строк кода | Число сотрудников | Длительность итерации |
2 недели | ||
1 месяц | ||
3 месяца | ||
8 месяцев |
После того как определена приемлемая длительность итерации, следует определить число итераций на каждой стадии.
На начальной стадии может вообще не быть итераций, поскольку не производится никакого ПО, все действия связаны только с планированием и маркетингом. Одна итерация все же может потребоваться для создания прототипа, предназначенного смягчить последствия от реализации основных технических решений.
На стадии разработки нужна, как минимум, одна итерация. Если отсутствует начальная архитектура и нужно адаптироваться к новым инструментальным средствам, технологиям, платформе или языку программирования, то следует планировать две—три итерации. Возможно, потребуется продемонстрировать прототип заказчику или конечным пользователям, чтобы уточнить требования. Кроме того, дополнительная итерация может потребоваться для исправления ошибок, допущенных при разработке архитектуры.
На стадии конструирования также нужно запланировать не менее одной итерации, при этом количество итераций зависит в основном от реализуемой функциональности (количества вариантов использования).
На стадии ввода в действие нужна, как минимум, одна итерация, например, для выпуска окончательной версии после бета-версии .
В итоге можно определить три уровня проведения полного цикла разработки (табл. 6.21).
Таблица 6.21