# Core Modular Design

> Every term in this category is listed as one record, with its kind, its definition and its aliases, the principles whose relations name it, the principle or…

Page: Ontology · Lexicon
Canonical: https://banes-lab.com/ontology/lexicon#lex-category-core-modular-design

Every term in this category is listed as one record, with its kind, its definition and its aliases, the principles whose relations name it, the principle or contract that carries the same name where one exists, and the layer its category belongs to.

### Anemic Encapsulation

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Wrapping data in a class that exposes it through trivial getters and setters, leaving its invariants unprotected.

Referenced by
[Encapsulation](https://banes-lab.com/records/arch/encapsulation.md)

### Blob Class

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
A single class that absorbs many unrelated responsibilities, growing large and hard to change safely.

Referenced by
[Single Responsibility Principle (SRP)](https://banes-lab.com/records/arch/single-responsibility.md)

### Bounded Context Ownership

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability for a team or module to own and control one bounded part of the system.

Referenced by
[Autonomy](https://banes-lab.com/records/arch/autonomy.md)

### Canonical Source

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The requirement that each piece of knowledge have one authoritative definition rather than copies.

Referenced by
[Do Not Repeat Yourself (DRY)](https://banes-lab.com/records/arch/duplicate-code.md)

### Centralized Runtime Control

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Concentrating runtime control in one place so otherwise-independent modules cannot act without it.

Referenced by
[Autonomy](https://banes-lab.com/records/arch/autonomy.md)

### Change Isolation

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability to confine the impact of a change behind a boundary so callers are unaffected.

Referenced by
[Encapsulation](https://banes-lab.com/records/arch/encapsulation.md)

### Context-Specific Coupling

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Baking one caller's specific assumptions into a component, preventing its reuse elsewhere.

Referenced by
[Reusability](https://banes-lab.com/records/arch/reusability.md)

### Contract Compatibility

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The requirement that alternative implementations honor the same interface contract.

Contract
[Contract Compatibility](https://banes-lab.com/records/algo/contract-compatibility.md)

Referenced by
[Interchangeability](https://banes-lab.com/records/arch/interchangeability.md)

### Coordination Cost

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree of extra coordination required when components are made fully independent.

Referenced by
[Independence](https://banes-lab.com/records/arch/independence.md)

### Copy-Paste Programming

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Duplicating code by copying and pasting instead of extracting a shared abstraction.

Referenced by
[Do Not Repeat Yourself (DRY)](https://banes-lab.com/records/arch/duplicate-code.md)

### Cross-Cutting Leakage

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Letting a concern such as logging or security bleed into unrelated modules throughout the code.

Referenced by
[Separation of Concerns](https://banes-lab.com/records/arch/separation-of-concerns.md)

### Deep Inheritance Hierarchy

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Stacking many layers of subclassing, so behavior is scattered and fragile to change.

Referenced by
[Composition Over Inheritance](https://banes-lab.com/records/arch/composition-over-inheritance.md)

### Deep Optimization

- Kind: [activity](https://banes-lab.com/records/kind/activity.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The practice of optimizing heavily against a specific implementation's traits, which ties code to it.

Referenced by
[Replaceability](https://banes-lab.com/records/arch/replaceability.md)

### Delegation

- Kind: [technique](https://banes-lab.com/records/kind/technique.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Forwarding work to a contained collaborator object rather than inheriting the behavior.

Referenced by
[Composition Over Inheritance](https://banes-lab.com/records/arch/composition-over-inheritance.md)

### Excessive Fragmentation

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree to which splitting responsibilities too finely scatters logic across many small units.

Referenced by
[Single Responsibility Principle (SRP)](https://banes-lab.com/records/arch/single-responsibility.md)

### Explicit Interfaces

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The requirement that a module interact only through declared interfaces, not its hidden internals.

Referenced by
[Information Hiding](https://banes-lab.com/records/arch/information-hiding.md)

### Exposed Internals

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Making a module's internal fields and workings public, so callers depend on details that should be hidden.

Referenced by
[Encapsulation](https://banes-lab.com/records/arch/encapsulation.md)

### Implementation-Specific Contracts

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Defining an interface around one implementation's quirks, so no alternative can satisfy it.

Referenced by
[Interchangeability](https://banes-lab.com/records/arch/interchangeability.md)

### Independent Testing

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability to test a component in isolation without standing up its collaborators.

Referenced by
[Independence](https://banes-lab.com/records/arch/independence.md)

### Interface Conformance

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The requirement that each implementation fully conform to the shared interface's contract.

Referenced by
[Interchangeability](https://banes-lab.com/records/arch/interchangeability.md)

### Interface Definition

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The requirement that an abstraction expose a defined interface separate from its implementation.

Referenced by
[Abstraction](https://banes-lab.com/records/arch/abstraction.md)

### Internal Refactoring

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability to rework a module's internals freely as long as its interface stays stable.

Referenced by
[Information Hiding](https://banes-lab.com/records/arch/information-hiding.md)

### Invariant Protection

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability to guarantee an object's rules always hold by controlling all access to its state.

Referenced by
[Encapsulation](https://banes-lab.com/records/arch/encapsulation.md)

### Leaky Abstraction

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
An abstraction that forces callers to understand its underlying implementation to use it correctly.

Referenced by
[Information Hiding](https://banes-lab.com/records/arch/information-hiding.md)

### Locality of Behavior

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree to which keeping related behavior together can conflict with removing all duplication.

Referenced by
[Do Not Repeat Yourself (DRY)](https://banes-lab.com/records/arch/duplicate-code.md)

### Mixed Layers

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Interleaving different architectural layers' logic in one place instead of keeping each concern separate.

Referenced by
[Separation of Concerns](https://banes-lab.com/records/arch/separation-of-concerns.md)

### Monolithic Procedures

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Writing large all-in-one procedures that cannot be recombined from smaller, independent parts.

Referenced by
[Composability](https://banes-lab.com/records/arch/composability.md)

### Over-Generalization

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree to which making code reusable for every case adds abstraction that harms clarity.

Referenced by
[Reusability](https://banes-lab.com/records/arch/reusability.md)

### Over-Layering

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree to which adding separating layers introduces indirection that outweighs the separation gained.

Referenced by
[Separation of Concerns](https://banes-lab.com/records/arch/separation-of-concerns.md)

### Over-Specialization

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree to which pursuing tight cohesion can narrow a unit's purpose too far to reuse.

Referenced by
[High Cohesion](https://banes-lab.com/records/arch/high-cohesion.md)

### Performance Overhead

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree of runtime cost added by composing behavior from many small, indirected parts.

Referenced by
[Composability](https://banes-lab.com/records/arch/composability.md)

### Product Lines

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability to build a family of related products from shared, reusable components.

Referenced by
[Reusability](https://banes-lab.com/records/arch/reusability.md)

### Shared Libraries

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability to factor common functionality into libraries reused across projects.

Referenced by
[Reusability](https://banes-lab.com/records/arch/reusability.md)

### Shared Runtime Dependency

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Coupling supposedly-independent modules through a shared runtime component they all depend on.

Referenced by
[Independence](https://banes-lab.com/records/arch/independence.md)

### Simplicity for Trivial Reuse

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree to which composition adds wiring that inheritance would make simpler for trivial reuse.

Referenced by
[Composition Over Inheritance](https://banes-lab.com/records/arch/composition-over-inheritance.md)

### Specialized Optimization

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree to which optimizing for one implementation undermines the ability to swap implementations.

Referenced by
[Interchangeability](https://banes-lab.com/records/arch/interchangeability.md)

### Stable Semantics

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The requirement that an abstraction's meaning stay consistent even as its implementations change.

Referenced by
[Abstraction](https://banes-lab.com/records/arch/abstraction.md)

### Strategy Swap

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability to replace one interchangeable algorithm or implementation with another.

Referenced by
[Interchangeability](https://banes-lab.com/records/arch/interchangeability.md)

### Test Isolation

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability to exercise a unit under test without its dependencies interfering.

Referenced by
[Low Coupling](https://banes-lab.com/records/arch/low-coupling.md)

### Tight Coupling

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Binding components so closely that a change in one forces changes in the others.

Referenced by
[Low Coupling](https://banes-lab.com/records/arch/low-coupling.md)

### Vendor Swap

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability to replace one vendor's implementation with another behind a stable interface.

Referenced by
[Replaceability](https://banes-lab.com/records/arch/replaceability.md)

### YAGNI

- Kind: [principle](https://banes-lab.com/records/kind/principle.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lex-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
You Aren't Gonna Need It: build only what current requirements demand and defer speculative generality.

Aliases
You Aren't Gonna Need It

Referenced by
[Reusability](https://banes-lab.com/records/arch/reusability.md)

## Links to

- [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
- [Encapsulation](https://banes-lab.com/records/arch/encapsulation.md)
- [Single Responsibility Principle (SRP)](https://banes-lab.com/records/arch/single-responsibility.md)
- [capability](https://banes-lab.com/records/kind/capability.md)
- [Autonomy](https://banes-lab.com/records/arch/autonomy.md)
- [constraint](https://banes-lab.com/records/kind/constraint.md)
- [Do Not Repeat Yourself (DRY)](https://banes-lab.com/records/arch/duplicate-code.md)
- [Reusability](https://banes-lab.com/records/arch/reusability.md)
- [Contract Compatibility](https://banes-lab.com/records/algo/contract-compatibility.md)
- [Interchangeability](https://banes-lab.com/records/arch/interchangeability.md)
- [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- [Independence](https://banes-lab.com/records/arch/independence.md)
- [Separation of Concerns](https://banes-lab.com/records/arch/separation-of-concerns.md)
- [Composition Over Inheritance](https://banes-lab.com/records/arch/composition-over-inheritance.md)
- [activity](https://banes-lab.com/records/kind/activity.md)
- [Replaceability](https://banes-lab.com/records/arch/replaceability.md)
- [technique](https://banes-lab.com/records/kind/technique.md)
- [Information Hiding](https://banes-lab.com/records/arch/information-hiding.md)
- [Abstraction](https://banes-lab.com/records/arch/abstraction.md)
- [Composability](https://banes-lab.com/records/arch/composability.md)
- [High Cohesion](https://banes-lab.com/records/arch/high-cohesion.md)
- [Low Coupling](https://banes-lab.com/records/arch/low-coupling.md)
- [principle](https://banes-lab.com/records/kind/principle.md)
