Abstraction
Kind: principle
Layer: Structural Core
Record: architecture:abstraction
Severity: mandatory
Scope: class, module, service, system
Canonical: Ontology
A design rule that a concept is expressed by what it does for the code that uses it, and the detail of how it does it stays out of that expression.
Listed in Architecture principles, after Information Hiding and before Modularity.
Requires
Reinforces
Enables
Conflicts with
In tension with
Tensions
Violated by
Refactored by
Severity
Category
Concept
Required by
- Dynamic Binding
- Interface-Based Design
- Separation of Concerns
- Do Not Repeat Yourself
- Reusability
- Open/Closed Principle
- Inversion of Control
- Dependency Injection
Reinforced by
Linked from
- Integrating algorithms
- Resolving a message
- Execute the template
- Documentation is code
- Architectural rules and principles
- Anti-patterns
- Domain Architecture
- Runtime Discovery / Dynamic Binding
- Contracts / Interfaces / Compatibility
- Portability / Infrastructure / Deployment
- Core Modular Design
- SOLID / Object-Oriented Design
- Plugin / Extensibility / IoC
- Codebase / System Architecture Styles
- Core Modular Design
- Quality Attributes
- SOLID / Object-Oriented Design
- Severity levels
- The resolutions