# Low Coupling

> The degree to which a module can change without forcing changes in the modules around it.

Record: `architecture:low-coupling`
Kind: quality-attribute
Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
Severity: mandatory
Scope: module, component, service
Aliases: Loose Coupling, Decoupling
Canonical: https://banes-lab.com/ontology#architecture-low-coupling

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [High Cohesion](https://banes-lab.com/records/architecture/high-cohesion.md) and before [Encapsulation](https://banes-lab.com/records/architecture/encapsulation.md).

## Repair

- Refactored by: Introduce Interface, [Dependency Injection](https://banes-lab.com/records/architecture/dependency-injection.md), Adapter Extraction
- Detected by: dependency cycles, high afferent/efferent coupling
- Violated by: concrete imports, [global state](https://banes-lab.com/records/lexicon/global-state.md), bidirectional dependencies
- Measured by: coupling metrics, dependency graph density
- Enforced by: dependency rules, architecture fitness tests

## Requires

- [Abstraction](https://banes-lab.com/records/architecture/abstraction.md)
- [Stable Interfaces](https://banes-lab.com/records/architecture/stable-interfaces.md)

## Reinforces

- [Modularity](https://banes-lab.com/records/architecture/modularity.md)
- [Replaceability](https://banes-lab.com/records/architecture/replaceability.md)
- [Portability](https://banes-lab.com/records/architecture/portability.md)

## Enables

- [Independent Deployment](https://banes-lab.com/records/lexicon/independent-deployment.md)
- [Independent Testing](https://banes-lab.com/records/lexicon/independent-testing.md)

## Conflicts with

- [Tight Coupling](https://banes-lab.com/records/lexicon/tight-coupling.md)
- [Circular Dependency](https://banes-lab.com/records/architecture/circular-dependency.md)
- [Inappropriate Intimacy](https://banes-lab.com/records/architecture/inappropriate-intimacy.md)
- [Message Chain](https://banes-lab.com/records/architecture/message-chain.md)

## In tension with

- [Runtime Indirection](https://banes-lab.com/records/lexicon/runtime-indirection.md)

## Tensions

- [Low Coupling / Runtime Indirection](https://banes-lab.com/records/tension/low-coupling-runtime-indirection.md)

## Severity

- [mandatory](https://banes-lab.com/records/vocabulary/severity-mandatory.md)

## Category

- [Core Modular Design](https://banes-lab.com/records/architecture-category/core-modular-design.md)

## Reinforced by

- [Anti-Corruption Layer](https://banes-lab.com/records/architecture/anti-corruption-layer.md)
- [Encapsulation](https://banes-lab.com/records/architecture/encapsulation.md)
- [Information Hiding](https://banes-lab.com/records/architecture/information-hiding.md)
- [Composition Over Inheritance](https://banes-lab.com/records/architecture/composition-over-inheritance.md)
- [Interface Segregation Principle](https://banes-lab.com/records/architecture/interface-segregation.md)
- [Dependency Inversion Principle](https://banes-lab.com/records/architecture/dependency-inversion.md)
- [Event-Driven Architecture](https://banes-lab.com/records/architecture/event-driven-architecture.md)
- [Publish/Subscribe Pattern](https://banes-lab.com/records/architecture/publish-subscribe-pattern.md)
- [Message Broker](https://banes-lab.com/records/architecture/message-broker.md)
- [Asynchronous Communication](https://banes-lab.com/records/architecture/asynchronous-communication.md)
- [Mediator Pattern](https://banes-lab.com/records/architecture/mediator-pattern.md)
- [Service-Oriented Architecture](https://banes-lab.com/records/architecture/service-oriented-architecture.md)

## Required by

- [Testability](https://banes-lab.com/records/architecture/testability.md)
- [Composability](https://banes-lab.com/records/architecture/composability.md)
- [Independence](https://banes-lab.com/records/architecture/independence.md)

## Linked from

- [Node design](https://banes-lab.com/pag/guide/node-design.md)
- [A system is a graph](https://banes-lab.com/software-architecture/model/a-system-is-a-graph.md)
- [Principles are typed](https://banes-lab.com/software-architecture/principles/principles-are-typed.md)
- [Debt and leverage](https://banes-lab.com/software-architecture/decay/debt-and-leverage.md)
- [Anti-patterns](https://banes-lab.com/ontology/principles/architecture-category-anti-patterns.md)
- [Domain Architecture](https://banes-lab.com/ontology/principles/architecture-category-domain-architecture.md)
- [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/principles/architecture-category-contracts-interfaces-compatibility.md)
- [Correctness / Determinism / Verification](https://banes-lab.com/ontology/principles/architecture-category-correctness-determinism-verification.md)
- [Portability / Infrastructure / Deployment](https://banes-lab.com/ontology/principles/architecture-category-portability-infrastructure-deployment.md)
- [Core Modular Design](https://banes-lab.com/ontology/principles/architecture-category-core-modular-design.md)
- [SOLID / Object-Oriented Design](https://banes-lab.com/ontology/principles/architecture-category-solid-object-oriented-design.md)
- [Event / Messaging / Asynchronous Architecture](https://banes-lab.com/ontology/principles/architecture-category-event-messaging-asynchronous-architecture.md)
- [Error Handling / Resilience](https://banes-lab.com/ontology/principles/architecture-category-error-handling-resilience.md)
- [Behavioral Patterns](https://banes-lab.com/ontology/principles/architecture-category-behavioral-patterns.md)
- [Scalability / Performance / Optimization](https://banes-lab.com/ontology/principles/architecture-category-scalability-performance-optimization.md)
- [Codebase / System Architecture Styles](https://banes-lab.com/ontology/principles/architecture-category-codebase-system-architecture-styles.md)
- [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- [Core Vocabulary](https://banes-lab.com/ontology/lexicon/lexicon-category-core-vocabulary.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
