Next Section

Software Architecture in Practice, Second Edition

This award-winning book, substantially updated to reflect the latest developments in the field, introduces the concepts and best practices of software architecture-how a software system is structured and how that system's elements are meant to interact. Distinct from the details of implementation, algorithm, and data representation, an architecture holds the key to achieving system quality, is a reusable asset that can be applied to subsequent systems, and is crucial to a software organization's business strategy.

Drawing on their own extensive experience, the authors cover the essential technical topics for designing, specifying, and validating a system. They also emphasize the importance of the business context in which large systems are designed. Their aim is to present software architecture in a real-world setting, reflecting both the opportunities and constraints that companies encounter. To that end, case studies that describe successful architectures illustrate key points of both technical and organizational discussions.

Topics new to this edition include:

If you design, develop, or manage the building of large software systems (or plan to do so), or if you are interested in acquiring such systems for your corporation or government agency, use Software Architecture in Practice, Second Edition, to get up to speed on the current state of software architecture.


Table of Contents

      What's New in the Second Edition
    Reader's Guide
      Parts and Chapters
      Part One: Envisioning an Architecture
      Part Two: Creating an Architecture
      Part Three: Analyzing an Architecture
      Part Four: Moving from One System to Many
      Case Study Organization
      Threads Through the Book
    Part One.  Envisioning Architecture
      Chapter 1.  The Architecture Business Cycle
      Section 1.1.  Where Do Architectures Come From?
      Section 1.2.  Software Processes and the Architecture Business Cycle
      Section 1.3.  What Makes a "Good" Architecture?
      Section 1.4.  Summary
      Section 1.5.  Discussion Questions
      Chapter 2.  What Is Software Architecture?
      Section 2.1.  What Software Architecture Is and What It Isn't
      Section 2.2.  Other Points of View
      Section 2.3.  Architectural Patterns, Reference Models, and Reference Architectures
      Section 2.4.  Why Is Software Architecture Important?
      Section 2.5.  Architectural Structures and Views
      Section 2.6.  Summary
      Section 2.7.  For Further Reading
      Section 2.8.  Discussion Questions
      Chapter 3.  A-7E Avionics System: A Case Study in Utilizing Architectural Structures
      Section 3.1.  Relationship to the Architecture Business Cycle
      Section 3.2.  Requirements and Qualities
      Section 3.3.  Architecture for the A-7E Avionics System
      Section 3.4.  Summary
      Section 3.5.  For Further Reading
      Section 3.6.  Discussion Questions
    Part Two.  Creating an Architecture
      Chapter 4.  Understanding Quality Attributes
      Section 4.1.  Functionality and Architecture
      Section 4.2.  Architecture and Quality Attributes
      Section 4.3.  System Quality Attributes
      Section 4.4.  Quality Attribute Scenarios in Practice
      Section 4.5.  Other System Quality Attributes
      Section 4.6.  Business Qualities
      Section 4.7.  Architecture Qualities
      Section 4.8.  Summary
      Section 4.9.  For Further Reading
      Section 4.10.  Discussion Questions
      Chapter 5.  Achieving Qualities
      Section 5.1.  Introducing Tactics
      Section 5.2.  Availability Tactics
      Section 5.3.  Modifiability Tactics
      Section 5.4.  Performance Tactics
      Section 5.5.  Security Tactics
      Section 5.6.  Testability Tactics
      Section 5.7.  Usability Tactics
      Section 5.8.  Relationship of Tactics to Architectural Patterns
      Section 5.9.  Architectural Patterns and Styles
      Section 5.10.  Summary
      Section 5.11.  Discussion Questions
      Section 5.12.  For Further Reading
      Chapter 6.  Air Traffic Control: A Case Study in Designing for High Availability
      Section 6.1.  Relationship to the Architecture Business Cycle
      Section 6.2.  Requirements and Qualities
      Section 6.3.  Architectural Solution
      Section 6.4.  Summary
      Section 6.5.  For Further Reading
      Section 6.6.  Discussion Questions
      Chapter 7.  Designing the Architecture
      Section 7.1.  Architecture in the Life Cycle
      Section 7.2.  Designing the Architecture
      Section 7.3.  Forming the Team Structure
      Section 7.4.  Creating a Skeletal System
      Section 7.5.  Summary
      Section 7.6.  For Further Reading
      Section 7.7.  Discussion Questions
      Chapter 8.  Flight Simulation: A Case Study in an Architecture for Integrability
      Section 8.1.  Relationship to the Architecture Business Cycle
      Section 8.2.  Requirements and Qualities
      Section 8.3.  Architectural Solution
      Section 8.4.  Summary
      Section 8.5.  For Further Reading
      Section 8.6.  Discussion Questions
      Chapter 9.  Documenting Software Architectures
      Section 9.1.  Uses of Architectural Documentation
      Section 9.2.  Views
      Section 9.3.  Choosing the Relevant Views
      Section 9.4.  Documenting a View
      Section 9.5.  Documentation across Views
      Section 9.6.  Unified Modeling Language
      Section 9.7.  Summary
      Section 9.8.  For Further Reading
      Section 9.9.  Discussion Questions
      Chapter 10.  Reconstructing Software Architectures
      Section 10.1.  Introduction
      Section 10.2.  Information Extraction
      Section 10.3.  Database Construction
      Section 10.4.  View Fusion
      Section 10.5.  Reconstruction
      Section 10.6.  Example
      Section 10.7.  Summary
      Section 10.8.  For Further Reading
      Section 10.9.  Discussion Questions
    Part Three.  Analyzing Architectures
      Chapter 11.  The ATAM: A Comprehensive Method for Architecture Evaluation
      Section 11.1.  Participants in the ATAM
      Section 11.2.  Outputs of the ATAM
      Section 11.3.  Phases of the ATAM
      Section 11.4.  The Nightingale System: A Case Study in Applying the ATAM
      Section 11.5.  Summary
      Section 11.6.  For Further Reading
      Section 11.7.  Discussion Questions
      Chapter 12.  The CBAM: A Quantitative Approach to Architecture Design Decision Making
      Section 12.1.  Decision-Making Context
      Section 12.2.  The Basis for the CBAM
      Section 12.3.  Implementing the CBAM
      Section 12.4.  Case Study: The NASA ECS Project
      Section 12.5.  Results of the CBAM Exercise
      Section 12.6.  Summary
      Section 12.7.  For Further Reading
      Section 12.8.  Discussion Questions
      Chapter 13.  The World Wide Web
