Chapter 6. Maintaining Technologies
Now that you’ve brought a technology into your organization, you have to maintain it. Using quality attributes, you can assess the architecturally significant requirements that will guide your decision-making process. But how do you maintain these quality attributes as your system inevitably evolves?
Quality attributes represent the architecturally significant requirements of a system. Some refer to them as the nonfunctional requirements, quality goals, constraints, cross-functional requirements, or quality-of-service goals. Colloquially they are referred to as the “ilities” since many share that suffix. However you refer to them, as architects, managing the quality attributes of a system is one of our most important jobs.
Your customers focus intently on the functionality of their system—which makes sense, it is the part of the application they see and interact with on a regular basis. Obviously you have to meet their requirements for the system, but as an architect you have to look beyond the immediate requirements of the system to understand the bigger picture. You need to consider the service-level objectives of the system.
There are dozens and dozens of quality attributes you could consider for a given project. Which ones matter most depends a great deal upon the type of software you are building. Some common quality attributes1 include: