1 Introduction to Software Architecture
1.1 Overview
1.2 Software Architecture: Bridging Software Requirement
and Software Implementation
1.3 Architectural Styles
1.4 Quality Attributes
1.5 Guidelines for Software Architectural Design
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 Views
3.4 Architectural Description Languages (ADL)
3.5 Summary
3.6 Self-Review Questions
3.7 Exercises
3.8 Design Exercises
4 Object Oriented Paradigm
4.1 Overview
4.2 Introducing Object Oriented Paradigm
4.3 OO Analysis
4.4 OO Design
4.5 Design Principles
4.6 Summary
4.7 Self-Review Questions
4.8 Exercises
4.9 Design Exercises
4.10 Challenging Exercises
5 Data Flow Architecture
5.1 Overview
5.2 Batch Sequential
5.3 Pipe & Filter Architecture
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
7.3 Master/Slave
7.4 Layered
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(MVC)
9.3 Presentation-Abstraction-Control (PAC)
9.4 Summary
9.5 Self-Review Questions
9.6 Exercises
9.7 Design Exercises
10 Distributed Architecture
10.1 Introduction
10.2 Client/Server
10.3 Multi-tiers
10.4 Broker Architectural Style
10.5 Service-Oriented Architecture (SOA)
10.6 Summary
10.7 Self-Review Questions
10.8 Exercises
10.9 Design Exercises
11 Component-Based Software Architecture
11.1 Overview
11.2 What is a Component
11.3 Principles of Component-Based Design
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 Architectural Styles
12.5 Evaluation of Architecture Designs
12.6 Case Study: Online Computer Vendor
12.7 Summary
12.8 Self-Review Questions
12.9 Exercises
12.10 Design Exercises
12.11 Challenging Exercises
13 Architecture of Graphical User Interfaces
13.1 Overview
13.2 Evolution of User Interfaces
13.3 Look-and-Feel (Syntax) of User Interfaces
13.4 Usability (Semantics) of User Interfaces
13.5 Design Considerations of User Interfaces
13.6 Enabling Technology
13.7 Direct Manipulation
13.8 Evaluation of User Interfaces
13.9 Summary
13.10 Self-Review Questions
13.11 Exercises
13.12 Design Exercises
14 Product Line Architectures
14.1 Overview
14.2 Introduction and Motivation
14.3 Domain Engineering: Institutionalizing Software Reuse
14.4 Product Line Architectures (PLA)
14.5 A Product Line Analysis Example
14.6 Summary
14.7 Self-Review Questions
14.8 Exercises
14.9 Design exercises