You are previewing Software Architecture and Design Illuminated.
O'Reilly logo
Software Architecture and Design Illuminated

Book Description

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 undergraduate and graduate students delving into this critical area of the software development process. 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. Java is used throughout the book to explain design principles and present case studies. Review questions, exercises, and design assignments round out most chapters and allow students to test themselves on key material.

Table of Contents

  1. Cover Page
  2. Title Page
  3. Copyright Page
  4. Contents
  5. Preface
  6. Chapter 1 - Introduction to Software Architecture
    1. 1.1 - Overview
    2. 1.2 - Software Architecture: Bridging Requirements and Implementation
    3. 1.3 - Architecture Styles
    4. 1.4 - Quality Attributes
    5. 1.5 - Software Architecture Design Guidelines
    6. 1.6 - Summary
    7. 1.7 - Self-Review Questions
  7. Chapter 2 - Software Architecture Design Space
    1. 2.1 - Overview
    2. 2.2 - Types of Software Structures
      1. 2.2.1 - Software Static Structure
      2. 2.2.2 - Software Runtime Structure
      3. 2.2.3 - Software Management Structure
    3. 2.3 - Software Elements
    4. 2.4 - Software Connectors
    5. 2.5 - An Agile Approach to Software Architecture Design
    6. 2.6 - Summary
    7. 2.7 - Self-Review Questions
    8. 2.8 - Exercises
    9. 2.9 - Design Exercises
  8. Chapter 3 - Models for Software Architecture
    1. 3.1 - Overview
    2. 3.2 - UML for Software Architecture
      1. 3.2.1 - Structural Diagrams
      2. 3.2.2 - Behavioral Diagrams
    3. 3.3 - Architecture View Models
      1. 3.3.1 - The Scenario View
      2. 3.3.2 - The Logical or Conceptual View
      3. 3.3.3 - The Development or Module View
      4. 3.3.4 - The Process View
      5. 3.3.5 - The Physical View
      6. 3.3.6 - The User Interface View
    4. 3.4 - Architecture Description Languages (ADL)
    5. 3.5 - Summary
    6. 3.6 - Self-Review Questions
    7. 3.7 - Exercises
    8. 3.8 - Design Exercises
    9. 3.9 - Challenge Exercises
  9. Chapter 4 - Object-Oriented Paradigm
    1. 4.1 - Overview
    2. 4.2 - Introducing the Object-Oriented Paradigm
      1. 4.2.1 - Classes and Objects
      2. 4.2.2 - Relationships
    3. 4.3 - OO Analysis
      1. 4.3.1 - Step 1: Design of a UML use Case Diagram
      2. 4.3.2 - Step 2: Develop an Analysis Class Diagram via Noun Extraction
    4. 4.4 - Oo Design
      1. 4.4.1 - Step 1: Identify Classes—CRC Card
      2. 4.4.2 - Step 2: Construct an Interaction Diagram
      3. 4.4.3 - Step 3: Build a State Machine Diagram
      4. 4.4.4 - Step 4: Class Specification
    5. 4.5 - Design Principles
      1. 4.5.1 - Principle of Decoupling
      2. 4.5.2 - Ensuring Cohesion
      3. 4.5.3 - Open-Closed Principle
    6. 4.6 - Summary
    7. 4.7 - Self-Review Questions
    8. 4.8 - Exercises
    9. 4.9 - Design Exercises
    10. 4.10 - Challenge Exercises
  10. Chapter 5 - Data Flow Architectures
    1. 5.1 - Overview
    2. 5.2 - Batch Sequential
    3. 5.3 - Pipe and Filter Architecture
    4. 5.4 - Process Control Architecture
    5. 5.5 - Summary
    6. 5.6 - Self-Review Questions
    7. 5.7 - Exercises
    8. 5.8 - Design Exercises
    9. 5.9 - Challenge Exercises
  11. Chapter 6 - Data-Centered Software Architecture
    1. 6.1 - Overview
    2. 6.2 - Repository Architecture Style
    3. 6.3 - Blackboard Architecture Style
    4. 6.4 - Summary
    5. 6.5 - Self-Review Questions
    6. 6.6 - Exercises
    7. 6.7 - Design Exercises
    8. 6.8 - Challenge Exercise
  12. Chapter 7 - Hierarchical Architecture
    1. 7.1 - Overview
    2. 7.2 - Main-Subroutine
    3. 7.3 - Master-Slave
    4. 7.4 - Layered
    5. 7.5 - Virtual Machine
    6. 7.6 - Summary
    7. 7.7 - Self-Review Questions
    8. 7.8 - Exercises
    9. 7.9 - Design Exercises
    10. 7.10 - Challenge Exercises
  13. Chapter 8 - Implicit Asynchronous Communication Software Architecture
    1. 8.1 - Overview
    2. 8.2 - Nonbuffered Event-Based Implicit Invocations
    3. 8.3 - Buffered Message-Based Software Architecture
    4. 8.4 - Summary
    5. 8.5 - Self-Review Questions
    6. 8.6 - Exercises
    7. 8.7 - Design Exercises
    8. 8.8 - Challenge Exercise
  14. Chapter 9 - Interaction-Oriented Software Architectures
    1. 9.1 - Overview
    2. 9.2 - Model-View-Controller (MVC)
      1. 9.2.1 - MVC-I
      2. 9.2.2 - MVC-II
    3. 9.3 - Presentation-Abstraction-Control (PAC)
    4. 9.4 - Summary
    5. 9.5 - Self-Review Questions
    6. 9.6 - Exercises
    7. 9.7 - Design Exercises
    8. 9.8 - Challenge Exercises
  15. Chapter 10 - Distributed Architecture
    1. 10.1 - Overview
    2. 10.2 - Client-Server
    3. 10.3 - Multi-tiers
    4. 10.4 - Broker Architecture Style
      1. 10.4.1 - Broker Implementation in the Common Object Request Broker Architecture (CORBA)
      2. 10.4.2 - Message Broker Architecture
    5. 10.5 - Service-Oriented Architecture (SOA)
      1. 10.5.1 - SOA Implementation in Web Services
      2. 10.5.2 - SOA Implementation for Grid Service Computing
    6. 10.6 - Summary
    7. 10.7 - Self-Review Questions
    8. 10.8 - Exercises
    9. 10.9 - Design Exercises
    10. 10.10 - Challenge Exercise
  16. Chapter 11 - Component-Based Software Architecture
    1. 11.1 - Overview
    2. 11.2 - What is a Component?
    3. 11.3 - Principles of Component-Based Design
      1. 11.3.1 - Connections of Components
      2. 11.3.2 - Component-Level Design Guidelines
    4. 11.4 - Summary
    5. 11.5 - Self-Review Questions
    6. 11.6 - Exercises
    7. 11.7 - Design Exercises
    8. 11.8 - Challenge Exercises
  17. Chapter 12 - Heterogeneous Architecture
    1. 12.1 - Overview
    2. 12.2 - Methodology of Architecture Decision
    3. 12.3 - Quality Attributes
    4. 12.4 - Selection of Architecture Styles
    5. 12.5 - Evaluation of Architecture Designs
    6. 12.6 - Case Study: Online Computer Vendor
      1. 12.6.1 - Overall Architecture Design of OCVS
      2. 12.6.2 - Architecture Design of Order Processing Component
      3. 12.6.3 - Architecture Design of Inventory Management
      4. 12.6.4 - Architecture Design of Manufacture and Shipping Component
    7. 12.7 - Summary
    8. 12.8 - Self-Review Questions
    9. 12.9 - Exercises
    10. 12.10 - Design Exercises
    11. 12.11 - Challenge Exercises
  18. Chapter 13 - Architecture of User Interfaces
    1. 13.1 - Overview
    2. 13.2 - Evolution of User Interfaces
    3. 13.3 - Look and Feel (Syntax) of User Interfaces
      1. 13.3.1 - Static Style of User Interfaces
      2. 13.3.2 - Dynamic Style of User Interfaces
      3. 13.3.3 - Customizable Style of User Interfaces
      4. 13.3.4 - No User Interfaces
    4. 13.4 - Usability (Semantics) of User Interfaces
    5. 13.5 - Design Considerations of User Interfaces
    6. 13.6 - Enabling Technology
      1. 13.6.1 - Containers
      2. 13.6.2 - Layout Managers
      3. 13.6.3 - Major UI Components
      4. 13.6.4 - Event Listeners
      5. 13.6.5 - A Case Study
    7. 13.7 - Direct Manipulation
    8. 13.8 - Evaluation of User Interfaces
    9. 13.9 - Summary
    10. 13.10 - Self-Review Questions
    11. 13.11 - Exercises
    12. 13.12 - Challenge Exercises
  19. Chapter 14 - Product Line Architectures
    1. 14.1 - Overview
    2. 14.2 - Introduction and Motivation
      1. 14.2.1 - Software Reuse and Product Lines
      2. 14.2.2 - Methodologies, Processes, and Tools
    3. 14.3 - Product Line Engineering: Design-for-Reuse
    4. 14.4 - Product Development: Design-with-Reuse
      1. 14.4.1 - Product Line Analysis: Domain Models
      2. 14.4.2 - Product Line Design: Design-for-Commonality and Control-of-Variability
      3. 14.4.3 - Product Line Implementation: Configuration Model and Componentbase
      4. 14.4.4 - Heuristics
      5. 14.4.5 - Software Technology for Systematic Reuse
    5. 14.5 - Sample Product Line Analysis
      1. 14.5.1 - Why: Mission and Strategic Goals
      2. 14.5.2 - What: Product Families
      3. 14.5.3 - How: Asset Base
    6. 14.6 - Ultra-Large-Scale Systems
    7. 14.7 - Summary
    8. 14.8 - Self-Review Questions
    9. 14.9 - Exercises
    10. 14.10 - Design Exercises
  20. Index