2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006) (1185732), страница 19
Текст из файла (страница 19)
Присваивая стереотип, скажем, узлу иликлассу, вы на самом деле расширяете UML за счет создания новыхстроительных блоков, подобных существующим, но с особыми моделирующими свойствами (каждый стереотип может представлятьсвой набор помеченных значений), семантикой (каждый стереотипможет иметь собственные ограничения) и нотацией (каждый стереотип может обозначаться отдельной пиктограммой).В своей простейшей форме стереотип изображен как имя, заключенное в угловые кавычки (например, «name») и помещенное надименем другого элемента.
Для визуального представления стереотипа вы можете выбрать какуюFлибо пиктограмму и разместить еесправа от имени (если используется базовая нотация элемента) илиже применить пиктограмму в качестве базового символа для отображения элементов, относящихся к стереотипу. Все эти вариантыпроиллюстрированы на рис. 6.5.Основныевидысущностейв UMLобсуждаются в главе 2.Общие механизмы96Базовые понятия97определение стереотипа»«Accounting««stereotype»Server«metaclass»Class»элемент тэгаrequiredCapasity: integerValueбазовый элемент стереотипаэлемент стереотипаограничение стереотипа{only one kindof server per system}Рис.
6.5. СтереотипыНа заметку. Назначая стереотипу пиктограмму, попробуйтеподчеркнуть некоторые нюансы с помощью цвета (но не увлекайтесь, иначе получится слишком пестро!) UML допускаетиспользование пиктограмм любой формы, и если ваш проект того требует, они могут функционировать как примитивные инструменты (таким образом, пользователи, создающиедиаграммы UML, получают в свое распоряжение палитру сущностей, которые отвечают их базовым потребностям и «говорят» на языке их проблемной области).Помеченные значенияКаждый элемент в UML имеет собственный набор свойств:классы – имена, атрибуты и операции; ассоциации – имена и несколько концов, каждый из которых наделен своими особенностями, и т.д. Благодаря стереотипам вы можете привносить в UMLновые сущности, а благодаря помеченным значениям – сообщатьстереотипам новые свойства.АтрибутыВы определяете теги, применяемые к индивидуальным стереообсуждают- типам таким образом, что все внутри стереотипа имеет помеченся в главах 4 ное значение.
Помеченное значение (tagged value) – не то же самое,и 9.что атрибут класса. Скорее, помеченные значения можно рассматривать как метаданные, поскольку они касаются спецификацииэлементов, а не их экземпляров. Так, например, вы можете указатьтребуемую производительность класса сервера либо потребовать,чтобы в системе использовался только определенный тип сервера(рис. 6.6).Рис. 6.6. Стереотипы и определения теговПомеченные значения входят в примечания, присоединенныек элементу, как показано на рис. 6.7. Каждое помеченное значениевключает в себя строку, состоящую из имени (тега), разделителя(символа =) и значения тега.использование стереотипапомеченное значение«server»capacity = 50«server»PrintServerкласс со стереотипомРис. 6.7. Помеченные значенияНа заметку.
Один из наиболее частых случаев использования помеченных значений – определение свойств, важных длягенерации кода или управления конфигурацией. Например,вы можете использовать помеченные значения для спецификации языка программирования, в котором реализуетсяопределенный класс, а также для указания автора и версиикакогоQлибо компонента.ОграниченияВсе элементы UML обладают определенной семантикой. Обобщения, как правило, воплощают принцип подстановки Лискова, а множественные ассоциации, соединенные с одним классом,Общие механизмы98Временныеи пространственныеограниченияобычно применяютсяпри моделированиисистемреальноговремени (см.главу 24).символизируют различные связи. Благодаря ограничениям вы можете добавить новую семантику к существующим правилам.
Ограничения (constraints)определяют условия, которым должна удовлетворять система времени исполнения, чтобы соответствовать модели.Например, вам надо показать, что взаимодействие по некоей ассоциации должно быть безопасным (рис. 6.8); конфигурации, нарушающие это ограничение, не соответствуют модели. Аналогичнымобразом вы можете указать, что определенный экземпляр можетиметь связь только с одной из множества ассоциаций, соединенныхс неким классом.На заметку. Ограничения могут быть записаны в виде текстапроизвольного формата.
Если вы хотите специфицироватьва шу семантику более точно, можете использовать языкобъектных ограничений UML (Object Constraint Language –OCL), подробно описанный в книге «UML» (ее выходные данные вы найдете во введении, раздел «Цели»).Ограничениямогут бытьприсоединены кнесколькимэлементамза счет использованиязависимостей (см.главу 5).Ограничения представлены строками, заключенными в фигурные скобки и помещенными рядом с ассоциированным элементом.Эта нотация применяется и для дополнения базовой нотации элемента с целью изображения спецификаций элемента, допускающих графическое представление.
Например, некоторые свойстваассоциаций (порядок и изменчивость) изображаются с помощьюограничений.ограничение для множества элементовформальное ограничение,использующее OCLРис. 6.8. ОграниченияБазовые понятия99Стандартные элементыКлассификаторыобсуждаются в главе 9.UML определяет ряд стандартных стереотипов для классификаторов, компонентов, связей и других элементов моделирования.Существует один стандартный стереотип (представляющий интерес в основном для разработчиков инструментальных средств), который сам позволяет моделировать другие стереотипы: stereotype – определяет, что данный классификатор являетсястереотипом и может применяться к другим элементам.Вы можете использовать данный стереотип, если нужно явнопоказать в модели те стереотипы, которые вы определили для своего проекта.ПрофилиЗачастую бывает полезно адаптировать версию UML под конкретные цели или предметную область.
Например, если вы хотите использовать модель UML для генерации кода на том или иномязыке, вам может пригодиться определение стереотипов, которые,будучи применены к элементам, дадут подсказки генератору кода(подобно стереотипу pragma в языке Ада). Однако определяемыевами с этой целью стереотипы должны быть разными для Javaи C++. Другой пример: вы моделируете с помощью UML базы данных. Некоторые функции языка, в частности динамическое моделирование, не слишком для вас важны, но при этом необходимо добавить новые концепции – скажем, возможные ключи и индексы.Вы можете адаптировать UML, используя профили.Профиль (profile) – это UMLFмодель с набором готовых стереотипов, помеченных значений, ограничений и базовых классов.Также профиль включает подмножество типов элементов UML, используемых автором моделей для того, чтобы исключить те из них,которые не понадобятся в работе с определенной областью приложений.
Иными словами, профили определяют специализированныеверсии UML, предназначенные для моделирования определеннойпредметной области. Поскольку профили построены на базе стандартного UML, они не определяют нового языка и могут быть поддержаны стандартными средствами UML.Большинство разработчиков моделей не конструирует собственных профилей. В основном профили создаются разработчикамиинструментальных средств, каркасов и т.п. Однако многие авторымоделей используют профили.
В этом смысле они сродни библиотекам подпрограмм: немногочисленные эксперты создают их,чтобы затем ими воспользовались многие программисты (в частности, в целях поддержки языков программирования и баз данных,различных платформ, инструментов моделирования, а также разнообразных областей бизнесFприложений).100Общие механизмыТипичные приемы моделированияТипичные приемы моделирования«101»Моделирование комментариевОбщее назначение примечаний – запись комментариев, оценок или пояснений в свободной форме. Размещая эти комментарии непосредственно в модели, вы превращаете ее в «склад» разнообразных артефактов, создаваемых во время разработки. Выдаже можете использовать примечания для визуализации требований и демонстрации того, как они явно связаны с частями вашеймодели.При моделировании комментариев учитывайте следующее:Простоеобобщениеобсуждается в главе 5;более сложные формыобобщенияописаныв главе 10.
Вводите комментарий в виде текста в примечание и размещайте его рядом с элементом, к которому он относится. Выможете показать более явную связь примечания с элементом, установив между ними зависимость. Помните, что вы можете скрыть или показать элементы вашеймодели там, где это понадобится. Вы не обязаны делать вашикомментарии видимыми, если видимы элементы, к которымони присоединены. Используйте комментарии на диаграммах только тогда, когда это важно для передачи существенной информации. Если комментарий слишком длинный или включает в себянечто большее, че м простой текст, рассмотрите возможность его размещения во внешнем документе и встраиванияпоследнего в примечание, присоединенное к вашей модели(либо связывания этого документа с примечанием).
По мере развития вашей модели сохраняйте комментарии,отражающие только существенные решения, которые невозможно извлечь из самой модели. Остальные же удаляйте, если только они не представляют исторического интереса.Например, рис. 6.9 демонстрирует модель, которая находится в процессе разработки иерархии классов, показывая некоторыетребования, формирующие модель, а также некоторые примечанияк ней, высказанные при оценке дизайна.В этом примере большинство комментариев представлены в видепростого текста (такого, как замечание Мэри), но один из них (примечание в нижней части диаграммы) представляет собой гиперссылку на другой документ.Рис.