Методы анализа и построения спецификаций

Превосходно, Ватсон, Вы делаете успехи. Правда, Вы упустили все существенные детали, зато хорошо усвоили метод

Артур Конан Дойль. “Приключения Шерлока Холмса”

 

Структурная методология

Перечислим основные методы ведения структурного анализа и рассмотрим подробно некоторые из них:

* Диаграммы потоков данных.

* Диаграммы потоков управления.

* Таблицы решений.

* Сети Петри.

* Диаграммы зависимости.

* Диаграммы декомпозиции.

* Диаграммы функционального моделирования.

Диаграмма потоков данных (Data Flow Diagram — DFD) — информационная модель, основные компоненты которой — различные потоки данных, переносящие информацию от одного модуля к другому.

Компонентами диаграммы потоков данных являются:

* внешние сущности — материальный предмет или физическое лицо, представляющее собой источник или приемник информации;

* процессы — совокупность операций по преобразованию входных данных в выходные в соответствии с определенным алгоритмом;

* накопители данных — абстрактное устройство для хранения информации, которую можно в любой момент поместить в накопитель и через некоторое время извлечь;

* поток данных — механизм, определяющий информацию, передаваемую через некоторое соединение от источника к приемнику.

Модель системы характеризуется как иерархия диаграмм потоков данных, описывающих асинхронный процесс преобразования информации от ее ввода в систему до выдачи пользователю.

Диаграмма функционального моделирования (Structured Analisis and Design Technique — SADT) — модель, состоящая из диаграмм, фрагментов текста и глоссария , имеющих ссылки друг на друга.

В состав диаграммы входят:

* блоки, изображающие активность моделируемой системы;

* дуги, связывающие блоки вместе и изображающие взаимодействия и взаимосвязи между ними. Место соединения дуги с блоком определяет тип интерфейса:

• управляющая информация входит в блок сверху;

• входная информация, подвергающаяся обработке, показана с левой стороны блока;

• результаты (выходная информация) показаны с правой стороны;

• механизм (человек или автоматизированная система), который осуществляет операцию, представляется дугой, входящей в блок снизу.

 

Объектно-ориентированная методология

Перечислим основные методы ведения объектно-ориентированного анализа и рассмотрим подробно некоторые из них.

* КОК-карты (класс-ответственность-кооперация).

* Диаграммы вариантов использования.

* диаграммы классов.

* диаграммы состояний.

* диаграммы деятельности.

* диаграммы последовательности.

Карты класс-ответственность-кооперация (class-responsibility-collsboration) предназначены для описания классов. Первоначально они были созданы для обучения объектному языку (http://c2.com/doc/oopsla89/paper.html).

* Ответственность — это высокоуровневое описание функций, которые выполняет класс. Здесь применяется идея отказаться от описания конкретных элементов данных и процессов и вместо этого несколькими предложениями описать ответственность класса.

* Кооперация — ссылка на другие классы, с которыми необходимо кооперироваться (взаимодействовать) для реализации функций. С помощью коопераций можно получить представление о связях между классами.

Этот метод способствует более оживленному обсуждению модели и концентрирует внимание на ответственностях, позволяя понять особенности деления каждого класса.

Диаграмма классов (class diagram) служит для представления структуры модели системы в терминологии классов объектно-ориентированного программирования. Диаграмма классов не содержит информации о временных аспектах функционирования системы.

Класс служит для обозначения множества объектов, которые обладают одинаковой структурой, поведением и отношением с объектами из других классов. Между классами существуют четыре типа отношений.

* Ассоциации, представляющие некоторое отношение или связь.

* Обобщения, представляющие иерархическое строение и наследование классов.

* Зависимости, когда изменение одного элемента может потребовать изменения другого.

* Агрегации (часть-целое), когда один из классов представляет собой вторую сущность, включающую в себя в качестве составных частей другие сущности.

Объект — отдельный экземпляр класса, который создается на этапе выполнения программы. Объект имеет имя и конкретные значения атрибутов.

Диаграмма объектов (object diagram) может понадобиться, если потребуется рассмотреть взаимосвязи между отдельными объектами.

Обратим внимание на то, что практически во всех объектно-ориентированных подходах есть возможность группировать классы в компоненты более высокого уровня (например, предметные области или пакеты).

Диаграмма вариантов использования (use case diagram) — сценарий, позволяющий лучше понять требования к системе. В состав диаграммы входят:

* вариант использования (use case) — типичное взаимодействие пользователя и системы. Оно охватывает некоторую очевидную для пользователя функцию, решая некоторую дискретную задачу;

* актер (асtor) — любая внешняя по отношению к моделируемой системе сущность, которая взаимодействует с системой и использует ее функции и возможности;

* интерфейс — спецификация параметров системы, которые видимы извне без указания их внутренней структуры.

диаграмма состояний (statechart diagram) отражает модель поведения объектов в реальном или абстрактном мире. Все объекты имеют некоторый срок жизни:

* сначала они появляются или создаются;

* затем эволюционируют, проходя через определенные стадии существования;

* и, наконец, исчезают или умирают.

Для представления этого жизненного цикла предлагается модель состояний, состоящая из:

* множества состояний; состояние — положение объекта, в котором применяется определенный набор правил, линий поведения, предписаний и физических законов;

* множества событий; событие — абстракция инцидента или сигнала в реальном мире, который сообщает о перемещении чего-либо в новое состояние;

* множества правил переходов; правила определяют, какое новое состояние достигается, когда с объектом в данном состоянии происходит некоторое событие;

* множества действий; действие — это деятельность или операция, которая должна быть выполнена экземпляром (объектом), когда он переходит в некоторое состояние.

Диаграмма деятельности (activity diagram) предназначена для детализации особенностей алгоритмической и логической организации, выполняемой системой операций. Каждое действие расчленяется на фундаментальные процессы. Управление на диаграмме осуществляется либо явно — через потоки управления, либо неявно — через определяемые потоки данных. Процессы могут быть объединены в четыре основных группы.

* Процессы доступа, единственная цель которых заключается в получении доступа к элементам одного архива данных объекта.

* Генераторы событий, создающие событие, как результат работы.

* Процессы преобразования, основной целью которых является вычисление или преобразование данных.

* Процессы проверка, которые проверяют условие и исполняют один нескольких условных выводов управления.

Обратим внимание на то, что диаграммы деятельности можно считать частным случаем диаграмм состояний.

Диаграмма последовательности (sequence diagram) предназначена для моделирования еще одной разновидности взаимодействия — взаимодействия времени. С ее помощью отслеживается поведение взаимодействующих групп объектов. Диаграмма имеет два измерения.

* Слева направо, в виде линий жизни каждого объекта, участвующего во взаимодействии. Есть начальный момент времени — верхняя часть диаграммы, где указываются имена объектов.

* Сверху вниз, в виде вертикальных линий, представляющих линию жизни отдельного объекта. Линия жизни — время, в течение которого объект существует в системе.

Чтобы выделить активное состояние объекта, применяется специальное понятие — фокус управления, изображаемый как вытянутый прямоугольник, который становится продолжением линии жизни.

Сообщение — законченный фрагмент информации, отправляемый одним объектом другому. Существуют четыре разновидности сообщений.

* для вызова процедур, выполнения операций или, обозначения вложенных потоков управления.

* для обозначения простого (не вложенного) потока управления.

* для асинхронного сообщения между двумя объектами в некоторой процедурной последовательности.

* Для возврата из вызова процедуры.