Software Architecture: Foundations, Theory, and Practice
Buy Rights Online Buy Rights

Rights Contact Login For More Details

More About This Title Software Architecture: Foundations, Theory, and Practice

English

Software architecture is foundational to the development of large, practical software-intensive applications. This brand-new text covers all facets of software architecture and how it serves as the intellectual centerpiece of software development and evolution. Critically, this text focuses on supporting creation of real implemented systems. Hence the text details not only modeling techniques, but design, implementation, deployment, and system adaptation -- as well as a host of other topics -- putting the elements in context and comparing and contrasting them with one another. Rather than focusing on one method, notation, tool, or process, this new text/reference widely surveys software architecture techniques, enabling the instructor and practitioner to choose the right tool for the job at hand. Software Architecture is intended for upper-division undergraduate and graduate courses in software architecture, software design, component-based software engineering, and distributed systems; the text may also be used in introductory as well as advanced software engineering courses.

English

Richard N. Taylor is a Professor of Information and Computer Sciences at the University of California at Irvine and a member of the Department of Informatics. He received the Ph.D. degree in Computer Science from the University of Colorado at Boulder in 1980. Professor Taylor is the Director of the Institute for Software Research, which is dedicated to fostering innovative basic and applied research in software and information technologies through partnerships with industry and government. He has served as chairman of ACM's Special Interest Group on Software Engineering, SIGSOFT, chairman of the steering committee for the International Conference on Software Engineering, and was general chair of the 1999 International Joint Conference on Work Activities, Coordination, and Collaboration and the 2004 International Symposium on the Foundations of Software Engineering. Taylor was a 1985 recipient of a Presidential Young Investigator Award. In 1998 he was recognized as an ACM Fellow and in 2005 was awarded the ACM SIGSOFT Distinguished Service Award.

English

1 The Big Idea 1

1.1 The Power of Analogy: The Architecture of Buildings, 2

1.1.1 Limitations of the Analogy, 5

1.1.2 So, What’s the Big Idea?, 6

1.2 The Power and Necessity of Big Ideas: The Architecture of the Web, 7

1.3 The Power of Architecture in the Small: Architecture on the Desktop, 12

1.4 The Power of Architecture in Business: Productivity and Product Lines, 15

1.5 End Matter, 20

1.6 Review Questions, 21

1.7 Exercises, 21

1.8 Further Reading, 21

2 Architectures in Context: The Reorientation of Software Engineering 23

2.1 Fundamental Understandings, 24

2.2 Requirements, 25

2.3 Design, 29

2.3.1 Design Techniques, 31

2.4 Implementation, 33

2.4.1 Implementation Strategies, 35

2.5 Analysis and Testing, 38

2.6 Evolution and Maintenance, 40

2.7 Processes, 42

2.7.1 The Turbine Visualization, 43

2.7.2 Example Process Depictions, 49

2.8 End Matter, 52

2.9 Review Questions, 53

2.10 Exercises, 54

2.11 Further Reading, 55

3 Basic Concepts 57

3.1 Terminology, 58

3.1.1 Architecture, 58

3.1.2 Component, 68

3.1.3 Connector, 70

3.1.4 Configuration, 72

3.1.5 Architectural Style, 72

3.1.6 Architectural Pattern, 73

3.2 Models, 75

3.3 Processes, 75

3.4 Stakeholders, 79

3.5 End Matter, 79

3.6 Review Questions, 80

3.7 Exercises, 80

3.8 Further Reading, 81

4 Designing Architectures 83

4.1 The Design Process, 85

4.2 Architectural Conception, 87

4.2.1 Fundamental Conceptual Tools, 87

4.2.2 The Grand Tool: Refined Experience, 90

4.3 Refined Experience in Action: Styles and Architectural Patterns, 91

4.3.1 Domain Specific Software Architectures, 93

4.3.2 Architectural Patterns, 94

4.3.3 Introduction to Styles, 99

4.3.4 Simple Styles, 102

4.3.5 More Complex Styles, 124

4.3.6 Discussion: Patterns and Styles, 137

4.3.7 Design Recovery, 139

4.4 Architectural Conception in Absence of Experience: Unprecedented Design, 144

4.5 Putting it All Together: Design Processes Revisited, 149

4.5.1 Insights from Requirements, 150

4.5.2 Insights from Implementation, 151

4.6 End Matter, 152

4.7 Review Questions, 153

