Professional Documents
Culture Documents
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:
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
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.
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
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
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.
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.
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
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.
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
Layered
Blackboard
Model-View-Controller
Microkernel
Functionality
Reliability
Usability
Efficiency
Maintainability
Portability
It is evident from the above results collected from user experiences that certain quality attributes
satisfy specific quality attributes only.
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.
Very Strong indicates the architecture style strongly supports this 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.
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
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