
- •Введение
- •Практическая работа №1. Тема: технология программирования. Основные понятия и подходы.
- •1.1. Назначение технологии программирования
- •1.2. История развития технологии программирования
- •1.2.1. Дореволюционный период
- •1.2.2. «Революция в программировании»
- •1.2.3. Послереволюционный период
- •1.3. Типы программных проектов
- •1.4. Составные части технологии программирования
- •1.5. Проект, продукт, процесс и персонал
- •Вопросы для рассмотрения.
- •Рекомендуемая литература по теме.
- •Практическая работа №2. Тема: приемы обеспечения технологичности программных продуктов.
- •2.1. Циклический характер разработки
- •2.2. Основные понятия технологии программирования
- •2.2.1. Процессы и модели
- •2.2.2. Фазы и витки
- •2.2.3. Вехи и артефакты
- •2.2.4. Заинтересованные лица и работники
- •2.3. Выявление и анализ требований
- •2.3.1. Требования к программному обеспечению
- •2.3.2. Схема разработки требований
- •2.3.3. Управление требованиями
- •2.4. Архитектурное и детальное проектирование
- •2.4.1. Архитектурное проектирование
- •2.4.2. Детальное проектирование
- •2.5. Реализация и кодирование
- •2.6. Тестирование и верификация
- •2.6.1. Процесс контроля качества
- •2.6.2. Методы «белого ящика» и «черного ящика»
- •2.6.3. Инспектирование и обзоры
- •2.6.4. Цели тестирования
- •2.6.5. Верификация, валидация и системное тестирование
- •2.7. Сопровождение и продолжающаяся разработка
- •Вопросы для рассмотрения.
- •Рекомендуемая литература по теме.
- •Практическая работа №3. Тема: определение требований к программному обеспечению и исходных данных для его проектирования. Модели процесса разработки.
- •3.1. Водопадные и конвейерные модели
- •3.2. Спиральные и инкрементные модели
- •3.4. Конструирование модели процесса
- •3.4.1. Выявление требований к процессу
- •3.4.2. Используемые фазы, вехи и артефакты
- •3.4.2.1. Фаза «Анализ»
- •3.4.2.2. Фаза «Проектирование»
- •3.4.2.3. Фаза «Реализация»
- •3.4.2.4. Фаза «Стабилизация»
- •3.4.2.5. Фаза «Внедрение»
- •3.4.3. Выбор архитектуры процесса.
- •3.4.3.1. Типы проектов
- •3.4.3.2. Модель процесса сверх легкого проекта
- •3.4.3.3. Модель процесса легкого проекта
- •3.4.3.4. Модель процесса тяжелого проекта
- •3.4.3.5. Модель процесса сверх тяжелого проекта
- •3.4.3.6. Занятость исполнителей
- •3.4.4. Порядок проведения типового проекта
- •3.4.4.1. Этап 1. Подготовка к проекту
- •3.4.4.2. Сбор и анализ предварительной информации
- •3.4.4.3. Формирование бригады проекта
- •3.4.4.4. Подготовка исходных документов
- •3.4.4.5. Этап 2. Работа над проектом
- •3.4.4.6. Процедура выполнения фазы проекта
- •3.4.4.7. Подготовка результирующих материалов вех
- •3.4.4.8. Этап 3. Завершение проекта
- •3.4.4.9. Архивирование результатов работы
- •3.4.4.10. Подведение итогов проекта
- •3.4.5. Документированные процедуры
- •3.4.5.3. Проверка качества материалов
- •3.4.6. Выводы
- •Вопросы для рассмотрения.
- •Рекомендуемая литература по теме
- •Практическая работа №4. Тема: анализ требований и определение спецификаций программного обеспечения при структурном подходе.
- •4.1. Спецификации программного обеспечения при структурном подходе
- •4.2. Определение понятий и видов требований
- •Виды требований
- •4.1.2. Анализ и сбор требований
- •4.1.3. Инженерия требований по
- •4.2. Трассирование требований
- •Вопросы для рассмотрения.
- •Рекомендуемая литература по теме
3.4. Конструирование модели процесса
На практике программирующие организации редко применяют приведенные абстрактные модели процессов в «чистом виде». Как правило, используя известные модели и учитывая конкретные особенности и условия, организация создает специфические модели «под себя», которые наилучшим образом учитывают особенности организации.
Основными «методами» конструирования конкретных процессов разработки являются, конечно, здравый смысл и опыт. Невозможно дать в учебнике короткий набор рекомендаций, заменяющих эти важнейшие качества. Но можно привести пример конструирования конкретного процесса.
Вообще говоря, есть много общего в процессе разработки и в процессе конструирования описания процесса разработки.18 Действительно, ведь само описание процесса разработки, как мы показали ранее, фактически является алгоритмом, только исполнителем этого алгоритма является не компьютер, а программирующая организация. Следовательно, в процессе конструирования описания процесса разработки наблюдаются примерно те же фазы, что и в процессе разработки: выявление требований, выбор архитектуры, реализация и валидация. Применительно к конструированию процесса реализация подразумевает определение конкретных процедур (алгоритмов) по которым должен выполняться сконструированный процесс разработки.
Оставшаяся часть данного раздела до конца темы представляет собой пример сконструированного конкретного процесса разработки для некоторой гипотетической программирующей организации.
17
Откуда и происходит название модели.
3.4.1. Выявление требований к процессу
Рассмотрим гипотетическую организацию, разрабатывающую программное обеспечение на заказ. Допустим, организация выявила у себя следующие особенности.
Договорные отношения с заказчиками. Организация проводит проекты по разработке программного обеспечения для сторонних заказчиков на договорных началах. Каждый проект регулируется отдельным договором. Комплект договорных документов соответствует сложившейся отечественной практике.
Фиксированные временные рамки проектов. Основным типом проектов являются вертикальные приложения масштаба предприятия или компоненты таких приложений, для которых время окончания разработки и внедрения предопределено условиями договора. Продолжающаяся разработка не характерна, если она имеет место, то по новому договору, а значит в рамках другого проекта.
Новизна предметной области. Проекты выполняются в различных предметных областях (разные типы предприятий, разные бизнес-процессы), поэтому часто содержат элементы существенной новизны для разработчиков. В этих условиях весьма велик технический риск получения неполной или неадекватной первой версии каждой системы.
Гарантированный конечный успех. Для расширения и стабилизации круга заказчиков требуется гарантированный конечный успех каждого отдельного проекта, даже если это требует дополнительных внутренних расходов на проведение проекта.
18
Выражаясь терминами, принятыми в
унифицированном языке моделирования
UML,
можно сказать, что процесс конструирования
описания процесса разработки является
мета процессом по отношению к процессу
разработки.
Сформулируем требования к конструируемой модели процесса.
Учет особенностей организации. Процесс должен учитывать выявленные особенности организации и не должен им противоречить.
Использование стандартных элементов. Процесс должен быть описан в терминах, приведенных в предыдущих разделах и опираться на известные абстрактные модели процессов. Использование принципиально новой модели нежелательно.
Минимальное описание. Процесс должен быть по возможности легким, он не должен содержать процедур, артефактов и регламентирующих документов, без которых можно обойтись.
Область применения. Конструируемое описание должно описывать только процесс разработки программного обеспечения. Другие процессы, например, договорные отношения с заказчиком, описывать нежелательно.
Замечание по конструированию. В число требований включены как свойства, которыми конструируемый процесс должен обладать, так и свойства, которыми он не должен обладать.