Nicht aus der Schweiz? Besuchen Sie lehmanns.de
Balancing Coupling in Software Design - Vlad Khononov

Balancing Coupling in Software Design

Universal Design Principles for Architecting Modular Software Systems

(Autor)

Buch | Softcover
320 Seiten
2024
Addison Wesley (Verlag)
978-0-13-735348-4 (ISBN)
CHF 68,25 inkl. MwSt
Learn How Coupling Impacts Every Software Design Decision You Make--and How to Control It

If you want to build modular, evolvable, and resilient software systems, you have to get coupling right. Every design decision you make influences coupling, which in turn shapes the design options available to you. Despite its importance, coupling often doesn't receive the attention it deserves--until now.

Since the dawn of software engineering, it's been clear that proper management of coupling is essential for architecting modular software systems. This topic has been extensively researched over the years, but some of that knowledge has been forgotten, and some of it is challenging to apply in this day and age. In Balancing Coupling in Software Design, author Vlad Khononov has built a model that not only draws on this accumulated knowledge, but also adapts it to modern software engineering practices, offering a fresh perspective on modular software design.

With principles grounded in practice, Vlad teaches you not only to navigate the multi-dimensional nature of coupling but also to use coupling as a tool for managing complexity and increasing modularity. And who knows, maybe this book will change the way you think about software design as whole.



Defines the concept of coupling and the role it plays in system design and architecture
Explains how coupling can both increase complexity and foster modularity of a system
Introduces a holistic model that turns coupling into a tool for designing modular software
Shows how to evolve design decisions to support continuous growth of software systems
Illustrates the discussed principles with detailed examples based on real-life case studies

"Coupling is one of those words that is used a lot, but little understood. Vlad propels us from simplistic slogans like 'always decouple components' to a nuanced discussion of coupling in the context of complexity and software evolution. If you build modern software, read this book!"
--Gregor Hohpe, author of The Software Architect Elevator

Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.

Vlad Khononov is a software engineer with extensive industry experience, working for companies large and small in roles ranging from webmaster to chief architect. His core areas of expertise are distributed systems and software design. Vlad consults with companies to make sense of their business domains, untangle monoliths, and tackle complex architectural challenges. Vlad maintains an active media career as a public speaker and author. Prior to Balancing Coupling in Software Design, he authored the best-selling O'Reilly book Learning Domain-Driven Design. He is a sought-after keynote speaker, presenting on topics such as domain-driven design, microservices, and software architecture in general.

Series Editor Foreword xv
Foreword by Rebecca Wirfs-Brock xix
Foreword by Kent Beck xxi
Preface xxiii
Acknowledgments xxix
About the Author xxxi

Introduction 1

Part I: Coupling 3

Chapter 1: Coupling and System Design 5
What Is Coupling? 5
Magnitude of Coupling 6
Flow of Knowledge 10
Systems 10
Key Takeaways 16
Quiz 17

Chapter 2: Coupling and Complexity: Cynefin 19
What Is Complexity? 19
Cynefin 20
Comparing Cynefin Domains 26
Cynefin in Software Design 27
Cynefin Applications 31
Cynefin and Complexity 32
Key Takeaways 32
Quiz 33

Chapter 3: Coupling and Complexity: Interactions 35
Nature of Complexity 35
Complexity and System Design 36
Hierarchical Complexity 39
Degrees of Freedom 43
Complexity and Constraints 46
Coupling and Complex Interactions 47
Example: Connecting Coupling and Complexity 48
Key Takeaways 54
Quiz 54

Chapter 4: Coupling and Modularity 57
Modularity 57
Modules 59
Modularity in Software Systems 62
Modularity, Complexity, and Coupling 68
Coupling in Modularity 73
Key Takeaways 74
Quiz 74

Part II: Dimensions 77

Chapter 5: Structured Design's Module Coupling 79
Structured Design 80
Module Coupling 80
Comparison of Module Coupling Levels 94
Key Takeaways 95
Quiz 96

Chapter 6: Connascence 97
What Is Connascence? 97
Static Connascence 98
Dynamic Connascence 104
Evaluating Connascence 110
Key Takeaways 113
Quiz 114

Chapter 7: Integration Strength 117
Strength of Coupling 118
Integration Strength 121
Intrusive Coupling 122
Functional Coupling 125
Model Coupling 128
Contract Coupling 134
Integration Strength Discussion 143
Integration Strength and Asynchronous Execution 146
Key Takeaways 147
Quiz 148

Chapter 8: Distance 151
Distance and Encapsulation Boundaries 151
Additional Factors Affecting Distance 157
Distance Versus Proximity 160
Distance Versus Integration Strength 161
Key Takeaways 161
Quiz 162

Chapter 9: Volatility 165
Changes and Coupling 165
Why Software Changes 166
Evaluating Rates of Changes 169
Volatility and Integration Strength 175
Inferred Volatility 177
Key Takeaways 178
Quiz 179

Part III: Balance 181

Chapter 10: Balancing Coupling 183
Combining the Dimensions of Coupling 184
Combining Strength, Distance, and Volatility 189
Balancing Coupling on a Numeric Scale 192
Key Takeaways 198
Quiz 199

Chapter 11: Rebalancing Coupling 201
Resilient Design 201
Software Change Vectors 202
Rebalancing Coupling 205
Key Takeaways 213
Quiz 213

Chapter 12: Fractal Geometry of Software Design 215
Growth 215
Innovation 223
Fractal Geometry 228
Fractal Modularity 230
Key Takeaways 230
Quiz 231

Chapter 13: Balanced Coupling in Practice 233
Microservices 233
Architectural Patterns 239
Business Objects 245
Methods 251
Key Takeaways 256
Quiz 256

Chapter 14: Conclusion 257

Epilogue 261

Appendix A: The Ballad of Coupling 263

Appendix B: Glossary of Coupling 265

Appendix C: Answers to Quiz Questions 271

Bibliography 275
Index 279

Erscheinungsdatum
Reihe/Serie Addison-Wesley Signature Series (Vernon)
Verlagsort Boston
Sprache englisch
Maße 180 x 230 mm
Gewicht 566 g
Themenwelt Mathematik / Informatik Informatik Software Entwicklung
ISBN-10 0-13-735348-0 / 0137353480
ISBN-13 978-0-13-735348-4 / 9780137353484
Zustand Neuware
Haben Sie eine Frage zum Produkt?
Mehr entdecken
aus dem Bereich
Grundlagen, Prozesse, Methoden und Werkzeuge

von Jörg Schäuffele; Thomas Zurawka

Buch | Hardcover (2024)
Springer Vieweg (Verlag)
CHF 139,95
Deterministische und randomisierte Algorithmen

von Volker Turau; Christoph Weyer

Buch | Softcover (2024)
De Gruyter Oldenbourg (Verlag)
CHF 89,95