Открыть сервис

Unified Modeling Language

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

История

Разработка UML началась в середине 1990-х годов как попытка унифицировать три ведущих объектно-ориентированных метода моделирования: метод Гради Буча (Booch), метод Джеймса Рамбо (OMT, Object Modeling Technique) и метод Ивара Якобсона (OOSE, Object-Oriented Software Engineering). В 1994 году Буч и Рамбо объединили усилия в компании Rational Software, к которым в 1995 году присоединился Якобсон. Результатом их работы стала версия UML 0.9, выпущенная в 1996 году.

В 1997 году консорциум OMG (Object Management Group) принял UML версии 1.1 в качестве стандарта. Дальнейшее развитие языка происходило под эгидой OMG: в 2005 году была принята версия UML 2.0, существенно переработавшая семантику и добавившая новые типы диаграмм. Актуальной на 2024 год является версия UML 2.5.1, принятая в 2017 году. В 2017 году спецификация UML также была опубликована Международной организацией по стандартизации (ISO) как стандарт ISO/IEC 19505-1:2012.

Классификация диаграмм

Структура UML 2.x включает 14 типов диаграмм, которые делятся на две основные категории: диаграммы структуры и диаграммы поведения.

Диаграммы структуры

Описывают статическую архитектуру системы — её элементы и отношения между ними. К ним относятся:

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

Диаграммы поведения

Описывают динамические аспекты системы — процессы, состояния и взаимодействия. Включают:

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

Основные элементы и нотация

Базовыми элементами UML являются:

  • Класс — прямоугольник с тремя секциями: имя, атрибуты, операции. Модификаторы доступа обозначаются символами: + (public), - (private), # (protected), ~ (package).
  • Интерфейс — прямоугольник с надписью «interface» или кружок, обозначающий предоставляемый интерфейс.
  • Отношения — линии различных типов: ассоциация (сплошная линия), наследование (стрелка с пустым треугольником), агрегация (ромб с пустым центром), композиция (ромб с заливкой), зависимость (пунктирная стрелка).
  • Стереотипы — расширения нотации, записываемые в двойных угловых скобках, например <<interface>>, <<abstract>>, <<component>>.

Применение

UML применяется в следующих областях:

  • Проектирование программного обеспечения — основная сфера использования. UML позволяет зафиксировать архитектуру до написания кода, снижая риски ошибок.
  • Реверс-инжиниринг — генерация диаграмм из существующего кода для документирования унаследованных систем.
  • Моделирование бизнес-процессов — диаграммы деятельности и вариантов использования применяются для описания регламентов и требований.
  • Системная инженерия — моделирование аппаратно-программных комплексов, в том числе с помощью профилей SysML (System Modeling Language), который является расширением UML.
  • Обучение — UML используется в университетских курсах по объектно-ориентированному анализу и проектированию.

Инструменты

Существует множество инструментов для работы с UML, как коммерческих, так и открытых. К наиболее известным относятся: Enterprise Architect (Sparx Systems), Rational Rose (IBM), Visual Paradigm, StarUML, PlantUML (текстовое описание диаграмм), Papyrus (плагин для Eclipse). Средства автоматической генерации кода из UML-моделей и обратного проектирования встроены во многие современные IDE, включая IntelliJ IDEA и Visual Studio.

Критика

UML подвергается критике по ряду причин. Отмечается избыточная сложность языка: полная спецификация UML 2.5.1 занимает более 750 страниц, а изучение всех 14 типов диаграмм требует значительных усилий. Часто на практике используется лишь небольшое подмножество нотации (обычно диаграммы классов и последовательности). Также критикуется неоднозначность семантики некоторых конструкций, что приводит к различиям в интерпретации моделей разными инструментами. В среде сторонников гибких методологий (Agile) UML иногда рассматривается как излишний формализм, замедляющий разработку.

Источники

  • Object Management Group. OMG Unified Modeling Language (OMG UML), Version 2.5.1. — OMG Document Number formal/2017-12-05.
  • Буч Г., Рамбо Д., Якобсон А. Язык UML. Руководство пользователя. — 2-е изд. — М.: ДМК Пресс, 2006.
  • Фаулер М. UML. Основы. — 3-е изд. — СПб.: Символ-Плюс, 2004.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →