11.0 Водопад против циклического управления проектом (часть 4) — жизненный цикл проекта и результаты

Циклические методы управления проектами #

Из-за проблем, описанных выше, в последние годы были разработаны различные альтернативные методы управления проектами. Эти методы особенно хорошо подходят для инициатив по развитию информационных технологий.

Циклическое управление проектами — это метод достижения цели проекта с помощью серии коротких последовательных циклов. Каждый цикл короткий, в идеале — менее месяца. Каждый цикл завершает часть проекта. Каждый цикл включает анализ, проектирование, внедрение и тестирование. Это существенно отличается от водопадного подхода, в котором каждая из этих задач выполняется на отдельной фазе. Кроме того, водопадный подход определяет ограниченное количество отдельных моментов для концепции, дизайна, реализации и тестирования. При циклическом подходе это происходит много раз подряд.

Понимание Программное обеспечение для управления проектами Цикл #

На протяжении циклов реализуются различные программные компоненты, поэтому они являются самодостаточными. Каждый цикл оценивается после завершения. Если в результате растущего понимания возникают новые или альтернативные потребности проекта, деятельность будущих циклов корректируется, чтобы включить их.

Цикл начинается с создания или изменения расписания. После этого оцениваются потребности цикла в выпуске. Дизайн разрабатывается, кодируется и проверяется. После этого проводится оценка, и в некоторых случаях внедряется новая программа. Затем может начаться следующий цикл для завершения последующих компонентов проекта. (Более подробное обсуждение циклических методов и их различий см., Например, в Kroll, 2004; Chromatic, 2003; Stapleton, 2002.)

Ниже перечислены основные преимущества использования циклического метода:

  • Улучшение качества продукта и реализация функциональности;
  • Улучшение качества продукта и реализация функциональности;
  • Более реалистичная смета времени и затрат;
  • Меньше нагрузки на команду проекта;
  • Более высокое качество.

В предыдущих главах показано, насколько сложно или невозможно правильно определить требуемые возможности на ранних этапах проекта. Циклические методы реализуют требуемую функциональность в серии коротких циклов. Каждый цикл не только исследует, но также проектирует, реализует и тестирует крошечную часть требуемой функциональности. Быстрая последовательность проектирования, выполнения и тестирования имеет решающее значение для повышения качества. В результате команды могут вносить изменения. Если дизайн не работает в реальности, это становится очевидным на протяжении всего цикла, что позволяет вносить изменения. Кроме того, такая операция позволяет потребителям запрашивать изменения.

Поддержание качества #

Еще одна причина, по которой циклическое управление проектами улучшает качество, заключается в том, что каждый цикл требует интенсивного сотрудничества между клиентом, дизайнерами и программистами. Многопрофильная команда вместе разрабатывает и реализует решения. Клиент в основном занимается на первых порах разработкой требований; затем дизайнеры создают дизайн, и, наконец, программисты создают программное обеспечение. Руководитель проекта выступает в качестве связующего звена между всеми сторонами и отвечает за то, чтобы предоставленная информация была доставлена соответствующему получателю. На самом деле многие программисты и дизайнеры никогда не сталкиваются с клиентом, который только появляется снова в процессе разработки программного обеспечения.

Циклические методы управления проектами особенно хорошо подходят для проектов, в которых конечная цель не может быть четко определена заранее, таких как художественные или исследовательские инициативы. Циклическая работа с разнообразной командой, в которую входят конечные пользователи, позволяет команде определить истинную цель проекта и наилучший способ ее достижения. Каждый цикл дает возможность поразмышлять и исправить.

Для водопадных проектов цель определяется заранее. Размышления о первоначальной цели менее вероятны. Первоначально сформулированная цель никогда (полностью) не реализуется, и ни изначально задуманная, ни реализованная цель вряд ли будут в точности тем, что было задумано.

Наконец, циклические методы управления проектами обеспечивают превосходные результаты, поскольку клиент проводит приемочные испытания. Кроме того, качество повышается за счет включения тестов в качестве критерия высокой производительности с самого начала. Следовательно, программисты должны создавать «неудавшиеся тесты» (или модульные тесты) до написания своего кода. Только код, прошедший неудачный тест, считается приемлемым.

Последовательное тестирование #

Работа, ориентированная на тестирование, требует от программистов продемонстрировать отсутствие ошибок в новом коде перед его написанием. Они делают это, создавая тест (неуспешный тест), который выявляет любые потенциальные недостатки, прежде чем начинать код. Рассмотрим случай, когда необходимо разработать программное обеспечение для определения надлежащего количества сдачи, которое должно быть получено от кондитерского автомата. Для начала необходимо проверить наличие функции, способной вызвать изменение. Эта функция может называться «отдать сдачу». Можно провести простой тест, который покажет, что функция «дать сдачу» еще не существует. Тест будет пройден, если программист создаст функцию, но еще не снабдил ее каким-либо содержанием.

Следующий шаг — определить, вернет ли автомат правильную сумму денег при покупке товара. Вставьте шестьдесят центов в автомат и купите предмет за пятьдесят центов. Тест не пройден, поскольку функция остается пустой. После этого программист пишет код. Он указывает в функции «отдать сдачу», что количество сдачи, которое должно быть возвращено, равно сумме денег, помещенной в автомат, за вычетом стоимости выбранных конфет. Теперь тест должен пройти успешно. Эту процедуру необходимо повторить для каждого компонента программы.

Не только код должен быть протестирован технически; функции также должны быть протестированы (например, приемочные испытания). Перед тем, как начать кодирование, клиент устанавливает критерии, в соответствии с которыми разрабатываемые возможности могут быть одобрены (например, насколько быстро компьютер должен реагировать на определенное действие пользователя). До этого определение критериев, по которым может быть утверждена дополнительная возможность, оказалось очень сложным и трудоемким. Тем не менее, активное участие потребителей в тестировании имеет решающее значение для успеха проекта.

Оценка времени и денег #

Понимание функций, которые будут реализованы, не предопределено в начале циклического проекта. Приведено количество доступного времени. Достигаются соглашения о направлении проекта, и на протяжении всего процесса устанавливается, что действительно необходимо, выгодно и выполнимо с точки зрения создаваемой программы. Поскольку выполняемые функции не являются поставленными целями, циклические проекты сводят к минимуму опасность того, что требуемые часы и, следовательно, деньги могут выйти из-под контроля. Чтобы избежать этого сценария, доступное время используется в качестве отправной точки, и то, что разумно ожидать в этом количестве времени, устанавливается на протяжении всего процесса.

Кроме того, циклические методы управления проектами гораздо более удобны для проектной группы. Команда делает все возможное в отведенные сроки, но не вынуждена достигать необоснованных сроков или работать в рамках недостаточного бюджета.

Кроме того, циклические методы упрощают администрирование иностранных провайдеров. При водопадном подходе проект может расти в зависимости от одного поставщика до тех пор, пока проект не будет завершен, независимо от производительности поставщика. Теоретически возможно заключать новые соглашения для каждого цикла или даже для каждого компонента, который будет поставляться в соответствии с циклической технологией работы, и, при необходимости, менять поставщиков.