Занятие 2#
Между идеей и кодом зачастую лежит пропасть, глубиной в десятки часов реализации. В процессе работ легко сбиться, отклониться от задумки, пойти на технический компромисс и в конечном счете получить не то, что планировалось. Задача усложняется в несколько раз, если вам необходимо согласовать образ будущего проекта с коллективом разработчиков. Отдельное же удовольствие согласовать его с заказчиков, который может не понимать всей технологической сложности проекта.
Даже в команде программистов, занятых разработкой некоторого ПО, может отсутствовать коммуникация на уровне понятий: аналитик будет называть вещи по-своему, фронендер иными словами, а бэкендер наблюдать со стороны.
Если бы все могли общаться на одном универсальном, однозначном и понятным для всех участников языке, то это бы упростило весь процесс... И оказывается такой язык есть!
Что такое UML#
UML (Unified Modeling Language, Унифицированный Язык Моделирования) — язык графического описания для объектного моделирования в области разработки программного обеспечения, который также можно применять для моделирования бизнес-процессов, системного проектирования и отображения организационных структур.
Note
UML (Unified Modeling Language) — это унифицированный язык моделирования в бизнес-среде и рабочих процессах. Он помогает визуализировать сложные понятия, многосоставные системы, изображать их в виде понятных схем. По схемам участники команды — продакты, аналитики, программисты — говорят… вернее, видят на одном языке и понимают друг друга без погружения в код.
UML вообще не привязан к языкам программирования. Команда может кодить на Java, Python, C# — всё равно. Более того, ни языка программирования, ни программирования вовсе может не быть. Поэтому UML используют в разных сферах — не только в разработке.
Скажем, в бизнесе с помощью UML-диаграмм можно изобразить процессы по связанным между собой или зависимыми шагами: согласование договора, обработка жалобы клиента, подготовка отчёта и так далее. В производстве — визуализировать последовательность создания продукта. В логистике — этапы движения товаров от склада до клиента.
Вот пример последовательности действий клиента (пользователя) в интернет-магазине:
Расшифровка аббревиатуры UML:#
-
U — Unified (Унифицированный)
Большой набор элементов, входящих в нотацию, позволяет покрывать много задач на этапе анализа и проектирования.
Ещё одна версия происхождения этого слова кроется в том, что нотация объединила в себе несколько разнородных нотаций, существовавших ранее. -
M — Modeling (Моделирование)
Создание диаграмм заключается в разработке моделей, содержащих наполненные информацией и связанные между собой графические объекты. -
L — Language (Язык)
UML является искусственным языком и обладает свойствами языка: - словарь (графические символы),
- семантика (смысловые значения элементов),
- синтаксис (правила построения конструкций).
В нотацию также заложена возможность генерации кода из графической модели и генерация моделей из кода.
UML позволяет моделировать как верхнеуровневые бизнес-процессы, так и низкоуровневые процессы, происходящие внутри информационной системы.
История возникновения UML#
UML (Unified Modeling Language) появился в 1990-х годах как результат стремления стандартизировать и унифицировать существующие методы объектно-ориентированного моделирования.
До появления UML существовало множество различных нотаций и методологий, таких как:
- методология OMT (Object Modeling Technique) Джеймса Рамбо,
- Booch method Гради Буча,
- OOSE (Object-Oriented Software Engineering) Ивара Якобсона.
Эти методы широко применялись в промышленности, но имели разные обозначения и нотации, что затрудняло понимание, совместную работу и обучение.
В середине 1990-х годов Гради Буч, Джеймс Рамбо и Ивар Якобсон начали сотрудничать в компании Rational Software, чтобы объединить свои лучшие практики. Их целью было создание единой, универсальной нотации, которая могла бы охватывать весь жизненный цикл программного обеспечения — от анализа требований до реализации и поддержки.
Этот объединённый язык получил название UML. Впервые он был представлен в 1997 году, когда OMG (Object Management Group) утвердила UML как официальный стандарт.
После принятия UML как стандарта, он продолжал развиваться:
- UML 1.x включал базовые типы диаграмм и элементы моделирования.
- UML 2.0 (выпущен в 2005 году) значительно расширил возможности языка, добавив новые типы диаграмм, улучшенную архитектуру и поддержку более сложных систем.
Язык постоянно развивается, появляются новые элементы для моделирования более сложных систем. Актуальная сейчас версия нотации — UML 2.5.1 (на июнь 2025 года); новости и рекомендации можно найти на официальном сайте UML.org.
Каким бывают UML-диаграммы#
Нотация известна тем, что в неё входит много различных видов диаграмм:
Структурные диаграммы UML. Описывают систему статически#
Диаграмма | Описание |
---|---|
Диаграмма классов (Class Diagram) | Описывает систему в виде набора классов со свойствами, доступными методами и взаимосвязями между классами. |
Диаграмма объектов (Object Diagram) | Является экземпляром диаграммы классов и показывает конкретные значения свойств классов. |
Диаграмма пакетов (Package Diagram) | Описывает взаимосвязи пакетов. Пакет — группа классов, объединенных для упрощения сложной диаграммы классов. |
Диаграмма компонент (Component Diagram) | Описывает архитектуру компонентов (сервисы, интерфейсы, приложения и т.д.) и зависимости между ними. |
Диаграмма развертывания (Deployment Diagram) | Описывает архитектуру системы с точки зрения ее развертывания на физическом уровне. |
Диаграмма профилей (Profile Diagram) | Описывает пользовательские стереотипы и ограничения, применяемые к моделям. |
Диаграмма композитной структуры (Composite Structure Diagram) | Описывает внутреннюю структуру классов и взаимодействие элементов класса между собой. |
Структурные диаграммы UML. Описывают систему динамически#
Диаграмма | Описание |
---|---|
Диаграмма прецедентов (Use Case Diagram) Употребляется также термин «Диаграмма вариантов использования» |
Описывает набор функциональности (прецедент), доступной акторам (внешним для системы сущностям, например, пользователям). |
Диаграмма деятельности (Activity Diagram) | Описывает рабочий процесс внутри каждого прецедента. |
Диаграмма состояний (State Machine Diagram) | Описывает состояния, в которых может находиться каждый объект, и правила перехода из одного состояния в другое. |
Диаграммы взаимодействия: | |
— Диаграмма последовательности (Sequence Diagram) | Описывает логику взаимодействия и обмена данными между объектами в рамках прецедента в хронологическом порядке. |
— Диаграмма коммуникации (Communication Diagram) | Описывает логику взаимодействия и обмена данными между объектами в рамках прецедента. Схожа с sequence diagram, но без раскрытия хронологического порядка. |
— Диаграмма синхронизации (Timing Diagram) | Описывает как объекты ведут себя на временной шкале без отображения взаимосвязей между объектами. |
— Диаграмма обзора взаимодействия (Interaction Overview Diagram) | Описывает процесс взаимодействия объектов. Похожа на activity diagram, но более высокоуровневую, где каждый узел — другая диаграмма взаимодействия. |
С детальным описанием всех элементов нотации и правил их использования можно ознакомиться в официальной документации.
Из чего состоят диаграммы (Нотация UML)#
Note
Нотация — это набор стандартных символов и правил для UML-диаграмм. Что-то типа азбуки, где вместо слов и букв — фигуры, линии, стрелки.
Категория | Что означает | Примеры диаграмм, в которых используется |
---|---|---|
Структурные | Объект | Диаграмма классов, компонентов, развёртывания |
Поведенческие | Как ведёт себя система | Диаграмма активности, состояний, прецедентов |
Взаимодействия | Как взаимодействуют части системы | Диаграммы последовательностей, коммуникаций |
Архитектурные | Как устроена система на уровне блоков | Диаграмма компонентов, пакетов |
А вот они на схеме:
Условно все элементы, которые используются в UML-диаграммах, можно разделить на три большие группы:
Графические элементы — это основные строительные блоки диаграмм, такие как:
- прямоугольники (обозначают классы, компоненты и другие сущности),
- овалы (обозначают варианты использования и действия).
Связи — это разные типы линий, показывающие, как элементы связаны между собой:
- стрелки, линии с наконечниками, пунктирные линии и т.д.
Специальные обозначения — это технические метки, которые добавляют смысл:
- например, «<
- или «1..*», обозначающее количество объектов в связи.
Warning
Один и тот же визуальный элемент может обозначать **разные вещи** в зависимости от типа диаграммы. Поэтому важно учитывать контекст.
Класс#
Класс — это типовой объект или набор объектов с общими характеристиками и поведением.
Это что-то типа шаблона для обозначения главного объекта системы.
Если у нас онлайн-магазин, то класс — это заказ.
Если у нас онлайн-школа, класс — это студент.
На схеме класс изображается в виде прямоугольника из трёх частей:
- В верхней части написано имя класса — его название.
- В средней части указаны свойства — все переменные характеристики, например,
ID
. - В нижней части перечислены доступные действия — методы, которые выполняет объект-класс.
Примеры:
- Заказ может создаваться и выполняться.
- Студент может записываться и сдавать задания.
Объект#
Это уже конкретный экземпляр
класса. Типовой объект приобретает имя. Выглядит также как класс, но имя подчёркнуто. И вместо пустых значений-заглушек — конкретные свойства.
Интерфейс#
Интерфейс — это список действий, которые может выполнять объект.
Чтобы понять, что такое интерфейс, представьте себе, скажем, монитор, на котором написано:
«Нажми вот эту кнопку, чтобы я включился,
а вот этот кабель вставь в девайс».
Монитору всё равно, подключите ли вы другой компьютер, системный блок или плейстейшен — важно как именно вы это сделаете.
Именно это и означает интерфейс — он описывает набор доступных операций, а не то, кто именно ими будет пользоваться.
Как это выглядит в UML?
- В нотации UML рядом с объектом указывается пометка "Интерфейс".
- Далее идёт список действий, которые может выполнять объект.
- На диаграмме от объекта к интерфейсу ведёт пунктирная стрелка (реализация интерфейса).
Интерфейс позволяет описывать поведение без конкретной реализации, что удобно при проектировании гибкой и расширяемой архитектуры.
Компонент#
Компонент — это крупная функциональная часть системы, логический элемент, который показывает, что делает система.
Если у нас, например, сервис или приложение для доставки, то в его составе будет несколько компонентов:
- Библиотека — отвечает за хранение и обработку книг или товаров;
- Каталог — управляет списком доступных товаров или услуг.
Как это выглядит в UML?
- Компонент обозначается прямоугольником с двумя маленькими прямоугольниками на одной из граней,
либо с помощью пометки<<component>>
. - С другими элементами он соединяется непрерывной линией с кружком на конце.
Компоненты позволяют визуализировать архитектуру системы, разделяя её на независимые функциональные блоки.
Узел#
Узел — это ещё более крупный элемент системы, который объединяет в себе компоненты.
Если компонент отвечает за то, что делает система, то узел показывает, где она это делает.
Чаще всего под узлами понимают оборудование и инфраструктуру:
- серверы,
- базы данных,
- другие физические или виртуальные устройства.
Как это выглядит в UML?
- Обычно узел изображают в виде куба.
Узлы помогают визуализировать физическое размещение компонентов системы и инфраструктурную часть её архитектуры.
Юзкейс#
Конкретное применение, варианты использования, которые могут быть совершены:
- Сделать заказ
- Оплатить заказ
- Войти в личный кабинет
- Просмотреть историю заказов
- Отменить заказ
- Зарегистрироваться
- Выйти из системы
- И многие другие…
Их множество, так как система поддерживает широкий функционал.
Как это выглядит в UML?
- Вариант использования (use case) изображается овалом.
- Внутри овала вписывается название варианта использования, например:
«Сделать заказ», «Оплатить», «Войти в личный кабинет» и т.д. - Акторы, взаимодействующие с системой, изображаются в виде человечков (палочек).
- Связи показывают, какие акторы запускают какие варианты использования.
Актор#
Действующее лицо, которое находится рядом с нашей системой, называют актором.
Например, если у нас онлайн-магазин,
- Объектом может быть заказ,
- А в происходящем "спектакле" участвуют внешние акторы — курьер, покупатель.
Актор — это тот, кто взаимодействует с системой и инициирует варианты использования.
Изображение в диаграмме:
- Актор рисуется в виде человечка (палочки),
- Он расположен рядом с овалом use case, с которым взаимодействует.
Почему актор не включается в UML-диаграмму как класс или объект
Потому что в use case диаграммах мы описываем, как действует и работает система,
а люди здесь выступают как актеры, которые взаимодействуют с системой,
но сами по себе не являются её частью в терминах классов или объектов.
Таким образом, акторы — это внешние участники процесса, показывающие, кто и как использует систему.
Пакет#
Пакет — это способ группировки элементов системы в логические блоки.
- Может включать в себя разные элементы:
- объекты,
- классы,
- компоненты,
-
узлы и другие.
-
Пакеты можно вкладывать друг в друга, создавая иерархию, как шкафчики дома под раковиной.
Внешний вид пакета на диаграмме:
- Представлен в виде прямоугольника с отогнутым верхним правым углом,
- Внутри прямоугольника размещается название пакета,
- А также группируются все элементы, входящие в этот пакет.
Заметка#
Поясняющая записка — это дополнительный текст, поясняющий элементы диаграммы.
- В UML записка изображается как прямоугольник с загнутым (отогнутым) верхним правым углом,
- Внешне напоминает стикер или страницу книги, на которой остановился читатель.
Назначение:
- Добавить комментарий, пояснение или уточнение,
- Помочь лучше понять содержимое диаграммы.
Связи#
В UML-диаграммах связи показывают, как элементы взаимодействуют друг с другом.
Основные виды связей на диаграммах вариантов использования (use case):
-
Ассоциация
Показывает, что актор взаимодействует с вариантом использования.
Изображается сплошной линией между актором и овалом use case. -
Включение (include)
Обозначает обязательное включение одного варианта использования в другой.
Изображается пунктирной стрелкой с надписью «<>» от базового варианта к включаемому. -
Расширение (extend)
Показывает, что один вариант использования может расширять поведение другого, но необязательно.
Изображается пунктирной стрелкой с надписью «<>» от варианта расширения к базовому. -
Обобщение (generalization)
Отражает наследование вариантов использования или акторов, когда один элемент является специализированной версией другого.
Изображается сплошной линией с пустой треугольной стрелкой на сторону базового элемента.
Пример описания связей:
- Актор Покупатель ассоциирован с вариантом использования Оформление заказа — это значит, что покупатель может инициировать процесс оформления заказа.
- Вариант использования Оплата заказа включается в Оформление заказа, поскольку оплата является обязательной частью оформления.
- Вариант Регистрация пользователя может расширять вариант Оформление заказа, добавляя дополнительный шаг при необходимости.
- Актор Пользователь системы обобщает акторов Покупатель и Администратор, поскольку они оба являются пользователями, но с разными ролями.
Диаграммы#
Теперь рассмотрим прримеры диаграмм из ранее рассмотренных
Диаграмма классов#
Диаграмма классов
отображает типы классов системы и различные связи между классами. На диаграммах этого типа изображаются также атрибуты классов, операции классов и ограничения, которые накладываются на связи между классами.
Наиболее популярная UML-диаграмма. Она показывает основные кирпичики системы — классы, их свойства и связи между ними. Например, при проектировании кода или в бизнесе.
Понятие | Описание | Изображение |
---|---|---|
Класс, его атрибуты и операции | Класс — сущность, фигурирующая в системе. Атрибуты класса — свойства объектов класса. Операция — функция над классом или его преобразование. Может иметь параметры и возвращать значения. |
![]() |
Связи | Основные типы связей: - ассоциация - агрегация - наследование |
|
Ассоциация (association) | Отношения между экземплярами классов. Каждый конец ассоциации имеет кратность (multiplicity), показывающую, сколько объектов может участвовать в отношении. В примере: у каждого Товара может быть несколько Записей в накладной, но каждая Запись связана с одним Товаром. Ассоциации могут иметь имя — глагол или словосочетание, описывающее связь. |
![]() |
Агрегация (aggregation) | Ассоциация типа «целое-часть». Ромб на конце связи указывает агрегирующий класс (целое). Объекты-части могут существовать отдельно от целого. |
![]() |
Композиция (composition) | Специальный тип агрегации, где части не могут существовать отдельно и уничтожаются вместе с целым. Изображается как ассоциация с закрашенным ромбом. Пример: дом (целое) — комнаты (части). |
![]() |
Наследование (inheritance) | Отношение «общее-частное». Позволяет создавать иерархию классов, где производный класс наследует поведение и структуру базового. | ![]() |
Диаграмма прецедентов (вариантов использования) — или диаграмма юзкейсов#
Диаграмма прецедентов (Use Case)
. Показывает, что пользователи могут делать в системе — например, зарегистрироваться или оформить заказ. При этом пользователей называют «акторами», а их действия — «прецедентами». Схема помогает понять, какие функции важны для пользователя. Удобна для планирования требований к системе.
Элемент | Описание | Изображение |
---|---|---|
Участник (actor) | Роль (человек) или система (подсистема, класс), взаимодействующая с прецедентами. | ![]() |
Прецедент (use case) | События, выполняемые системой, приводящие к наблюдаемому результату. Показывает что делает система, а не как. |
![]() |
Интерфейс | Совокупность операций, обеспечивающих необходимый функционал для акторов. | ![]() ![]() ![]() |
Отношение | Назначение | Изображение |
---|---|---|
Ассоциация | Обозначает роль актера в конкретном прецеденте. | ![]() |
Расширение | Прецедент может расширяться дополнительным поведением, определённым в другом прецеденте. | ![]() |
Обобщение | Указывает, что один прецедент или актор является обобщением другого. | ![]() |
Включение | Один прецедент включает поведение другого прецедента как составную часть своей последовательности действий. | ![]() |
Диаграмма пакетов#
Диаграммы пакетов
унифицированного языка моделирования отображают зависимости между пакетами, составляющими модель.
Позволяет объединять элементы системы в логические блоки — как те самые пакеты с пакетами под раковиной. Причём каждый из них аккуратно подписан, чтобы было понятно, какие именно пакеты лежат внутри.
Эта диаграмма встречается реже, и она полезна в больших проектах, где много модулей. В деле она позволяет упростить понимание структуры кода — когда нужно охватить очень много информации разом.
Диаграмма активностей#
Диаграмма активностей (видов деятельности) отображает динамические аспекты поведения системы. Эта диаграмма представляет собой блок-схему, которая наглядно показывает, как поток управления переходит от одной деятельности к другой.
Изображение | Название элемента | Объяснение |
---|---|---|
![]() |
Начальное состояние/узел (Start state) | Обозначает начало процесса. Используется самостоятельно или с элементом Комментарий, объясняющим условия старта процесса. |
![]() |
Активное состояние (Active state) | Главный строительный блок диаграммы. Описывает состояние/действие, составляющее моделируемый процесс. |
![]() |
Переход (Transition) (Object in state) | Обозначает переход при завершении одного состояния в другое состояние. |
![]() |
Сообщение (Event message) | Обозначает сообщение/поток данных, получаемых в состоянии. |
![]() |
Синхронизатор/узел соединения (Joint/Synchronization bar) | Используется при переходе нескольких состояний/действий в одно. Может быть как горизонтальным, так и вертикальным. |
![]() |
Разветвитель/узел разделения (Fork) | Используется при переходе из одного состояния/действия в несколько. Может быть как горизонтальным, так и вертикальным. ![]() |
![]() |
Принятие/узел решения (Decision) | Обозначает решение (аналог шлюза в BPMN). Из решения доступны как минимум 2 перехода с указанными условиями (часто: да/нет). |
![]() |
Комментарий (Note) | Комментарий к состоянию/действию, переходу, старту/окончанию процесса и т.д. |
![]() |
Узел передачи сигнала (Send signal) | Действие, которое на основе своих входов создает экземпляр сигнала и передает его объекту цели. |
![]() |
Узел приема события (Receive signal) | Действие, которое ожидает наступление некоторого события. |
![]() |
Необязательный фрагмент/Цикл (Option loop) | Необязательный фрагмент. Выполняется, только если условие выполнено. Элемент используется также для циклов. ![]() ![]() |
![]() |
Узел финала потока (Flow final) | Окончание определенного потока процесса. |
![]() |
Условие (Condition) | Условие перехода. |
![]() |
Конечное состояние/узел (Final state) | Окончание процесса в целом. |
Диаграмма последовательности (Sequence diagram)#
Диаграммы последовательностей (Sequence diagram) используются для уточнения диаграмм вариантов использования для более детального описания логики сценариев использования.
Диаграмма последовательности
— sequence diagram — это наглядное представление совокупности разных элементов модели системы, изображение того, как и в каком порядке они взаимодействуют.
Диаграммы подробно описывают, как выполняются разные операции. При этом — исходя из слова «последовательность» — такие диаграммы показывают временной порядок или хронологию: то, когда, как и в какой очереди передаются сообщения.
Элементы диаграммы
Изображение | Название элемента | Объяснение |
---|---|---|
![]() |
Участник процесса | Обозначает участника, выполняющего действия в процессе. |
![]() |
Класс-Разграничитель (Boundary) | Используется для классов, отделяющих внутреннюю структуру системы от внешней среды (экранная форма, пользовательский интерфейс, устройство ввода-вывода). |
![]() |
Класс-контроллер (Control) | Активный элемент, используемый для выполнения операций над объектами (программный компонент, модуль, обработчик). |
![]() |
Класс-сущность (Entity) | Обычно применяется для обозначения классов, которые хранят информацию о бизнес-объектах (соответствует таблице или элементу БД). |
Фреймы и операнды#
Note
Фрейм - элемент, позволяющий объединить отдельные взаимодействующие между собой элементы диаграммы. Фрейм должен содержать метку оператора взаимодействия (операнда).
Основные операнды:
- sd - Диаграмма последовательности (sequence diagram); используется для очерчивания всей диаграммы последовательности, если это необходимо
- alt - Несколько альтернативных фрагментов; выполняется только тот фрагмент, условие которого истинно
- opt - Необязательный фрагмент; выполняется, только если условие истинно. Эквивалентно alt с одной веткой
- neg - Отрицательный фрагмент; обозначает неверное взаимодействие. Полезен в случае, если некоторые последовательности должны быть запрещены явно.
Например, на схеме выше приведена часть последовательности для взаимодействия Снятие наличных, которая содержит фрагмент neg, вложенные в фрагмент opt. Neg будет выполняться, только если выполнено сторожевое условие (ПИН-код неверный). В этом случае событие предоставитьМенюОпций() является недопустимым или запрещенным.
- break - Завершение; представляет собой сценарий завершения. Обычно содержит сторожевое условие, при истинности которого выполняется фрагмент Звершение, а оставшаяся часть фрейма игнорируется.Если сторожевое значение принимает значение “ложь”, то операнд Завершение игнорируется и выполняется оставшаяся часть фрагмента взаимодействия, содержащего операнд.
- par - Параллельный; все фрагменты выполняются параллельно
- critical - Критический регион; фрагмент может иметь только один поток, выполняющийся за один прием
- loop - Цикл; фрагмент может выполняться несколько раз, а защита обозначает тело итерации
- ref - Ссылка; ссылается на взаимодействие, определенное на другой диаграмме. Фрейм рисуется, чтобы охватить линии жизни, вовлеченные во взаимодействие. Можно определять параметры и возвращать значение
Применение UML к разным задачам#
Задача | Диаграммы |
---|---|
Необходимо описать взаимодействия между пользователем и системой и предоставить описание процесса её функционирования | Диаграмма прецедентов/вариантов использования (Use Case Diagram) |
Необходимо раскрыть последовательность действий для конкретного прецедента | Диаграмма деятельности (Activity Diagram) |
Необходимо разделить объекты на классы, описать их свойства, интерфейсы и способы взаимодействия между собой | Диаграмма классов (Class Diagram) |
Необходимо описать жизненный цикл конкретного класса, условия перехода в каждое из состояний | Диаграмма состояний (State Machine Diagram) |
Необходимо описать как объекты взаимодействуют друг с другом, как обмениваются данными | Диаграмма последовательности (Sequence Diagram) |
Необходимо описать архитектуру | - Диаграмма пакетов (Package Diagram) - Диаграмма компонентов (Component Diagram) - Диаграмма развертывания (Deployment Diagram) |
Применение UML разными ролями#
Давайте разберемся, кому и какие UML-модели могут пригодиться в работе.
UML для Заказчика#
Задачи Заказчика | Диаграммы UML |
---|---|
Формирование исходных верхнеуровневых требований к проекту | диаграмма прецедентов диаграмма классов |
Согласование финальных требований к проекту | диаграмма деятельности диаграмма состояний диаграмма развертывания |
📌 Диаграмма прецедентов (use case diagram) поможет Заказчику понятным языком описать то, что он хочет получить от системы.
Другие виды моделей позволяют детализировать эти требования.
💡 Использование UML Заказчиком может помочь сократить дальнейший анализ требований аналитиком.
Обычно заказчики не любят самостоятельно изучать созданные в таком виде модели,
но их удобно использовать при:
- проведении интервью,
- уточнении требований,
- согласовании документации,
- презентации решений.
UML для Аналитика#
Основное, с чем работает Аналитик — это требования и описание функциональных возможностей, которые нужно реализовать.
Задачи Аналитика | Диаграммы UML |
---|---|
Сбор требований к проекту | диаграмма прецедентов (use case) |
Проектирование решения | диаграмма классов |
Согласование проектного решения с коллегами и Заказчиком | диаграмма деятельности диаграмма состояний диаграмма последовательности |
🧩 Использование UML аналитиком позволяет улучшить коммуникации с командой и заказчиком и сократить время согласования проектного решения.
Разработчику будет проще понять по визуализированной модели, что требуется реализовать,
а заказчику — будет ли будущая система соответствовать ожиданиям.
- Опишите ролевую модель с помощью диаграммы прецедентов (Use Case Diagram).
Она показывает, какие пользователи будут работать с системой и какие функции им доступны.
👉 Подходит для интервью с заказчиком — можно делать наброски на лету.
💬 Замечание: часто путают use case diagram и формат описания use case — не делайте такую ошибку!
Эти методы дополняют друг друга, но не заменяют.
✏️ Написанный use case можно проиллюстрировать диаграммой прецедентов.
-
Опишите объекты, их свойства и методы, а также связи — с помощью диаграммы классов (Class Diagram).
-
Опишите реализуемые процессы — через диаграмму деятельности (Activity Diagram).
-
Если вы системный аналитик —
опишите детализированную логику работы системы с помощью диаграммы последовательности (Sequence Diagram).
Это один из самых удобных видов диаграмм для разработчиков, реализующих описанную логику.
UML для программного проектировщика#
Архитекторы разрабатывают UML-диаграммы так же часто, как и аналитики, но чаще сосредотачиваются на технической стороне системы, в том числе на её эксплуатации.
Например, с помощью диаграммы развертывания можно показать, из каких компонентов состоит система в данный момент.
Задачи Проектировщика | Диаграммы UML |
---|---|
Проектирование архитектуры решения | диаграмма развертывания |
Согласование архитектуры с заинтересованными лицами (команда разработки, заказчик, служба информационной безопасности, DevOps, служба поддержки и др.) | диаграмма компонентов диаграмма пакетов |
UML для Разработчика#
Если Аналитик и Архитектор разрабатывают модели, то разработчик чаще является стороной, «принимающей» их. Пожалуй, чаще всего разработчикам приходится сталкиваться с сиквенс-диаграммами.
Задачи Разработчика | Диаграммы UML |
---|---|
Разработка или модификация структуры решения | диаграмма классов диаграмма состояний |
Согласование решения с участниками команды | диаграмма деятельности диаграмма последовательности |
Выбери инструмент для построения диаграммы#
🔹 Draw.io
Бесплатная, исключительно простая, запускается прямо в браузере. Позволяет сразу сохранить результат в облако или на устройство. После запуска предлагает выбрать тип диаграммы и создает драфт.
StarUML
Профессиональный инструмент для разработчиков. Сложнее в освоении, но и гораздо мощнее по возможностям.
- Устанавливается на компьютер (доступен для macOS и Windows).
- Платный — разовая покупка лицензии на одного пользователя.
- Поддерживается и регулярно обновляется.
Подходит тем, кто серьезно работает с моделированием и интеграцией UML в разработку.
Lucidchart
Не специализирован только на UML — это универсальный инструмент для визуализации.
- Онлайн-доска с красивым и интуитивным интерфейсом.
- Предлагает темплейты и готовые решения под разные роли и уровни пользователя.
- Большой выбор фигур, стрелок, заметок, стилей и цветовых тем.
- Отлично подходит для совместной работы в команде.