There are several existing UML and Executable UML metamodels. So why, oh why, do we need another one?
There are several motivations driving miUML:
1) Fix problems and inadequacies in existing Executable UML metamodels and tools such as:
- Incorrect or non-existent formalization of referential attributes and the rules for using them.
- Unconstrained generalization and incorrect use of referential attributes therein.
- Poor and non-existent metamodel documentation.
- Lack of explicit constraints.
- No explicit support for constrained loops.
- Incorrect identifier construction.
- Tool-hack variations from Shaler-Mellor and Mellor-Balcer (class based statecharts, for example)
2) Provide a better and more transparent fit between miUML and the underlying relational theory
Executable UML is derived from Shlaer-Mellor which was based firmly on the relational model which is grounded in set theory and mathematics. In the rush to appease the object-oriented community and adhere to UML, many great benefits of referential attributes were dropped. We’re bringing them back. OCL has been put forward as a mechanism for expressing constraints, but in many cases, referential attributes solve the problem more concisely and directly in the model structure thus helping ensure that they are carried forward into any implementation.
3) Create a metamodel that better enforces the modeling rules. Existing executable UML metamodels permit nonsensical constructs such as one-legged generalizations.
4) Incorporate features that were lost in the adaptation of UML notation onto Shlaer-Mellor, such as symmetric reflexive associations.
5) Remove various hacks that have been introduced as shortcuts by vendor tools and subsequently abused by modelers.
6) Make it open source to encourage larger scale participation in development of tools, publication of techniques, and usage. If you don’t have to worry about onerous licenses and innovation stifling attorneys, you can feel more comfortable about getting down to business and realizing your dreams!
7) Provide a hub for both proprietary and open source tools.
8) Raise the bar for model documentation.
Every aspect of the miUML metamodel is documented. Every class, attribute, identifier, association multiplicity, association conditionality, association meaning, loop constraint, data type is described and illustrated. An emphasis is placed on explaining the rational behind all abstractions. We truly want to open this metamodel up for others to use and extend. We also hope that he standards used for these descriptions will be adopted by other analyst/modelers. One can always hope.