Registered: Apr 2001
Location: New York
ArgoUML XMI version information
This message was received on the argouml-dev mailing list from Fernando and details the current and future state of XMI in ArgoUML. Thanks, Fernando, for this detailed analysis.
Here is some info that I gathered during about one month. These information are based on my perception from digging into code and documentation. I'm not sure if all this is pure true, and I would thanks if someone could correct or complete it.
NSUML is a library for managing metadata represented in an UML fashion. It's not part of ArgoUML project (it's only referenced). It allows to load a model into memory, to create and destroy model elements, to change elements properties, and to write-to or read-from XML in XMI format. It supports XMI version 1.0, and UML 1.3. The homepage for NSUML is http://nsuml.sourceforge.net.
The bad news is that NSUML is being discontinued. There is another project, called NSUML1_4, wich is an entire new form of NSUML. NSUML1_4 provides support for XMI 1.1, UML 1.4, and JMI. It would be very nice if ArgoUML uses NSUML1_4, due to better UML support and JMI support. This is one of my objectives.
NSUML1_4 was not entirely hand-programmed. Instead, the sources of it was GENERATED from the UML 1.4 metamodel, using another free library called NSMDF. The NSMDF can load a metamodel written in XMI, then genarate classes for managing metadata for that metamodel. This was done to generate almost entire NSUML1_4. To put NSMDF into ArgoUML is another of my objectives, because with this, any ArgoUML model wich is conform to MOF can expand to fully functional sources with just some clicks.
NSMDF can generate sources from any MOF metamodel (almost any UML static structure model). This is good, since we don't have to write all code generation from scratch. Of course you need to generate C++ code, so you probable will copy the code generation sources from NSMDF to another place, and start to change them. If you could, please make an evolution of NSMDF instead of creating a separate project. I think C++ code generation would be useful for many people in the future.
There is an intermediate issue before NSUML1_4 and NSMDF can be put into ArgoUML. ArgoUML uses XMI version 1.0, and can't read XMI version 1.1. NSMDF uses XMI 1.1, and I don't know why, it can't read the old XMI version 1.0. The result is that all models already designed using ArgoUML would no be readable by himself just after we make ArgoUML uses NSUML1_4 and NSMDF. So my current work is to implement a translator into NSUML1_4 XMI reader, that transforms a version 1.0 XMI file into version 1.2 or 1.1.
To understand NSUML1_4 and NSMDF, is essential to understand MOF (Meta Object Facility) and UML (Unified Modeling Language). XMI (XML Metadata Interchange) could be helpful. All documentation for those can be obtained from www.omg.org.
That's all for now...
Report this post to a moderator | IP: Logged