Механизмы расширения UML

Механизмы расширения UML предназначены для того, что­бы разработчики могли адаптировать язык моделирования к сво­им конкретным нуждам, не меняя при этом его метамодель. На­личие механизмов расширения принципиально отличает UML от таких средств моделирования, как IDEFO, IDEF1X, IDEF3, DFD и ERM. Перечисленные языки моделирования можно оп­ределить как сильно типизированные (по аналогии с языками программирования), поскольку они не допускают произвольной интерпретации семантики элементов моделей. UML, допуская такую интерпретацию (в основном за счет стереотипов), являет­ся слабо типизированным языком. К его механизмам расшире­ния относятся:

·стереотипы;

·тегированные (именованные) значения;

·ограничения.

Стереотип — это новый тип элемента модели, который опре­деляется на основе уже существующего элемента. Стереотипы расширяют нотацию модели, могут применяться к любым эле­ментам модели и представляются в виде текстовой метки (см. рис. 2.52) или пиктограммы (иконки).

Стереотипы классов - это механизм, позволяющий разделять классы на категории. Например, основными стереотипами, ис­пользуемыми в процессе анализа системы (см. подразд. 4.3.2), яв­ляются: Boundary (граница), Entity (сущность) и Control (управ­ление).

Граничными классами (boundary classes) называются такие классы, которые расположены на границе системы и всей окру­жающей среды. Они включают все формы, отчеты, интерфейсы с аппаратурой (такой, как принтеры или сканеры) и интерфейсы с другими системами.

Классы-сущности (entity classes) отражают основные понятия (абстракции) предметной области и, как правило, содержат хра­нимую информацию. Обычно для каждого класса-сущности соз­дают таблицу в базе данных.

Управляющие классы (control classes) отвечают за координацию действий других классов. Обычно у каждого варианта использо­вания имеется один управляющий класс, контролирующий пото­ки событий этого варианта использования. Управляющий класс отвечает за координацию, но сам не несет в себе никакой функ­циональности — остальные классы не посылают ему большого количества сообщений. Вместо этого он сам посылает множество сообщений. Управляющий класс просто делегирует ответствен­ность другим классам, по этой причине его часто называют клас­сом-менеджером.

В системе могут быть и другие управляющие классы, общие для нескольких вариантов использования. Например, класс SecurityManager (менеджер безопасности) может отвечать за контроль событий, связанных с безопасностью. Класс TransactionManager (менеджер транзакций) занимается коорди­нацией сообщений, относящихся к транзакциям с базой данных. Могут быть и другие менеджеры для работы с другими элемента­ми функционирования системы, такими, как разделение ресур­сов, распределенная обработка данных или обработка ошибок.

Помимо упомянутых стереотипов, разработчики ПО могут создавать собственные наборы стереотипов, формируя тем са­мым специализированные подмножества UML (например, для описания бизнес-процессов, Web-приложений, баз данных и т.д.). Такие подмножества (наборы стереотипов) в стандарте язы­ка UML носят название профилей языка.

Именованное значение — это пара строк «тег = значение», или «имя = содержимое», в которых хранится дополнительная ин­формация о каком-либо элементе системы, например, время соз­дания, статус разработки или тестирования, время окончания ра­боты над ним и т.п.

Ограничение — это семантическое ограничение, имеющее вид текстового выражения на естественном или формальном языке (OCL — Object Constraint Language), которое невозможно выра­зить с помощью нотации UML.

Одних графических средств, таких как диаграмма классов или диаграмма состояний, недостаточно для разработки точных и непротиворечивых моделей сложных систем. Существует необхо­димость задания дополнительных ограничений, которым долж­ны удовлетворять различные компоненты или объекты модели. Традиционно подобные ограничения описывались с помощью естественного языка. Однако, как показала практика системного моделирования, такие сформулированные на естественном язы­ке ограничения страдают неоднозначностью и нечеткостью.

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

Другая особенность традиционных формальных языков заключается в присущей им бедной семантике. Базовые элементы формальных языков имеют слишком абстрактное содержание, что затрудняет их непосредственную интерпретацию в понятиях моделей конкретных технических систем и бизнес-процессов. Поскольку процесс объектно-ориентированного анализа и про­ектирования направлен на построение конструктивных моделей сложных систем, которые должны быть реализованы в форме программных систем И аппаратных комплексов, это является серьезным недостатком. Необходимо применение такого формального языка, базовые элементы которого адекватно отражают семантику основных конструкций объектной модели.

Именно для этих целей и был разработан язык OCL. По сво­ей сути он является формальным языком, более простым для изу­чения, чем традиционные формальные языки. В то же время язык OCL специально ориентирован на описание бизнес-про­цессов и бизнес-логики, поскольку был разработан в одном из отделений корпорации IBM.

OCL представляет собой формальный язык для описания ог­раничений, которые могут быть использованы при определении различных компонентов языка UML. Хотя язык OCL является частью языка UML, в общем случае он может иметь гораздо бо­лее широкую область приложений, чем конструкции языка UML. Средства языка OCL позволяют специфицировать не только объ­ектные ограничения, но и другие выражения логико-лингвисти­ческого характера, такие, как предусловия, постусловия и огра­ничивающие условия. Этот язык ничего не изменяет в графичес­ких моделях, а только дополняет их. Это означает, что выражения языка OCL никогда не могут изменить состояние системы, хотя эти выражения и могут быть использованы для спецификации самого процесса изменения этого состояния. Выражения языка OCL также не могут изменять отдельные значения атрибутов и операций для объектов и их связей. Всякий раз, когда оценивает­ся одно из таких выражений, на выходе получается лишь некото­рое значение.

Язык OCL не является языком программирования в обычном смысле, поскольку не позволяет записать логику выполнения программы или последовательность управляющих действий. Средства этого языка не предназначены для описания процессов вычисления выражений, а только лишь фиксируют необходи­мость выполнения тех или иных условий применительно к от­дельным компонентам моделей. Главное назначение языка OCL — гарантировать справедливость ограничений для отдельных объектов модели. В этом смысле OCL можно считать языком мо­делирования, который вовсе не обязан допускать строгую реали­зацию в инструментальных средствах.

Язык OCL может быть использован для решения следующих задач:

·описание инвариантов классов и типов в модели классов;

· описание пред- и постусловий в операциях и методах;

· описание ограничивающих условий элементов модели;

· навигация по структуре модели;

· спецификация ограничений на операции.

Описание языка OCL отличается от описаний традиционных формальных языков менее формальным характером. Базовым элементом языка OCL является выражение, которое строится по определенным правилам. При этом допускается расширение конструкций языка за счет включения в его состав дополнитель­ных типов.

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

2.5.9.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: