Исполняемый UML ( xtUML или xUML ) — это и метод разработки программного обеспечения, и высокоабстрактный язык программирования. Впервые он был описан в 2002 году в книге «Исполняемый UML: основа для архитектуры, управляемой моделями». [1] Язык «объединяет подмножество графической нотации UML ( Unified Modeling Language ) с исполняемой семантикой и правилами синхронизации». [2] Метод исполняемого UML является преемником метода Шлера–Меллора . [3]
Исполняемые модели UML «могут быть запущены, протестированы , отлажены и измерены на предмет производительности» [4] и могут быть скомпилированы в менее абстрактный язык программирования для целевой конкретной реализации . [5] Исполняемый UML поддерживает архитектуру на основе моделей (MDA) посредством спецификации платформенно-независимых моделей и компиляции платформенно-независимых моделей в платформенно-зависимые модели . [6] [7]
Исполняемый UML — это более высокий уровень абстракции , чем языки программирования третьего поколения . Это позволяет разработчикам разрабатывать на уровне абстракции приложения. [8] Исполняемый UML направлен на разделение интересов . Предполагается, что это увеличит простоту повторного использования и снизит стоимость разработки программного обеспечения . Это также позволяет исполняемым доменам UML быть кроссплатформенными . Это означает, что он не привязан к какому-либо конкретному языку программирования, платформе или технологии.
Исполняемый UML также позволяет переводить платформенно-независимые модели (PIM) в платформенно-зависимые модели (PSM). Метод исполняемого UML позволяет оценивать модель как интеллектуальную собственность , поскольку модель является полностью исполняемым решением для проблемного пространства.
Действия задаются на языке действий . Это означает, что автоматическая генерация кода реализации из исполняемых моделей UML может быть выведена в оптимизированной форме.
Исполняемый UML предназначен для использования в качестве исполняемого кода, а также документации. Модели представляют собой графическую исполняемую спецификацию проблемного пространства, которая компилируется в целевую реализацию . Они также предназначены для того, чтобы быть читаемыми человеком .
Система состоит из нескольких предметных областей, известных как домены в терминах Executable UML. Executable UML используется для моделирования предметной области на уровне абстракции ее предметной области независимо от проблем реализации. Результирующая модель предметной области представлена следующими элементами:
Исполняемый UML требует идентификации доменов (также известных как: аспекты [9] или проблемы ) системы. "Каждый домен - это автономный мир, населенный концептуальными сущностями" [10] Каждый домен может быть смоделирован независимо от других доменов в системе, что позволяет разделить проблемы . Например, домены для автоматизированной кассовой системы могут включать следующее:
Разделение задач позволяет разрабатывать и проверять каждый домен независимо от других доменов в системе соответствующими экспертами.
Связи между доменами называются мостами . «Мост — это многоуровневая зависимость между доменами». [11] Это означает, что домены могут предъявлять требования к другим доменам. Рекомендуется, чтобы мосты согласовывались экспертами разных доменов.
Домен может быть помечен как реализованный, чтобы указать, что домен существует и не нуждается в моделировании. Например, домен доступа к данным, использующий базу данных MySQL , будет помечен как реализованный.
Концептуальные сущности, такие как материальные вещи, роли, инциденты, взаимодействия и спецификации, характерные для моделируемой области, абстрагируются в классы . Классы могут иметь атрибуты и операции .
Отношения между этими классами будут обозначены ассоциациями и обобщениями . Ассоциация может потребовать дальнейшей абстракции в виде класса ассоциации .
Ограничения на диаграмме классов могут быть записаны как на языке действий, так и на языке ограничений объектов (OCL).
Метод Executable UML ограничивает элементы UML, которые можно использовать в диаграмме классов Executable UML.
Исполняемая диаграмма классов UML предназначена для предоставления информации о предметной области. Слишком большая сложность в диаграммах состояний — хороший показатель того, что диаграмму классов следует переработать.
У классов есть жизненные циклы, которые моделируются в Executable UML с помощью диаграммы состояний . Диаграмма состояний определяет состояния , переходы , события и процедуры , которые определяют поведение класса.
Каждое состояние имеет только одну процедуру, которая выполняется при входе в это состояние . Процедура состоит из действий, которые указаны на языке действий.
Модели классов и состояний сами по себе могут предоставить только статическое представление домена. Чтобы иметь исполняемую модель, должен быть способ создания экземпляров классов, установления ассоциаций, выполнения операций над атрибутами, вызова событий состояния и т. д. В исполняемом UML это делается с использованием языка действий, который соответствует семантике действий UML.
Action Semantics был добавлен в спецификацию UML в 2001 году. Запрос предложений по Action Semantics был основан на предыдущей работе над языками действий, поддерживающими метод Шлера–Меллора . Существующие языки действий: Object Action Language (OAL), Shlaer–Mellor Action Language (SMALL), Action Specification Language (ASL), Model Action Specification Language (MASL), [12] That Action Language (TALL), Starr's Concise Relational Action Language (SCRALL), Platform-independent Action Language (PAL) и PathMATE Action Language (PAL). SCRALL — единственный язык, который является графическим языком действий.
После моделирования домена его можно протестировать независимо от целевой реализации , выполнив модель. Каждый домен можно проверить и подтвердить независимо от любого другого домена. Это позволяет связать обнаруженные ошибки с доменом и независимо от других проблем системы.
Проверка будет включать в себя такие действия, как человеческая проверка моделей, выполняемая экспертами в соответствующей области, и автоматическая проверка семантики исполняемого UML, т. е. проверка того, что исполняемая модель UML соответствует исполняемой метамодели UML .
Валидация обычно включает использование исполняемого инструмента UML для выполнения модели. Выполнение может происходить как до, так и после компиляции модели.
Для поддержки выполнения на целевой реализации , модель домена должна быть переведена в менее абстрактную форму. Этот процесс перевода называется компиляцией модели . Большинство компиляторов моделей нацелены на известный язык программирования , поскольку это позволяет повторно использовать существующие технологии компиляции .
Оптимизация моделей домена для целей целевой реализации снизит уровень абстракции , отрицательно повлияет на независимость домена и увеличит стоимость повторного использования . В исполняемом UML оптимизации выполняются компилятором модели либо автоматически, либо посредством маркировки . Маркировка позволяет нацеливать конкретные элементы модели на конкретные реализации более низкого уровня и допускает более широкие архитектурные решения, такие как указание того, что коллекции объектов должны быть реализованы как двусвязный список .
В терминах MDA компилятор модели создает PSM . Разделение между PIM и PSM в исполняемом UML делает невозможным круговое проектирование модели и препятствует внесению изменений в PSM . [13]
Исполняемый UML определяет семантику выполнения для подмножества UML. Ключевые аспекты исполняемого подмножества UML включают следующее:
Группа управления объектами стандартизировала Foundational UML (fUML) , на который сильное влияние оказал Executable UML.
Язык действий для фундаментального UML (ALF) [15] — это стандартная спецификация языка действий, разработанная Object Management Group .