Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по CASE-технологиям 2.doc
Скачиваний:
209
Добавлен:
27.03.2015
Размер:
1.04 Mб
Скачать

Основной поток событий для варианта использования Снять деньги со счета

    1. Вариант использования начинается, когда клиент вставляет свою карточку в АТМ.

    2. АТМ выдаёт приветствие и предлагает клиенту ввести свой персональный идентификационный номер.

    3. Клиент вводит номер.

    4. АТМ подтверждает введённый номер. Если номер не подтверждается, выполняется альтернативный поток событий А1.

    5. АТМ выводит список доступных действий:

    • положить деньги на счёт

    • снять деньги со счёта

    • перевести деньги

    1. Клиент выбирает пункт «Снять деньги».

    2. АТМ запрашивает, сколько денег нужно снять.

    3. Клиент вводит требуемую сумму.

    4. АТМ определяет, достаточно ли на счету денег. Если денег недостаточно, выполняется альтернативный поток A2. Если во время подтверждения суммы возникают ошибки, выполняется поток ошибок E1.

    5. АТМ вычитает требуемую сумму из счёта клиента.

    6. АТМ выдаёт клиенту требуемую сумму наличными.

    7. АТМ возвращает клиенту его карточку.

    8. Вариант использования завершается.

2. Щелкните правой кнопкой мыши на варианте использования Снять деньги со счета. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию). Перейдите на вкладку Files (Файлы). Щелкните правой кнопкой мыши в белой области спецификации и в открывшемся меню выберите пункт Insert File (Вставить файл). Укажите файл OrderFlow.doc и нажмите на кнопку Open (Открыть), чтобы прикрепить файл к варианту использования.

Создание пакетов и группировка элементов модели

1. Щелкните правой кнопкой мыши на представлении вариантов использования (Use Case View). В открывшемся меню выберите пункт New > Package (Создать > Пакет). Назовите новый пакет Варианты использования.

2. Повторив п.1, создайте пакет Действующие лица.

3. В браузере перетащите варианты использования в пакет Варианты использования.

4. В браузере перетащите действующих лиц в пакет Действующие лица.

Б

Рис.2.9. Пакеты системы АТМ

раузер должен теперь иметь вид, показанный на рис. 2.9.

2.2. Диаграммы взаимодействия

Диаграммы взаимодействия (interaction diagrams) предназначены для моделирования динамических аспектов системы. Эти диаграммы показывают взаимодействие, включающее набор объектов и их отношений, а также пересылаемые между объектами сообщения [1], [4], [10], [11].

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

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

На диаграмме последовательности объекты, участвующие во взаимодействии, помещаются на вершине диаграммы, вдоль горизонтальной оси. Обычно слева размещается объект, инициирующий взаимодействие, а справа ― объекты по возрастанию подчиненности. Сообщения, посылаемые и принимаемые объектами, помещаются вдоль вертикальной оси в порядке возрастания времени от вершины к основанию диаграммы. Используются те же синтаксис и обозначения синхронизации, что и в диаграммах кооперации. Таким образом, обеспечивается простое визуальное представление потока управления во времени.

Обозначение объекта (object) показано на рис. 2.10.

Рис. 2.10. Обозначение объекта

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

ИмяОбъекта : ИмяКласса

Синтаксис представления свойства имеет вид

Имя : Тип = Значение

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

Линия жизни объекта (object lifeline) — это вертикальная пунктирная линия, которая обозначает период существования объекта. Большинство объектов существуют на протяже­нии всего взаимодействия, их линии жизни тянутся от вершины до основания диа­граммы. Впрочем, объекты могут создаваться в ходе взаимодействия. Их линии жизни начинаются с момента приема сообщения «create». Кроме того, объекты могут уничтожаться в ходе взаимодействия. Их линии жизни заканчиваются с момента приема сообщения «destroy» (см. рис. 2.11).

Рис. 2.11. Создание и уничтожение объекта

Фокус управления (focus of control) — это высокий тонкий прямоугольник, отображающий период времени, в течение которого объект выполняет действие (свою или подчиненную процедуру). Вершина прямоугольника отмечает начало действия, а основание ― его завершение. Момент завершения может маркироваться сообщением возврата, которое отображается пунктирной стрелкой. Можно показать вложение фокуса управления (например, рекурсивный вызов собственной операции). Для этого вто­рой фокус управления рисуется немного правее первого (см. рис. 2.12).

Рис. 2.12. Вложение фокусов управления

