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

Технологии конструирования

программного обеспечения
Software Engineering
Цель: обучение основным принципам и методам,
используемым на различных этапах разработки
программного обеспечения сложных компьютерных систем,
а также обучение организации процессов программной
разработки.
Дисциплина формирует знания по следующим вопросам:
• принципы и методы анализа исходных задач на разработку
и формирование требований к программным продуктам;
• принципы и методы анализа, проектирования, тестирования
и сопровождения программных продуктов;
• способы и средства руководства программным проектом,
количественной оценки программного продукта;
• современные инструментальные средства поддержки
процесса конструирования ПО;
• перспективы и возможности систем автоматизированного
проектирования программных изделий, тенденции
промышленного производства программного обеспечения.

2
Лекция 1

Парадигмы технологии
конструирования ПО
Определение технологии конструирования
программного обеспечения
Технология конструирования программного обеспечения (ТКПО) —
система инженерных принципов для создания экономичного ПО,
которое надежно и эффективно работает в реальных
компьютерах.
ТКПО
Методы Средства
 Планирование и автоматизированная
оценка проекта поддержка методов
 Анализ требований (CASE система)
 Проектирование
алгоритмов и структур Процедуры
 Кодирование "склеивают"методы и
 Тестирование средства
.Сопровождение

6
Средства (утилиты) ТКПО обеспечивают автоматизированную или
автоматическую поддержку методов. В целях совместного
применения утилиты могут объединяться в системы
автоматизированного конструирования ПО. Такие системы
принято называть CASE-системами. Аббревиатура CASE
расшифровывается как Computer Aided Software Engineering
(программная инженерия с компьютерной поддержкой).
Процедуры являются «клеем», который соединяет методы и
утилиты так, что они обеспечивают непрерывную
технологическую цепочку разработки. Процедуры определяют:
• порядок применения методов и утилит;
• формирование отчетов, форм по соответствующим требованиям;
• контроль, который помогает обеспечивать качество и
координировать изменения;
• формирование «вех», по которым руководители оценивают
прогресс.

7
Процесс конструирования программного обеспечения состоит
из последовательности шагов, использующих методы,
утилиты и процедуры. Эти последовательности шагов часто
называют парадигмами ТКПО.
Применение парадигм ТКПО гарантирует систематический,
упорядоченный подход к промышленной разработке,
использованию и сопровождению ПО. Фактически,
парадигмы вносят в процесс создания ПО организующее
инженерное начало, необходимость которого трудно
переоценить.
Рассмотрим наиболее популярные парадигмы ТКПО.

8
Классический жизненный цикл

Системный
анализ

Анализ
требований

Проектирование

Кодирование

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

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

9
Системный анализ задает роль каждого элемента в
компьютерной системе, взаимодействие элементов друг с
другом. Поскольку ПО является лишь частью большой
системы, то анализ начинается с определения требований
ко всем системным элементам и назначения подмножества
этих требований программному «элементу». Необходимость
системного подхода явно проявляется, когда формируется
интерфейс ПО с другими элементами (аппаратурой, людьми,
базами данных). На этом же этапе начинается решение
задачи планирования проекта ПО. В ходе планирования
проекта определяются объем проектных работ и их риск,
необходимые трудозатраты, формируются рабочие задачи и
план — график работ.
Анализ требований относится к программному элементу —
программному обеспечению. Уточняются и детализируются
его функции, характеристики и интерфейс. Все определения
документируются в спецификации анализа. Здесь же
завершается решение задачи планирования проекта.

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

11
Кодирование состоит в переводе результатов проектирования в
текст на языке программирования.
Тестирование — выполнение программы для выявления
дефектов в функциях, логике и форме реализации
программного продукта.
Сопровождение — это внесение изменений в эксплуатируемое
ПО.
Цели изменений:
 исправление ошибок;
 адаптация к изменениям внешней для ПО среды;
 усовершенствование ПО по требованиям заказчика.
Сопровождение ПО состоит в повторном применении каждого из
предшествующих шагов (этапов) жизненного цикла к
существующей программе, но не в разработке новой
программы.

12
Достоинства классического жизненного цикла:
 дает план и временной график по всем этапам проекта,
 упорядочивает ход конструирования.

Недостатки классического жизненного цикла:


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

13
Макетирование

Основная цель макетирования: снять неопределенности в


требованиях заказчика.
Макетирование (прототипирование) — это процесс создания
модели требуемого программного продукта.

