Bibliographic Information

Software architecture in practice

Len Bass, Paul Clements, Rick Kazman

(The SEI series in software engineering)

Addison-Wesley, 2012

3rd ed

Available at  / 6 libraries

Search this Book/Journal

Note

Includes bibliographical references (p. 547-559) and index

Description and Table of Contents

Description

The award-winning and highly influential Software Architecture in Practice, Third Edition, has been substantially revised to reflect the latest developments in the field. In a real-world setting, the book once again introduces the concepts and best practices of software architecture-how a software system is structured and how that system's elements are meant to interact. Distinct from the details of implementation, algorithm, and data representation, an architecture holds the key to achieving system quality, is a reusable asset that can be applied to subsequent systems, and is crucial to a software organization's business strategy. The authors have structured this edition around the concept of architecture influence cycles. Each cycle shows how architecture influences, and is influenced by, a particular context in which architecture plays a critical role. Contexts include technical environment, the life cycle of a project, an organization's business profile, and the architect's professional practices. The authors also have greatly expanded their treatment of quality attributes, which remain central to their architecture philosophy-with an entire chapter devoted to each attribute-and broadened their treatment of architectural patterns. If you design, develop, or manage large software systems (or plan to do so), you will find this book to be a valuable resource for getting up to speed on the state of the art. Totally new material covers Contexts of software architecture: technical, project, business, and professional Architecture competence: what this means both for individuals and organizations The origins of business goals and how this affects architecture Architecturally significant requirements, and how to determine them Architecture in the life cycle, including generate-and-test as a design philosophy; architecture conformance during implementation; architecture and testing; and architecture and agile development Architecture and current technologies, such as the cloud, social networks, and end-user devices

Table of Contents

Preface xv Reader's Guide xvii Acknowledgments xix Part One: Introduction 1 Chapter 1: What Is Software Architecture? 3 1.1 What Software Architecture Is and What It Isn't 4 1.2 Architectural Structures and Views 9 1.3 Architectural Patterns 18 1.4 What Makes a "Good" Architecture? 19 1.5 Summary 21 1.6 For Further Reading 22 1.7 Discussion Questions 23 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 Enhancing Communication among Stakeholders 29 2.5 Carrying Early Design Decisions 31 2.6 Defining Constraints on an Implementation 32 2.7 Influencing the Organizational Structure 33 2.8 Enabling Evolutionary Prototyping 33 2.9 Improving Cost and Schedule Estimates 34 2.10 Supplying a Transferable, Reusable Model 35 2.11 Allowing Incorporation of Independently Developed Components 35 2.12 Restricting the Vocabulary of Design Alternatives 36 2.13 Providing a Basis for Training 37 2.14 Summary 37 2.15 For Further Reading 38 2.16 Discussion Questions 38 Chapter 3: The Many Contexts of Software Architecture 39 3.1 Architecture in a Technical Context 40 3.2 Architecture in a Project Life-Cycle Context 44 3.3 Architecture in a Business Context 49 3.4 Architecture in a Professional Context 51 3.5 Stakeholders 52 3.6 How Is Architecture Influenced? 56 3.7 What Do Architectures Influence? 57 3.8 Summary 59 3.9 For Further Reading 59 3.10 Discussion Questions 60 Part Two: Quality Attributes 61 Chapter 4: Understanding Quality Attributes 63 4.1 Architecture and Requirements 64 4.2 Functionality 65 4.3 Quality Attribute Considerations 65 4.4 Specifying Quality Attribute Requirements 68 4.5 Achieving Quality Attributes through Tactics 70 4.6 Guiding Quality Design Decisions 72 4.7 Summary 76 4.8 For Further Reading 77 4.9 Discussion Questions 77 Chapter 5: Availability 79 5.1 Availability General Scenario 85 5.2 Tactics for Availability 87 5.3 A Design Checklist for Availability 96 5.4 Summary 98 5.5 For Further Reading 99 5.6 Discussion Questions 100 Chapter 6: Interoperability 103 6.1 Interoperability General Scenario 107 6.2 Tactics for Interoperability 110 6.3 A Design Checklist for Interoperability 114 6.4 Summary 115 6.5 For Further Reading 116 6.6 Discussion Questions 116 Chapter 7: Modifiability 117 7.1 Modifiability General Scenario 119 7.2 Tactics for Modifiability 121 7.3 A Design Checklist for Modifiability 125 7.4 Summary 128 7.5 For Further Reading 128 7.6 Discussion Questions 128 Chapter 8: Performance 131 8.1 Performance General Scenario 132 8.2 Tactics for Performance 135 8.3 A Design Checklist for Performance 142 8.4 Summary 145 8.5 For Further Reading 145 8.6 Discussion Questions 145 Chapter 9: Security 147 9.1 Security General Scenario 148 9.2 Tactics for Security 150 9.3 A Design Checklist for Security 154 9.4 Summary 156 9.5 For Further Reading 157 9.6 Discussion Questions 158 Chapter 10: Testability 159 10.1 Testability General Scenario 162 10.2 Tactics for Testability 164 10.3 A Design Checklist for Testability 169 10.4 Summary 172 10.5 For Further Reading 172 10.6 Discussion Questions 173 Chapter 11: Usability 175 11.1 Usability General Scenario 176 11.2 Tactics for Usability 177 11.3 A Design Checklist for Usability 181 11.4 Summary 183 11.5 For Further Reading 183 11.6 Discussion Questions 183 Chapter 12: Other Quality Attributes 185 12.1 Other Important Quality Attributes 185 12.2 Other Categories of Quality Attributes 189 12.3 Software Quality Attributes and System Quality Attributes 190 12.4 Using Standard Lists of Quality Attributes-or Not 193 12.5 Dealing with "X-ability": Bringing a New Quality Attribute into the Fold 196 12.6 For Further Reading 200 12.7 Discussion Questions 201 Chapter 13: Architectural Tactics and Patterns 203 13.1 Architectural Patterns 204 13.2 Overview of the Patterns Catalog 205 13.3 Relationships between Tactics and Patterns 238 13.4 Using Tactics Together 242 13.5 Summary 247 13.6 For Further Reading 248 13.7 Discussion Questions 249 Chapter 14: Quality Attribute Modeling and Analysis 251 14.1 Modeling Architectures to Enable Quality Attribute Analysis 252 14.2 Quality Attribute Checklists 260 14.3 Thought Experiments and Back-of-the-Envelope Analysis 262 14.4 Experiments, Simulations, and Prototypes 264 14.5 Analysis at Different Stages of the Life Cycle 265 14.6 Summary 266 14.7 For Further Reading 267 14.8 Discussion Questions 269 Part Three: Architecture in the Life Cycle 271 Chapter 15: Architecture in Agile Projects 275 15.1 How Much Architecture? 277 15.2 Agility and Architecture Methods 281 15.3 A Brief Example of Agile Architecting 283 15.4 Guidelines for the Agile Architect 286 15.5 Summary 287 15.6 For Further Reading 288 15.7 Discussion Questions 289 Chapter 16: Architecture and Requirements 291 16.1 Gathering ASRs from Requirements Documents 292 16.2 Gathering ASRs by Interviewing Stakeholders 294 16.3 Gathering ASRs by Understanding the Business Goals 296 16.4 Capturing ASRs in a Utility Tree 304 16.5 Tying the Methods Together 308 16.6 Summary 308 16.7 For Further Reading 309 16.8 Discussion Questions 309 Chapter 17: Designing an Architecture 311 17.1 Design Strategy 311 17.2 The Attribute-Driven Design Method 316 17.3 The Steps of ADD 318 17.4 Summary 325 17.5 For Further Reading 325 17.6 Discussion Questions 326 Chapter 18: Documenting Software Architectures 327 18.1 Uses and Audiences for Architecture Documentation 328 18.2 Notations for Architecture Documentation 329 18.3 Views 331 18.4 Choosing the Views 341 18.5 Combining Views 343 18.6 Building the Documentation Package 345 18.7 Documenting Behavior 351 18.8 Architecture Documentation and Quality Attributes 354 18.9 Documenting Architectures That Change Faster Than You Can Document Them 355 18.10 Documenting Architecture in an Agile Development Project 356 18.11 Summary 359 18.12 For Further Reading 360 18.13 Discussion Questions 360 Chapter 19: Architecture, Implementation, and Testing 363 19.1 Architecture and Implementation 363 19.2 Architecture and Testing 370 19.3 Summary 376 19.4 For Further Reading 376 19.5 Discussion Questions 377 Chapter 20: Architecture Reconstruction and Conformance 379 20.1 Architecture Reconstruction Process 381 20.2 Raw View Extraction 382 20.3 Database Construction 386 20.4 View Fusion 388 20.5 Architecture Analysis: Finding Violations 389 20.6 Guidelines 392 20.7 Summary 393 20.8 For Further Reading 394 20.9 Discussion Questions 395 Chapter 21: Architecture Evaluation 397 21.1 Evaluation Factors 397 21.2 The Architecture Tradeoff Analysis Method 400 21.3 Lightweight Architecture Evaluation 415 21.4 Summary 417 21.5 For Further Reading 417 21.6 Discussion Questions 418 Chapter 22: Management and Governance 419 22.1 Planning 420 22.2 Organizing 422 22.3 Implementing 427 22.4 Measuring 429 22.5 Governance 430 22.6 Summary 432 22.7 For Further Reading 432 22.8 Discussion Questions 433 Part Four: Architecture and Business 435 Chapter 23: Economic Analysis of Architectures 437 23.1 Decision-Making Context 438 23.2 The Basis for the Economic Analyses 439 23.3 Putting Theory into Practice: The CBAM 442 23.4 Case Study: The NASA ECS Project 450 23.5 Summary 457 23.6 For Further Reading 458 23.7 Discussion Questions 458 Chapter 24: Architecture Competence 459 24.1 Competence of Individuals: Duties, Skills, and Knowledge of Architects 460 24.2 Competence of a Software Architecture Organization 467 24.3 Summary 475 24.4 For Further Reading 475 24.5 Discussion Questions 477 Chapter 25: Architecture and Software Product Lines 479 25.1 An Example of Product Line Variability 482 25.2 What Makes a Software Product Line Work? 483 25.3 Product Line Scope 486 25.4 The Quality Attribute of Variability 488 25.5 The Role of a Product Line Architecture 488 25.6 Variation Mechanisms 490 25.7 Evaluating a Product Line Architecture 493 25.8 Key Software Product Line Issues 494 25.9 Summary 497 25.10 For Further Reading 498 25.11 Discussion Questions 498 Part Five: The Brave New World 501 Chapter 26: Architecture in the Cloud 503 26.1 Basic Cloud Definitions 504 26.2 Service Models and Deployment Options 505 26.3 Economic Justification 506 26.4 Base Mechanisms 509 26.5 Sample Technologies 514 26.6 Architecting in a Cloud Environment 520 26.7 Summary 524 26.8 For Further Reading 524 26.9 Discussion Questions 525 Chapter 27: Architectures for the Edge 527 27.1 The Ecosystem of Edge-Dominant Systems 528 27.2 Changes to the Software Development Life Cycle 530 27.3 Implications for Architecture 531 27.4 Implications of the Metropolis Model 533 27.5 Summary 537 27.6 For Further Reading 538 27.7 Discussion Questions 538 Chapter 28: Epilogue 541 References 547 About the Authors 561 Index 563

by "Nielsen BookData"

Related Books: 1-1 of 1

Details

Page Top