4.8 Exercises, 154

4.9 Further Reading, 154

5 Connectors 157

5.1 Connectors in Action: A Motivating Example, 159

5.2 Connector Foundations, 161

5.3 Connector Roles, 163

5.4 Connector Types and Their Variation Dimensions, 164

5.4.1 Procedure Call Connectors, 165

5.4.2 Event Connectors, 166

5.4.3 Data Access Connectors, 167

5.4.4 Linkage Connectors, 168

5.4.5 Stream Connectors, 169

5.4.6 Arbitrator Connectors, 170

5.4.7 Adaptor Connectors, 170

5.4.8 Distributor Connectors, 171

5.5 Example Connectors, 172

5.5.1 Event-Based Data Distribution Connectors, 173

5.5.2 Grid-Based Data Distribution Connectors, 174

5.5.3 Client-Server–Based Data Distribution Connectors, 175

5.5.4 P2P-Based Data Distribution Connectors, 176

5.6 Using the Connector Framework, 176

5.6.1 Selecting Appropriate Connectors, 177

5.6.2 Detecting Mismatches, 180

5.7 End Matter, 181

5.8 Review Questions, 182

5.9 Exercises, 183

5.10 Further Reading, 183

6 Modeling 185

6.1 Modeling Concepts, 186

6.1.1 Stakeholder-Driven Modeling, 186

6.1.2 Basic Architectural Concepts, 188

6.1.3 Elements of the Architectural Style, 189

6.1.4 Static and Dynamic Aspects, 190

6.1.5 Functional and Non-Functional Aspects, 191

6.2 Ambiguity, Accuracy, and Precision, 191

6.2.1 Ambiguity, 192

6.2.2 Accuracy and Precision, 192

6.3 Complex Modeling: Mixed Content and Multiple Views, 194

6.3.1 Views and Viewpoints, 194

6.3.2 Consistency among Views, 196

6.4 Evaluating Modeling Techniques, 198

6.5 Specific Modeling Techniques, 199

6.5.1 Generic Techniques, 199

6.5.2 Early Architecture Description Languages, 209

6.5.3 Domain- and Style-Specific ADLs, 221

6.5.4 Extensible ADLs, 229

6.6 When Systems Become Too Complex to Model, 242

6.7 End Matter, 243

6.8 Review Questions, 246

6.9 Exercises, 246

6.10 Further Reading, 246

7 Visualization 249

7.1 Visualization Concepts, 250

7.1.1 Canonical Visualizations, 250

7.1.2 Textual Visualizations, 251

7.1.3 Graphical Visualizations, 253

7.1.4 Hybrid Visualizations, 255

7.1.5 The Relationship between Visualizations and Views, 255

7.2 Evaluating Visualizations, 259

7.2.2 Constructing a Visualization, 261

7.2.3 Coordinating Visualizations, 264

7.2.4 Beyond Design: Using Visualization Dynamically, 266

7.3 Common Issues in Visualization, 268

7.3.1 Same Symbol, Different Meaning, 268

7.3.2 Differences without Meaning, 269

7.3.3 Decorations without Meaning, 269

7.3.4 Borrowed Symbol, Different Meaning, 270

7.4 Evaluating Visualization Techniques, 272

7.5 Techniques, 272

7.5.1 Textual Visualizations, 272

7.5.2 Informal Graphical Editors, 274

7.5.3 UML: The Unified Modeling Language, 276

7.5.4 Rapide, 280

7.5.5 The Labeled Transition State Analyzer (LTSA), 282

7.5.6 xADL 2.0, 284

7.6 End Matter, 288

7.7 Review Questions, 289

7.8 Exercises, 290

7.9 Further Reading, 290

8 Analysis 291

8.1 Analysis Goals, 295

8.1.1 Completeness, 295

8.1.2 Consistency, 296

8.1.3 Compatibility, 302

8.1.4 Correctness, 303

8.2 Scope of Analysis, 303

8.2.1 Component- and Connector-Level Analysis, 304

8.2.2 Subsystem- and System-Level Analysis, 305

8.2.3 Data Exchanged in the System or Subsystem, 307

8.2.4 Architectures at Different Abstraction Levels, 308

8.2.5 Comparison of Two or More Architectures, 310

8.3 Architectural Concern being Analyzed, 310

8.4 Level of Formality of Architectural Models, 312

8.5 Type of Analysis, 313

