|
This matrix describes the differences between the common modeling tools' XMI export capabilities. It should help you to use your modeling tool of choice
so that it best suits your needs. All tools pass the "Association Test" but the "Dependeny Test" shows significant differences between
the tools we tested.
How do we test?
We start with a simple UML model and redraw it in every modeling tool we test. You can find the model for the test at the beginning of each section.
After exporting the model to XMI format, we try to access all of the model information we have specified. In some cases we are able to retrieve all information, in some cases we are not.
The mentioned categories in the following tables can be found in the model of each chapter.
|
Rational Rose 2000 |
MID Innovator 7.0.4 |
MID Innovator 8.0.02; 8.0.03 |
TogetherJ 4.2 + 6.0 |
ObjectiF 4.6 |
ObjectDomain R3 |
Poseidon 1.2 + 1.4 |
ArgoUML 0.9.8 |
| XMI version |
1.1 and 1.0* |
1.1 |
1.1 |
1.1 and 1.0** |
1.0 |
1.0 |
1.1 |
1.1 |
Table 1: Exported XMI versions
*We test both exporter versions. You can find the Rose plugin on the rational website.
You can find it at the "Download Center" at "Plugins for Rational Rose".
**We use XMI 1.0 export.
Association Test
With this test we test the assocations, multiplicity and role names between two classes.

| Category |
Rational Rose 2000 |
MID Innovator 7.0.4 |
MID Innovator 8.0.02; 8.0.03 |
TogetherJ 4.2 + 6.0 |
ObjectiF 4.6* |
ObjectDomain R3 |
Poseidon 1.2 + 1.4 |
ArgoUML 0.9.8 |
| simpleAssoc |
X |
X |
X |
X |
X |
X |
X |
X |
| singleNavOneToMany |
X |
X |
X |
X |
X |
X |
X |
X |
| bidirectedManyToMany |
X |
X |
X |
X |
X |
X |
X |
X |
| backdirected |
X |
X |
X |
X |
X |
X |
X |
X |
Table 2: Supported associations
* rolenames must be set!
Interface Class Distinction Test
Let's have a look at the interfaces and classes themselves. Do we get all information about generalizations and specializations we need?

| Category |
Rational Rose 2000 |
MID Innovator 7.0.4 |
MID Innovator 8.0.02; 8.0.03 |
TogetherJ 4.2 + 6.0 |
ObjectiF 4.6 |
ObjectDomain R3 |
Poseidon 1.2 + 1.4 |
ArgoUML 0.9.8 |
| AbstractMother is superclass of Mother |
X |
X |
X |
X |
X |
X |
X |
X |
| Mother is subclass of AbstractMother |
X |
X |
X |
X |
X |
X |
X |
X |
| AbstractMother implements IParent and IChild |
X |
X |
X |
X |
X |
X |
X |
X |
| IParent is implemented by AbstractMother |
X |
X |
X |
X |
X |
X |
X |
X |
| IChild is implemented by AbstractMother |
X |
X |
X |
X |
X |
X |
X |
X |
| IFather extends IParent and IChild |
X |
X |
X |
X |
X |
X |
X |
X |
| IParent is generalization of IFather |
X |
X |
X |
X |
X |
X |
X |
X |
| IChild is generalization of IFather |
X |
X |
X |
X |
X |
X |
X |
X |
Table 3: Supported interface and class inheritance
Stereotype, Exception, and Parameter Test
In most cases we need to specify some architectural information in the model. Stereotypes and tagged values are often used for this task.
With this test we want to find out which stereotypes and tagged values are supported.

| Category |
Rational Rose 2000 |
MID Innovator 7.0.4 |
MID Innovator 8.0.02; 8.0.03 |
TogetherJ 4.2 + 6.0 |
ObjectiF 4.6 |
ObjectDomain R3 |
Poseidon 1.2 + 1.4 |
ArgoUML 0.9.8 |
| PlugException has stereotype "PlugException" |
X |
X |
X |
X |
X |
X |
X |
X |
| *XMIImporter has stereotype "plugin" |
X |
X |
X |
X |
X |
X |
X |
X |
| IPluggable#plug throws PlugException |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
| all parameters are correct |
X |
X |
X |
X |
X |
X |
X |
X |
Table 4: Supported stereotypes and tagged values
* RoseXMIImporter, InnovatorXMIImporter and TogetherXMIImporter
Attributes/Operations Test
This test shows what information about attributes and operations can be used.

| Category |
Rational Rose 2000 |
MID Innovator 7.0.4 |
MID Innovator 8.0.02; 8.0.03 |
TogetherJ 4.2 + 6.0 |
ObjectiF 4.6 |
ObjectDomain R3 |
Poseidon 1.2 + 1.4 |
ArgoUML 0.9.8 |
| scope is correct |
default scope is wrong (private) |
default scope is wrong (private) |
X |
default scope is wrong (public) |
default scope is wrong (protected) |
default scope is wrong (protected) |
default scope is wrong (protected) |
| static is recognized |
-- |
X |
X |
-- |
-- |
X |
X |
X |
| final is recognized |
-- |
-- |
-- |
-- |
X |
-- |
-- |
-- |
| stereotypes are recognized |
X |
X |
X |
X |
X |
X |
X |
X |
| taggedvalues are recognized |
-- (differs) |
-- (differs) |
-- (differs) |
-- (differs) |
-- (differs) |
X |
X |
X |
Table 5: Supported attributes and operations properties
Dependency Test
Dependencies between different kinds of model elements.

| Category |
Rational Rose 2000 |
MID Innovator 7.0.4 |
MID Innovator 8.0.02; 8.0.03 |
TogetherJ 4.2 + 6.0 |
ObjectiF 4.6 |
ObjectDomain R3 |
Poseidon 1.2 + 1.4 |
ArgoUML 0.9.8 |
| TEClass1 is client dependency of TEClass2 |
X |
X |
X |
X |
-- |
X |
X |
X |
| TEClass2 is supplier dependency of TEClass1 |
X |
X |
X |
X |
-- |
X |
X |
X |
| TEInterface1 is client dependency of TEInterface2 |
X |
X |
X |
X |
-- |
X |
-- |
-- |
| TEInterface2 is supplier dependency of TEInterface1 |
X |
X |
X |
X |
-- |
X |
-- |
-- |
| TEClass1 is client dependency of TEInterface1 |
X |
X |
X |
X |
-- |
X |
-- |
-- |
| TEInterface1 is supplier dependency of TEClass1 |
X |
X |
X |
X |
-- |
X |
-- |
-- |
| TEClass2 is supplier dependency of TEInterface2 |
X |
X |
X |
-- |
-- |
X |
-- |
-- |
| TEInterface2 is client dependency of TEClass2 |
X |
X |
X |
-- |
-- |
X |
-- |
-- |
Table 6: Supported package/class/interface dependencies
|