A Survey of Software Architecture Approaches

A Survey of Software Architecture Approaches

Kendra M.L. Cooper (The University of Texas at Dallas, USA), Lirong Dai (Seattle University, USA), Renee Steiner (Intervoice, Inc., USA) and Rym Zalila Mili (The University of Texas at Dallas, USA)
Copyright: © 2009 |Pages: 33
DOI: 10.4018/978-1-59904-699-0.ch009
OnDemand PDF Download:


This chapter presents a survey of software architecture approaches. It is intended for a broad audience of students, practitioners, and researchers, in particular those who may be new to the area of software architecture. The chapter begins with a brief history of software architecture as a discipline. This is followed by a survey of established and emerging software architecture approaches. In the section on established approaches software architecture concepts are presented, which include software architecture views, decomposition strategies, description languages, and patterns; overviews of two established approaches (structured design and object-oriented design) are provided. In the section on emerging approaches, agent-, aspect-, and component-oriented approaches are included. For each of these approaches an overview, survey of the literature in the area, and a discussion are presented. The discussion includes current research issues in the community. The conclusions provide a summary of the chapter; future research directions follow.
Chapter Preview


Software engineering has a number of established activities used in developing systems including requirements engineering, designing the software at multiple levels of abstraction, implementing, testing, and so forth. One of the design activities is to create a software architecture, which realizes the functional and nonfunctional requirements for the system. Today, a software architecture is generally understood to be a collection of components, which have externally visible properties (i.e., the provided services, performance characteristics, fault handling, shared resource usage, etc.) and the relationships among the components (Abowd, 1998; Clements, 2003; IEEE 1471, 2000; Shaw & Garlan, 1996). The concept of software architecture is beyond the algorithms and data structures of the computation and focuses on designing and specifying the overall system’s gross organization and global control structure; protocols for communication, synchronization, and data access; assignment of functionality to design elements; physical distribution; composition of design elements; scaling and performance and selection among design alternatives.

The discipline of software architecture has its roots in the early work of Dijkstra (1968) and Parnas (1972), where the importance of well structured, or modularized, system was described. The term architecture was used by Brooks and Iverson in the 1960s (1969); they defined it as the “conceptual structure of a computer...as seen by the programmer.” This work has made a clear distinction between the description of what each module should do and its implementation, a distinction that remains in place today. As the discipline matured, topics within software architecture have received substantial attention, including the definition of architectural styles, or patterns, architecture description languages, and approaches to analyze software architectures. A broad survey of the history of the discipline is available in Shaw and Garlan (2006), providing a valuable organization and presentation of software architecture work. Due to its breadth, however, more recent architectures are not included (e.g., aspect-oriented architecture) or receive light treatment (e.g., agent- and service-oriented). This chapter proposes a complementary comparison, which surveys more recent approaches in more depth. Established approaches and three newer approaches (aspect-oriented, agent-oriented, and component-oriented architecture) are included. The three newer approaches have been selected based on the research interests of the authors; the survey is not exhaustive and could be extended in the future to include additional approaches, for example, supporting the design of dynamically adaptable systems.

Each of these emerging approaches included in the survey has been proposed to offer a distinct improvement to the established approaches. The aspect-oriented approach improves the ability to modularize capabilities, such as security, availability, and so forth, in an architecture that would typically crosscut many parts of a more traditional design; this improves the maintainability of the design. The agent-oriented approach improves the ability to model the social complexity of systems, as modern systems may need to operate in distributed environment composed of diverse, interacting business organizations that have their own goals and strategies. The component-oriented approach improves the ability to rapidly deploy high quality systems in order to meet the needs of quickly changing business environments. The approaches included in the survey for these emerging software architecture approaches have been selected because they provide a (standardized) reference model, a novel software architecture solution, or a software architecture methodology. This survey is expected to be of interest to students, researchers and practitioners, in particular those who may be new to the area of software architecture.

Complete Chapter List

