effect of architectural style on software architecture quality attributes

24
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 [email protected] , [email protected] 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 Effect of Architectural Style on Software Architecture Quality Attributes: A Survey 1

Upload: naeemupm

Post on 25-Nov-2014

109 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Effect of Architectural Style on Software Architecture Quality Attributes

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

[email protected] , [email protected]

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

Page 2: Effect of Architectural Style on Software Architecture Quality Attributes

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

Page 3: Effect of Architectural Style on Software Architecture Quality Attributes

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

Page 4: Effect of Architectural Style on Software Architecture Quality Attributes

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

Page 5: Effect of Architectural Style on Software Architecture Quality Attributes

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

Page 6: Effect of Architectural Style on Software Architecture Quality Attributes

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

Page 7: Effect of Architectural Style on Software Architecture Quality Attributes

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

Page 8: Effect of Architectural Style on Software Architecture Quality Attributes

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

Page 9: Effect of Architectural Style on Software Architecture Quality Attributes

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

Page 10: Effect of Architectural Style on Software Architecture Quality Attributes

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

Page 11: Effect of Architectural Style on Software Architecture Quality Attributes

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

Quality Attribute

Which style is the best

Which style is 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 Architecture Style

Which Quality it supports best

Which quality 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

Page 12: Effect of Architectural Style on Software Architecture Quality Attributes

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

Usability Security Maintainability Efficiency Reliability Portability Implementability

Layers Neutral Very Strong

Very Strong Weak Strong Strong Weak

Pipes and Filters

Weak Weak Strong Strong or weak

Very weak Very Strong Weak

Blackboard Neutral Weak Very Strong or very weak

Weak Neutral Neutral Very weak

Model View Control

Very Strong

Neutral Weak Weak Neutral Weak Weak

Presentation Abstraction Control

Very Strong

Neutral Very Strong Very weak Neutral Strong Very weak

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

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

Page 13: Effect of Architectural Style on Software Architecture Quality Attributes

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

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

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

Page 14: Effect of Architectural Style on Software Architecture Quality Attributes

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

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

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