This book identifies the deeper problemGÇöhow software architects and designers approach coupling GÇô 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: GÇ£balanced multi-dimensional coupling.GÇ¥ Khononov begins by surveying existing methods of evaluating coupling, and illuminating their strengths and limitations in the context of modern distributed systems.…mehr
This book identifies the deeper problemGÇöhow software architects and designers approach coupling GÇô 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: GÇ£balanced multi-dimensional coupling.GÇ¥ 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 neglectedGÇöand how balanced coupling can make all of them work more effectively.Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
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.
Inhaltsangabe
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