Che cos’è e differenza tra Metamodello e l’UML (Unified Modeling Language)
Il metamodeling è un approccio di modellazione che trae le sue regole dalla distinzione tra il concetto di modello e quello di metamodello.
Un modello UML è una rappresentazione che cattura gli aspetti importanti di tutto ciò che si vuole modellare, da un certo punto di vista e sotto certe limitazioni. Un modello è strutturato in diagrammi (Diagrammi UML), i quali rappresentano il mezzo grafico di espressione. Un modello consiste di tre categorie di elementi:
- i classificatori (Classifiers): descrivono un insieme di oggetti. Un oggetto è un’entità individuale con uno stato e delle relazioni con altri oggetti.
- gli eventi (Events): descrivono un insieme di possibili occorrenze. Un’occorrenza è qualcosa che accade ed ha conseguenze all’interno del sistema.
- le azioni (Behaviors): descrivono un insieme di possibili esecuzioni. Un’esecuzione rappresenta il compimento di un algoritmo in accordo con un insieme di regole.
I diagrammi UML invece contengono gli elementi grafici che rappresentano elementi del modello. Per esempio, due classi associate definite all’interno di un package diagram, sono due tipologie di classificatori e sono rappresentate da due simboli di forma rettangolare ed un collegamento che rappresenta il simbolo di associazione.
Quando si definisce un modello è possibile utilizzare diagrammi noti per specifici scopi, un esempio sono i Pattern. I pattern descrivono modalità comuni di progettazione e vengono raccolti in modo da identificare svariate tecniche applicabili a più situazioni. Un esempio molto famoso e utile nella definizione di un sistema, visto come composizione di componenti hardware e software, è il pattern Composite. Tale pattern è di tipo strutturale e consente di creare gerarchie di oggetti aggregando insieme elementi primitivi e compositi direttamente a run-time. Questo pattern può essere applicato per rappresentare strutture ad albero in una logica parte-tutto (part-whole), dove ciascun elemento può a sua volta aggregare insieme altri elementi della stessa specie e dove oggetti singoli e composizioni possono essere trattati in modo uniforme.
L’UML, in quanto linguaggio di specifica, viene definito come un metamodello tramite il quale gli utenti possono definire i loro modelli. Un metamodello fornisce le basi per realizzare dei modelli, definendo una specifica struttura. Un metamodello è un tipo di modello che specifica la sintassi astratta di un linguaggio di modellazione. Consiste tipicamente di metaclassi che sono o importate o locali. In pratica un modello è un’istanza di un metamodello. Allo stesso modo anche il Meta Object Facility (MOF), in quanto linguaggio di specifica dell’UML, può definirsi un metamodello.