- •Введение
- •Практическая работа №1. Тема: технология программирования. Основные понятия и подходы.
- •1.1. Назначение технологии программирования
- •1.2. История развития технологии программирования
- •1.2.1. Дореволюционный период
- •1.2.2. «Революция в программировании»
- •1.2.3. Послереволюционный период
- •1.3. Типы программных проектов
- •1.5. Проект, продукт, процесс и персонал
- •Вопросы для рассмотрения.
- •1.4. Составные части технологии программирования
- •Рекомендуемая литература по теме.
- •Практическая работа №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. Трассирование требований
- •Вопросы для рассмотрения.
- •Рекомендуемая литература по теме
2.2.3. Вехи и артефакты
Каждая фаза является достаточно крупной составляющей процесса разработки: фаза может продолжать достаточно долго, и требовать выполнения большого объема работы. Более того, фазы могут перекрываться во времени и выполняться параллельно. Таким образом, понятие фазы оказывается недостаточно четким для точного планирования, учета и измерения процесса. В то же время планирование и измерения считаются совершенно необходимыми элементами в современном процессном подходе. Нужно средство установить границы фазы более четко. Таким средством является понятие «веха».
Веха (milestone) - одномоментное идентифицируемое событие, сопровождающееся появлением и фиксацией некоторого артефакта.
Обычно при планировании и анализе процессов, в конце каждой фазы выставляется веха, которая служит границей фазы. Такую веху естественно называть главной вехой фазы, а ее артефакт называется результатом вехи.
Например, для фазы «выявление и анализ требований» главная веха - «требования определены», а результатом фазы являются сами требования.
Заметим, что совершенно необязательно считать, что каждая фаза имеет только одну веху: их может быть сколько угодно. Например, начальная веха, которая отмечает начало фазы, промежуточные вехи, которые отмечают важные части фазы или появление важных артефактов необходимых для выполнения других фаз и так далее.
Мы уже много раз использовали слово «артефакт». Вообще говоря, это слово происходит от латинских корней [arte искусственно + factus сделанный], и означает любую искусственно созданную вещь. В последний годы этот термин активно стал применяться в технологии программирования в следующем смысле.
Артефакт (artifact) - документ или иной материал, имеющий материальную форму и отчуждаемый от разработчика.
В этом определении важно обратить внимание на слово «отчуждаемый». Поясним это на примере модельной ситуации. Допустим, что после некоторых разговоров с заказчиком один из разработчиков заявляет: «я понял, что нужно сделать». Можно ли считать, что веха «требования определены» достигнута? В некоторых ситуациях действительно достаточно иметь оракула, умеющего отвечать на любые вопросы, относящиеся к разрабатываемому программного обеспечению, по мере их возникновения. Однако в современных промышленных технологиях программирования так поступать не принято - слишком велик риск. Действительно, что делать, если оракул заболеет или уволится? Считается, что веха «требования определены» должна сопровождаться артефактом, в котором эти требования действительно определены и их можно использовать без непосредственной помощи тех лиц, которые составляли требования.
2.2.4. Заинтересованные лица и работники
Процесс разработки программного обеспечения не является автоматическим - в нем участвуют люди. Но этот процесс, в настоящее время, не является полностью ручным - для разработки программного обеспечения используется программное обеспечение.
Программы, которые используется при разработке программ, называются инструментальными, или инструментами.
У инструментальных средств есть пользователи - те конкретные сотрудники программирующий организации, которые и ведут процесс разработки. При описании (построении) промышленного процесса разработки считается, что сотрудники до некоторой степени взаимозаменяемы,12 и важны не личностные качества сотрудника, а его профессиональные навыки и умения.
Работник13 (worker) - набор выполняемых функций и обязанностей, назначенных сотруднику в рамках конкретного проекта.
Но помимо работников, непосредственно занятых в процессе разработки, с каждым проектом по разработке программного обеспечения связаны категории людей и организации, которые так или иначе вовлечены в проект. Примерами могут служить: заказчики, которые влияют на определение требований, инвесторы, которые финансируют проект, пользователи, которые собираются эксплуатировать разрабатываемое программное обеспечение и так далее.
Заинтересованными лицами (stockholders) называют категории людей или организации, которые тем или иным образом связаны с проектом.
12 Существует
целый ряд областей человеческой
деятельности, прежде всего в науке и
искусстве, где предположение
о
взаимозаменяемости сотрудников не
всегда верно.
13 Часто
используется также термин "роль".
Но поскольку этот термин занят в
унифицированном языке моделирования,
то вслед за авторами Унифицированного
процесса будем использовать термин
"работник".
