Balancing Coupling in Software Design

Universal Design Principles for Architecting Modular Software Systems

Paperback Engels 2024 9780137353484
Verwachte levertijd ongeveer 9 werkdagen

Samenvatting

This book identifies the deeper problem—how software architects and designers approach coupling – and introduces an important new approach for creating more successful designs whether you use microservices or not. Instead of blindly avoiding coupling, leading software architecture expert Vladik (Vlad) Khononov proposes a novel method that transforms it into a powerful design tool: “balanced multi-dimensional coupling.” Khononov begins by surveying existing methods of evaluating coupling, and illuminating their strengths and limitations in the context of modern distributed systems. Next, he introduces a new multi-dimensional coupling model, and demonstrates how to harness it to build modular software.

Instead of focusing solely on a single approach, Balancing Coupling in Software Design illuminates underlying design principles that are ubiquitous in SOA, microservices, DDD, design patterns, and other paradigms, revealing how each of them can fail if thoughtful design principles for coupling are neglected—and how balanced coupling can make all of them work more effectively.

Specificaties

ISBN13:9780137353484
Taal:Engels
Bindwijze:Paperback

Lezersrecensies

Wees de eerste die een lezersrecensie schrijft!

Inhoudsopgave

<p>Series Editor Foreword xv<br>Foreword by Rebecca Wirfs-Brock xix<br>Foreword by Kent Beck xxi<br>Preface xxiii<br>Acknowledgments xxix<br>About the Author xxxi</p> <p><strong>Introduction 1</strong></p> <p><strong>Part I: Coupling 3</strong></p> <p><strong>Chapter 1: Coupling and System Design 5</strong><br>What Is Coupling? 5<br>Magnitude of Coupling 6<br>Flow of Knowledge 10<br>Systems 10<br>Key Takeaways 16<br>Quiz 17</p> <p><strong>Chapter 2: Coupling and Complexity: Cynefin 19</strong><br>What Is Complexity? 19<br>Cynefin 20<br>Comparing Cynefin Domains 26<br>Cynefin in Software Design 27<br>Cynefin Applications 31<br>Cynefin and Complexity 32<br>Key Takeaways 32<br>Quiz 33</p> <p><strong>Chapter 3: Coupling and Complexity: Interactions 35</strong><br>Nature of Complexity 35<br>Complexity and System Design 36<br>Hierarchical Complexity 39<br>Degrees of Freedom 43<br>Complexity and Constraints 46<br>Coupling and Complex Interactions 47<br>Example: Connecting Coupling and Complexity 48<br>Key Takeaways 54<br>Quiz 54</p> <p><strong>Chapter 4: Coupling and Modularity 57</strong><br>Modularity 57<br>Modules 59<br>Modularity in Software Systems 62<br>Modularity, Complexity, and Coupling 68<br>Coupling in Modularity 73<br>Key Takeaways 74<br>Quiz 74</p> <p><strong>Part II: Dimensions 77</strong></p> <p><strong>Chapter 5: Structured Design's Module Coupling 79</strong><br>Structured Design 80<br>Module Coupling 80<br>Comparison of Module Coupling Levels 94<br>Key Takeaways 95<br>Quiz 96</p> <p><strong>Chapter 6: Connascence 97</strong><br>What Is Connascence? 97<br>Static Connascence 98<br>Dynamic Connascence 104<br>Evaluating Connascence 110<br>Key Takeaways 113<br>Quiz 114</p> <p><strong>Chapter 7: Integration Strength 117</strong><br>Strength of Coupling 118<br>Integration Strength 121<br>Intrusive Coupling 122<br>Functional Coupling 125<br>Model Coupling 128<br>Contract Coupling 134<br>Integration Strength Discussion 143<br>Integration Strength and Asynchronous Execution 146<br>Key Takeaways 147<br>Quiz 148</p> <p><strong>Chapter 8: Distance 151</strong><br>Distance and Encapsulation Boundaries 151<br>Additional Factors Affecting Distance 157<br>Distance Versus Proximity 160<br>Distance Versus Integration Strength 161<br>Key Takeaways 161<br>Quiz 162</p> <p><strong>Chapter 9: Volatility 165</strong><br>Changes and Coupling 165<br>Why Software Changes 166<br>Evaluating Rates of Changes 169<br>Volatility and Integration Strength 175<br>Inferred Volatility 177<br>Key Takeaways 178<br>Quiz 179</p> <p><strong>Part III: Balance 181</strong></p> <p><strong>Chapter 10: Balancing Coupling 183</strong><br>Combining the Dimensions of Coupling 184<br>Combining Strength, Distance, and Volatility 189<br>Balancing Coupling on a Numeric Scale 192<br>Key Takeaways 198<br>Quiz 199</p> <p><strong>Chapter 11: Rebalancing Coupling 201</strong><br>Resilient Design 201<br>Software Change Vectors 202<br>Rebalancing Coupling 205<br>Key Takeaways 213<br>Quiz 213</p> <p><strong>Chapter 12: Fractal Geometry of Software Design 215</strong><br>Growth 215<br>Innovation 223<br>Fractal Geometry 228<br>Fractal Modularity 230<br>Key Takeaways 230<br>Quiz 231</p> <p><strong>Chapter 13: Balanced Coupling in Practice 233</strong><br>Microservices 233<br>Architectural Patterns 239<br>Business Objects 245<br>Methods 251<br>Key Takeaways 256<br>Quiz 256</p> <p><strong>Chapter 14: Conclusion 257</strong></p> <p><strong>Epilogue 261</strong></p> <p><strong>Appendix A: The Ballad of Coupling 263</strong></p> <p><strong>Appendix B: Glossary of Coupling 265</strong></p> <p><strong>Appendix C: Answers to Quiz Questions 271</strong></p> <p>Bibliography 275<br>Index 279</p>

Managementboek Top 100

Rubrieken

Populaire producten

    Personen

      Trefwoorden

        Balancing Coupling in Software Design