Назначение диаграммы компонентов
Диаграмма компонентов – диаграмма физического уровня, которая служит для представления программных компонентов и зависимостей между ними.
Диаграмма компонентов разрабатывается для следующих целей:
· Визуализация общей структуры исходного кода программной системы.
· Спецификация исполнимого варианта программной системы.
· Обеспечение многократного использования отдельных фрагментов программного кода.
· Представление концептуальной и физической схем баз данных.
Диаграмма компонентов позволяет определить состав программных компонентов, в роли которых может выступать исходный, бинарный и исполняемый код, а также установить зависимости между ними.
Данная диаграмма обеспечивает согласованный переход от логического к физическому представлению системы в виде программных компонентов. Одни компоненты могут существовать только на этапе компиляции программного кода, другие – на этапе его исполнения.
Основными элементами диаграммы являются компоненты, интерфейсы и зависимости между ними. Кроме этого, на ней могут отображаться ключевые классы, входящие в компоненты.
Для представления физических сущностей в языке UML применяется специальный термин – компонент.
Компонент (component) — физически существующая часть системы, которая обеспечивает реализацию классов и отношений, а также функционального поведения моделируемой программной системы.
Компонент предназначен для представления физической организации ассоциированных с ним элементов модели. Дополнительно компонент может иметь текстовый стереотип и помеченные значения, а некоторые компоненты – собственное графическое представление. Компонентом может быть исполняемый код отдельного модуля, командные файлы или файлы, содержащие интерпретируемые скрипты.
Компонент служит для общего обозначения элементов физического представления модели и может реализовывать некоторый набор интерфейсов.
Для графического представления компонента используется специальный символ – прямоугольник со вставленными слева двумя более мелкими прямоугольниками. Внутри объемлющего прямоугольника записывается имя компонента и, возможно, дополнительная информация. Этот символ является базовым обозначением компонента в языке UML.
Рис. 12.1.Графическое изображение компонента
Компоненты могут иметь следующие стандартные стереотипы:
- «file» – любой файл, кроме таблицы:
o «executable» – программа (исполняемый файл);
o «library» – статическая или динамическая библиотека;
o «source» – файл с исходным текстом программы;
o «document» – остальные файлы (например, файл справки);
- «table» – таблица базы данных.
Интерфейс (англ. interface) – это внешне видимый, именованный набор операций, который класс, компонент или подсистема может предоставить другому классу, компоненту или подсистеме, для выполнения им своих функций.
В общем случае интерфейс графически изображается окружностью, которая соединяется с компонентом отрезком линии без стрелок. При этом имя интерфейса, которое рекомендуется начинать с заглавной буквы "I", записывается рядом с окружностью. Семантически линия означает реализацию интерфейса, а наличие интерфейсов у компонента означает, что данный компонент реализует соответствующий набор интерфейсов.
Рис. 12.3.Графическое изображение интерфейсов на диаграмме компонентов.
Кроме того, интерфейс на диаграмме компонентов может быть изображен в виде прямоугольника класса со стереотипом << interface>> и секцией поддерживаемых операций. Как правило, этот вариант обозначения используется для представления внутренней структуры интерфейса.
При разработке программных систем интерфейсы обеспечивают не только совместимость различных версий, но и возможность вносить существенные изменения в одни части программы, не изменяя другие .
Различают два способа связи интерфейса и компонента. Если компонент реализует некоторый интерфейс, то такой интерфейсназывают экспортируемым или поддерживаемым, поскольку этот компонент предоставляет его в качестве сервиса другим компонентам . Если же компонент использует некоторый интерфейс, который реализуется другим компонентом, то такой интерфейсдля первого компонента называется импортируемым . Особенность импортируемого интерфейса состоит в том, что на диаграмме компонентов это отношение изображается с помощью зависимости
Отношение ассоциации отображается между компонентами и их интерфейсами. Отношение зависимости означает зависимость реализации одних компонентов от реализации других.
Отношение зависимости служит для представления факта наличия специальной формы связи между двумя элементами модели, когда изменение одного элемента модели оказывает влияние или приводит к изменению другого элемента модели. Отношение зависимости на диаграмме компонентов изображается пунктирной линией со стрелкой, направленной от клиента или зависимого элемента к источнику или независимому элементу модели.
Зависимости могут отражать связи отдельных файлов программной системы на этапе компиляции и генерации объектного кода. В других случаях зависимость может указывать на наличие в независимом компоненте описаний классов, которые используются в зависимом компоненте для создания соответствующих объектов. Применительно к диаграмме компонентов зависимости могут связывать компоненты и импортируемые этим компонентом интерфейсы, а также различные виды компонентов между собой.
В этом случае рисуют стрелку от компонента-клиента к импортируемому интерфейсу. Наличие такой стрелки означает, что компонент не реализует соответствующий интерфейс, а использует его в процессе своего выполнения. При этом на этой же диаграмме может присутствовать и другой компонент, который реализует этот интерфейс. Отношение реализации интерфейса обозначается на диаграмме компонентов обычной линией без стрелки.
Так, например, изображенный ниже фрагмент диаграммы компонентов представляет информацию о том, что компонент с именем Control зависит от импортируемого интерфейса IDialog, который, в свою очередь, реализуется компонентом с именем DataBase . При этом для второго компонентa этот интерфейс является экспортируемым. Изобразить связь второго компонентa DataBase с этим интерфейсом в форме зависимости нельзя , поскольку этот компонент реализует указанный интерфейс.
Рис. 12.4.Фрагмент диаграммы компонентов с отношениями зависимости и реализации