Мегамоделирование

Материал из Циклопедии
Перейти к навигации Перейти к поиску

Мегамоделирование — разновидность моделирования, в котором по крайней мере некоторые элементы представляют собой другие модели, метамодели, языки, преобразования и пр. Аналогично «программированию-в-большом» (programming-in-the-large), мегамоделирование позволяет глобально подходить к описанию сложных программных систем и способствует пониманию устройства таких систем их создателями и владельцами, а также грамотной передаче информации об этом из рук в руки. То, что описывает мегамодель, иногда называется «языковой архитектурой», потому что оно пытается выразить взаимосвязь между компьютерными языками и преобразованиями между ними.

Простейшая мегамодель может выглядеть как-то так:

Megamodel simple.png

Здесь грамматика в широком смысле определяет язык, элементами которого являются программы. При этом существует другая грамматика, соответствующая в некотором смысле первой, задающая верность другой структуре, которая преобразуема в первую, что означает также наличие соответствия на уровне элементов языка. В дальнейшем при необходимости «преобразуемость» может быть более детально объяснена для того, чтобы явно выразить происходящее в системе. Например,

Megamodel detailed.png

В отличие от предыдущей мегамодели, здесь мы видим совершенно конкретную функцию (точнее, её применение), на ввод которой подаётся одна программа, а выводом является другая. Применение функции («трансформация» на рисунке) принадлежит самой функции («преобразование»), которая может быть реализована программой преобразования, которая в свою очередь является элементом какого-то языка преобразований. При этом специалистам сразу становится понятно, что если язык преобразования не совпадает с языком самих программ, то данная реализация сделана не с помощью рефлексивных методов (когда программа на, скажем, Java имеет доступ к собственным метаданным), а другими приёмами метапрограммирования. Подобные детали реализации методов, процессов и подходов зачастую остаются за бортом как официальной документации, так и академических статей, и имеются у экспертов в неявном виде или не имеются вовсе. Мегамоделирование их в явном виде позволяет легко сравнивать похожие процессы из разных технологических пространств.

Общепринятого в международном языковом сообществе языка мегамоделирования пока что не существует — вышеприведённые модели используют язык MegaL, но конкурентов у него много, и ни один не настолько универсален, как хотелось бы главным идеологам мегамодельного подхода.

Литература[править]

Ссылки[править]