Architecture and Quality
Attributes:
Achieving
quality attributes must be considered throughout design, implementation, and
deployment. No quality attribute is entirely dependent on design, nor is it
entirely dependent on implementation or deployment. Satisfactory results are a
matter of getting the big picture (architecture) as well as the details
(implementation) correct. For example:
· Usability involves both architectural and nonarchitectural aspects. The
nonarchitectural aspects include making the user interface clear and easy to
use. Should you provide a radio button or a check box? What screen layout is
most intuitive? What typeface is most clear? Although these details matter
tremendously to the end user and influence usability, they are not architectural
because they belong to the details of design. Whether a system provides the
user with the ability to cancel operations, to undo operations, or to re-use
data previously entered is architectural, however. These requirements involve
the cooperation of multiple elements.
· Modifiability is determined by how functionality is divided
(architectural) and by coding techniques within a module (nonarchitectural).
Thus, a system is modifiable if changes involve the fewest possible number of
distinct elements.
. Inspite
of having the ideal architecture, however, it is always possible to make a
system difficult to modify by writing obscure code.
· Performance involves both architectural and nonarchitectural
dependencies. It depends partially on how much communication is necessary among
components (architectural), partially on what functionality has been allocated
to each component (architectural), partially on how shared resources are
allocated (architectural), partially on the choice of algorithms to implement
selected functionality (nonarchitectural), and partially on how these
algorithms are coded (nonarchitectural).
The
message of this section is two fold:
1. Architecture
is critical to the realization of many qualities of interest in a system, and
these qualities should be designed in and can be evaluated at the architectural
level.
2. Architecture,
by itself, is unable to achieve qualities. It provides the foundation for
achieving quality, but this foundation will be to no avail if attention is not
paid to the details.
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, security and reliability
often exist in a state of mutual tension: The most secure system has the fewest
points of failure—typically a security kernel. The most reliable system has the
most points of failure—typically a set of redundant processes or processors
where the failure of any one will not cause the system to fail. Another example
of the tension between quality attributes is that 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.
Let's
begin our tour of quality attributes. We will examine the following three
classes:
1. Qualities
of the system. We will focus on availability, modifiability, performance,
security, testability, and usability.
2. Business
qualities (such as time to market) that are affected by the architecture.
3. Qualities,
such as conceptual integrity, that are about the architecture itself although
they indirectly affect other qualities, such as modifiability.
System Quality Attributes:
System
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:
· The definitions provided for an attribute are not operational. It is
meaningless to say that a system will be modifiable. Every system is modifiable
with respect to one set of changes and not modifiable with respect to another.
The other attributes are similar.
· A focus of discussion is often on which quality a particular aspect
belongs to. Is a system failure an aspect of availability, an aspect of
security, or an aspect of usability? All three attribute communities would
claim ownership of a system failure.
· 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 are described using different terms.
· A
solution to the first two of these problems (nonoperational definitions and
overlapping attribute concerns) is to use quality attribute scenarios as a
means of characterizing quality attributes. A solution to the third problem is
to provide a brief discussion of each attribute—concentrating on its underlying
concerns—to illustrate the concepts that are fundamental to that attribute
community.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.