문제
소프트웨어 아키텍처 설계 시 **계층화(Layering)**와 모듈 분할 기준이 시스템의 결합도와 응집도에 미치는 영향을 분석하고, 관심사의 분리(Separation of Concerns) 원칙을 적용한 효과적인 모듈 구조 설계 방안을 구체적으로 서술하시오.
정답
계층화는 추상화 수준에 따라 모듈을 분리하여 상위 계층이 하위 계층에만 의존하도록 함으로써 결합도를 낮춘다. 모듈 분할은 기능적 책임에 따라 수행하여 각 모듈의 응집도를 높인다. 관심사의 분리는 비즈니스 로직, 데이터 접근, 사용자 인터페이스 등을 독립적인 모듈로 분리하여 단일 책임 원칙을 구현하고, 변경의 파급효과를 최소화하며 모듈 간 독립성을 보장한다.
계층화모듈 분할관심사의 분리결합도응집도추상화단일 책임독립성파급효과비즈니스 로직
해설
아키텍처 설계의 핵심 원칙들이 모듈의 결합도/응집도에 미치는 영향을 체계적으로 분석해야 합니다. 계층화는 의존성의 방향을 제어하여 결합도를 관리하고, 모듈 분할은 책임의 명확한 구분을 통해 응집도를 향상시킵니다. 관심사의 분리는 이러한 원칙들을 구체적으로 구현하는 방법론으로, 실제 설계에서의 적용 방안까지 서술해야 하는 고차원적 사고를 요구하는 문제입니다.