“The software architecture of a program or computing system is the structure of structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.”
Len Bass, Paul Clements, Rick Kazman
Software Architecture in Practice, Second Edition – Boston, MA: Addison-Wesley, 2000
The following are expected attributes for an software architecture:
- Fit to purpose: A good architecture ensures that known quality attribute goals are met, including those that cut across multiple areas of a system. The behavior of the entire system is more important than the behaviour of a single component.
- Pragnatism: The implementation of a good architecture is achievable within the available schedule, budget, and constraints of the existing investiments (people, hardware and software).
- Transparency and consistency: A good architecture provides a clear, consistent, concise, and standard approach to implementation that is apparent throughout.
- Accessible documentation: A good architecture is well documented so that all participating stakeholders can quickly achieve the understanding they need to do their jobs. The documentation describes not only the static (structural) and dynamic (behavioral) aspect of the sytem, but also the process or the steps involved in the construction (or maintenance) of the system.