QVT

QVT-arkitektur enligt OMG-standarden

QVT ( Query/View/Transformation ) är en standarduppsättning språk för modelltransformation som definieras av Object Management Group .

Översikt

Modelltransformation är en nyckelteknik som används i modelldriven arkitektur . Som namnet QVT indikerar täcker OMG-standarden transformationer, vyer och frågor tillsammans. Modellfrågor och modellvyer kan ses som speciella typer av modelltransformation, förutsatt att vi använder en lämpligt bred definition av modelltransformation: en modelltransformation är ett program som arbetar på modeller.

QVT-standarden definierar tre modelltransformationsspråk. Alla fungerar på modeller som överensstämmer med Meta-Object Facility (MOF) 2.0 metamodeller; transformationen anger vilka metamodeller som används. En transformation i något av de tre QVT-språken kan i sig betraktas som en modell som överensstämmer med en av de metamodeller som specificeras i standarden. QVT-standarden integrerar OCL 2.0-standarden och utökar den också med nödvändiga funktioner.

  • QVT-Operational är ett imperativt språk designat för att skriva enkelriktade transformationer.
  • QVT-Relations är ett deklarativt språk utformat för att tillåta både enkelriktade och dubbelriktade modelltransformationer att skrivas. En transformation förkroppsligar en konsistensrelation på uppsättningar av modeller. Konsistens kan kontrolleras genom att utföra transformationen i endast kontrollläge; transformationen returnerar sedan True om uppsättningen modeller är konsekvent enligt transformationen och False annars. Samma transformation kan användas i enforce-läge för att försöka modifiera en av modellerna så att uppsättningen av modeller blir konsekvent. Språket QVT-Relations har både en textuell och en grafisk konkret syntax.
  • QVT-Core är ett deklarativt språk designat för att vara enkelt och fungera som mål för översättning från QVT-Relations. QVT-Core har dock aldrig haft en fullständig implementering och i själva verket är den inte lika uttrycksfull som QVT-Relations. Därför är QVT-arkitekturen på bilden ovan missvisande: transformationen från QVT-relationer till QVT-Core som ges i QVT-standarden är inte semantikbevarande.

Slutligen är QVT-BlackBox en mekanism för att anropa transformationsfaciliteter uttryckta på andra språk (till exempel XSLT eller XQuery ).

Även om QVT har ett brett räckvidd, täcker det inte allt som har betraktats som en modellomvandling, vy eller fråga. QVT-språken tillåter till exempel inte transformationer till eller från textmodeller, eftersom varje modell måste överensstämma med någon MOF 2.0-metamodell. Modell-till-text-transformationer standardiseras separat av OMG (se MOFM2T ).

Historia

År 2002 utfärdade OMG en begäran om förslag (RFP) på MOF -fråga/vy/transformation för att söka en standard som är kompatibel med rekommendationssviten Model Driven Architecture (MDA) (UML, MOF, OCL, etc.).

Flera svar gavs från ett antal företag och forskningsinstitutioner som utvecklats under tre år för att ta fram ett gemensamt förslag, baserat på ett utkast av den brittiska forskningen Dr Laurence Tratt. Den första versionen skickades in och godkändes 2005. QVT version 1.1 släpptes i januari 2011.

Genomföranden

QVT-operativ:

QVT-kärna:

QVT-relationer:

  • ModelMorf: Ett eget verktyg från Tata Consultancy Services Ltd. Fullt kompatibelt med QVT-Relations-språket. Testversionen tillhandahåller ett kommandoradsverktyg som konsumerar och producerar modeller i XMI-form. En fullfjädrad, förvarsintegrerad version är tillgänglig som en del av deras proprietära modelleringsramverk.
  • MediniQVT: EMF-baserad transformationsmotor med EPL-licens för motor och icke-kommersiell licensredigerare/debugger. Använder QVT-Relations-syntax, men avviker medvetet från semantiken i OMG-standarden.
  • Eclipse M2M -projektet syftar till att producera en implementering av QVT Core and Relations.
  • Echo, ett EMF-baserat verktyg med öppen källkod för modellreparation och transformation byggt över Alloy -modellfinnaren, som tillhandahåller en implementering av QVT-Relations-syntax, men med hjälp av semantik som medvetet avviker från OMG-specifikationen.

QVT-liknande:

  • jQVT: En kompilerad QVT-motor för Java, med Xbase istället för OCL. En QVT-relationell transformation kompileras först till Java-källkod, som sedan direkt producerar målmodellen från käll-ettor vid körning, utan att tolka transformationsregeln igen. Den stöder EMF-modeller, såväl som vanliga Java-objekt.
  • Tefkat : en öppen källkodsimplementering av Tefkat-språket som också liknar QVT. Öppen källa.
  • ATL : en komponent i M2M Eclipse-projektet. ATL är ett QVT-liknande transformationsspråk och motor med en stor användargemenskap och ett bibliotek med öppen källkod med transformationer.
  • Model Transformation Framework (MTF): ett IBM alphaWorks- projekt, senast uppdaterat 2007.

Se även