Quality Attribute Considerations
Just as a system’s functions do
not stand on their own without due consideration of other quality attributes,
neither do quality attributes stand on their own; they pertain to the functions
of the system. If a functional requirement is “When the user presses the green button,
the Options dialog appears,” a performance QA annotation might describe how
quickly the dialog will appear; an availability QA annotation might describe
how often this function will fail, and how quickly it will be repaired; a us-ability QA annotation might
describe how easy it is to learn this function.
Quality attributes have been of
interest to the software community at least since the 1970s. There are a
variety of published taxonomies and definitions, and many of them have their
own research and practitioner communities. From an architect’s perspective,
there are three problems with previous discussions of system quality attributes:
1.
The
definitions provided for an attribute are not testable. It is meaningless to
say that a system will be “modifiable.” Every system may be modifiable with
respect to one set of changes and not modifiable with respect to an-other. The other quality
attributes are similar in this regard: a system may be robust with respect to
some faults and brittle with respect to others. And so forth.
2.
Discussion
often focuses on which quality a particular concern belongs to. Is a system
failure due to a denial-of-service attack an aspect of availability, an aspect
of performance, an aspect of security, or an aspect of usability? All four
attribute communities would claim ownership of a system failure due to a
denial-of-service attack. All are, to some extent, correct. But this doesn’t
help us, as architects, understand and create architectural solutions to manage
the attributes of concern.
3.
Each
attribute community has developed its own vocabulary. The performance community has “events”
arriving at a system, the security community has “attacks” arriving at a system, the
availability community has “failures” of a system, and the usability community
has “user input.” All of these may actually refer to the same occurrence, but
they are described using different terms.
A
solution to the first two of these problems (untestable definitions and
overlapping concerns) is to use quality attribute
scenarios as a
means of characterizing
quality attributes (see the next section). A solution to the third problem is
to provide a discussion of each attribute—concentrating on its underlying concerns—to illustrate the concepts
that are fundamental to that attribute community.
There
are two categories of quality attributes on which we focus. The first is those
that describe some property of the system at runtime, such as availability,
performance, or usability. The second is those that describe some property of
the development of the system, such as modifiability or testability.
Within complex systems, quality
attributes can never be achieved in isolation. The achievement of any one will have an effect,
sometimes positive and sometimes negative, on the achievement of others. For
example, almost every quality attribute negatively affects performance. Take
portability. The main technique
for achieving portable software is to isolate system dependencies, which
introduces overhead into the system’s execution, typically as process or procedure boundaries, and this hurts
performance. Determining the design that sat-isfies all of the quality attribute requirements is
partially a matter of making the appropriate tradeoffs; we discuss design in
Chapter 17. Our purpose here is to provide the context for discussing each
quality attribute. In particular, we focus on how quality attributes can be
specified, what architectural decisions will en-able the achievement of particular quality attributes, and
what questions about quality attributes will enable the architect to make the
correct design decisions.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.