Published by Addison-Wesley Professional (July 30, 2021) © 2022

Len Bass | Paul Clements | Rick Kazman
    VitalSource eTextbook (Lifetime access)
    €47,99
    Adding to cart… The item has been added
    ISBN-13: 9780136886020

    Software Architecture in Practice ,4th edition

    Language: English

    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.
    Preface xv
    Acknowledgments xvii


    Part I: Introduction 1

    Chapter 1: What Is Software Architecture? 1

    1.1 What Software Architecture Is and What It Isn't 2
    1.2 Architectural Structures and Views 5
    1.3 What Makes a "Good" Architecture? 19
    1.4 Summary 21
    1.5 For Further Reading 21
    1.6 Discussion Questions 22

    Chapter 2: Why Is Software Architecture Important? 25
    2.1 Inhibiting or Enabling a System's Quality Attributes 26
    2.2 Reasoning about and Managing Change 27
    2.3 Predicting System Qualities 28
    2.4 Communication among Stakeholders 28
    2.5 Early Design Decisions 31
    2.6 Constraints on Implementation 31
    2.7 Influences on Organizational Structure 32
    2.8 Enabling Incremental Development 33
    2.9 Cost and Schedule Estimates 33
    2.10 Transferable, Reusable Model 34
    2.11 Architecture Allows Incorporation of Independently Developed Elements 34
    2.12 Restricting the Vocabulary of Design Alternatives 35
    2.13 A Basis for Training 36
    2.14 Summary 36
    2.15 For Further Reading 37
    2.16 Discussion Questions 37

    Part II: Quality Attributes 39

    Chapter 3: Understanding Quality Attributes 39

    3.1 Functionality 40
    3.2 Quality Attribute Considerations 41
    3.3 Specifying Quality Attribute Requirements: Quality Attribute Scenarios 42
    3.4 Achieving Quality Attributes through Architectural Patterns and Tactics 45
    3.5 Designing with Tactics 46
    3.6 Analyzing Quality Attribute Design Decisions: Tactics-Based Questionnaires 48
    3.7 Summary 49
    3.8 For Further Reading 49
    3.9 Discussion Questions 50

    Chapter 4: Availability 51
    4.1 Availability General Scenario 53
    4.2 Tactics for Availability 55
    4.3 Tactics-Based Questionnaire for Availability 62
    4.4 Patterns for Availability 66
    4.5 For Further Reading 68
    4.6 Discussion Questions 69

    Chapter 5: Deployability 71
    5.1 Continuous Deployment 72
    5.2 Deployability 75
    5.3 Deployability General Scenario 76
    5.4 Tactics for Deployability 78
    5.5 Tactics-Based Questionnaire for Deployability 80
    5.6 Patterns for Deployability 81
    5.7 For Further Reading 87
    5.8 Discussion Questions 87

    Chapter 6: Energy Efficiency 89
    6.1 Energy Efficiency General Scenario 90
    6.2 Tactics for Energy Efficiency 92
    6.3 Tactics-Based Questionnaire for Energy Efficiency 95
    6.4 Patterns 97
    6.5 For Further Reading 98
    6.6 Discussion Questions 99

    Chapter 7: Integrability 101
    7.1 Evaluating the Integrability of an Architecture 102
    7.2 General Scenario for Integrability 104
    7.3 Integrability Tactics 105
    7.4 Tactics-Based Questionnaire for Integrability 110
    7.5 Patterns 112
    7.6 For Further Reading 114
    7.7 Discussion Questions 115

    Chapter 8: Modifiability 117
    8.1 Modifiability General Scenario 120
    8.2 Tactics for Modifiability 121
    8.3 Tactics-Based Questionnaire for Modifiability 125
    8.4 Patterns 126
    8.5 For Further Reading 130
    8.6 Discussion Questions 131

    Chapter 9: Performance 133
    9.1 Performance General Scenario 134
    9.2 Tactics for Performance 137
    9.3 Tactics-Based Questionnaire for Performance 145
    9.4 Patterns for Performance 146
    9.5 For Further Reading 149
    9.6 Discussion Questions 150

    Chapter 10: Safety 151
    10.1 Safety General Scenario 154
    10.2 Tactics for Safety 156
    10.3 Tactics-Based Questionnaire for Safety 160
    10.4 Patterns for Safety 163
    10.5 For Further Reading 165
    10.6 Discussion Questions 166

    Chapter 11: Security 169
    11.1 Security General Scenario 170
    11.2 Tactics for Security 172
    11.3 Tactics-Based Questionnaire for Security 176
    11.4 Patterns for Security 179
    11.5 For Further Reading 180
    11.6 Discussion Questions 180

    Chapter 12: Testability 183
    12.1 Testability General Scenario 186
    12.2 Tactics for Testability 187
    12.3 Tactics-Based Questionnaire for Testability 192
    12.4 Patterns for Testability 192
    12.5 For Further Reading 194
    12.6 Discussion Questions 195

    Chapter 13: Usability 197
    13.1 Usability General Scenario 198
    13.2 Tactics for Usability 200
    13.3 Tactics-Based Questionnaire for Usability 202
    13.4 Patterns for Usability 203
    13.5 For Further Reading 205
    13.6 Discussion Questions 205

    Chapter 14: Working with Other Quality Attributes 207
    14.1 Other Kinds of Quality Attributes 207
    14.2 Using Standard Lists of Quality Attributes--Or Not 209
    14.3 Dealing with "X-Ability": Bringing a New QA into the Fold 212
    14.4 For Further Reading 215
    14.5 Discussion Questions 215

    Part III: Architectural Solutions 217

    Chapter 15: Software Interfaces 217

    15.1 Interface Concepts 218
    15.2 Designing an Interface 222
    15.3 Documenting the Interface 228
    15.4 Summary 230
    15.5 For Further Reading 230
    15.6 Discussion Questions 231

    Chapter 16: Virtualization 233
    16.1 Shared Resources 234
    16.2 Virtual Machines 235
    16.3 VM Images 238
    16.4 Containers 239
    16.5 Containers and VMs 241
    16.6 Container Portability 242
    16.7 Pods 242
    16.8 Serverless Architecture 243
    16.9 Summary 244
    16.10 For Further Reading 245
    16.11 Discussion Questions 245

    Chapter 17: The Cloud and Distributed Computing 247
    17.1 Cloud Basics 248
    17.2 Failure in the Cloud 251
    17.3 Using Multiple Instances to Improve Performance and Availability 253
    17.4 Summary 261
    17.5 For Further Reading 262
    17.6 Discussion Questions 262

    Chapter 18: Mobile Systems 263
    18.1 Energy 264
    18.2 Network Connectivity 266
    18.3 Sensors and Actuators 267
    18.4 Resources 268
    18.5 Life Cycle 270
    18.6 Summary 273
    18.7 For Further Reading 274
    18.8 Discussion Questions 275

    Part IV: Scalable Architecture Practices 277

    Chapter 19: Architecturally Significant Requirements 277

    19.1 Gathering ASRs from Requirements Documents 278
    19.2 Gathering ASRs by Interviewing Stakeholders 279
    19.3 Gathering ASRs by Understanding the Business Goals 282
    19.4 Capturing ASRs in a Utility Tree 284
    19.5 Change Happens 286
    19.6 Summary 286
    19.7 For Further Reading 287
    19.8 Discussion Questions 287

    Chapter 20: Designing an Architecture 289
    20.1 Attribute-Driven Design 289
    20.2 The Steps of ADD 292
    20.3 More on ADD Step 4: Choose One or More Design Concepts 295
    20.4 More on ADD Step 5: Producing Structures 298
    20.5 More on ADD Step 6: Creating Preliminary Documentation during the Design 301
    20.6 More on ADD Step 7: Perform Analysis of the Current Design and Review the Iteration Goal and Achievement of the Design Purpose 304
    20.7 Summary 306
    20.8 For Further Reading 306
    20.9 Discussion Questions 307

    Chapter 21: Evaluating an Architecture 309
    21.1 Evaluation as a Risk Reduction Activity 309
    21.2 What Are the Key Evaluation Activities? 310
    21.3 Who Can Perform the Evaluation? 311
    21.4 Contextual Factors 312
    21.5 The Architecture Tradeoff Analysis Method 313
    21.6 Lightweight Architecture Evaluation 324
    21.7 Summary 326
    21.8 For Further Reading 327
    21.9 Discussion Questions 327

    Chapter 22: Documenting an Architecture 329
    22.1 Uses and Audiences for Architecture Documentation 330
    22.2 Notations 331
    22.3 Views 332
    22.4 Combining Views 339
    22.5 Documenting Behavior 340
    22.6 Beyond Views 345
    22.7 Documenting the Rationale 346
    22.8 Architecture Stakeholders 347
    22.9 Practical Considerations 350
    22.10 Summary 353
    22.11 For Further Reading 353
    22.12 Discussion Questions 354

    Chapter 23: Managing Architecture Debt 355
    23.1 Determining Whether You Have an Architecture Debt Problem 356
    23.2 Discovering Hotspots 358
    23.3 Example 362
    23.4 Automation 363
    23.5 Summary 364
    23.6 For Further Reading 364
    23.7 Discussion Questions 365

    Part V: Architecture and the Organization 367

    Chapter 24: The Role of Architects in Projects 367

    24.1 The Architect and the Project Manager 367
    24.2 Incremental Architecture and Stakeholders 369
    24.3 Architecture and Agile Development 370
    24.4 Architecture and Distributed Development 373
    24.5 Summary 376
    24.6 For Further Reading 376
    24.7 Discussion Questions 377

    Chapter 25: Architecture Competence 379
    25.1 Competence of Individuals: Duties, Skills, and Knowledge of Architects 379
    25.2 Competence of a Software Architecture Organization 386
    25.3 Become a Better Architect 387
    25.4 Summary 388
    25.5 For Further Reading 388
    25.6 Discussion Questions 389

    Part VI: Conclusions 391

    Chapter 26: A Glimpse of the Future: Quantum Computing 391

    26.1 Single Qubit 392
    26.2 Quantum Teleportation 394
    26.3 Quantum Computing and Encryption 394
    26.4 Other Algorithms 395
    26.5 Potential Applications 396
    26.6 Final Thoughts 397
    26.7 For Further Reading 398

    References 399
    About the Authors 415
    Index 417