Многолетний мировой опыт разработки средств программного обеспечения ЭВМ позволил выделить несколько общепринятых моделей (парадигм) создания сложных программных систем. Эти модели предназначены для установления четкой регламентации этапов и содержания работ на каждом этапе, методов и процедур выполнения самих работ, состава и содержания разрабатываемой документации. Четко определенные модели позволяют существенно повысить эффективность процесса разработки сложных программных комплексов, оптимально организовать управление разработкой, планирование и контроль за сроками выполнения отдельных этапов, правильно распределить работы в коллективе разработчиков. В результате удается заметно снизить затраты на разработку программного изделия и повысить качество продукта.
Одна из наиболее распространенных моделей — модель жизненного цикла программного изделия. В различных литературных источниках состав фаз (этапов) ЖЦПИ несколько отличается, хотя общая последовательность и содержание основных работ сохраняет основную схему: анализ и выработка требований — проектирование — программирование — тестирование и отладка — эксплуатация и сопровождение (см. рис. 2). Эта модель ЖЦПИ получила также название "Водопад", или каскадная модель.
В дальнейшем целесообразно ориентироваться на наиболее современный подход, представленный в стандартах на разработку программного обеспечения. Модель ЖЦПИ применима как для разработки программ для индивидуального использования, так и для сложных программных изделий промышленного и коммерческого назначения.
Требования пользователя
Требования к программному изделию
Архитектурное проектирование
Детальное проектирование
Передача в эксплуатацию
Эксплуатация, сопровождение
Рис. 2. Модель жизненного цикла программного изделия
На практике выполнение работ по такой жесткой схеме можно реализовать только для довольно простых программных продуктов, требования пользователя к которым можно с самого начала сформулировать в полном объеме.
В общем случае процесс разработки является итеративным, что показано на рисунке пунктирными линиями. На каждой фазе жизненного цикла могут вноситься изменения в принятые решения, что приводит к необходимости возвращения к предыдущим этапам.
Модель ЖЦПИ содержит шесть фаз разработки, для которых в стандартах определены содержание работ, виды деятельности, входные и выходные документы:
1. Определение требований пользователя.
2. Определение требований к программному обеспечению.
3. Архитектурное проектирование.
4. Детальное проектирование и программирование.
5. Передача программного изделия в эксплуатацию.
6. Эксплуатация и сопровождение.
Разработка программного изделия здесь предполагает выполнение четко определенных работ. Результаты оформляются в виде соответствующих документов и материалов, которые должны быть рассмотрены и одобрены до передачи на следующую фазу. Таким образом, важнейшим видом деятельности на всех этапах жизненного цикла является критический и всесторонний обзор и оценка материалов, подготовленных на соответствующей фазе ЖЦПИ. Одобрение этих материалов определяет момент окончания одной фазы и момент начала следующей фазы.
В соответствии со структурой ЖЦПИ при планировании работ и при контроле за сроками их выполнения имеется, по крайней мере, шесть событий, которые характеризуют переход к следующей фазе:
1. Рассмотрение и одобрение требований пользователя.
2. Рассмотрение и одобрение требований к программному изделию.
3. Рассмотрение и одобрение архитектурного проекта программного изделия.
4. Рассмотрение и одобрение детального проекта программного изделия, руководства пользователя, программ и утверждение акта о готовности их к приемному тестированию.
5. Утверждение акта о предварительной приемке программного изделия, рассмотрение и одобрение документа о передаче программного изделия в эксплуатацию.
6. Утверждение акта об окончательной приемке и передаче в эксплуатацию программного изделия и принятие документа о результатах всех работ по созданию программного изделия.