# Low Coupling

Record: `arch: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
Canonical: https://banes-lab.com/ontology#arch-low-coupling

## Repair

- Refactored by: Introduce Interface, [Dependency Injection](https://banes-lab.com/records/arch/dependency-injection.md), Adapter Extraction
- Detected by: dependency cycles, high afferent/efferent coupling
- Violated by: concrete imports, [global state](https://banes-lab.com/records/lex/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/arch/abstraction.md)
- [Stable Interfaces](https://banes-lab.com/records/arch/stable-interfaces.md)

## reinforces

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

## enables

- [Independent Deployment](https://banes-lab.com/records/lex/independent-deployment.md)
- [Test Isolation](https://banes-lab.com/records/lex/test-isolation.md)

## conflicts-with

- [Tight Coupling](https://banes-lab.com/records/lex/tight-coupling.md)
- [Cyclic Dependencies](https://banes-lab.com/records/lex/cyclic-dependencies.md)
- [Inappropriate Intimacy](https://banes-lab.com/records/arch/inappropriate-intimacy.md)
- [Message Chain](https://banes-lab.com/records/arch/message-chain.md)

## tensions-with

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

## tensions

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

## referenced-by

- [Mediator Pattern](https://banes-lab.com/records/arch/mediator-pattern.md)
- [Service-Oriented Architecture](https://banes-lab.com/records/arch/service-oriented-architecture.md)
- [Stable Interfaces](https://banes-lab.com/records/arch/stable-interfaces.md)
- [Encapsulation](https://banes-lab.com/records/arch/encapsulation.md)
- [Information Hiding](https://banes-lab.com/records/arch/information-hiding.md)
- [Abstraction](https://banes-lab.com/records/arch/abstraction.md)
- [Modularity](https://banes-lab.com/records/arch/modularity.md)
- [Composability](https://banes-lab.com/records/arch/composability.md)
- [Composition Over Inheritance](https://banes-lab.com/records/arch/composition-over-inheritance.md)
- [Replaceability](https://banes-lab.com/records/arch/replaceability.md)
- [Independence](https://banes-lab.com/records/arch/independence.md)
- [Testability](https://banes-lab.com/records/arch/testability.md)
- [Anti-Corruption Layer](https://banes-lab.com/records/arch/anti-corruption-layer.md)
- [Event-Driven Architecture](https://banes-lab.com/records/arch/event-driven-architecture.md)
- [Publish/Subscribe Pattern](https://banes-lab.com/records/arch/publish-subscribe-pattern.md)
- [Asynchronous Communication](https://banes-lab.com/records/arch/asynchronous-communication.md)
- [Interface Segregation Principle (ISP)](https://banes-lab.com/records/arch/interface-segregation.md)
- [Dependency Inversion Principle (DIP)](https://banes-lab.com/records/arch/dependency-inversion.md)
