Software Architecture Design - Methodology and Styles

ISBN: 1-58874-621-6

Stipes Publishing L.L.C.

Copyright © 2006 Lixin Tao, Xiang Fu and Kai Qian


Book Features

This book provides a smooth and practical introduction to the software architecture design principles and methodologies. It is a proven textbook for software engineering and computer science programs at both undergraduate and graduate levels. It is also an excellent introduction and reference book for software analysts and designers.

The key features of this book:

About Authors

Lixin Tao, PhD, IEEE senior member, professor of computer science at Pace University in New York . He graduated with PhD in computer science and information systems from University of Pennsylvania in 1988. His research interests include Internet computing, component-based software engineering, parallel and distributed computing, and combinatorial optimization. Dr. Tao has published extensively in his research areas, and taught software engineering courses at both undergraduate and graduate levels. He was architect for multiple large software projects with IBM.

Xiang Fu, PhD, ACM member, assistant professor at Georgia Southwestern State University. He received his PhD in Computer Science from the University of California at Santa Barbara in 2004. His major research interests include web services and formal verification. He is involved in many research and industry projects that are related to service-oriented architectures including automated verifier for BPEL web services, predicate abstraction module of action verifier, and online computer games. He taught software engineering related courses at both undergraduate and graduate levels. He has published extensively in the software verification and web service areas.

Kai Qian, PhD, professor of computer science & software engineering at Southern Polytechnic State University. He got his Ph.D in computer science & engineering from University of Nebraska in 1990. He has taught software engineering and software architecture design for many years. He has coauthored the books of ˇ°Component-Oriented Programmingˇ± and ˇ°Java Web Development Illuminatedˇ± since 2005. Dr. Qian has published extensively in various professional journals and conference proceedings in this area.

Table of Contents

1 Introduction to Software Architecture
    1.1 Overview
    1.2 Software Architecture: B ridging Software Requirement and Software Implementation
    1.3 Architecture Styles
    1.4 Quality Attributes
    1.5 Software Architecture Design Guidelines
    1.6 Summary
    1.7 Self-Review Questions

2 Software Architecture Design Space
    2.1 Overview
    2.2 Types of Software Structures
    2.3 Software Elements
    2.4 Software Connectors
    2.5 An Agile Approach to Software Architecture Design
    2.6 Summary
    2.7 Self-Review Questions

3 Models for Software Architecture
    3.1 Overview
    3.2 UML for Software Architecture
    3.3 Architecture View Models
    3.4 Architectural Description Languages (ADL)
    3.5 Summary
    3.6 Self-Review Questions
    3.7 Exercises
    3.8 Design Exercises

4 Object Oriented Architecture
    4.1 Overview
    4.2 Introduction of Object Orientation
    4.3 OO Analysis and Design
    4.4 Design Principles
    4.5 Summary
    4.6 Self-Review Questions
    4.7 Exercises
    4.8 Design Exercises

5 Data Flow Architecture
    5.1 Overview
    5.2 Batch Sequential
    5.3 Pipe & Filter A rchitecture
    5.4 Process-Control Architecture
    5.5 Summary
    5.6 Self-Review Questions
    5.7 Exercises
    5.8 Design Exercises

6 Data Centered Software Architecture
    6.1 Overview
    6.2 Repository Architecture Style
    6.3 Blackboard Architecture Style
    6.4 Summary
    6.5 Self-Review Questions
    6.6 Exercises
    6.7 Design Exercises

7 Hierarchy Architecture
    7.1 Overview
    7.2 Main/Subroutine Software Architecture
    7.3 Master/Slaves Software Architecture
    7.4 Layered A rchitecture
    7.5 Virtual Machine
    7.6 Summary
    7.7 Self-Review Questions
    7.8 Exercises
    7.9 Design and Exercises

8 Implicit Asynchronous Communication Software Architecture
    8.1 Overview
    8.2 Non-Buffered Event-Based Implicit Invocations
    8.3 Buffered Message-Based Software Architecture
    8.4 Summary
    8.5 Self-Review Questions
    8.6 Exercises
    8.7 Design and Exercises

9 Interaction Oriented Software Architecture
    9.1 Overview
    9.2 Model-View-Controller
    9.3 Presentation-Abstraction-Control (PAC) Architecture
    9.4 Summary
    9.5 Self-Review Questions
    9.6 Exercises
    9.7 Design Exercises

