Диаграммы компонентов
8 Диаграммы компонентов (component diagram)
Все рассмотренные ранее диаграммы отражали концептуальные аспекты построения модели системы и относились к логическому уровню представления. Диаграмма компонентов описывает особенности физического представления системы. Диаграмма компонентов позволяет определить архитектуру разрабатываемой системы, установив зависимости между программными компонентами, в роли которых может выступать исходный, бинарный и исполняемый код. Основными графическими элементами диаграммы компонентов являются компоненты, интерфейсы и зависимости между ними.
Диаграмма компонентов разрабатывается для следующих целей:
· визуализации общей структуры исходного кода программной системы;
· спецификации исполнимого варианта программной системы;
· обеспечения многократного использования отдельных фрагментов программного кода;
· представления концептуальной и физической схем баз данных.
Диаграмма компонентов обеспечивает согласованный переход от логического представления к конкретной реализации проекта в форме программного кода. Одни компоненты могут существовать только на этапе компиляции программного кода, другие – на этапе его исполнения. Диаграмма компонентов отражает общие зависимости между компонентами, рассматривая последние в качестве классификаторов.
8.1 Основные графические элементы диаграммы компонентов
Рекомендуемые материалы
Для представления физических сущностей в языке UML применяется специальный термин – компонент (component). Компонент реализует некоторый набор интерфейсов и служит для общего обозначения элементов физического представления модели. Для графического представления компонента может использоваться специальный символ – прямоугольник со вставленными слева двумя более мелкими прямоугольниками (рис. 63). Внутри объемлющего прямоугольника записывается имя компонента и, возможно, некоторая дополнительная информация.
Рис. 63 Графическое изображение компонента в языке UML
В первом случае (рис. 63, а) с компонентом уровня экземпляра связывается только его имя, а во втором (рис. 63, б) – дополнительно имя пакета и помеченное значение.
В языке UML выделяют три вида компонентов:
· компоненты развертывания, которые обеспечивают непосредственное выполнение системой своих функций: динамически подключаемые библиотеки с расширением dll, Web-страницы на языке разметки гипертекста с расширением html и файлы справки с расширением hlp.
· компоненты-рабочие продукты: файлы с исходными текстами программ, например, с расширениями h или срр для языка C++.
· компоненты исполнения, представляющие исполнимые модули – файлы с расширением ехе.
Следующим элементом диаграммы компонентов являются интерфейс. Этот элемент уже рассматривался ранее, поэтому отметим только его особенности, которые характерны для представления на диаграммах компонентов. В общем случае интерфейс графически изображается окружностью, которая соединяется с компонентом отрезком линии без стрелок (рис. 64, а). Семантически линия означает реализацию интерфейса, а наличие интерфейсов у компонента означает, что данный компонент реализует соответствующий набор интерфейсов.
Рис. 64 Графическое изображение интерфейсов на диаграмме компонентов
Другим способом представления интерфейса на диаграмме компонентов является его изображение в виде прямоугольника класса со стереотипом "интерфейс" и возможными секциями атрибутов и операций (рис. 64, б). Как правило, этот вариант обозначения используется для представления внутренней структуры интерфейса, которая может быть важна для реализации.
Применительно к диаграмме компонентов зависимости могут связывать компоненты и импортируемые этим компонентом интерфейсы, а также различные виды компонентов между собой.
Обратите внимание на лекцию "6.11. Правила построения диаграмм".
В первом случае рисуют стрелку от компонента-клиента к импортируемому интерфейсу (рис. 65). Наличие такой стрелки означает, что компонент не реализует соответствующий интерфейс, а использует его в процессе своего выполнения. Причем на этой же диаграмме может присутствовать и другой компонент, который реализует этот интерфейс. Так, например, изображенный ниже фрагмент диаграммы компонентов представляет информацию о том, что компонент с именем "main.exe" зависит от импортируемого интерфейса IDialog, который, в свою очередь, реализуется компонентом с именем "image.java". Для второго компонента этот же интерфейс является экспортируемым.
Рис. 65. Фрагмент диаграммы компонентов с отношением зависимости
На диаграмме компонентов также могут быть представлены отношения зависимости между компонентами и реализованными в них классами (рис. 66). Эта информация имеет важное значение для обеспечения согласования логического и физического представлений модели системы.
Рис. 66 Графическое изображение зависимости между компонентом и классами