Balancing Coupling in Software Design: Universal Design Principles for Architecting Modular Software Systems

Book description

Harness the Power of the Multi-Dimensional Coupling Model as a Tool for Architecting Modular, Evolvable Software Systems

In this definitive guide, Vlad Khononov introduces a novel approach to designing modular software systems that turns coupling into a powerful design tool.

Software, like all systems, is composed of components that interact to form the system itself. Coupling is the metric used to represent the interdependence between connected components, and the magnitude of coupling ultimately affects the adaptability and success of the software system. Balancing Coupling in Software Design surveys existing methods of evaluating coupling and combines them into a comprehensive model for making design decisions that manage complexity while increasing the modularity of your software system.

Coupling is everywhere in software development. Whatever your job level or title, whether you are writing a function, designing an object model, or architecting distributed systems, this book is for you.

  • Understand coupling and the ways it manifests itself in software design

  • Evaluate the multi-dimensional forces of coupling

  • Understand how the dimensions of coupling interact to impact your system

  • Steer your systems away from complexity and toward modularity

The principles discussed in Balancing Coupling in Software Design are ubiquitously relevant in software engineering and will transform the way you think about software design.

Table of contents

  1. Cover Page
  2. Title Page
  3. Contents
  4. Table of Contents
  5. Preface
    1. Who Should Read This Book?
    2. How This Book is Organized
    3. Case Studies and WolfDesk
  6. Acknowledgments
  7. Introduction
  8. Part I: Coupling
    1. Chapter 1. Coupling and System Design
      1. What Is Coupling?
      2. Magnitude of Coupling
      3. Systems
      4. Summary
      5. Quiz
    2. Chapter 2. Coupling and Complexity: Cynefin
      1. What Is Complexity
      2. Cynefin
      3. Summary
      4. Quiz
    3. Chapter 3. Coupling and Complexity: Interactions
      1. Nature of Complexity
      2. Complexity and System Design
      3. Summary
      4. Quiz
    4. Chapter 4. Coupling and Modularity
      1. Modularity
      2. Modules
      3. Modularity in Software Systems
      4. Modularity, Complexity, and Coupling
      5. Summary
      6. Quiz
  9. Part II: Dimensions
    1. Chapter 5. Structured Design’s Module Coupling
      1. Structured Design
      2. Module Coupling
      3. Comparison of Module Coupling Levels
      4. Summary
      5. Quiz
    2. Chapter 6. Connascence
      1. What Is Connascence?
      2. Static Connascence
      3. Dynamic Connascence
      4. Evaluating Connascence
      5. Summary
      6. Quiz
    3. Chapter 7. Integration Strength
      1. Strength of Coupling
      2. Integration Strength
      3. Summary
      4. Quiz
    4. Chapter 8. Distance
      1. Distance and Encapsulation Boundaries
      2. Additional Factors Affecting Distance
      3. Distance vs. Proximity
      4. Distance vs. Integration Strength
      5. Summary
      6. Quiz
    5. Chapter 9. Volatility
      1. Changes and Coupling
      2. Why Software Changes
      3. Evaluating Rates of Changes
      4. Volatility and Integration Strength
      5. Summary
      6. Quiz
  10. Part III: Balance
    1. Chapter 10. Balancing Coupling
      1. Combining the Dimensions of Coupling
      2. Combining Strength, Distance, and Volatility
      3. Balancing Coupling on a Numeric Scale
      4. Summary
      5. Quiz
    2. Chapter 11. Rebalancing Coupling
      1. Resilient Design
      2. Software Change Vectors
      3. Rebalancing Coupling
      4. Summary
      5. Quiz
    3. Chapter 12. Fractal Geometry of Software Design
      1. Growth
      2. Fractal Geometry
      3. Fractal Modularity
      4. Summary
      5. Quiz
    4. Chapter 13. Balanced Coupling in Practice
      1. Microservices
      2. Architectural Patterns
      3. Business Objects
      4. Methods
      5. Summary
      6. Quiz
    5. Chapter 14. Conclusion [This content is currently in development.]
  11. Appendix. Answers to Quiz Questions
    1. Chapter 1: Coupling and System Design
    2. Chapter 2: Coupling and Complexity: Cynefin
    3. Chapter 3: Coupling and Complexity: Interactions
    4. Chapter 4: Coupling and Modularity
    5. Chapter 5: Structured Design’s Module Coupling
    6. Chapter 6: Connascence
    7. Chapter 7: Integration Strength
    8. Chapter 8: Distance
    9. Chapter 9: Volatility
    10. Chapter 10: Balancing Coupling
    11. Chapter 11: Rebalancing Coupling
    12. Chapter 12: Fractal Geometry of Software Design
  12. Bibliography

Product information

  • Title: Balancing Coupling in Software Design: Universal Design Principles for Architecting Modular Software Systems
  • Author(s): Vlad Khononov
  • Release date: September 2024
  • Publisher(s): Addison-Wesley Professional
  • ISBN: 9780137353514