Published Sep 3, 2019

Episode 2: Dependencies

Markus Völter and Eberhard Wolff delve into the complexities of managing dependencies in object-oriented programming, contrasting factory patterns with dependency injection to unveil strategies for enhancing software modularity, flexibility, and testability through model-driven solutions and customized factories.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Dependency Challenges

    In object-oriented programming, managing dependencies poses significant challenges due to the lack of native constructs for associations. highlights that while inheritance is often emphasized, it's the delegation and dynamic associations that offer greater flexibility 1. adds that this flexibility is crucial for testability, allowing systems to be broken down into smaller, testable units 2.

    Inheritance is always static. You have to statically define in your source code the class from which you inherit. If you use delegation and associations between objects, you can change a lot of these things at runtime.

    ---

    This dynamic nature is essential for maintaining software quality and productivity.

       

    Visualization Tools

    To address dependency management, several tools and techniques are available for visualizing and analyzing dependencies. mentions tools like Depfind and static compilation checks that help developers understand and manage their dependencies 3. notes that while dependency injection is beneficial, it lacks comprehensive tooling support, especially in environments like Spring 3.

    Dependency injection is not a magic bullet, it's not a silver bullet, but it helps quite a bit.

    ---

    These tools are crucial for ensuring that dependencies are correctly managed and do not lead to architectural issues.

Related Episodes