Методология разработки программного обеспечения (ПО) — это процесс, с помощью которого команда инженеров создает конкретный продукт.
Методология Waterfall, также известная как «Модель водопада», представляет собой последовательный процесс разработки программного обеспечения, в течение которого реализуются различные этапы проекта, включающие анализ, проектирование, разработку, тестирование. Полную документацию проекта, включая пользовательский интерфейс, пользовательские истории, все варианты и результаты функций нужно изучить на курсах Deveducation. А в этом материале рассмотрим особенности методологии Waterfall детальнее.
Что такое методология Waterfall?
Методология Waterfall — это линейный подход к управлению проектом, при котором требования заинтересованных сторон и клиентов собираются в самом его начале, а затем создается последовательный план для реализации этих требований. Водопадный подход был впервые задуман Уинстоном У. Ройсом в 1970 году, и он был быстро принят в различных отраслях промышленности благодаря своей логической последовательности и простоте реализации.
В статье Википедии говорится, что Waterfall — это последовательный (не итеративный) процесс разработки программного обеспечения, который непрерывно проходит следующие фазы: концепция, инициация, анализ, проектирование, разработка, тестирование, производство/выпуск, внедрение и обслуживание. Определение этой модели в Techopedia гласит: «… каскадная модель не предполагает переход к следующей фазе до тех пор, пока не завершится предыдущая. Вернуться к предыдущей фазе можно только в случае явной необходимости». Tutorials Point отмечает: «В модели Waterfall каждый этап должен быть завершен до начала следующего, и этапы не должны пересекаться». Мы ограничимся этими определениями, потому что они встречаются в большинстве зарубежных и отечественных компьютерных учебниках и в средствах массовой информации. Разница в определениях заключается только в названиях и количестве фаз процесса разработки программного обеспечения, что для описания методологии не очень важно. Основываясь на этих определениях, основными характеристиками методологии выступают:
- отсутствие итераций в процессе создания программного обеспечения;
- переход от одного этапа процесса к следующему возможен только после полного завершения работ на предыдущем этапе, таким образом, фазы не перекрываются.
Некоторые из отраслей, которые регулярно используют метод Waterfall, включают строительство, IT и разработку программного обеспечения. Однако термин Waterfall обычно используется в контексте программного обеспечения, поэтому остальная часть этого поста будет касаться модели, относящейся к разработке программного обеспечения.
Фазы модели Waterfall
Модель Waterfall иллюстрирует процесс разработки программного обеспечения в линейном последовательном потоке. Это значит, что любая фаза в процессе разработки начинается только тогда, когда предыдущая завершена.
Модель Waterfall — это методология управления проектами, имеющая, как минимум, пять-семь этапов, которые следуют в строгом линейном порядке, причем очередной этап не может начаться до завершения предыдущего этапа. Конкретные названия фаз могут быть разными, но они изначально были определены Ройсом следующим образом:
- Требования.
Ключевым аспектом является то, что все требования клиентов собраны в начале проекта, что позволяет планировать каждый второй этап без дальнейшего участия клиента, пока продукт не будет завершен. Предполагается, что все требования могут быть собраны на этом этапе.
- Проектирование.
Этап проектирования лучше всего разбить на подфазы логического проектирования и физического проектирования. На фазе логического дизайна происходят мозговые штурмы и теоретизируются возможные решения. На фазе физического проектирования теоретические идеи и схемы превращаются в конкретные спецификации.
- Конструирование.
На данном этапе программисты усваивают требования и спецификации предыдущих и создают реальный код.
- Воплощение.
Считается исполнительским этапом, когда происходит большая часть разработки. На этом этапе возможны только незначительные правки к «Конструированию».
- Тестирование
Клиент регулярно использует продукт на этапе технического обслуживания, обнаруживая ошибки, неадекватные функции и другие неточности, возникшие в процессе производства. Производственная команда применяет эти исправления по мере необходимости, пока клиент не будет удовлетворен.
- Развертывание.
Когда программное обеспечение создано, оно может быть представлено клиенту. Поскольку этот этап также включает поддержку, взаимодействие с предыдущими этапами неизбежно.
Следующая иллюстрация представляет различные фазы модели Waterfall.
Все эти фазы связаны друг с другом каскадно, а прогресс в них рассматривается как непрерывно нисходящий (как водопад) через последовательные фазы.
Waterfall: Управление проектами
Если модель Waterfall должна быть выполнена формально, каждый из вышеуказанных этапов должен выполняться линейно. Это означает, что каждый этап должен быть завершен до начала следующего этапа, и этапы никогда не повторяются, если только во время проверки или технического обслуживания не обнаруживается крупный сбой.
Кроме того, каждая фаза дискретна и в значительной степени существует в изоляции. Это особенно верно для фазы «требований». Как только требования клиента собраны, он перестают играть какую-либо роль в фактической разработке программного обеспечения.
Применение модели Waterfall
Любое программное обеспечение отличается в разработке и, в зависимости от внутренних и внешних факторов, требует соответствующего подхода. Вот некоторые ситуации, в которых использование модели Waterfall было бы наиболее подходящим:
- Требования в проекте характеризуются ясностью и четко зафиксированы.
- Продукт, который разрабатывается, стабилен.
- Есть наличие достаточных ресурсов с необходимым опытом для поддержки продукта.
- Проект не длительный.
Преимущества и недостатки Waterfall
Преимущества развития Waterfall состоят в том, что он позволяет выделять и контролировать этапы. Вместе со сроком для каждой фазы разработки может быть установлен график, таким образом, продукт может проходить фазы модели разработки одну за другой. Каждый этап проекта протекает в строгом порядке.
Некоторые из преимущества модели Waterfall следующие:
- Фазы проекта обрабатываются и завершаются одна за одной.
- Жесткость модели для управления проектом с наличием конкретных результатов и процесса обзора на каждом этапе.
- Хорошо подходит для небольших проектов, где имеются четкие требования.
- Четко определенные этапы и сроки разработки.
- Легкость организации задач в каждой фазе.
- Процесс и результаты документированы.
Недостатком модели Waterfall является то, что она не дает времени для раздумий или пересмотра. Когда программное обеспечение проходит стадию тестирования, достаточно трудно вернуться назад и изменить что-то, что не было продумано и задокументировано на стадии разработки.
Основные недостатки модели следующие:
- Никакое рабочее программное обеспечение не воспроизводится до окончания жизненного цикла.
- Есть вероятность риска и неопределенности.
- Не очень хорошая модель для сложных и объектно-ориентированных проектов.
- Модель не подходит для длительных и текущих проектов.
- Трудно измерить прогресс в несколько этапов.
- Нет приспособления к изменяющимся требованиям.
- Регулировка объема в течение жизненного цикла может привести к завершению проекта.
- Интеграция проекта в самом конце не позволяет выявить какие-либо технологические проблемы на раннем этапе.