Hosted by:
SourceForge.net Logo


Ummph!

UMMF - UML Meta-Model Framework

(pronounced "Ummph!")

Contact kstephens at sourceforge.net

What is UMMF?


UMMF is an open-source implementation of a UML Meta-meta-model, for the purposes of reifying meta-model implementations.

It is written in Perl and provides a specification of UML 1.5 meta-model in a human and machine-readable meta-meta-model description language. 

The meta-meta-model can be used to generate implementations of the UML meta-model in XMI, Perl and Java and other languages.  Thus, one specification of the meta-model can generate meta-model implementations in many programming languages.  Once a programming language has been targeted with an exporter, code can be generated for UML meta-models and models.

Why UMMF?

The goal of UMMF is processing of UML models and meta-models in a variety of implementation languages for the purpose of transforming UML models.

UMMF is self-hosting; for example: the Perl UML::MetaModel package is generated by bootstrapping from the meta-meta-model.  The meta-meta-model is specified with the same specification as the meta-model.

Models can be imported from popular UML editors via XMI 1.0 and 1.2.  Meta-models and models can currently exported to XMI 1.2.

Code generated from UML models by UMMF is reflective; models can reflect on their own meta-models.  For example, the code exporters generate a __classifier() method for each Class that will return the meta-model Classifier object for the model object.

Many inexpensive UML editors have inflexible or non-existant code generation tools.  Generating code using XSLT on XMI is an adventure into the pain of a W3C-sponsored hell.

UMMF can provide a base UML meta-model implementation for other UML tools.

What does UMMF do?

UMMF contains model transformations; for example:
  1. Generate Interfaces for all Classes.
  2. Transform Classes with multiple inheritance to single inheritance using Interfaces.
  3. Remove AssociationEnd name collisions across Generalizations.
  4. Processing Models as Design Pattern templates.

What can UMMF do?

As of 2003/05/09, UMMF can:

What doesn't UMMF do?

As of 2003/05/09, UMMF does not:

What should UMMF do?

Where can I get UMMF?

Until the SourceForge site, http://sourceforge.net/projects/ummf/, is complete, please visit http://kurtstephens.com/pub

Also check out http://kurtstephens.com/resume.html;  I need a job!

What does UMMF need?

Frequently Asked Questions

What is the relationship of this to MOF?

  UMMF does not implement MOF, yet.  IMHO, MOF is simply a subset of UML "Foundation" meta-model Package with all the class names prefixed with "Meta" and plenty of CORBA IDL to keep OMG happy.  Maybe it exists because a lot of work was invested in hand-coded UML meta-model implementations.  :)

  If we need CORBA IDLs, then UMMF could have an IDL exporter that could generate IDL for *all* the M* layers.  Actually, a UMMF IDL exporter should generate the exact same IDLs from a MOF specification as the ones published by OMG, which look, to me, to be generated from *something*, just like the XMI DTDs.

  To select a subset of the UML meta-model to represent MOF, the meta-model specification in UMMF could be annotated with C preprocessor #ifdef and #define to select the appropriate subset as specified in the table on p. xiii of the MOF 1.4 specification.

  UMMF uses its UML meta-model description as its own meta-meta-model; the two are interchangable in UMMF since they mostly have the same task in UMMF: represent UML models and transform them; the UML meta-model is just a model in UMMF.

  At some point it might make sense to have drop the hard-coded UML meta-model specification I wrote and generate its meta-model directly from analysis of the MOF IDLs published by OMG.  Then when OMG publishes new IDL mappings for subsequent versions of the MOF, we all get code for free.  But that may not work, since the MOF does not implement the full UML meta-model, by definition.  Maybe I'm just getting myself confused here.  :)  Maybe when UML 2.0 makes it's sweeping changes to the UML meta-model, that will make sense. 

  UMMF is a work in progress, but I think it has the potental to be the thing that generates standard UML meta-model implementions across many languages and environments.  Think of it as the "XML DOM" generator for the UML meta-model.

Why isn't UMMF written in Java? or C++?  or Cobol?



Revision: 2003/05/09