Len Bass, Paul Clements, Rick Kazman

Software Architecture in Practice


4. Auflage
Erscheinungsjahr: 2021
Print-ISBN: 978-0-13-688609-9
E-ISBN: 978-0-13-688567-2
Seiten: 464
Sprache: Englisch






Zusammenfassung

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 in uences (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

Inhaltsverzeichnis

  • Cover
    1
    -
    1
  • Half Title
    2
    -
    3
  • Title Page
    4
    -
    4
  • Copyright Page
    5
    -
    5
  • Contents
    6
    -
    15
  • Preface
    16
    -
    17
  • Acknowledgments
    18
    -
    19
  • +
    PART I: INTRODUCTION
    20
    -
    57

    • +
      CHAPTER 1 What Is Software Architecture?
      20
      -
      43

      • 1.1 What Software Architecture Is and What It Isn’t
        21
        -
        23
      • 1.2 Architectural Structures and Views
        24
        -
        37
      • 1.3 What Makes a “Good” Architecture?
        38
        -
        39
      • 1.4 Summary
        40
        -
        39
      • 1.5 For Further Reading
        40
        -
        40
      • 1.6 Discussion Questions
        40
        -
        43
    • +
      CHAPTER 2 Why Is Software Architecture Important?
      44
      -
      55

      • 2.1 Inhibiting or Enabling a System’s Quality Attributes
        45
        -
        45
      • 2.2 Reasoning about and Managing Change
        46
        -
        46
      • 2.3 Predicting System Qualities
        47
        -
        46
      • 2.4 Communication among Stakeholders
        47
        -
        49
      • 2.5 Early Design Decisions
        50
        -
        49
      • 2.6 Constraints on Implementation
        50
        -
        50
      • 2.7 Influences on Organizational Structure
        51
        -
        51
      • 2.8 Enabling Incremental Development
        52
        -
        51
      • 2.9 Cost and Schedule Estimates
        52
        -
        52
      • 2.10 Transferable, Reusable Model
        53
        -
        52
      • 2.11 Architecture Allows Incorporation of Independently Developed Elements
        53
        -
        53
      • 2.12 Restricting the Vocabulary of Design Alternatives
        54
        -
        54
      • 2.13 A Basis for Training
        55
        -
        54
      • 2.14 Summary
        55
        -
        55
      • 2.15 For Further Reading
        55
        -
        55
      • 2.16 Discussion Questions
        55
        -
        57
  • +
    PART II: QUALITY ATTRIBUTES
    58
    -
    235

    • +
      CHAPTER 3 Understanding Quality Attributes
      58
      -
      69

      • 3.1 Functionality
        59
        -
        59
      • 3.2 Quality Attribute Considerations
        60
        -
        60
      • 3.3 Specifying Quality Attribute Requirements: Quality Attribute Scenarios
        61
        -
        63
      • 3.4 Achieving Quality Attributes through Architectural Patterns and Tactics
        64
        -
        64
      • 3.5 Designing with Tactics
        65
        -
        66
      • 3.6 Analyzing Quality Attribute Design Decisions: Tactics-Based Questionnaires
        67
        -
        67
      • 3.7 Summary
        68
        -
        67
      • 3.8 For Further Reading
        68
        -
        68
      • 3.9 Discussion Questions
        68
        -
        69
    • +
      CHAPTER 4 Availability
      70
      -
      89

      • 4.1 Availability General Scenario
        72
        -
        73
      • 4.2 Tactics for Availability
        74
        -
        80
      • 4.3 Tactics-Based Questionnaire for Availability
        81
        -
        84
      • 4.4 Patterns for Availability
        85
        -
        86
      • 4.5 For Further Reading
        87
        -
        87
      • 4.6 Discussion Questions
        87
        -
        89
    • +
      CHAPTER 5 Deployability
      90
      -
      107

      • 5.1 Continuous Deployment
        91
        -
        93
      • 5.2 Deployability
        94
        -
        94
      • 5.3 Deployability General Scenario
        95
        -
        96
      • 5.4 Tactics for Deployability
        97
        -
        98
      • 5.5 Tactics-Based Questionnaire for Deployability
        99
        -
        99
      • 5.6 Patterns for Deployability
        100
        -
        105
      • 5.7 For Further Reading
        106
        -
        105
      • 5.8 Discussion Questions
        105
        -
        107
    • +
      CHAPTER 6 Energy Efficiency
      108
      -
      119

      • 6.1 Energy Efficiency General Scenario
        109
        -
        110
      • 6.2 Tactics for Energy Efficiency
        111
        -
        113
      • 6.3 Tactics-Based Questionnaire for Energy Efficiency
        114
        -
        115
      • 6.4 Patterns
        116
        -
        116
      • 6.5 For Further Reading
        117
        -
        117
      • 6.6 Discussion Questions
        117
        -
        119
    • +
      CHAPTER 7 Integrability
      120
      -
      135

      • 7.1 Evaluating the Integrability of an Architecture
        121
        -
        122
      • 7.2 General Scenario for Integrability
        123
        -
        123
      • 7.3 Integrability Tactics
        124
        -
        128
      • 7.4 Tactics-Based Questionnaire for Integrability
        129
        -
        130
      • 7.5 Patterns
        131
        -
        132
      • 7.6 For Further Reading
        133
        -
        133
      • 7.7 Discussion Questions
        133
        -
        135
    • +
      CHAPTER 8 Modifiability
      136
      -
      151

      • 8.1 Modifiability General Scenario
        139
        -
        139
      • 8.2 Tactics for Modifiability
        140
        -
        143
      • 8.3 Tactics-Based Questionnaire for Modifiability
        144
        -
        144
      • 8.4 Patterns
        145
        -
        148
      • 8.5 For Further Reading
        149
        -
        149
      • 8.6 Discussion Questions
        149
        -
        151
    • +
      CHAPTER 9 Performance
      152
      -
      169

      • 9.1 Performance General Scenario
        153
        -
        155
      • 9.2 Tactics for Performance
        156
        -
        163
      • 9.3 Tactics-Based Questionnaire for Performance
        164
        -
        164
      • 9.4 Patterns for Performance
        165
        -
        167
      • 9.5 For Further Reading
        168
        -
        168
      • 9.6 Discussion Questions
        168
        -
        169
    • +
      CHAPTER 10 Safety
      170
      -
      187

      • 10.1 Safety General Scenario
        173
        -
        174
      • 10.2 Tactics for Safety
        175
        -
        178
      • 10.3 Tactics-Based Questionnaire for Safety
        179
        -
        181
      • 10.4 Patterns for Safety
        182
        -
        183
      • 10.5 For Further Reading
        184
        -
        184
      • 10.6 Discussion Questions
        184
        -
        187
    • +
      CHAPTER 11 Security
      188
      -
      201

      • 11.1 Security General Scenario
        189
        -
        190
      • 11.2 Tactics for Security
        191
        -
        194
      • 11.3 Tactics-Based Questionnaire for Security
        195
        -
        197
      • 11.4 Patterns for Security
        198
        -
        198
      • 11.5 For Further Reading
        199
        -
        198
      • 11.6 Discussion Questions
        198
        -
        201
    • +
      CHAPTER 12 Testability
      202
      -
      215

      • 12.1 Testability General Scenario
        205
        -
        205
      • 12.2 Tactics for Testability
        206
        -
        210
      • 12.3 Tactics-Based Questionnaire for Testability
        211
        -
        210
      • 12.4 Patterns for Testability
        211
        -
        212
      • 12.5 For Further Reading
        213
        -
        213
      • 12.6 Discussion Questions
        213
        -
        215
    • +
      CHAPTER 13 Usability
      216
      -
      225

      • 13.1 Usability General Scenario
        217
        -
        218
      • 13.2 Tactics for Usability
        219
        -
        220
      • 13.3 Tactics-Based Questionnaire for Usability
        221
        -
        221
      • 13.4 Patterns for Usability
        222
        -
        223
      • 13.5 For Further Reading
        224
        -
        223
      • 13.6 Discussion Questions
        223
        -
        225
    • +
      CHAPTER 14 Working with Other Quality Attributes
      226
      -
      233

      • 14.1 Other Kinds of Quality Attributes
        226
        -
        227
      • 14.2 Using Standard Lists of Quality Attributes—Or Not
        228
        -
        230
      • 14.3 Dealing with “X-Ability”: Bringing a New QA into the Fold
        231
        -
        233
      • 14.4 For Further Reading
        233
        -
        233
      • 14.5 Discussion Questions
        233
        -
        235
  • +
    PART III: ARCHITECTURAL SOLUTIONS
    236
    -
    295

    • +
      CHAPTER 15 Software Interfaces
      236
      -
      251

      • 15.1 Interface Concepts
        237
        -
        240
      • 15.2 Designing an Interface
        241
        -
        246
      • 15.3 Documenting the Interface
        247
        -
        248
      • 15.4 Summary
        249
        -
        248
      • 15.5 For Further Reading
        249
        -
        249
      • 15.6 Discussion Questions
        249
        -
        251
    • +
      CHAPTER 16 Virtualization
      252
      -
      265

      • 16.1 Shared Resources
        253
        -
        253
      • 16.2 Virtual Machines
        254
        -
        256
      • 16.3 VM Images
        257
        -
        257
      • 16.4 Containers
        258
        -
        259
      • 16.5 Containers and VMs
        260
        -
        260
      • 16.6 Container Portability
        261
        -
        260
      • 16.7 Pods
        261
        -
        261
      • 16.8 Serverless Architecture
        262
        -
        262
      • 16.9 Summary
        263
        -
        263
      • 16.10 For Further Reading
        264
        -
        263
      • 16.11 Discussion Questions
        263
        -
        265
    • +
      CHAPTER 17 The Cloud and Distributed Computing
      266
      -
      281

      • 17.1 Cloud Basics
        267
        -
        269
      • 17.2 Failure in the Cloud
        270
        -
        271
      • 17.3 Using Multiple Instances to Improve Performance and Availability
        272
        -
        279
      • 17.4 Summary
        280
        -
        280
      • 17.5 For Further Reading
        281
        -
        280
      • 17.6 Discussion Questions
        280
        -
        281
    • +
      CHAPTER 18 Mobile Systems
      282
      -
      293

      • 18.1 Energy
        283
        -
        284
      • 18.2 Network Connectivity
        285
        -
        285
      • 18.3 Sensors and Actuators
        286
        -
        286
      • 18.4 Resources
        287
        -
        288
      • 18.5 Life Cycle
        289
        -
        291
      • 18.6 Summary
        292
        -
        292
      • 18.7 For Further Reading
        292
        -
        293
      • 18.8 Discussion Questions
        293
        -
        295
  • +
    PART IV: SCALABLE ARCHITECTURE PRACTICES
    296
    -
    385

    • +
      CHAPTER 19 Architecturally Significant Requirements
      296
      -
      307

      • 19.1 Gathering ASRs from Requirements Documents
        297
        -
        297
      • 19.2 Gathering ASRs by Interviewing Stakeholders
        298
        -
        300
      • 19.3 Gathering ASRs by Understanding the Business Goals
        301
        -
        302
      • 19.4 Capturing ASRs in a Utility Tree
        303
        -
        304
      • 19.5 Change Happens
        305
        -
        304
      • 19.6 Summary
        305
        -
        305
      • 19.7 For Further Reading
        306
        -
        305
      • 19.8 Discussion Questions
        305
        -
        307
    • +
      CHAPTER 20 Designing an Architecture
      308
      -
      327

      • 20.1 Attribute-Driven Design
        308
        -
        310
      • 20.2 The Steps of ADD
        311
        -
        313
      • 20.3 More on ADD Step 4: Choose One or More Design Concepts
        314
        -
        316
      • 20.4 More on ADD Step 5: Producing Structures
        317
        -
        319
      • 20.5 More on ADD Step 6: Creating Preliminary Documentation during the Design
        320
        -
        322
      • 20.6 More on ADD Step 7: Perform Analysis of the Current Design and Review the Iteration Goal and Achievement of the Design Purpose
        323
        -
        324
      • 20.7 Summary
        325
        -
        324
      • 20.8 For Further Reading
        325
        -
        325
      • 20.9 Discussion Questions
        325
        -
        327
    • +
      CHAPTER 21 Evaluating an Architecture
      328
      -
      347

      • 21.1 Evaluation as a Risk Reduction Activity
        328
        -
        328
      • 21.2 What Are the Key Evaluation Activities?
        329
        -
        329
      • 21.3 Who Can Perform the Evaluation?
        330
        -
        330
      • 21.4 Contextual Factors
        331
        -
        331
      • 21.5 The Architecture Tradeoff Analysis Method
        332
        -
        342
      • 21.6 Lightweight Architecture Evaluation
        343
        -
        344
      • 21.7 Summary
        345
        -
        345
      • 21.8 For Further Reading
        346
        -
        345
      • 21.9 Discussion Questions
        345
        -
        347
    • +
      CHAPTER 22 Documenting an Architecture
      348
      -
      373

      • 22.1 Uses and Audiences for Architecture Documentation
        349
        -
        349
      • 22.2 Notations
        350
        -
        350
      • 22.3 Views
        351
        -
        357
      • 22.4 Combining Views
        358
        -
        358
      • 22.5 Documenting Behavior
        359
        -
        363
      • 22.6 Beyond Views
        364
        -
        364
      • 22.7 Documenting the Rationale
        365
        -
        365
      • 22.8 Architecture Stakeholders
        366
        -
        368
      • 22.9 Practical Considerations
        369
        -
        371
      • 22.10 Summary
        372
        -
        371
      • 22.11 For Further Reading
        372
        -
        372
      • 22.12 Discussion Questions
        372
        -
        373
    • +
      CHAPTER 23 Managing Architecture Debt
      374
      -
      383

      • 23.1 Determining Whether You Have an Architecture Debt Problem
        375
        -
        376
      • 23.2 Discovering Hotspots
        377
        -
        380
      • 23.3 Example
        381
        -
        381
      • 23.4 Automation
        382
        -
        382
      • 23.5 Summary
        383
        -
        382
      • 23.6 For Further Reading
        382
        -
        383
      • 23.7 Discussion Questions
        383
        -
        385
  • +
    PART V: ARCHITECTURE AND THE ORGANIZATION
    386
    -
    409

    • +
      CHAPTER 24 The Role of Architects in Projects
      386
      -
      397

      • 24.1 The Architect and the Project Manager
        386
        -
        387
      • 24.2 Incremental Architecture and Stakeholders
        388
        -
        388
      • 24.3 Architecture and Agile Development
        389
        -
        391
      • 24.4 Architecture and Distributed Development
        392
        -
        394
      • 24.5 Summary
        395
        -
        394
      • 24.6 For Further Reading
        395
        -
        395
      • 24.7 Discussion Questions
        395
        -
        397
    • +
      CHAPTER 25 Architecture Competence
      398
      -
      407

      • 25.1 Competence of Individuals: Duties, Skills, and Knowledge of Architects
        398
        -
        404
      • 25.2 Competence of a Software Architecture Organization
        405
        -
        405
      • 25.3 Become a Better Architect
        406
        -
        406
      • 25.4 Summary
        407
        -
        406
      • 25.5 For Further Reading
        406
        -
        407
      • 25.6 Discussion Questions
        407
        -
        409
  • +
    PART VI: CONCLUSIONS
    410
    -
    417

    • +
      CHAPTER 26 A Glimpse of the Future: Quantum Computing
      410
      -
      416

      • 26.1 Single Qubit
        411
        -
        412
      • 26.2 Quantum Teleportation
        413
        -
        412
      • 26.3 Quantum Computing and Encryption
        413
        -
        413
      • 26.4 Other Algorithms
        414
        -
        414
      • 26.5 Potential Applications
        415
        -
        415
      • 26.6 Final Thoughts
        415
        -
        416
      • 26.7 For Further Reading
        416
        -
        417
  • References
    418
    -
    433
  • About the Authors
    434
    -
    435
  • +
    Index
    436
    -
    453

    • A
      436
      -
      437
    • B
      438
      -
      437
    • C
      438
      -
      439
    • D
      440
      -
      440
    • E
      441
      -
      441
    • F
      442
      -
      441
    • G
      442
      -
      442
    • H
      443
      -
      442
    • I
      443
      -
      443
    • J
      444
      -
      443
    • L
      444
      -
      443
    • M
      444
      -
      444
    • N
      445
      -
      445
    • O
      446
      -
      445
    • P
      446
      -
      446
    • Q
      447
      -
      447
    • R
      448
      -
      448
    • S
      449
      -
      451
    • T
      452
      -
      452
    • U
      453
      -
      452
    • V
      453
      -
      453
    • W
      454
      -
      453
    • X
      453
      -
      453
    • Z
      454
      -
      460

Über die Autoren

Len Bass

Author

Paul Clements

Author

Rick Kazman

Author

Weitere Beiträge zur Thematik