Введение в методологии разработки
В рамках изучения основ проектного менеджмента рассматриваются ключевые методологии разработки программного обеспечения. Они делятся на три группы: линейные, итерационные (спиральная модель) и унифицированные процессы, которые являются предшественниками Agile.
Линейные модели процессов
Линейные модели следуют строгой последовательности фаз, где каждая фаза идёт одна за другой без возвратов и перекрытий. Они просты для понимания и внедрения, но плохо адаптируются к изменениям.
Модель Waterfall (Водопад)
- Это базовый линейный процесс, где этапы (требования, дизайн, разработка, тестирование) выполняются строго последовательно.
- Преимущества: Позволяет быстро приступить к созданию продукта, минимизирует изменения в середине работы, уделяет большое внимание документации.
- Недостатки: Невозможность вернуться к предыдущей фазе, низкая вовлечённость клиента в процесс, который видит результат только в конце.
Модель V-разработки
- Похожа на Waterfall, но делает акцент на верификации — проверке соответствия каждого этапа предыдущему (тестирование соответствует дизайну, дизайн — спецификациям и т.д.).
- Сохраняет все основные недостатки Waterfall, включая позднее получение результата клиентом.
Модель Pila (Пила)
- Улучшает взаимодействие с клиентом за счёт разделения задач на клиентские и задачи команды разработчиков. Эти задачи пересекаются на протяжении всего процесса.
- Позволяет собирать обратную связь от клиента своевременно, а не только в конце.
- Остаётся линейной моделью и по-прежнему плохо адаптируется к изменениям.
Линейные модели хорошо подходят для производственного вида ПО с чёткими, неизменными спецификациями (например, следование ГОСТ), где процесс отточен и не требует постоянного анализа.
Итерационные (циклические) модели
Итерационные модели позволяют повторять этапы процесса циклически, что даёт возможность возвращаться к предыдущим шагам. Они считаются предшественниками гибких (Agile) практик.
Спиральная модель
- Была представлена Барри Боэмом в 1986 году. Процесс визуализируется как спираль, проходящая через четыре квадранта (этапы) за одну итерацию.
- Позволяет команде и заказчику просматривать и оценивать продукт в конце каждой итерации, внося необходимые корректировки.
- Недостаток: Требует большого количества информации для планирования длительных итераций и оценки рисков.
Итерационные модели, в отличие от линейных, предполагают, что за один цикл создаётся не 100% готового продукта, а лишь его часть (например, 20%). Полная готовность достигается после серии итераций.
Унифицированный процесс (Unified Process)
Эта модель базируется на спиральной, являясь итерационной, и уже близка к Agile. Развитие происходит постепенно, с акцентом на архитектуру продукта.
Ключевые особенности:
- Состоит из последовательных фаз, но внутри фаз работа может вестись параллельно (например, проектирование архитектуры и написание тестов).
- Фазы процесса: Начало, Разработка (создание прототипа), Постройка (программирование), Передача продукта.
- Внутри фаз работа ведётся небольшими итерациями (аналогия со спринтами в Scrum).
- На начальной фазе оценивается жизнеспособность продукта, его стоимость и риски, но сама разработка не ведётся.
Унифицированный процесс позволяет гибко разрабатывать продукт с полным вовлечением заказчика, постоянным анализом и возможностью внедрения изменений от итерации к итерации.
Заключение
Рассмотрены пять методологий, эволюционирующих от простых к более гибким:
- Линейные (Waterfall, V-модель, Pila): Просты, последовательны, но негибки.
- Спиральная модель: Вводит цикличность и оценку после каждой итерации.
- Унифицированный процесс: Итерационная модель с параллельной работой внутри фаз, предвестник Agile.
Следующим шагом после унифицированного процесса являются полноценные Agile-методологии, такие как Scrum и Kanban.