- •Введение
- •Практическая работа №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.3. Выявление и анализ требований
Фаза с таким или сходным названием (чаще всего применяют термин «разработка требований») присутствует во всех известных моделях жизненного цикла. Более того, современные тенденции в технологии программирования таковы, что данная фаза все чаще рассматривается не только как первая, но и как главная, а иногда и решающая фаза жизненного цикла. Дело в том, что заметные успехи технологии программирования позволяют, при наличии адекватных требований, организовать выполнение других фаз, если и не как автоматический, то, во всяком случае, как управляемый и измеримый процесс. Другими словами, если современные программисты точно знают, что именно нужно сделать, они это, скорее всего, сделают. Верно и обратное: если требования к программному обеспечению не определены, или недостаточно определены, то, скорее всего, успешной разработка не будет. Об этом свидетельствует статистика, собранная при анализе проведения проектов — большая часть причин неуспешного выполнения конкретных проектов была квалифицирована как ошибки или недоработки на фазе анализа требований.
2.3.1. Требования к программному обеспечению
Если мы поймем, что такое требование к программной системе, то сможем определить и то, что делается в фазе «Выявление и анализ требования». Существует большой диапазон решений этой проблемы.
Простое решение. Понятие «требование» не определяется. Разработчик и заказчик полагаются, в этом случае, на здравый смысл. Риск такого решения определяется тем, что бизнес-цели, опыт и квалификация у заказчика и разработчика различны.
Обычное решение. Дать какое-либо, возможно не очень точное или не очень понятное определение. Например,
Требование - это документированное указание потребности или цели пользователей либо условия и возможности, которым должен обладать продукт, чтобы удовлетворить такие возможности или цели.
Или
Требования - это высокоуровневые обобщенные утверждения о функциональных возможностях и ограничениях системы.
Риск этого решения примерно такой же, как и для предыдущего случая.
Стандартное решение. Использовать стандартное определение понятия «Требование». Стандарты IEEE используют следующее определение требований.
Функциональность, необходимая пользователю для решения проблемы или достижения цели.
Функциональность, которая должна быть получена (достигнута) системой или ее компонентами для соответствия контракту, стандарту, спецификации или другим формальным документам.
Документальное представление пп. 1 - 2.
Таким образом, понятие «требование» в этом определении апеллирует либо к пользователям, либо к формальным документам. В любом случае подчеркивается обязательность документального представления.
Например, стандарт ГОСТ 12207 дает другое решение проблемы, в котором понятие «требование» определяется перечислением тех видов требований, которые предъявляются к программному продукту и, практически, не требуют расшифровки.
В соответствии со стандартом ГОСТ 12207 на стадии «Анализ требований» должен быть выполнен анализ требований к программным средствам. Эта работа состоит из следующих задач: разработчик должен установить и документально оформить следующие требования к программным средствам:
функциональные и технические требования, включая производительность, физические характеристики и окружающие условия, под которые должен быть создан программный объект;
требования к внешним интерфейсам программного объекта;
квалификационные требования;
требования безопасности, включая требования, относящиеся к методам эксплуатации, сопровождения, воздействию окружающей среды и травмобезопасности персонала и т. д.
Всего расшифровка понятия «требования» в ГОСТ 12207 занимает несколько страниц.
Сложное решение. Проводится формализация (математическое описание) предметной области и требования формулируются как формальные математически строгие утверждения.
Разумеется, такие требования наилучшим образом описывают программную систему. Однако в промышленных технологиях программирования сложное решение применяется не часто. Дело в том, что формальные математические требования оказываются больше по объему, требуют больше трудозатрат на разработку, и требуют более высокой квалификации разработчиков, чем обычное программирование. Поэтому разработка строгих математических требований к программе оказывается дороже разработки самой программы, причем может быть даже на несколько порядков дороже. В специальных случаях приходится идти на такие затраты, но в типовом программировании для автоматизации бизнес-процессов этого не делают.
