Chapter 1 What Is Software Architecture?
1.1 What Software Architecture Is and What It Isn’t
1.2 Architectural Structures and Views
1.4 What Makes a “Good” Architecture?
Chapter 2 Why Is Software Architecture Important?
2.1 Inhibiting or Enabling a System’s Quality Attributes
2.2 Reasoning About and Managing Change
2.3 Predicting System Qualities
2.4 Enhancing Communication among Stakeholders
2.5 Carrying Early Design Decisions
2.6 Defining Constraints on an Implementation
2.7 Influencing the Organizational Structure
2.8 Enabling Evolutionary Prototyping
2.9 Improving Cost and Schedule Estimates
2.10 Supplying a Transferable, Reusable Model
2.11 Allowing Incorporation of Independently Developed Components
2.12 Restricting the Vocabulary of Design Alternatives
2.13 Providing a Basis for Training
Chapter 3 The Many Contexts of Software Architecture
3.1 Architecture in a Technical Context
3.2 Architecture in a Project Life-Cycle Context
3.3 Architecture in a Business Context
3.4 Architecture in a Professional Context
3.6 How Is Architecture Influenced?
3.7 What Do Architectures Influence?
Chapter 4 Understanding Quality Attributes
4.1 Architecture and Requirements
4.3 Quality Attribute Considerations
4.4 Specifying Quality Attribute Requirements
4.5 Achieving Quality Attributes through Tactics
4.6 Guiding Quality Design Decisions
5.1 Availability General Scenario
5.3 A Design Checklist for Availability
6.1 Interoperability General Scenario
6.2 Tactics for Interoperability
6.3 A Design Checklist for Interoperability
7.1 Modifiability General Scenario
7.3 A Design Checklist for Modifiability
8.1 Performance General Scenario
8.3 A Design Checklist for Performance
9.3 A Design Checklist for Security
10.1 Testability General Scenario
10.3 A Design Checklist for Testability
11.1 Usability General Scenario
11.3 A Design Checklist for Usability
Chapter 12 Other Quality Attributes
12.1 Other Important Quality Attributes
12.2 Other Categories of Quality Attributes
12.3 Software Quality Attributes and System Quality Attributes
12.4 Using Standard Lists of Quality Attributes—or Not
12.5 Dealing with “X-ability”: Bringing a New Quality Attribute into the Fold
Chapter 13 Architectural Tactics and Patterns
13.2 Overview of the Patterns Catalog
13.3 Relationships between Tactics and Patterns
Chapter 14 Quality Attribute Modeling and Analysis
14.1 Modeling Architectures to Enable Quality Attribute Analysis
14.2 Quality Attribute Checklists
14.3 Thought Experiments and Back-of-the-Envelope Analysis
14.4 Experiments, Simulations, and Prototypes
14.5 Analysis at Different Stages of the Life Cycle
Part Three Architecture in the Life Cycle
Chapter 15 Architecture in Agile Projects
15.2 Agility and Architecture Methods
15.3 A Brief Example of Agile Architecting
15.4 Guidelines for the Agile Architect
Chapter 16 Architecture and Requirements
16.1 Gathering ASRs from Requirements Documents
16.2 Gathering ASRs by Interviewing Stakeholders
16.3 Gathering ASRs by Understanding the Business Goals
16.4 Capturing ASRs in a Utility Tree
16.5 Tying the Methods Together
Chapter 17 Designing an Architecture
17.2 The Attribute-Driven Design Method
Chapter 18 Documenting Software Architectures
18.1 Uses and Audiences for Architecture Documentation
18.2 Notations for Architecture Documentation
18.6 Building the Documentation Package
18.8 Architecture Documentation and Quality Attributes
18.9 Documenting Architectures That Change Faster Than You Can Document Them
18.10 Documenting Architecture in an Agile Development Project
Chapter 19 Architecture, Implementation, and Testing
19.1 Architecture and Implementation
Chapter 20 Architecture Reconstruction and Conformance
20.1 Architecture Reconstruction Process
20.5 Architecture Analysis: Finding Violations
Chapter 21 Architecture Evaluation
21.2 The Architecture Tradeoff Analysis Method
21.3 Lightweight Architecture Evaluation
Chapter 22 Management and Governance
Part Four Architecture and Business
Chapter 23 Economic Analysis of Architectures
23.2 The Basis for the Economic Analyses
23.3 Putting Theory into Practice: The CBAM
23.4 Case Study: The NASA ECS Project
Chapter 24 Architecture Competence
24.1 Competence of Individuals: Duties, Skills, and Knowledge of Architects
24.2 Competence of a Software Architecture Organization
Chapter 25 Architecture and Software Product Lines
25.1 An Example of Product Line Variability
25.2 What Makes a Software Product Line Work?
25.4 The Quality Attribute of Variability
25.5 The Role of a Product Line Architecture
25.7 Evaluating a Product Line Architecture
25.8 Key Software Product Line Issues
Chapter 26 Architecture in the Cloud
26.2 Service Models and Deployment Options
26.6 Architecting in a Cloud Environment
Chapter 27 Architectures for the Edge
27.1 The Ecosystem of Edge-Dominant Systems
27.2 Changes to the Software Development Life Cycle
27.3 Implications for Architecture