Modular and Loosely-Coupled Systems
- Decomposability: decompose a problem into smaller sub-problems that can be solved separately. An example is Top-Down design
- Composability: Freely combine modules to produce new systems. For e.g., Math libraries, Unix command & pipes
- Understandability: Individual modules must be understandable by a human reader. A counter-example of this is Sequential Dependencies
- Continuity: A small change in specification must result in changes in only a few modules and must not affect the architecture. In relation to this I recommended reading Bill DeHora's article titled "Foundations for component and service models".
- Protection: Effects of an abnormal run-time condition must be confined to a few modules. For e.g. Validating input arguments at source.
In his Manageability web log, Carlos Perez extolls the virtues of loosely-coupled systems using an excellent compare-and-contrast method. Do take a good look at the tabulated differences.