Открытая коллекция знаний

OpenU.Ru

Справочник UML. Объектно-ориентированное проектирование.

tagged value (именованное значение)

Именованное значение представляет собой пару строк, прикрепленных к элементу для передачи определенной информации.
См. 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 нет "реестра" для тегов, и он не предполагает, что пользователи будут резервировать имена тегов в расчете на то, что не будут использовать их в будущем для других целей.

Алфавитный указатель