Процессы разработки программного обеспечения
Основы программной инженерии
Кулямин В.В., ВМК МГУ
Разработка ПО
•Это сложная деятельность (как ПО – сложные системы)
•Поэтому нужно применение тех же общих принципов
•Выделение модулей (отдельных видов работ) и их интерфейсов (артефактов разработки)
•Абстракция и уточнение (решаемых в ходе работ задач)
•Повторное использование (максимальное переиспользование полученных результатов работ вместо их повторения)
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
2 |
Процесс разработки ПО
•Определяет структуру выполняемых работ (список и иерархию вложенности), их возможные последовательности, набор создаваемых и используемых артефактов и роли разработчиков
•Пример
•Анализ требований/Requirements analysis
(вид работ или вид деятельности)
•Выполняется инженерами по требованиям, пользователями и экспертами в предметной области/requirements engineers, users, domain experts
(роли)
Инженеры выявляют и оформляют требования, пользователи и эксперты в предметной области служат источниками требований, пользователи используются для первичного сбора требований, эксперты – для уточнений и совместного анализа
•Входным документом является общее назначение и цели создания системы/system vision Результатом является техническое задание/requirements specification
(артефакты)
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
3 |
Общие замечания
•(Также, как нет универсальных законов построения ПО)
•Нет универсальных процессов разработки, их применимость и эффективность зависят от контекста – вида создаваемого ПО, предметной области, рыночной ситуации, вовлеченных людей
•Наиболее широко используются паттерны/образцы процессов – структурированные регламенты техник выполнения отдельных видов деятельности, которые можно комбинировать друг с другом в зависимости от условий применения
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
4 |
Жизненный цикл ПО
Анализ требований |
|
Кодирование |
|
Эксплуатация |
Проектирование Развертывание
•Период от возникновения идеи о создании данного ПО до удаления последней его копии
•Цикл – поскольку время от времени над ПО выполняется примерно одна и та же последовательность работ, чтобы получить очередную версию
•Хотя наиболее трудоемким выглядит создание первой версии, от 70% до 95% всех трудозатрат для практически полезного ПО уходит на сопровождение уже после выпуска первой версии
•Отсюда сосредоточенность на снижении трудоемкости сопровождения в долгой перспективе
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
5 |
Модели жизненного цикла
•Определяет общую последовательность работ
•Основные виды моделей жизненного цикла
•Водопадная/каскадная (waterfall)
•Итеративная (iterative)
•Спиральная (spiral)
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
6 |
Водопадная/каскадная модель
•Виды деятельности выстраиваются в последовательность во времени и выполняются так всегда, без возвращений, кроме как на самый первый вид
Анализ требований
Проектирование
Кодирование
Тестирование
Развертывание
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
7 |
Итеративная модель
•Возможны возвращения на предыдущие шаги (и еще дальше), если обнаруживаются недоделки, ошибки, несогласованности и пр.
Анализ требований
Проектирование
Кодирование
Тестирование
Развертывание
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
8 |
Сопоставление моделей
•Даже в работе W. Royce (1970), на которую часто ссылаются как формулирующую водопадную модель, на самом деле описывается итеративная
•Применимость
•Водопадная модель эффективно применима к небольшим проектам с очень малыми рисками возникновения изменений требований в ходе работ
•Итеративная модель применима гораздо чаще
•Управляемость
•Планировать и контролировать работы по водопадной модели значительно проще
•Итеративная модель связана с рисками выхода за рамки бюджета и времени
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
9 |
Спиральная модель
•Итеративная, в которой все итерации имеют общую структуру (в каждой итерации повторяется некоторая последовательность действий)
•Повышает управляемость
•Изображается обычно спиралью, в которой
каждый виток – итерация, удаление от центра – затраченные ресурсы
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии |
