Software Architecture in Practice, 4th edition
BRAND: PEARSON
Publisher: | Addison-Wesley Professional |
Author: | Len Bass; Paul Clements; Rick Kazman |
Edition: | (August 3, 2021) © 2022 |
eBook ISBN: | 9780137468218 |
Print ISBN: | 9780136886099 |
Type: | 4 Months Subscription. Dành cho Cá nhân |
eBook edition. Monthly Subscription. Dành cho Cá nhân | Trường ĐH, Nhóm, Thư Viện: Gọi 0915920514 để báo giá Pearson, Vital Source eBook hoặc mua Sách In
See what in the box
Mô tả sản phẩm
Hướng dẫn dứt khoát, thực tế, đã được chứng minh để kiến trúc phần mềm hiện đại--Được cập nhật đầy đủ với nội dung mới về tính di động, đám mây, quản lý năng lượng, DevOps, điện toán lượng tử, v.v.
Được cập nhật với 11 chương mới, Kiến trúc phần mềm trong thực hành, Phiên bản thứ tư, giải thích cặn kẽ kiến trúc phần mềm là gì, tại sao nó quan trọng và cách thiết kế, khởi tạo, phân tích, phát triển và quản lý nó theo những cách có kỷ luật và hiệu quả.
Ba kiến trúc sư phần mềm nổi tiếng phụ trách toàn bộ vòng đời, trình bày hướng dẫn thực tế, phương pháp chuyên môn và mô hình đã được thử nghiệm để sử dụng trong bất kỳ dự án nào, bất kể phức tạp đến đâu. Bạn sẽ học cách sử dụng kiến trúc để giải quyết việc tăng tốc độ tăng trưởng về yêu cầu, quy mô hệ thống và tính trừu tượng cũng như quản lý các thuộc tính chất lượng mới xuất hiện khi các hệ thống được kết hợp linh hoạt theo những cách mới.
Với những hiểu biết sâu sắc về việc sử dụng kiến trúc để tối ưu hóa các thuộc tính chất lượng quan trọng--bao gồm hiệu suất, khả năng sửa đổi, bảo mật, tính khả dụng, khả năng tương tác, khả năng kiểm tra, khả năng sử dụng, khả năng triển khai, v.v.--hướng dẫn này giải thích cách quản lý và tinh chỉnh các kiến trúc hiện có, chuyển đổi chúng để giải quyết các vấn đề mới và xây dựng các kiến trúc có thể tái sử dụng để trở thành tài sản kinh doanh chiến lược.
Khám phá cách kiến trúc ảnh hưởng (và bị ảnh hưởng bởi) môi trường kỹ thuật, vòng đời dự án, hồ sơ kinh doanh và hoạt động thực tiễn của riêng bạn
Tận dụng các mô hình, giao diện và thực tiễn đã được chứng minh để tối ưu hóa chất lượng thông qua kiến trúc
Kiến trúc sư cho tính di động, đám mây, học máy và điện toán lượng tử
Thiết kế cho các thuộc tính ngày càng quan trọng như hiệu quả năng lượng và an toàn
Mở rộng quy mô hệ thống bằng cách khám phá những ảnh hưởng quan trọng về mặt kiến trúc, sử dụng DevOps và quy trình triển khai cũng như quản lý nợ kiến trúc
Hiểu vai trò của kiến trúc trong tổ chức để bạn có thể mang lại nhiều giá trị hơn
Đăng ký sách của bạn để có quyền truy cập thuận tiện vào việc tải xuống, cập nhật và/hoặc chỉnh sửa khi chúng có sẵn. Xem sách bên trong để biết chi tiết.
Preface xv
Acknowledgments xvii
Part I: Introduction 1Chapter 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 39Chapter 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 217Chapter 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 277Chapter 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 367Chapter 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 Inpiduals: 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 391Chapter 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
Hướng dẫn dứt khoát, thực tế, đã được chứng minh để kiến trúc phần mềm hiện đại--Được cập nhật đầy đủ với nội dung mới về tính di động, đám mây, quản lý năng lượng, DevOps, điện toán lượng tử, v.v.
Được cập nhật với 11 chương mới, Kiến trúc phần mềm trong thực hành, Phiên bản thứ tư, giải thích cặn kẽ kiến trúc phần mềm là gì, tại sao nó quan trọng và cách thiết kế, khởi tạo, phân tích, phát triển và quản lý nó theo những cách có kỷ luật và hiệu quả.
Ba kiến trúc sư phần mềm nổi tiếng phụ trách toàn bộ vòng đời, trình bày hướng dẫn thực tế, phương pháp chuyên môn và mô hình đã được thử nghiệm để sử dụng trong bất kỳ dự án nào, bất kể phức tạp đến đâu. Bạn sẽ học cách sử dụng kiến trúc để giải quyết việc tăng tốc độ tăng trưởng về yêu cầu, quy mô hệ thống và tính trừu tượng cũng như quản lý các thuộc tính chất lượng mới xuất hiện khi các hệ thống được kết hợp linh hoạt theo những cách mới.
Với những hiểu biết sâu sắc về việc sử dụng kiến trúc để tối ưu hóa các thuộc tính chất lượng quan trọng--bao gồm hiệu suất, khả năng sửa đổi, bảo mật, tính khả dụng, khả năng tương tác, khả năng kiểm tra, khả năng sử dụng, khả năng triển khai, v.v.--hướng dẫn này giải thích cách quản lý và tinh chỉnh các kiến trúc hiện có, chuyển đổi chúng để giải quyết các vấn đề mới và xây dựng các kiến trúc có thể tái sử dụng để trở thành tài sản kinh doanh chiến lược.
Khám phá cách kiến trúc ảnh hưởng (và bị ảnh hưởng bởi) môi trường kỹ thuật, vòng đời dự án, hồ sơ kinh doanh và hoạt động thực tiễn của riêng bạn
Tận dụng các mô hình, giao diện và thực tiễn đã được chứng minh để tối ưu hóa chất lượng thông qua kiến trúc
Kiến trúc sư cho tính di động, đám mây, học máy và điện toán lượng tử
Thiết kế cho các thuộc tính ngày càng quan trọng như hiệu quả năng lượng và an toàn
Mở rộng quy mô hệ thống bằng cách khám phá những ảnh hưởng quan trọng về mặt kiến trúc, sử dụng DevOps và quy trình triển khai cũng như quản lý nợ kiến trúc
Hiểu vai trò của kiến trúc trong tổ chức để bạn có thể mang lại nhiều giá trị hơn
Đăng ký sách của bạn để có quyền truy cập thuận tiện vào việc tải xuống, cập nhật và/hoặc chỉnh sửa khi chúng có sẵn. Xem sách bên trong để biết chi tiết.
Preface xv
Acknowledgments xvii
Part I: Introduction 1Chapter 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 39Chapter 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 217Chapter 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 277Chapter 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 367Chapter 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 Inpiduals: 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 391Chapter 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