문제
소프트웨어 아키텍처 설계에서 **모듈화(Modularity)**와 **정보 은닉(Information Hiding)**의 개념을 설명하고, 이들이 소프트웨어 품질에 미치는 효과를 서술하시오.
정답
모듈화는 시스템을 독립적이고 교체 가능한 구성 요소들로 분해하는 것으로, 각 모듈이 명확한 인터페이스를 통해 상호작용하도록 한다. 정보 은닉은 모듈의 내부 구현 세부사항을 외부에서 접근할 수 없도록 캡슐화하는 것이다. 이들은 결합도를 낮추고 응집도를 높여 유지보수성, 재사용성, 테스트 용이성을 향상시키며, 변경 파급효과를 최소화하여 소프트웨어의 전반적 품질을 개선한다.
모듈화정보 은닉캡슐화인터페이스유지보수성재사용성변경 파급효과
해설
모듈화는 복잡한 시스템을 관리 가능한 단위로 분해하는 핵심 원리이며, 정보 은닉은 각 모듈의 내부 구현을 보호하여 외부 의존성을 줄이는 원리이다. 두 원리가 함께 작용하면 시스템의 복잡도가 감소하고, 개발자들이 각 모듈을 독립적으로 개발하고 테스트할 수 있게 되어 전체적인 개발 생산성과 소프트웨어 품질이 향상된다.