# data[].attributes.body
El patrón de arquitectura de software Pipes and Filters descompone una tarea que realiza un procesamiento complejo en una serie de elementos separados que pueden ser reutilizados. En este patrón, hay muchos componentes, a los que se hace referencia como filtros, y conectores entre los filtros que se llaman tuberías. Cada filtro es responsable de aplicar una función a los datos dados; esto se conoce como filtrado.

# data[].attributes.body
Adecuado para el procesamiento que requiere pasos claros y sistemáticos para transformar piezas sucesivas de datos, debido al flujo intuitivo de procesamiento.

Cada filtro puede ser modificado fácilmente, siempre y cuando la entrada y salida de datos permanezcan iguales.

Los filtros son reutilizables, los filtros antiguos pueden ser reemplazados por nuevos, o se pueden insertar fácilmente nuevos filtros en el flujo de procesamiento.

Cada componente se implementa como una tarea separada y distinta, lo que permite una separación natural de las preocupaciones.

# data[].attributes.body
Ineficiente e inconveniente para pasar alrededor del conjunto completo de datos a través de todo el sistema de tuberías y filtros, porque no todos los componentes requerirán el conjunto completo de datos.

La fiabilidad puede ser un problema si los datos se pierden en el camino entre los componentes.

Tener demasiados filtros puede ralentizar su aplicación, introduciendo cuellos de botella o bloqueos si un filtro en particular procesa lentamente o falla.

# data[].attributes.body
El patrón Pipes and Filters es mejor aplicable cuando un sistema necesita ejecutar múltiples manipulaciones en un conjunto de datos ordenado. Este patrón es útil solo cuando:
1) La tarea más grande puede ser descompuesta en unidades desacopladas más pequeñas.
2) El sistema exige flexibilidad y el reordenamiento de los pasos es parte del requisito funcional.
3) La distribución de tareas a través de múltiples servidores debería resultar en beneficios de rendimiento y/o costo.

# data[].attributes.body
Un ejemplo real del uso de tuberías y filtros es en Unix. Se puede utilizar para encadenar dos o más comandos de manera que la salida de un comando se convierta en la entrada del siguiente comando.

Otro ejemplo es el procesamiento de imágenes, donde se pueden aplicar una serie de filtros a una imagen para mejorar su calidad o realizar otras operaciones.

# data[].attributes.body
El patrón Pipes and Filters se inspiró en la técnica Unix de conectar la salida de una aplicación a la entrada de otra a través de tuberías en la shell. Es un concepto arquitectónico que puede ser implementado usando diferentes lenguajes y tecnologías.

# data[].attributes.body
1. [Brown, M. (2018). Software Architecture Patterns. O’Reilly Media].

2. [Microsoft. (2010). Pipes and Filters. Microsoft Docs].

3. Richards, M., & Ford, N. (2020). Fundamentals of Software Architecture: An Engineering Approach. O’Reilly Media

4. Buschmann, F., et al. (1996). Pattern-oriented Software Architecture: A System of Patterns. Chichester, England; New York: Wiley

5. [GeeksforGeeks. (2020). Pipes and Filters Design Pattern. GeeksforGeeks].

6. [SourceMaking. (2020). Pipes and Filters. SourceMaking].

7. [TutorialsPoint. (2020). Pipes and Filters Pattern. TutorialsPoint].

8. [CodeProject. (2016). Image Processing with the Pipes and Filters Pattern. CodeProject].