Search this Book:
Table of Contents
Pierre F. Tiako
Chapter 1
Alf Inge Wang, Carl-Fredrik Sørensen
This chapter presents a framework for differentiated process support in large software projects. Process support can be differentiated in different... Sample PDF
Differentiated Process Support for Large Software Projects
Chapter 2
Holger Giese, Stefan Henkler, Martin Hirsch, Vladimir Rubin, Matthias Tichy
Software has become the driving force in the evolution of many systems, such as embedded systems (especially automotive applications)... Sample PDF
Modeling Techniques for Software-Intensive Systems
Chapter 3
Jaroslav Král, Michal Žemlicka
Software intensive systems are systems strongly depending on supporting software. The software is typically large, complex, and it as a rule... Sample PDF
Service Orientation and Software-Intensive Systems
Chapter 4
Alf Inge Wang, Carl-Fredrik Sørensen, Hien Nam Le, Heri Ramampiaro, Mads Nygård, Reidar Conradi
This chapter describes a requirement analysis framework that may be used as a tool for developing client-server systems for mobile workers. The... Sample PDF
From Scenarios to Requirements in Mobile Client-Server Systems
Chapter 5
Gan Deng, Douglas C. Schmidt, Aniruddha Gokhale, Jeff Gray, Yuehua Lin, Gunther Lenz
This chapter describes our approach to model-driven engineering (MDE)-based product line architectures (PLAs) and presents a solution to address the... Sample PDF
Evolution in Model-Driven Software Product-Line Architectures
Chapter 6
Ståle Walderhaug, Erlend Stav, Ulrik Johansen, Gøran K. Olsen
This chapter introduces a tracability solution for use in a model-driven software development approach. It argues that a trace model based on a... Sample PDF
Traceability in Model-Driven Software Development
Chapter 7
Gerhard Chroust, Erwin Schoitsch
When designing a complex software-intensive system it is unavoidable to make some a-priori basic assumptions about its architecture. We introduce... Sample PDF
Choosing Basic Architectural Alternatives
Chapter 8
Rafael Capilla, Margarita Martínez, Francisco Nava, Cristina Muñoz
Virtual reality systems are a kind of complex software systems that need a lot of effort and resources during its development phase. Because rigid... Sample PDF
Architecting Virtual Reality Systems
Chapter 9
Kendra M.L. Cooper, Lirong Dai, Renee Steiner, Rym Zalila Mili
This chapter presents a survey of software architecture approaches. It is intended for a broad audience of students, practitioners, and researchers... Sample PDF
A Survey of Software Architecture Approaches
Chapter 10
Daniel G. Waddington, Nilabja Roy, Douglas C. Schmidt
As software-intensive systems become larger, more parallel, and more unpredictable the ability to analyze their behavior is increasingly important.... Sample PDF
Dynamic Analysis and Profiling of Multithreaded Systems
Chapter 11
James H. Hill, Douglas C. Schmidt, John M. Slaby
This chapter introduces the next generation of system execution modeling tools designed around modeldriven engineering (MDE) coupled with... Sample PDF
Evaluating Quality of Service for Enterprise Distributed Systems
Chapter 12
Jules White, Douglas C. Schmidt, Andrey Nechypurenko, Egon Wuchner
Model-driven development is one approach to combating the complexity of designing software intensive systems. A model-driven approach allows... Sample PDF
Reducing the Complexity of Modeling Large Software Systems
Chapter 13
Enis Afgan, Purushotham Bangalore, Jeff Gray
Grid computing environments are dynamic and heterogeneous in nature. In order to realize applicationspecific Quality of Service agreements within a... Sample PDF
A Domain-Specific Language for Describing Grid Applications
Chapter 14
Jeff Elpern, Sergiu Dascalu
Traditional software engineering methodologies have mostly evolved from the environment of proprietary, large-scale software systems. Here, software... Sample PDF
A Framework for Understanding the Open Source Revolution
Chapter 15
Syed Ahsan, Abad Shah
With the proliferation of Web, a tremendous amount of data is available to researchers and scientists in computational sciences, business... Sample PDF
Quality Metrics for Evaluating Data Provenance
Chapter 16
Krishnakumar Balasubramanian, Douglas C. Schmidt, Zoltán Molnár, Ákos Lédeczi
With the emergence of commercial-off-the-shelf (COTS) component middleware technologies software system integrators are increasing faced with the... Sample PDF
System Integration Using Model-Driven Engineering
About the Contributors