메인 모듈(상위 모듈)이 하위 모듈에 대한 의존성이 떨어지게 됨을 나타낸다.
메인 모듈에 직접 다른 하위 모듈에 대한 의존성을 주기보다는 중간에 의존성 주입자(dependency injector)가 이 부분을 가로채 메인 모듈에 간접적으로 의존성을 주입하는 것
public class DataProcessor {
	private final DbManager manager = new SqliteDbManager("db.sqlite");
    private final Calculator calculator = new HighPrecisionCalculator(5);
    
    public void processData() {
    	this.manager.processData();
    }
    
    public BigDecimal calc(BigDecimal input) {
    	return this.calculator.expensiveCalculation(input);
    }
}
=> tighgly coupled
이걸 디커플링하면(의존성 주입으로 바꾸면)
public class DataProcessor {
	private final DbManager manager;
    private final Calculator calculator;
    
    public DataProcessor(DbManager manager, Calculator calculator) {
    	this.manager = manager;
        this.calculator = calculator;
    }
}
-> 이제
manager, calculator 가 유닛 테스트할 때 모킹할 수 있도록 바뀌었다.