OpenU.Ru
Именованное значение представляет собой пару строк, прикрепленных к элементу
для передачи определенной информации.
См. constraint; stereotype.
Семантика
Именованное значение представляет собой пару селектор-значение, которую можно
прикрепить к любому элементу (включая элементы модели и элементы презентации)
для передачи информации о нем. Как правило, эта информация является второстепенной,
но, тем не менее важной для моделирования. Селектор называется тегом и представляет
собой строку. Каждый тег - это определенное свойство, применимое к одному или
нескольким видам элементов. В рамках любого конкретного элемента модели имена
тегов должны быть уникальными. Для тегов можно использовать
значения различных типов, однако, в любом случае они должны записываться в виде
строки. Интерпретация этого значения определяется совместно разработчиком и
инструментом моделирования. Именованные значения принято реализовывать в виде
справочных таблиц, где роль индексов выполняют теги.
Именованные значении предназначаются для передачи произвольной информации, относящейся
чаще всего к управлению проектом, как-то: авторство элемента, статус тестирования,
важности данного элемента в окончательной версии системы (для чего используются
соответственно следующие теги: author, status и importance).
В языке UML именованные значения - это одно из средств умеренного расширения
метаатрибутов метаклассов. С их помощью невозможно заниматься кардинальным расширением
языка моделирования, однако они годятся для добавления информации об уже существующих
классах метамодели, что удобно для прикладного инструментария, например для
генераторов кода, генераторов отчетов и симуляторов. Чтобы избежать путаницы,
нельзя давать тегам имена метаатрибутов тех элементов модели, к которым они
прикреплены. За этим может следить инструмент моделирования.
UML предоставляет некоторое количество заранее определенных тегов, все прочие
создаются непосредственно пользователями. Именованные значения - это один из
механизмов расширения, с помощью которого можно прикрепить к любому элементу
произвольную дополнительную информацию.
Нотация
Именованное значение имеет следующую форму:
teг = значение
где тег представляет собой имя тега, a value - литеральное значение. Именованные
значения можно включить во взятый в фигурные скобки список свойств, разделенных
запятыми.
Определенный тег можно поменять на ключевое слово, которое в этом случае используется
само по себе, без значения. Отсутствие тега считается эквивалентным какому-либо
другому допустимому его значению.
тег
Пример
{ author=Joe. slatus=tested. requirement=3.563.2а, suppress }
Обсуждение
Большинство программ для редактирования моделей предоставляют базовые средства
для определения, изображения и поиска именованных значений, однако они не используют
их для расширения семантики языка моделирования. Впрочем, прикладной инструментарий
(генераторы кода, отчетов и т. п.) может читать именованные значения для того,
чтобы гибко вносить изменения в их семантику. Интересно отметить, что списки
именованных значений придумали давно, - например, они встречаются в виде списков
свойств в языке Lisp. Именованные значения представляют собой средство добавления
в модель несемантической информации относительно управления проектом и т. п.
Так, тег author может содержать в себе информацию, касающуюся автора элемента,
а тег status - касающуюся статуса разработки, например incomplete, tested, buggy
и complete.
Именованные значения могут также служить для прикрепления к модели средств управления,
зависящих от языка реализации. При этом не понадобится встраивать в UML подробности,
касающиеся этого языка. Флажки генератора кода, указания и псевдокомментарии,
оформленные и виде именованных значений, не вносят изменений в базовую модель.
Если реализация модели осуществляется на различных языках, то можно использовать
несколько наборов тегов. Ни программа, редактирующая модель, ни семантический
анализатор не должны понимать тети - они просто рассматривают их как строки.
В отличие от них прикладные инструменты (например, генераторы кода) понимают
и обрабатывают значения тегов. Например, именованное значение может служить
именем класса-контейнера, который используется для подмены указанной по умолчанию
реализации ассоциации, имеющей неограниченную множественность. Именованные значения
- удобный способ внести в модель любую дополнительную информацию, но при этом
они не являются полноценным механизмом расширения метамодели. Теш образуют плоское
пространство имен, управлять которым нужно, соблюдая определенные условия, так
как в противном случае возможны конфликты имен. Теги не включают в себя указания
на типы значений, которые в них содержатся. Не предназначены они и для серьезного
расширения базовой семантики языка моделирования. Теги в чем-то схожи с атрибутами
метамодели, однако, они ими не являются и не формализованы как таковые.
Как и в случае с процедурами и библиотеках языков программирования, для нормального
использования тегов необходим некий эволюционный период, в течение которого
будут разрешаться возможные конфликты между разработчиками. Используемые в проекте
теги через некоторое время стандартизируются. В языке UML нет "реестра"
для тегов, и он не предполагает, что пользователи будут резервировать имена
тегов в расчете на то, что не будут использовать их в будущем для других целей.