Вы находитесь на странице: 1из 37

Жизненный цикл Модели ЖЦ Гибкая методология Заключение

..... ......... ..... ...

Стандарт и модели жизненного цикла

Алексей Островский
Физико-технический учебно-научный центр НАН Украины

17 октября 2014 г.

1 / 26
Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Жизненный цикл

.
Проектирование Конструирование
Договор Готовый
с заказчиком продукт
Тестирование Сопровождение

Разработка

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

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 2 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Жизненный цикл

.
Проектирование Конструирование
Договор Готовый
с заказчиком ??? продукт
Тестирование Сопровождение

Разработка

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

Проблемы:
1. Как соотносятся между собой различные процессы разработки ПО?

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 2 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Жизненный цикл

.
Проектирование Конструирование
Договор Готовый
с заказчиком ??? продукт
??? Тестирование Сопровождение

Разработка

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

Проблемы:
1. Как соотносятся между собой различные процессы разработки ПО?
2. Каким образом организовано взаимодействие с заказчиком и конечными пользователями?

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 2 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Жизненный цикл

.
Проектирование Конструирование
Договор Готовый
с заказчиком ??? продукт
??? Тестирование Сопровождение ???

Разработка

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

Проблемы:
1. Как соотносятся между собой различные процессы разработки ПО?
2. Каким образом организовано взаимодействие с заказчиком и конечными пользователями?
3. Что считается конечным продуктом разработки?

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 2 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Стандарт ISO 12207

Содержание стандарта:
▶ 23 процесса разработки;
▶ 95 родов деятельности по разработке (англ. activity);
▶ 325 заданий (англ. task);
▶ 224 результатов выполнения процессов (англ. outcome).

NB. Стандарт определяет составляющие процессов разработки ПО, но не последовательность


их выполнения.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 3 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Структура процессов ЖЦ

.
Задание 1 Задание2 ··· Заданиеk Заданиеk+1 ···
···
Действие1 Действие2

Процесс ЖЦ

Входные данные Итог процесса

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 4 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Структура процессов ЖЦ

.
Задание 1 Задание2 ··· Заданиеk Заданиеk+1 ···
···
Действие1 Действие2

Процесс ЖЦ

Входные данные Итог процесса

Определение
Задание (англ. task) требование, рекомендация или допустимое действие для достижения
определенного итога процесса.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 4 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Структура процессов ЖЦ

.
Задание 1 Задание2 ··· Заданиеk Заданиеk+1 ···
···
Действие1 Действие2

Процесс ЖЦ

Входные данные Итог процесса

Определение
Действие (англ. activity) набор связанных заданий в пределах процесса.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 4 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Структура процессов ЖЦ

.
Задание 1 Задание2 ··· Заданиеk Заданиеk+1 ···
···
Действие1 Действие2

Процесс ЖЦ

Входные данные Итог процесса

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

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 4 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Структура процессов ЖЦ

.
Задание 1 Задание2 ··· Заданиеk Заданиеk+1 ···
···
Действие1 Действие2

Процесс ЖЦ

Входные данные Итог процесса

Определение
Итог процесса (англ. process outcome) наблюдаемый результат достижения цели выполнения
процесса (программный артефакт, изменение состояния системы, выполнение требования
и т. п.).

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 4 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Классификация процессов

. ЖЦ
Процессы

Основные Организационные Процессы


процессы процессы поддержки

Управление Модификация
процессов

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 5 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Классификация процессов

. ЖЦ
Процессы

Основные Организационные Процессы


процессы процессы поддержки

Управление Модификация
процессов
▶ приобретение;
▶ поставка;
▶ разработка;
▶ эксплуатация;
▶ сопровождение.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 5 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Классификация процессов

. ЖЦ
Процессы

Основные Организационные Процессы


процессы процессы поддержки

Управление Модификация
процессов
▶ документирование;
▶ конфигурация;
▶ QA;
▶ верификация;
▶ валидация;
▶ аудит;
▶ оценка.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 5 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Классификация процессов

. ЖЦ
Процессы

Основные Организационные Процессы


процессы процессы поддержки

Управление Модификация
процессов
▶ организацией;
▶ проектом;
▶ качеством;
▶ риском;
▶ знаниями;
▶ орг. обеспечение;
▶ измерение.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 5 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Классификация процессов

. ЖЦ
Процессы

Основные Организационные Процессы


процессы процессы поддержки

Управление Модификация
процессов

▶ внедрение;
▶ оценка;
▶ совершенствование.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 5 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Основные процессы ЖЦ

1. Приобретение (англ. acquisition) начальный процесс ЖЦ, определяющий действия