Ожидание Построение /
заказчика уточнение
макета

Оценка
макета
заказчиком

14
Алгоритм применения макетирования
Макетирование

Сбор и уточнение требований

Быстрое проектирование

Построение макета

Оценка макета заказчиком

Уточнение макета

Продолжать
Да
Нет
Конструирование продукта

Конец

15
Достоинство макетирования:
обеспечивает определение полных требований к ПО.

Недостатки макетирования:
 заказчик может принять макет за продукт;
 разработчик может принять макет за продукт.

16
Стратегии конструирования ПО
 однократный проход (водопадная стратегия) — линейная
последовательность этапов конструирования;
 инкрементная стратегия. В начале процесса
определяются все пользовательские и системные
требования, оставшаяся часть конструирования
выполняется в виде последовательности версий. Первая
версия реализует часть запланированных возможностей,
следующая версия реализует дополнительные возможности
и т. д., пока не будет получена полная система;
 эволюционная стратегия. Система также строится в виде
последовательности версий, но в начале процесса
определены не все требования. Требования уточняются в
результате разработки версий.

17
Характеристики стратегий конструирования

Стратегия В начале процесса Множество циклов Промежуточное ПО


конструирования определены все конструирования? распространяется?
требования?
Однократный да нет нет
проход
Инкрементная да да может быть
(запланированное
улучшение
продукта)
Эволюционная нет да да

18
Инкрементная модель
Классический пример инкрементной стратегии конструирования.

1-й Поставка 1-го


инкремент инкремента

Анализ Проектирование Кодирование Тестирование

2-й Поставка 2-го


инкремент инкремента

Анализ Проектирование Кодирование Тестирование

3-й Поставка 3-го


инкремент инкремента

Анализ Проектирование Кодирование Тестирование

19
Спиральная модель
Классический пример применения эволюционной стратегии
конструирования. Спиральная модель (Барри Боэм, 1988)
базируется на лучших свойствах классического жизненного
цикла и макетирования, к которым добавляется новый
элемент — анализ риска.
Планирование Анализ риска
3
2
4

Линия принятия решения


(продолжать или нет)
5

8
9
7

6
Оценивание Конструирование
заказчиком
20
Четыре действия, представляемые четырьмя квадрантами
спирали:
1. Планирование — определение целей, вариантов и
ограничений.
2. Анализ риска — анализ вариантов и
распознавание/выбор риска.
3. Конструирование — разработка продукта следующего
уровня.
4. Оценивание — оценка заказчиком текущих результатов
конструирования.
С каждой итерацией по спирали (продвижением от центра к
периферии) строятся все более полные версии ПО. В
каждом цикле по спирали требуется конструирование
(нижний правый квадрант), которое может быть
реализовано классическим жизненным циклом или
макетированием.

21
Достоинства спиральной модели:
1. наиболее реально (в виде эволюции) отображает
разработку программного обеспечения;
2. позволяет явно учитывать риск на каждом витке
эволюции разработки;
3. включает шаг системного подхода в итерационную
структуру разработки;
4. использует моделирование для уменьшения риска и
совершенствования программного изделия.
Недостатки спиральной модели:
1. повышенные требования к заказчику;
2. трудности контроля и управлением временем разработки.

22
Компонентно-ориентированная модель
Эта модель — развитие спиральной модели. В ней конкретизируется
квадрант конструирования — новая разработка основывается на
повторном использовании существующих программных компонентов.
Планирование Анализ риска

Оценивание Конструирование
заказчиком

Содержание этапа Идентификация


конструирования кандидатов
в компоненты
Конструирование Поиск
n-й итерации компонентов
системы в библиотеке

Включение новых Извлечение


компонентов компонентов
в библиотеку (если найдены)

Построение
компонентов
(если не найдены)
23
Модель зрелости процесса разработки ПО
CMM (Capability Maturity Model)

Уровень 5. Оптимизирующий
Планомерное улучшение и повышение
качества процесса

Уровень 4. Управляемый
Количественное управление процессом,
его качеством

Уровень 3. Определенный
Процесс полностью определен
и организован на основе единого
стандарта компании

Уровень 2. Повторяемый
Процесс планируется и отслеживается

Уровень 1. Начальный
Самоорганизующийся хаос. Процесс
осуществляется случайным образом

24
Спасибо за внимание
Кодовое слово: fwrwerwer

25