Designing Software Architectures

Series
Addison-Wesley
Author
Humberto Cervantes / Rick Kazman  
Publisher
Addison-Wesley
Cover
Hardcover
Edition
1
Language
English
Total pages
320
Pub.-date
May 2016
ISBN13
9780134390789
ISBN
0134390784
Related Titles


Product detail

Product Price CHF Available  
9780134390789
Designing Software Architectures
50.30 approx. 7-9 days

Description

Designing Software Architectures is the first step-by-step guide to making the crucial design decisions that can make or break your software architecture. SEI expert Rick Kazman and Dr. Humberto Cervantes provide comprehensive guidance for ensuring that your architectural design decisions are consistently rational and evidence-based.

Features

• Discover practical, proven techniques for designing software architectures optimized to meet your specific business goals
• Master a structured, repeatable method for design that helps you get better results fast
• Learn from concrete, extended design case studies using well-documented design primitives
• Get practical design advice for greenfield, evolution, pre-sales, agile, cloud, mobile, big data, and other environments
• Explore new analysis tools and techniques, and learn what and how to document your designs
• The latest title in Addison Wesley's highly respected SEI Series in Software Engineering

Table of Contents

Preface xiii

Acknowledgments xvii

 

Chapter 1: Introduction 1

1.1 Motivations 1

1.2 Software Architecture 3

1.3 The Role of the Architect 7

1.4 A Brief History of ADD 8

1.5 Summary 9

1.6 Further Reading 10

 

Chapter 2: Architectural Design 11

2.1 Design in General 11

2.2 Design in Software Architecture 13

2.3 Why Is Architectural Design So Important? 16

2.4 Architectural Drivers 17

2.5 Design Concepts: The Building Blocks for Creating Structures 28

2.6 Architecture Design Decisions 38

2.7 Summary 40

2.8 Further Reading 41

 

Chapter 3: The Architecture Design Process 43

3.1 The Need for a Principled Method 43

3.2 Attribute-Driven Design 3.0 44

3.3 Following a Design Roadmap According to System Type 49

3.4 Identifying and Selecting Design Concepts 53

3.5 Producing Structures 58

3.6 Defining Interfaces 61

3.7 Creating Preliminary Documentation During Design 65

3.8 Tracking Design Progress 69

3.9 Summary 72

3.10 Further Reading 72

 

Chapter 4: Case Study: FCAPS System 75

4.1 Business Case 75

4.2 System Requirements 77

4.3 The Design Process 80

4.4 Summary 105

4.5 Further Reading 105

 

Chapter 5: Case Study: Big Data System 107

5.1 Business Case 107

5.2 System Requirements 108

5.3 The Design Process 111

5.4 Summary 143

5.5 Further Reading 144

 

Chapter 6: Case Study: Banking System 145

6.1 Business Case 145

6.2 Existing Architectural Documentation 149

6.3 The Design Process 151

6.4 Summary 158

6.5 Further Reading 159

 

Chapter 7: Other Design Methods 161

7.1 A General Model of Software Architecture Design 161

7.2 Architecture-Centric Design Method 164

7.3 Architecture Activities in the Rational Unified Process 165

7.4 The Process of Software Architecting 167

7.5 A Technique for Architecture and Design 169

7.6 Viewpoints and Perspectives Method 171

7.7 Summary 173

7.8 Further Reading 174

 

Chapter 8: Analysis in the Design Process 175

8.1 Analysis and Design 175

8.2 Why Analyze? 178

8.3 Analysis Techniques 179

8.4 Tactics-Based Analysis 180

8.5 Reflective Questions 186

8.6 Scenario-Based Design Reviews 187

8.7 Architecture Description Languages 190

8.8 Summary 191

8.9 Further Reading 192

 

Chapter 9: The Architecture Design Process in the Organization 193

9.1 Architecture Design and the Development Life Cycle 193

9.2 Organizational Aspects 202

9.3 Summary 204

9.4 Further Reading 204

 

Chapter 10: Final Words 207

10.1 On the Need for Methods 207

10.2 Next Steps 209

10.3 Further Reading 210

 

Appendix A: A Design Concepts Catalog 211

A.1 Reference Architectures 211

A.2 Deployment Patterns 221

A.3 Architectural Design Patterns 224

A.4 Tactics 230

A.5 Externally Developed Components 241

A.6 Summary 245

A.7 Further Reading 246

 

Appendix B: Tactics-Based Questionnaires 247

B.1 Using the Questionnaires 247

B.2 Availability 248

B.3 Interoperability 252

B.4 Modifiability 253

B.5 Performance 255

B.6 Security 257

B.7 Testability 260

B.8 Usability 261

B.9 DevOps 263

B.10 Further Reading 267

 

Glossary 269

About the Authors 275

Index 277 

Author

Humberto Cervantes is a professor at Universidad Autónoma Metropolitana Iztapalapa in Mexico City. His primary research interest is software architecture and, more specifically, the development of methods and tools to aid in the design process. He is active in promoting the adoption of these methods and tools in the software industry. Since 2006, Cervantes has been a consultant for software development companies in topics related to software architecture. He has authored numerous research papers and popularization articles, and has also coauthored one of the few books in Spanish on the topic of software architecture. Cervantes received a master’s degree and a Ph.D. from Université Joseph Fourier in Grenoble, France. He holds the Software Architecture Professional and ATAM Evaluator certificates from the SEI.

 

Rick Kazman is a professor at the University of Hawaii and a principal researcher at the Software Engineering Institute of Carnegie Mellon University. His primary research interests are software architecture, design and analysis tools, software visualization, and software engineering economics. Kazman has created several highly influential methods and tools for architecture analysis, including the SAAM (Software Architecture Analysis Method), the ATAM (Architecture Tradeoff Analysis Method), the CBAM (Cost-Benefit Analysis Method), and the Dali and Titan tools. He is the author of more than one hundred fifty peer-reviewed papers, and is coauthor of several books, including Software Architecture in Practice, Third Edition (Addison-Wesley, 2013), Evaluating Software Architectures (Addison-Wesley, 2002), and Ultra-Large-Scale Systems. Kazman received a B.A. (English/music) and M.Math (computer science) from the University of Waterloo, an M.A. (English) from York University, and a Ph.D. (computational linguistics) from Carnegie Mellon University.