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.
-
The environment shall be able to read a metamodel.
-
Read a metamodel as a CORBA IDL file.
-
Read a metamodel as a XMI DTD file.
-
Promote a UML model to a metamodel.
-
The environment shall be able to write a metamodel.
-
The environment may be able to write a metamodel as a CORBA IDL file.
-
Write a metamodel as a XMI DTD file.
-
Write a set of modeling classes for a metamodel.
-
Generate metamodel class library for C++.
-
Generate metamodel class library for Python.
-
The environment may be able to generate metamodel class library for <OO-language>.
-
The environment shall be able to instantiate a model.
-
Instantiate a model using an XMI file/stream.
-
Parse XMI XML file.
-
The environment may validate the XML file against DTD.
-
Verify metamodel class library against XMI DTD.
-
Dynamically generate metamodel library for unsupported metamodels.
Python only.
-
Instantiate model objects and references.
This is not code generation, this is in-memory instantiation of
an M1 abstraction (see XMI specification.)
-
Instantiate Python objects.
-
Instantiate C++ objects.
-
The environment may instantiate <OO-language> objects.
-
Instantiate a model using a Python pickle file.
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.)
-
The environment shall be able to serialize a model.
-
Serialize a model as a Python pickle file.
Python only. This requirement is met as soon as Python modeling
objects may be instantiated (given issues noted above.)
-
Serialize a model as a XMI XML document.
-
Serialize a model as a XMI difference document between the model and another
model.
-
The environment may provide a facility to access in-memory models of one
language in another.
-
Access Python in-memory models.
-
From C.
-
From C++.
-
From <OO-language> with Python extension support.
-
Access C++ in-memory models.
-
From Python.
-
From <OO-language> with SWIG support.
-
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.