10 Distributed Architecture
    10.1 Introduction
    10.2 Client/ S erver
    10.3 Multi-tier
    10.5 Service-Oriented Architecture (SOA)
    10.6 Summary
    10.7 Self-Review Questions
    10.8 Exercises
    10.9 Design Exercises

11 Component- B ased Software Architecture
    11.1 Overview
    11.2 What is a Component
    11.3 Principles of Component- B ased D esign
    11.4 Summary
    11.5 Self-Review Questions
    11.6 Exercises
    11.7 Design Exercises

12 Heterogeneous Architecture
    12.1 Overview
    12.2 Methodology of Architecture Decision
    12.3 Quality Attributes
    12.4 Selection of Architecture Styles
    12.5 Evaluation of Architecture Designs
    12.6 Case Study: an Online Computer Vendor Component
    12.7 Summary
    12.8 Self-Review Questions
    12.9 Exercises
    12.10 Design Exercises



Software architecture has started to receive focus since the last decade. It is becoming clearer that an early and careful architecture design can greatly reduce the failure rates of software projects. A good architecture design partitions the functional requirements of a software system into a manageable set of interacting components. Quality attributes such as efficiency, usability, modifiability, reliability, and security can be verified and estimated over the architecture design before any code is produced. As the blueprint of a software system, an architecture design allows system analysts and software architects to communicate effectively with stakeholders. It also sets the grounds for the subsequent software design process. The software design process furnishes the details of each component. Then the detailed design can be implemented via coding, which is followed by debugging, testing, and maintenance.

The new standards for Soft w are Engineering (SWE) curriculum require all SWE programs to teach software architecture and design as a core. For example, the SE 2004 (Software Engineering 2004,, formally known as CCSE (Computing Curriculum Software Engineering), recommends software design (which includes architecture) as one of its ten essential areas. The ACM Computing Curricula 2004 (CC2004) Recommendation Draft recommends software design as the second highest rank topic for software engineering major and the fourth highest rank topic for Computer Science (CS) major (the details of this recommendation draft is available at More and more computer science degree programs are also offering software architecture classes.

This book offers a coherent and integrated approach to the discipline of software architecture and design. It is based on rich practical examples and case studies. The book covers a complete set of important software design methodologies, architectural styles, design guidelines, and design tools. All of the authors have taught these topics in related undergraduate and graduate courses. They have practiced software architecture design in many research and industry projects in the past. Java is used throughout the book to explain design principles and present case studies. The authors provide review questions and answer keys, exercises, and design assignments at the end of each chapter.

This book is designed as a textbook of software architecture design courses for upper-level undergraduate or graduate students. It can also be used as a reference book for software engineering course s . Students majoring in software engineering or computer science, who have completed the introductory programming language course sequence (CS1, CS2), can read this book without difficulties. Professionals in the software industry who desire a coherent introduction to software architecture and design will also get benefits from this book.

The book is organized in four parts.

Part1 includes C hapters 1, 2 and 3. It serves as an introduction to software architecture design. General concepts and guidelines of software architecture design, including software system structure decomposition, sub-system, software attributes, taxonomy of software architectural styles, the UML analysis and design tools, and Architectural Description L anguage s (ADL), are covered in this part .

Part 2 consists of one single chapter ¨C C hapter 4. It is dedicated to the Object-Oriented software design methodology. The OO methodology can be applied to all architectural styles. It is frequently used in detailed designs and is well supported by UML tools.

Part 3 contains C hapter 5 through C hapter 11. This part covers all architectural styles in detail, including but not limited to: data flow architectures (e.g., batch sequential, pipe & filter, and process control), data centric architectures (e.g., data repository, blackboard), hierarchical architectures (e.g., main/subroutine, master/slave s , layered, virtual machine), implicit asynchronous communication architectures (e.g., event-based, buffered messaging), interaction architectures (e.g., model-view-controller), distributed architectures (e.g., client/server, service oriented architecture), and component based architecture.

Part 4 is a case study chapter, which discusses the guidelines of making architectural decisions and presents a comprehensive case study that integrates heterogeneous architectural styles. An online computer vendor case is explored in detail.

Your feedbacks and comments are welcome. You can reach us at, , and

Order Information

Stipes Publishing L.L.C.
204 W. University Avenue
Champaign, IL 61820
P.O. Box 526
Champaign, IL 61824-0526



Back to Dr. Lixin Tao's Home Page