You are on page 1of 14

Effect of Architectural Style on Software Architecture

Quality Attributes: A Survey

Mohammad Ismail Amro (g200806140), Syed Naeem Firdous (g200803700)


King Fahd University of Petroleum and Minerals
mamro@kfupm.edu.sa , snaeem@kfupm.edu.sa

Abstract
The concept of Software Architecture provides a new way for the transition from the requirement
to implementation. Software architecture style is a classification of Software Architecture where
different architectural styles have different system characteristic. An architectural style defines a
family of pattern for structural organization. Architecture style or pattern defines the various
components and connectors that are available in the style and states the constraints of how these
components can be combined using the connectors to develop a software system. One of the
important steps of designing the software architecture is to choose an architecture style or pattern
that suits the software design. Software architectural styles or patterns have a major impact on the
quality of the final designed software. It is important to select an appropriate software
architectural style to achieve the desired software quality. There are many architecture styles that
have their own distinct features and no single style can completely satisfy the requirements of the
software system. Hence many architecture styles have to be utilized to construct the overall
architecture of the system. The decision to choose among various architecture styles or
architectural approaches depends on what kind of functional or nonfunctional quality
requirements the system should satisfy. In this survey we will discuss the effect of various types
of software architectural styles on software architectural quality attribute. In this paper we will
present the recent research activities that concentrate on the evaluation of architectural styles with
respect to different quality attributes, some of these attributes are domain independent and some
are specific for each set of applications.

Key Words:

Software Architecture, Architectural styles, Quality Attributes

Effect of Architectural Style on Software Architecture Quality Attributes: A Survey 1


Introduction
Mary Shaw and David Garlan [1] characterized a number of software architectural styles in a
framework that resembles a popular way of describing design patterns. The complexity of
software systems is constantly increasing, and the task of software architects is becoming
challenging as they have to create suitable software architecture for the system. The problem of
designing a large and complex system is not just superior computation capabilities rather it is
more important to design the architecture of the system that meets the design requirements.

Suitable software architecture can be built by visualizing common architecture patterns that can
help assess the relationship between the components and their interactions. These standard
patterns can then be reused for similar requirements to achieve a desired system architecture
quality. Mary Shaw and David Garlan [1] define the architecture style in their book “Software
Architecture” as:

“An architectural style determines the vocabulary of components and connectors that can
be used in the instances of that style, together with a set of constraints on how they can be
combined”.

Software Architecture Styles are also referred to as architectural pattern in software engineering
and is similar to architectural styles in buildings. An architectural pattern is determined by set of
element types, topological layout, semantic constrains and interaction mechanisms. One of the
important steps of designing the software architecture is to choose an architecture style or pattern
that suits the software design. David Garlan and Mary Shaw give this discussion of what
constitutes an architectural style:

“An architectural style then defines a family of such systems in terms of a pattern of
structural organization. More specifically, an architectural style determines the
vocabulary of components and connectors that can be used in instances of that style.
Additionally, a style might define topological constraints on architectural descriptions
(e.g., no cycles). Other constraints — say, having to do with execution semantics — might
also be part of the style definition.”

In general the every individual has their own definition of quality. In software engineering
software quality is almost frequently attributed to lack bugs in the system. Software is generally
designed with different quality attributes in mind. A software product with many functional

Effect of Architectural Style on Software Architecture Quality Attributes: A Survey 2


defects is considered of poor quality. There are various definitions of software quality. Pressman's
definition of "Software Quality" is

“Conformance to explicitly stated functional and performance requirements, explicitly


documented development standards, and implicit characteristics that are expected of all
professionally developed software”.

Software quality According to IEEE Glossary [4] of Software System Engineering Terminology
software quality attributes can be defined as

“The degree to which a system, a component, or a process meets customer or user needs
or expectations.”

Software quality attributes are also interrelated and they complement each other. When designing
a system the architects and the developers must keep these interrelationships in mind to make
effective tradeoff decisions when selecting quality attributes of the system. Figure 1 shows some
relationships between quality attributes.

Figure 1: Software quality attributes relationships (source: Metrics and models in software
quality engineering By Stephen H. Kan)

McCall has categorized the software quality into three main categories: Maintenance,
Modification and Operation. Each category has different quality attributes associated with them.

Effect of Architectural Style on Software Architecture Quality Attributes: A Survey 3


Figure 2: McCall’s software quality triangle

