- •Разработка сложных программных изделий
- •Раздел 1.Структурные методологии разработки программного обеспечения Глава 1.Структурные методы в программотехнике
- •1.1.Эволюция структурных методов
- •1.2.Основные идеи и принципы структурной методологии
- •1.3.Принципы программотехники
- •1.4.Принципы информационной инженерии
- •1.5.Автоматизация проектирования
- •Глава 2.Структурные методы анализа и проектирования
- •2.1.Структурный системный анализ
- •2.2.Нисходящее проектирование
- •2.3.Структурное проектирование, управляемое потоками данных
- •2.4.Методы проектирования, управляемые структурами данных
- •Глава 3.Структурные методы программирования
- •3.1.Особенности структурных программ
- •3.2.Цели структурного программирования
- •3.3.Программирование с использованием пошаговой детализации
- •3.4.Нисходящее и восходящее программирование
- •Глава 4.Модульное программирование
- •4.1.Основные понятия и определения
- •4.2.Программные модули и схема модуляризации
- •4.3.Оценка качества модульной программы
- •Глава 5.Модели разработки программных изделий
- •5.1.Модель жизненного цикла программного изделия
- •5.2.Модель "возрастающей выдачи"
- •5.3.Модель с использованием прототипа
- •5.4.Спиральная модель
- •Раздел 2.Фазы жизненного цикла программного изделия Глава 6.Определение требований пользователя и требований к программному изделию
- •6.1.Требования пользователя
- •6.2. Требования к программному изделию
- •6.3. Разработка логической модели программного изделия
- •6.4. Классификация требований к программному изделию
- •6.5. Атрибуты требований к программному изделию
- •6.6. Документ Требования к программному изделию
- •6.7 Техническое задание на разработку программного изделия
- •Глава 7.Архитектурное проектирование программного изделия
- •7.1.Общее содержание работ фазы
- •7.2.Виды деятельности
- •7.3.Критерии качества архитектурного проекта
- •Глава 8.Детальное проектирование и изготовление программного изделия
- •8.1.Основные виды деятельности
- •8.2.Кодирование модулей
- •8.3.Тестирование программного изделия
- •8.4.Документирование работ по проектированию программного изделия
- •Глава 9.Отладка программ
- •9.1.Трудности отладки
- •9.2.Средства и методы отладки
- •9.3.Категории ошибок в программном обеспечении
- •9.4.Рекомендации по отладке
- •Глава 10.Эксплуатация и сопровождение программного изделия
- •10.1.Передача программного изделия в эксплуатацию
- •10.2.План испытаний
- •10.3.Работы по эксплуатации и сопровождению программного изделия
- •10.4.Задачи службы сопровождения программного изделия
- •Раздел 3.Управление разработкой программного изделия Глава 11.Управление жизненным циклом программного изделия
- •11.1.Виды деятельности, связанные с управлением жизненным циклом программного изделия
- •11.2.Измерения в программотехнике
- •11.3.Управление проектированием программного изделия
- •11.4.Методы получения оценок для проекта программного изделия
- •11.4.1. Методы функциональной декомпозиции
- •11.4.2. Эмпирические оценочные модели
- •11.5.Управление рисками
- •11.6.Планирование разработки программного изделия
- •Глава 12.Управление качеством программного изделия
- •12.1.Качество программного изделия
- •12.2.Обеспечение качества программного изделия
- •12.3.Измерение качества программного изделия
- •12.4.Управление конфигурацией программного изделия
- •Литература
7.3.Критерии качества архитектурного проекта
Архитектурный проект должен быть понятным, простым для модификации и обеспечивать высокую эффективность программного изделия. Эффективность определяется минимальным использованием имеющихся ресурсов, а простота модификации — незначительными затратами на сопровождение. Для достижения этих целей обычно стремятся упростить форму и функции каждой части архитектурного проекта. Для измерения сложности имеется ряд метрик, которые целесообразно использовать при проектировании. Функциональная простота характеризуется "связностью" отдельных компонент, т.е. внутренней структурой компоненты. При проектировании стремятся максимизировать связность каждой компоненты.
Простота формы достигается в результате:
• минимизации "сцепления" между компонентами;
• обеспечения соответствия функции, выполняемой компонентой, уровню иерархии;
• согласования программного обеспечения со структурами данных;
• максимизации числа компонент, использующих данную компоненту;
• ограничения числа подчиненных компонент;
• удаления дублирования между компонентами путем создания новых компонент.
Архитектурный проект должен быть модульным, с минимальным сцеплением между компонентами и с максимальной связностью внутри каждой из них. Компоненты модульной схемы должны описываться как "черные ящики", скрывая информацию о их внутренней структуре от других компонент. Важно знать, что они делают, а не как они работают.
Для упрощения понимания при описании проектов используются стандарты и соответствующая терминология; для решения одинаковых проблем — одинаковые решения. Для достижения единообразия и сопоставимости описаний разных частей проекта необходимо использовать стандарты на проектирование, CASE-средства и систематические обзоры проектных решений.
Выбор альтернативных решений может явиться хорошим и эффективным средством повышения качества проекта. Для выбора лучшего варианта необходимы соответствующие критерии, которые зависят от типа системы. Например, для системы реального времени важным является время ответа или время реакции системы, а для административной системы — стабильность базы данных. Для оценки альтернативных вариантов или для проверки сделанных допущений может использоваться прототип изделия. Например, для достижения высокой оперативности системы могут быть запрограммированы разные методы доступа к файлам базы данных, а разные методы могут привести к разным подходам в проектировании. Поэтому создание прототипов может оказаться частью процесса проектирования.
В документе Архитектурный проект программного изделия должен быть отражен один выбранный подход к решению поставленной проблемы, но в документе История проекта обычно описываются такие моменты, как необходимость создания прототипа, перечень разработанных программ, критерии выбора альтернатив и причины, определившие выбор варианта.
Документ Архитектурный проект программного изделия — ключевой документ, суммирующий все принятые решения. Он является основой для детального проектирования. Кроме описания всех компонент изделия, он должен содержать ссылки на все внешние интерфейсы. Одно из основных требований к документу — требование полноты охвата всех требований к программному изделию, представленных в предыдущем документе. Для демонстрации полноты в документ должна быть включена таблица перекрестных ссылок между требованиями к программному изделию и компонентами архитектурного проекта. Документ не может быть противоречивым, для чего прибегают к методам и средствам программотехники. Документ Архитектурный проект должен быть достаточно детальным, позволяющим управленцу составить план следующей фазы проектирования. Степень детализации на уровне архитектурного проекта должна также обеспечивать возможность более точной оценки стоимости работ последующих фаз разработки программного изделия.
