Диаграммы UML: зачем они нужны?

Поговорим о том, как из слов языка UML (сущностей и отношений) конструируются предложения.

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

Рассмотрим следующую аналогию с естественным языком. Каждая тройка «сущность» — «отношение» — «сущность» в модели вполне может рассматриваться как простое утверждение: 2 < 5, ртуть тяжелее железа, Ф.А. Новиков является преподавателем Политехнического университета (все это примеры отношений).

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

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

Диаграммы UML и есть та основная накладываемая на модель структура, которая облегчает создание и использование модели.

Диаграмма (diagram) — это графическое представление некоторой части графа модели.

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

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

Существует специальная нотация для оформления диаграмм - фрейм (frame). Фрейм представляет собой рамку и ярлычок с названием диаграммы. Если с рамкой все просто – это прямоугольник, ограничивающий область в котором должны находиться элементы диаграммы, то название диаграммы записывается в ярлычке в специальном формате, приведенном на рисунке.

uml-diagrams-why

Возможные теги (типы) для диаграмм приведены в таблице. Теги, предлагаемые стандартом, записаны во второй столбец. Однако, как показывает практика использования языка, предлагаемые стандартом правила не всегда удобны и логически обоснованы, поэтому третий столбец таблицы содержит достаточно часто использующуюся альтернативу.

Название диаграммы Тег (стандартный) Тег (часто используемый)
Диаграмма использования use case или uc use case
Диаграмма классов class class
Диаграмма автомата state machine или stm state machine
Диаграмма деятельности activity или act activity
Диаграмма последовательности interaction или sd sd
Диаграмма коммуникации interaction или sd comm
Диаграмма компонентов component или cmp component
Диаграмма размещения не определен deployment
Диаграмма объектов не определен object
Диаграмма внутренней структуры class class или component
Обзорная диаграмма взаимодействия interaction или sd interaction
Диаграмма синхронизации interaction или sd timing
Диаграмма пакетов package или pkg package

Денис Иванов, Федор Новиков