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

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
The relations inside this category.
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_independence