Жизненный цикл и этапы разработки программного обеспечения

Жизненным циклом программного обеспечения называют период от момента появления идеи

создания некоторого программного обеспечения до момента завершения его поддержки фирмой-

разработчиком или фирмой, выполнявшей сопровождение.

Состав процессов жизненного цикла регламентируется международным стандартом ISO/1EC

12207: 1995 «Information Technologe - Software Life Cycle Processes» («Информационные

технологии - Процессы жизненного цикла программного обеспечения»). ISO - International

Organization for Standardization - Международная организация по стандартизации. ГЕС -

International Electrotechnical Commission - Международная комиссия по электротехнике.

Этот стандарт описывает структуру жизненного цикла программного обеспечения и его

процессы. Процесс жизненного цикла определяется как совокупность взаимосвязанных действий,

преобразующих некоторые входные данные в выходные. На рис. 1.9 представлены процессы

жизненного цикла по указанному стандарту. Каждый процесс характеризуется определенными

задачами и методами их решения, а также исходными данными и результатами.

Процесс разработки (development process) в соответствии со стандартом предусматривает

 

 

действия и задачи, выполняемые разработчиком, и охватывает работы по созданию программного

обеспечения и его компонентов в соответствии с заданными требованиями, включая оформление

проектной и эксплуатационной документации, а также подготовку материалов, необходимых для

проверки работоспособности и соответствия качества программных продуктов, материалов,

необходимых для обучения персонала, и т. д.

По стандарту процесс разработки включает следующие действия:

подготовительную работу - выбор модели жизненного цикла (см. далее), стандартов,

методов и средств разработки, а также составление плана работ;

анализ требовании к системе - определение ее функциональных возможностей,

пользовательских требований, требований к надежности и безопасности, требований к внешним

интерфейсам и т. д.;

проектирование архитектуры системы - определение состава необходимого оборудования,

программного обеспечения и операций, выполняемых обслуживающим персоналом;

анализ требований к программному обеспечению - определение функциональных

возможностей, включая характеристики производительности, среды функционирования

компонентов, внешних интерфейсов, спецификаций надежности и безопасности, эргономических

требований, требований к используемым данным, установке, приемке, пользовательской

документации, эксплуатации и сопровождению;

проектирование архитектуры программного обеспечения - определение структуры

программного обеспечения, документирование интерфейсов его компонентов, разработку

предварительной версии пользовательской документации, а также требований к тестам и плана

интеграции;

детальное проектирование программного обеспечения – подробное описание компонентов

программного обеспечения и интерфейсов между ними, обновление пользовательской

документации, разработка и документирование требований к тестам и плана тестирования

компонентов программного обеспечения, обновление плана интеграции компонентов;

кодирование и тестирование программного обеспечения – разработку и документирование

каждого компонента, а также совокупности тестовых процедур и данных для их тестирования,

тестирование компонентов, обновление пользовательской документации, обновление плана

интеграции программного обеспечения;

интеграцию программного обеспечения - сборку программных компонентов в соответствии с

планом интеграции и тестирование программного обеспечения на соответствие

квалификационным требованиям, представляющих собой набор критериев или условий, которые

необходимо выполнить, чтобы квалифицировать программный продукт, как соответствующий

своим спецификациям и готовый к использованию в заданных условиях эксплуатации;

квалификационное тестирование программного обеспечения - тестирование программного

обеспечения в присутствии заказчика для демонстрации его соответствия требованиям и

готовности к эксплуатации; при этом проверяется также готовность и полнота технической и

пользовательской документации

интеграцию системы - сборку всех компонентов системы, включая программное

обеспечение и оборудование;

квалификационное тестирование системы - тестирование системы на соответствие

требованиям к ней и проверка оформления и полноты документации;

установку программного обеспечения - установку программного обеспечения на

оборудовании заказчика и проверку его работоспособности;

приемку программного обеспечения - оценку результатов квалификационного тестирования

программного обеспечения и системы в целом и документирование результатов оценки совместно

с заказчиком, окончательную передачу программного обеспечения заказчику.

Указанные действия можно сгруппировать, условно выделив следующие основные этапы

разработки программного обеспечения [10] (в скобках указаны соответствующие стадии

разработки по ГОСТ 19.102-77 «Стадии разработки»):

• постановка задачи (стадия «Техническое задание»);

• анализ требований и разработка спецификаций (стадия «Эскизный проект»);

• проектирование (стадия «Технический проект»);

• реализация (стадия «Рабочий проект»).

Традиционно разработка также включала этап сопровождения (началу этого этапа

соответствует стадия «Внедрение» по ГОСТ). Однако по международному стандарту в

соответствии с изменениями, произошедшими в индустрии разработки программного

обеспечения, этот процесс теперь рассматривается отдельно.

Условность выделения этапов связана с тем, что на любом этапе возможно принятие решений,