8.6 Level of Automation, 314

8.7 System Stakeholders, 315

8.8 Analysis Techniques, 317

8.8.1 Inspections and Reviews, 317

8.8.2 Model-Based Analysis, 322

8.8.3 Simulation-Based Analysis, 328

8.9 End Matter, 333

8.10 Review Questions, 334

8.11 Exercises, 335

8.12 Further Reading, 336

9 Implementation 337

9.1 Concepts, 338

9.1.1 The Mapping Problem, 338

9.1.2 Architecture Implementation Frameworks, 340

9.1.3 Evaluating Frameworks, 343

9.1.4 Middleware, Component Models, and Application Frameworks, 343

9.1.5 Building a New Framework, 346

9.1.6 Concurrency, 347

9.1.7 Generative Technologies, 348

9.1.8 Ensuring Architecture-to-Implementation Consistency, 349

9.2 Existing Frameworks, 350

9.2.1 Frameworks for the Pipe-and-Filter Architectural Style, 350

9.2.2 Frameworks for the C2 Architectural Style, 352

9.3 Examples, 360

9.3.1 Implementing Lunar Lander in the Pipe-and-Filter Style using the java.io Framework, 360

9.3.2 Implementing Lunar Lander in the C2-Style Using the Lightweight C2 Framework, 366

9.4 End Matter, 377

9.5 Review Questions, 378

9.6 Exercises, 378

9.7 Further Reading, 379

10 Deployment and Mobility 381

10.1 Overview of Deployment and Mobility Challenges, 385

10.2 Software Architecture and Deployment, 387

10.2.1 Basic Concepts, 388

10.2.2 Deployment Activities, 388

10.2.3 Tool Support, 402

10.3 Software Architecture and Mobility, 405

10.3.1 Basic Concepts, 405

10.3.2 Mobility Paradigms, 405

10.3.3 Challenges in Migrating Code, 406

10.4 End Matter, 408

10.5 Review Questions, 409

10.6 Exercises, 409

10.7 Further Reading, 410

11 Applied Architectures and Styles 413

11.1 Distributed and Networked Architectures, 414

11.1.1 Limitations of the Distributed Systems Viewpoint, 415

11.2 Architectures for Network-Based Applications, 416

11.2.1 The REpresentational State Transfer Style (REST), 416

11.2.2 Commercial Internet-Scale Applications, 422

11.3 Decentralized Architectures, 424

11.3.1 Shared Resource Computation: The Grid World, 425

11.3.2 Peer-to-Peer Styles, 426

11.3.3 Summary Notes on Latency and Agency, 432

11.4 Service-Oriented Architectures and Web Services, 433

11.5 Architectures from Specific Domains, 437

11.5.1 Robotics, 437

11.5.2 Wireless Sensor Networks, 443

11.6 End Matter, 443

11.7 Review Questions, 445

11.8 Exercises, 445

11.9 Further Reading, 446

12 Designing for Non-Functional Properties 447

12.1 Efficiency, 450

12.1.1 Software Components and Efficiency, 451

12.1.2 Software Connectors and Efficiency, 453

12.1.3 Architectural Configurations and Efficiency, 455

12.2 Complexity, 459

12.2.1 Software Components and Complexity, 460

12.2.2 Software Connectors and Complexity, 463

12.2.3 Architectural Configurations and Complexity, 464

12.3 Scalability and Heterogeneity, 467

12.3.1 Software Components and Scalability, 468

12.3.2 Software Connectors and Scalability, 471

12.3.3 Architectural Configurations and Scalability, 473

12.4 Adaptability, 475

12.4.1 Software Components and Adaptability, 475

12.4.2 Software Connectors and Adaptability, 476

12.4.3 Architectural Configurations and Adaptability, 477

12.5 Dependability, 478

12.5.1 Software Components and Dependability, 480

12.5.2 Software Connectors and Dependability, 480

12.5.3 Architectural Configurations and Dependability, 481

12.6 End Matter, 483

12.7 Review Questions, 484

12.8 Exercises, 484

12.9 Further Reading, 485

13 Security and Trust 487

13.1 Security, 489

13.2 Design Principles, 492

13.3 Architectural Access Control, 497

13.3.1 Access Control Models, 498

13.3.2 Connector-Centric Architectural Access Control, 499

13.4 Trust Management, 508

13.4.1 Trust, 509

13.4.2 Trust Model, 510

