For awhile I've been browsed through the assorted XMI specification docs from the OMG site, and have been interested in using XMI for some tool-building activities. Yesterday I receive my new handy-dandy copy of Rose 2001 Enterprise, and installed the XMI addin from Unisys. My reaction so far is "am I missing something here?". I don't see the degree of XMI utility that I expected. I'll try and explain what I mean.

Appendix C of the XMI 1.1 spec doc has a pretty straight-forward example of using XMI. To recap:

  • File "Campus.xml" is an XMI model (declares itself as such in the XMI.model portion of the header) with UML as its metamodel.
  • Ditto for file "Department.xml"
  • File "Schedule.xml" is an XMI model that has dependencies on the previous two models, and has UML as its metamodel.

This are already a bit interesting at this point; you can create a couple of models, then use pieces of them in the creation of a third model, and all of these models are instances of their metamodel. The example takes it another step and creates instances of these models (e.g. "Chemistry.xml") that, while technically XMI models, are actually real data (ground terms to any ex-Prolog hackers). This shows the flexibility and power of XMI; I can define models, combine models, and instantiate models. Take it one step further and generate a decent DTD from those models and I can have (non-XMI?) XML data files based on that DTD. Pretty neat.

Now, I compare that to the features in Rose 2001 + the Unisys addin. I can output XMI files, but they don't look like XMI models in the same sense as the examples in the spec. I can't combine models. I can't instantiate models. If I make the mistake of generating pieces of a model into separate files, I can't combine those pieces back into Rose... no round-tripping allowed. I can only load in a piece at a time, and those pieces don't load completely if they have dependencies on other model files. I can create DTDs, but not from any kind of XMI model, only from a literal Rose model of the DTD itself.

So, I get back to my original question. Am I missing something here? So far I'm unable to spot any kind of opportunity for a cohesive XMI-based workflow using Rose. As far as I can tell, the current features only support efforts to dump MOF files for loading into some kinds of proprietary repositories that I don't use, or UML files for loading into competitive CASE tools.

Thoughts? Reactions? Flames even? I freely admit to being an XMI/MOF newbie. :-)



Do You Yahoo!?
Make international calls for as low as $.04/minute with Yahoo! Messenger
http://phonecard.yahoo.com/

Reply via email to