-
Notifications
You must be signed in to change notification settings - Fork 1
Validation Rules
Dániel Segesdi edited this page Nov 11, 2015
·
16 revisions
The following validation rules are separated into the domain they are checked on. Note that only validation rules clearly marked as done are available, the rest are used as assumptions for the different workflow steps.
Some validation rules may be deleted if they are no longer an issue. The reasoning for each deleted rule shall be added.
Additional notes in code style
provide technical details for the rules.
- Components cannot contain other components directly or transitively.
- Note that components may have parts with types that are components.
- An association can have maximum two AssociationEnds
- Both association ends are contained by the association (see #56).
Association.ownedEnd(assoc, end)
Non-default multiplicities are always stored as (1) integer for lower value and (2) unlimited natural for upper value (See #96).
MultiplicityElement.lowerValue instanceOf LiteralInteger
MultiplicityElement.upperValue instanceOf LiteralUnlimitedNatural
-
Reason for deletion: use
MultiplicityElement.lower()
andupper()
that handles incorrect ValueSpecifications and always returns values considered default in UML.
- The generalization hierarchy has no cycles.
- Attribute's type has to be data type.
-
DataType
and it's subtypesEnumeration
andPrimitiveType
- Constructor operations have the same name as their containing Class and have
Create
stereotype applied (from the UML Standard profile). - Destructor operation's name must be
destroy
, the operation hasDestroy
stereotype applied (from the UML Standard profile) and has no parameter. - Operations' name cannot be the same as their containing Class prefixed with
~
.
- Abstract operations does not have associated methods
- Signal attributes are not static and always have public visibility.
- Signal attributes cannot be redefined in sub Signals.
- Signals have at most one other signal as super type.
- StructuredType cannot have class references as its attribute.
- A transition triggering signal must have a Reception in the class that contains the state machine for the transition (see #85).
- Components cannot have dynamic behavior (state machines).
- There is a single transition from the InitialPoint to the initial state and it has no triggers or guard
- Transitions with the same source and target vertex have at least unique name
- Transitions have at most one trigger
- Transition with event trigger must have signal.
XTEventTrigger.signal
- Multiple transitions for the same source vertex with exactly the same triggering event are allowed