Преобразование модели является ключевым методом, используемым в архитектуре на основе моделей . Как следует из названия QVT, стандарт OMG охватывает преобразования, представления и запросы вместе. Запросы моделей и представления моделей можно рассматривать как особые виды преобразования моделей, при условии, что мы используем достаточно широкое определение преобразования модели: преобразование модели — это программа, которая работает с моделями.
Стандарт QVT определяет три языка преобразования моделей. Все они работают с моделями, соответствующими метамоделям Meta-Object Facility (MOF) 2.0; преобразование указывает, какие метамодели используются. Преобразование в любом из трех языков QVT само по себе может рассматриваться как модель, соответствующая одной из метамоделей, указанных в стандарте. Стандарт QVT интегрирует стандарт OCL 2.0, а также расширяет его императивными функциями.
QVT-Operational — императивный язык, предназначенный для записи однонаправленных преобразований.
QVT-Relations — это декларативный язык, разработанный для того, чтобы разрешить как однонаправленные, так и двунаправленные преобразования моделей. Преобразование воплощает отношение согласованности в наборах моделей. Согласованность можно проверить, выполнив преобразование в режиме checkonly; затем преобразование возвращает True, если набор моделей согласован в соответствии с преобразованием, и False в противном случае. То же самое преобразование можно использовать в режиме force, чтобы попытаться изменить одну из моделей так, чтобы набор моделей стал согласованным. Язык QVT-Relations имеет как текстовый, так и графический конкретный синтаксис.
QVT-Core — это декларативный язык, разработанный для простоты и использования в качестве цели перевода из QVT-Relations. Однако QVT-Core никогда не имел полной реализации и, по сути, не столь выразителен, как QVT-Relations. [2] Следовательно, архитектура QVT, изображенная выше, вводит в заблуждение: преобразование из QVT-Relations в QVT-Core, приведенное в стандарте QVT, не сохраняет семантику.
Наконец, QVT-BlackBox — это механизм для вызова средств преобразования, выраженных на других языках (например, XSLT или XQuery ).
Хотя QVT имеет широкую область применения, он не охватывает все, что рассматривается как преобразование модели, представление или запрос. Например, языки QVT не допускают преобразований в текстовые модели или из них, поскольку каждая модель должна соответствовать некоторой метамодели MOF 2.0. Преобразования модели в текст стандартизируются отдельно OMG (см. MOFM2T ).
История
В 2002 году OMG опубликовала запрос предложений (RFP) по MOF Query/View/Transformation с целью поиска стандарта, совместимого с набором рекомендаций Model Driven Architecture (MDA) (UML, MOF, OCL и т. д.).
Несколько ответов были даны рядом компаний и исследовательских институтов, которые развивались в течение трех лет, чтобы выработать общее предложение, основанное на проекте британского исследователя доктора Лоренса Тратта. Первая версия была представлена и одобрена в 2005 году. [3] Версия QVT 1.1 была выпущена в январе 2011 года. [1]
Eclipse M2M Operational QVT: официальная реализация QVT Operational с открытым исходным кодом для Eclipse. [5]
MagicDraw имеет плагин QVT, который использует операционную реализацию QVT, предоставляемую проектом Eclipse M2M .
SmartQVT : реализация с открытым исходным кодом Eclipse (Orange Labs) языка QVT-Operational.
QVT-ядро:
OptimalJ : Ранняя реализация языка QVT-Core была в OptimalJ версии 3.4 от Compuware . Однако OptimalJ был прекращен.
QVT-отношения:
ModelMorf: фирменный инструмент от Tata Consultancy Services Ltd. Полностью совместим с языком QVT-Relations. Пробная версия [6] предоставляет утилиту командной строки, которая потребляет и создает модели в форме XMI. Полноценная, интегрированная в репозиторий версия доступна как часть их фирменного фреймворка моделирования. [7]
MediniQVT: [8] Основанный на EMF механизм преобразования с лицензией EPL для движка и некоммерческой лицензией редактора/отладчика. Использует синтаксис QVT-Relations, но намеренно отходит от семантики стандарта OMG. [9]
Проект Eclipse M2M направлен на реализацию ядра QVT и отношений. [5]
Echo [10] — инструмент с открытым исходным кодом на основе EMF для восстановления и преобразования моделей, созданный на основе поисковика моделей Alloy , который обеспечивает реализацию синтаксиса QVT-Relations, но использует семантику, намеренно отходящую от спецификации OMG.
QVT-подобный:
jQVT: [11] Скомпилированный движок QVT для Java, использующий Xbase вместо OCL. QVT-реляционное преобразование сначала компилируется в исходный код Java, который затем напрямую создает целевую модель из исходных во время выполнения, без повторной интерпретации правила преобразования. Он поддерживает модели EMF, а также простые объекты Java.
Tefkat : реализация языка Tefkat с открытым исходным кодом, которая также похожа на QVT. Открытый исходный код.
ATL : компонент проекта M2M Eclipse. ATL — это язык и движок преобразований типа QVT с большим сообществом пользователей и открытой библиотекой преобразований.
Model Transformation Framework (MTF): [12] проект IBM alphaWorks, последний раз обновленный в 2007 году.
^ ab Bast, Wim; Murphree, Michael; Lawley, Michael; Duddy, Keith; Belaunde, Mariano; Griffin, Catherine; Sendall, Shane; Vojtisek, Didier; Steel, Jim; Helsen, Simon; Tratt, Laurence; Reddy, Sreedhar; Venkatesh, R.; Blanc, Xavier; Dvorak, Radek; Willink, Ed (январь 2011 г.). "Meta Object Facility (MOF) 2.0 Query/View/Transformation (QVT)" (pdf) . Object Management Group . Получено 9 мая 2011 г. .
^ Стивенс, Пердита (2011). «Простой игровой теоретико-подход к проверке только QVT-отношений». Программное обеспечение и системное моделирование . 12. Берлин / Гейдельберг: Springer : 175–199. doi :10.1007/s10270-011-0198-8. hdl : 20.500.11820/58a19b4d-3782-4081-ad75-175c4626a62e .
^ [m2m-dev] Вклад Borland QVT Архивировано 25 февраля 2012 г. на Wayback Machine
^ ab Eclipse M2M Project. "Model to Model (M2M)". Архивировано из оригинала 2012-12-03 . Получено 2011-05-09 .. Получено 9 мая 2011 г.
^
ModelMorf beta. "ModelMorf Registration Form". Архивировано из оригинала 23 марта 2012 г. Получено 9 мая 2011 г.. Получено 9 мая 2011 г.
^
TCS Code Generator Framework (ранее известный как MasterCraft). "TCS Code Generator Framework: TCS Technology Products: Offers: TCS". Архивировано из оригинала 9 августа 2011 г. Получено 9 мая 2011 г.. Получено 9 мая 2011 г.
^
Medini QVT. "Medini QVT". Архивировано из оригинала 2016-07-29 . Получено 2009-08-13 .. Получено 9 мая 2011 г.
^ Кигеланд, Дж.; Эйхлер, Х. (февраль 2008 г.), «Семинар medini QVT», Семинар medini QVT (ppt) , Энсхеде, Telematica Instituut: ikv++ Technologies ag , получено 24 сентября 2015 г.