Моделирование предметной области ( DSM ) — это методология разработки программного обеспечения для проектирования и разработки систем, таких как компьютерное программное обеспечение . Оно включает в себя систематическое использование предметно-ориентированного языка для представления различных аспектов системы.
Предметно-ориентированные языки моделирования, как правило, поддерживают более высокоуровневые абстракции , чем языки моделирования общего назначения , поэтому они требуют меньше усилий и меньше низкоуровневых деталей для спецификации данной системы.
Предметно-ориентированное моделирование часто также включает в себя идею генерации кода : автоматическое создание исполняемого исходного кода непосредственно из предметно-ориентированных языковых моделей. Освобождение от ручного создания и обслуживания исходного кода означает, что предметно-ориентированный язык может значительно повысить производительность разработчика. [1] Надежность автоматической генерации по сравнению с ручным кодированием также уменьшит количество дефектов в полученных программах, тем самым улучшая качество.
Язык, специфичный для предметной области, отличается от более ранних попыток генерации кода в инструментах CASE 1980-х годов или инструментах UML 1990-х годов. В обоих случаях генераторы кода и языки моделирования были созданы поставщиками инструментов. [ необходима цитата ] Хотя поставщик инструмента может создать язык и генераторы, специфичный для предметной области язык обычно появляется в одной организации. Один или несколько разработчиков-экспертов создают язык моделирования и генераторы, а остальные разработчики используют их.
Наличие языка моделирования и генератора, созданных организацией, которая будет их использовать, обеспечивает точное соответствие их предметной области и возможность реагирования на изменения в этой области.
Языки, специфичные для домена, обычно могут охватывать диапазон уровней абстракции для конкретного домена. Например, язык моделирования, специфичный для домена, для мобильных телефонов может позволить пользователям указывать абстракции высокого уровня для пользовательского интерфейса , а также абстракции более низкого уровня для хранения данных, таких как номера телефонов или настройки. Аналогично, язык моделирования, специфичный для домена, для финансовых услуг может позволить пользователям указывать абстракции высокого уровня для клиентов, а также абстракции более низкого уровня для реализации алгоритмов торговли акциями и облигациями.
Чтобы определить язык, нужен язык, на котором можно написать определение. Язык модели часто называют метамоделью , поэтому язык для определения языка моделирования — это мета-метамодель. Мета-метамодели можно разделить на две группы: те, которые получены из существующих языков или являются их модификациями, и те, которые были разработаны специально как мета-метамодели.
Производные мета-метамодели включают диаграммы сущности-связи , формальные языки , расширенную форму Бэкуса-Наура (EBNF), языки онтологий , XML-схему и Meta-Object Facility (MOF). Сильные стороны этих языков, как правило, заключаются в известности и стандартизации исходного языка.
Суть предметно-ориентированного моделирования благоприятствует созданию нового языка для конкретной задачи, поэтому неудивительно, что появились новые языки, разработанные как мета-метамодели. Наиболее широко используемое семейство таких языков — OPRR, [2] [3] GOPRR, [4] и GOPPRR, которые фокусируются на поддержке вещей, найденных в языках моделирования, с минимальными усилиями.
Многие языки моделирования общего назначения уже имеют инструментальную поддержку в виде инструментов CASE . Языки предметно-ориентированных языков, как правило, имеют слишком малый размер рынка, чтобы поддерживать создание заказного инструмента CASE с нуля. Вместо этого большая часть инструментальной поддержки для языков предметно-ориентированных языков строится на основе существующих структур предметно-ориентированных языков или через среды предметно-ориентированных языков.
Среду языка, специфичную для домена, можно рассматривать как инструмент метамоделирования, т. е. инструмент моделирования, используемый для определения инструмента моделирования или инструмента CASE. Полученный инструмент может работать в среде языка, специфичной для домена, или, что встречается реже, быть создан как отдельная автономная программа. В более общем случае среда языка, специфичная для домена, поддерживает дополнительный уровень абстракции по сравнению с традиционным инструментом CASE.
Использование доменно-специфической языковой среды может значительно снизить стоимость получения инструментальной поддержки для доменно-специфического языка, поскольку хорошо спроектированная доменно-специфическая языковая среда автоматизирует создание частей программы, которые дорого создавать с нуля, таких как доменно-специфические редакторы, браузеры и компоненты. Эксперту по домену нужно только указать доменно-специфические конструкции и правила, а доменно-специфическая языковая среда предоставляет инструмент моделирования, адаптированный для целевого домена.
Большинство существующих предметно-ориентированных языков реализуются в предметно-ориентированных языковых средах, как коммерческих, таких как MetaEdit+ или Actifsource , так и с открытым исходным кодом, например GEMS , или академических, например GME . Растущая популярность предметно-ориентированных языков привела к добавлению предметно-ориентированных языковых фреймворков в существующие IDE, например Eclipse Modeling Project (EMP) с EMF и GMF , или в DSL Tools for Software Factorys от Microsoft .
Унифицированный язык моделирования (UML) — это язык моделирования общего назначения для систем с большим объемом программного обеспечения, который разработан для поддержки в основном объектно-ориентированного программирования . Следовательно, в отличие от языков предметно-ориентированных языков, UML используется для самых разных целей в широком диапазоне доменов. Примитивы, предлагаемые UML, являются примитивами объектно-ориентированного программирования, в то время как предметно-ориентированные языки предлагают примитивы, семантика которых знакома всем специалистам в этой области. Например, в области автомобилестроения будут существовать программные модели для представления свойств антиблокировочной тормозной системы или рулевого колеса и т. д.
UML включает в себя механизм профилей, который позволяет ограничивать и настраивать его для определенных доменов и платформ. Профили UML используют стереотипы , атрибуты стереотипов (известные как помеченные значения до UML 2.0) и ограничения для ограничения и расширения области действия UML до определенного домена. Возможно, наиболее известным примером настройки UML для определенного домена является SysML , доменно-специфичный язык для системной инженерии .
UML является популярным выбором для различных подходов к разработке на основе моделей, в которых технические артефакты, такие как исходный код, документация, тесты и многое другое, генерируются алгоритмически из модели домена. Например, профили приложений стандарта юридических документов Akoma Ntoso могут быть разработаны путем представления юридических концепций и онтологий в объектах классов UML. [5]