I am writing an architecture and design document for software development at our company, that will contain the rules and guidelines for developers to follow. It is targeted at J2EE web applications, but I constantly keep mentioning the same basic 'ingredients' (for lack of a better word, and to avoid buzzwords) to introduce and defend certain choices.
These are the following:
- Abstraction: focusing on “what” instead of “how”.
- Encapsulation: hiding the “how”.
- Separation of concerns: division into distinct non-overlapping structures.
- Low coupling and high cohesion: making any divisions meaningful.
The advantage of including them would be that when the document doesn't mention something specifically, it is easy to point to these key ingredients so they serve as a kind of catch-all.
The disadvantage would be reactions like "Yeah, great, but I just need to know what class I need to extend to implement this controller."
Am I right in identifying and discussing these general issues first, or should I just 'stick to the point'?