Monday, September 14, 2009

Pipes and Filters

"Pipes and filters" is probably the architectural pattern that is the easiest to understand other than the big ball of mud. However, I feel that general population tends to see the pattern in places where it doesn't exist. I don't believe that simply dividing your application into modules qualifies as pipes and filters. I know people who think that any 3-tier web application consisting of user interface, business logic, and data access layers qualifies.

I think the following excerpt from JLSjr's blog on the topic eloquently summarizes my thoughts: "The Filter portion of the concept must be developed by a multi-faceted consideration of factors including reuse, adaptability, scalability, efficiency, and level of granularity among many others. The development of a sensible set of Filters, their interfaces, and data formats is a major portion of the effort.” It isn't as trivial as many developers seem to think to find the right level of granularity & abstraction for a filter in order to make each element in a set of filters swappable and to make each filter independent of the stages preceding and following, depending only upon the data that it receives.

I think I’ll save the rest of my thoughts for when I lead the discussion on this topic tomorrow :)

No comments:

Post a Comment