>Mike-
>
>>A first-order principle of software architecture is to reduce coupling and increase cohesion."
>>
>>A module must be coherent and it must reduce coupling.
>
>It's going to take a while to digest the essence of your question, but I have a maybe not insignificant quibble.
>
>Cohesion => cohesive ! coherent.
Actually, both derive from the latin for stick together. There is much to be gained from the idea that a class or module is coherent and cohesive.
http://dictionary.reference.com/search?q=coherenthttp://dictionary.reference.com/search?q=cohesion