# Pipes and Filters

> A convention of processing data through independent stages that share one input and output interface.

Record: `architecture:pipes-and-filters`
Kind: style
Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
Severity: recommended
Scope: application, data processing, composition
Canonical: https://banes-lab.com/ontology#architecture-pipes-and-filters

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Monolith Architecture](https://banes-lab.com/records/architecture/monolith-architecture.md) and before [Service-Oriented Architecture](https://banes-lab.com/records/architecture/service-oriented-architecture.md).

## Repair

- Refactored by: Extract Filters, Connect via Pipeline
- Detected by: long sequential transform bodies
- Violated by: one function performing every transform step inline
- Measured by: transform-step count per function
- Enforced by: [design review](https://banes-lab.com/records/architecture/design-review.md)

## Requires

- [Uniform Stage Interface](https://banes-lab.com/records/lexicon/uniform-stage-interface.md)

## Reinforces

- [Single Responsibility Principle (SRP)](https://banes-lab.com/records/architecture/single-responsibility.md)
- [Composability](https://banes-lab.com/records/architecture/composability.md)

## Enables

- [Reorderable Stages](https://banes-lab.com/records/lexicon/reorderable-stages.md)
- [Independent Stage Testing](https://banes-lab.com/records/lexicon/independent-stage-testing.md)

## Conflicts with

- [Monolithic Transform Function](https://banes-lab.com/records/lexicon/monolithic-transform-function.md)

## In tension with

- [End-to-End Traceability](https://banes-lab.com/records/lexicon/end-to-end-traceability.md)

## Tensions

- [Pipes and Filters / End-to-End Traceability](https://banes-lab.com/records/tension/end-to-end-traceability-pipes-and-filters.md)

## Severity

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

## Category

- [Codebase / System Architecture Styles](https://banes-lab.com/records/architecture-category/codebase-system-architecture-styles.md)

## Linked from

- [Core Modular Design](https://banes-lab.com/ontology/principles/architecture-category-core-modular-design.md)
- [Codebase / System Architecture Styles](https://banes-lab.com/ontology/lexicon/lexicon-category-codebase-system-architecture-styles.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
