OpenU.Ru
Спецификация последовательностей действий (варианты последовательностей и ошибочной
последовательности), которые может осуществлять система, подсистема или класс,
взаимодействуя с внешними актантами.
См. actor; classifier.
Семантика
Вариант использования - это связный блок функциональности, которую предоставляет
классификатор (система,
подсистема или класс). Этот
блок описывает последовательности сообщений, которыми обменивается система и
один или несколько внешних пользователей (актантов), а также действия, осуществляемые
при этом системой.
Вариант использования служит для определения некой части поведения классификатора
(которым можно также считать подсистему и даже всю систему целиком), без указания
на его внутреннюю структуру. Каждый вариант использования описывает некую услугу,
которую предоставляет своим пользователям классификатор. Иначе говоря, это некоторый
способ использования классификатора, который виден со стороны. Вариант использования
описывает всю последовательность сообщений, которую начинает пользователь (и
модели - актант), в терминах взаимодействия между пользователем
и классификатором, включая ответы классификатора. К взаимодействию относятся
только коммуникации между системой и актантами. Внутреннее поведение и реализация
скрыты. Все множество вариантов использования какого-либо классификатора или
системы разделяет и полностью описывает его поведение. Каждый вариант использования
представляет собой некую разумную долю функциональности, которая доступна пользователям.
Обратите внимание, что под термином пользователь следует понимать не только
людей, но и компьютеры, а также прочие объекты. Актант представляет собой некую
идеализацию намерений пользователя, а не самого этого пользователя. Один реальный
пользователь может соответствовать нескольким актантам, а один актант может
представлять одно и то же намерение сразу нескольких пользователей.
См. actor.
Вариант использования включает в себя описание основного поведения, осуществляемого
в ответ на запрос пользователя, а также все возможные варианты этого поведения,
например альтернативные последовательности, исключительное поведение и обработка
ошибок. Цель создания варианта использования - описать некую часть функциональности
во всех ее вариантах, включая ошибочные. Все варианты использования классификатора
специфицируют все возможные способы его использования. Для большего удобства
варианты использования можно группировать в пакеты.
Вариант использования является дескриптором, поскольку описывает возможное поведение.
При выполнении варианта использования возникает его экземпляр. Поведение варианта
использования определяется при помощи прикрепленного к нему конечного автомата
или при помощи текстового кода (что равнозначно конечному автомату). Кроме этого,
оно может быть описано в виде неформального текста. Поведение можно проиллюстрировать
(но не специфицировать формально) с помощью множества сценариев. Впрочем, на
ранних стадиях разработки может быть достаточно и этого. Экземпляр
варианта использования - это выполнение варианта использования, которое начинается
после получения первого сообщения от экземпляра актанта. В качестве реакции
на данное сообщение вариант использования выполняет определенную последовательность
действий, например, отправляет сообщения другим экземплярам актанта (не только
тому, который инициировал его выполнение). В свою очередь, эти актанты отправляют
сообщения данному экземпляру варианта использования, и взаимодействие продолжается
до тех пор, пока экземпляр варианта использования не отреагирует на все входящие
сообщения. После этого он заканчивается. Вариант использования является спецификацией
поведения системы (или любого другого классификатора) в целом, в процессе его
взаимодействия с внешними актантами. Внутренние взаимодействия между внутренними
объектами системы, при помощи которых реализуется поведение, описываются кооперацией,
которая реализует вариант использования.
Структура
У варианта использования могут быть черты и отношения.
Черты. Вариант использования является классификатором, а значит, у него есть
атрибуты и операции. Атрибуты используются для обозначения состояния варианта
использования, - иначе говоря, процесс его выполнения. Операция представляет
собой часть работы, которую может выполнить вариант использования. Операцию
нельзя вызывать напрямую, однако, ее можно использовать при описании воздействия
варианта использования на систему. Выполнение операции можно связать с получением
сообщения от актанта. Операции воздействуют на атрибуты варианта использования,
а также косвенно на атрибуты системы или класса, к которому прикреплен вариант
использования.
Ассоциации с актантами. Наличие ассоциации между актантом и вариантом использования
указывает на то, что экземпляр актанта ocуществляет коммуникацию с экземпляром
системы (или классификатора) с целью получения необходимого для себя результата.
Актанты символизируют в модели внешних пользователей данного классификатора.
Таким образом, если классификатор представляет собой систему, то актантом в
данном случае будут внешние пользователи системы. Актанты на уровне подсистем
нижнего уровня могут являться другими классами, которые находятся в той или
общей системе. Один актант может осуществлять коммуникацию с несколькими вариантами
использования, - иначе говоря, актант может запрашивать сразу несколько услуг
системы. Один вариант использования может, и свою очередь, осуществлять коммуникацию
с одним или несколькими актантами в процессе предоставления им своей услуги.
Обратите внимание, что коммуникация между двумя вариантами использования, специфицирующими
одну и ту же систему, невозможна, так как каждый из них полностью описывает
использование этой системы. Они могут взаимодействовать только косвенно (посредством
общих актантов).
Взаимодействие между актантами и вариантами использования можно определить при
помощи интерфейсов. В этом случае интерфейс определяет операции, которые может
поддерживать или использовать актант или вариант использования. При этом различные
интерфейсы, которые предлагает один и тот же вариант использования, могут не
быть несовместными.
Варианты использования связываются между собой с помощью отношений обобщения,
расширения и включения,
Обобщение. Отношение обобщения связывает
более специализированный и более общий варианты использования. Прямой потомок
наследует атрибуты, операции и последовательности поведения сво-
его прямого предка, а также может добавлять к ним свои собственные атрибуты
и операции. Вариант использования-потомок добавляет к поведению варианта использования-предка
инкрементное поведение. Для этого он вставляет в определенные точки последовательности
поведения варианта-предка дополнительные последовательности действий. Кроме
этого, он также может изменять некоторые унаследованные операции и последовательности.
Делать это нужно с большой осторожностью, так как при любом изменении должна
сохраниться суть (intent) прямого предка. Изменить унаследованное поведение
можно также при помощи отношений включения или расширения.
Расширение. Расширение представляет собой один из видов
зависимости. Вариант использования-клиент вносит дополнительное инкрементное
поведение в базовый вариант использования, для чего он вставляет в базовую последовательность
поведения некие дополнительные последовательности действий. Вариант использования-клиент
состоит из одного или нескольких отдельных сегментов последовательности поведения.
Отношение расширения представляет собой список имен точек расширения базового
варианта использования, равное количеству сегментов в варианте использования-клиенте.
Точка расширения - это место (или множество мест) в базовом варианте использования,
предназначенное для внесения расширения. У отношения расширения может быть условие,
которое использует атрибуты варианта использовання-прямого предка. Когда вариант
использования-прямой предок достигает места, на которое ссылается точка расширения,
происходит опенка условия, после чего (если условие истинно) активизируется
соответствующий сегмент поведения варианта использования-клиента. Если условие
отсутствует, то считается, что оно всегда истинно. Если у отношения расширения
есть несколько точек расширения, то условие оценивается только у первой точки,
перед выполнением первого сегмента.
Отношение расширения не предназначено для получения нового варианта использования,
допускающего создание экземпляров. Вместо этого оно неявно вносит дополнительное
поведение в исходный базовый вариант использования, который, в свою очередь,
неявно включает в себя эго расширенное поведение. При этом исходный базовый
вариант использования становится недоступным в своей неизмененной форме. Другими
словами, если вариант использования был расширен, получить новые его экземпляры,
в которых не было бы этих расширений, не удастся. У варианта использования может
быть несколько расширений, все из которых применяются к одному и тому же базовому
варианту использования и могут быть внесены в один экземпляр варианта использования,
при условии, что при этом будут удовлетворены все сторожевые условия. С другой
стороны, расширяющий вариант использования может служить для расширения сразу
нескольких базовых вариантов использования (или одного и того же варианта, но
в различных точках) в их отдельных точках расширения (или списке таких точек).
Если в одной точке расширения возможно несколько различных расширений, то относительный
порядок их выполнения может быть случайным.
Обратите внимание, что в создании экземпляров расширяющего варианта использования
нет необходимости. Что же касается базового варианта, то, напротив, для того
чтобы получить комбинированное поведение (база плюс расширение), нужно создать
его экземпляр. Расширяющий вариант использования может, как допускать, так и
не допускать создания экземпляров, однако в любом случае он не включает в себя
поведение базового варианта.
Включение. Отношение включения указывает на включение последовательности поведения
варианта использования-поставщика в последовательность взаимодействия варианта
использования-клиента. Включение происходит под управлением клиента и в тех
точках, которые он специфицирует в своем описании. Включение представляет собой
зависимость, а не обобщение, поскольку в ней не соблюдается принцип подстановочности
(поставщик не может заменить собой клиента). При этом клиент имеет доступ к
атрибутам базового варианта использования, что позволяет ему получать от него
значения и обмениваться с ним результатами своей работы. Экземпляр варианта
использования выполняет вариант использования-клиент. Как только выполнение
дойдет до точки включения, осуществляется вариант использования-поставшик, чье
выполнение длится до полного завершения. После этого продолжается выполнение
варианта использования-клиента (непосредственно за точкой включения). Атрибуты
варианта использования-поставщика не имеют значений, которые сохраняются между
его выполнениями.
Вариант использования может быть абстрактным. Это означает, что при выполнении
системы создать его прямые экземпляры невозможно. Такой вариант использования
определяет фрагмент поведения, который будет специализирован или включен в какие-либо
конкретные варианты использования, либо же он может представлять собой расширение
базового варианта использования. Если для варианта использования можно создать
экземпляры, то он является конкретным.
Поведение. Последовательность поведения можно описать при помощи конечного автомата,
графа деятельности или текстового кода, написанного на каком-либо из языков
программирования. Для осуществления эффекта выполнения варианта использования
действия конечного автомата или утверждения кода могут вызывать внутренние операции
варианта использования. Кроме того, действия могут также указывать на отправку
сообщений актантам.
Вариант использования можно описать и неформально - при помощи сценариев или
простого текста, однако такие описания недостаточно точны и не годятся для интерпретации
инструментам моделирования.
Действия варианта использования можно специфицировать в терминах вызова операций
того классификатора, который описан данным вариантом использования. Одну и ту
же операцию могут вызывать несколько различных вариантов использования.
Реализация. Реализацию варианта использования
можно специфицировать в виде множества коопераций. Кооперация описывает программную
реализацию варианта использования при помощи объектов того классификатора, который
описан вариантом использования. Каждая из коопераций описывает контекст, существующий
между составляющими той системы, внутри которой происходит одна или несколько
последовательностей взаимодействия. Кооперации и их взаимодействия определяют,
каким образом должны взаимодействовать объекты системы, чтобы реализовать определенное
внешнее поведение варианта использования.
Варианты использования могут специфицировать систему на разных уровнях абстракции.
Так, вариант использования, специфицирующий всю систему, можно разложить на
несколько второстепенных вариантов использования, каждый из который специфицирует
одну услугу подсистемы. Функциональность, которая определяется в варианте использования
высшего уровня, полностью прослеживается в функциональности вариантов использования
нижнего уровня. Таким образом, вариант использования высшего уровня и варианты
использования нижнего уровня описывают одно и то же поведение, но на разных
уровнях абстракции. Для того чтобы обеспечить
поведение высшего варианта использования, нижние варианты должны взаимодействовать.
Взаимодействие вариантов использования нижнего уровня специфицируется с помощью
коопераций варианта использования верхнего уровня и может быть представлено
на диаграммах кооперации. Актанты, присутствующие в варианте использования верхнего
Уровня, появляются и во второстепенных вариантах. Более того, второстепенные
варианты использования являются друг для друга актантами. Эта распределенная
по уровням реализации приводит в итоге к появлению множества вложенных вариантов
использования и коопераций, которые и служат для программной реализации всей
системы.
Нотация
На диаграмме вариант использования изображается
в виде эллипса, внутри которого ставится его имя. Если требуется показать атрибуты
или операции варианта использования, то его можно изобразить как прямоугольник
(символ классификатора) с ключевым словом "use case". На рис. 186
вы видите пример диаграммы использования.
Рис. 186. Вариант использования и актанты
Точка расширения представляет собой именованную
сущность, которая находится внутри варианта использования и служит для описания
тех мест, куда можно вставить последовательности действий Других вариантов использования.
Она обеспечивает косвенность доступа к расширениям из текста последовательности
поведения. Точка расширения ссылается на место (или несколько мест) в последовательности
поведения варианта использования. Эту ссылку можно изменить, независимо от тех
отношений расширения, которые ее используют. У каждой такой точки должно быть
уникальное, в
данном варианте использования, имя. Точки расширения можно перечислить в поле
списка внутри специального раздела варианта использования, озаглавленного extension
points (рис. 187).
Рис. 187. Отношения между вариантами использования
Коммуникация между вариантом использования и актантом изображается при помощи
символа ассоциации - непрерывной линии-маршрута, соединяющей символы варианта
использования и актанта. Ключевое слово "communication" можно опустить,
так как это единственный вид ассоциаций, возможный между актантами и вариантами
использования. Вообще, у линии-маршрута не ставят никаких имен или имен ролей,
поскольку актанты и вариант использования сами уникально определяют данное отношение.
Отношение обобщения изображается при помощи стрелки обобщения - непрерывной
линии, идущей от варианта использования-прямого потомка к варианту использовання-прямому
предку, с наконечником в виде большого полого треугольника, направленного на
вариант использования-предок.
Отношения расширения или включения изображаются с помощью стрелки зависимости,
около которой ставится соответствующее ключевое слово ("extend"
или "include"), - пунктирной линии, наконечник
которой указывает на вариант использования-клиент. У отношения расширения есть
список имен точек расширения (на диаграмме этот список может присутствовать
в скрытой форме).
На рис. 187 изображены различные виды отношений, которые могут существовать
между вариантами использования.
Спецификация поведения. Отношение, существующее между вариантом использования
и его внешними последовательностями взаимодействия, как правило, представлено
в виде гиперссылок на диаграммы последовательности. Гиперссылка невидима, однако
она прослеживается в инструменте для редактирования модели. Кроме того, поведение
специфицируется посредством конечного автомата либо текста, написанного на языке
программирования и прикрепленного к варианту использования. Текст на естественном
языке можно использовать в качестве неформальной спецификации.
См. статью extend, где даны примеры некоторых последовательностей поведения.
Отношение между вариантом использования и ею программной реализацией можно изобразить
с помощью отношения реализации, идущего от варианта использования к кооперации.
Как правило, они находятся в разных моделях, поэтому в данном случае отношение
реализации будет представлено как невидимая гиперссылка. Мы полагаем, что инструмент
моделирования, которым вы пользуетесь, дает возможность просмотреть для варианта
использования его сценарии и/или программную реализацию в виде кооперации.