Published by Addison-Wesley Professional (March 10, 2021) © 2020
Juval Löwy
Right Your Software and Transform Your Career
Righting Software presents the proven, structured, and highly engineered approach to software design that renowned architect Juval Löwy has practiced and taught around the world. Although companies of every kind have successfully implemented his original design ideas across hundreds of systems, these insights have never before appeared in print.
Based on first principles in software engineering and a comprehensive set of matching tools and techniques, Löwy’s methodology integrates system design and project design. First, he describes the primary area where many software architects fail and shows how to decompose a system into smaller building blocks or services, based on volatility. Next, he shows how to flow an effective project design from the system design; how to accurately calculate the project duration, cost, and risk; and how to devise multiple execution options.
The method and principles in Righting Software apply regardless of your project and company size, technology, platform, or industry. Löwy starts the reader on a journey that addresses the critical challenges of software development today by righting software systems and projects as well as careers—and possibly the software industry as a whole. Software professionals, architects, project leads, or managers at any stage of their career will benefit greatly from this book, which provides guidance and knowledge that would otherwise take decades and many projects to acquire.
Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.
Righting Software presents the proven, structured, and highly engineered approach to software design that renowned architect Juval Löwy has practiced and taught around the world. Although companies of every kind have successfully implemented his original design ideas across hundreds of systems, these insights have never before appeared in print.
Based on first principles in software engineering and a comprehensive set of matching tools and techniques, Löwy’s methodology integrates system design and project design. First, he describes the primary area where many software architects fail and shows how to decompose a system into smaller building blocks or services, based on volatility. Next, he shows how to flow an effective project design from the system design; how to accurately calculate the project duration, cost, and risk; and how to devise multiple execution options.
The method and principles in Righting Software apply regardless of your project and company size, technology, platform, or industry. Löwy starts the reader on a journey that addresses the critical challenges of software development today by righting software systems and projects as well as careers—and possibly the software industry as a whole. Software professionals, architects, project leads, or managers at any stage of their career will benefit greatly from this book, which provides guidance and knowledge that would otherwise take decades and many projects to acquire.
Preface xxiii
About the Author xxxiii
Chapter 1: The Method 3
What Is The Method? 4
What The Method Is Not 9
Part I: System Design 11
Chapter 2: Decomposition 13
Avoid Functional Decomposition 14
Volatility-Based Decomposition 30
Identifying Volatility 37
Chapter 3: Structure 55
Use Cases and Requirements 56
Layered Approach 58
Typical Layers 60
Classification Guidelines 65
Subsystems and Services 70
Open and Closed Architectures 75
Chapter 4: Composition 83
Requirements and Changes 83
Composable Design 85
There Is No Feature 91
Handling Change 92
Chapter 5: System Design Example 95
System Overview 96
The Anti-Design Effort 106
Business Alignment 108
The Architecture 111
Design Validation 124
What’s Next? 135
Part II: Project Design 137
Chapter 6: Motivation 139
Why Project Design? 139
Chapter 7: Project Design Overview 145
Defining Success 145
Project Initial Staffing 147
Educated Decisions 151
Services and Developers 153
Effort Estimations 157
Critical Path Analysis 166
Scheduling Activities 176
Project Cost 184
Earned Value Planning 187
Roles and Responsibilities 194
Chapter 8: Network and Float 195
The Network Diagram 195
Floats 199
Floats-Based Scheduling 205
Chapter 9: Time and Cost 207
Accelerating Software Projects 207
Schedule Compression 210
Time–Cost Curve 214
Project Cost Elements 222
Network Compression 231
Chapter 10: Risk 235
Choosing Options 235
Time–Risk Curve 236
Risk Modeling 239
Compression and Risk 248
Risk Decompression 249
Risk Metrics 253
Chapter 11: Project Design in Action 255
The Mission 255
Finding the Normal Solution 265
Network Compression 276
Efficiency Analysis 289
Time–Cost Curve 290
Planning and Risk 293
SDP Review 303
Chapter 12: Advanced Techniques 307
God Activities 307
Risk Crossover Point 308
Finding the Decompression Target 313
Geometric Risk 315
Execution Complexity 320
Very Large Projects 324
Small Projects 331
Design by Layers 332
Chapter 13: Project Design Example 335
Estimations 335
Dependencies and Project Network 339
The Normal Solution 341
Compressed Solution 346
Design by Layers 350
Subcritical Solution 353
Comparing the Options 355
Planning and Risk 355
Preparing for the SDP Review 359
Chapter 14: Concluding Thoughts 361
When to Design a Project 361
General Guidelines 365
Design of Project Design 370
In Perspective 372
The Hand-Off 374
In Practice 377
Debriefing Project Design 378
About Quality 379
Appendix A: Project Tracking 387
Activity Life Cycle and Status 388
Project Status 392
Tracking Progress and Effort 395
Projections 396
Projections and Corrective Actions 398
More on Projections 404
Appendix B: Service Contract Design 407
Is This a Good Design? 407
Modularity and Cost 409
Services and Contracts 411
Factoring Contracts 415
Contract Design Metrics 419
The Contract Design Challenge 423
Appendix C: Design Standard 425
The Prime Directive 426
Directives 426
System Design Guidelines 426
Project Design Guidelines 427
Project Tracking Guidelines 429
Service Contract Design Guidelines 430
Index 431
About the Author xxxiii
Chapter 1: The Method 3
What Is The Method? 4
What The Method Is Not 9
Part I: System Design 11
Chapter 2: Decomposition 13
Avoid Functional Decomposition 14
Volatility-Based Decomposition 30
Identifying Volatility 37
Chapter 3: Structure 55
Use Cases and Requirements 56
Layered Approach 58
Typical Layers 60
Classification Guidelines 65
Subsystems and Services 70
Open and Closed Architectures 75
Chapter 4: Composition 83
Requirements and Changes 83
Composable Design 85
There Is No Feature 91
Handling Change 92
Chapter 5: System Design Example 95
System Overview 96
The Anti-Design Effort 106
Business Alignment 108
The Architecture 111
Design Validation 124
What’s Next? 135
Part II: Project Design 137
Chapter 6: Motivation 139
Why Project Design? 139
Chapter 7: Project Design Overview 145
Defining Success 145
Project Initial Staffing 147
Educated Decisions 151
Services and Developers 153
Effort Estimations 157
Critical Path Analysis 166
Scheduling Activities 176
Project Cost 184
Earned Value Planning 187
Roles and Responsibilities 194
Chapter 8: Network and Float 195
The Network Diagram 195
Floats 199
Floats-Based Scheduling 205
Chapter 9: Time and Cost 207
Accelerating Software Projects 207
Schedule Compression 210
Time–Cost Curve 214
Project Cost Elements 222
Network Compression 231
Chapter 10: Risk 235
Choosing Options 235
Time–Risk Curve 236
Risk Modeling 239
Compression and Risk 248
Risk Decompression 249
Risk Metrics 253
Chapter 11: Project Design in Action 255
The Mission 255
Finding the Normal Solution 265
Network Compression 276
Efficiency Analysis 289
Time–Cost Curve 290
Planning and Risk 293
SDP Review 303
Chapter 12: Advanced Techniques 307
God Activities 307
Risk Crossover Point 308
Finding the Decompression Target 313
Geometric Risk 315
Execution Complexity 320
Very Large Projects 324
Small Projects 331
Design by Layers 332
Chapter 13: Project Design Example 335
Estimations 335
Dependencies and Project Network 339
The Normal Solution 341
Compressed Solution 346
Design by Layers 350
Subcritical Solution 353
Comparing the Options 355
Planning and Risk 355
Preparing for the SDP Review 359
Chapter 14: Concluding Thoughts 361
When to Design a Project 361
General Guidelines 365
Design of Project Design 370
In Perspective 372
The Hand-Off 374
In Practice 377
Debriefing Project Design 378
About Quality 379
Appendix A: Project Tracking 387
Activity Life Cycle and Status 388
Project Status 392
Tracking Progress and Effort 395
Projections 396
Projections and Corrective Actions 398
More on Projections 404
Appendix B: Service Contract Design 407
Is This a Good Design? 407
Modularity and Cost 409
Services and Contracts 411
Factoring Contracts 415
Contract Design Metrics 419
The Contract Design Challenge 423
Appendix C: Design Standard 425
The Prime Directive 426
Directives 426
System Design Guidelines 426
Project Design Guidelines 427
Project Tracking Guidelines 429
Service Contract Design Guidelines 430
Index 431