Жизненный цикл программного обеспечения ИС
Методология проектирования информационных систем описывает процесс создания, эксплуатации и развития систем в виде жизненного цикла (ЖЦ) ИС, представляя его как некоторую последовательность стадий. Каждая из стадий представляет собой выполнение определенных видов работ. Взаимосвязанная последовательность работ, которая дает определенный выходной результат, представляется в виде процесса ЖЦ.
Жизненный цикл (life cycle) системы, продукта, услуги, проекта или других изготовленных человеком объектов – это период, который начинается со стадии создания (например, с разработки концепции) и заканчивается прекращением применения данного объекта. Жизненный цикл ИС можно представить как ряд событий, происходящих с системой в процессе ее создания и использования. Для каждого этапа ЖЦ определяются состав и последовательность выполняемых работ, получаемые результаты, методы и средства, необходимые для выполнения работ, роли и ответственность участников и другие характеристики. Формальное описание ЖЦ ИС позволяет спланировать и организовать процесс разработки и обеспечить управление этим процессом.
Система(system) согласно стандарту ГОСТ Р ИСО/МЭК 12207-99: Комплекс, состоящий из процессов, технических и программных средств, устройств и персонала, обладающий возможностью удовлетворять установленным потребностям или целям.
Процесс(process) согласно стандарту ГОСТ Р ИСО/МЭК 12207-99: Набор взаимосвязанных работ, которые преобразуют исходные данные в выходные результаты. В стандарте ГОСТ Р ИСО/МЭК 12207-99 определяются процессы жизненного цикла программных средств, которые могут быть реализованы при заказе, поставке, разработке, эксплуатации и сопровождении программных продуктов.
Модель жизненного цикла(life cycle model) согласно стандарту ГОСТ Р ИСО/МЭК 12207-99: Структура, состоящая из процессов, работ и задач, включающих в себя разработку, эксплуатацию и сопровождение программного продукта, охватывающая жизнь системы от установления требований к ней до прекращения ее использования.
В настоящее время наиболее известны следующие модели жизненного цикла программного обеспечения информационной системы:
- Каскадная модель (также называется водопадная, последовательная) предусматривает последовательное выполнение всех этапов проекта в строго фиксированном порядке (рис. 2.1). Переход на следующий этап означает полное завершение работ на предыдущем этапе. Требования, определенные на стадии формирования требований, строго документируются в виде технического задания и фиксируются на все время разработки проекта. Каждая стадия завершается выпуском полного комплекта документации, достаточной для того, чтобы разработка могла быть продолжена другой командой разработчиков;
- Итерационная (также называется поэтапная или эволюционная) модель с промежуточным контролем (рис. 2.2). Предполагает разбиение жизненного цикла проекта на последовательность итераций, каждая из которых напоминает "мини-проект", включая все процессы разработки в применении к созданию меньших фрагментов функциональности, по сравнению с проектом в целом. Цель каждой итерации — получение работающей версии программной системы, включающей функциональность, определённую интегрированным содержанием всех предыдущих и текущей итерации. Результат последней итерации содержит всю требуемую функциональность программного продукта. Таким образом, с завершением каждой итерации продукт получает приращение (инкремент) к его возможностям, которые, следовательно, развиваются эволюционно. Межэтапные корректировки позволяют учитывать реально существующее взаимовлияние результатов разработки на различных этапах; время жизни каждого из этапов растягивается на весь период разработки;
- Спиральная модель (рис. 2.3). Основана на классическом цикле Деминга PDCA (plan-do-check-act). При использовании этой модели ПО создается в несколько итераций (витков спирали) методом прототипирования. Каждая итерация соответствует созданию фрагмента или версии ПО, на ней уточняются цели и характеристики проекта, оценивается качество полученных результатов и планируются работы следующей итерации. На каждой итерации оцениваются: риск превышения сроков и стоимости проекта; необходимость выполнения ещё одной итерации; степень полноты и точности понимания требований к системе; целесообразность прекращения проекта. Особое внимание уделяется начальным этапам разработки – анализу и проектированию, где реализуемость тех или иных технических решений проверяется и обосновывается посредством создания прототипов (макетирования).
Рис. 2.1. Каскадная модель ЖЦ ИС
Рис. 2.2. Итерационная (поэтапная) модель с промежуточным контролем
Рис. 2.3. Спиральная модель ЖЦ ИС
Каскадная модель была предложена в 1970 г. Уинстоном Ройсом и характерна для периода 1970-1985 гг., итерационная модель стала альтернативой каскадной модели и в 70-е гг. получила название эволюционной модели от Т. Гилба, спиральная модель была разработана в середине 1980-х годов Барри Боэмом.
Ранние проекты были ориентированы на создание достаточно простых ИС, каждое приложение представляло собой единый, функционально и информационно независимый блок. Для разработки такого типа приложений эффективным оказался каскадный подход. Каждый этап завершался после полного выполнения и документального оформления всех предусмотренных работ. Этапы проекта в соответствии с каскадной моделью:
- Формирование требований;
- Проектирование;
- Реализация;
- Тестирование;
- Внедрение;
- Эксплуатация и сопровождение.
При этом каскадная модель предполагает разработку законченных продуктов на каждом этапе: технического задания, технического проекта, программного продукта, пользовательской документации. Разработанная документация позволяет не только определить требования к продукту следующего этапа, но и определить обязанности сторон, объем работ и сроки.
Каскадный подход хорошо зарекомендовал себя при построении относительно простых ИС, когда в самом начале разработки можно достаточно точно и полно сформулировать все требования к системе.
Недостатки каскадной модели
В каскадной модели переход от одной фазы проекта к другой предполагает полную корректность результата (выхода) предыдущей фазы. Однако неточность какого-либо требования или некорректная его интерпретация в результате приводит к тому, что приходится "откатываться" к ранней фазе проекта и требуемая переработка не просто выбивает проектную команду из графика, но приводит часто к значительному росту затрат, а иногда и к прекращению проекта в той форме, в которой он изначально задумывался. Основным недостатком каскадной модели является то, что реальный процесс создания системы никогда полностью не укладывается в такую жесткую схему, постоянно возникает потребность в возврате к предыдущим этапам и уточнении или пересмотре ранее принятых решений. В результате реальный процесс создания ИС оказывается соответствующим итерационной (поэтапной) модели с промежуточным контролем. В каскадной модели окончательная оценка сроков и стоимости проекта производится на начальных этапах, после завершения обследования. Очевидно, что если требования к информационной системе меняются в ходе реализации проекта, а качество документов оказывается невысоким (требования неполны и/или противоречивы), то в действительности использование каскадной модели создает лишь иллюзию определенности и фактически увеличивает риски. Кроме того, при этом еще и уменьшается ответственность участников проекта, поскольку при формальном подходе менеджер проекта реализует только те требования, которые содержатся в спецификации, опирается на документ, а не на реальные потребности бизнеса. Таким образом, каскадная модель для крупных проектов мало реалистична и может быть эффективно использована только для создания небольших систем. Несмотря на настойчивые рекомендации компаний – вендоров и экспертов в области проектирования и разработки ИС, многие компании продолжают использовать каскадную модель вместо какого-либо варианта итерационной модели. К основным причинам, по которым каскадная модель сохраняет свою популярность, можно отнести следующие:
- Определенность в приемке/сдаче работ и финансировании проекта;
- Иллюзия снижения рисков участников проекта (заказчика и исполнителя).
Итерационная модель с промежуточным контролем эффективна при создании сложной системы, если она реализуется путем небольших шагов (небольшого объема работ на каждом этапе) и если каждый шаг заключает в себе четко определённый результат, а также при наличии возможности "отката" к предыдущему успешному этапу в случае неудачи.