Введение

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

Обзор

Специфическое моделирование домена часто также включает в себя идею генерации кода: автоматизацию создания исполняемого исходного кода непосредственно из моделей языка, специфичного для домена. Освобождение от ручного создания и поддержки исходного кода означает, что язык, специфичный для домена, может значительно повысить производительность разработчиков. Надежность автоматической генерации по сравнению с ручным кодированием также снизит количество дефектов в результирующих программах, тем самым повышая качество. Язык, специфичный для домена, отличается от более ранних попыток генерации кода в CASE-инструментах 1980-х годов или UML-инструментах 1990-х годов. В обоих этих случаях генераторы кода и языки моделирования создавались поставщиками инструментов. Хотя поставщик инструментов может создать язык, специфичный для домена, и генераторы, чаще язык, специфичный для домена, разрабатывается внутри одной организации. Один или несколько опытных разработчиков создают язык моделирования и генераторы, а остальные разработчики используют их. Разработка языка моделирования и генератора организацией, которая будет их использовать, обеспечивает тесное соответствие конкретной области и возможность реагировать на изменения в этой области. Языки, специфичные для домена, обычно могут охватывать различные уровни абстракции для конкретной области. Например, язык моделирования, специфичный для домена мобильных телефонов, может позволить пользователям задавать высокоуровневые абстракции для пользовательского интерфейса, а также низкоуровневые абстракции для хранения данных, таких как номера телефонов или настройки. Аналогично, язык моделирования, специфичный для домена финансовых услуг, может позволить пользователям задавать высокоуровневые абстракции для клиентов, а также низкоуровневые абстракции для реализации алгоритмов торговли акциями и облигациями.

Определение языков, специфичных для конкретной области

Чтобы определить язык, необходимо использовать другой язык для написания этого определения. Язык, используемый для описания модели, часто называют метамоделью, а значит, язык для определения языка моделирования – мета-метамодель. Мета-метамодели можно разделить на две группы: те, которые являются производными от существующих языков или их модификациями, и те, которые были разработаны специально как мета-метамодели. К производным мета-метамоделям относятся диаграммы «сущность-связь», формальные языки, расширенная форма Бэкуса-Наура (EBNF), языки онтологий, XML-схемы и Meta Object Facility (MOF). Преимуществами этих языков обычно являются знакомство и стандартизация исходного языка. Философия предметно-ориентированного моделирования склоняется к созданию нового языка для конкретной задачи, поэтому неудивительно, что существуют новые языки, разработанные как мета-метамодели. Наиболее распространенным семейством таких языков являются OPRR, GOPRR и GOPPRR, которые ориентированы на поддержку элементов, характерных для языков моделирования, с минимальными затратами.

Поддержка инструментов для языков, специфичных для конкретной области

Многие языки моделирования общего назначения уже имеют поддержку инструментов в виде CASE-средств. Языки, специфичные для предметной области, как правило, имеют слишком малый рынок для разработки специализированного CASE-средства с нуля. Вместо этого, большая часть инструментальной поддержки для языков, специфичных для предметной области, создается на основе существующих фреймворков для языков, специфичных для предметной области, или посредством специализированных сред для языков, специфичных для предметной области. Специализированная среда для языка, специфичного для предметной области, может рассматриваться как инструмент метамоделирования, то есть инструмент моделирования, используемый для определения инструмента моделирования или CASE-средства. Полученный инструмент может работать в рамках этой специализированной среды или, реже, выпускаться как отдельная автономная программа. В более распространенном случае, специализированная среда предоставляет дополнительный уровень абстракции по сравнению с традиционным CASE-средством. Использование специализированной среды может значительно снизить стоимость получения инструментальной поддержки для языка, специфичного для предметной области, поскольку хорошо спроектированная среда автоматизирует создание частей программы, дорогостоящих в разработке с нуля, таких как редакторы, обозреватели и компоненты, специфичные для предметной области. Эксперту в предметной области необходимо лишь определить специфические конструкции и правила, а среда предоставляет инструмент моделирования, адаптированный для целевой области. Большинство существующих языков, специфичных для предметной области, используются в специализированных средах, будь то коммерческие, такие как MetaEdit+ или Actifsource, с открытым исходным кодом, такие как GEMS, или академические, такие как GME. Растущая популярность языков, специфичных для предметной области, привела к добавлению фреймворков для таких языков в существующие IDE, например, Eclipse Modeling Project (EMP) с EMF и GMF, или в Microsoft DSL Tools для Software Factories.

Специфический язык домена и UML

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