[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-kuml-devel
Subject:    MOF is Meta-UML
From:       "Riehl, Jonathan (Jonathan)" <jriehl () lucent ! com>
Date:       2000-09-22 15:09:03
[Download RAW message or body]

Hi all,
	Let me give ya'll some insight into what Chris, and possibly
Darius and I are talking about.  Please forgive the following, as it
is rife with TLA's (three letter acronyms.)  The fine folks at the
OMG (Object Modeling Group) have proposed a subset of the UML
(Unified Modeling Language) that may be used to describe the UML
meta-model.  The meta-model is a model that describes the components
that are used to build UML models themselves.  The subset they
proposed is called the MOF (Meta Object Facility.)  They have
published an IDL (Interface Definition Language) model that describes
an interface to a MOF, as well as notes and constraints that allow
MOF models to be exchanged.  The format they chose for exchanging
meta-models is called XMI (XML (eXtensible Markup Language) Meta-
data Interface.)  Theoretically, one modeling environment is able
to speak to another modeling environment if they generate compatible
XMI files.  Furthermore, the OMG has published the UML meta-model
as an XMI document.  In theory, using an XMI code generator, one would
be able to automatically build a class library for their persistence
layer, as well as an import/export facility that worked with any
other XMI compliant tool.  There is no need to document the meta-
model library except where it diverges from the OMG specification.
Otherwise, the OMG specification is our design document (albeit
somewhat dense reading :).)
	Now NSUML (NovoSoft UML) is a Java library that accomplishes
some of these goals.  While Novosoft is working towards building
their UML persistence layer from OMG products, they are currently
using a custom meta-model language they developed in XML.  Basil comes
into this by using its own XML integration to read the Novosoft meta-
model specification, and generate a Python script that creates a
comparable Python version of the NSUML Java library.  The current
sticking point is model interchange (import/export.)  I am working
toward getting further in line with the Novosoft works in progress,
and generating not only a Python library, but a C++ library. This is
where I will need a C++ XML library.  Such an XML library is needed
to import and export UML models in XML (Chris: Qt and GNOME have their
own XML libraries, which is why I would be prone to choose expat.)
	Assuming I am successful, the meta-model library is automatically
generated in minutes rather than 18 months.  KUML gets a special
adapter factory class allowing new libraries to be plugged in, and Basil
gets a modeling environment for creating domain specific meta-models
and class libraries (with automated XMI import/export.)  An important
thing to remember is that XMI models have more utility than just code
generation.  For the CORBA heads, IDL may be generated from these,
providing nigh-automatically distributed objects and language
independent libraries.  For the testing heads (of which I am some of
the time,) interfaces may be duplicated and analyzed for unit test
generation.  For the scripting heads (of which I am a good deal of the
time,) interfaces may be used to generate SWIG (Simplified Wrapper
Interface Generator) files, and wrap C++ libraries in Python and Perl.
Having an open source Python/Java/C++ class library for the same XMI
model format would be a boon to the modeling community, as well as the
Basil goal of language transcendence.
	Basil is using the Python license, which is free as dirt, meaning
anyone can adapt my project into a GNU licensed code base as long as
copyright notices are preserved.  I think there was some dispute about
GPL compatibility, but I think that is when a Python license code base
brings in GPL, not the other way around.
	I encourage everyone to think about it, and apply pressure on me
as you see necessary.  This stuff is high priority with me, meaning
it gets only three hours a week or so :).  I might be able to escalate
it to critical priority with the proper persuasion.
-Jon

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic