Смекни!
smekni.com

Объектно-ориентированный анализ и проектирование деятельности ООО "Формула торговли" (стр. 4 из 5)

У диаграмм кооперации есть два свойства, которые отличают их от диаграмм последовательностей. Первое – это путь. Второе свойство – это порядковый номер сообщения.

Поскольку диаграммы последовательностей и кооперации используют одну и ту же информацию из метамодели UML, они семантически эквивалентны. Это означает, что можно преобразовать диаграмму одного типа в другой без какой-либо потери информации. Это не означает, однако, что на обеих диаграммах представлена в точности одна и та же информация. С другой стороны, на диаграмме последовательностей могут быть показаны возвращаемые сообщения, а на соответствующей диаграмме кооперации они отсутствуют. Таким образом, можно сказать, что диаграммы обоих типов используют одну модель, но визуализируют разные ее особенности.

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

- для моделирования временной упорядоченности потоков управления. С этой целью используют диаграммы последовательностей. При этом внимание акцентируется на передаче сообщений во времени, что бывает особенно полезно для визуализации динамического поведения в контексте прецедентов. Простые итерации и ветвления на диаграммах последовательностей отображать удобнее, чем на диаграммах кооперации;

- для моделирования структурной организации потоков управления. В этом случае нужны диаграммы кооперации. Основное внимание при этом уделяется моделированию структурных отношений между взаимодействующими экземплярами, вдоль которых передаются сообщения. Для визуализации сложных итераций, ветвлений и параллельных потоков управления диаграммы кооперации подходят лучше, чем диаграммы последовательностей.

На одной диаграмме последовательностей можно показать только один поток управления (хотя с помощью нотации UML для итераций и ветвлений можно проиллюстрировать простые вариации). Поэтому, как правило, создают несколько диаграмм взаимодействий, одни из которых считаются основными, а другие описывают альтернативные пути и исключительные условия. Такой набор диаграмм последовательностей можно организовать в пакет, дав каждой диаграмме подходящее имя, отличающее ее от остальных.

На рисунке 6 показана диаграмма последовательности, показывающая последовательность действий при оформлении заказа и продажи товара клиенту.


Рисунок 6 – Диаграмма последовательности действий при оформлении заказа и продажи товара клиенту

На рисунке 7 изображена последовательность действий при проведении сервисного обслуживания кассовых аппаратов.

Рисунок 7 – Диаграмма последовательности действий при проведении сервисного обслуживания

На рисунок 8 показана диаграмма кооперации, которая описывает поток управления, связанный с проведением сервисного обслуживания кассовых аппаратов, причем внимание акцентируется на структурных отношениях между объектами. На диаграмме представлено пять объектов: Клиент, Сервис Центр, Инженер по регламенту, ККТ и Инженер по ремонту. Поток управления пронумерован явно. Действие начинается с того, что Клиент подписывает договор на сервисное обслуживание с Сервис Центром, после чего Сервис Центр выдает акты с данными клиентов Инженеру по регламенту, который едет на место, проводит обслуживание кассовых аппаратов, после чего заполняет журнал учета. Далее, если аппарат неисправен, Инженер по регламенту отвозит его в Сервис Центр, где Инженер по ремонту его ремонтирует. В конце Инженер по регламенту отвозит отремонтированную ККТ обратно Клиенту и Клиент оплачивает услуги в Сервис Центр.

Рисунок 8 – Диаграмма кооперации процесса сервисного обслуживания

2.3.3 Моделирование потоков управления (диаграмма состояний)

С помощью взаимодействий можно моделировать поведение сообщества совместно работающих объектов. Автомат же позволяет моделировать поведение отдельного объекта. Автомат (State machine) описывает поведение в терминах последовательности состояний, через которые проходит объект в течение своей жизни, отвечая на события, а также его реакций на эти события.

