În contextul modelării , un metamodel este un model ale cărui instanțe sunt ele însele modele. Deoarece prefixul meta- indică , un metamodel este o abstracție folosit pentru a descrie modele. Metamodelarea se referă, în linii mari, la proiectarea metamodelelor.
Metamodelele pot lua diferite forme și pot fi utilizate în diverse domenii. În informatică , și mai precis în ingineria software , noțiunea de metamodel este centrală pentru ingineria bazată pe modele , un set de practici care au în comun crearea și utilizarea modelelor pentru a conceptualiza un domeniu de aplicație. Această utilizare se extinde și la ingineria sistemelor .
Un metamodel este un model care descrie structura modelelor. În special, permite construirea limbajelor de modelare , crearea de relații între modele și definirea regulilor de modelare. Se spune că metamodelul reprezintă modelul, în timp ce modelul instanțiază metamodelul. De exemplu, un sistem software poate fi reprezentat printr-o diagramă obiect care poate fi ea însăși reprezentată printr-o diagramă de clasă în UML . Astfel, sistemul software reprezintă originalul, adică obiectul real modelat, în timp ce diagrama obiect este modelul său și diagrama claselor este un metamodel.
Patru aspecte sunt necesare pentru specificarea unui metamodel: o sintaxă abstractă , o sintaxă concretă, o semantică statică și o semantică dinamică. În mod ideal, aceste elemente sunt definite folosind un limbaj formal. Din acest motiv, un metamodel este, de asemenea, uneori definit ca modelul unui limbaj de modelare .
Sintaxa abstractă a unui metamodel descrie constructele care alcătuiesc modelele sale, cum ar fi proprietățile și relațiile lor. De exemplu, sintaxa abstractă a unei diagrame de clasă este alcătuită din clase, atribute, asociații etc.
Sintaxa concretă a unui metamodel descrie reprezentarea construcțiilor definite de sintaxa sa abstractă. Această reprezentare este cel mai adesea grafică sau textuală . Poate corespunde și unui format de date . Fiecărei sintaxe abstracte îi corespund una sau mai multe sintaxe concrete. Astfel, o clasă a unei diagrame de clase este reprezentată de un dreptunghi cu trei secțiuni (nume, asociații, operații) în timp ce o asociație este reprezentată ca o săgeată. O diagramă de clasă poate fi, de asemenea, reprezentată textual în XMI .
Semantica statică (numită și semantică structurală) a unui metamodel descrie criteriile și regulile de modelare care nu pot fi reprezentate de sintaxa abstractă. Există limbaje specifice pentru formularea acestor reguli. De exemplu, OCL poate descrie semantica statică a unei diagrame de clasă. În ingineria bazată pe model, regulile semantice statice pot fi utilizate pentru a verifica dacă un model respectă proprietățile metamodelului său. În acest caz, regulile trebuie să poată fi verificate automat, adică hotărâtoare .
Semantica dinamică a unui metamodel este o descriere a sensului dat acestuia. Spre deosebire de aspectele anterioare, semantica dinamică este rar exprimată folosind un limbaj formal. Limbajul natural este, prin urmare, privilegiat.
Este întotdeauna posibil să se definească un model pentru un anumit obiect sau concept. Prin urmare, un metamodel poate fi el însuși reprezentat de un metamodel care definește conceptele disponibile pentru metamodelare. Un astfel de metamodel se numește meta-metamodel . În teorie, nu există o limită a numărului de niveluri de modelare: fiecare metamodel este reprezentat de un alt metamodel la un nivel superior. În practică, numărul nivelurilor de modelare este fix, iar cel mai abstract metamodel este adesea autodescriptiv (sau reflexiv sau meta-circular ), adică se poate reprezenta pe sine.
În arhitectura bazată pe model (MDA), standardul Meta-Object Facility (MOF) oferă un meta-metamodel care permite reprezentarea altor metamodele, cum ar fi limbajul UML metamodel sau limbajele de transformare QVT . Reprezentarea metamodelelor cu MOF se bazează cel mai adesea pe patru straturi de modelare. Fiecare strat este o abstractizare a stratului inferior:
Arhitectura cu patru straturi este considerată în abordarea MDA ca fiind suficient de generală pentru un proces de modelare software. Deși fiind cea mai comună, această arhitectură nu este singura. Standardul MOF necesită cel puțin două straturi de modelare și nu impune un număr maxim de straturi. Astfel, o specificație cu două straturi (de exemplu, clasa (M1) - obiect (M0)) se conformează abordării MDA, deși nu definește un meta-metamodel.
Definiția meta-metamodelului standardului MOF preia principalele concepte ale diagramelor de clasă din UML (clasificatori, atribute , asociații etc.). Deoarece meta-metamodelul este autodescriptiv, este reprezentat și folosind aceste concepte.
Proiectarea unui metamodel capabil să reprezinte mai multe modele facilitează serializarea , manipularea și schimbul acestor modele. Standardul MOF oferă, de exemplu, XMI , o procedură pentru reprezentarea unui model sau a unui metamodel derivat din meta-metamodelul MOF folosind XML .
Validarea și transformarea modelelorÎn ingineria bazată pe model, validarea modelului este un proces prin care se verifică dacă elementele unui model satisfac constrângeri. De exemplu, o constrângere poate limita valorile pe care atributul unei clase le ia în UML. Aceste constrângeri pot fi definite în semantica statică a unui metamodel, de exemplu cu limbajul OCL, apoi verificată pentru instanțele metamodelului.
Cele Modelul Transformările sunt programe care modifică modelele automate sau semi-automate. Aceste transformări sunt utilizate, de exemplu, pentru a verifica dacă un set de modele este consecvent. Specificarea unei transformări definește relațiile dintre elementele metamodelelor. Apoi, efectuarea unei transformări creează sau modifică modele conform regulilor definite între metamodele. Ca atare, limbajele de transformare a modelelor precum ATL oferă posibilitatea de a manipula elementele metamodelelor.
Urbanizarea sistemelor informaticeUrbanizarea este un proces de transformare a sistemului informațional al unei organizații , astfel încât este mai bine adaptat la misiunile și evoluția organizației. Acest proces poate fi inițiat prin definirea unui metamodel de planificare urbană .
Grădinile zoologice cu metamodelGrădinile zoologice cu metamodele sunt depozite de metamodele care pot fi utilizate ca material de testare și experimentare în ingineria bazată pe modele. Metamodelele unei grădini zoologice sunt exprimate folosind un limbaj de modelare și, prin urmare, sunt toate instanțe ale aceluiași meta-metamodel (de exemplu, UML sau Ecore ).
În inteligența artificială și mai precis în reprezentarea cunoașterii , o ontologie este o specificație care descrie și analizează relațiile dintre diferite concepte. În aceasta, ontologiile sunt similare cu metamodelele. Când o ontologie este construită ca un metamodel, câmpul său de aplicare este un câmp de informații. Un metamodel este o modalitate de a defini o ontologie, dar există și altele.
Managementul proceselor de afaceri (sau de management al proceselor de afaceri ) este un management de disciplină al cărei scop este de a formaliza procesele de afaceri ale unei organizații, precum și interacțiunile lor. În acest scop, Grupul de gestionare a obiectelor (OMG) a creat un metamodel de definire a proceselor de afaceri (BPDM) în 2003. BPDM este un metamodel care unifică diversele notații utilizate în definirea proceselor de afaceri.
Avantajele meta-modelării pot fi folosite și în afara proiectării software-ului. De exemplu, SysML este un limbaj de modelare utilizat în ingineria sistemelor și definit ca un subset de UML. Definiția sa folosește un metamodel construit din profiluri UML . Este un metamodel al stratului M2 în arhitectura cu patru straturi a abordării MDA.