can be applied to all levels of software development. Only through the sensible and appropriate use of all architectural principles can good architecture be created. Excessive use of just one principle, on the other hand, does not usually lead to good architecture.