contents  
previous
B. Architectures
1. Coupling and coherence of subsystems
- Each subsystem should be as coherent as possible. It should
be tailored for a specific functionality or set of closely related functionalities.
- The logical connections between different subsystems brought about by the need for one
subsystem to require services from another subsystem
are called couplings.
- It is desirable to keep couplings simple and intelligable. Each subsystem should have
a clean interface (API) so that other subsystems can
get maximal service with minimal effort. Interfaces should be planned carefully and agreed upon
early.
- It is desirable to also keep the number of couplings between various subsystems small. The
graph that represents subsystems as nodes, and connects two nodes if the corresponding subsystems are
coupled, should be kept simple whereever possibly. In general, loops are not desirable (although
some are unavoidable).
- Subsystems can be divided into smaller subsytems to assist in the goals here. We might also combine
subsystems into bigger subsystems. Ideally, at the high level of decomposition, there is low coupling, and
when each of these high-level subsystems is decomposed, its components parts are also loosely coupled.
And so forth.
next