Мегамоделирование
Мегамоделирование — разновидность моделирования, в котором по крайней мере некоторые элементы представляют собой другие модели, метамодели, языки, преобразования и пр. Аналогично «программированию-в-большом» (programming-in-the-large), мегамоделирование позволяет глобально подходить к описанию сложных программных систем и способствует пониманию устройства таких систем их создателями и владельцами, а также грамотной передаче информации об этом из рук в руки. То, что описывает мегамодель, иногда называется «языковой архитектурой», потому что оно пытается выразить взаимосвязь между компьютерными языками и преобразованиями между ними.
Простейшая мегамодель может выглядеть как-то так:
Здесь грамматика в широком смысле определяет язык, элементами которого являются программы. При этом существует другая грамматика, соответствующая в некотором смысле первой, задающая верность другой структуре, которая преобразуема в первую, что означает также наличие соответствия на уровне элементов языка. В дальнейшем при необходимости «преобразуемость» может быть более детально объяснена для того, чтобы явно выразить происходящее в системе. Например,
В отличие от предыдущей мегамодели, здесь мы видим совершенно конкретную функцию (точнее, её применение), на ввод которой подаётся одна программа, а выводом является другая. Применение функции («трансформация» на рисунке) принадлежит самой функции («преобразование»), которая может быть реализована программой преобразования, которая в свою очередь является элементом какого-то языка преобразований. При этом специалистам сразу становится понятно, что если язык преобразования не совпадает с языком самих программ, то данная реализация сделана не с помощью рефлексивных методов (когда программа на, скажем, Java имеет доступ к собственным метаданным), а другими приёмами метапрограммирования. Подобные детали реализации методов, процессов и подходов зачастую остаются за бортом как официальной документации, так и академических статей, и имеются у экспертов в неявном виде или не имеются вовсе. Мегамоделирование их в явном виде позволяет легко сравнивать похожие процессы из разных технологических пространств.
Общепринятого в международном языковом сообществе языка мегамоделирования пока что не существует — вышеприведённые модели используют язык MegaL, но конкурентов у него много, и ни один не настолько универсален, как хотелось бы главным идеологам мегамодельного подхода.
Литература[править]
- Jean Bézivin, Frédéric Jouault, Patrick Valduriez, On the Need for Megamodels, OOPSLA/GPCE: Best Practices for Model-Driven Software Development workshop, 2004.
- Jean-Marie Favre, Tam NGuyen, Towards a Megamodel to Model Software Evolution Through Transformations, SETra, 2004.
- Jean-Marie Favre, Ralf Lämmel, Andrei Varanovich, Modeling the Linguistic Architecture of Software Products. MoDELS, 2012.
Ссылки[править]
- Игорь Лобанов, Мегамоделирование в .15926 (на русском)
- AtlanMod MegaModel Management — один из работающих в Eclipse прототипов