Ralph Johnson, CACM Nov. 1997
Bertrand Meyer, OO Software Construction 2nd ed.
the designer of a module should strive to make all information about the module part of the module itself ...
software architecture = a set of rules, guidelines, interfaces, and conventions used to define how components and applications communicate and interoperate with eachother ...
see patterns