Shlaer-Mellor and Executable UML Portal

(Top Tabs)

OOA Interchange Format

Last Updated: 14 December 2009


The OOA Interchange Format defines the OOA file format used to interchange OOA10 models between OOA editors, simulators, translators, and other tools. The file format is based on the Extensible Markup Language (XML) 1.0 standard and is formalized using an XML DTD. The current OOA Interchange Format DTD is:

OOAInterchangeFormat0.04.dtd (drop the ".html" suffix for the actual DTD)

An OOA file is an XML file (with an ".ooa" suffix) conforming to this DTD which contains a single project definition. However, a project may import domains and bridges from other projects defined in other OOA files. An example OOA file using this format is given below:

The Information Model Report (including graphical model) generated by OOA Tool from this OOA file is:
Information Model Report for Management of Magnetic Tapes

The OOA Interchange Format uses XML attributes more heavily than is generally recommended since it maps OOA of OOA objects to XML elements and OOA of OOA attributes to XML attributes (except for attributes of type Description which are mapped to XML elements instead of attributes). This results in smaller OOA files but may annoy XML purists! ID and IDREF attributes are not used at present but an option to use these may be added in the future. Their use would allow additional validation to occur but it may increase the size of OOA files significantly. XML element, attribute and enumerated values within the DTD use the CamelCase naming convention. A comment has been added after each XML element in the DTD indicating: whether attributes are referential (R) or mathematically dependent (M), attribute data type names, and whether attributes are conditional (1c). However, this information can be found in the OOA of OOA.

Obviously, when mapping a Project from the OOA of OOA into a hierarchical XML structure, there are bound to be compromises as to how circular references are decoupled. Furthermore, several service domains need to be incorporated into the OOA Interchange Format, e.g. the Diagramming service domain. Along with the bridges between the OOA of OOA and the service domains. The format currently incorporates a small amount of information from a Reporting service domain. However, this will be dropped once Information Model Reports are implemented as archetype templates. Some elements within the format currently include Path and RelativePath attributes referencing external files such as diagrams. A new File System service domain will be defined and used in the future to formalize such information.

Version 0.01 is the first tracked version of the format. All future changes will be tracked in the change log below allowing users to manually update their models if necessary. However, OOA Tool will attempt to maintain backwards compatibility across BETA releases. The last BETA release will support the Version 1.0 format and all previous 0.x formats. It will also remain available after OOA Tool 1.0 Standard is released since non-BETA versions of OOA Tool will not maintain backwards compatibility with previous 0.x formats.

OOA Tool

Obviously, OOA Tool supports the OOA Interchange Format as specified since it is used to validate any changes made to the format. It also supports a number of preferences which control the formatting of OOA files:

    Preferences >
        OOA Interchange Format >
            Document Type Declaration >
                x Internal DTD
                o External File DTD
                o External Website DTD
            o Include Default Values From DTD
            o Include Derived Data
            Tab Size >
                o 0
                o 1
                o 2
                o 3
                x 4
                o 5
                o 6
                o 7
                o 8

Each OOA file has an XML document type declaration which can either be:

The latter options result in significantly smaller OOA files for smaller models. However, as models increase in size, the size of an internal DTD becomes less and less significant.

Default values as specified in the DTD can also be explicitly included in OOA files. This increases the size of OOA files significantly and makes little difference when viewing the XML using a browser such as Internet Explorer since it will automatically include default values from the DTD. The only difference being that empty description elements will also be included when this preference is selected. This preference is useful when users want to use a search and replace tool to edit an OOA file.

Derived data (e.g. mathematically dependent attributes and predefined types) can also be included in OOA files. This preference is useful when users want to use third-party tools to access model information that requires sophisticated logic to determine, e.g. Referential Attribute.Referential Suffix. This preference also increases the size of OOA files significantly.

Each OOA file can also be formatted in a more human readable format using tab indentations. To turn tab indentations off, set the tab size to 0.


The OOA Interchange Format currently supports the following OOA diagrams:

Support for the following diagrams will be added later:

The structure and content of diagram elements is based on OOA Tool's Diagramming service domain (see Information Model Report for Diagramming) which defines diagrams in terms of shapes, links and points. The Diagramming service domain is currently defined in a minimum form, e.g. it defines way points for links but not end points since they can be derived automatically. The format as it stands makes lots of assumptions about the shape and link styles required in each diagram which may lead to undesirable variations in the look and feel of displayed OOA diagrams. However, the essential content and layout of OOA diagrams need not vary (unless requested by the user) even with the format as it currently stands. The Diagramming service domain will be expanded in the future to include shape and link styles along with shape and link labels. This should help eliminate any potential variation in diagram look and feel across tools. It will also define default heuristics for calculating end points and placing link labels etc.

Shape names and link IDs are diagram dependent:

All widths, heights, x coordinates and y coordinates are given in pixels. All font sizes are given in points which are roughly 1/72 of an inch. The height of a font (i.e. the distance between two lines of text) is the sum of the leading, ascent and descent heights. A given font size relates to the ascent height only (not the overall height). The OOA Interchange Format currently assumes 72 pixels per inch (Java 2D makes the same assumption even if a given screen resolution is different). This fact allows us to convert font sizes which are always given in points into approximate pixel sizes, e.g. a 12 point font has a typical ascent height of 12 pixels.

