Software Architecture in Practice, 4th Edition

Book description

The Definitive, Practical, Proven Guide to Architecting Modern Software--Fully Updated with New Content on Mobility, the Cloud, Energy Management, DevOps, Quantum Computing, and More

Updated with eleven new chapters, Software Architecture in Practice, Fourth Edition, thoroughly explains what software architecture is, why it's important, and how to design, instantiate, analyze, evolve, and manage it in disciplined and effective ways.

Three renowned software architects cover the entire lifecycle, presenting practical guidance, expert methods, and tested models for use in any project, no matter how complex. You'll learn how to use architecture to address accelerating growth in requirements, system size, and abstraction, and to manage emergent quality attributes as systems are dynamically combined in new ways.

With insights for utilizing architecture to optimize key quality attributes--including performance, modifiability, security, availability, interoperability, testability, usability, deployability, and more--this guide explains how to manage and refine existing architectures, transform them to solve new problems, and build reusable architectures that become strategic business assets.

  • Discover how architecture influences (and is influenced by) technical environments, project lifecycles, business profiles, and your own practices

  • Leverage proven patterns, interfaces, and practices for optimizing quality through architecture

  • Architect for mobility, the cloud, machine learning, and quantum computing

  • Design for increasingly crucial attributes such as energy efficiency and safety

  • Scale systems by discovering architecturally significant influences, using DevOps and deployment pipelines, and managing architecture debt

  • Understand architecture's role in the organization, so you can deliver more value

Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details..