A Case Study in Interoperability
      Section 13.1.  Relationship to the Architecture Business Cycle
      Section 13.2.  Requirements and Qualities
      Section 13.3.  Architectural Solution
      Section 13.4.  Another Cycle through the ABC: The Evolution of Web-Based E-Commerce Architectures
      Section 13.5.  Achieving Quality Goals
      Section 13.6.  The Architecture Business Cycle Today
      Section 13.7.  Summary
      Section 13.8.  For Further Reading
      Section 13.9.  Discussion Questions
    Part Four.  Moving From One System to Many
      Chapter 14.  Software Product Lines: Re-using Architectural Assets
      Section 14.1.  Overview
      Section 14.2.  What Makes Software Product Lines Work?
      Section 14.3.  Scoping
      Section 14.4.  Architectures for Product Lines
      Section 14.5.  What Makes Software Product Lines Difficult?
      Section 14.6.  Summary
      Section 14.7.  For Further Reading
      Section 14.8.  Discussion Question
      Chapter 15.  CelsiusTech: A Case Study in Product Line Development
      Section 15.1.  Relationship to the Architecture Business Cycle
      Section 15.2.  Requirements and Qualities
      Section 15.3.  Architectural Solution
      Section 15.4.  Summary
      Section 15.5.  For Further Reading
      Section 15.6.  Discussion Questions
      Chapter 16.  J2EE/EJB: A Case Study of an Industry-Standard Computing Infrastructure
      Section 16.1.  Relationship to the Architecture Business Cycle
      Section 16.2.  Requirements and Qualities
      Section 16.3.  Architectural Solution
      Section 16.4.  System Deployment Decisions
      Section 16.5.  Summary
      Section 16.6.  For Further Reading
      Section 16.7.  Discussion Questions
      Chapter 17.  The Luther Architecture: A Case Study in Mobile Applications Using J2EE
      Section 17.1.  Relationship to the Architecture Business Cycle
      Section 17.3.  Architectural Solution
      Section 17.4.  How Luther Achieved Its Quality Goals
      Section 17.5.  Summary
      Section 17.6.  For Further Reading
      Section 17.7.  Discussion Questions
      Chapter 18.  Building Systems from Off-the-Shelf Components
      Section 18.1.  Impact of Components on Architecture
      Section 18.2.  Architectural Mismatch
      Section 18.3.  Component-Based Design as Search
      Section 18.4.  ASEILM Example
      Section 18.5.  Summary
      Section 18.6.  Further Reading
      Chapter 19.  Software Architecture in the Future
      Section 19.1.  The Architecture Business Cycle Revisited
      Section 19.2.  Creating an Architecture
      Section 19.3.  Architecture within the Life Cycle
      Section 19.4.  The Impact of Commercial Components
      Section 19.5.  Summary


  Next Section