On Squeezing M0, M1, M2, and M3 into a Single Object Diagram
Martin Gogolla, Jean-Marie Favre, Fabian Büttner Bremen, Grenoble, Bremen
Context and motivation
•
Metamodeling becoming more and more important: UML including OCL, CWM (among others) However: Metamodeling notions not formally defined: Model, Metamodel, Potency, Strictness At the heart of metamodeling (in our view)
• •
•
•
There are 'Descriptions' on various levels 'Descriptions' are connected by a relationship descriptionA ResultsFromInstantiating descriptionB Ex: ada ResultsFromInstantiating Person, Person ResultsFromInstantiating Class There are 'Descriptions' on at least three levels
•
• •
The 'Descriptions' are discussed well, the relationship ResultsFromInstantiating is poorly discussed
Some title
use> ?Breed_Poodle @Breed_Poodle : Linea use> ?Breed_Poodle.typus Set{@instanceOf} : Set(Linea) use> ?Breed_Poodle.typus.pars() Bag{@Class,@Object} : Bag(Nodus) ---------------+ | use> ?Breed_Poodle.pars() | Bag{@Breed,@Poodle} : Bag(Nodus) | | use> ?Breed_Poodle.pars().typus | Bag{@Breed,@Class,@Class,@Object} : Bag(Nodus) -+
Conclusion & Open Questions
•
Proposed to formally describe metamodeling notions and relationships with OCL More questions than before: Are inner and outer CD-OD brackets of the same kind? Generalize Nodus,Linea to GraphElement? Easier Potency definition? Bezivin's RepresentedBy, ConformsTo = ResultsFromInstantiating? UML Assoc typed by MOF Class or MOF Assoc? Where are the relationships between the layers expressed? OCL tools --> Meta OCL tools?
• • • • •
• •
•
THE END