Requirements for a Modeling Support Environment
Jonathan Riehl
March, 2000

    The following are a set of requirements for an environment that will sit on top of a Unified Modeling Language [UML] modeling environment [Riehl].  The described "meta-environment" will be used to support a high degree of integration between not only UML tools, but any entity seeking to deploy a custom Meta Object Facility [MOF] solution.  A MOF solution would allow individuals to define a domain as a metamodel, create a library for building models in the domain, and publish both the domain metamodel and models in industry standard format(s.)  The following requirements cater to Python [Python] and C++ specifically, however, there are places where other object oriented languages may be supported.

    Please note the use of "shall" to denote requirements that are considered necessary by the author.  "May" is employed by requirements that would improve the environment, but are not needed.


  1. The environment shall be able to read a metamodel.
    1. Read a metamodel as a CORBA IDL file.
    2. Read a metamodel as a XMI DTD file.
    3. Promote a UML model to a metamodel.
  2. The environment shall be able to write a metamodel.
    1. The environment may be able to write a metamodel as a CORBA IDL file.
    2. Write a metamodel as a XMI DTD file.
    3. Write a set of modeling classes for a metamodel.
      1. Generate metamodel class library for C++.
      2. Generate metamodel class library for Python.
      3. The environment may be able to generate metamodel class library for <OO-language>.
  3. The environment shall be able to instantiate a model.
    1. Instantiate a model using an XMI file/stream.
      1. Parse XMI XML file.
        1. The environment may validate the XML file against DTD.
      2. Verify metamodel class library against XMI DTD.
      3. Dynamically generate metamodel library for unsupported metamodels.

      4. Python only.
      5. Instantiate model objects and references.

      6. This is not code generation, this is in-memory instantiation of an M1 abstraction (see XMI specification.)
        1. Instantiate Python objects.
        2. Instantiate C++ objects.
        3. The environment may instantiate <OO-language> objects.
    2. Instantiate a model using a Python pickle file.

    3. Python only.  This requirement is met as soon as Python modeling objects may be instantiated (given some potential issues regarding potentially differing metamodel class libraries.)
  4. The environment shall be able to serialize a model.
    1. Serialize a model as a Python pickle file.

    2. Python only.  This requirement is met as soon as Python modeling objects may be instantiated (given issues noted above.)
    3. Serialize a model as a XMI XML document.
    4. Serialize a model as a XMI difference document between the model and another model.
  5. The environment may provide a facility to access in-memory models of one language in another.
    1. Access Python in-memory models.
      1. From C.
      2. From C++.
      3. From <OO-language> with Python extension support.
    2. Access C++ in-memory models.
      1. From Python.
      2. From <OO-language> with SWIG support.
    3. Access <OO-language> in-memory models from supported language.


References:
[OMG] The Object Management Group Homepage [Python] The Python Language Website
[Riehl] "Notes on a Modeling Environment", Jonathan Riehl

Last modified 8/10/2000, jriehl AT wildideas.org.