문제
소프트웨어 설계에서 모듈 간 의존성 관리와 관련하여, **순환 종속성(Circular Dependency)**이 결합도와 응집도에 미치는 부정적 영향을 분석하고, 이를 해결하기 위한 **의존성 주입(Dependency Injection)**과 추상화 계층 도입의 효과를 구체적으로 서술하시오.
정답
순환 종속성은 모듈 간 양방향 의존 관계를 형성하여 강한 결합도를 유발하고 모듈 독립성을 저해한다. 의존성 주입은 구체적 구현체 대신 인터페이스에 의존하도록 하여 결합도를 낮추고, 추상화 계층 도입은 고수준 모듈과 저수준 모듈 간 직접 의존을 제거하여 의존성 역전을 통해 유연한 구조를 만든다. 이를 통해 모듈의 재사용성과 테스트 용이성이 향상된다.
순환 종속성강한 결합도모듈 독립성의존성 주입인터페이스추상화 계층의존성 역전재사용성테스트 용이성
해설
순환 종속성은 A모듈이 B모듈을 참조하고 B모듈이 다시 A모듈을 참조하는 상황으로, 이는 내용 결합도 수준의 강한 결합을 만든다. 의존성 주입은 외부에서 의존 객체를 주입받아 자료 결합도 수준으로 낮추고, 추상화 계층은 인터페이스를 통해 구현체와 분리하여 변경에 대한 파급효과를 최소화한다. 결과적으로 각 모듈의 응집도는 높아지고 전체 시스템의 결합도는 낮아진다.