
- •1. Введение. Понятие case-систем и case-технологий
- •2. Классификация case-средств
- •3. Интегрированные case-средства
- •4. Техническое задание на программный продукт
- •Структура
- •5. Жизненный цикл программного обеспечения
- •6. Этап анализа в жизненном цикле программного обеспечения
- •7. Обзор методологий анализа и проектирования
- •8. Методология sadt
- •Иерархия диаграмм
- •9. Методология idef0
- •10. Методология dfd
- •11. Методология idef3
- •12. Нотация aris eEpc
- •Методология
- •13. Нотация aris InformationFlow
- •14. Нотация aris Application System Type
- •15. Методология idef1x
- •2.1. Трансформационная модель
- •2.2. Модель субд
- •16. Объектно-ориентированная методология разработки программного обеспечения
- •17. Методология онтологического моделирования idef5
- •1. Диаграмма классификации
- •2. Композиционная схема
- •3. Схема взаимосвязей
- •4. Диаграмма состояния объекта
- •18. Современные технологии объектно-ориентированного анализа и проектирования информационных систем
- •19. Унифицированный язык моделирования
- •20. Методология Rational Unified Process
- •21. Методология Microsoft Solutions Framework
- •Структура процессов msf
- •Создание общей картины приложения
- •Планирование
- •Разработка
- •Стабилизация
- •Развертывание
- •Комментарии по поводу этапов работ
- •22. Гибкая методология разработки программного обеспечения
- •Роли в scrum-процессе
- •Митинг (Daily Scrum)
- •Демонстрация (Demo Meeting)
- •Ретроспектива (Retrospective Meeting)
5. Жизненный цикл программного обеспечения
Жизненный цикл программного обеспечения
Модели жизненного цикла программного обеспечения
Каскадная модель
Поэтапная модель с возвратами
Спиральная модель
Итеративная модель
Модель процессов Rational Unified Process
Модель процессов Microsoft Solutions Framework
Модели жизненных циклов программного обеспечения по гибким (agile) методологиям
Причины возникновения ошибок при разработке программных средств.
CASE-модель жизненного цикла программного обеспечения.
Одним из базовых понятий методологии проектирования ИС является понятие жизненного цикла ее программного обеспечения (ЖЦ ПО). ЖЦ ПО - это непрерывный процесс, который начинается с момента принятия решения о необходимости его создания и заканчивается в момент его полного изъятия из эксплуатации.
Основным нормативным документом, регламентирующим ЖЦ ПО, является международный стандарт ISO/IEC 12207 [5] (ISO - International Organization of Standardization - Международная организация по стандартизации, IEC - International Electrotechnical Commission - Международная комиссия по электротехнике). Он определяет структуру ЖЦ, содержащую процессы, действия и задачи, которые должны быть выполнены во время создания ПО.
Структура ЖЦ ПО по стандарту ISO/IEC 12207 базируется на трех группах процессов:
основные процессы ЖЦ ПО (приобретение, поставка, разработка, эксплуатация, сопровождение);
вспомогательные процессы, обеспечивающие выполнение основных процессов (документирование, управление конфигурацией, обеспечение качества, верификация, аттестация, оценка, аудит, решение проблем);
организационные процессы (управление проектами, создание инфраструктуры проекта, определение, оценка и улучшение самого ЖЦ, обучение).
К настоящему времени наибольшее распространение получили следующие две основные модели ЖЦ:
каскадная модель (70-85 г.г.);
спиральная модель (86-90 г.г.).
Положительные стороны применения каскадного подхода заключаются в следующем [2]:
на каждом этапе формируется законченный набор проектной документации, отвечающий критериям полноты и согласованности;
выполняемые в логичной последовательности этапы работ позволяют планировать сроки завершения всех работ и соответствующие затраты.
Реальный процесс создания ПО никогда полностью не укладывался в такую жесткую схему. В процессе создания ПО постоянно возникала потребность в возврате к предыдущим этапам и уточнении или пересмотре ранее принятых решений. В результате реальный процесс создания ПО принимал следующий вид (рис. 1.2):
Для преодоления перечисленных проблем была предложена спиральная модель ЖЦ [10] (рис. 1.3), делающая упор на начальные этапы ЖЦ: анализ и проектирование. На этих этапах реализуемость технических решений проверяется путем создания прототипов. Каждый виток спирали соответствует созданию фрагмента или версии ПО, на нем уточняются цели и характеристики проекта, определяется его качество и планируются работы следующего витка спирали. Таким образом углубляются и последовательно конкретизируются детали проекта и в результате выбирается обоснованный вариант, который доводится до реализации.
Разработка итерациями отражает объективно существующий спиральный цикл создания системы. Неполное завершение работ на каждом этапе позволяет переходить на следующий этап, не дожидаясь полного завершения работы на текущем. При итеративном способе разработки недостающую работу можно будет выполнить на следующей итерации. Главная же задача - как можно быстрее показать пользователям системы работоспособный продукт, тем самым активизируя процесс уточнения и дополнения требований.
Основная проблема спирального цикла - определение момента перехода на следующий этап. Для ее решения необходимо ввести временные ограничения на каждый из этапов жизненного цикла. Переход осуществляется в соответствии с планом, даже если не вся запланированная работа закончена. План составляется на основе статистических данных, полученных в предыдущих проектах, и личного опыта разработчиков.
Альтернативой последовательной модели является так называемая модель итеративной и инкрементальной разработки (англ. iterative and incremental development, IID), получившей также от Т. Гилба в 70-е гг. название эволюционной модели. Также эту модель называют итеративной моделью и инкрементальной моделью[4].
Модель IID предполагает разбиение жизненного цикла проекта на последовательность итераций, каждая из которых напоминает «мини-проект», включая все процессы разработки в применении к созданию меньших фрагментов функциональности, по сравнению с проектом в целом. Цель каждой итерации — получение работающей версии программной системы, включающей функциональность, определённую интегрированным содержанием всех предыдущих и текущей итерации. Результат финальной итерации содержит всю требуемую функциональность продукта. Таким образом, с завершением каждой итерации продукт получает приращение — инкремент — к его возможностям, которые, следовательно, развиваются эволюционно. Итеративность, инкрементальность и эволюционность в данном случае есть выражение одного и то же смысла разными словами со слегка разных точек зрения