# Replaceability

> The degree to which a component can be swapped for another implementation of its interface without editing its callers.

Record: `architecture:replaceability`
Kind: quality-attribute
Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
Severity: recommended
Scope: component, service, infrastructure
Canonical: https://banes-lab.com/ontology#architecture-replaceability

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Reusability](https://banes-lab.com/records/architecture/reusability.md) and before [Interchangeability](https://banes-lab.com/records/architecture/interchangeability.md).

## Repair

- Refactored by: Introduce Port, Extract Adapter, Invert Dependency
- Detected by: infrastructure imports in core layers
- Violated by: direct vendor SDK usage in domain/application
- Measured by: adapter coverage, boundary purity
- Enforced by: import restrictions, adapter tests

## Requires

- [Stable Interfaces](https://banes-lab.com/records/architecture/stable-interfaces.md)
- [Low Coupling](https://banes-lab.com/records/architecture/low-coupling.md)

## Reinforces

- [Dependency Inversion Principle (DIP)](https://banes-lab.com/records/architecture/dependency-inversion.md)
- [Ports and Adapters](https://banes-lab.com/records/lexicon/ports-and-adapters.md)

## Enables

- [Vendor Swap](https://banes-lab.com/records/lexicon/vendor-swap.md)
- [Plugin Architecture](https://banes-lab.com/records/architecture/plugin-architecture.md)

## Conflicts with

- [Concrete Coupling](https://banes-lab.com/records/architecture/concrete-coupling.md)

## In tension with

- [Deep Optimization](https://banes-lab.com/records/lexicon/deep-optimization.md)

## Tensions

- [Replaceability / Deep Optimization](https://banes-lab.com/records/tension/deep-optimization-replaceability.md)

## Severity

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

## Category

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

## Enabled by

- [Explicit Boundaries](https://banes-lab.com/records/architecture/explicit-boundaries.md)
- [Single Responsibility Principle](https://banes-lab.com/records/architecture/single-responsibility.md)
- [Separation of Concerns](https://banes-lab.com/records/architecture/separation-of-concerns.md)
- [High Cohesion](https://banes-lab.com/records/architecture/high-cohesion.md)
- [Abstraction](https://banes-lab.com/records/architecture/abstraction.md)
- [Modularity](https://banes-lab.com/records/architecture/modularity.md)
- [Dependency Injection](https://banes-lab.com/records/architecture/dependency-injection.md)
- [Component-Based Architecture](https://banes-lab.com/records/architecture/component-based-architecture.md)

## Reinforced by

- [Portability](https://banes-lab.com/records/architecture/portability.md)
- [Protocol Independence](https://banes-lab.com/records/architecture/protocol-independence.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)
- [Interchangeability](https://banes-lab.com/records/architecture/interchangeability.md)
- [Adapter Pattern](https://banes-lab.com/records/architecture/adapter-pattern.md)
- [Ports and Adapters Architecture](https://banes-lab.com/records/architecture/ports-and-adapters-architecture.md)

## Linked from

- [Principles are typed](https://banes-lab.com/software-architecture/principles/principles-are-typed.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)
- [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)
- [Structural Patterns](https://banes-lab.com/ontology/principles/architecture-category-structural-patterns.md)
- [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/principles/architecture-category-plugin-extensibility-ioc.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)
