Dependency Injection with Static Analysis and Context-Aware Policy

  title={Dependency Injection with Static Analysis and Context-Aware Policy},
  author={Michael D. Ekstrand and Michael Ludwig},
  journal={The Journal of Object Technology},
The dependency injection design pattern improves the configurability, testability, and maintainability of object-oriented applications by decoupling components from both the concrete implementations of their dependencies and the strategy employed to select those implementations. In recent years, a number of libraries have emerged that provide automated support for constructing and connecting dependency-injected objects. Our experience developing systems with these tools has led us to identify… Expand
1 Citations
LensKit for Python: Next-Generation Software for Recommender Systems Experiments
The next generation of the LensKit project is presented, re-envisioning the original tool's objectives as flexible Python package for supporting recommender systems research and development. Expand


A Verification Strategy for Dependency Injection
This work proposes an object reflection driven approach to provide DI verification based on static analysis of the classes that have dependency inversion and their wiring descriptions. Expand
Aspect-Oriented Programming Beyond Dependency Injection
This paper proposes an aspect-oriented programming system named GluonJ, which allows developers to explicitly construct and associate an aspect implementation with aspect targets and points out that existing aspect- oriented programming languages/ frameworks are not perfectly suitable for expressing inter-component dependency. Expand
Dependency Injection
This book is written for developers and architects who want to understand Dependency Injection and successfully leverage popular DI technologies such as Spring, Google Guice, PicoContainer, and many others. Expand
An Empirical Study into Use of Dependency Injection in Java
This paper examines the use of "dependency injection", which is a design principle that is claimed to increase software design quality attributes such as extensibility, modifiability, testability, and reusability and develops operational definitions for it and analysis techniques for detecting its use. Expand
Effects of dependency injection on maintainability
Software maintenance consumes around 70% of the software life cycle. Improving software maintainability could save software developers significant time and money. This paper examines whether theExpand
Smart composition of game objects using dependency injection
This article proposes the use of the dependency injection design pattern to safely initialize game objects and lessen the programmer's role in handling these issues both during the prototyping and production phases. Expand
Specifying Distributed Software Architectures
The paper presents the Darwin notation for specifying this high-level organisation of computational elements and the interactions between those elements in distributed systems at the architectural level. Expand
Rethinking the recommender research ecosystem: reproducibility, openness, and LensKit
The utility of LensKit is demonstrated by replicating and extending a set of prior comparative studies of recommender algorithms, and a question recently raised by a leader in the recommender systems community on problems with error-based prediction evaluation is investigated. Expand