Clear and consistent responsibility power all great architectures
As all architects learn, architecture is all about balancing trade-offs, but there is one trade off which should never be broken; namely the clear and consistent responsibility throughout your system or system(s).
There are several design-principles documented to help you to stay clear and consistent:
- Orthogonal Design (is explained well in The Pragmatic Programmer
- Don't Repeat Yourself (DRY) Dave Thomas, Andy Hunt and Bill Venners on Orthogonality and DRY
97 Things Things Every Software Architect Should Know - Community Axioms