# Modularity

Record: `arch:modularity`
Kind: principle
Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
Severity: mandatory
Scope: package, component, service, system
Canonical: https://banes-lab.com/ontology#arch-modularity

## Repair

- Refactored by: Split Module, Introduce Boundary, Invert Dependency
- Detected by: dependency cycles, unstable module graph
- Violated by: [cyclic dependencies](https://banes-lab.com/records/lex/cyclic-dependencies.md), [shared mutable state](https://banes-lab.com/records/arch/shared-mutable-state.md), [boundary leakage](https://banes-lab.com/records/arch/boundary-leakage.md)
- Measured by: modularity score, graph density, instability
- Enforced by: module rules, package ownership, [fitness functions](https://banes-lab.com/records/arch/fitness-functions.md)

## requires

- [High Cohesion](https://banes-lab.com/records/arch/high-cohesion.md)
- [Low Coupling](https://banes-lab.com/records/arch/low-coupling.md)
- [Explicit Boundaries](https://banes-lab.com/records/arch/explicit-boundaries.md)

## reinforces

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

## enables

- [Replaceability](https://banes-lab.com/records/arch/replaceability.md)
- [Plugin Architecture](https://banes-lab.com/records/arch/plugin-architecture.md)

## conflicts-with

- [Big Ball of Mud](https://banes-lab.com/records/arch/big-ball-of-mud.md)

## tensions-with

- [Cross-Cutting Concerns](https://banes-lab.com/records/lex/cross-cutting-concerns.md)

## tensions

- [Modularity Cross-Cutting Concerns](https://banes-lab.com/records/tension/cross-cutting-concerns-modularity.md)

## referenced-by

- [Component-Based Architecture](https://banes-lab.com/records/arch/component-based-architecture.md)
- [Package by Feature](https://banes-lab.com/records/arch/package-by-feature.md)
- [Single Responsibility Principle (SRP)](https://banes-lab.com/records/arch/single-responsibility.md)
- [Separation of Concerns](https://banes-lab.com/records/arch/separation-of-concerns.md)
- [High Cohesion](https://banes-lab.com/records/arch/high-cohesion.md)
- [Low Coupling](https://banes-lab.com/records/arch/low-coupling.md)
- [Composability](https://banes-lab.com/records/arch/composability.md)
- [Bounded Context](https://banes-lab.com/records/arch/bounded-context.md)
- [Explicit Boundaries](https://banes-lab.com/records/arch/explicit-boundaries.md)
- [Plugin Architecture](https://banes-lab.com/records/arch/plugin-architecture.md)
