Уровни моделирования в UML и почему их всего 4, а не больше (Рубрика Architecture)
Я уже рассказывал про то, как учил UML (1 и 2), а сегодня я хотел рассказать про уровни моделирования в UML и почему их только четыре, а не больше. Давайте сразу я опишу все эти уровни - M0 - Real World/Instances - Реальный мир (Объекты) Этот уровень представляет фактические экземпляры или объекты в реальной системе. Диаграмма объектов считается моделью уровня 0, которая является экземпляром диаграммы классов. Она показывает конкретные экземпляры объектов и их отношения в определенный момент времени. - M1 - Models (Модель) Этот уровень содержит фактические модели UML, созданные пользователями для представления систем. Диаграммы классов являются примерами моделей уровня 1 (M1). Эти модели содержат элементы моделирования, такие как актеры, варианты использования, классы и пакеты, которые описывают конкретные перспективы системы. Собственно, про них я рассказывал в посте "Полезные диаграммы из UML" - M2 - Metamodel - Метамодель (Правила создания моделей) Сама спецификация UML существует на этом уровне. Это метамодель, которая определяет язык и структуру, используемые для создания моделей UML. Уровень M2 определяет такие понятия, как "Класс", "Ассоциация" и "Атрибут", которые используются для создания моделей M1. - M3 - Meta-metamodel - Мета-метамодель Этот высший уровень представлен Meta-Object Facility (MOF), который предоставляет язык для спецификации метамоделей. MOF может использоваться как мета-метамодель не только для UML, но и для других языков. Эта иерархическая структура следует принципу "модель является экземпляром метамодели" и "метамодель является моделью", создавая последовательную структуру для моделирования на разных уровнях абстракции.
Из построения кажется, что можно добавить и следующий уровень в виде meta-meta-metamodel, но авторы UML остановились на 4 уровнях по нескольким причинам - Самоописание MOF (Meta-Object Facility) На уровне M3 находится MOF, который является самоописывающим. Это означает, что MOF определяется с помощью своих же собственных конструкций. Мета-метамодель MOF описывает сама себя, что устраняет необходимость в дополнительном уровне абстракции. Такой подход называется "рефлексивным" или "самоописывающим".
- Предотвращение бесконечной рекурсии Если бы существовал уровень M4, то логично было бы предположить необходимость уровня M5 для его описания, и так далее до бесконечности. Из-за этого уровень M3 самоописывает себя, поэтому потребности в уровне M4 нет - Практическая достаточность Четырех уровней абстракции (M0-M3) достаточно для решения практически всех задач моделирования в программной инженерии. Дополнительные уровни абстракции увеличили бы сложность без значительных практических преимуществ.
Давайте глянем примеры уровней из нескольких областей M0 - Сотрудник Иван Петров, родившийся 15.03.1990 M1 - Класс "Сотрудник" с полями имя, дата_рождения M2 - Понятия "Класс", "Атрибут", "Связь" в UML M3 - "Мета-Класс" - шаблон для классов M2, "Мета-Атрибут" - правило для атрибутов M2.
Или чуть менее формальный пример из строительного сектора M0 - мебель и люди в комнатах (реальные объекты); M1 - планы комнат (где стоит стол, как расставлены кровати); M2 - архитектура здания (сколько этажей, где лестницы); M3 - строительные нормы (как проектировать здания).
Или пример из области языков M0 - предложение: "Иван читает книгу"; M1 - правила русского языка (существительные, глаголы); M2 - лингвистические термины ("фонема", "морфема"); M3 - философия языка ("что такое язык?").
Итого: четырёхуровневая модель UML и MOF обеспечивает баланс между гибкостью и сложностью. Отсутствие пятого уровня — не ограничение, а следствие продуманного дизайна.
#Software #Architect #SystemDesign #SoftwareArchitecture #Processes