2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006) (1185732), страница 48
Текст из файла (страница 48)
Варианты• использования и кооперации246Архитектура обсуждаетсяв главе 2.Варианты использованияБазовые понятия247связь расширенияНа заметку. Нахождение минимального набора хорошо структурированных коопераций, удовлетворяющих потоку событий,специфицированному во всех вариантах использования системы, – основная задача системной архитектуры.«extend»Точки расширенияустановитьприоритетОрганизация вариантов использованияДля организации вариантов использования их группируют в пакеты так же, как классы. Кроме того, вы можете организовать вариантыиспользования, определив между ними связи обобщения, включенияи расширения. Эти связи применяются для того, чтобы выделить некоторое общее поведение (извлекая его из других вариантов использования), а также разновидности (помещая такое поведение в другиеварианты использования, которые расширяют данный).ОбобщенияОбобщения между вариантами использования опятьFтаки подобобсуждают- ны обобщениям между классами. Это означает, что дочерний варися в главах 5 ант использования наследует поведение и суть родительского варии 10.анта использования; потомок может добавить или переопределитьповедение родителя, а кроме того, быть подставленным вместо негов любом месте, где тот появляется (как родительский, так и дочернийвариант использования могут иметь конкретные экземпляры).
Например, в банковской системе может существовать вариант использования Validate User (Проверка пользователя), который отвечаетза идентификацию клиента. У него могут быть два специализированных дочерних варианта использования – Check password (Проверкапароля) и Retinal scan (Сканирование сетчатки), каждый из которыхведет себя так же, как Validate User, и может быть применен в любомместе, где появляется последний. При этом оба потомка добавляютсвое собственное поведение: первый проверяет текстовый пароль,а второй – уникальный рисунок сетчатки глаза пользователя. Какпоказано на рис.
17.5, обобщение между вариантами использованияизображается сплошной линией с большой треугольной стрелкой,то есть так же, как обобщение между классами.Связь включения между вариантами использования означает, чтобазовый вариант использования в определенном месте явно включаетв себя поведение некоторого другого . Включенный вариант использования не существует отдельно: он является экземпляром тольковнутри базового, который его содержит. Можно считать, что базовыйвариант использования заимствует поведение включаемого.Благодаря наличию связей включения удается избежать многократного описания одного и того же потока событий, посколькуобщее поведение можно представить в виде отдельного вариантаиспользования, включаемого в базовые.
Связь включения являетПакетыобсуждаютсяв главе 12.связь включенияточки расширения«include»«include»Рис. 17.5. Обобщение, включение и расширениесобой пример делегирования, когда ряд обязанностей системы описывается в одном месте (во включаемом варианте использования),а остальные варианты использования при необходимости вводятэти обязанности в свой набор.СвязиСвязь включения изображается как зависимость со стереотизависимости пом include.
Чтобы показать то место в потоке событий базового варианта использования, куда включается поведение другого варианобсуждата использования, просто напишите include с последующим именемются в главключаемого варианта использования, как это сделано, например,вах 5 и 10,в потоке Track order (Отследить заказ):стереотипы – в глаTrack order:ве 6.Получить и проверить номер заказа;include ‘Validate user’;для каждой части заказазапросить состояние;сообщить общее итоговое состояние пользователю.На заметку. В UML не предусмотрена готовая нотация длявыражения сценариев вариантов использования. Используемый здесь синтаксис заимствован из структурированного естественного языка. Некоторые разработчики полагают,что неформальная нотация даже лучше, поскольку вариантыиспользования не являются жесткими спецификациями, предназначенными для автоматической генерации кода. Другие жепредпочитают формальную нотацию.Варианты использованияТипичные приемы моделированияСвязь расширения между вариантами использования означает,что базовый неявно включает поведение некоторого другого в косвенно указанном месте.
Базовый вариант использования способенсуществовать отдельно, но при некоторых условиях его поведениеможет быть расширено поведением другого варианта использования.Базовый вариант использования можно расширить только вызовом изопределенной точки, – так называемой точки расширения (extensionpoint). Чтобы наглядно представить ситуацию, вообразите, что расширяющий вариант использования «вталкивает» поведение в базовый.Связь расширения используется при моделировании тех частей вариантов использования, которые пользователь видит как необязательные.
Таким образом обязательное поведение отделяется от необязательного. Также вы вправе применять связь расширения, чтобы выделитьнастраиваемые части реализуемой системы; следовательно, системаможет существовать как с различными расширениями, так и без них.СвязьСвязь расширения изображается как зависимость со стереозависимости типом extend.
В дополнительной секции можно перечислить точкирасширения базового варианта использования. Эти точки расшиобсуждарения – простые метки, которые могут появляться в потоке базовоется в глаго варианта использования. В качестве примера рассмотрим потоквах 5 и 10,стереотипы Place order (Разместить заказ):и дополниPlace order:тельныеinclude Validate user ;секции –собрать компоненты пользовательского заказа;в главе 6.установить приоритет: точка расширения;подтвердить заказ для обработки.В этом примере установить приоритет – точка расширения.
Вариант использования может иметь несколько точек расширения,каждая из которых может встречаться не один раз, с обязательнымуказанием их имени. В обычных условиях этот базовый вариантиспользования будет исполняться без учета приоритетности заказа. С другой стороны, если это экземпляр приоритетного заказа,то поток идет, как описано выше, но в точке расширения установитьприоритет вставлен расширяющий вариант использования Place rushorder (Разместить срочный заказ), после которого поток продолжаетисполнение.
Если есть множество точек расширения, то в каждуюпросто вставляется расширяющий вариант использования.Прочие средства248На заметку. Организация вариантов использования, предусматривающая извлечение общего поведения (через связьвключения) и разделение вариаций (через связь расширения) – важная составляющая создания простого, сбалансированного и понятного набора вариантов использования системы.Атрибутыи операцииобсуждаются в главе 4,автоматы –в главе 22.249Варианты использования – это классификаторы, поэтому онимогут иметь атрибуты и операции, которые можно изображать также, как в классах.
Можно представить атрибуты в виде объектов,находящихся внутри варианта использования и необходимых дляописания его внешнего поведения, а операции – как действия системы, которые нужны для описания потока событий. Эти объектыи операции могут использоваться в диаграммах взаимодействиядля спецификации поведения варианта использования.Будучи классификаторами, варианты использования допускают присоединение к ним автоматов. Вы можете применять автоматы в качестве дополнительного средства описания поведения, представленного вариантом использования.Типичные приемы моделированияМоделирование поведения элементаСистемыи подсистемы обсуждаютсяв главе 32,классы –в главах 4 и 9.Наиболее общий случай применения вариантов использования –это моделирование поведения элемента (системы в целом, подсистемы или класса). В такой ситуации необходимо сосредоточитьвнимание на том, что элемент делает, а не на том, как он это делает.Подобное применение вариантов использования к элементамважно по трем причинам.
ВоFпервых, вы позволяете экспертам в предметной области специфицировать внешнее представление элементатак, чтобы разработчикам было этого достаточно для конструирования его внутреннего представления. Обеспечивается возможностьобщения экспертов в предметной области с конечными пользователями и разработчиками. ВоFвторых, разработчики получают возможность выработать определенный подход к элементу и понятьего. Система, подсистема или класс подчас сложны и включаютмножество операций и других частей.
Специфицируя вариант использования элемента, вы помогаете его пользователям постичь егосамым непосредственным образом, в соответствии с тем, как ониего собираются его применять. В противном случае пользователи вынуждены самостоятельно исследовать способы примененияэлемента. ВFтретьих, варианты использования служат базой длятестирования каждого элемента в процессе его разработки.