Автоматы используются для моделирования динамических аспектов системы. По большей части под этим понимается описание жизни экземпляров класса, прецеденто и системы в целом. Экземпляры могут реагировать на такие события, как сигналы, операции или истечение промежутка времени. Состояние (State) объекта – это ситуация в его жизни, на протяжении которой он удовлетворяет некоторому условию, осуществляет определенную деятельность или ожидает какого-то события. Событие (Event) – это спецификация существенного факта, который происходит во времени и пространстве. В контексте автоматов событие – это стимул, способный вызвать срабатывание перехода. Переход (Transition) – это отношение между двумя состояниями, показывающее, что объект, находящийся в первом состоянии, должен выполнить некоторые действия и перейти во второе состояние, как только произойдет определенное событие и будут выполнены заданные условия. Деятельность (Activity) – это продолжающееся неатомарное вычисление внутри автомата. Действие (Action) – это атомарное вычисление, которое приводит к смене состояния или возврату значения. Диаграмма состояний изображается в виде графа с вершинами и ребрами.

Визуализировать автомат можно двумя способами: выделяя передачу потока управления от одной деятельности к другой (с помощью диаграммы деятельности) или выделяя потенциальные состояния объектов и переходы между ними (с помощью диаграммы состояний). Хорошо структурированные автоматы подобны хорошо структурированным алгоритмам – они эффективны, просты, адаптируемы к разным ситуациям и просты для понимания.

Диаграмма состояний показывает автомат. Ее частной разновидностью является диаграмма деятельности, в которой все или большая часть состояний – это состояния деятельности, а все или большая часть переходов инициируются в результате завершения деятельности в исходном состоянии. Таким образом, при моделировании жизненного цикла объекта полезны как диаграммы деятельности, так и диаграммы состояний. Но если диаграмма деятельности показывает поток управления от деятельности к деятельности, то на диаграмме состояний представлен поток управления от состояния к состоянию.

Диаграммы состояний используются для моделирования динамических аспектов системы. По большей части под этим подразумевается моделирование поведения реактивных объектов. Реактивным называется объект, поведение которого лучше всего характеризуется его реакцией на события, произошедшие вне его собственного контекста. У реактивного объекта есть четко выраженный жизненный цикл, когда текущее поведение обусловлено прошлым. Диаграммы состояний можно присоединять к классам, прецедентам или системе в целом для визуализации, специфицирования, конструирования и документирования динамики отдельного объекта.

Обычно диаграмма состояний включает в себя:

- простые и составные состояния;

- переходы вместе с ассоциированными событиями и действиями.

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

Реактивный, или управляемый событиями, объект – это такой объект, поведение которого лучше всего характеризовать его реакцией на внешние события. Как правило, реактивный объект находится в состоянии ожидания, пока не получит событие, а когда это случается, его реакция зависит от предшествующих событий. После того как объект отреагирует на событие, он снова переходит в состояние ожидания следующего события. Для таких объектов интерес представляют прежде всего устойчивые состояния, события, инициирующие переходы из одного состояния в другое, и действия, выполняемые при смене состояния.

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

Диаграмма состояний для процесса сервисного обслуживания показана на рисунке 9 [1, 2, 3].

Рисунок 9 – Диаграмма состояний для сервисного обслуживания

2.4 Моделирование статического вида системы с точки зрения реализации и развертывания

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

У каждого компонента должно быть имя, отличающее его от других компонентов. Имя – это текстовая строка; взятое само по себе, оно называется простым. К составному имени спереди добавлено имя пакета, в котором находится компонент. Имя компонента должно быть уникальным внутри объемлющего пакета.

Можно выделить три вида компонентов.

Во-первых, это компоненты развертывания (Deployment components), которые необходимы и достаточны для построения исполняемой системы. К их числу относятся динамически подключаемые библиотеки (DLL) и исполняемые программы (EXE).

Во-вторых, есть компоненты – рабочие продукты (Work product components). По сути дела, это побочный результат процесса разработки. Сюда можно отнести файлы с исходными текстами программ и данными, из которых создаются компоненты развертывания. Такие компоненты не принимают непосредственного участия в работе исполняемой системы, но являются рабочими продуктами, из которых исполняемая система создается.

В-третьих, есть компоненты исполнения (Execution components). Они создаются как следствие работы системы.

Диаграммы компонентов – это один из двух видов диаграмм, применяемых при моделировании физических аспектов объектно-ориентированной системы. Они показывают организацию наборов компонентов и зависимости между ними.