Узел диаграммы развертывания

 

Узел (Node) – это физический элемент, который существует во время выполнения и представляет вычислительный ресурс, обычно обладающий как минимум некоторым объемом памяти, а зачастую также и процессором. Графически узел изображается в виде куба.

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

Графически узел на диаграмме развертывания изображается в форме трехмерного куба. Узел имеет имя, которое указывается внутри этого графического символа. Сами узлы могут представляться как на уровне типа (рис. 6.108, а), так и на уровне экземпляра (рис. 6.108, б).

 

 

Рис. 6.108. Графическое изображение узла на диаграмме развертывания

 

Второй способ разрешает показывать на диаграмме развертывания узлы с вложенными изображениями компонентов (рис. 6.108, б). Важно помнить, что в качестве таких вложенных компонентов могут выступать только исполняемые компоненты и динамические библиотеки.

Каждый узел должен иметь имя, отличающее его от прочих узлов. Имя – это текстовая строка. Взятое само по себе, оно называется простым именем. Составное имя – это простое имя узла, к которому спереди добавлено имя пакета, в котором он находится. Имя узла должно быть уникальным внутри объемлющего пакета. Обычно при изображении узла указывают только его имя, как видно из рис. 6.109. Но, как и в случае с классами, вы можете снабжать узлы помеченными значениями или дополнительными разделами, чтобы показать детали.

Имя узла может состоять из любого числа букв, цифр и некоторых знаков препинания (за исключением таких, как двоеточия, которые применяются для отделения имени узла от имени объемлющего пакета). Имя может занимать несколько строк. На практике для именования узлов используют одно или несколько коротких существительных, взятых из словаря реализации.

В качестве дополнения к имени узла могут использоваться различные текстовые стереотипы, которые явно специфицируют назначение этого узла. Для этой цели были предложены следующие текстовые стереотипы: "processor" (процессор), "sensor" (датчик), "modem" (модем), "net" (сеть), "printer" (принтер) и другие, смысл которых понятен из контекста.

 

 

Рис. 6.109. Простое и расширенное изображение узлов.

 

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

– компоненты принимают участие в исполнении системы; узлы – это сущности, которые исполняют компоненты;

– компоненты представляют физическую упаковку логических элементов; узлы представляют средства физического размещения компонентов.

Первое из этих отличий самое важное. Здесь все просто – узлы исполняют компоненты, компоненты исполняются в узлах.

Второе различие предполагает наличие некоего отношения между классами, компонентами и узлами. В самом деле, компонент – это материализация множества других логических элементов, таких как классы и кооперативные диаграммы, а узел – место, на котором развернут компонент. Класс может быть реализован одним или несколькими компонентами, а компонент, в свою очередь, развернут в одном или нескольких узлах. Как показано на рис. 6.110., отношение между узлом и компонентом, который на нем развернут, может быть явно изображено с помощью отношения зависимости. Как правило, вам не придется визуализировать такие отношения. Лучше хранить их как часть спецификации узла.

Множество объектов или компонентов, приписанных к узлу как группа, называется элементом распределения (Distribution unit).

 

Рис. 6.110. Узлы и компоненты

 

Узлы можно организовывать, группируя их в пакеты, точно так же, как это делается с классами и компонентами.

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

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

Хорошо структурированный узел обладает следующими свойствами:

– представляет четкую абстракцию некоей сущности из словаря аппаратных средств области решения;

– декомпозирован только до уровня, необходимого для того, чтобы донести ваши идеи до читателя;

– раскрывает только те атрибуты и операции, которые относятся к моделируемой области;

– явно показывает, какие компоненты на нем развернуты;

– связан с другими узлами способом, отражающим топологию реальной системы.

Изображая узел в UML, руководствуйтесь следующими принципами:

– определите для своего проекта или организации в целом набор стереотипов с подходящими пиктограммами, которые несут очевидную для читателя смысловую нагрузку;

– показывайте только те атрибуты и операции (если таковые существуют), которые необходимы для понимания назначения узла в данном контексте.