"Software Architecture and Design Illuminated" by Kai Qian, Xiang Fu, Lixin Tao, Chong-wei Xu, Jorge L. Díaz-Herrera
Jоnеs and Ваrtlеtt Publishers | 2010 | ISBN: 076375420X 9780763754204 B005T4XRZ2 | 190/240 pages | PDF/epub/mobi | 6/3/4 MB
Jоnеs and Ваrtlеtt Publishers | 2010 | ISBN: 076375420X 9780763754204 B005T4XRZ2 | 190/240 pages | PDF/epub/mobi | 6/3/4 MB
This text offers a coherent and integrated approach to the discipline of software architectural design and covers a complete set of important methodologies, architectural styles, design guidelines, and design tools. The Java language is used throughout the book to explain design principles and present case studies. Review questions, exercises, and design assignments round out each chapter and allow students to test themselves on key material.
The SE 2004 of the ACM/IEEE computing curriculum project recommends software design and architecture as one of its ten essential areas of study. Software Architecture and Design Illuminated is the ideal text for upper-level undergraduate and graduate students delving into this important area of the software development process.
Contents
Preface
Chapter 1 Introduction to Software Architecture
1.1 Overview
1.2 Software Architecture: Bridging Requirements and Implementation
1.3 Architecture Styles
1.4 Quality Attributes
1.5 Software Architecture Design Guidelines
1.6 Summary
1.7 Self-Review Questions
Chapter 2 Software Architecture Design Space
2.1 Overview
2.2 Types of Software Structures
2.2.1 Software Static Structure
2.2.2 Software Runtime Structure
2.2.3 Software Management Structure
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
2.8 Exercises
2.9 Design Exercises
Chapter 3 Models for Software Architecture
3.1 Overview
3.2 UML for Software Architecture
3.2.1 Structural Diagrams
3.2.2 Behavioral Diagrams
3.3 Architecture View Models
3.3.1 The Scenario View
3.3.2 The Logical or Conceptual View
3.3.3 The Development or Module View
3.3.4 The Process View
3.3.5 The Physical View
3.3.6 The User Interface View
3.4 Architecture Description Languages (ADL)
3.5 Summary
3.6 Self-Review Questions
3.7 Exercises
3.8 Design Exercises
3.9 Challenge Exercises
Chapter 4 Object-Oriented Paradigm
4.1 Overview
4.2 Introducing the Object-Oriented Paradigm
4.2.1 Classes and Objects
4.2.2 Relationships
4.3 OO Analysis
4.3.1 Step 1: Design of a UML Use Case Diagram
4.3.2 Step 2: Develop an Analysis Class Diagram via Noun Extraction
4.4 OO Design
4.4.1 Step 1: Identify Classes—CRC Card
4.4.2 Step 2: Construct an Interaction Diagram
4.4.3 Step 3: Build a State Machine Diagram
4.4.4 Step 4: Class Specification
4.5 Design Principles
4.5.1 Principle of Decoupling
4.5.2 Ensuring Cohesion
4.5.3 Open-Closed Principle
4.6 Summary
4.7 Self-Review Questions
4.8 Exercises
4.9 Design Exercises
4.10 Challenge Exercises
Chapter 5 Data Flow Architectures
5.1 Overview
5.2 Batch Sequential
5.3 Pipe and Filter Architecture
5.4 Process Control Architecture
5.5 Summary
5.6 Self-Review Questions
5.7 Exercises
5.8 Design Exercises
5.9 Challenge Exercises
Chapter 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
6.8 Challenge Exercise
Chapter 7 Hierarchical 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 Exercises
7.10 Challenge Exercises
Chapter 8 Implicit Asynchronous Communication Software Architecture
8.1 Overview
8.2 Nonbuffered 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 Exercises
8.8 Challenge Exercise
Chapter 9 Interaction-Oriented Software Architectures
9.1 Overview
9.2 Model-View-Controller (MVC)
9.2.1 MVC-I
9.2.2 MVC-II
9.3 Presentation-Abstraction-Control (PAC)
9.4 Summary
9.5 Self-Review Questions
9.6 Exercises
9.7 Design Exercises
9.8 Challenge Exercises
Chapter 10 Distributed Architecture
10.1 Overview
10.2 Client-Server
10.3 Multi-tiers
10.4 Broker Architecture Style
10.4.1 Broker Implementation in the Common Object Request Broker Architecture (CORBA)
10.4.2 Message Broker Architecture
10.5 Service-Oriented Architecture (SOA)
10.5.1 SOA Implementation in Web Services
10.5.2 SOA Implementation for Grid Service Computing
10.6 Summary
10.7 Self-Review Questions
10.8 Exercises
10.9 Design Exercises
10.10 Challenge Exercise
Chapter 11 Component-Based Software Architecture
11.1 Overview
11.2 What Is a Component?
11.3 Principles of Component-Based Design
11.3.1 Connections of Components
11.3.2 Component-Level Design Guidelines
11.4 Summary
11.5 Self-Review Questions
11.6 Exercises
11.7 Design Exercises
11.8 Challenge Exercises
Chapter 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: Online Computer Vendor
12.6.1 Overall Architecture Design of OCVS
12.6.2 Architecture Design of Order Processing Component
12.6.3 Architecture Design of Inventory Management
12.6.4 Architecture Design of Manufacture and Shipping Component
12.7 Summary
12.8 Self-Review Questions
12.9 Exercises
12.10 Design Exercises
12.11 Challenge Exercises
Chapter 13 Architecture of User Interfaces
13.1 Overview
13.2 Evolution of User Interfaces
13.3 Look and Feel (Syntax) of User Interfaces
13.3.1 Static Style of User Interfaces
13.3.2 Dynamic Style of User Interfaces
13.3.3 Customizable Style of User Interfaces
13.3.4 No User Interfaces
13.4 Usability (Semantics) of User Interfaces
13.5 Design Considerations of User Interfaces
13.6 Enabling Technology
13.6.1 Containers
13.6.2 Layout Managers
13.6.3 Major UI Components
13.6.4 Event Listeners
13.6.5 A Case Study
13.7 Direct Manipulation
13.8 Evaluation of User Interfaces
13.9 Summary
13.10 Self-Review Questions
13.11 Exercises
13.12 Challenge Exercises
Chapter 14 Product Line Architectures
14.1 Overview
14.2 Introduction and Motivation
14.2.1 Software Reuse and Product Lines
14.2.2 Methodologies, Processes, and Tools
14.3 Product Line Engineering: Design-for-Reuse
14.4 Product Development: Design-with-Reuse
14.4.1 Product Line Analysis: Domain Models
14.4.2 Product Line Design: Design-for-Commonality and Control-of-Variability
14.4.3 Product Line Implementation: Configuration Model and Componentbase
14.4.4 Heuristics
14.4.5 Software Technology for Systematic Reuse
14.5 Sample Product Line Analysis
14.5.1 WHY: Mission and Strategic Goals
14.5.2 WHAT: Product Families
14.5.3 HOW: Asset Base
14.6 Ultra-Large-Scale Systems
14.7 Summary
14.8 Self-Review Questions
14.9 Exercises
14.10 Design Exercises
Index
with TOC BookMarkLinks