Element - modelint/shlaer-mellor-metamodel GitHub Wiki

A Shlaer-Mellor model component confined and managed within a single Domain is known as an element. This abstraction makes it possible to establish unique identity for all components of a Shlaer-Mellor model.

It might appear that every conceivable model component should, therefore, be classified as a subclass of Element, but this is unnecessary. The uniqueness of an Attribute component, for example, is scoped within a Class, and therefore constrained to be within a single Domain. Most other model components are similarly scoped. Notable exceptions are Relationship, Class, Type and Constrained Loop. So each kind of Element has its own independent identity, outside the purview of anything else, within a Domain.

An Element may not span from one Domain into another. The same Element may not be present in multiple Domains.

Although it is usually bad practice, a Class of the same name may appear in two different Domains. But each would be a distinct Element. Presumably, even though the Class names match, the meanings would differ significantly (Event in a Notification Domain vs. Event in a Music Concert application Domain, for example).

Identifiers

  1. Label + Domain

Attributes

Label

Each Element is numbered uniquely within a Domain. The number is prefixed to indicate the subclass. For example, a Relationship would be labeled R33 whereas a Class might be C12. The numeric portion will correspond to the range defined for Element Numbers.

So think of 33 as the Element Number whereas the Element Label is R33.

Type: Element Label as union of Spanning Element Label and Subsystem Label types.