Some of the important quality attributes are: correctness, reliability and usability as these directly
affect the users of the system. The other quality attributes are essential for the organization that
develops the software as they need to build software that not only meets the user requirement but
also help reduce their costs and increase their competiveness by being able to release new
versions of the product.

When we choose architecture, we need to verify the architecture for requirements of the system
and we need to see if the architecture satisfies requirements including quality requirements. For
example in a system or the decomposed module which is for design, there are possibly many
architecture alternatives to satisfy requirements of the system. But each alternative can have
tradeoff points about various quality attributes (QA). Some alternatives may have high
performance and low maintainability, while other alternatives may show high maintainability and
low performance. One of the most challenging tasks of a software architect is to design a software
system that meets a set of quality attribute requirements. General software quality attributes
include scalability, security, performance and reliability.

In the survey we have used both architecture pattern and style interchangeably as we consider that
both architectural styles and patterns are fundamentally similar concepts and that the only minor
difference in is the level at which they describe the solution. The main purpose of this survey is to

Effect of Architectural Style on Software Architecture Quality Attributes: A Survey 4


illustrate the how architecture styles are an important factor in achieving the quality of the final
desired product. This survey is an attempt to provide a broad and organized review of the recent
research work that is done on the impact of software architecture styles on quality attributes. In
this paper we will present the recent research activities that concentrate on the evaluation of
architectural styles with respect to different quality attributes, some of these attributes are domain
independent and some are specific for each set of applications.

Literature Review
In Software engineering, architectural design is an important requirement to develop a software
system. First, it is important to be able to recognize common paradigms so that high-level
relationships among systems can be understood and so that new systems can be built as variations
on old systems. Second, getting the right architecture is often crucial to the success of a software
system design; the wrong one can lead to disastrous results. Third, a detailed understanding of
software architectures allows the engineer to make principled choices among design alternatives.
Fourth, an architectural system representation is often essential to the analysis and description of
the high-level properties of a complex system. An architectural style, defines a family of systems
in terms of a pattern of structural organization. More specifically, an architectural style
determines the vocabulary of components and connectors that can be used in instances of that
style, together with a set of constraints on how they can be combined [1].

One of the earliest works in this area was proposed by MH Klein, where the author proposed
Attribute-Based Architectural Styles (ABASs) [2]. The main notion of an Attribute-Based
Architectural Style (ABAS) is to make architectural styles the foundation for more precise
reasoning about architectural design. This is achieved by explicitly associating a reasoning
framework with an architectural style. The reasoning frameworks are developed using quality
attribute-specific models, which can be obtained from various quality-attribute communities. This
means that ABASs are not only based on attributes, but unlike existing architectural styles they
are also attribute specific. For example the pipe and filter style is used when reuse is desired and
performance is not a top priority, this is a description found in existing definitions of the pipe and
filter style.

The quality attributes of the system are non-functional characteristics in nature. Typical quality
attributes include reliability, usability, and security. One of the primary purposes of the
architecture of a system is to create a system design to satisfy the quality attributes. Wrong
architectural choices can cost significant time and effort in later development, or may cause the

Effect of Architectural Style on Software Architecture Quality Attributes: A Survey 5


system to fail to meet its quality attribute goals [3]. ISO 9126 is the software product evaluation
standard from the International Organization for Standardization. The standard defined by ISO
9126 includes six characteristics that describe software quality with minimal overlap. The main
categories defined by ISO 9126 standard are [4]:

 Functionality

 Reliability

 Efficiency

 Maintainability

 Portability

Several quality attribute centered software architecture methods take an intuitive approach and
the attribute driven design (ADD) method [5]. Use of architecture patterns is also intuitive, and
fits well in these models. In addition, the architecture pattern quality attribute information
formalizes architecture patterns and their consequences, relieving the architect of some of the
burden of ferreting out the consequences of architectural decisions. Bachmann et al [6] describes
a knowledge framework designed to help architects make specific decisions about tradeoffs that
impact individual quality attributes. It focuses on individual quality attributes independently,
while the pattern approach focuses more on interactions among patterns and quality attributes. It
might be said that the knowledge framework favors depth, while the pattern-driven approach
favors breadth. In this sense, it is likely that these two research efforts are complementary. In the
general model of architecture [7], the information is useful in the Architectural Synthesis activity,
but is most valuable in the Architectural Evaluation activity.

In software engineering practices software architectural evaluation is a very important practice to