которые потребуют пересмотра решений, принятых ранее (см. § 1.5).

Постановка задачи.В процессе постановки задачи четко формулируют назначение

программного обеспечения и определяют основные требования к нему. Каждое требование

представляет собой описание необходимого или желаемого свойства программного обеспечения.

Различают функциональные требования, определяющие функции, которые должно выполнять

разрабатываемое программное обеспечение, и эксплуатационные требования, определяющие

особенности его функционирования.

Требования к программному обеспечению, имеющему прототипы, обычно определяют по

аналогии, учитывая структуру и характеристики уже существующего программного обеспечения.

Для формулирования требований к программному обеспечению, не имеющему аналогов, иногда

необходимо провести специальные исследования, называемые предпроектными. В процессе таких

исследований определяют разрешимость задачи, возможно, разрабатывают методы ее решения

(если они новые) и устанавливают наиболее существенные характеристики разрабатываемого

программного обеспечения. Для выполнения предпроектных исследований, как правило,

заключают договор на выполнение научно-исследовательских работ. В любом случае этап

постановки задачи заканчивается разработкой технического задания, фиксирующего

принципиальные требования, и принятием основных проектных решений (см. гл. 3).

Анализ требований и определение спецификаций.Спецификациями называют точное

формализованное описание функций и ограничений разрабатываемого программного

обеспечения. Соответственно различают функциональные и эксплуатационные спецификации.

Совокупность спецификаций представляет собой общую логическую модель проектируемого про-

граммного обеспечения.

Для получения спецификаций выполняют анализ требований технического задания,

формулируют содержательную постановку задачи, выбирают математический аппарат

формализации, строят модель предметной области, определяют подзадачи и выбирают или

разрабатывают методы их решения. Часть спецификаций может быть определена в процессе

предпроектных исследований и, соответственно, зафиксирована в техническом задании.

На этом этапе также целесообразно сформировать тесты для поиска ошибок в проектируемом

программном обеспечении, обязательно указав ожидаемые результаты.

Проектирование.Основной задачей этого этапа является определение подробных

спецификаций разрабатываемого программного обеспечения. Процесс проектирования сложного

программного обеспечения обычно включает:

• проектирование общей структуры - определение основных компонентов и их взаимосвязей;

• декомпозицию компонентов и построение структурных иерархий в соответствии с

рекомендациями блочно-иерархического подхода;

• проектирование компонентов.

Результатом проектирования является детальная модель разрабатываемого программного

обеспечения вместе со спецификациями его компонентов всех уровней. Тип модели зависит от

выбранного подхода (структурный, объектный или компонентный) и конкретной технологии

проектирования. Однако в любом случае процесс проектирования охватывает как проектирование

программ (подпрограмм) и определение взаимосвязей между ними, так и проектирование данных,

с которыми взаимодействуют эти программы или подпрограммы.

Принято различать также два аспекта проектирования:

• логическое проектирование, которое включает те проектные операции, которые

непосредственно не зависят от имеющихся технических и программных средств, составляющих

среду функционирования будущего программного продукта;

• физическое проектирование - привязка к конкретным техническим и программным

средствам среды функционирования, т. е. учет ограничений, определенных в спецификациях.

Реализация.Реализация представляет собой процесс поэтапного написания кодов программы

на выбранном языке программирования (кодирование), их тестирование и отладку.

Сопровождение.Сопровождение - это процесс создания и внедрения новых версий

программного продукта. Причинами выпуска новых версий могут служить:

• необходимость исправления ошибок, выявленных в процессе эксплуатации предыдущих

версий;

• необходимость совершенствования предыдущих версий, например, улучшения интерфейса,

расширения состава выполняемых функций или повышения его производительности;

• изменение среды функционирования, например, появление новых технических средств и/или

программных продуктов, с которыми взаимодействует сопровождаемое программное

обеспечение.

На этом этапе в программный продукт вносят необходимые изменения, которые так же, как в

остальных случаях, могут потребовать пересмотра проектных решений, принятых на любом

предыдущем этапе. С изменением модели жизненного цикла программного обеспечения (см.

далее) роль этого этапа существенно возросла, так как продукты теперь создаются итерационно:

сначала выпускается сравнительно простая версия, затем следующая с большими возможностями,

затем следующая и т. д. Именно это и послужило причиной выделения этапа сопровождения в

отдельный процесс жизненного цикла в соответствии с стандартом 1SO/IEC 12207.

Рассматриваемый стандарт только называет и определяет процессы жизненного цикла

программного обеспечения, не конкретизируя в деталях, как реализовывать или выполнять

действия и задачи, включенные в эти процессы. Эти вопросы регламентируются

соответствующими методами, методиками и т. п. Прежде, чем перейти к подробному

рассмотрению последних, проанализируем эволюцию схем разработки программного обеспечения

от момента их появления до настоящего времени.