0%

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