Диаграмма компонентов моделирует физический уровень системы, на них изображаются компоненты программного обеспечения и связи между ними.
На таких диаграммах обычно выделяют 2 типа компонентов:
- исполняемые компоненты
- библиотеки кода
Каждый класс модели преобразуется в компонент исходного кода. Между отдельными компонентами изображают зависимости, соответствующие зависимостям на этапе компиляции или выполнения программы.
Диаграмма компонентов для клиентской части системы:
В данном случае система разрабатывается на языке C++. У каждого класса имеет свой собственный заголовочный файл (расширение *.h) и файл тела класса (расширение *.cpp).
Например, класс "АТМ-Экран" преобразуется в компонент АТМ-Экрана (тело и заголовок класса).
Выделенный темный компонент называется спецификацией пакета и соответствует файлу тела класса "АТМ-Экран". Невыделенный компонент также называется спецификацией пакета, но соответствует заголовочному файлу класса.
Компонент "ATM.exe" называется спецификацией задачи и моделирует исполняемую программу. Например, класс "Устройство для чтения кредитной карты" зависит от класса "АТМ-Экран". Это означает, что для того, чтобы класс "Устройство чтения кредитной карты" могу быть скомпилирован, класс "АТМ-Экран" должен уже существовать.
После компиляции всех классов может быть создан исполняемый файл ATMClient.exe.
Банковская система содержит два потока управления и таким образом получается два исполняемых файла. Один из них - клиентская часть системы, которая содержит компоненты: "Устройство чтения кредитных карт", "АТМ-Экран", "Кассовый аппарат" и второй файл - это сервер, включающий в себя компонент "Account".
Диаграмма компонента для сервера:
Как видно из примера в модели системы может быть использовано несколько диаграмм компонентов в зависимости от числа исполняемых файлов. Каждый исполняемый файл является пакетом компонентов. Диаграммы компонентов применяются теми участниками проекта, которые отвечают за компиляцию и сборку системы. Они нужны там, где начинается генерация кода.