заказчика.
Составляющие:
▶ инициация и подготовка запроса на разработку;
▶ оформление и актуализация контракта;
▶ приемка ПО.

2. Поставка (англ. supply) совместные действия заказчика и разработчика по составлению


общего плана управления проектом (project management plan).

3. Разработка (англ. development) действия разработчика по созданию ПО.


Составляющие:
▶ анализ требований, создание дизайна системы и компонентов;
▶ кодирование;
▶ модульное, интеграционное и системное тестирование ПО.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 6 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Основные процессы ЖЦ (продолжение)

4. Эксплуатация (англ. operation) действия обслуживающей организации, обеспечивающей


эксплуатацию системы конечными пользователями.
Составляющие:
▶ функциональное тестирование;
▶ проверка правильности эксплуатации;
▶ руководства по использованию.

5. Сопровождение (англ. maintenance) действия организации, сопровождающей продукт


(управление модификациями, поддержка функциональности, инсталляция и т. п.).
Составляющие:
▶ анализ вопросов сопровождения и модификации;
▶ разработка планов модификации;
▶ миграция;
▶ вывод из эксплуатации.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 7 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Модели жизненного цикла

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

Составляющие модели:
▶ разработка требований или технического задания;
▶ разработка эскизного или технического проекта;
▶ программирование и проектирование рабочего проекта;
▶ пробная эксплуатация;
▶ сопровождение и улучшение;
▶ снятие с эксплуатации.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 8 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Цели моделей ЖЦ

▶ Планирование и распределение работ между разработчиками;


▶ управление проектом разработки;
▶ обеспечение взаимодействия между разработчиками и заказчиком;
▶ контроль работ, оценка промежуточных артефактов ЖЦ на соответствие требованиям;
▶ оценка конечного продукта и затрат на его получение;
▶ согласование промежуточных результатов с заказчиком;
▶ проверка правильности конечного продукта (тестирование), оценка его соответствия
требованиям;
▶ усовершенствование процессов ЖЦ по результатам разработки.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 9 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Классификация моделей ЖЦ

Каскадная Спиральная

. ЖЦ
Модели RAD

Инкрементная Эволюционная

Гибкая
методология

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 10 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Каскадная модель

Инженерия .требований Спецификация требований

Проектирование Архитектура

Имплементация Программный продукт

Тестирование

Сопровождение

Каскадная модель (англ. waterfall model) применение традиционного инженерного подхода к разработке ПО.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 11 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Каскадная модель (продолжение)

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


чтобы застраховаться от возможных затратных ошибок.

Недостатки модели:
▶ жесткое ограничение последовательности действий по разработке;
▶ игнорирование меняющихся нужд пользователей, факторов операционной среды,
что приводит к изменению требований во время разработки;
▶ большой период между внесением и обнаружением ошибки.

Целесообразность применения: комплексные системы, для которых долгий цикл


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

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 12 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Инкрементная модель

Проектирование Реализация Тестирование Выпуск 1

Анализ
. Проектирование Реализация Тестирование Выпуск 2
требований

Проектирование Реализация Тестирование Выпуск 3

..
.

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

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 13 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Инкрементная модель (продолжение)

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


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

Недостатки модели: требования фиксированы на протяжении всего процесса разработки.

Целесообразность применения:
▶ необходима быстрая реализация возможностей системы;
▶ существует декомпозиция системы на составляющие части, реализуемые
как самостоятельные промежуточные или готовые продукты;
▶ возможно увеличение финансирования на разработку отдельных частей продукта.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 14 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Эволюционная модель

Начальные
.
требования Заказчик

Разработка Конкретизация
прототипа требований

Внесение
изменений

Выпуск

Эволюционная модель разработка ПО с использованием функциональных прототипов, которые эволюционируют в элементы


конечного продукта.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 15 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Эволюционная модель (продолжение)

Основные идеи:
▶ создание множества прототипов (т. е. неполных версий) продукта для определения
и уточнения требований пользователей;
▶ интенсивное использование средств автоматизации: визуальных сред разработки
пользовательского интерфейса, СУБД, ЯП высокого уровня абстракции, генераторов кода
и т. п.

Недостатки модели:
▶ дополнительные затраты на разработку прототипов;
▶ недостаточный анализ системы (⇒ неоптимальная архитектура);
▶ риск интерпретации заказчиком прототипов как финального продукта.

Целесообразность применения: проекты, для которых важен пользовательский интерфейс.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 16 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Спиральная модель

Стоимость системы

1. Определение 2. Минимизация
целей риска

Концепция
требований
План Функциональный
требований. Прототип 1 Прототип 2 прототип
План ЖЦ Требования Черновое
Проектирование
проектирование
План Верификация
разработки и валидация
Кодирование

План Верификация Интеграция