Для отображения «условности» линия жизни может быть разделена на несколь­ко параллельных линий жизни. Каждая отдельная линия соответствует условному ветвлению во взаимодействии. Далее в некоторой точке линии жизни могут быть снова слиты (см. рис. 2.13).

Рис. 2.13. Параллельные линии жизни

Ветвление показывается множеством стрелок, идущих из одной точки. Каждая стрелка отмечается сторожевым условием (guard condition) (см. рис. 2.14).

Рис. 2.14. Ветвление потока управления на диаграмме последовательности

Диаграммы кооперации (сотрудничества) отображают взаимодействие объектов в процессе функционирования системы. Такие диаграммы моделируют сценарии поведения системы. Здесь представляется вся та информация, которая была на диаграмме последовательности, но кооперативная диаграмма по-другому описывает поток событий. Из неё легче понять отношения между объектами, однако труднее определить последовательность событий. По этой причине часто для сценария создают диаграммы обоих типов.

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

Связь (link) ― это путь для пересылки сообщения, который может быть снабжен характеристикой видимости. Она проставляется как стандартный стереотип рядом с дальним концом связи. В языке UML предусмотрены следующие стандартные стереотипы видимости:

  • <<global>> ― объект-поставщик находится в глобальной области определения;

  • <<local>> ― объект-поставщик находится в локальной области определения объекта-клиента;

  • <<parameter>> ― объект-поставщик является параметром операции объекта-клиента;

  • <<self>> ― один и тот же объект является и клиентом, и поставщиком.

Сообщение (message) ― это спецификация передачи информации между объектами в ожидании того, что будет обеспечена требуемая деятельность. Прием сообщения рассматривается как событие. Кроме того, объект может посылать сообщение самому себе ― рефлексивное сообщение (см. рис.2.14).

Для полной записи сообщений в языке UML принят следующий синтаксис:

ВозвращаемаяВеличина := ИмяСообщения (Аргументы)

Результатом обработки сообщения обычно является действие. В языке UML моделируются следующие разновидности действий:

  • вызов ― в объекте запускается операция;

  • возврат ― возврат значения в вызывающий объект;

  • посылка (send) ― в объект посылается сигнал;

  • создание ― создание объекта выполняется по стандартному сообщению <<create>>;

  • уничтожение ― уничтожение объекта выполняется по стандартному сообщению <<destroy>>.

Когда объект посылает сообщение другому объекту (делегируя некоторое действие получателю), объект-получатель, в свою очередь, может послать сообщение в тре­тий объект, и т. д. Так формируется поток сообщений — последовательность уп­равления. Очевидно, что сообщения в последовательности должны быть пронуме­рованы. Номера записываются перед сообщениями, направления сообщений указываются стрелками (размещаются над линиями связей).

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

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

(а) (б)

Рис. 2.8. Обозначение синхронных (а) и асинхронных (б) сообщений

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

Итерация представляет повторяющуюся последовательность сообщений. После номера сообщения итерации добавляется выражение

*[i:=1..n]

Оно означает, что сообщение итерации будет повторяться заданное количество (n) раз.

Для моделирования ветвления после номера сообщения добавляется выражение условия, например: [х>0]. Сообщение альтернативной ветви помечается таким же номером, но с другим условием: [х<=0].

Таким образом, для формирования диаграммы кооперации выполняются сле­дующие действия:

  1. отображаются объекты, которые участвуют во взаимодействии;

  2. рисуются связи, соединяющие эти объекты;

  3. связи помечаются сообщениями, которые посылают и получают выделенные объекты.

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

В варианте использования Снять деньги со счета из примера АТМ (автоматический банкомат) имеется несколько альтернативных потоков. Это значит, что для данного варианта использования создается несколько диаграмм взаимодействия. В результате на одной диаграмме будет показано, что происходит, когда всё в порядке. На других будет отображен ход событий в альтернативных потоках: что произойдет, если клиент введет неправильный идентификационный номер, если денег на его счету меньше, чем он хочет снять, и т. д.

Построим диаграмму последовательности, показывающую, как клиент банка Джексон снимает со счёта $100 с помощью АТМ (см. рис. 2.11). Участвующие в потоке объекты нарисованы в прямоугольниках в верхней части диаграммы. Объект действующего лица, Джексон, инициирующий вариант использования, показан в верхнем левом углу диаграммы.

Диаграммы взаимодействия можно создавать в представлении вариантов использования или в логическом представлении браузера.

Упражнение

Создайте диаграмму последовательности (см. рис. 2.11) и кооперативную диаграмму (см. рис. 2.12), которые отражают процесс снятия Джексоном со своего счета $100 в системе АТМ.