정보처리기사 실기소프트웨어 설계결합도와 응집도난이도 5DESCRIPTIVE

정보처리기사 실기 결합도와 응집도 기출문제 #298

문제

대규모 소프트웨어 시스템에서 계층형 아키텍처(Layered Architecture) 설계 시 각 계층 간의 결합도를 최소화하면서 계층 내부의 응집도를 최대화하기 위한 **의존성 역전 원칙(Dependency Inversion Principle)**의 적용 방법을 설명하고, 이를 통해 달성되는 **확장성(Scalability)**과 **유연성(Flexibility)**의 구체적 이점을 서술하시오.

정답

계층형 아키텍처에서 의존성 역전 원칙은 상위 계층이 하위 계층의 구체적 구현에 직접 의존하지 않고 추상화된 인터페이스에 의존하도록 설계하는 것이다. 구체적으로 프레젠테이션 계층이 비즈니스 계층의 인터페이스에 의존하고, 비즈니스 계층이 데이터 접근 계층의 추상화에 의존하도록 한다. 이를 위해 각 계층은 인터페이스를 정의하고 하위 계층은 이를 구현하며, 의존성 주입(Dependency Injection)을 통해 런타임에 구체적 구현체를 주입한다. 결합도 최소화는 계층 간 직접적 의존성을 인터페이스로 추상화하여 달성하고, 응집도 최대화는 각 계층이 명확한 책임을 갖도록 관심사를 분리하여 달성한다. 확장성 측면에서 새로운 데이터베이스나 외부 서비스 추가 시 해당 계층만 수정하면 되고, 수평적 확장 시에도 각 계층을 독립적으로 스케일링할 수 있다. 유연성 측면에서 비즈니스 로직 변경 시 다른 계층에 영향을 주지 않고, 새로운 프레젠테이션 방식(웹, 모바일 등) 추가나 데이터 저장 방식 변경이 용이하다. 또한 테스트 시 Mock 객체를 쉽게 주입할 수 있어 단위 테스트와 통합 테스트가 용이해진다.

계층형 아키텍처의존성 역전 원칙인터페이스추상화의존성 주입관심사 분리확장성유연성Mock 객체단위 테스트

해설

계층형 아키텍처는 소프트웨어를 논리적 계층으로 분리하는 설계 패턴이다. 의존성 역전 원칙은 SOLID 원칙 중 하나로, 구체적 구현이 아닌 추상화에 의존하도록 하는 원칙이다. 이 두 개념을 결합하여 각 계층 간 결합도를 낮추고 계층 내 응집도를 높이는 방법과 그로 인한 시스템의 확장성과 유연성 향상을 구체적으로 설명해야 한다.

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.