Лекция №5Жизненный цикл ПО
В этой лекции рассматривается жизненный цикл программ — от первоначальной задумки до выпуска конечного продукта. Как оказывается, разрабатывать ПО можно существенно различными способами в зависимости от характеристик продукта (скажем, его объема) и от расстановки приоритетов заказчиком (нужны ли частые выпуски? требуется ли высокая надежность?).
Ключевые понятия жизненного цикла программного обеспечения определяются в стандарте ISO 12207. Стандарт детально описывает процессы разработки, но не детализирует, как из этих процессов организовать полный цикл разработки. Для этой цели существуют модели жизненного цикла.
Основных типов моделей жизненного цикла три:
- каскадная модель, в которой процессы разработки (инженерия требований, проектирование, программирование, тестирование и сопровождение) выполняются последовательно, один за другим;
- инкрементная/итеративная модель, в которой часть процессов выполняются итеративно для того, чтобы по очереди реализовать все требования к продукту;
- эволюционная модель — создание прототипов для отработки и уточнения требований по ходу разработки.
Наиболее «популярная» на сегодняшний день модель — гибкая методология разработки (agile development). Это развитие эволюционной модели, в основу которой положено наблюдение, что заказчик, в общем-то, зачастую не знает, чего хочет (то есть выработка требований как начальный этап разработки лишена смысла). Чтобы удовлетворить заказчика, нужно с ним непрерывно взаимодействовать, и демонстрировать ему работающее приложение, а не отчеты. Второе наблюдение в основе agile — взаимодействие в команде разработки важнее, чем тщательное планирование, если окружение продукта быстро меняется (в особенности, если все вокруг следуют принципам agile).