Abstract :
How to modularize a program is one of the most general and important issues in software design. Approaches such as object orientation, aspect orientation, components, and services are all different twists to modularization. Whatever route you take, separating the interface from the implementation and separating configuration from use are two vital principles in a good modularization scheme.