Thursday, September 17, 2009

Layers

This architectural pattern is very well known pattern to me but reading this paper revealed new thoughts and information. From the paper:

The Layers pattern helps structure applications that can be decomposed into groups of subtasks in which each group of subtasks is at a particular level of abstraction
Developing applications in layers provides an advantage for allowing incremental coding and testing to occur without disturbing other protocols. When thinking about layering, you should consider the following forces:

• Late source code changes should not ripple through the system.
• Interfaces should be stable.
• Parts of the system should be exchangeable.
• Possibility of building other systems at a later date with the same as the system currently being designed.
• Similar responsibilities should be grouped to help understandability and maintainability.
• The system will be built by a team of programmers, and work has to be subdivided along clear boundaries.

Layers pattern is very useful and seems very natural to apply in development. As long as interfaces are stably defined, new layers can be inserted, removed, or combined as necessary. Layering done poorly often results in complications for maintainability, understandability and upgradability etc. One also need to be more carful about deciding how many layers are needed and how design them etc. which are given in this paper.

No comments:

Post a Comment