тестирования и валидация
Тестирование
4. Планирование 3. Разработка
Имплементация
след. итерации и тестирование
Выпуск

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 17 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Спиральная модель (продолжение)

Основные идеи:
▶ контроль риска раннее тестирование наиболее сложных частей ПО; выбор
распределения между работами (анализ требований, проектирование, создание
прототипов, тестирование); выбор уровня детализации.
▶ выбор модели процесса разработки (каскадная модель, прототипирование) на каждой
итерации.

Недостатки модели: проблема выбора момента начала новой итерации.

Целесообразность применения: комплексные дорогостоящие проекты, для которых


критически важна минимизация риска.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 18 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Гибкая методология разработки ПО

Планирование
итерации
Переоценка Анализ
приоритетов требований

Выпуск .
Заказчик Проектирование

Документирование Кодирование

Тестирование

Личности и взаимодействие > процессы и инструменты


Работающее ПО > исчерпывающая документация
Сотрудничество с заказчиком > согласование условий контракта
Реагирование на изменения > следование плану
Agile Manifesto, 2001

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 19 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Принципы гибкой методологии

1. Личности и взаимодействие важность самоорганизации и взаимодействий


между разработчиками (напр., парное программирование); многофункциональность
каждого исполнителя (проектирование, кодирование, тестирование, …).
2. Работающий продукт работающее ПО лучше отражает процесс разработки
для заказчика лучше, чем документы.
3. Сотрудничество с заказчиком доработка и конкретизация требований в процессе
разработки; постоянное присутствие представителя заказчика при разработке ПО.
4. Реагирование на изменения фокус на быстрое внедрение изменений и непрерывную
разработку (англ. continuous development).

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 20 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Методы гибкой разработки

▶ Непрерывная интеграция (англ. continuous integration) частая (несколько раз в день)


автоматизированная сборка программного продукта, чтобы выявить интеграционные
проблемы.
▶ Проблемно-ориентированное проектирование (англ. domain-driven design) создание
концептуальных моделей предметной области с целью упростить ее понимание
разработчиками.
▶ Парное программирование (англ. pair programming) 1-й разработчик пишет код,
2-й проверяет его на правильность.
▶ Разработка через тестирование (англ. test-driven development) написание набора тестов,
проверяющих функциональность элемента ПО, с последующим кодированием
для прохождения этого набора.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 21 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Методы гибкой разработки (продолжение)

▶ Автоматизированное модульное тестирование (англ. unit testing) немедленная


проверка всех изменений, вносимых в код.
▶ Шаблоны проектирования (англ. design patterns) типовые конструктивные элементы
программной системы, задающие взаимодействие нескольких компонентов, а также роли
и сферы ответственности исполнителей.
▶ Рефакторинг кода (англ. code refactoring) преобразование кода без изменения
функциональности программной системы с целью создания общей архитектуры системы.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 22 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Характеристики гибкой методологии

Недостатки модели:
▶ неоптимальная архитектура системы вследствие отсутствия требований, фиксированных
на протяжении всего процесса разработки;
▶ риск снижения качества продукта из-за множества изменений, вносимых без достаточного
тестирования и проверки на соответствие общей архитектуре системы.

Целесообразность применения:
▶ программные проекты с необходимостью частых выпусков;
▶ ПО с быстро меняющимися требованиями (напр., веб-сервисы).

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 23 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Выводы

1. Процессы, согласно которым разрабатывается ПО, описаны в стандарте ISO 12207.


В то же время, этот стандарт не содержит последовательность выполнения процессов.

2. Различные подходы к расписанию процессов жизненного цикла ПО представлены


в моделях ЖЦ каскадной, итеративной, эволюционной и спиральной; основными
различиями моделей являются их подход к инженерии требований и (а)цикличность
процессов ЖЦ.

3. Более современный подход к разработке гибкая методология программирования (agile


development), в которой основной фокус делается не на планировании,
а на взаимодействии внутри коллектива разработчиков и с заказчиком ПО.

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 24 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Материалы

Лавріщева К. М.
Програмна інженерія (підручник).
К., 2008. 319 с.

US Department of Health & Human Services


Selecting a Development Approach.
http://www.cms.gov/Research-Statistics-Data-and-Systems/.../SelectingDevelopmentApproach.pdf

(неплохой обзор различных методологий разработки)

Fowler, Martin
The New Methodology.
http://martinfowler.com/articles/newMethodology.html

(описание гибкой методологии разработки ПО)

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 25 / 26


Жизненный цикл Модели ЖЦ Гибкая методология Заключение
..... ......... ..... ...

Спасибо за внимание!

Программная инженерия. Лекция №5 Стандарт и модели жизненного цикла. 26 / 26