문제
소프트웨어 아키텍처 설계에서 모듈 간 의존성 관리의 핵심 원칙인 **의존성 역전 원칙(DIP)**과 **인터페이스 분리 원칙(ISP)**이 시스템의 유연성과 확장성에 미치는 영향을 분석하고, 이 두 원칙을 위반했을 때 발생하는 구체적인 문제점과 해결 방안을 서술하시오.
정답
DIP는 고수준 모듈이 저수준 모듈에 직접 의존하지 않고 추상화에 의존하도록 하여 변경에 대한 유연성을 제공한다. ISP는 클라이언트가 사용하지 않는 메서드에 의존하지 않도록 인터페이스를 분리하여 불필요한 결합을 방지한다. 두 원칙을 위반하면 강한 결합, 변경 파급효과 증가, 테스트 어려움 등이 발생한다. 해결 방안으로는 의존성 주입, 인터페이스 세분화, 추상 팩토리 패턴 적용 등이 있다.
의존성 역전 원칙DIP인터페이스 분리 원칙ISP추상화의존성 주입강한 결합변경 파급효과인터페이스 세분화
해설
DIP는 SOLID 원칙 중 하나로 고수준 모듈이 저수준 모듈의 구체적 구현에 의존하지 않도록 하는 원칙이다. ISP는 클라이언트별로 필요한 인터페이스만 제공하여 불필요한 의존성을 제거하는 원칙이다. 두 원칙을 위반하면 시스템이 경직되고 변경이 어려워진다. 해결책으로는 추상화 계층 도입, 의존성 주입 컨테이너 사용, 인터페이스 분할 등이 있다.