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