# Single Responsibility Principle

Record: `arch:single-responsibility`
Kind: principle
Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
Severity: mandatory
Scope: class, module, service
Aliases: SRP, Single Responsibility Principle (SRP)
Canonical: https://banes-lab.com/ontology#arch-single-responsibility

## Repair

- Refactored by: Extract Class, Extract Module, Split Service, Move Method
- Detected by: high fan-in/fan-out, unrelated methods, unrelated dependencies
- Violated by: Mixed Responsibilities, Multi-Reason Change
- Measured by: cohesion score, responsibility count, change-coupling
- Enforced by: architecture tests, package boundaries, [static analysis](https://banes-lab.com/records/reason/technique-static-analysis.md)

## requires

- [High Cohesion](https://banes-lab.com/records/arch/high-cohesion.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)
- [Modularity](https://banes-lab.com/records/arch/modularity.md)
- [Testability](https://banes-lab.com/records/arch/testability.md)

## enables

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

## conflicts-with

- [God Object](https://banes-lab.com/records/arch/god-object.md)
- [Blob Class](https://banes-lab.com/records/lex/blob-class.md)
- [Divergent Change](https://banes-lab.com/records/arch/divergent-change.md)

## tensions-with

- [Excessive Fragmentation](https://banes-lab.com/records/lex/excessive-fragmentation.md)

## tensions

- [Single Responsibility Principle (SRP) Excessive Fragmentation](https://banes-lab.com/records/tension/excessive-fragmentation-single-responsibility-principle-srp.md)

## referenced-by

- [Command Pattern](https://banes-lab.com/records/arch/command-pattern.md)
- [Chain of Responsibility Pattern](https://banes-lab.com/records/arch/chain-of-responsibility-pattern.md)
- [Iterator Pattern](https://banes-lab.com/records/arch/iterator-pattern.md)
- [Pipes and Filters](https://banes-lab.com/records/arch/pipes-and-filters.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)
- [Domain Service](https://banes-lab.com/records/arch/domain-service.md)
- [Interface Segregation Principle (ISP)](https://banes-lab.com/records/arch/interface-segregation.md)
