III. Анализ требований и проектирование
Анализ и проектирование — два достаточно близких и тесно связанных процесса. Они выполняют общую задачу, результатом которой должно стать четкое представление о системе, на основе которого будет создан програмный код. Поэтому мы будем их рассматривать совместно, проводя разделение по методологиям — анализ и проектирование на основе структурной методологии и на основе объектно-ориентированной методологии.
Анализ требований — процесс жизненного цикла программы, во время которого требования заказчика уточняются, формализуются и документируются.
Проектирование – процесс жизненного цикла программы, во время которой исследуется ее структура и взаимосвязи элементов. Проектирование, как правило, является итерационным процессом.
Проектирование должно проводится на двух уровнях:
Проектирование архитектуры (проектирование «в большом»);
Детальное проектирование (проектирование в «малом»).
Проектирование архитектуры (проектирование «в большом»)
Проектирование архитектуры включает следующие основные методы:
Метод нисходящего проектирования;
Метод восходящего проектирования;
Метод расширения ядра.
В случае структурной методологии в качестве модульной структуры программы принято использовать древовидную структуру. В узлах такого дерева размещаются программные модули, а направленные дуги показывают статическую подчиненность модулей.
Метод нисходящего проектирования представляет собой подход функциональной декомпозиции на основе двух стратегий:
пошагового уточнения – при котором на каждом следующем этапе декомпозиции определяются модули очередного, более низкого уровня.
анализа сообщений – при котором анализируются потоки данных, обрабатываемые модулями.
Метод восходящего проектирования – подход, при котором в первую очередь определяются вспомогательные модули, которые потребуются для проектируемой программы.
Метод расширения ядра – подход, при котором основное внимание уделяется выявлению множества вспомогательных модулей, а не определению функции всей программы в целом.
Проектирование архитектуры для объектно-ориентированной методологии включает в себя основные методы:
метод проектирования предметных областей;
метод наведения мостов.
Метод проектирования предметных областей заключается в выделении предметной области системы с точки зрения пользователя.
Метод наведения мостов заключается в том, что одна предметная область использует механизмы и возможности, обеспечиваемые другой предметной областью. Мост между двумя предметными областями представляет набор предложений (с точки зрения пользователя) и набор требований (с точки зрения исполнителя).
Проектирование модулей (проектирование «в малом»)
Основные методы проектирования модулей для структурной методологии:
диаграммы «сущность – связь»;
структурные карты;
диаграммы деятельности;
диаграммы Варнье-Орра;
Блок-схемы;
Схемы экранов;
Псевдокод.
Объектно-ориентированная методология
Перечислим основные методы проектирования модулей для объектно-ориентированной методологии
Диаграммы кооперации.
Диаграммы компонентов
Диаграммы развертывания.
Диаграмма кооперации предназначена для графического представления всех структурных отношений между объектами, участвующими во взаимодействии. Кооперация служит для обозначения множества взаимодействующих с определенной целью объектов. Кооперация может быть представлена на двух уровнях.
Спецификации, показывая роли классификаторов и ассоциаций в рассматриваемом взаимодействии.
Примеров, указывая экземпляры и связи, образующие отдельные роли в кооперации.
Объекты на диаграмме располагаются в виде вершин графа. Связи соединяют вершины дугами. Связи могут быть аннотированы сообщениями, которые объекты принимают и посылают.
Диаграмма компонентов описывает особенности физического представления системы. Она позволяет определить архитектуру разрабатываемой системы, устанавливая зависимости между компонентами.
Диаграмма развертывания (применения, размещения) отображает физические взаимосвязи между программными и аппаратнымикомпонентами системы.
Методы анализа и построения спецификаций
Структурная методология
Перечислим основные методы ведения структурного анализа:
Диаграммы потоков данных.
Диаграммы потоков управления.
Таблицы решений.
Сети Петри;
Диаграммы зависимости.
Диаграммы декомпозиции.
Диаграммы функционального моделирования.
Диаграмма потоков данных— информационная модель, основные компоненты которой — различные потоки данных, переносящие информацию от одного модуля к другому.
Компонентами диаграммы потоков данных являются:
внешние сущности — материальный предмет или физическое лицо, представляющее собой источник или приемник информации;
процессы — совокупность операций по преобразованию входных данных в выходные в соответствии с определенным алгоритмом;
накопители данных — абстрактное устройство для хранения информации, которую можно в любой момент поместить в накопитель и через некоторое время извлечь;
поток данных — механизм, определяющий информацию, передаваемую через некоторое соединение от источника к приемнику.
Модель системы характеризуется как иерархия диаграмм потоков данных, описывающих асинхронный процесс преобразования информации от ее ввода в систему до выдачи пользователю.
Диаграмма функционального моделирования — модель, состоящая из диаграмм, фрагментов текста и глоссария, имеющих ссылки друг на друга.
В состав диаграммы входят:
блоки, изображающие активность моделируемой системы;
дуги, связывающие блоки вместе и изображающие взаимодействия и взаимосвязи между ними. Место соединения дуги с блоком определяет тип интерфейса:
управляющая информация входит в блок сверху;
входная информация, подвергающаяся обработке, показана с левой стороны блока;
результаты (выходная информация) показаны с правой стороны;
механизм (человек или автоматизированная система), который осуществляет операцию, представляется дугой, входящей в блок снизу.
Объектно-ориентированная методология
Перечислим основные методы ведения объектно-ориентированного анализа
КОК-карты (класс-ответственность-кооперация)
Диаграммы вариантов использования.
Диаграммы классов.
Диаграммы состояний.
Диаграммы деятельности.
Диаграммы последовательности.
Карты класс-ответственностъ-кооперация предназначены для описания классов. Первоначально они были созданы для обучения объектному языку.
Ответственность — это высокоуровневое описание функций, которые выполняет класс. Здесь применяется идея отказаться от описания конкретных элементов данных и процессов и вместо этого несколькими предложениями описать ответственность класса.
Кооперация — ссылка на другие классы, с которыми необходимо кооперироваться для реализации функций. С помощью коопераций можно получить представление о связях между классами.
Этот метод способствует более оживленному обсуждению модели и концентрирует внимание на ответственностях, позволяя понять особенности поведения каждого класса.
Диаграмма классов служит для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования. Диаграмма классов не содержит информации о временных аспектах функционирования системы.
Класс служит для обозначения множества объектов, которые обладают одинаковой структурой, поведением и отношением с объектами из других классов. Между классами существуют четыре типа отношений.
Ассоциации, представляющие некоторое отношение или связь.
Обобщения, представляющие иерархическое строение и наследование классов.
Зависимости, когда изменение одного элемента может потребовать изменения другого.
Агрегации (часть-целое), когда один из классов представляет собой некоторую сущность, включающую в себя в качестве составных частей другиесущности.
Объект — отдельный экземпляр класса, который создается на этапе выполнения программы. Объект имеет имя и конкретные значения атрибутов.
Диаграмма объектов может понадобиться, если требуется рассмотреть взаимосвязи между отдельными объектами.
Обратим внимание на то, что практически во всех объектно-ориентированных подходах есть возможность группировать классы в компонент более высокого уровня (например, предметные области или пакеты).
Диаграммы вариантов использования — сценарий, позволяющий лучше понять требования к системе. В состав диаграммы входят:
вариант использования — типичное взаимодействие пользователя системы. Оно охватывает некоторую очевидную для пользователя функцию, решая некоторую дискретную задачу;
актер — любая внешняя по отношению к моделируемой системесущность, которая взаимодействует с системой и использует ее функции возможности;
интерфейс— спецификация параметров системы, которые видимы извне без указания их внутренней структуры.
Диаграмма состояний отражает модель поведения объектовв реальном или абстрактном мире. Все объекты имеют некоторый срок жизни:
сначала они появляются или создаются;
затем эволюционируют, проходя через определенные стадии существования;
и, наконец, исчезают или умирают.
Для представления этого жизненного цикла предлагается модель состояний, состоящая из:
множества состояний; состояние — положение объекта, в котором применяется определенный набор правил, линий поведения, предписаний и физических законов;
множества событий; событие — абстракция инцидента или сигнала в реальном мире, который сообщает о перемещении чего-либо в новое состояние;
множества правил переходов: правила определяют, какое новое состояние достигается, когда с объектом в данном состоянии происходит некоторое событие;
множества действий; действие — это деятельность или операция, которая должна быть выполнена экземпляром, когда он переходит в некоторое состояние.
Диаграмма деятельности предназначена для детализации особенностей алгоритмической и логической организации, выполняемойсистемой операций. Каждое действие расчленяется на фундаментальные процессы. Управление на диаграмме осуществляется либо явно — через потоки управления, либо неявно — через определяемые потоки данных. Процессы могут быть объединены в четыре основных группы.
Процессы доступа, единственная цель которых заключается в получении доступа к элементам одного архива данных объекта.
Генераторы событий, создающие событие, как результат работы.
Процессы преобразования, основной целью которых является вычисление или преобразование данных.
Процессы проверки, которые проверяют условие и исполняют один из нескольких условных выводов управления.
Диаграммы деятельности можно считать частным случаем диаграмм состояний.
Диаграмма последовательности предназначена для моделирования еще одной разновидности взаимодействия — взаимодействия вовремени. С ее помощью отслеживается поведение взаимодействующих, групп объектов. Диаграмма имеет два измерения.
Слева направо, в виде линий жизни каждого объекта, участвующего во взаимодействии. Есть начальный момент времени — верхняя часть диаграммы, где указываются имена объектов.
Сверху вниз, в виде вертикальных линий, представляющих линию жизни отдельного объекта. Линия жизни — время, в течение которого объект существует в системе.
Чтобы выделить активное состояние объекта, применяется специальное понятие — фокус управления, изображаемый как вытянутый прямоугольник, который становится продолжением линии жизни.
Сообщение— законченный фрагмент информации, отправляемый однимобъектом другому. Существуют четыре разновидности сообщений.
Для вызова процедур, выполнения операций или обозначения отдельных вложенных потоков управления.
Для обозначения простого (не вложенного) потока управления.
Для асинхронного сообщения между двумя объектами в некоторой процедурной последовательности.
Для возврата из вызова процедуры.
Подходы к ведению анализа и проектирования
Комбинации структурных методов образуют структурные подходы. Можно выделить три группы структурных подходов на основе порядка построения модели [Калянов 1996].
Процедурно-ориентированные подходы, в которых первично проектирование функциональных компонентов.
Подходы, ориентированные на данные. Для таких подходов первичны входные и выходные данные, а функциональные (процедурные) компоненты вторичны.
Информационно-ориентированные подходы. Эта группа близка к предыдущей, но отличается тем, что работа ведется с неиерархическими структурами данных.
Можно выделить два класса целевых систем — информационные системы (управляемые данными) и системы реального времени (управляемые событиями). Информационные системы работают с большим объемом входных данных сложной структуры. Системы реального времени работают с малым количеством входных данных простой структуры. Как правило, для проектирования систем реального времени применяются подходы, базирующиеся на подходах для информационных систем с расширением их дополнительными диаграммными техниками.
Как правило, подходы используют две основные группы средств моделирования [Вендров 2000].
Диаграммы, иллюстрирующие функции, которые система должна выполнять, и связи между функциями, например, диаграммы потоков данных и функционального моделирования.
Диаграммы, моделирующие данные и их отношения. Например, диаграммы "сущность-связь".
Перечислим основные подходы к ведению структурного анализа и проектирования и рассмотрим подробно некоторые из них.
Подход Йордона и ДеМарко.
Подход Гейна-Сарсона.
Подход Константайна.
Подход Джексона.
Подход Варнье-Орра.
Подход Мартина.
Подход промышленной технологии DATARUN.
Подход промышленного метода Oracle.
Подход Йордона и ДеМарко является процедурно-ориентированным и наиболее часто используемым (по статистике—в 36,5% случаев) [Калянов 1996]. Подход фокусирует внимание на потоках данных.
В нем интегрированы следующие средства:
диаграммы потоков данных;
словари данных, являющиеся каталогами всех элементов данных, присутствующих в диаграммах потоков данных;
мини-спецификации обработки, описывающие процессы нижнего уровня. Фактически, мини-спецификации представляют собой алгоритмы описания задач, выполняемых процессами.
Подход Гейна-Сарсона очень близок к предыдущему. Статистика утверждает, что он применяется в 20,2% случаев [Калянов 1996]. Главной отличительной чертой подхода является наличие этапамоделирования данных, определяющего содержимое хранилищ данных в диаграммах потоков данных в третьей нормальной форме. Этот этап включает:
построение списка элементов данных, располагающихся в каждом хранилище данных;
анализ отношений между данными и построение соответствующей диаграммы связей между элементами данных;
представление всей информации по модели в виде связанных нормализованных таблиц.
Подход Джексона ориентирован на данные. Базовая процедура проектирования включает четыре этапа [Калянов 1996] [Кинг 1991].
Этап проектирования данных. Построение системной сетевой диаграммы, демонстрирующей все хранилища, источники и стоки данных в программе. Представление каждой входной и выходной структуры данных древовидной структурной диаграммой.
Этап проектирования программ. Формирование структуры программыкомбинированием структур данных. Идентификация всех связей между компонентами структур данных.
Этап проектирования операций. Построение списка операций, необходимых для продуцирования выходных структур данных из входных. Назначение операций компонентам структуры, программы.
Этап проектирования текстов. Трансляция построенной модели программы в текстовый вид с добавлением ряда логических условий для управления выполнением циклов и выбором данных.
Объектно-ориентированная методология
Перечислим основные подходы к ведению объектно-ориентированного анализа и проектирования и рассмотрим подробно некоторые из них.
Подход на основе языка UML.
Подход Шлеер-Меллора.
Подход Гради Буча.
Подход Джеймса Рамбо (ОМТ)
Подход Ивара Якобсона (OOSE).
Подход на основе универсального языка моделирования UML (Unified Modeling Language) включает следующие основные типы диаграмм:
диаграммы вариантов использования;
диаграммы классов;
диаграммы состояний;
три диаграммы поведения (две последние из них также называют диаграммами взаимодействия):
диаграммы деятельности;
диаграммы последовательности;
диаграммы кооперации;
две диаграммы реализации:
диаграммы компонентов;
диаграммы развертывания.
Подход на основе языка UML состоит из четырех основных фаз разработки, причем работа с диаграммами ведется в основном на второй и третьей фазах.
Во время второй фазы — фазы исследования — должна быть создана модель предметной области. Для этой цели наиболее естественно подходят следующие типы диаграмм:
диаграммы вариантов использования;
диаграммы классов;
диаграммы деятельности.
На третьей фазе — построения — продолжается итеративная работа с такими типами диаграмм, как:
диаграммы классов;
диаграммы деятельности.
К ним добавляются следующие типы диаграмм, которые определяют взаимодействие:
диаграммы последовательности;
диаграммы кооперации.
В случае сложного поведения системы разрабатывается еще одна группа диаграмм: Диаграммы состояний.
Существует несколько рекомендаций, связанных с данным подходом:
не следует стремиться к построению диаграмм всей системы;
80% проектов можно воплотить, используя 20% средств языка UML. Как правило, наиболее часто используют диаграммы классов и диаграмм деятельности.
Подход Шлеер-Меллора использует три группы средств для создания модели предметной области.
Информационное моделирование — для определения отношений междуданными (информацией). При этом используется один тип диаграмм: Диаграммы классов.
Моделирование состояний — для определения, зависящего от времени поведения системы. Используются диаграммы состояний.
Моделирование процессов — для определения функций, которые система должна выполнить. Используются:
диаграммы деятельности;
диаграммы последовательности.
Для анализа больших предметных областей используются диаграммы, по смыслу близкие к следующим диаграммам языка
диаграммы кооперации;
диаграммы компонентов;
диаграммы развертывания.
Подход предлагает механизм поддержки моделей состояний. Для этого вводятсячетыре архитектурных класса.
Переход, описывающий каждый переход для всех моделей состояний программе.
Конечная модель состояний, связывающая все экземпляры перехода, которые составляют одну модель состояний.
Активный экземпляр. Это абстрактный класс, из которого все экземпляры имеющие модель состояний, наследуют их текущее состояние.
Таймер, обеспечивающий механизм функционирования таймеров на основе средств, доступных для хранения следа времени.