관련 이론 및 문법

(결합도 (coupling) 참고)

http://kkikkodev.tistory.com/133


(응집도 (cohesion) 참고)

http://kkikkodev.tistory.com/134


문제 의도

3D 렌더링 작업을 수행하는데 사용되는 응용 프로그램과 몇몇 유틸 클래스들을 가지고 있는 CAD (Computer Assisted Design) SW 를 만드는 한 회사가 있습니다. 이 회사의 수석 과학자는 유틸리티 클래스들의 핵심 렌더링 알고리즘의 성능을 개선하면서, 한 개발자에게 기존 알고리즘을 새로운 알고리즘으로 변환하라고 지시했습니다. 이 개발자는 유틸리티 클래스들을 검색하기 시작했을 때, 변환할 알고리즘이 오직 한 클래스에만 존재한다는 것을 알고 매우 행복했습니다. 개발자는, 클래스들의 API 들을 검토하고, 이 알고리즘이 연관되어 있는 클래스들의 API 를 주의깊게 확인하면서, 기존알고리즘을 새 알고리즘으로 변환하였습니다. 테스트가 시작되자마자, 개발자는 바꾼 클래스를 사용하는 다른 클래스들에서 정상적으로 작동하지 않는다는 것을 발견했습니다. 이러한 새 버그들의 원인은 어떤 설계적 결함일지 고르는 문제입니다.


답안

B, C (기존답은 B 만 있지만, C 도 추가함)


풀이 방법

문제의 핵심은, 최대한 관련된 기능을 한 클래스에 응집시키고, 연관성을 줄이자는 것이 핵심입니다. 따라서, 결합도를 증가시키고, 동시에 응집도를 낮추어야 합니다. 기존의 답은 B (결합도 증가) 만 있는데, 사실상, 결합도와 응집도는 함께 따라다니는 개념이므로, 답안을 정정하였습니다. 따라서, 답안은 B 와 C 가 됩니다.


by kkikkodev 2015. 8. 1. 20:42