Lectura Importance of Quality Attributes in Software Architecture
Lectura Importance of Quality Attributes in Software Architecture
Justin Kohlhepp
I’ve often been asked to define what a software architect does. We do many different things, and the job
description varies quite a bit among different companies, and across different sub-disciplines such as
infrastructure architect or application architect. But the best definition I’ve come up with for what a software
architect does is this: we balance the different quality attributes of a system so that they are best aligned to
delivering business value for our organization. In this post I will talk about what quality attributes are and
how they are employed when architecting a system.
The quality of a system to be online when users or other systems want to interact with
it. This includes a system’s ability to avoid outages, as well as ability to recover from
outages quickly and fully. Systems may also increase availability by degrading
Availability gracefully when certain resources are not available in order to still provide a subset of
total functionality.
Related qualities: recoverability, degradability, dependability, redundancy, stability,
survivability
Usability The quality of a system to be easily understood by users. A highly usable system will
allow users to get desired tasks done efficiently and correctly. The system should be
efficient for both new users and experienced users, with minimal time invested by the
user in order to learn the system.
Related qualities: understandability, learnability, efficiency, discoverability,
seamlessness, perceived performance, simplicity, flexibility, adaptability,
demonstrability, customizability, tailorability, accessibility, localization,
internationalization, mobility
The quality of a system to execute actions within acceptable time periods. This
includes the time it takes to execute a single action, as well as the ability to support
Performance multiple actions being executed simultaneously (scalability).
Related qualities: timeliness, responsiveness, scalability, distributability, perceived
performance
The amount of resources that need to be invested in the system. This includes both the
initial creation / installation of the system, cost of modification, as well as cost of just
keeping it running. Resources could include direct monetary costs as well as indirect
Cost
cost such as employee time, data center real estate, power consumption, etc.
Related qualities: project costs, infrastructure costs, cost of ownership, affordability,
time to market, hard vs. soft
Referencia