Contracts / Interfaces / Compatibility
Kind: category
Record: architecture-category:contracts-interfaces-compatibility
Canonical: Ontology
The Contracts / Interfaces / Compatibility category holds 20 architecture principles.
Listed in Principle categories, after Causality / Ordering / Distributed Time and before Control / Coordination / Centralization.
Principle
- Design by Contract
- Explicit Contracts
- Stable Interfaces
- Interface-Based Design
- Contract-First Design
- API Contract
- Service Contract
- Data Contract
- Schema Contract
- Semantic Contracts
- Preconditions
- Postconditions
- Invariant
- Backward Compatibility
- Forward Compatibility
- Versioning
- Protocol Compatibility
- Interoperability
- Uniform Interface
- Consumer-Driven Contracts
Layer
Linked from
Contracts / Interfaces / Compatibility
Every principle in this category is listed as a record. Each record carries its kind, its severity, the scopes it applies at and the layer it lives in, then the edge relations that join it to other records, the records that point back at it, the contracts that answer to it and the tensions it takes part in. The descriptors say how it is violated, detected, measured, repaired and enforced. Where the record carries one, an exemplar shows the shape before and after the principle is applied.
Relations diagram
flowchart LR
n_design_by_contract["Design by Contract"]
n_explicit_contracts["Explicit Contracts"]
n_stable_interfaces["Stable Interfaces"]
n_interface_based_design["Interface-Based Design"]
n_contract_first_design["Contract-First Design"]
n_api_contract["API Contract"]
n_service_contract["Service Contract"]
n_data_contract["Data Contract"]
n_schema_contract["Schema Contract"]
n_semantic_contracts["Semantic Contracts"]
n_preconditions["Preconditions"]
n_postconditions["Postconditions"]
n_invariant["Invariant"]
n_backward_compatibility["Backward Compatibility"]
n_forward_compatibility["Forward Compatibility"]
n_versioning["Versioning"]
n_protocol_compatibility["Protocol Compatibility"]
n_interoperability["Interoperability"]
n_uniform_interface["Uniform Interface"]
n_consumer_driven_contracts["Consumer-Driven Contracts"]
n_design_by_contract --> n_preconditions
n_design_by_contract --> n_postconditions
n_design_by_contract --> n_invariant
n_explicit_contracts --> n_stable_interfaces
n_explicit_contracts --> n_interoperability
n_explicit_contracts --> n_contract_first_design
n_stable_interfaces --> n_versioning
n_stable_interfaces --> n_backward_compatibility
n_interface_based_design --> n_stable_interfaces
n_contract_first_design --> n_explicit_contracts
n_contract_first_design --> n_schema_contract
n_contract_first_design --> n_interoperability
n_contract_first_design --> n_backward_compatibility
n_api_contract --> n_versioning
n_api_contract --> n_stable_interfaces
n_api_contract --> n_interoperability
n_service_contract --> n_api_contract
n_data_contract --> n_interoperability
n_schema_contract --> n_data_contract
n_preconditions --> n_design_by_contract
n_postconditions --> n_invariant
n_backward_compatibility --> n_versioning
n_backward_compatibility --> n_stable_interfaces
n_versioning --> n_stable_interfaces
n_versioning --> n_backward_compatibility
n_protocol_compatibility --> n_versioning
n_protocol_compatibility --> n_interoperability
n_consumer_driven_contracts --> n_explicit_contracts
n_consumer_driven_contracts --> n_backward_compatibility
n_consumer_driven_contracts --> n_contract_first_designDesign by Contract
- Kind: principle
- Category: Contracts / Interfaces / Compatibility
- Severity: recommended
- Scope: API, function, class, service
- Aliases: DbC
- Layer: Contracts Core
Explicit Contracts
- Kind: principle
- Category: Contracts / Interfaces / Compatibility
- Severity: mandatory
- Scope: API, service, data, protocol
- Layer: Contracts Core
Stable Interfaces
- Kind: quality-attribute
- Category: Contracts / Interfaces / Compatibility
- Severity: mandatory
- Scope: API, module, service
- Layer: Contracts Core
Interface-Based Design
- Kind: principle
- Category: Contracts / Interfaces / Compatibility
- Severity: recommended
- Scope: class, module, service
- Layer: Contracts Core
Contract-First Design
- Kind: principle
- Category: Contracts / Interfaces / Compatibility
- Severity: recommended
- Scope: API, service, integration
- Layer: Contracts Core
API Contract
- Kind: constraint
- Category: Contracts / Interfaces / Compatibility
- Severity: mandatory
- Scope: API, service boundary
- Layer: Contracts Core
Service Contract
- Kind: constraint
- Category: Contracts / Interfaces / Compatibility
- Severity: mandatory
- Scope: service, integration
- Layer: Contracts Core
Data Contract
- Kind: constraint
- Category: Contracts / Interfaces / Compatibility
- Severity: mandatory
- Scope: data, message, persistence, integration
- Layer: Contracts Core
Schema Contract
- Kind: constraint
- Category: Contracts / Interfaces / Compatibility
- Severity: mandatory
- Scope: data, API, message
- Layer: Contracts Core
Semantic Contracts
- Kind: constraint
- Category: Contracts / Interfaces / Compatibility
- Severity: mandatory
- Scope: domain, API, data
- Layer: Contracts Core
Preconditions
- Kind: constraint
- Category: Contracts / Interfaces / Compatibility
- Severity: mandatory
- Scope: function, method, API
- Layer: Contracts Core
Postconditions
- Kind: constraint
- Category: Contracts / Interfaces / Compatibility
- Severity: recommended
- Scope: function, method, transaction
- Layer: Contracts Core
Invariant
- Kind: constraint
- Category: Contracts / Interfaces / Compatibility
- Severity: mandatory
- Scope: entity, aggregate, module, system
- Layer: Contracts Core
Backward Compatibility
- Kind: constraint
- Category: Contracts / Interfaces / Compatibility
- Severity: mandatory
- Scope: API, schema, protocol
- Layer: Contracts Core
Forward Compatibility
- Kind: constraint
- Category: Contracts / Interfaces / Compatibility
- Severity: recommended
- Scope: API, schema, protocol
- Aliases: Unknown Field Handling
- Layer: Contracts Core
Versioning
- Kind: mechanism
- Category: Contracts / Interfaces / Compatibility
- Severity: mandatory
- Scope: API, schema, package, service
- Layer: Contracts Core
Protocol Compatibility
- Kind: constraint
- Category: Contracts / Interfaces / Compatibility
- Severity: mandatory
- Scope: integration, network, message
- Layer: Contracts Core
Interoperability
- Kind: quality-attribute
- Category: Contracts / Interfaces / Compatibility
- Severity: mandatory
- Scope: API, data, protocol, system
- Layer: Contracts Core
Uniform Interface
- Kind: constraint
- Category: Contracts / Interfaces / Compatibility
- Severity: recommended
- Scope: API, resource boundary
- Layer: Contracts Core
Consumer-Driven Contracts
- Kind: constraint
- Category: Contracts / Interfaces / Compatibility
- Severity: recommended
- Scope: API, service, integration
- Layer: Contracts Core