Component Public API Specification
Purpose
This validator enforces consistency between public API interfaces in the static design (component diagram) and interfaces declared by the public API design (class diagram).
It shall make sure that every public API interface declared by the static design is also declared by the public API and is connected to the SEooC boundary.
What is Validated
The validator compares static design diagrams with public API design diagrams. It receives two indexed diagram inputs:
Input |
Source |
Meaning |
|---|---|---|
|
static design component diagram FlatBuffers |
Public API interface references from the static design |
|
public API class diagram FlatBuffers |
Public API interfaces declared by the class design |
For this validator, a public API interface is a top-level interface declared in the static design. Interfaces declared inside the SEooC, components, or units are treated as internal API interfaces.
Public API diagram entities must be declared as interfaces to be matched.
Other entity types (e.g. a class with the same name) are not indexed as
public API interfaces, so a same-named class does not satisfy the check.
Matching is done by the public API diagram entity’s name (not its fully qualified ID), compared case-sensitively against the static design interface’s ID.
Interface Declaration Consistency
Every public API interface declared in the static design diagram must resolve
to an interface declared in the public API class diagram.
(Requirement: Tools.ComponentPublicApiInterfaceDeclarationConsistency)
The component public API interface is matched against public API interface entries derived from the public API diagram. Matching is exact and case-sensitive.
' static design diagram
package "Sample SEooC" as sample_seooc <<SEooC>> {
}
interface "Sample Library API" as SampleLibraryAPI
sample_seooc )- SampleLibraryAPI
' public API diagram
interface "Sample Library API" as SampleLibraryAPI <<interface>> {
+GetNumber(): int
}
When one or more public API interfaces are missing, they are all reported in a
single failure message, each with the static design’s source file and line.
If the missing name differs from a declared public API interface only by case,
the message also suggests the correctly-cased name, e.g. use "SampleLibraryAPI" (case-sensitive).
SEooC Relationship Consistency
Every public API interface declared in the static design diagram must be
connected from the SEooC in the static design diagram.
(Requirement: Tools.ComponentPublicApiSeoocRelationshipConsistency)
This item covers the SEooC boundary relation only. The interface declaration in the public API diagram is covered by Interface Declaration Consistency.
' static design diagram
package "Sample SEooC" as sample_seooc <<SEooC>> {
}
interface "Sample Library API" as SampleLibraryAPI
sample_seooc )- SampleLibraryAPI
The validator collects relationships from SEooC entities and checks whether the
public API interface is a relation target. Relations from components or units do
not satisfy this rule. Any PlantUML relation type (interface binding, plain
association, or dependency) and any endpoint role (required, provided, or
none) is accepted as long as the SEooC entity is the source and the public API
interface is the target; the validator does not require the )-/-(
interface-binding notation specifically.
Failure Cases
Failure case |
Validation rule |
|---|---|
Missing public API interface declaration |
Interface Declaration Consistency |
Public API interface not connected from the SEooC |
SEooC Relationship Consistency |
Debug Output
The validator emits debug output containing:
public API interfaces declared in the static design
public API interfaces referenced by SEooC relations
public API identifiers available from the public API diagram
Failure messages list the public API interface IDs that are missing or not connected from the SEooC.