develop quality software. There are several methods and techniques to evaluate software
architectures with respect to the desired quality attributes such as maintainability, usability, and
performance. A detailed survey done by Banani Roy and T.C. Nicholas Graham [8] describes the
various software architectural evaluation methods and techniques using taxonomy. The survey
classifies these techniques according to the phase in which these techniques are applied.

Effect of Architectural Style on Software Architecture Quality Attributes: A Survey 6


Architecture patterns are a viable approach for architectural partitioning, and have a well-
understood impact on quality attributes. However their application has been rather limited due to
a number of factors [9]. In [3] the authors propose a systematic use of architecture patterns to
help the architect satisfy quality attributes, and thus reduce the risk of later rework. They
demonstrate that patterns can help the architect understand the impact of architectural decisions
that might be overlooked. Paris Avgeriou and Uwe Zdun offer a comprehensive overview of
currently identified architecture patterns [10].

When using architecture pattern knowledge, it is very important to understand the consequences
of applying the pattern to achieve the functional and (especially) nonfunctional system aspects.
When you decide to use a pattern, you decide to accept its consequences. [11] Proposes a decision
support system (DSS), which is based on fuzzy logic to select software architectural style. This
DSS system uses the available capabilities of software architectural style and its impact on
quality attributes to select an appropriate style that can be used by the architects. The software
quality attributes are correlated with the architectural style chosen in the design phase, so it is
very important to understand and analyze how architectural styles play an important role in the
final quality of the software.

Organization
This survey is organized into four parts: in the first part we will focus on the importance of
architecture styles in designing the architecture and also focus on the challenges that the
architects face when selecting an architecture style that suits the requirements. In the second part
we will analyze relationship of software architecture style and quality attributes and the impact of
architecture styles on software quality attribute. Here we will also elaborate on the features of
architecture styles and what quality attributes they support. In the third section will discuss how
architecture styles are evaluated and how to take decisions on selecting a particular architecture
style. The final section will have the concluding remarks.

Importance of architecture styles


There is unanimous agreement between different researchers that software architecture styles are
very important for developing a good software system. Garlan and Shaw [1] state that “design
problem goes beyond algorithms and data structures rather it is specifying the overall system
structure has emerged as a new kind of problem.” Klein, M., Kazman, R, et al state that
architecture styles represent the wisdom of experienced architects and serve as guide for new and

Effect of Architectural Style on Software Architecture Quality Attributes: A Survey 7


less experienced architects to design their software system architectures. S. Moaven et al. [11]
note that an important step in software development lifecycle is to select appropriate software
architecture for the system. Selecting a suitable architecture style for the system helps in
satisfying the desired quality attributes for the system. Selecting an appropriate architectural style
helps in satisfying the functional and non-functional requirements of the software system.

M. Svahnberg and C. Wohlin [12] suggest that a good Software architecture is very essential for
preserving qualities of the software during evolution and even when the requirements change.
Harrison, N.B., Avgeriou, P [3] rightly pointed out that selecting an appropriate architecture
styles is very essential for the system and if wrong decisions are made then system may fail to
meet the desired quality attributes. Architecture patterns help architects make right choices of
architectures for the system as they contain information about their implication and the context of
usage. P. Avgeriou and U. Zdun explain that architectural patterns are a very important as they
offer

 Widely used and well established solutions

 Help capture architecture design decisions

 Very useful for communicating with the stakeholders

 Most importantly they impact the software quality attributes.

Challenges in selecting architecture styles


