Architecture is about addressing the desired/required qualities of a system. These qualities are sometimes called "non-functional," which offends my mathematical understanding of a function, or "behavioral," which seems easily confused with "functional," or "modal," which is interesting, closer to the heart of the problem, and completely non-obvious. I merely stick with "qualities." These qualities have the largest influence on shaping the architecture of the system. A system designed to generate an annual financial report will be designed drastically different if it is run once a calendar year versus if it is run every single day for the prior linear year. This is largely driven by the performance-oriented throughput requirements.
What follows is a sample list of architectural qualities. Please note that each system has a unique list of architecturally important qualities, and for that list, each has a unique set of values. The samples below are for illustrative purposes only. Further, take in to consideration that many of these qualities are "summary qualities," that is, they actually have many different facets. For example, performance can be broken into several different categories, such as response time, throughput, memory or storage efficiency, and so on.
- Performance
- Security
- Availability
- Extensibility
- Flexibility
- Reliability
- Scalability
- Usability
- Simplicity
- Robustness
- Transparency
Comments