Диаграмма компонентов, в отличие от ранее рассмотренных диаграмм, описывает особенности физического представления системы. Диагра́мма компоне́нтов, Component diagram — статическая структурная диаграмма, показывает разбиение программной системы на структурные компоненты и связи (зависимости) между компонентами.
Таким образом иллюстрируются отношения клиент-источник между двумя компонентами. После ознакомления с разделами («Пример», «Применение») вы можете попробовать свои силы в самостоятельном составлении диаграмм компонентов. В объектно-ориентированном сообществе идут дебаты о том, в чем состоит различие между компонентом и обычным классом. В UML 1 был отдельный символ для компонента (рис. 14.1). В UML 2 этого значка нет, но можно обозначить прямоугольник класса похожим значком.
Кроме этого значка компоненты не принесли с собой никаких новых обозначений. Компоненты связываются между собой с помощью предоставляемых или требуемых интерфейсов, при этом шарово-гнездовая нотация обычно применяется только на диаграммах классов.
В этом примере компонент Till (Касса) может взаимодействовать с компонентом Sales Server (Сервер продаж) с помощью интерфейса sales message (Сообщение о продажах). Вопрос о сущности компонента является предметом бесконечных споров. Компоненты – это не технология. Компоненты – это скорее стиль отношения клиентов к программному обеспечению. Они хотят, чтобы новые компоненты работали так же, как и прежние, и обновлять их согласно своим планам, а не по указанию производителей.
Важно то, что компоненты представляют элементы, которые можно независимо друг от друга купить и обновить. В результате разделение системы на компоненты является в большей мере маркетинговым решением, чем техническим.
В ходе проектирования архитектором или опытным программистом создается проектная документация, включающая текстовые описания, диаграммы, модели будущей программы. UML — является графическим языком для визуализации, описания параметров, конструирования и документирования различных систем (программ в частности).
Диаграмма классов служит для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования. С этой точки зрения диаграмма классов является дальнейшим развитием концептуальной модели проектируемой системы. Для моделирования взаимодействия объектов в языке UML используются соответствующие диаграммы взаимодействия.
На диаграмме кооперации в виде прямоугольников изображаются участвующие во взаимодействии объекты, содержащие имя объекта, его класс и, возможно, значения атрибутов. В отличие от диаграммы последовательности, на диаграмме кооперации изображаются только отношения между объектами, играющими определенные роли во взаимодействии. При этом представляются только компоненты-экземпляры программы, являющиеся исполнимыми файлами или динамическими библиотеками.
Эта диаграмма, по сути, завершает процесс ООАП для конкретной программной системы и ее разработка, как правило, является последним этапом спецификации модели. И способствуют этому несколько специальных техник (Scrum of scrums, компонентные команды, участие архитектора в роли Product owner’а). Это и есть развитие реальной системы.
И в этом нет ничего необычного и неверного. Компоненты программных систем, их разновидности. Все рассмотренные ранее диаграммы отражали концептуальные и логические аспекты построения модели системы. С тем чтобы пояснить отличие логического и физического представлений, необходимо в общих чертах рассмотреть процесс разработки программной системы.
3.4.3. Применение диаграмм компонентов и размещения
При этом уже в тексте программы предполагается организация программного кода, определяемая синтаксисом языка программирования и предполагающая разбиение исходного кода на отдельные модули. А это возможно, только если программный код системы будет реализован в форме исполняемых модулей, библиотек классов и процедур, стандартных графических интерфейсов, файлов баз данных.
Диаграмма компонентов и особенности ее построения
Для представления физических сущностей в языке UML применяется специальный термин – компонент. Компонент (component) — физически существующая часть системы, которая обеспечивает реализацию классов и отношений, а также функционального поведения моделируемой программной системы.
Дополнительно компонент может иметь текстовый стереотип и помеченные значения, а некоторые компоненты – собственное графическое представление. Компонентом может быть исполняемый код отдельного модуля, командные файлы или файлы, содержащие интерпретируемые скрипты.
В разработке диаграмм компонентов участвуют как системные аналитики и архитекторы, так и программисты. UML компоненты и стереотипы. Диаграмма развертывания предназначена для визуализации элементов и компонентов программы, существующих лишь на этапе ее исполнения (runtime). Можно также разбивать компоненты на части с помощью диаграмм составных структур. Данный раздел посвящен сразу двум диаграммам: компонентов и размещения, для которых можно использовать обобщающее название ‒ диаграммы реализации.