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

UML

UML (Unified Modeling Language, единый язык моделирования) — это графический язык для визуализации, специфицирования, конструирования и документирования артефактов программных систем. UML представляет собой нотацию, предназначенную для описания структуры, поведения и взаимодействия компонентов объектно-ориентированных систем, и является стандартом де-факто в области программной инженерии. Язык разработан консорциумом Object Management Group (OMG) и принят в качестве международного стандарта ISO/IEC 19505.

История

Предпосылки создания

В конце 1980-х — начале 1990-х годов в объектно-ориентированном программировании существовало множество конкурирующих методов моделирования, наиболее известными из которых были метод Гради Буча (Booch), метод Джеймса Рамбо (OMT — Object Modeling Technique) и метод Айвара Якобсона (Object-Oriented Software Engineering, OOSE). Каждый из них имел собственную нотацию, что затрудняло обмен проектами и обучение специалистов. К 1994 году стало очевидно, что унификация необходима.

Разработка и стандартизация

В 1994 году Гради Буч и Джеймс Рамбо объединили усилия в компании Rational Software. В 1995 году к ним присоединился Айвар Якобсон. Результатом совместной работы стала версия UML 0.9, представленная в 1996 году. В 1997 году консорциум OMG принял UML версии 1.1 в качестве стандарта. Впоследствии вышли версии 1.3 (1999), 1.4 (2001), 1.5 (2003). В 2005 году была выпущена версия UML 2.0, которая существенно расширила возможности языка, введя новые типы диаграмм и уточнив семантику. Текущей стабильной версией на 2024 год является UML 2.5.1 (2017), которая официально опубликована как стандарт ISO/IEC 19505-2:2017.

Типы диаграмм

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

Структурные диаграммы

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

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

  • Диаграмма вариантов использования (Use Case Diagram) — описывает функциональные требования к системе: акторов, прецеденты и связи между ними.
  • Диаграмма состояний (State Machine Diagram) — показывает конечный автомат объекта: состояния, переходы, события и действия.
  • Диаграмма деятельности (Activity Diagram) — моделирует потоки работ, бизнес-процессы и алгоритмы, аналогична блок-схемам, но с поддержкой параллелизма.
  • Диаграмма последовательности (Sequence Diagram) — временная диаграмма, показывающая обмен сообщениями между объектами в хронологическом порядке.
  • Диаграмма коммуникации (Communication Diagram) — альтернатива диаграмме последовательности, фокусирующаяся на структурных связях между объектами.
  • Диаграмма обзора взаимодействия (Interaction Overview Diagram) — гибрид диаграммы деятельности и диаграммы последовательности.
  • Диаграмма синхронизации (Timing Diagram) — показывает изменение состояния объекта во времени.

Применение

Разработка программного обеспечения

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

Моделирование бизнес-процессов

Диаграммы деятельности и вариантов использования применяются для описания бизнес-процессов, не связанных напрямую с программированием. Например, в логистике, банковском деле или управлении проектами.

Системная инженерия

UML используется для моделирования сложных технических систем, включая аппаратно-программные комплексы, встраиваемые системы и системы реального времени. Для этого применяется профиль MARTE (Modeling and Analysis of Real-Time and Embedded Systems).

Инструменты поддержки

Существует множество программных средств, поддерживающих UML. Они делятся на коммерческие и открытые:

  • Rational Rose (IBM) — один из первых инструментов, поддерживающий все версии UML.
  • Enterprise Architect (Sparx Systems) — популярный коммерческий инструмент с широкой функциональностью.
  • Visual Paradigm — коммерческий продукт с поддержкой UML, BPMN и других нотаций.
  • StarUML — открытый инструмент, поддерживающий UML 2.x.
  • PlantUML — текстовый язык для генерации диаграмм UML, интегрируется с системами версионирования и документации.
  • Draw.io — бесплатный онлайн-редактор с поддержкой UML.

Критика

UML подвергается критике по нескольким причинам:

  • Сложность и громоздкость. Полная спецификация UML 2.5.1 занимает более 800 страниц. Многие разработчики используют лишь малую часть нотации, что приводит к избыточности.
  • Неоднозначность семантики. Некоторые элементы (например, отношения агрегации и композиции) имеют размытые границы, что вызывает споры в сообществе.
  • Отсутствие формальной верификации. UML не является формальным языком, поэтому диаграммы не могут быть автоматически проверены на корректность.
  • Снижение популярности в agile-методологиях. В гибких подходах (Scrum, XP) предпочитают минимальное документирование и «живые» диаграммы, создаваемые по мере необходимости, а не полные модели.

Связь с другими стандартами

UML тесно связан с другими стандартами OMG:

  • OMG SysML (Systems Modeling Language) — расширение UML для системной инженерии.
  • BPMN (Business Process Model and Notation) — нотация для моделирования бизнес-процессов, использующая элементы UML.
  • MOF (Meta-Object Facility) — метамодель, на которой основан UML.
  • XMI (XML Metadata Interchange) — формат обмена моделями между различными инструментами UML.

Источники

  1. OMG Unified Modeling Language (OMG UML), Version 2.5.1 — спецификация стандарта.
  2. ISO/IEC 19505-2:2017 — Information technology — Object Management Group Unified Modeling Language (OMG UML).
  3. Буч Г., Рамбо Д., Якобсон А. Язык UML. Руководство пользователя. — 2-е изд. — М.: ДМК Пресс, 2006.
  4. Фаулер М. UML. Основы. — 3-е изд. — СПб.: Символ-Плюс, 2004.
  5. Ларман К. Применение UML и шаблонов проектирования. — 3-е изд. — М.: Вильямс, 2006.

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

На главную BFOmetr →