Acknowledgments xi
About the Author xii
Introduction xiii
Chapter 1: Software Architecture 1
Fundamental Organization 2
Of a System 4
Embodied in Its Components 5
Their Relationships to Each Other 7
Their Relationships to the Environment 9
Principles Governing Its Design 11
And Evolution 14
Summary 16
Chapter 2: Context 17
Concepts 17
Dependability 19
Architecturally Significant Requirements 21
Product Families 23
One Product, Multiple Platforms 24
Product Lines 25
Product Suites 27
Cross-Platform Platforms 28
Building Platforms 30
Standards 32
Summary 34
Chapter 3: Change 35
Stages of Change 36
Types of Change 37
Product-Driven Change 38
Technology-Driven Change 41
Simplicity 43
Investment Mindset 46
Incremental Delivery 50
Architectural Evolution 52
Summary 55
Chapter 4: Process 57
Document the System 58
Work Toward a Vision 61
Write Change Proposals 62
Maintain a Backlog 64
Consider Alternatives 66
Not Doing Things 70
Urgent versus Important 70
Redocument the System 71
Summary 72
Chapter 5: Design 75
How Architecture Accelerates Design 76
How Design Forces Architectural Evolution 79
Decomposition 81
Composition 82
Composition and Platforms 84
Incrementalism 85
Parallelism 86
Organizational Structure 87
Work in the Open 88
Giving Up 91
Done 92
Summary 93
Chapter 6: Decisions 95
Will More Information Help? 96
What’s Happening in the Meantime? 98
How Many Decisions Are in Play? 99
What’s the Cost of Not Doing It? 100
Can I Live with This Change? 102
What Is the Cost of Getting This Wrong? 104
How Much More Certain Can I Be? 105
Is This My Decision to Make? 106
Am I Aligned? 108
Can I Document It? 109
Summary 110
Chapter 7: Practices 113
Backlog 114
Catalogs 118
Templates 119
Reviews 122
Status 125
Velocity 127
Thinking 130
Summary 132
Chapter 8: Communication 133
Mental Models 134
Writing 136
Talking 139
Information Architecture 142
Naming Things 147
Dictionaries 150
Listening 152
Summary 154
Chapter 9: The Architecture Team 157
Specialization 158
Structure 160
Leadership 165
Responsibility 166
Talent 169
Diversity 170
Culture 171
Gathering 173
Seminars and Summits 174
Summary 175
Chapter 10: The Product Team 177
Working with Development Methodologies 178
Working with Product Management 180
Helping Out 184
Other Outcomes 186
Setting Boundaries 187
Working with User Experience 188
Working with Program Management 190
Working with Engineering 192
Following Through 195
Working with Testing 197
Working with Operations 200
Summary 203
Conclusion 205
References 211
Index 213