362 Часть III: Управление проектами и группами
• Непосредственная стоимость продолжения работ. Эти затраты
определяются зарплатой всех участников проекта.
• Дополнительные потери. Если работа выполняется по контракту,
руководитель может предусмотреть пеню за несоблюдение сроков
или значительный бонус за своевременное завершение проекта.
Если продукт должен быть выпущен к началу определенного се-
зона, например, к осени, Рождеству или Новому году, пропустив
его, можно потерять часть покупателей. Кроме того, задержка
выпуска продукта может привести к тому, что устареет техника,
на которую он ориентирован, или на рынке появятся конкуриру-
ющие продукты. Очень важно понимать, что рынок завоевывает
продукт, появившийся первым, и по количеству продаж он пре-
взойдет более качественные продукты, выпущенные какое-то
время спустя. Поэтому задержка выпуска ради повышения каче-
ства продукта может его похоронить.
• Потерянные затраты на маркетинг. Если продукт разрекламиро-
ван слишком рано, к моменту его выпуска придется все повторять
сначала.
• Параллельные проекты. Люди, работающие над проектом сверх
срока, могли бы уже выполнять другую работу. Таким образом,
задержки одного проекта отражаются и на других.
• Отсутствие ожидаемой прибыли. Если доходы от выпуска продук-
та должны быть немедленно вложены во что-то другое, если эти
деньги срочно нужны компании — тогда у вас большие пробле-
мы.
Модели разработки программного
обеспечения
Модель разработки программного обеспечения — это тот принцип, по
которому руководитель проекта составляет план выполнения задач. О клас-
сических моделях разработки, их достоинствах и недостатках подробно
рассказывалось в главе 12. Пример организации работ по методу водопада
приводился в главе 3. Этот же метод мы еще раз рассмотрим с другой точки
зрения в главе 14.
У каждой модели свое соотношение возможностей ускорения и удешев-
ления проекта. Поэтому руководитель должен решить, какие его составля-
ющие с наибольшей вероятностью могут подвергнуться изменениям, и
выбрать модель, наиболее гибкую именно в этих областях. Если, например,
набор функций программы жестко фиксирован и ни одна из них ни в коем
случае не может быть удалена, бессмысленно выбирать модель, ориентиро-
ванную на снижение стоимости продукта за счет сокращения его функций.
Глава 13: Объединяющая 363
Обычно у любого специалиста в этой области имеется четкое представ-
ление об относительных преимуществах и недостатках каждой модели.
Однако, несмотря на профессиональный опыт и веские логические обосно-
вания, эти представления весьма субъективны. В частности, собственное
мнение на этот счет имеется и у каждого из авторов этой книги, однако эти
мнения различны. Имея это в виду, никогда не пытайтесь критиковать
руководителя проекта за Неверный Выбор Модели разработки.
В следующих двух разделах рассказывается о проблемах и путях их
решения, связанных с методом водопада и эволюционной моделью разра-
ботки. На их примере мы хотим показать, как следует подходить к анали-
зу любой модели, которая покажется заслуживающей внимания.
Попробуйте подобным образом проанализировать методики, используемые
в вашей компании.
Традиционный метод водопада
Метод водопада представляет собой классический подход к управлению
проектом. Особенно часто он применяется для крупных разработок. В
соответствии с этим методом проект разбивается на ряд последовательных
этапов — анализ требований, разработка проектной документации, коди-
рование, тестирование и выпуск. Подавляющая часть работ каждого этапа
завершается до начала следующего. Например, разрабатываются функцио-
нальные требования к продукту. Когда этот документ готов, начинается
разработка внутренней и внешней спецификации. После завершения и
утверждения спецификаций начинается кодирование.
В теории все звучит красиво и очень убедительно. Таков стандартный
подход, и руководители многих групп тестирования просят программистов
его придерживаться. Тестировщики задолго до начала тестирования полу-
чают в руки спецификацию, полностью описывающую продукт и ограни-
чивающую количество его последующих изменений. Спецификация
облегчает планирование работ по тестированию, формирование их бюдже-
та, календарного плана, подбор персонала.
Описываемый метод первоначально предназначался для разработки
программного обеспечения по контрактам. В этом случае требования к
продукту формирует заказчик, и делается это заранее, поскольку на их
основе определяется стоимость разработки. Кроме того, заказчик должен
проанализировать и одобрить внешний дизайн, спецификации многих
потоков данных, определения многих отчетов и еще целый ряд других
деталей, причем все эти документы должны быть согласованы до начала
кодирования. Только после этого начинается собственно создание продукта.
Если требования заказчика к продукту по каким-либо причинам изменят-
ся, эти изменения вносятся в продукт, но вся уже проделанная работа все
равно оплачивается. Именно такова юридическая схема действий, но кто
сказал, что юристы — хорошие инженеры?