Язык UML. Руководство пользователя

       

Стереотипы


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

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

Пользуясь такой методикой разработки, как Рациональный Унифицированный

Процесс (Rational Unified Process, см. "Приложение С"), вы должны будете оперировать классами границ, управления и сущностей. Здесь и возникает необходимость в стереотипах. Приписывая стереотип таким элементам, как узел или класс, вы по сути дела расширяете UML, создавая новый строительный блок, который напоминает существующий, но обладает новыми специальными свойствами (каждый стереотип может содержать свой набор помеченных значений), новой семантикой (у каждого стереотипа могут быть собственные ограничения) и нотацией (каждому стереотипу может быть присвоена пиктограмма).

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


Рис. 6.5 Стереотипы

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


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

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

Обычно стереотипный элемент изображается следующим образом: имя стереотипа размещается над именем элемента и заключается в двойные кавычки, например "trace". Co стереотипом может быть ассоциирована пиктограмма, используемая как альтернативная форма визуализации данного элемента. Хотя в самом UML такие пиктограммы ни для одного стереотипа не заданы, в таблице все же приводятся некоторые общепринятые изображения.



Стереотип/ ключевое слово Символ, к которому он применим Назначение
actor Класс (class) Определяет связанное множество ролей, которые играет пользователь прецедента при взаимодействии с ним
access Зависимость (dependency) Сообщает, что открытое содержание целевого пакета доступно в пространстве имен исходного пакета
association Концевая точка связи (link end) Указывает, что соответствующий объект видим ассоциацией
become Сообщение (message) Целевой объект совпадает с исходным, но в более поздний момент времени. При этом, возможно, у него будут другие значения, состояния или роли
bind Зависимость (dependency) Исходный класс инстанцирует целевой шаблон с данными фактическими параметрами
call Зависимость (dependency) Исходная операция вызывает целевую
copy Сообщение (message) Целевой объект - это точная, но независимая копия исходного
create Событие (event), сообщение (message) Целевой объект создан в результате события или сообщения
derive Зависимость (dependency) Исходный объект может быть вычислен по целевому
destroy Событие (event), сообщение (message) Целевой объект уничтожен в результате события или сообщения
document
Компонент (component) Компонент представляет документ
enumeration Класс (class) Определяет перечислимый тип, включая его возможные значения как набор идентификаторов
exception Класс (class) Определяет событие, которое может быть возбуждено или перехвачено операцией
executable
Компонент (component) Описывает компонент, который может быть выполнен в узле
extend Зависимость (dependency) Целевой вариант использования расширяет поведение исходного в данной точке расширения
facade Пакет (package) Пакет, который является лишь представлением другого пакета
file
Компонент (component) Компонент, который представляет документ, содержащий исходный код или данные
framework Пакет (package) Пакет, состоящий в основном из образцов (паттернов)
friend Зависимость (dependency) Исходный класс имеет специальные права видимости в целевом
global Концевая точка связи (link end) Соответствующий объект видим, поскольку принадлежит объемлющей области действия
import Зависимость (dependency) Открытое содержание целевого пакета становится частью плоского пространства имен исходного пакета, как если бы оно было объявлено непосредственно в нем
implementation Обобщение (generalization) Потомок наследует реализацию родителя, но не открывает и не поддерживает его интерфейсов, вследствие чего не может быть подставлен вместо родителя
implementationClass Класс (class) Реализация класса на некотором языке программирования
include Зависимость (dependency) Исходный прецедент явно включает поведение другого прецедента в точке, определяемой исходным
instanceOf Зависимость (dependency) Исходный объект является экземпляром целевого классификатора
instantiate Зависимость (dependency) Операции над исходным классом создают экземпляры целевого класса
interface Класс (class) Описывает множество операций, определяющих, что может делать класс или компонент
invariant Ограничение (constraint) Ограничение, которое всегда должно выполняться для ассоциированного элемента
library
Компонент (component) Статическая или динамическая объектная библиотека
local Концевая точка связи (link end) Соответствующий объект видим, так как находится в локальной области действия
metaclass Классификатор (classifier) Классификатор, все объекты которого являются классами
model Пакет (package) Описывает семантически замкнутую абстракцию системы
parameter Концевая точка связи (link end) Соответствующий объект видим, так как является параметром
postcondition Ограничение (constraint) Ограничение, которое должно выполняться после выполнения операции
powertype Класс (class) Классификатор, все объекты которого являются потомками данного родителя
Зависимость (dependency) Говорит, что целевой классификатор связан с исходным отношением powertype
precondition Ограничение (constraint) Ограничение, которое должно выполняться перед выполнением операции
process Класс (class) Классификатор, экземпляр которого представляет ресурсоемкий поток управления
refine Зависимость (dependency) Говорит, что исходный объект является более детальной абстракцией, чем целевой
requirement Комментарий (comment) Описывает желаемое свойство или поведение системы
responsibility Комментарий (comment) Описывает контракт или обязательство класса
send Зависимость (dependency) Исходная операция посылает целевое событие
signal Класс (class) Асинхронный стимул, который передается одним экземпляром другому
stereotype Класс (class) Классификатор - это стереотип, который может быть применен к другим элементам
stub Пакет (package) Пакет выступает в роли заместителя для открытого содержимого другого пакета
subsystem Пакет (package) Описывает группирование элементов, ряд которых составляет спецификацию поведения других элементов
system Пакет (package) Описывает пакет, представляющий всю моделируемую систему
table
Компонент (component) Компонент, представляющий таблицу базы данных
thread Класс (class) Классификатор, экземпляр которого представляет облегченный поток управления
trace Зависимость (dependency) Целевой элемент - это исторический предок исходного
type Класс (class) Абстрактный класс, который используется только для спецификации структуры и поведения (но не реализации) множества объектов
use Зависимость (dependency) Семантика исходного элемента зависит от семантики открытого содержания целевого элемента
utility Класс (class) Определяет класс, для которого область действия всех атрибутов и операций - класс



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