Учебно-методический комплекс

ТЕХНОЛОГИЯ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ  

А. М. Гудов, С. Ю. Завозкин, С. Н. Трофимов


[Титульная] [Программа] [Учебное пособие] [Лабораторный практикум] [Дополнительные материалы]


[Глава 1] [Глава 2] [Глава 3] [Глава 4] [Глава 5] [Глава 6] [Глава 7] [Глоссарий] [Метод. рекомендации]

 

Глава 1. Технологии, модели и процессы создания ПО

 Терминология

Программное обеспечение (ПО) – компьютерные программы и соответствующая документация.  Разрабатывается по частному заказу или для продажи на рынке ПО.

Инженерия ПО – инженерная дисциплина, охватывающая все аспекты разработки ПО.

Системотехника (технология создания вычислительных систем) – дисциплина, охватывающая все аспекты создания и модернизации сложных вычислительных систем, где программное обеспечение играет ведущую роль. Сюда можно отнести технологии создания аппаратных средств, создание вычислительных процессов, развертывание всей системы, а также технологию создания непосредственно ПО.

Процесс создания ПО – совокупность процессов, приводящих к созданию программного продукта.

Фундаментальные процессы, присущие любому проекту создания ПО:

- Разработка спецификации требований на ПО (Определяют функциональные характеристики системы и обязательны для выполнения).

- Создание программного обеспечения (создание ПО согласно спецификации).

- Аттестация ПО (Созданное ПО должно пройти аттестацию для подтверждения соответствию требованиям заказчика).

- Модернизация ПО (совершенствование ПО согласно измененным требованиям потребителя).

Модель процесса создания ПО – последовательность этапов, необходимых для разработки создаваемого ПО.

 

Рис.  1 – Распределения затрат при разработке ПО

Модели процесса разработки ПО:

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

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

3. Формальное преобразование

4. Сборка программных продуктов из ранее созданных компонентов (модель сборки)

5. Итерационная (спиральная) модель

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

Все методы основаны на использовании моделей системы в качестве спецификации ее структуры:

1. Функционально-ориентированные (структурный анализ, JSD, 70-е годы) основаны на определении основных функциональных компонент системы.

2. Объектно-ориентированные (Booch, Rumbaugh) используют подходы, основанные на использовании унифицированного языка моделирования UML.

Computer-Aided Software Engineering – автоматизированная разработка ПО.

 Процессы создания ПО

Базовые процессы создания ПО:

  • Разработка спецификации.

  • Проектирование и реализация.

  • Аттестация.

  • Эволюция.

Жизненный цикл ПО – совокупность процессов, протекающих от момента принятия решения о создании ПО до его полного вывода из эксплуатации.

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

 

Рис. 2 – Каскадная модель создания ПО

Достоинства:

- Документирование каждого этапа.

Недостатки:

- «Негибкое» разбиение процесса создания на отдельные этапы.

Применение:

- Требования сформулированы достаточно четко.

- Повсеместно для разработки небольших систем, входящих в состав крупного проекта.

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

Прототип – действующий программный модуль, реализующий отдельные функции создаваемого ПО.

 

Рис. 3 – Эволюционная модель создания ПО

 Достоинства:

- Спецификация разрабатывается постепенно, по мере требования заказчика.

Недостатки:

- Многие этапы создания ПО не документированы.

- Система часто получается плохо структурированной.

- Требуются специальные средства и технологии разработки ПО.

Применение:

- Разработка небольших систем (<100 000 строк) или средних (<500 000 строк) с относительно коротким сроком жизни.

 Формальная разработка

Рис. 4  -  Процесс формальных преобразований

Преимущества:

- Точное соответствие программы спецификации.

- Отказ от тестирования отдельных модулей.

- Тестирование всей системы только после ее сборки.

Недостатки:

- Требуют специальных знаний и опыта использования.

- Не дают существенного выигрыша в стоимости разработки.

- Большинство сложных систем с трудом поддаются формальному описанию.

 Модель пошаговой разработки

 

Рис. 5 – Модель пошаговой разработки

На каждом шаге отсутствует требование использования одного и того же подхода к процессу разработки!

Достоинства:

- Нет необходимости ждать полного завершения разработки системы.

- Можно использовать компоненты, полученные на первых шагах, как прототипы.

- Уменьшается риск общесистемных ошибок.

- Системные сервисы с высоким приоритетом разрабатываются первыми, а все последующие интегрируются с ними. Это позволяет снизить вероятность программных ошибок в особо важных частях системы.

Недостатки:

- Компоненты, получаемые на каждом шаге, имеют небольшой размер.

- Сложно определить на первых этапах общесистемные функции.

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

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

Рис. 6 – Спиральная модель

Достоинства:

- Нет фиксированных этапов.

- Эта модель может включать в себя любые другие модели на каждом витке спирали:

- прототипирование может использоваться при нечетком определении требований;

- Каскадная модель в случае последовательного выполнения некоторых этапов;

- Модель формальных преобразований – если четко сформулированы требования.

Недостатки:

- Сложена автоматизация процессов разработки.

- Огромная роль при разработке системы отводится управлению проектом.

Базовые процессы создания ПО

Разработка спецификации ПО – определение сервисов, которыми будет обладать создаваемое ПО, а также ограничений, налагаемых на функциональные возможности и разработку ПО.

Результат процесса определения требований – документация, формализующая требования, предъявляемые к системе.

Два уровня детализации:

- Требования, предъявляемые конечными пользователями;

- Системная спецификация для разработчиков.

 

Рис. 7 – Процесс спецификации требований

Реализация ПО – процесс перевода системной спецификации в работоспособную систему.  Включает в себя процессы проектирования и программирования.

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

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

 

Рис. 8 – процесс формирования спецификации требований

Методы проектирования – множество формализованных нотаций и нормативных документов для проектирования ПО.

Структурные методы поддерживают модели системы:

- Модель потоков данных;

- Модель «сущность-связь»;

- Структурная модель;

- Объектно-ориентированные иерархическая модель системы, модель отношений между объектами, модель взаимодействия объектов;

- Диаграммы переходов или сценарии жизни сущностей.

Программирование и отладка:

Тестирование – процесс установления программных ошибок.

Отладка – установление местоположения ошибок и их устранение.

 

Рис. 9 – Процесс тестирования

Аттестация и верификация – процесс установления соответствия ПО ее спецификации, а также ожиданиям и требованиям пользователей и заказчика.

 

Рис. 10 – Процесс аттестации и верификации

 

 

Рис. 11 ‑ Этапы тестирования

Сопровождение системы – это внесение изменений в систему, которая находится в эксплуатации.

 

Рис. 12 - Эволюция систем

 

Вопросы для обсуждения

1. Почему в процессе определения требований необходимо различать разработку пользовательских требований и разработку системных требований?

2. Каковы пять основных компонентов любых методов проектирования?

3. Разработайте модель процесса тестирования исполняемой программы.

 

 

[Глава 1] [Глава 2] [Глава 3] [Глава 4] [Глава 5] [Глава 6] [Глава 7] [Глоссарий] [Метод. рекомендации]


[Титульная] [Программа] [Учебное пособие] [Лабораторный практикум] [Дополнительные материалы]