Component Sequence Specification
Purpose
This validator enforces consistency across entities in two diagram types:
Component diagrams
Sequence diagrams
It shall make sure that Architectural Elements are consistently named and related to each other.
What is Validated
All comparisons are case-sensitive.
Alias Consistency
Unit aliases from the component diagram must exactly match the set of
participant aliases used across all sequence diagrams.
(Requirement: Tools.ComponentSequenceAliasConsistency)
Component-diagram units without an explicit alias are ignored by this
validator and are not required to appear as sequence participants. The
special participant name ExternalEndpoint represents an external
caller/callee outside the modeled units; it is exempt from Alias Consistency
and may appear in sequence diagrams without a matching component-diagram
unit.
' component diagram
component "Unit 1" as unit_1 <<unit>>
component "Unit 2" as unit_2 <<unit>>
' sequence diagram
participant "Unit 1" as unit_1
participant "Unit 2" as unit_2
Interface-Connection Consistency
Every pair of units connected through an interface in the component diagram
must have at least one corresponding function-call interaction in the sequence
diagrams, and every cross-unit function call in a sequence diagram must
correspond to an interface connection in the component diagram. A cross-unit
call is one where the caller and callee are different units; self-calls
(caller and callee are the same unit) and any call involving
ExternalEndpoint are excluded from this check.
(Requirement: Tools.ComponentSequenceInterfaceConnectionConsistency)
Two units are considered interface-connected if either one requires an interface that the other provides (the require/provide match works in both directions). The check itself is undirected and per-pair: a call from unit_1 to unit_2 satisfies the same requirement as a call from unit_2 to unit_1, and once one call has been found for a pair, additional calls between the same two units are not required and do not produce additional errors.
' component diagram
component "Unit 1" as unit_1 <<unit>>
component "Unit 2" as unit_2 <<unit>>
interface "IData" as IData
unit_1 -( IData
unit_2 )- IData
' sequence diagram
participant "Unit 1" as unit_1
participant "Unit 2" as unit_2
unit_1 -> unit_2 : GetData()
Interface IDs used in error messages may be package-qualified (e.g.
package_a.IData) when the interface is declared inside a package or
component in the component diagram.
Failure Cases
Failure case |
Validation rule |
|---|---|
Missing sequence participant |
Alias Consistency |
Unexpected sequence participant |
Alias Consistency |
Missing sequence interaction for interface-connected units |
Interface-Connection Consistency |
Missing interface connection for sequence-connected units |
Interface-Connection Consistency |
Debug Output
The validator emits debug output containing:
expected unit aliases
observed participants
observed sequence calls (
caller -> callee : method)unit interface targets derived from the component diagram
interface-connected unit pairs derived from the component diagram