Shlaer-Mellor OOA uses numbers to help analysts identify various model elements. Some model elements use numbers as primary identifiers, e.g. relationships. While other model elements use numbers as secondary identifiers, e.g. objects, states, events, processes and synchronous services. Note that, OOA10 defines operations as a process and synchronous service supertype, generalizing process and synchronous service numbers as operation numbers.
If an object or relationship has been assigned to a subsystem then its number is restricted to the number range associated with that subsystem. These number ranges are typically assigned at intervals of 100, e.g. 1-99, 101-199, 201-299 etc. This helps analysts identify which subsystem an object or relationship is assigned to simply from looking at its number.
These numbering conventions were introduced in OOA91 at a time when there was minimal CASE tool support. They were designed to help analysts handle a mostly paper driven modelling process. OOA10 assumes a CASE tool is being used to capture and maintain models since OOA Tool has been implemented hand-in-hand with OOA10 as a cross platform reference implementation. The standard edition of this CASE tool is distributed freely to help promote the use of Shlaer-Mellor OOA/RD in a UML dominated industry.
OOA10 supports all of the numbering conventions used in OOA91. However, all of these numbers should by default be automatically allocated by your CASE tool. The CASE tool should also allow an analyst to override the automatic numbering so that previously defined models can still be captured and maintained. The CASE tool should also support and enforce subsystem number ranges.
OOA10 supports manual and automatic numbering by defining a naming attribute called Order
of type Ordinal ID
, a naming attribute called Manual Number
and a mathematically dependent attribute called Number
for each of the numbered model elements. The order attribute is automatically updated as a model element is reordered within the context of its parent model element. Ordinal ID attributes will be discussed along with Arbitrary ID attributes in a future post. The manual number attribute is maintained by the analyst (after manual numbering is enabled). The number attribute is derived from either the order attribute or the manual number attribute dependent on whether manual numbering is enabled. Deriving object and relationship numbers is more complicated since objects and relationships may be assigned to a subsystem. If that is the case then automatic numbers are derived from the subsystems lowest number offset by the assigned object or relationship order attribute which is distinct from the object or relationship order attribute. OOA Tool does not allow an analyst to define non-unique manual numbers.
The attributes in OOA10 which control each model element number are given below:
Manual Object Numbering
attribute defined on an object's parent information model,Manual Relationship Numbering
attribute defined on a relationship's parent information model,Manual State Numbering
attribute defined on a state's parent state model,Manual Event Numbering
attribute defined on an event's parent event destination,Manual Operation Numbering
attribute defined on an operation's parent event destination.
OOA10 supports manual and automatic subsystem number ranges by defining the optional descriptive attributes Manual Lowest Number
and Manual Highest Number
along with the mathematically dependent attributes Lowest Number
and Highest Number
. The manual lowest and highest number attributes are maintained by the analyst. The lowest and highest number attributes are derived from the manual numbers dependent on whether the manual number range allows all objects and relationships to be allocated unique numbers within the specified number range. OOA Tool will automatically override the manual number range with a valid range if necessary to ensure all object and relationship numbers are unique.