На этом шаге рассмотрим моделирование архитектурных представлений в UML.
Использование пакетов для группирования родственных элементов весьма важно – без него нельзя разработать сложную модель. Данный подход применим к организации таких элементов, как классы, интерфейсы, компоненты, узлы и диаграммы. Но при рассмотрении архитектурных представлений программных систем возникает потребность в еще более крупных блоках. Архитектурные представления тоже можно моделировать с помощью пакетов.
Напомним, что представлением (view) называется проекция организации и структуры системы, в которой внимание акцентируется на одном из конкретных ее аспектов. Из этого определения вытекают два следствия. Во-первых, систему можно разложить на почти ортогональные пакеты, каждый из которых имеет дело с набором архитектурно значимых решений (например, можно создать представления с точки зрения проектирования, взаимодействий, реализации, размещения и вариантов использования). Во-вторых, этим пакетам будут принадлежать все абстракции, относящиеся к данному представлению. Так, все компоненты модели принадлежат пакету, который моделирует представление реализации. В то же время пакеты могут содержать ссылки на элементы других пакетов.
Для моделирования архитектурных представлений необходимо:
Между элементами различных представлений обычно возникают зависимости. Таким образом, каждое представление на верхнем уровне системы должно быть открыто для всех остальных представлений этого уровня.
В качестве примера на рис. 1 показана каноническая декомпозиция верхнего уровня, типичная для большинства сложных систем.
Рис.1. Моделирование архитектурных представлений
Моделируя пакеты в UML, помните, что они нужны только для организации элементов вашей модели. Если имеются абстракции, непосредственно материализуемые как объекты в системе, не пользуйтесь пакетами. Вместо них применяйте такие элементы моделирования, как классы или компоненты.
Хорошо структурированный пакет характеризуется следующими свойствами:
Изображая пакет в UML, руководствуйтесь следующими принципами:
На следующем шаге рассмотрим понятие экземпляра в языке UML.