문제
소프트웨어 아키텍처 설계에서 **모듈성(Modularity)**과 **재사용성(Reusability)**의 개념을 설명하고, 효과적인 시스템 구조를 위해 이 두 특성을 어떻게 향상시켜야 하는지 구체적인 방법을 포함하여 서술하시오.
정답
모듈성은 시스템을 기능적으로 독립된 단위로 분할하는 특성으로, 명확한 인터페이스 정의와 단일 책임 원칙을 통해 향상시킬 수 있다. 재사용성은 컴포넌트를 다양한 상황에서 활용할 수 있는 특성으로, 추상화와 매개변수화를 통해 높일 수 있다. 효과적인 시스템 구조를 위해서는 계층화된 아키텍처를 통한 모듈 분리, 공통 기능의 라이브러리화, 표준 인터페이스 설계를 통해 두 특성을 동시에 향상시켜야 한다.
모듈성재사용성독립된 단위인터페이스추상화계층화라이브러리
해설
모듈성은 복잡한 시스템을 관리 가능한 크기의 독립적 단위로 나누는 것으로, 각 모듈이 명확한 책임과 경계를 가져야 한다. 재사용성은 한 번 개발된 컴포넌트를 여러 곳에서 활용할 수 있도록 하는 특성으로, 일반화와 추상화를 통해 달성된다. 두 특성 모두 유지보수성과 개발 효율성을 크게 향상시킨다.