Legacy Issue Number: 8278
Source: agnos.ai UK Ltd ( Pete Rivett)
In Super (but not Infra) EnumerationLiteral inherits from InstanceSpecification.
This allows a single Enumeration value e.g. 'private' or 'red' to have many slots (InstanceSpecification.slot).
Moreover it allows the value to have many classifiers (InstanceSpecification.classifier) independently of the Enumeration that owns the EnumerationLiteral - it does not make any sense to have this redundant property.
All that is needed surely is a value: so if anything EnumerationLiteral should inherit from ValueSpecification. However this still inherits too much: for example an EnumerationLiteral should be owned only by its Enumeration and so should not inherit from PackageableElement as does ValueSpecification. Furthermore inheriting from TypedElement seems to introduce capability that is not catered for in the notation etc: if anything the underlying type for an Enumeration should be specified at the Enumeration not the EnumerationLiteral level (which would allow the different alternatives for an Enumeration to have different types).
The only useful capability on EnumerationLiteral is that it should have a name (which is all that Infrastructure allows), and optionally a value. The latter should be specified in the same way as the default value of a Property.
EnumerationLiteral should inherit only from NamedElement.
It should have an optional property:
The Notation section should describe how to indicate the value, which should be the same as for the default value of a Property
Reported: UML 2.5 — Mon, 14 Feb 2005 05:00 GMT
Updated: Sun, 28 Feb 2016 03:56 GMT
UMLR — section 7.3.17 /EnumerationLiteral should not be an InstanceSpecification
- Key: UMLR-41
- OMG Task Force: UML 2.6 RTF