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

UML, модель и диаграммы

UML (Unified Modeling Language, «унифицированный язык моделирования») — стандартизированный язык общего назначения для моделирования систем. Он задаёт словарь элементов и правила их сочетания, чтобы модели можно было одинаково читать, обсуждать и обрабатывать инструментами.

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

Модельный элемент (Element) — составная часть UML-модели. У элемента могут быть свойства, имя, владелец, вложенные элементы и связи с другими элементами.

Для чтения модели удобно различать два вида элементов:

  • сущность представляет часть моделируемой системы: понятие предметной области, участника, действие, компонент, событие или вычислительный узел;
  • отношение (Relationship) выражает осмысленную связь между элементами: например, ассоциацию, обобщение, зависимость или реализацию.

В первом приближении UML-модель можно рассматривать как типизированный граф сущностей и отношений между ними. Это полезный способ чтения: сущности образуют вершины, а отношения — связи. В полной метамодели UML отношение тоже является элементом, может иметь собственные свойства и иногда связывает больше двух элементов.

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

UML вырос из нескольких объектно-ориентированных методов, которые в 1990-е годы развивали Гради Буч, Ивар Якобсон и Джеймс Рамбо. Поэтому язык объединяет разные ракурсы одной системы: структуру объектов, их поведение, взаимодействия, модули и физическое окружение.

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

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

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

Абстрактный синтаксис описывает, какие элементы существуют в модели и как они могут быть связаны. Это уровень метамодели: в ней определены классы, акторы, варианты использования, отношения, действия и другие элементы.

Конкретный синтаксис описывает, как эти элементы показать читателю. Один элемент может иметь несколько допустимых представлений: интерфейс рисуют прямоугольником с «interface» или кружком, а актора — человечком либо прямоугольником с «actor». Обратное тоже верно: похожая линия не гарантирует одинаковый смысл.

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

Это различие особенно заметно при повторном использовании и экспорте. PNG или SVG сохраняет картинку, а формат модели вроде XMI может хранить сами элементы, их свойства и связи. Поэтому в инструменте полезно создавать отношения и свойства штатными средствами, а не имитировать их линиями и подписями.

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

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

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

Различие модели и представления продолжает материал о нотациях и представлениях. Следующая заметка вводит основные отношения UML.