Хабр, привет!

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

Диаграмма компонентов

Диаграмма компонентов - это структурная диаграмма языка унифицированного моделирования, она описывает особенности физического представления системы. Диаграмма компонентов позволяет определить архитектуру разрабатываемой системы, установив зависимости между программными компонентами.

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

Диаграмма компонентов разрабатывается для следующих целей:

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

  • спецификация исполнимого варианта программной системы;

  • обеспечение многократного использования отдельных фрагментов программного кода;

  • представление концептуальной и физической схем баз данных

На рисунке ниже показан пример диаграммы компонентов для интернет-магазина. На диаграмме обозначены компоненты, предоставляемые и требуемые интерфейсы, а также порты. Более подробно с каждым элементом мы познакомимся ниже.

Рисунок 1. Пример диаграммы компонентов для интернет-магазина
Рисунок 1. Пример диаграммы компонентов для интернет-магазина

Компонент

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

Предоставляемый интерфейс

Предоставляемый интерфейс на диаграмме компонентов указывает на то, какие возможности или функции предоставляет конкретный компонент для взаимодействия с другими компонентами или системами. Он определяет способ, по которому другие компоненты могут использовать функциональность этого компонента или обмениваться данными с ним. Графически предоставляемый интерфейс отображается на диаграмме компонентов как окружность со сплошной линией.

Пример предоставляемого интерфейса приведён на рисунке 2.

Требуемый интерфейс

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

Пример требуемого интерфейса можно приведён на рисунке 2.

Порт

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

Рисунок 2. Пример отображения компонентов, требуемого и предоставляемого интерфейса, порта
Рисунок 2. Пример отображения компонентов, требуемого и предоставляемого интерфейса, порта

Зависимость

На диаграмме компонентов зависимость указывает на связи между компонентами, когда один компонент зависит от другого. Зависимость это упрощенное отображения отношения ball-and-socket (предусмотренный интерфейс и требуемый интерфейс) между компонентами. Она обозначается пунктирной линией со стрелкой на конце. Стрелка указывает на направление зависимости. Она показывает, что изменения в исходном компоненте, влияют на зависимый компонент. Компонент, в который направлена стрелка зависимости, является исходным, т.е. компонентом, от которого зависят другие компоненты. Зависимость может быть отображена через порты компонентов. Например, порт компонента соединяется с портом другого компонента, чтобы показать существование зависимости.

Рисунок 3. Пример отображения зависимости
Рисунок 3. Пример отображения зависимости

Как нарисовать диаграмму компонентов ?

Давайте сформулируем основные шаги моделирования диаграммы компонентов. Построение диаграммы можно описать в четырёх шагах.

Шаг 1: Определение предметной области и компонентов

Выберите предметную область, для которой вы хотите построить диаграмму компонентов. Определите основные компоненты системы, которые будут включены в диаграмму.

Например, для упомянутой предметной области интернет-магазин компонентами могут выступать: Клиентское приложение, Сервер приложения, База данных, Платежный шлюз

Шаг 2: Определение предоставляемых и требуемых интерфейсов

Определите интерфейсы, которые каждый компонент предоставляет или требует от других компонентов. Это может включать методы, операции, сообщения или доступ к данным.

Шаг 3: Размещение компонентов на диаграмме

Разместите компоненты на диаграмме, указав их имена и связи между ними. Связи могут представлять зависимости, использование интерфейсов или другие типы взаимодействий.

Шаг 4: Добавление портов и их связи

Добавьте порты к компонентам, чтобы указать входные и выходные точки взаимодействия. Связи между портами компонентов показывают, какие интерфейсы используются.

Заключение

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

Подводя итоги, хочу сказать, что:

  1. Диаграмма компонентов — это, фактически, список артефактов, из которых состоит моделируемая система, с указанием некоторых отношений между артефактами.

  2. На диаграмме компонентов основной тип сущностей — это компоненты, интерфейсы и зависимости между ними

  3. Диаграмма компонентов используется для визуализации организации компонентов системы и зависимостей между ними. Она позволяют получить высокоуровневое представление о компонентах системы.

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

Комментарии (2)


  1. dgoncharov
    24.08.2023 06:26

    Откуда взята диаграмма компонентов интернет-магазина, приведенная в статье?


  1. avf48
    24.08.2023 06:26

    Интернет- для слабаков)))

    ISO/IEC 19505-1:2012(E) Information technology - Object Management Group. Unified Modeling Language (OMG UML), Infrastructure

    ISO/IEC 19505-2:2012(E) Information technology - Object Management Group. Unified Modeling Language (OMG UML), Superstructure