Description

Book Synopsis
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

Table of Contents

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

Software Architecture

Product form

£131.35

Includes FREE delivery

RRP £145.95 – you save £14.60 (10%)

Order before 4pm today for delivery by Wed 31 Dec 2025.

A Hardback by Richard N. Taylor, Nenad Medvidovic, Eric Dashofy

15 in stock


    View other formats and editions of Software Architecture by Richard N. Taylor

    Publisher: John Wiley & Sons Inc
    Publication Date: 06/02/2009
    ISBN13: 9780470167748, 978-0470167748
    ISBN10: 0470167742

    Description

    Book Synopsis
    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

    Table of Contents

    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

    Recently viewed products

    © 2025 Book Curl

      • American Express
      • Apple Pay
      • Diners Club
      • Discover
      • Google Pay
      • Maestro
      • Mastercard
      • PayPal
      • Shop Pay
      • Union Pay
      • Visa

      Login

      Forgot your password?

      Don't have an account yet?
      Create account