Selecting appropriate styles in the early design decisions is crucial for the success of the overall
system as the mistakes done in the early phases will get carried over to other faces and will lead
to badly designed product. Many researchers have explained the challenges that lie with selecting
architecture styles. Harrison, N.B., Avgeriou, P [3] have described the challenge that architects
face when selecting architecture styles. The information about the consequences of the style is
limited

 It is not searchable or cross-referenced

 It is difficult to understand about pattern interactions ( how combination of architecture


styles can impact the quality attributes

 Pattern consequences are qualitative and not quantitative

Effect of Architectural Style on Software Architecture Quality Attributes: A Survey 8


 Insufficient information about impact of architecture styles on quality attributes

 Comparison of different strengths it limited

S. Moaven et al. [11] note that selecting an architecture style that suits the requirements is a
difficult task as it involves analysis of the available styles and their effectiveness in meeting the
requirements. Harrison, N et al. [9] suggest that apart from the problems of architecture style
itself the other challenges in selecting a style or pattern are dependent on the architects who take
these decisions. Some the main problems that they point out are:

 A substantial effort is required to document the architecture decisions and this effort is
considered less beneficial.

 Architects may not go deep in understanding and reflecting upon the architecture they are
choosing and this makes the documentation of the decision difficult task

 Documenting the design decisions is kept as a final task and coupled with the limited
knowledge of architects in documenting their decisions makes these documentation very
poorly written and does not provide any value in identifying new architecture styles.

Relationship between architecture styles and quality attributes


The software architecture is very important for the quality of the overall system. The architecture
has wide implications on the properties such as the maintainability, dependability or the
performance of the software system. Selecting an architecture style based on a given set of
quality attributes is one of initial steps while designing the architecture.

M. Svahnberg and C. Wohlin [12] suggest a method on how to select an appropriate architecture
style candidate for the quality attributes requirements. To achieve this they define three vectors:

1. Prioritize the quality attributes that are essential for the software

2. List the different software architecture candidates for each quality attribute

3. Compare the different quality attribute for each software quality attribute

Effect of Architectural Style on Software Architecture Quality Attributes: A Survey 9


Impact of software architectures on quality attributes
The method used by the authors is to prepare a questionnaire to study the impact of different
architecture candidates on different quality attributes and select an appropriate style based on this.
The questionnaire is filled by experienced people and the based on the responses they decide on
which architecture style to use.

Software Architecture styles used as candidates:

 Layered

 Pipes and Filters

 Blackboard

 Model-View-Controller

 Microkernel

The software quality attributes used in this evaluation are:

 Functionality

 Reliability

 Usability

 Efficiency

 Maintainability

 Portability

Based on their experiments they have prepared two rankings

 Ranking software architecture styles per quality attributes

 Ranking quality attributes per software architecture style

Effect of Architectural Style on Software Architecture Quality Attributes: A Survey 10


Table 1: Ranking of selected architecture style based on their satisfaction of quality attributes

Quality Which style is Which style is


Attribute the best the worst
Functionality Blackboard Pipes and Filters
Reliability Layered Blackboard
Usability MVC Microkernel
Efficiency Pipes and Filters Layered
Maintainability Layered Microkernel
Portability Layered blackboard

It is evident from the above results collected from user experiences that certain quality attributes
satisfy specific quality attributes only.

Table 2: Ranking of selected quality based on how architecture supports them

Software Which Quality Which quality


Architecture Style it supports best supports worst
Microkernel Portability Usability
Blackboard Functionality Reliability
Layered Portability Efficiency
MVC Maintainability Efficiency
Pipes and Filters Maintainability Usability

The table shows that each architecture style is good for some quality attribute but worst for some
other quality attribute.

According to [3] quality attributes are applicable not just to a single module or a subsystem but it
must be applied system-wide. The authors analyze the impact of patterns on quality attributes and
provide a qualitative impact of each style on specific attributes. In their approach they use the
ISO quality model and assess the impact of styles on quality attributes.

Effect of Architectural Style on Software Architecture Quality Attributes: A Survey 11


Table 3: Impact analysis of various architecture patterns on quality attributes

Usability Security Maintainability Efficiency Reliability Portability Implementability


Layers Neutral Very Very Strong Weak Strong Strong Weak
Strong
Pipes and Weak Weak Strong Strong or Very weak Very Strong Weak
Filters weak
Blackboard Neutral Weak Very Strong or Weak Neutral Neutral Very weak
very weak
Model View Very Neutral Weak Weak Neutral Weak Weak
Control Strong
Presentation Very Neutral Very Strong Very weak Neutral Strong Very weak
Abstraction Strong
Control
Microkernel Neutral Neutral Very Strong Very weak Strong Very strong Very weak
Reflection Neutral Neutral Very Strong Weak Very weak Strong Weak
Broker Strong Strong Strong Neutral Neutral Very strong strong

 Very Strong indicates the architecture style strongly supports this quality attribute

 Strong implies it is has good support for that quality attribute

 Neutral implies the architecture style does not have a major impact on the quality
attribute

 Weak implies the quality attributes is less supported by the architecture style

 Very weak indicates that the architecture style is very poor for that quality attribute.

Certain architecture styles have conflicting behavior with respect to the quality attribute like the
pipes and filter in the case of efficiency and blackboard in the case of maintainability. This
represents the complexity of the architecture style and it should be used only when there is no
alternative for that choice.

Decision making to select an appropriate style


Architect’s main role is to design an appropriate architecture that suits the functional and non-
functional requirements of the software system. The prior knowledge of the impact of various
architecture patterns on the software quality attribute is a benefit for architects as it eases their
decision process. The knowledge of how architecture styles influence the quality what decisions
Effect of Architectural Style on Software Architecture Quality Attributes: A Survey 12
can be taken for a particular requirement will. Selecting an appropriate architectural style helps in
satisfying the functional and non-functional requirements of the software system.

Selecting an architecture style that suits the requirements is a difficult task as it involves analysis
of the available styles and their effectiveness in meeting the requirements. To help architects in
this difficult process the authors propose a fuzzy based decision support system for selecting an
appropriate style for the requirements [11]. Inputs for multi-criteria decision support system
include the project domain, all available styles and rule base describing the level of interaction
between styles and quality attributes. Project domain provides the information about which
quality attributes are important for the domain and prioritize them accordingly. The knowledge
about the level of quality attributes that each style satisfies is also very important while taking
style selection decisions [11].

The impact analysis of architecture patterns on quality attributes help take informed decisions
regarding the selection of an appropriate software architecture candidate for the system [12]. The
architecture decision is one important task of the architect in the early stages of the software
development and it has a major impact on all the stages of the development. The impact of wrong
decisions is very high due to the resulting economic risk [8]. The software architecture evaluation
helps in verifying the architectural decisions with respect to the requirements. It measures the
degree to which the selected architecture style meets its quality requirement [8].

Conclusion
Deciding on a particular architecture style is very important for final quality of the software
system. It is evident that no single architecture style can satisfy all the quality attributes of the
system. The software architect must have sufficient knowledge of how these architecture styles
can be combined to achieve the desired quality. Architects must also record their decisions as
they will be useful for others who face the same situation, instead of inventing the wheel. Many
software architecture styles do not support many combinations of quality attributes. Quality
attributes are not mutually exclusive except efficiency and functionality.

References
1. David Garlan and Mary Shaw, “An Introduction to Software Architecture”. 1994

2. Klein, M., Kazman, R, et al..: “Attribute-Based Architectural Styles”. Technical Report


CMU/SEI-99-T2-022 (October 1999)

Effect of Architectural Style on Software Architecture Quality Attributes: A Survey 13


3. Harrison, N.B., Avgeriou, P.: “Leveraging Architecture Patterns to Satisfy Quality
Attributes”. In: Oquendo, F. (ed.) ECSA 2007.

4. www.cis.gsu.edu/~ghubona/cis8300/ISO9126.pdf

5. Bass, L., Clements, P., Kazman, R.: “Software Architecture in Practice, 2nd edn”.
Addison - Wesley, Reading, MA (2003)

6. Bachmann, F., Bass, L., Klein, M., Shelton, C.: Designing software architectures to
achieve quality attribute requirements. In: IEE Proceedings, vol. 152 (2005)

7. Hofmeister, C., Kruchten, P., Nord, R.L., Obbink, H., Ran, A., America, P.: Generalizing
a Model of Software Architecture Design from Five Industrial Approaches. Journal of
Systems and Software 30(1), 106–126 (2007)

8. Banani Roy and T. C. Nicholas Graham, "Methods for Evaluating Software Architecture:
A Survey", Technical Report, 2008.

9. Harrison, N., Avgeriou, P., Zdun, U.: Architecture Patterns as Mechanisms for Capturing
Architectural Decisions. IEEE Software (September/October 2007)

10. P. Avgeriou and U. Zdun, “Architectural Patterns Revisited - A Pattern Language,” Proc.
10th European Conf. Pattern Languages of Programs (EuroPLoP), UVK Konstanz, 2005,
pp. 431–470.

11. Shahrouz Moaven, Habibi, J., Ahmadi, H., Kamandi, A., Decision Support System for
Architecture‐Style Selection, In proc. of 6th Intl. Conference on Software Engineering
Research, Management and Applications (SERA08), pp. 213‐220, 2008.

12. Mikael Svahnberg, Claes Wohlin , “An Investigation of a Method for Identifying a
Software Architecture Candidate with respect to Quality Attributes”. Empirical Software
Engineering: An International Journal, Vol. 10, No. 2, pp. 149-181, 2005

13. Claus Pah, Simon Giesecke, and Wilhelm Hasselbring, An Ontology-Based Approach for
Modeling Architectural Styles, ECSA 2007

Effect of Architectural Style on Software Architecture Quality Attributes: A Survey 14

You might also like