Технологии разработки программного обеспечения


диаграммы Use Case


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

Пример диаграммы Use Case, в которой использованы отношения включения и расширения, приведен на рис. 12.35.

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

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

q       для расширяющего элемента Use Case Состояние — это условие запрос состояния;

q       для расширяющего элемента Use Case Снять — это условие запрос снятия;

q       для расширяющего элемента Use Case Захват карты — это условие список подозрений.

Рис. 12.35. Использование включения и расширения

Для расширяемого (базового) элемента Use Case эти условия являются внешними, то есть формируемыми вне его. Иными словами, элементу Use Case Сеанс банкомата ничего не известно об условиях запрос состояния и запрос снятия, а элементам Use Case Снять и Проверить достоверность — об условии список подозрений. Условия расширения являются следствиями событий, происходящих во внешней среде.


Стрелки расширения в диаграмме подписаны. Помимо стереотипа, здесь указаны:
q       в круглых скобках — имена точек расширения;


q       в квадратных скобках — условие расширения.
Описание расширяющего элемента Use Case разделено на сегменты, каждый сегмент обслуживает одну точку расширения базового элемента Use Case.
Количество сегментов расширяющего элемента Use Case равно количеству точек расширения базового элемента Use Case. Первый сегмент расширяющего элемента Use Case начинается с условия расширения, условие записывается только один раз, его действие распространяется и на все остальные сегменты.
Поведение базового элемента Use Case задается внутренним потоком событий, вплоть до точки расширения. В точке расширения возможно выполнение расширяющего элемента Use Case, после чего возобновляется работа внутреннего потока.
Спецификации элементов Use Case рассматриваемой диаграммы имеют следующий вид:
Элемент Use Case Сеанс банкомата

include (Идентификация клиента)
include (Проверка счета)
(диалог возможен)
напечатать заголовок квитанции
(выдача квитанции)
конец сеанса
//включение
//включение
//первая точка расширения
//вторая точка расширения

Расширяющий элемент Use Case Состояние

сегмент
//начало первого сегмента
принять запрос состояния
//условие расширения
отобразить информацию о состоянии счета
сегмент
//вторая точка расширения
конец сеанса

Расширяющий элемент Use Case Снять

сегмент
//начало первого сегмента
принять запрос снятия
//условие расширения
определить сумму
 
(проверка снятия)
//точка расширения
сегмент
//начало второго сегмента
напечатать снимаемую сумму
 
выдать наличные деньги
 

Расширяющий элемент Use Case Захват карты

сегмент
принять список подозрений
проглотить карту
конец сеанса
//начало единственного сегмента
//условие расширения
<


Включаемый элемент Use Case Идентификация клиента

получить имя клиента
include (Проверить достоверность)
получить номер счета клиента
//включение

Включаемый элемент Use Case Проверка счета

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

Включаемый элемент Use Case Проверить достоверность

установить соединение с базой данных клиентов
получить параметры клиента
(проверка) //точка расширения

Опишем возможное поведение модели, задаваемое этой диаграммой.
Актер Клиент инициирует действия базового элемента Use Case Сеанс банкомата. На первом шаге запускается включаемый элемент Use Case Идентификация клиента. Этот элемент Use Case получает имя клиента и запускает элемент Use Case Проверить достоверность, в результате чего устанавливается соединение с базой данных клиентов и получаются параметры клиента.
Если к этому моменту исполняется условие расширения список подозрений, то «срабатывает» расширяющий элемент Use Case Захват карты, карта арестовывается и работа системы прекращается.
В противном случае происходит возврат к элементу Use Case Идентификация клиента, который получает номер счета клиента и возвращает управление базовому элементу Use Case.
Базовый элемент Use Case переходит ко второму шагу работы — вызывает включаемый элемент Use Case Проверка счета, который устанавливает соединение с базой данных счетов и получает состояние и ограничения счета.
Управление опять возвращается к базовому элементу Use Case. Базовый элемент Use Case переходит к первой точке расширения диалог возможен. В этой точке возможно подключение одного из двух расширяющих элементов Use Case.
Положим, что к этому моменту выполняется условие расширения запрос состояния, поэтому запускается первый сегмент элемента Use Case Состояние. В результате отображается информация о состоянии счета и управление передается базовому элементу Use Case. В базовом элементе Use Case печатается заголовок квитанции и обеспечивается переход ко второй точке расширения выдача квитанции.
Поскольку в активном состоянии продолжает находиться расширяющий элемент Use Case Состояние, запускается его второй сегмент — в квитанции печатается информация о состоянии счета.
В последний раз управление возвращается к базовому элементу Use Case — завершается сеанс работы банкомата.
 

Содержание раздела