Узнайте, как описать любой процесс компании на языке UML
Гайд по UML-моделированию: основы, виды диаграмм и их применение
![диаграмма классов, диаграмма прецедентов, нотация uml, диаграмма юмл, диаграмма деятельности](/blog/content/images/size/w2000/2024/06/-----UML----------------------------------.png)
Как описать бизнес-процесс так, чтобы его понял и аналитик, и разработчик, и заказчик — вопрос с подвохом. Но ответ уже найден: лучше использовать диаграммы UML. Что это вообще такое, зачем оно нужно и как это нарисовать, чтобы все друг друга поняли, — рассказываем в этой статье.
Что за язык UML и зачем его придумали
Аббревиатура UML расшифровывается как Unified Modeling Language — унифицированный язык моделирования. С его помощью можно описать любые бизнес-процессы в виде диаграмм.
Как и у любого другого языка, у UML есть свой словарь, семантика и синтаксис. Только вместо привычных словесных терминов — графические элементы, а вместо словосочетаний и предложений — схематичные конструкции.
Другими словами, нотация UML помогает визуализировать любой процесс так, чтобы он был понятен всем, кто изучал язык моделирования. В нем каждая фигура, стрелка, символ имеют свои обозначения
![диаграмма классов](https://kaiten.ru/blog/content/images/2024/06/-------------2.png)
Что такое UML-диаграмма
UML-диаграмма — это схема, которая описывает процесс или явление по всем правилам языка UML. Принцип построения диаграммы всегда одинаковый: вы рисуете элементы, описываете их свойства и выстраиваете связи между ними.
Например, с помощью диаграмм можно объяснить:
- как пользователи взаимодействуют с интерфейсом,;
- как связаны между собой разные элементы приложения,;
- как устроен бизнес-процесс и многое другое.
Чтобы все одинаково считывали диаграммы, нужно понимать значения каждого элемента в ней. С этим мы и планируем разобраться дальше.
Нотация UML: плавное погружение в мир символов и фигур
Мы разберем основные элементы, из которых строятся схемы. Это будет вашим словарем — он поможет ориентироваться в примерах диаграмм, которые мы будем разбирать дальше.
Цвет элементов вы можете выбирать сами, нотация это никак не регламентирует. Но чаще всего, специалисты не тратят на это время и рисуют диаграммы в привычном черно-белом.
Класс
Это блок любой объектно-ориентированной системы, который содержит свойства и методы. То есть он определяет, каким может быть объект.
![диаграмма классов](https://kaiten.ru/blog/content/images/2024/06/------38.png)
Название — это уникальное имя объекта, его нужно обязательно заполнить в верхней секции. В нашем примере, название класса — «Студент».
Свойства — это такие переменные, которые обозначают характеристики класса. В нашем случае, это номер зачетки и успеваемость.
Методы — это те действия, которые может выполнять этот класс. То есть студент может записаться на лекции и получить список прослушанных курсов.
Объект
Это экземпляр класса, то есть его версия со всеми его свойствами и методами. Обозначается так же, как и класс, — прямоугольником, но его имя подчеркивается.
![](https://kaiten.ru/blog/content/images/2024/06/------41.png)
В имени через двоеточие указывается название объекта и наименование его класса. Свойства описывать необязательно, так как они уже указаны в классе.
Интерфейс
Это набор доступных операций для объекта. В описании этого элемента нужно обязательно указать слово «Интерфейс», чтобы не перепутать его с объектом или классом.
![диаграмма юмл](https://kaiten.ru/blog/content/images/2024/06/------43.png)
Компонент
Это большая часть системы. Например, файл или библиотека приложения. Чтобы отобразить этот элемент, используют специальный символ:
![варианты использования](https://kaiten.ru/blog/content/images/2024/06/------34-1.png)
Узел
Это то же самое, что и компонент, но еще больше. Например, сервер или база. На схеме изображается в виде трехмерного куба, а внутри него указывается имя.
![uml язык](https://kaiten.ru/blog/content/images/2024/06/------44.png)
Пакет
Он объединяет похожие объекты в одну группу. В пакет можно сгруппировать почти все элементы: классы, компоненты или узлы. А несколько пакетов можно объединить в один — такой вот пакет с пакетами.
![unified modeling language](https://kaiten.ru/blog/content/images/2024/06/------37.png)
Состояние
Речь о состоянии, в котором находится система. Изображается прямоугольником со скругленными углами. В диаграмме это выглядит так:
![система](https://kaiten.ru/blog/content/images/2024/06/------48.png)
Заметка
Это комментарий, который можно оставить к любому элементу, чтобы уточнить подробности
![объект](https://kaiten.ru/blog/content/images/2024/06/------36.png)
Вариант использования
Это набор действий, которые может выполнять система. Например, приложение может показать, какие курсы может пройти студент.
![бизнес процесс](https://kaiten.ru/blog/content/images/2024/06/------35.png)
Связь
Это простая линия, которая соединяет объекты, чтобы показать связь между ними. Например, компонент «Библиотека» связан с интерфейсом приложения.
![объектно ориентированный](https://kaiten.ru/blog/content/images/2024/06/------39.png)
Взаимодействие
Это стрелка, которая показывает, как один объект обращается к другому. То есть это такой вид связи, где элементы не просто соединяются, а передают конкретную информацию. Поэтому над UML-стрелкой прописывают, что за данные отправляются.
![диаграмма взаимодействия](https://kaiten.ru/blog/content/images/2024/06/------40.png)
Зависимость
Это пунктирная стрелка. Она показывает, что объекты связаны: если в одном поменяются данные, то и в другом тоже. Например, если студент прослушает еще одну лекцию, то прогресс обучения изменится.
![модель uml](https://kaiten.ru/blog/content/images/2024/07/------58.png)
Агрегация
Показывает взаимосвязь чего-то целого с его частями. Элемент, из которого она берет начало — это маленькая часть. А элемент, в который она попадает, — это главный целый объект.
![виды связей](https://kaiten.ru/blog/content/images/2024/06/------47.png)
Обобщение или наследование
Это незакрашенная стрелка, которая показывает, что один объект наследует свойства другого.
![диаграмма связей](https://kaiten.ru/blog/content/images/2024/06/------46.png)
Виды диаграмм и где их применять
Со словарем разобрались. Теперь рассмотрим типы диаграмм и поймем, для чего они вообще нужны.
Нотация UML делит объектно-ориентированные диаграммы на две основные группы:
1. Структурные — описывают структуры объектов в системе и иллюстрируют связь между ними.
2. Поведенческие — показывают поведение системы и ее взаимодействие с пользователями, другими системами и прочими сущностями.
В каждой группе разберем отдельные виды: от самых популярных к менее популярным.
![сценариев использования](https://kaiten.ru/blog/content/images/2024/06/------51.png)
Структурные диаграммы
Диаграмма классов (Class diagram) описывает статичную структуру системы, показывает классы, их атрибуты, поведение и связь друг с другом. Это база, которая используется почти во всех объектно-ориентированных методах.
![структурная диаграмма](https://kaiten.ru/blog/content/images/2024/06/------59.png)
Диаграмма развертывания (Deployment diagram) показывает развертывание программного решения и связь аппаратных компонентов между собой.
![диаграмма развертывания](https://kaiten.ru/blog/content/images/2024/06/------54.png)
Чаще всего ее используют, чтобы оценить производительность системы и ее масштабируемость. Особенно полезна, если ваше решение развертывается на нескольких машинах.
Диаграмма пакетов (Package diagram) отображает различные виды системы. По сути, она группирует классы в пакеты и этим упрощает сложную диаграмму классов.
![диаграмма деятельности](https://kaiten.ru/blog/content/images/2024/06/------52.png)
Такая диаграмма хорошо показывает зависимости между различными пакетами в системе. Поэтому она отлично подойдет, чтобы сделать UML-модель многоуровневого приложения.
Диаграмма объектов (Object diagram) показывает не только связь между объектами, но и описывает конкретные свойства каждого класса. То есть в каждом компоненте системы описываются примеры, как структура данных выглядит в конкретный момент времени.
![диаграмма состояний](https://kaiten.ru/blog/content/images/2024/06/------45.png)
Диаграмму объектов рисуют редко. Но поскольку она подробно описывает данные, ее можно использовать для визуализации сложных связей. Так будет проще понять состояние системы и проверить, все ли компоненты на месте.
Диаграмма компонентов (Component diagram) показывает, как компоненты связываются друг с другом, формируясь в более крупные.
![uml пример](https://kaiten.ru/blog/content/images/2024/06/------53.png)
Она подходит для работы со сложной системой, так как очень детально делит ее на мелкие составляющие.
Диаграмма композитной структуры (Composite structure diagram) описывает внутреннюю структуру всех классов и как элементы этих классов влияют друг на друга.
![uml пример](https://kaiten.ru/blog/content/images/2024/07/------63.png)
Она помогает обрисовать всю внутрянку аппаратного обеспечения и понять, как это всё работает.
Диаграмма профилей (Profile diagram) позволяет создать стереотипы, характерные для домена и платформы, и описать связь между ними.
![диаграмма связей](https://kaiten.ru/blog/content/images/2024/07/------60.png)
То есть в этой диаграмме можно нарисовать формы стереотипов, связать их с композицией и визуализировать их значения.
Поведенческие диаграммы
Диаграмма деятельности, или диаграмма активности, (Activity diagram) показывает последовательность рабочих процессов, описывает действия и решения на каждом этапе.
![диаграмма действий](https://kaiten.ru/blog/content/images/2024/06/------50.png)
Диаграмма активности подходит не только для моделей вычислительных алгоритмов, но и организационных. Поэтому ее часто используют для описания бизнес-процессов.
Диаграмма прецедентов, или диаграмма вариантов использования, (Use case diagram) изображает, как пользователь взаимодействует с системой. Она объясняет на сценариях использования, кому какие функции доступны и как при этом отрабатывает система.
![диаграмма прецедентов](https://kaiten.ru/blog/content/images/2024/06/------56.png)
На этой диаграмме действий можно описать любые сценарии и даже показать переходы между ними. Обычно, такие схемы интуитивно понятны даже тем, кто технически не подкован.
Диаграмма последовательности (Sequence diagram) показывает, как между собой взаимодействуют объекты и в какой последовательности они это делают.
![диаграмма последовательности](https://kaiten.ru/blog/content/images/2024/06/------57.png)
Обычно ее используют как дополнение к диаграмме прецедентов, так как она подробнее описывает логику сценария. Это один из способов задокументировать проект.
Диаграмма обзора взаимодействия (Interaction overview diagram) тоже описывает взаимодействия объектов, как и диаграмма активностей, но имеет более сложную структуру. Эта схема содержит в себе несколько узлов, и каждый узел — другая диаграмма взаимодействия.
![диаграмма взаимодействия](https://kaiten.ru/blog/content/images/2024/07/------n.png)
Из описания становится понятно, что эта диаграмма нужна, чтобы соединить в себе несколько диаграмм взаимодействия и показать связь между ними..
Диаграмма состояний (Statechart diagram) описывает состояния, в которых находится объект, как эти состояния меняются и что на это влияет.
![диаграмма состояний](https://kaiten.ru/blog/content/images/2024/07/------62.png)
Она отражает весь жизненный цикл и помогает лучше понять системы.
Диаграмма коопераций, или диаграмма коммуникации, (Communication diagram) описывает логику, по которой объекты взаимодействуют друг с другом и обмениваются данными.
![диаграмма коммуникации](https://kaiten.ru/blog/content/images/2024/07/------61.png)
С ней легче понять роли объектов, но последовательность событий она не отражает. Поэтому чаще всего диаграмма кооперации работает в паре с диаграммой последовательности.
Применение UML-диаграмм: какие задачи они решают
С классификацией диаграмм мы разобрались. Теперь посмотрим, какой тип лучше выбрать под свою потребность.
Формирование требований к проекту:
Первые две задачи могут закрываться на стороне заказчика. Во-первых, для него это отличный способ объяснить, что он хочет от системы. Во-вторых, создание диаграмм поможет в дальнейшем: аналитик быстрее опишет, кто может взаимодействовать с системой и какие функции будут доступны. Поэтому третья задача из списка как раз для него.
Создание проекта решения и архитектуры:
Первыми двумя задачами занимается аналитик, чтобы описать функциональные возможности системы. Третью и четвертую — берет на себя архитектор, чтобы прояснить технические моменты. А две последние — ложатся на плечи разработчика, чтобы он довел дело до конца.
Как построить диаграмму: с чего начать и какие инструменты использовать
Как вы уже поняли, диаграммы UML подчиняются очень конкретному набору правил. Изучение языка UML и освоение всех видов диаграмм отнимает немало времени. «Сложно», — скажете вы. «Всё возможно», — ответим мы.
Три совета, перед тем как приступить к составлению диаграмм
1. Изучите основные элементы UML и их предназначение.
Освойте базу: какие графические объекты существуют и для чего их можно использовать. Заучивать всё необязательно: документация насчитывает почти 700 страниц. Достаточно уметь в ней ориентироваться и обращаться по точечным вопросам.
2. Посмотрите примеры уже готовых диаграмм.
Чем больше насмотренности, тем лучше. Вам станет понятней, какие схемы можно использовать под ваши процессы.
3. Поймите, нужно ли ваш процесс описывать в UML.
Нотацию придумали, чтобы описывать крупные и сложные системы. Если ваш процесс прост, не стоит усложнять его разработку и тратить свои ресурсы на отрисовку диаграмм.
Если вы готовы приступать к практике, для этого лучше использовать специальные программы.
Сервисы-помощники для построения диаграмм
Рисовать диаграммы можно и в обычных графических редакторах. Но, к счастью, для этого придумали специальные сервисы с готовыми наборами элементов, которые облегчат вашу работу. Делимся самыми популярными.
Draw.io — бесплатный и интуитивно понятный онлайн-сервис. В нем не нужно регистрироваться: достаточно указать, где сохранить готовую диаграмму. Он интегрируется с Jira и Confluence и разрешает командную работу.
Lucidchart — сервис с бесплатным базовым тарифом, который тоже поддерживает совместную работу над файлом. А кроме стандартного набора функций, он может предложить уже готовые шаблоны диаграмм.
Visual Paradigm — пользоваться им бесплатно можно только первые 30 дней. Облачное хранилище — 1 Гб. В остальном он ничем не отличается от Draw.io и Lucidchart.
Createl — у него тоже есть бесплатный тарифный план с хранилищем до 100 Мб. В нем больше функций, чем в стандартных сервисах: пользовательские базы данных, управление задачами, возможность печати, Wiki и заметки.
StarUML — базовый тарифный план тоже бесплатный. Сервис умеет импортировать и экспортировать в форматах PDF, XML, PNG и JSON HTML, но не поддерживает SVG, JPEG, PNG и WMF.
Подводим итоги
UML — это унифицированный язык моделирования. Его используют в IT и в менеджменте для графического описания процессов в компании.
База, с которой нужно разобраться в начале, — словарь UML.
Освойте значения элементов первой необходимости и их обозначение: класс, объект, интерфейс, компонен, узел, пакет, состояние, заметка, вариант использования, связь, взаимодействие, зависимость, агрегация, обобщение.
Основные виды диаграмм делятся на две большие группы:
1. Структурные — описывают все характеристики статичных объектов и их взаимодействие друг с другом. Это диаграммы классов, развертывания, пакетов, объектов, компонентов, композитной структуры и профилей.
2. Поведенческие — показывают поведение системы и ее взаимодействие с другими сущностями. Это диаграммы активности, прецедентов, последовательности, обзора взаимодействий, состояний и коопераций.
Преимущества UML:
- точная нотация: готовые стандарты для описания диаграмм и никаких недопониманий внутри команды;
- понятная визуализация: глядя на готовую диаграмму, проще понять, как устроен процесс;
- широта использования: язык понятен многим специалистам мира
Список задач, которые можно закрыть с помощью UML-моделирования, достаточно широкий. В IT специалисты объясняют все технические моменты системы, описывают ее функциональные возможности и проясняют, как с ней взаимодействует пользователь, а в менеджменте — описание структуры компании, ее бизнес-процессов и не только.
![вкусвилл](https://kaiten.ru/blog/assets/img/kw-logo/vkusvill.png)
![СБЕР](https://kaiten.ru/blog/assets/img/kw-logo/sber.png)
![додо пицца](https://kaiten.ru/blog/assets/img/kw-logo/dodo.png)
![Альфа-Банк](https://kaiten.ru/blog/assets/img/kw-logo/alfa-bank.png)
![МегаФон](https://kaiten.ru/blog/assets/img/kw-logo/megafon.png)
![самолет](https://kaiten.ru/blog/assets/img/kw-logo/camolet.png)
![Эксмо](https://kaiten.ru/blog/assets/img/kw-logo/exmo.png)
![Сколково](https://kaiten.ru/blog/assets/img/kw-logo/sk.png)