Sequence Internal API Specification
Purpose
This validator enforces consistency between sequence diagrams and Internal API diagrams:
Sequence diagrams
Internal API diagrams
It checks Internal API method coverage with sequence plus Internal API inputs. When a Component diagram is also provided, the validator uses it as optional context to check sequence method names against the related shared interfaces of the participating units.
What is Validated
All comparisons are case-sensitive.
Method-name consistency and consumer/provider roles consistency are checked only when component context is available. Without component context, the validator does not run a weak global method-name existence check.
Method-Name Consistency
Every function used in a sequence interaction must be declared in the related Internal API interface context.
For cross-unit calls, the method must be declared on a shared interface of the
participating units as defined in the component diagram. For self-calls, the
method must be declared on one of the available interfaces.
(Requirement: Tools.ComponentSequenceInternalApiMethodNameConsistency)
' 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()
' internal_api diagram
interface "IData" as IData <<interface>> {
{abstract} GetData(): Data*
}
Consumer/Provider Role Consistency
When component context is available, cross-unit sequence calls must align with consumer/provider roles derived from the component diagram for shared interfaces.
The caller shall require and the callee shall provide at least one shared
interface on which the called method is declared. Self-calls are excluded from
this check.
(Requirement: Tools.ComponentSequenceInternalApiConsumerProviderRoleConsistency)
' 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()
' internal_api diagram
interface "IData" as IData <<interface>> {
{abstract} GetData(): Data*
}
Interface Coverage
Every function declared in an Internal API interface must be called in at least
one sequence interaction. Self-calls count as valid usage.
(Requirement: Tools.ComponentSequenceInternalApiInterfaceCoverage)
' internal_api diagram
interface "IData" as IData <<interface>> {
{abstract} GetData(): Data*
{abstract} SetData(d: Data*): void
}
' sequence diagram
participant "Unit 1" as unit_1
participant "Unit 2" as unit_2
unit_1 -> unit_2 : GetData()
unit_1 -> unit_2 : SetData(d)
Failure Cases
Failure case |
Validation rule |
|---|---|
Method not declared in related interface |
Method-Name Consistency |
Invalid consumer/provider roles |
Consumer/Provider Role Consistency |
Internal API interface function not exercised |
Interface Coverage |
Debug Output
The validator emits debug output containing:
observed sequence calls (
caller -> callee : method)unit interface targets derived from the component diagram, when component context is available
Internal API interfaces available for sequence validation