Table of contents

  1. Cover Page
  2. About This eBook
  3. Halftitle Page
  4. Title Page
  5. Copyright Page
  6. Contents
  7. Preface
  8. Acknowledgments
  9. Part I: Introduction
    1. 1. What Is Software Architecture?
      1. 1.1 What Software Architecture Is and What It Isn’t
      2. 1.2 Architectural Structures and Views
      3. 1.3 What Makes a “Good” Architecture?
      4. 1.4 Summary
      5. 1.5 For Further Reading
      6. 1.6 Discussion Questions
    2. 2. Why Is Software Architecture Important?
      1. 2.1 Inhibiting or Enabling a System’s Quality Attributes
      2. 2.2 Reasoning about and Managing Change
      3. 2.3 Predicting System Qualities
      4. 2.4 Communication among Stakeholders
      5. 2.5 Early Design Decisions
      6. 2.6 Constraints on Implementation
      7. 2.7 Influences on Organizational Structure
      8. 2.8 Enabling Incremental Development
      9. 2.9 Cost and Schedule Estimates
      10. 2.10 Transferable, Reusable Model
      11. 2.11 Architecture Allows Incorporation of Independently Developed Elements
      12. 2.12 Restricting the Vocabulary of Design Alternatives
      13. 2.13 A Basis for Training
      14. 2.14 Summary
      15. 2.15 For Further Reading
      16. 2.16 Discussion Questions
  10. Part II: Quality Attributes
    1. 3. Understanding Quality Attributes
      1. 3.1 Functionality
      2. 3.2 Quality Attribute Considerations
      3. 3.3 Specifying Quality Attribute Requirements: Quality Attribute Scenarios
      4. 3.4 Achieving Quality Attributes through Architectural Patterns and Tactics
      5. 3.5 Designing with Tactics
      6. 3.6 Analyzing Quality Attribute Design Decisions: Tactics-Based Questionnaires
      7. 3.7 Summary
      8. 3.8 For Further Reading
      9. 3.9 Discussion Questions
    2. 4. Availability
      1. 4.1 Availability General Scenario
      2. 4.2 Tactics for Availability
      3. 4.3 Tactics-Based Questionnaire for Availability
      4. 4.4 Patterns for Availability
      5. 4.5 For Further Reading
      6. 4.6 Discussion Questions
    3. 5. Deployability
      1. 5.1 Continuous Deployment
      2. 5.2 Deployability
      3. 5.3 Deployability General Scenario
      4. 5.4 Tactics for Deployability
      5. 5.5 Tactics-Based Questionnaire for Deployability
      6. 5.6 Patterns for Deployability
      7. 5.7 For Further Reading
      8. 5.8 Discussion Questions
    4. 6. Energy Efficiency
      1. 6.1 Energy Efficiency General Scenario
      2. 6.2 Tactics for Energy Efficiency
      3. 6.3 Tactics-Based Questionnaire for Energy Efficiency
      4. 6.4 Patterns
      5. 6.5 For Further Reading
      6. 6.6 Discussion Questions
    5. 7. Integrability
      1. 7.1 Evaluating the Integrability of an Architecture
      2. 7.2 General Scenario for Integrability
      3. 7.3 Integrability Tactics
      4. 7.4 Tactics-Based Questionnaire for Integrability
      5. 7.5 Patterns
      6. 7.6 For Further Reading
      7. 7.7 Discussion Questions
    6. 8. Modifiability
      1. 8.1 Modifiability General Scenario
      2. 8.2 Tactics for Modifiability
      3. 8.3 Tactics-Based Questionnaire for Modifiability
      4. 8.4 Patterns
      5. 8.5 For Further Reading
      6. 8.6 Discussion Questions
    7. 9. Performance
      1. 9.1 Performance General Scenario
      2. 9.2 Tactics for Performance
      3. 9.3 Tactics-Based Questionnaire for Performance
      4. 9.4 Patterns for Performance
      5. 9.5 For Further Reading
      6. 9.6 Discussion Questions
    8. 10. Safety
      1. 10.1 Safety General Scenario
      2. 10.2 Tactics for Safety
      3. 10.3 Tactics-Based Questionnaire for Safety
      4. 10.4 Patterns for Safety
      5. 10.5 For Further Reading
      6. 10.6 Discussion Questions
    9. 11. Security
      1. 11.1 Security General Scenario
      2. 11.2 Tactics for Security
      3. 11.3 Tactics-Based Questionnaire for Security
      4. 11.4 Patterns for Security
      5. 11.5 For Further Reading
      6. 11.6 Discussion Questions
    10. 12. Testability
      1. 12.1 Testability General Scenario
      2. 12.2 Tactics for Testability
      3. 12.3 Tactics-Based Questionnaire for Testability
      4. 12.4 Patterns for Testability
      5. 12.5 For Further Reading
      6. 12.6 Discussion Questions
    11. 13. Usability
      1. 13.1 Usability General Scenario
      2. 13.2 Tactics for Usability
      3. 13.3 Tactics-Based Questionnaire for Usability
      4. 13.4 Patterns for Usability
      5. 13.5 For Further Reading
      6. 13.6 Discussion Questions
    12. 14. Working with Other Quality Attributes
      1. 14.1 Other Kinds of Quality Attributes
      2. 14.2 Using Standard Lists of Quality Attributes—Or Not
      3. 14.3 Dealing with “X-Ability”: Bringing a New QA into the Fold
      4. 14.4 For Further Reading
      5. 14.5 Discussion Questions
  11. Part III: Architectural Solutions
    1. 15. Software Interfaces
      1. 15.1 Interface Concepts
      2. 15.2 Designing an Interface
      3. 15.3 Documenting the Interface
      4. 15.4 Summary
      5. 15.5 For Further Reading
      6. 15.6 Discussion Questions
    2. 16. Virtualization
      1. 16.1 Shared Resources
      2. 16.2 Virtual Machines
      3. 16.3 VM Images
      4. 16.4 Containers
      5. 16.5 Containers and VMs
      6. 16.6 Container Portability
      7. 16.7 Pods
      8. 16.8 Serverless Architecture
      9. 16.9 Summary
      10. 16.10 For Further Reading
      11. 16.11 Discussion Questions
    3. 17. The Cloud and Distributed Computing
      1. 17.1 Cloud Basics
      2. 17.2 Failure in the Cloud
      3. 17.3 Using Multiple Instances to Improve Performance and Availability
      4. 17.4 Summary
      5. 17.5 For Further Reading
      6. 17.6 Discussion Questions
    4. 18. Mobile Systems
      1. 18.1 Energy
      2. 18.2 Network Connectivity
      3. 18.3 Sensors and Actuators
      4. 18.4 Resources
      5. 18.5 Life Cycle
      6. 18.6 Summary
      7. 18.7 For Further Reading
      8. 18.8 Discussion Questions
  12. Part IV: Scalable Architecture Practices
    1. 19. Architecturally Significant Requirements
      1. 19.1 Gathering ASRs from Requirements Documents
      2. 19.2 Gathering ASRs by Interviewing Stakeholders
      3. 19.3 Gathering ASRs by Understanding the Business Goals
      4. 19.4 Capturing ASRs in a Utility Tree
      5. 19.5 Change Happens
      6. 19.6 Summary
      7. 19.7 For Further Reading
      8. 19.8 Discussion Questions
    2. 20. Designing an Architecture
      1. 20.1 Attribute-Driven Design
      2. 20.2 The Steps of ADD
      3. 20.3 More on ADD Step 4: Choose One or More Design Concepts
      4. 20.4 More on ADD Step 5: Producing Structures
      5. 20.5 More on ADD Step 6: Creating Preliminary Documentation during the Design
      6. 20.6 More on ADD Step 7: Perform Analysis of the Current Design and Review the Iteration Goal and Achievement of the Design Purpose
      7. 20.7 Summary
      8. 20.8 For Further Reading
      9. 20.9 Discussion Questions
    3. 21. Evaluating an Architecture
      1. 21.1 Evaluation as a Risk Reduction Activity
      2. 21.2 What Are the Key Evaluation Activities?
      3. 21.3 Who Can Perform the Evaluation?
      4. 21.4 Contextual Factors
      5. 21.5 The Architecture Tradeoff Analysis Method
      6. 21.6 Lightweight Architecture Evaluation
      7. 21.7 Summary
      8. 21.8 For Further Reading
      9. 21.9 Discussion Questions
    4. 22. Documenting an Architecture
      1. 22.1 Uses and Audiences for Architecture Documentation
      2. 22.2 Notations
      3. 22.3 Views
      4. 22.4 Combining Views
      5. 22.5 Documenting Behavior
      6. 22.6 Beyond Views
      7. 22.7 Documenting the Rationale
      8. 22.8 Architecture Stakeholders
      9. 22.9 Practical Considerations
      10. 22.10 Summary
      11. 22.11 For Further Reading
      12. 22.12 Discussion Questions
    5. 23. Managing Architecture Debt
      1. 23.1 Determining Whether You Have an Architecture Debt Problem
      2. 23.2 Discovering Hotspots
      3. 23.3 Example
      4. 23.4 Automation
      5. 23.5 Summary
      6. 23.6 For Further Reading
      7. 23.7 Discussion Questions
  13. Part V: Architecture and the Organization
    1. 24. The Role of Architects in Projects
      1. 24.1 The Architect and the Project Manager
      2. 24.2 Incremental Architecture and Stakeholders
      3. 24.3 Architecture and Agile Development
      4. 24.4 Architecture and Distributed Development
      5. 24.5 Summary
      6. 24.6 For Further Reading
      7. 24.7 Discussion Questions
    2. 25. Architecture Competence
      1. 25.1 Competence of Individuals: Duties, Skills, and Knowledge of Architects
      2. 25.2 Competence of a Software Architecture Organization
      3. 25.3 Become a Better Architect
      4. 25.4 Summary
      5. 25.5 For Further Reading
      6. 25.6 Discussion Questions
  14. Part VI: Conclusions
    1. 26. A Glimpse of the Future: Quantum Computing
      1. 26.1 Single Qubit
      2. 26.2 Quantum Teleportation
      3. 26.3 Quantum Computing and Encryption
      4. 26.4 Other Algorithms
      5. 26.5 Potential Applications
      6. 26.6 Final Thoughts
      7. 26.7 For Further Reading
  15. References
  16. About the Authors
  17. Index

Product information

  • Title: Software Architecture in Practice, 4th Edition
  • Author(s): Len Bass, Paul Clements, Rick Kazman
  • Release date: August 2021
  • Publisher(s): Addison-Wesley Professional
  • ISBN: 9780136885979