Перейти к содержимому

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

Пакет удобно использовать после определения слоёв и крупных модулей. Например, пакеты Предметная область, Приложение, Инфраструктура показывают архитектурные области, а не папки в репозитории сами по себе.

Пакет

Зависимость (Dependency) между пакетами показывает её направление. Она полезнее одной большой диаграммы классов, когда нужно увидеть, что предметная логика не зависит от веб-интерфейса, а модуль уведомлений не знает внутренних классов модуля заказов.

Импорт пакета (PackageImport) делает элементы другого пакета доступными в пространстве имён импортирующего пакета; ключевые слова «import» и «access» различают публичный и приватный импорт. Слияние пакетов (PackageMerge) с «merge» позволяет дополнить определения одного пакета определениями другого, включая слияние одноимённых элементов. Оно нужно главным образом при построении профилей и метамоделей. В прикладной архитектуре чаще достаточно обычных зависимостей между пакетами.

Пакет, как и класс, может быть шаблонным. Шаблонный пакет принимает параметры, а связывание шаблона (TemplateBinding) подставляет в него конкретные значения. Это средство полезно при повторном использовании метамоделей и профилей, но для группировки прикладных модулей обычно не требуется.

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

Пакеты фиксируют программную архитектуру и слои. Контракты крупных частей раскрываются на диаграмме компонентов, а расширения UML — в материале о профилях.