13.4.3 Reputation-Based Systems, 510

13.4.4 Architectural Approach to Decentralized Trust Management, 514

13.5 End Matter, 522

13.6 Review Questions, 523

13.7 Exercises, 523

13.8 Further Reading, 524

14 Architectural Adaptation 525

14.1 Concepts of Architecture-Centric Adaptation, 526

14.1.1 Sources and Motivations for Change, 526

14.1.2 Shearing Layers, 529

14.1.3 Structural Elements Subject to Change, 532

14.1.4 Change Agents and Context, 535

14.1.5 Architecture: The Central Abstraction, 539

14.2 A Conceptual Framework for Architectural Adaptation, 539

14.3 Techniques for Supporting Architecture-Centric Change, 542

14.3.1 Basic Techniques Corresponding to Activities of the Conceptual Framework, 542

14.3.2 Architectures/Styles that Support Adaptation, 551

14.3.3 The Special Problems of On-the-Fly and Autonomous Adaptation, 557

14.4 End Matter, 561

14.5 Review Questions, 562

14.6 Exercises, 563

14.7 Further Reading, 563

15 Domain-Specific Software Engineering 565

15.1 Domain-Specific Software Engineering in a Nutshell, 570

15.1.1 Similar Problems, Similar Solutions, 570

15.1.2 Viewing DSSE through the Prism of Domain, Business, and Technology, 573

15.2 Domain-Specific Software Architecture, 574

15.2.1 Domain Knowledge, 574

15.2.2 Canonical Requirements, 585

15.2.3 Canonical Solution Strategies—Reference Architectures, 588

15.2.4 Product Lines and Architecture, 591

15.2.5 Product-Line Concepts, 592

15.2.6 Specifying the Architecture of a Product Line, 594

15.2.7 Capturing Variations over Time, 559

15.2.8 Using Product Lines as Tools for What-If Analysis, 600

15.2.9 Implementing Product Lines, 602

15.2.10 Unifying Product Architectures with Different Intellectual Heritage, 604

15.2.11 Organizational Issues in Creating and Managing Product Lines, 606

15.3 DSSAs, Product Lines, and Architectural Styles, 606

15.4 DSSE Examples, 608

15.4.1 Koala and Consumer Electronics, 608

15.4.2 Software-Defined Radios, 611

15.5 End Matter, 616

15.6 Review Questions, 618

15.7 Exercises, 618

15.8 Further Reading, 619

16 Standards 621

16.1 What Are Standards?, 622

16.1.1 Why Use Standards?, 623

16.1.2 Drawbacks of Standards, 624

16.1.3 When to Adopt, 625

16.2 Specific Standards, 627

16.2.1 Conceptual Standards, 627

16.2.2 Notational Standards, 639

16.2.3 SysML, 641

16.2.4 Standard Tools, 645

16.2.5 Telelogic System Architect, 647

16.3 Process Standards, 648

16.3.1 Rational Unified Process, 648

16.3.2 Model-Driven Architecture, 650

16.4 End Matter, 651

16.5 Review Questions, 653

16.6 Exercises, 653

16.7 Further Reading, 654

17 People, Roles, and Teams 655

17.1 Who Are Software Architects?, 657

17.1.1 Architect as a Software Designer, 658

17.1.2 Architect as a Domain Expert, 658

17.1.3 Architect as a Software Technologist, 659

17.1.4 Architect as a Standards Compliance Expert, 660

17.1.5 Architect as a Software Engineering Economist, 661

17.1.6 Some Bad Habits, 661

17.2 What Do Software Architects Do?, 663

17.2.1 Develop Project Strategy, 663

17.2.2 Design Systems, 664

17.2.3 Communicate with Stakeholders, 664

17.2.4 Lead, 664

17.3 How Do Software Architects Work?, 665

17.3.1 Balance of Skills, 665

17.3.2 Allegiance to the Project, 666

17.3.3 Allegiance to the Organization, 667

17.3.4 Duration of Involvement, 668

17.3.5 Team Structure, 669

17.4 How Do Software Architects Relate to Other Stakeholders?, 669

17.4.1 Architects and Engineers, 670

17.4.2 Architects and Managers, 671

17.4.3 Other Stakeholders, 671

17.5 Remaining Challenges, 673

17.6 End Matter, 673

17.7 Review Questions, 674

17.8 Further Reading, 674

Bibliography 675

Index 691

loading