Core Modular Design
Kind: category
Record: architecture-category:core-modular-design
Canonical: Ontology
The Core Modular Design category holds 16 architecture principles.
Listed in Principle categories, after Portability / Infrastructure / Deployment and before SOLID / Object-Oriented Design.
Principle
- Single Responsibility Principle (SRP)
- Separation of Concerns
- Do Not Repeat Yourself (DRY)
- High Cohesion
- Low Coupling
- Encapsulation
- Information Hiding
- Abstraction
- Modularity
- Composability
- Composition Over Inheritance
- Reusability
- Replaceability
- Interchangeability
- Independence
- Autonomy
Layer
Linked from
Core Modular Design
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_single_responsibility["Single Responsibility Principle (SRP)"]
n_separation_of_concerns["Separation of Concerns"]
n_duplicate_code["Do Not Repeat Yourself (DRY)"]
n_high_cohesion["High Cohesion"]
n_low_coupling["Low Coupling"]
n_encapsulation["Encapsulation"]
n_information_hiding["Information Hiding"]
n_abstraction["Abstraction"]
n_modularity["Modularity"]
n_composability["Composability"]
n_composition_over_inheritance["Composition Over Inheritance"]
n_reusability["Reusability"]
n_replaceability["Replaceability"]
n_interchangeability["Interchangeability"]
n_independence["Independence"]
n_autonomy["Autonomy"]
n_single_responsibility --> n_high_cohesion
n_single_responsibility --> n_separation_of_concerns
n_single_responsibility --> n_modularity
n_single_responsibility --> n_replaceability
n_single_responsibility --> n_reusability
n_separation_of_concerns --> n_abstraction
n_separation_of_concerns --> n_single_responsibility
n_separation_of_concerns --> n_modularity
n_separation_of_concerns --> n_replaceability
n_duplicate_code --> n_abstraction
n_duplicate_code --> n_reusability
n_high_cohesion --> n_single_responsibility
n_high_cohesion --> n_modularity
n_high_cohesion --> n_encapsulation
n_high_cohesion --> n_replaceability
n_low_coupling --> n_abstraction
n_low_coupling --> n_modularity
n_low_coupling --> n_replaceability
n_encapsulation --> n_information_hiding
n_encapsulation --> n_abstraction
n_encapsulation --> n_low_coupling
n_information_hiding --> n_encapsulation
n_information_hiding --> n_low_coupling
n_information_hiding --> n_replaceability
n_abstraction --> n_low_coupling
n_abstraction --> n_replaceability
n_modularity --> n_high_cohesion
n_modularity --> n_low_coupling
n_modularity --> n_separation_of_concerns
n_modularity --> n_composability
n_modularity --> n_replaceability
n_composability --> n_low_coupling
n_composability --> n_modularity
n_composability --> n_reusability
n_composition_over_inheritance --> n_low_coupling
n_composition_over_inheritance --> n_replaceability
n_reusability --> n_abstraction
n_reusability --> n_duplicate_code
n_reusability --> n_composability
n_replaceability --> n_low_coupling
n_interchangeability --> n_replaceability
n_independence --> n_low_coupling
n_independence --> n_autonomy
n_autonomy --> n_independenceSingle Responsibility Principle (SRP)
- Kind: principle
- Category: Core Modular Design
- Severity: mandatory
- Scope: class, module, service
- Aliases: SRP, Single Responsibility Principle
- Layer: Structural Core
Separation of Concerns
- Kind: principle
- Category: Core Modular Design
- Severity: mandatory
- Scope: module, package, component, system
- Aliases: SoC
- Layer: Structural Core
Do Not Repeat Yourself (DRY)
- Kind: principle
- Category: Core Modular Design
- Severity: mandatory
- Scope: function, module, domain
- Aliases: DRY, Do Not Repeat Yourself, Don't Repeat Yourself
- Layer: Structural Core
High Cohesion
- Kind: quality-attribute
- Category: Core Modular Design
- Severity: mandatory
- Scope: class, module, component
- Layer: Structural Core
Low Coupling
- Kind: quality-attribute
- Category: Core Modular Design
- Severity: mandatory
- Scope: module, component, service
- Aliases: Loose Coupling, Decoupling
- Layer: Structural Core
Encapsulation
- Kind: principle
- Category: Core Modular Design
- Severity: mandatory
- Scope: class, module, component
- Layer: Structural Core
Information Hiding
- Kind: principle
- Category: Core Modular Design
- Severity: mandatory
- Scope: class, module, package
- Layer: Structural Core
Abstraction
- Kind: principle
- Category: Core Modular Design
- Severity: mandatory
- Scope: class, module, service, system
- Layer: Structural Core
Modularity
- Kind: principle
- Category: Core Modular Design
- Severity: mandatory
- Scope: package, component, service, system
- Layer: Structural Core
Composability
- Kind: principle
- Category: Core Modular Design
- Severity: recommended
- Scope: function, component, system
- Layer: Structural Core
Composition Over Inheritance
- Kind: principle
- Category: Core Modular Design
- Severity: recommended
- Scope: class, component
- Aliases: Composite Reuse Principle
- Layer: Structural Core
Reusability
- Kind: quality-attribute
- Category: Core Modular Design
- Severity: recommended
- Scope: function, module, component
- Layer: Structural Core
Replaceability
- Kind: quality-attribute
- Category: Core Modular Design
- Severity: recommended
- Scope: component, service, infrastructure
- Layer: Structural Core
Interchangeability
- Kind: quality-attribute
- Category: Core Modular Design
- Severity: recommended
- Scope: component, plugin, service
- Layer: Structural Core
Independence
- Kind: principle
- Category: Core Modular Design
- Severity: recommended
- Scope: module, service, deployment
- Layer: Structural Core
Autonomy
- Kind: principle
- Category: Core Modular Design
- Severity: contextual
- Scope: service, team, bounded context
- Aliases: Service Autonomy
- Layer: Structural Core