Рассмотрим несколько описаний жизненного цикла
программного обеспечения, которые послужат своеобразным комментарием этапам
обобщенного жизненного цикла.
В отечественных нормативных документах (например, ГОСТ ЕСПД) принято следующее
разграничение на этапы, которое приводится с указанием аналогий из списка,
данного в начале раздела:
разработка технического задания (этапы 1 и 2);
технический проект (третий этап до 3.2.1 включительно);
рабочий проект (3.2.2, 4.2.1 и, частично, 4.2, 4.3);
экспериментальное внедрение (4.2 и 4.3);
сдача в промышленную эксплуатацию (этап 5);
промышленная эксплуатация (этап 6).
Подобное описание имеет своим прообразом технологию разработки аппаратных
средств и поэтому не вполне учитывает все отличительные особенности
проектирования программ. Более подходящим выглядит описание жизненного цикла
программного обеспечения, состоящее из 12 этапов, которые очень близки этапам
обобщенного жизненного цикла (см. рис. 1.1). В скобках после имени фазы
указывается аналог из обобщенного цикла. Практически все этапы заканчиваются
проверкой результатов, полученных на соответствующем этапе.
Рис. 1.1 Пример жизненного цикла программных систем
Начало проекта и планирование (этап 1).
Определяются необходимые действия, планы и организация управления проектом.
Определяются меры по обеспечению непрерывного выполнения фаз жизненного цикла.
Анализ целевых требований (2.1).
Определяются, без учета средств реализации, общие характеристики системы,
которым она должна удовлетворять. Устанавливается, что и как должна делать
система.
Анализ системных требований (2.2).
Описывается, как должны удовлетворятся запросы пользователя, в терминах
конкретных функциональных понятий описываются действия предполагаемой системы,
хранимые данные, используемый интерфейс - все это без учета физической
реализации. Проверяется пригодность этих конкретных понятий.
Проектирование системы (3.1).
Устанавливается структура системы или, иначе говоря, ее архитектура в терминах
основных компонентов этой системы и их предполагаемой реализации (аппаратной,
программной, с помощью окружения и т.д.). Устанавливаются требования для
каждого компонента, а также стратегию тестирования и интеграции.
Предварительное проектирование программного обеспечения (3.2.1).
Определение конкретных программных компонент, которые будут разрабатываться и
внедряться в конечную систему. Проверка этого множества компонент на
непротиворечивость общим требованиям к программному обеспечению. Определение
функциональных, эксплуатационных и тестовых требований к каждому конкретному
компоненту.
Детальное проектирование программного обеспечения (3.2.2).
В терминах используемых программных конструкций производится описание того, как
каждый конкретный компонент будет разрабатываться. Описываются режимы
использования каждого компонента в системе.
Кодирование и тестирование программного обеспечения (4.1.1 и 4.1.2).
Создание, тестирование отдельных модулей, документирование и приемка программных
компонентов, которые составляют программную систему.
Интеграция программного обеспечения (частично 4.2).
Тестирование работоспособности и функциональной законченности программных частей
системы в предсказуемом окружении (аппаратуре и окружающей среде).
Интеграция системы (4.3).
Тестирование работоспособности и функциональной законченности частей общей
системы в целом.
Приемка и поставка системы (5).
Производится приемка системы заказчиком, и поставка ему системы.
Эксплуатация и сопровождение системы (6).
Выпуск последующих вариантов или версий системы, необходимость в которых
возникает из-за устранений дефектов, отработки измененных требований и т.д.
Завершение проекта (7).
Формирование посториорной модели проектных действий с анализом достоинств,
недостатков и т.д., и использование их в качестве основания для улучшения
процесса разработки.
В качестве следующего примера рассмотрим неполный жизненный цикл
программного обеспечения, без этапов эксплуатации и сопровождения (см. рис.
1.2). В этом варианте не фиксируется последовательность фаз или этапов, а
предлагается перечень действий, которые должны быть выполнены на протяжении
жизненного цикла программного обеспечения. Эти действия могут быть разбиты или,
наоборот, сгруппированы в различные этапы, в зависимости от конкретных условий.
Можно выделить следующие этапы жизненного цикла программных систем (в скобках,
как и ранее, - аналоги из модели обобщенного цикла):
этап планирования, который определяет и координирует действия по
разработке программной системы (этап 1);
этап разработки, на котором создается программная система:
постановку задачи (этап 2),
проектирование (3),
кодирование (4.1.1),
получение исполняемого кода (4.1.1, 4.3);
интегрированный этап, обеспечивающий коррекцию, проверку, и
определение полноты программной системы, а также ее выпуск. Этот этап включает
в себя верификацию, контроль за конфигурацией системы, оценку качества и
проверку взаимодействия между этапами. Из названия этого этапа видно, что он
выполняется совместно с другими этапами на протяжении жизненного цикла системы.
Рис. 1.2 Вариант упрощенного жизненного цикла
программной системы.
Отсутствие интегрированного этапа в обобщенном жизненном цикле не означает, что
проверка производится только там, где это явно указано в названии этапа
(например 4.2.1 и 4.2). Каждый этап может считаться завершенным только тогда,
когда результаты, полученные на данном этапе, были признаны
удовлетворительными, а для этого необходимо производить проверку результатов на
каждом этапе. В обобщенном жизненном цикле некоторые проверки были вынесены
отдельными пунктами для демонстрации повышенных объемов, сложности и важности
этих проверок.
Последовательность этапов жизненного цикла для разных программных систем
определяется такими характеристиками как функциональные возможности, сложность,
размер, устойчивость, использование ранее полученных результатов,
разрабатываемая стратегия и аппаратное обеспечение.
На рис. 1.3. показана последовательность этапов разработки программного
обеспечения для отдельных компонентов единой программной системы с различными
жизненными циклами.
Рис. 1.3 Последовательность этапов разработки компонент
программного обеспечения
Для компонента W из множества системных требований к единому продукту
формируется подмножество требований, относящихся к данному компоненту,
используются эти требования при формировании проекта программного компонента,
реализовывают этот проект в исходном коде и тогда интегрирует компонент с
аппаратурой. Компонент X показывает использование ранее разработанного
программного обеспечения. Компонент Y показывает использование простой
отдельной функции, которая может быть закодирована прямо на основе требований к
программному обеспечению. Компонент Z показывает использование прототипной
стратегии. Обычно, целями прототипирования является лучшее понимание требований
к программному обеспечению и уменьшение технических рисков и рисков разработки
при создании конечного продукта. Исходные требования используются как базис для
получения прототипа. Этот прототип преобразуется в окружение, типичное для
конкретного использования системы при разработке. Результатом преобразований
является уточненные данные, которые используются для создания конечного
программного продукта.
Практически все этапы жизненного цикла объединяются с верификацией.