As mentioned before, XMI does not necessarily equal XMI. Meaning: Different tools support XMI in different ways. Therefore we test interoperability with every release of iQgen.
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.
Since version 2.0 we support both:
static UML
dynamic UML
The mentioned categories in the following tables can be found in the model of each chapter.
Table 4.6. XMI versions exported by different CASE tools
| Rational Rose 2000/ 2003 | 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 | Poseidon 2.2 | ArgoUML 0.9.8 |
|---|---|---|---|---|---|---|---|---|
| 1.1 and 1.0[a] | 1.1 | 1.1 | 1.1 and 1.0[b] | 1.0 | 1.0 | 1.1 | 1.2 | 1.1 |
[a] We test both exporter versions. You can find the Rose plug-in on the rational website, in the “Download Center” at “Plug-Ins for Rational Rose”. [b] We use XMI 1.0 export. | ||||||||
With this test we test the associations, multiplicity and role names between two classes.

Table 4.7. Tool specific support of associations
| 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[a] | ObjectDomain R3 | Poseidon 1.2 + 1.4 | Poseidon 2.2 | ArgoUML 0.9.8 |
|---|---|---|---|---|---|---|---|---|---|
| simpleAssoc | X | X | X | X | X | X | X | X | X |
| singleNavOneToMany | X | X | X | X | X | X | X | X | X |
| bidirectedManyToMany | X | X | X | X | X | X | X | X | X |
| backdirected | X | X | X | X | X | X | X | X | X |
[a] rolenames must be set | |||||||||
Let's have a look at the interfaces and classes themselves. Do we get all information about generalizations and specializations we need?

Table 4.8. Supported interface and class inheritance
| 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 | Poseidon 2.2 | ArgoUML 0.9.8 |
|---|---|---|---|---|---|---|---|---|---|
| AbstractMother is superclass of Mother | X | X | X | X | X | X | X | X | X |
| Mother is subclass of AbstractMother | X | X | X | X | X | X | X | X | X |
| AbstractMother implements IParent and IChild | X | X | X | X | X | X | X | X | X |
| IParent is implemented by AbstractMother | X | X | X | X | X | X | X | X | X |
| IChild is implemented by AbstractMother | X | X | X | X | X | X | X | X | X |
| IFather extends IParent and IChild | X | X | X | X | X | X | X | X | X |
| IParent is generalization of IFather | X | X | X | X | X | X | X | X | X |
| IChild is generalization of IFather | X | X | X | X | X | X | X | X | X |
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.

Table 4.9. Supported stereotypes and tagged values
| 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 | Poseidon 2.2 | ArgoUML 0.9.8 |
|---|---|---|---|---|---|---|---|---|---|
| PlugException has stereotype PlugException | X | X | X | X | X | X | X | X | X |
| *XMIImporter[a] has stereotype plugin | X | X | X | X | X | X | X | X | X |
| IPluggable#plug throws PlugException | -- | -- | -- | -- | -- | -- | -- | -- | -- |
| All parameters are correct | X | X | X | X | X | X | X | X | X |
[a] RoseXMIImporter, InnovatorXMIImporter and TogetherXMIImporter | |||||||||
This test shows what information about attributes and operations can be used.

Table 4.10. Supported attributes and operations properties
| 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 | Poseidon 2.2 | 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) | X | default scope is wrong (protected) |
| static is recognized | -- | X | X | -- | -- | X | X | X | X |
| final is recognized | -- | -- | -- | -- | X | -- | -- | -- | -- |
| Stereotypes are recognized | X | X | X | X | X | X | X | X | X |
| Tagged values are recognized | -- (differs) | -- (differs) | -- (differs) | -- (differs) | -- (differs) | X | X | X | X |
Dependencies between different kinds of model elements.

Table 4.11. Supported package/class/interface dependencies
| 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 | Poseidon 2.2 | ArgoUML 0.9.8 |
|---|---|---|---|---|---|---|---|---|---|
| TEClass1 is client dependency of TEClass2 | X | X | X | X | -- | X | X | X | X |
| TEClass2 is supplier dependency of TEClass1 | X | X | X | X | -- | X | X | X | X |
| TEInterface1 is client dependency of TEInterface2 | X | X | X | X | -- | X | -- | X | -- |
| TEInterface2 is supplier dependency of TEInterface1 | X | X | X | X | -- | X | -- | X | -- |
| TEClass1 is client dependency of TEInterface1 | X | X | X | X | -- | X | -- | X | -- |
| TEInterface1 is supplier dependency of TEClass1 | X | X | X | X | -- | X | -- | X | -- |
| TEClass2 is supplier dependency of TEInterface2 | X | X | X | -- | -- | X | -- | X | -- |
| TEInterface2 is client dependency of TEClass2 | X | X | X | -- | -- | X | -- | X | -- |
With this test we test states and transitions.

Table 4.12. Tool specific support of associations
| Category | Rational Rose 2003 | TogetherJ 6.0 | ArgoUML 0.14 |
|---|---|---|---|
| find all states | X | X | X |
| find all transitions | X | X | X |
| Name of state | X | X | X |
| Name of transition | -- | X | X |
| All incomings/outgoins (states) | X | X | X |
| All sources/tragets (transitions) | X | X | X |
| Stereotypes on states | X | X | -- |
| Stereotypes on transitions | X | X | -- |
| TaggedValues on states | -- | -- | X |
| TaggedValues on transitions | -- | -- | X |