The top left-hand corner of each diagram has an origin of (0,0) with x coordinates moving from left to right and y coordinates from top to bottom (not bottom to top). Viewable diagram space extends from the origin at (0,0) to (width,height). Any diagram content which falls outside of this space is clipped when viewed. However, clipped content should be preserved and in OOA Tool can be viewed by performing a select-all (using CTRL-A) and then moving the clipped content into the viewable diagram space. The location of a shape is always the top left-hand corner of that shape. The location of a point is always the center of that point.

Each diagram has an associated base font that is used for shape and link labels. Labels within a diagram may alter the style or size of the base font, e.g. verb phrases in Object Information Models are always shown in italics. This font is always explicitly specified in the OOA Interchange Format since default fonts vary from platform to platform. The syntax for font values (based on Java's Font.decode() method) is given below:

     font := name [ ( '-' | ' ' ) style ] [ ( '-' | ' ' ) size ]
     name := "Serif" | "SansSerif" | "Monospaced" | "Dialog" | "DialogInput"
    style := "plain" | "bold" | "italic" | "bolditalic"
     size := { '0'..'9' }+
The font names listed above represent logical fonts which are mapped to physical fonts on each platform. A physical font name (e.g. Ariel) can be used instead but it may not be supported on all platforms. Styles are case-insensitive. The default font in OOA Tool is SansSerif-plain-12.

Change Log

Version 0.01 Initial tracked version.
Requires OOA Tool 1.0 BETA Build 009 (or later).
Version 0.02
  • AttributeDataItem and TransientDataItem elements now include an optional Description element.
  • As a result of changes to the Diagramming service domain:
    • Shape element now includes an optional PreferredSizeUsage attribute,
    • UnaryLink element now called SimpleUnaryLink,
    • SpurLink, ParentLink and ChildLink now have a SourceShape attribute instead of a SpurShape, ParentShape or ChildShape attribute,
    • SpurLink element now includes a TargetPoint element which was previously inferred,
    • and ParentLink element now includes a TargetPoint element instead of a BranchPoint element.
Requires OOA Tool 1.0 BETA Build 011 (or later).
Version 0.03
  • Project elements and all diagram elements (e.g. DomainChart) now have an optional Notation attribute. However, notation does not effect any other part of the OOA Interchange Format.
  • The optional Identifying attribute on attribute elements is replaced with an optional IdentifyingSuffix attribute containing a comma separated list of identifier IDs referencing all identifiers which the attribute is part of.
  • Attribute elements no longer include a Constraints element. Any constraints text is now appended to the attribute description when a model is loaded.
  • ComposedRelationship elements now include 2 or more LoopTraversalMapping elements rather than the same number of ComponentParticipant elements. Other binary relationship elements now also include 1 or more LoopTraversalMapping elements if they are constrained relationships.
  • ReferentialAttributeMapping elements now have an optional LoopConstrained attribute.
  • State elements now have a SimpleAction element including a StatementBlock element rather than an Action element including a Description element.
  • The SimpleAction element includes a new MaximumVisibleLOC attribute.
  • State elements now have their own Description element.
  • SimpleState and DeletionState elements now have an optional TransitionEventsCompatible attribute.
  • All link Label attributes have been replaced with LinkID attributes. BinaryLink elements now have an optional LabelAnchorFlipped attribute.
Requires OOA Tool 1.0 BETA Build 012 (or later).
Version 0.04
  • Replaced Project element's FormatVersion attribute with a LocationFormat attribute.
  • Data types now include new BooleanType and ArbitraryIDType elements.
  • Renamed SimpleAttribute element's FinalValue attribute to Final.
  • Attributes now include new ArbitraryIDAttribute element.
  • Added optional DataTypeAcceptable attribute to all attribute elements.
  • Renamed LoopTraversalMapping element's Relationship attribute to TraversedRelationship and added optional SourceRoleRequired and TargetRoleRequired attributes.
  • Added ModelPopulation, DomainPopulation, ObjectInstanceTable, ObjectInstance, AttributeInstance, RelationshipInstanceTable, RelationshipInstance and ParticipantInstance elements for capturing object and relationship instance data.
  • Added MetamodelPopulation element for linking in a specific version of metamodel instance data.
  • Project now includes new Task elements. Domains and subsystems now include new Activity elements.
Requires OOA Tool 1.0 BETA Build 013 (or later).
Version 0.05
  • Information Models can now include the following additional data type elements: ExternalType, ObjectInstanceType, EventInstanceType, ReturnCoordinateType, and TransferVectorType.
  • All data type elements now include optional DataTypeID and ReferenceCount attributes which are added when a user selects the Include Derived Data preference.
  • Boolean alias default values are now camel-case rather than upper-case formatted.
  • Only user defined types are included when formatting a model unless a user selects the Include Derived Data preference. In which case, all predefined types (whether referenced or not) are also included. However, predefined types (whether they are recognized or not) are always ignored after they are parsed during loading.
Requires OOA Tool 1.0 BETA Build 014 (or later).
Version 1.0 Requires OOA Tool 1.0 Standard (not released yet).

(Bottom Tabs)

Copyright © 2008-2010 by Kavanagh Consultancy Limited. All rights reserved.