ЖИЗНЕННЫЙ ЦИКЛ
ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
·
Основные процессы жизненного
цикла
·
Вспомогательные
процессы жизненного цикла
·
Организационные
процессы жизненного цикла
· Каскадная стратегия разработки программных средств и систем
·
Инкрементная стратегия разработки программных средств и систем
·
Эволюционная стратегия разработки программных средств и систем
В соответствии со стандартом СТБ ИСО/МЭК 12207-2003 под жизненным циклом
программного средства или системы подразумевается совокупность процессов,
работ и задач, включающая в себя разработку, эксплуатацию и сопровождение
программного средства или системы и охватывающая их жизнь от формулирования
концепции до прекращения использования. ЖЦ ПС состоит из
процессов. Каждый процесс ЖЦ разделен на набор работ.
Каждая работа разделена на набор задач.
Процессы ЖЦ ПС
делятся на три группы:
• основные;
• вспомогательные;
• организационные.
Основные
процессы жизненного цикла - это процессы, которые реализуются под
управлением основных сторон, участвующих в жизненном цикле программных средств.
Основными сторонами являются заказчик, поставщик, разработчик, оператор и
персонал сопровождения программных продуктов. К основным
процессам относится пять процессов:
•заказ;
• поставка;
• разработка;
• эксплуатация;
• сопровождение.
Процесс заказа
определяет работы и задачи заказчика и состоит из определения потребностей
заказчика в системе или программном продукте, подготовки и выпуска заявки на
подряд, выбора поставщика и управления процессом заказа до завершения приемки
системы или программного продукта.
Процесс поставки
определяет работы и задачи поставщика. Данный процесс начинается с решения о
подготовке предложения в ответ на заявку на подряд, присланную заказчиком, или
с подписания договора с заказчиком на поставку системы или программного продукта.
Затем определяются процедуры и ресурсы, необходимые для управления и
обеспечения проекта, включая разработку проектных планов и их выполнение.
Процесс разработки
состоит из работ и задач, выполняемых разработчиком. Данный процесс содержит тринадцать работ:
1) подготовка процесса разработки;
2) анализ требований к системе;
3) проектирование системной архитектуры;
4) анализ требований к программным средствам;
5) проектирование программной архитектуры;
6) техническое проектирование программных средств;
7) программирование и тестирование программных средств;
8) сборка программных средств;
9) квалификационные испытания программных средств;
10) сборка системы;
11) квалификационные испытания системы;
12) ввод в действие программных средств;
13) обеспечение приемки программных средств.
При выполнении работы 1 «Подготовка
процесса разработки» выбирается модель ЖЦ ПС и систем. В данную модель
структурируются процессы, работы и задачи стандарта СТБ ИСО/МЭК
12207-2003. Выбираются и адаптируются стандарты, методы,
инструментальные средства разработки, языки программирования. Формируется план
проведения работ процесса разработки.
При выполнении работы 2 «Анализ
требований к системе» анализируется область применения системы. На основании
результатов анализа предметной области определяются требования к ней.
Выполняется оценка разработанных требований.
При выполнении работы 3
«Проектирование системной архитектуры» определяется общая архитектура системы.
Осуществляется распределение требований к системе между объектами технических
и программных средств архитектуры и ручными операциями. Производится
дальнейшее уточнение требований. Осуществляется оценка архитектуры системы и
требований к объектам архитектуры.
При выполнении работы 4 «Анализ
требований к программным средствам» анализируется назначение программного
средства. Исходя из результатов анализа определяются и уточняются требования к
программному средству. Выполняется оценка разработанных требований.
При выполнении работы 5
«Проектирование программной архитектуры» разрабатывается эскизный проект
программного средства. Требования к программному средству преобразуются в его
архитектуру, распределяются между его компонентами и уточняются далее.
Производится оценка результатов эскизного проектирования.
При выполнении работы 6
«Техническое проектирование программных средств» осуществляется детальное
проектирование программного средства (разрабатывается технический проект для
компонентов программного объекта). Компоненты проектируются до уровня их представления
в виде набора программных модулей. Сложность модулей должна обеспечить
возможность их непосредственного кодирования в следующей работе (работе 7).
Производится распределение технических требований к компонентам между
программными модулями и дальнейшее уточнение требований. Выполняется оценка
технического проекта.
При выполнении работы 7
«Программирование и тестирование программных средств» производится кодирование
и тестирование программных модулей. Осуществляется оценка полученных результатов
программирования и тестирования.
При выполнении
работы 8 «Сборка программных средств» производится сборка программных модулей и
компонентов в программное средство и тестирование промежуточных и конечных
результатов сборки. Выполняется оценка результатов сборки и тестирования.
При выполнении
работы 9 «Квалификационные испытания программных средств» проводятся
квалификационные испытания программного средства в моделируемой среде с
моделируемыми исходными данными. Оцениваются результаты испытаний. При необходимости
производится доработка программного продукта.
При выполнении
работы 10 «Сборка системы» осуществляется сборка объектов программной и
технической конфигурации, ручных операций, других подсистем в единую систему.
Проводятся испытания собранной системы. Выполняется оценка собранной системы.
При выполнении
работы 11 «Квалификационные испытания системы» проводятся квалификационные
испытания собранной системы в моделируемой среде с моделируемыми исходными
данными. По результатам испытаний выполняется оценка системы и при
необходимости доработка программного продукта.
При выполнении
работы 12 «Ввод в действие программных средств» программный продукт вводится в
действие в среде эксплуатации.
При выполнении
работы 13 «Обеспечение приемки программных средств» обеспечивается проведение
заказчиком приемочных испытаний. Программный продукт поставляется заказчику.
В приведенной
последовательности различают два вида работ: системные и
программные.
Системные
работы начинают и завершают процесс разработки. К ним относятся работы с
номерами 2, 3, 10, 11.
Работы процесса
разработки с 4-й (анализ требований к программным средствам) по 9-ю
(квалификационные испытания программных средств) представляют собой программные работы. Они выполняются над ПС, выделенными из
системы.
Таким образом,
системные работы являются расширением совокупности программных работ.
Процесс
эксплуатации определяет работы и задачи оператора. Данный процесс
включает эксплуатацию программного продукта и поддержку пользователей в
процессе эксплуатации.
Процесс
сопровождения определяет работы и задачи персонала сопровождения и
реализуется при модификациях программного продукта. Назначением процесса
является изменение существующего программного продукта при сохранении его
целостности. Процесс охватывает вопросы переносимости и снятия программного
продукта с эксплуатации.
Вспомогательные процессы жизненного цикла - это процессы,
являющиеся целенаправленными составными частями других процессов и предназначенные
для обеспечения успешной реализации и качества выполнения программного проекта.
К вспомогательным процессам относится
восемь процессов:
•документирование;
• управление конфигурацией;
• обеспечение качества;
• верификация;
• аттестация;
• совместный анализ;
• аудит;
• решение проблем.
Вспомогательные процессы вызываются
другими процессами ЖЦ.
Процесс
документирования предназначен для формализованного описания информации,
созданной в процессе или работе жизненного цикла. Он включает планирование,
проектирование, разработку, выпуск, редактирование, распространение и
сопровождение документов по программному продукту.
Процесс
управления конфигурацией предназначен для определения состояния
(базовой линии) программных объектов в системе, управления их изменениями и
выпуском.
Процесс
обеспечения качества предназначен для обеспечения гарантий того, что
программные продукты и процессы в жизненном цикле проекта соответствуют
требованиям и планам.
Процесс
верификации предназначен для определения соответствия функционирования
программных продуктов требованиям и условиям, реализованным в предшествующих
работах. В процессе разработки верификация связана с экспертизой результатов
конкретной работы с целью определения их соответствия установленным на входе
данной работы требованиям.
Процесс
аттестации предназначен для определения полноты соответствия
установленных требований, созданной системы или программного продукта их
функциональному назначению. В процессе разработки аттестация связана с
экспертизой промежуточного или конечного продукта в целях определения его
соответствия потребностям пользователя (то есть исходным требованиям к
проекту).
Процесс
совместного анализа предназначен для оценки состояния и результатов
работ по проекту. Данный процесс может выполняться двумя сторонами, участвующими
в договоре, когда одна сторона (анализирующая) проверяет другую
(анализируемую).
Процесс
аудита предназначен для определения соответствия требованиям, планам и
условиям договора. Данный процесс может выполняться двумя сторонами,
участвующими в договоре, когда одна сторона (ревизующая) проверяет другую
сторону (ревизуемую).
Процесс
решения проблем предназначен для анализа и решения проблем (включая
найденные несоответствия), которые обнаружены в ходе выполнения разработки,
эксплуатации, сопровождения или других процессов.
Организационные процессы жизненного цикла
- это процессы, предназначенные для создания в некоторой организации и
совершенствования организационных структур, охватывающих процессы жизненного
цикла и соответствующий персонал. К организационным процессам
относится четыре процесса:
•управление;
• создание инфраструктуры;
• усовершенствование;
• обучение.
Процесс
управления состоит из общих работ и задач, которые могут быть
использованы стороной, управляющей соответствующим процессом. В данном процессе
разрабатываются планы выполнения процессов ЖЦ ПС, осуществляется управление и
текущий надзор за ходом процессов ЖЦ, обеспечивается управление оценкой планов,
программных продуктов, работ и задач.
Процесс
создания инфраструктуры предназначен для создания и сопровождения
инфраструктуры, необходимой для любого другого процесса. Инфраструктура
содержит технические и программные средства, инструментальные средства, методики,
стандарты и условия для разработки, эксплуатации или сопровождения.
Процесс
усовершенствования предназначен для создания, оценки, измерения,
контроля и улучшения любого процесса жизненного цикла программных средств.
Процесс
обучения является процессом обеспечения обучения персонала работам по
заказу, поставке, разработке, эксплуатации или сопровождению программного
проекта.
С понятием ЖЦ
ПС и систем тесно связано понятие модели ЖЦ. Модель жизненного
цикла - это совокупность процессов, работ и задач жизненного цикла,
отражающая их взаимосвязь и последовательность выполнения.
Очевидно, что
существуют тесные взаимосвязи между моделью ЖЦ, выбранной при реализации
процесса разработки ПС, используемыми стратегиями и технологиями разработки ПС
и уровнем качества разработанного программного продукта.
Каскадная стратегия разработки программных средств и
систем
Каскадная стратегия представляет собой однократный проход
этапов разработки. Данная стратегия основана на полном определении всех требований
к разрабатываемому программному средству или системе в начале процесса
разработки. Каждый этап разработки начинается после завершения предыдущего
этапа. Возврат к уже выполненным этапам не предусматривается. Промежуточные
продукты разработки в качестве версии программного средства (системы) не
распространяются.
Представителями моделей, реализующих
каскадную стратегию, являются каскадная и V-образная модели.
Основными достоинствами каскадной стратегии,
проявляемыми при разработке соответствующего ей проекта, являются:
1) стабильность требований в течение ЖЦ разработки;
2) необходимость только одного прохода этапов разработки, что обеспечивает простоту применения стратегии;
3) простота планирования, контроля и управления проектом;
4) доступность для понимания заказчиками.
К основным
недостаткам каскадной стратегии, проявляемым при ее использовании в
проекте, ей не соответствующем, следует отнести:
1) сложность полного формулирования требований в начале процесса разработки и невозможность их динамического изменения на протяжении ЖЦ;
2) линейность структуры процесса разработки; разрабатываемые ПС или системы обычно слишком велики и сложны, чтобы все работы по их созданию выполнять однократно; в результате возврат к предыдущим шагам для решения возникающих проблем приводит к увеличению финансовых затрат и нарушению графика работ;
3) непригодность промежуточных продуктов для использования;
4) недостаточное участие пользователя в процессе разработки ПС - только в самом начале (при разработке требований) и в конце (во время приемочных испытаний); это приводит к невозможности предварительной оценки пользователем качества программного средства или системы.
Области применения
каскадной стратегии определяются ее достоинствами и ограничены ее
недостатками. Использование данной стратегии наиболее эффективно в следующих
случаях:
1) при разработке проектов с четкими, неизменяемыми в течение ЖЦ требованиями и понятной реализацией;
2) при разработке проектов невысокой сложности, например:
• создание программного средства или системы такого же типа, как уже разрабатывались разработчиками;
• создание новой версии уже существующего программного средства или системы;
• перенос уже существующего продукта на новую платформу;
3) при выполнении больших проектов в качестве составной части моделей ЖЦ, реализующих другие стратегии разработки.
В документе
рассмотрены модели ЖЦ, реализующие каскадную стратегию разработки ПС и систем.
Каскадная стратегия представляет собой однократный проход этапов разработки.
Данная стратегия основана на полном определении всех требований к программному
средству или системе в начале процесса разработки. Возврат к уже выполненным
этапам не предусматривается. Промежуточные результаты в качестве версии
программного средства (системы) не распространяются. Каскадная стратегия имеет
достоинства и недостатки, определяемые правильностью выбора данной стратегии
по отношению к конкретному проекту.
Инкрементная стратегия разработки
программных средств и систем
Инкрементная
стратегия представляет собой многократный проход этапов разработки с
запланированным улучшением результата.
Данная стратегия
основана на полном определении всех требований к разрабатываемому программному
средству (системе) в начале процесса разработки. Однако полный набор
требований реализуется постепенно в соответствии с планом в последовательных
циклах разработки.
Результат каждого цикла называется инкрементом.
Первый инкремент
реализует базовые функции программного средства. В последующих инкрементах функции
программного средства постепенно расширяются, пока не будет реализован весь
набор требований. Различия между инкрементами соседних циклов в ходе разработки
постепенно уменьшаются.
Результат каждого
цикла разработки может распространяться в качестве очередной поставляемой
версии программного средства или системы.
Особенностью
инкрементной стратегии является большое количество циклов разработки при
незначительной продолжительности цикла и небольших различиях между инкрементами
соседних циклов. Например, данная стратегия разработки ПС и систем используется
в компании Microsoft. Здесь
на каждую версию программного средства разрабатывается около тысячи
инкрементов. Период разработки инкремента составляет одни сутки (например, днем
инкремент разрабатывается, ночью тестируется) [17]. В ряде организаций
используется недельный период разработки инкремента (чаще всего пять дней -
разработка, два дня - тестирование).
Инкрементная
стратегия обычно основана на объединении элементов каскадной модели и
прототипирования. При этом использование прототипирования позволяет существенно
сократить продолжительность разработки каждого инкремента и всего проекта в
целом.
Под прототипом понимается легко поддающаяся модификации и расширению
рабочая модель разрабатываемого программного средства (или системы),
позволяющая пользователю получить представление о его ключевых свойствах до
полной реализации.
Современной
реализацией инкрементной стратегии является экстремальное программирование.
Различные модификации моделей, реализующих инкрементную стратегию, рассмотрены
в документе.
Основными
достоинствами инкрементной стратегии, проявляемыми при разработке
соответствующего ей проекта, являются:
1) возможность получения функционального продукта после реализации каждого инкремента;
2) короткая продолжительность создания инкремента; это приводит к сокращению сроков начальной поставки, позволяет снизить затраты на первоначальную и последующие поставки программного продукта;
3) предотвращение реализации громоздких спецификаций требований; стабильность требований во время создания определенного инкремента; возможность учета изменившихся требований;
4) снижение рисков по сравнению с каскадной стратегией;
5) включение в процесс пользователей, что позволяет оценить функциональные возможности продукта на более ранних этапах разработки и в конечном итоге приводит к повышению качества программного продукта, снижению затрат и времени на его разработку.
К основным недостаткам инкрементной стратегии,
проявляющимся в результате ее несоответствующего применения, следует отнести:
1) необходимость полного функционального определения системы или программного средства в начале ЖЦ для обеспечения планирования инкрементов и управления проектом;
2) возможность текущего изменения требований к системе или программному средству, которые уже реализованы в предыдущих инкрементах;
3) сложность планирования и распределения работ;
4) проявление человеческого фактора, связанного с тенденцией к оттягиванию решения трудных проблем на поздние инкременты, что может нарушить график работ или снизить качество программного продукта.
Области применения инкрементной стратегии
определяются ее достоинствами и ограничены ее недостатками. Использование
данной стратегии наиболее эффективно в следующих случаях:
1) при разработке проектов, в которых большинство требований можно сформулировать заранее, но часть из них могут быть уточнены через определенный период времени;
2) при разработке сложных проектов с заранее сформулированными требованиями; для них разработка системы или программного средства за один цикл связана с большими трудностями;
3) при необходимости быстро поставить на рынок продукт, имеющий базовые функциональные свойства;
4) при разработке проектов с низкой или средней степенью рисков;
5) при выполнении проекта с применением новых технологий.
Инкрементная стратегия представляет собой многократный проход этапов
разработки с запланированным улучшением результата. Данная стратегия основана
на полном определении всех требований к разрабатываемому программному средству
или системе в начале процесса разработки. Однако полный набор требований
реализуется постепенно в соответствии с планом в последовательных циклах
разработки. При инкрементной стратегии часто используется прототипирование.
Инкрементная стратегия имеет достоинства и недостатки, определяемые
правильностью выбора данной стратегии по отношению к конкретному проекту.
Эволюционная стратегия разработки
программных средств и систем
Эволюционная
стратегия представляет собой многократный проход этапов разработки.
Данная стратегия основана на частичном определении требований к
разрабатываемому программному средству или системе в начале процесса
разработки. Требования постепенно уточняются в последовательных циклах
разработки. Результат каждого цикла разработки обычно представляет собой
очередную поставляемую версию программного средства или системы.
Следует отметить, что в общем
случае для эволюционной стратегии характерно существенно меньшее количество
циклов разработки при большей продолжительности цикла по сравнению с
инкрементной стратегией. При этом результат каждого цикла разработки (очередная
версия программного средства или системы) гораздо сильнее отличается от результата
предыдущего цикла.
Как и при инкрементной стратегии,
при реализации эволюционной стратегии зачастую используется прототипирование.
В данном случае основной целью
прототипирования является обеспечение полного понимания требований. Оно
позволяет итеративно уточнять требования к продукту при достижении предельно
высокой производительности разработки проекта и одновременном снижении затрат.
Использование прототипирования наиболее эффективно в тех случаях, когда в
проекте применяются новые концепции или новые технологии, так как в этих
случаях достаточно сложно полностью и корректно разработать детальные
технические требования к системе или программному средству на ранних стадиях
цикла разработки.
Для итеративного уточнения
требований при применении прототипирования в цикле разработки должен
участвовать заказчик.
Представителями моделей,
реализующих эволюционную стратегию, являются, например, спиральные модели
представленные в документе.
Основными
достоинствами эволюционной стратегии, проявляемыми при разработке
соответствующего ей проекта, являются:
1) возможность уточнения и внесения новых требований в процессе разработки;
2) пригодность промежуточного продукта для использования;
3) возможность управления рисками;
4) обеспечение широкого участия пользователя в проекте, начиная с ранних этапов, что минимизирует возможность разногласий между заказчиками и разработчиками и обеспечивает создание продукта высокого качества;
5) реализация преимуществ каскадной и инкрементной стратегий.
К недостаткам
эволюционной стратегии, проявляемым при ее несоответствующем выборе,
следует отнести:
1) неизвестность точного количества необходимых итераций и сложность определения критериев для продолжения процесса разработки на следующей итерации; это может вызвать задержку реализации конечной версии системы или программного средства;
2) сложность планирования и управления проектом;
3) необходимость активного участия пользователей в проекте, что реально не всегда осуществимо;
4) необходимость в мощных инструментальных средствах и методах прототипирования;
5) возможность отодвигания решения трудных проблем на последующие циклы, что может привести к несоответствию полученных продуктов требованиям заказчиков.
Очевидно, что ряд недостатков
эволюционной стратегии (см. недостатки 3 - 5) характерны и для инкрементной
стратегии.
Области применения
эволюционной стратегии определяются ее достоинствами и ограничены ее
недостатками. Использование данной стратегии наиболее эффективно в следующих
случаях:
1) при разработке проектов, для которых требования слишком сложны, неизвестны заранее, непостоянны или требуют уточнения;
2) при разработке сложных проектов, в том числе:
• больших долгосрочных проектов;
• проектов по созданию новых, не имеющих аналогов ПС или систем;
• проектов со средней и высокой степенью рисков;
• проектов, для которых нужна проверка концепции, демонстрация технической осуществимости или промежуточных продуктов;
3) при разработке проектов, использующих новые технологии.
Эволюционная стратегия представляет собой многократный проход этапов разработки. Данная стратегия основана на частичном определении требований к разрабатываемому программному средству или системе в начале процесса разработки. Требования постепенно уточняются в последовательных циклах разработки. Результат каждого цикла разработки обычно представляет собой очередную поставляемую версию программного средства или системы. При эволюционной стратегии часто используется прототипирование. Эволюционная стратегия имеет достоинства и недостатки, определяемые правильностью выбора данной стратегии по отношению к конкретному проекту.
В следующем документе представлены схемы
различных моделей жизненных циклов и их разновидностей.