Программное
обеспечение (ПО) –
компьютерные программы и соответствующая документация. Разрабатывается по
частному заказу или для продажи на рынке ПО.
Инженерия ПО
– инженерная дисциплина, охватывающая все аспекты разработки ПО.
Системотехника
(технология создания вычислительных систем)
– дисциплина, охватывающая все аспекты создания и модернизации сложных
вычислительных систем, где программное обеспечение играет ведущую роль. Сюда
можно отнести технологии создания аппаратных средств, создание вычислительных
процессов, развертывание всей системы, а также технологию создания
непосредственно ПО.
Процесс создания ПО
– совокупность
процессов, приводящих к созданию программного продукта.
Фундаментальные
процессы, присущие любому проекту создания ПО:
- Разработка
спецификации требований на ПО (Определяют функциональные характеристики системы
и обязательны для выполнения).
- Создание
программного обеспечения (создание ПО согласно спецификации).
- Аттестация ПО
(Созданное ПО должно пройти аттестацию для подтверждения соответствию
требованиям заказчика).
- Модернизация ПО
(совершенствование ПО согласно измененным требованиям потребителя).
Модель процесса
создания ПО –
последовательность этапов, необходимых для разработки создаваемого ПО.
Рис. 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 – Спиральная модель
Достоинства:
- Нет
фиксированных этапов.
- Эта модель
может включать в себя любые другие модели на каждом витке спирали:
-
прототипирование может использоваться при нечетком определении требований;
- Каскадная
модель в случае последовательного выполнения некоторых этапов;
- Модель
формальных преобразований – если четко сформулированы требования.
Недостатки:
- Сложена
автоматизация процессов разработки.
- Огромная роль
при разработке системы отводится управлению проектом.
Разработка
спецификации ПО –
определение сервисов, которыми будет обладать создаваемое ПО, а также
ограничений, налагаемых на функциональные возможности и разработку ПО.
Результат
процесса определения требований
– документация, формализующая требования, предъявляемые к системе.
Реализация
ПО – процесс
перевода системной спецификации в работоспособную систему. Включает в себя
процессы проектирования и программирования.
Процесс
проектирования включает в себя определение структуры ПО, данных, интерфейсов
взаимодействия системных компонентов, используемые алгоритмы. Проектирование
предполагает последовательную формализацию и детализацию создаваемого ПО.
Результат
каждого этапа проектирования – спецификация, необходимая для выполнения
следующего этапа.
Рис. 8 – процесс формирования спецификации требований
Методы
проектирования –
множество формализованных нотаций и нормативных документов для проектирования
ПО.
Структурные
методы поддерживают модели системы:
- Модель потоков
данных;
- Модель
«сущность-связь»;
- Структурная
модель;
-
Объектно-ориентированные иерархическая модель системы, модель отношений между
объектами, модель взаимодействия объектов;
- Диаграммы
переходов или сценарии жизни сущностей.
Программирование и отладка:
Тестирование –
процесс установления программных ошибок.
Отладка
– установление местоположения ошибок и их устранение.
Рис. 9 – Процесс тестирования
Аттестация
и верификация –
процесс установления соответствия ПО ее спецификации, а также ожиданиям и
требованиям пользователей и заказчика.
Рис. 10 – Процесс аттестации и верификации
Рис. 11 ‑ Этапы
тестирования
Сопровождение системы – это внесение изменений в
систему, которая находится в эксплуатации.
Рис. 12 - Эволюция
систем
Вопросы для обсуждения
1. Почему в процессе определения требований необходимо различать разработку
пользовательских требований и разработку системных требований?
2. Каковы пять основных компонентов любых методов проектирования?
3. Разработайте модель процесса тестирования исполняемой программы.