시스템을 만들다보면 모듈화에 대한 고민을 할 때가 있다.(말단 개발자지만…)
똑같은 코드를 사용하는데 계속해서 그 코드를 복사 붙여 넣는다면 나중에 수정되면 붙어넣은 수만큼 찾아서 수정해야 된다.
또한 코드가 길어지니 맘에 들지 않는다(짧고 간단한 소스가 아름답다고 생각하는 1인)
그래서 모듈화를 고민한다. 근데 정보처리기사를 공부하면서 배웟던 응집도와 결합도가 생각나서 한번 정리해본다
- 모듈
모듈이란 소프트웨어를 각 기능별로 분할 하는것 - 모듈의 독립성
소프트웨어를 구성하는 모듈은 독립적이여야 한다. 독립성이 높을 수록 유지보수가 쉽고 재사용성이 높다.
독립성을 측정하기 위해 응집도와 결합도가 측정되어야한다. - 결합도
모듈간 상호 의존하는 정도를 의미한다. 결합도가 낮을수록 좋은 모듈인데가장 낮은 결합도는 자료 결합도 이다.
(자세한건 그렇다치자) 간단하게 요약해서 1번 모듈이 2번 모듈을 사용할때 2번 모듈의 내용을 몰라도 되는 결합도이다. 2번의 수정사항이 1번 모듈에 영향을 전혀 미치지 않는다.가장 높은 결합도는 내용 결합도 이다.
간단히 요약하면 1번 모듈이 2번 모듈을 사용할때 2번 모듈의 내용을 전부 알아야한다는것이다. 2번의 수정사항이 1번에게 큰 영향을 준다. - 응집도
각 모듈의 구성요소들이 서로 연관된 정도이다.
이해가 잘 안된다면 모듈안에 정의된 프로시져나 메소드들이 하나의 목적을 위해서만 작동하는가 라고 이해하면 될것 같다.응집도는 높을수록 좋은 모듈이다.가장 높은 응집도는 기능적 응집도 이다.
간단하게? 설명하면 하나의 모듈안 구성요소들의 목표가 하나인가이다. 예를 들어보면 콜센터 프로그램에서 상담 접수 모듈은 상담 접수만 받아야하는데 상담 해결까지 하고 있는지 이다.응집도가 낮은 모듈은 당연히 각자 노는 모듈이다. (우연적 응집도 – 이름부터 망한듯)
효과적인 모듈은 결합도가 낮고 응집도가 높은 모듈이다. 또 하나의 모듈의 기능이 너무 커서는 안되고 유지보수가 쉬워야한다.
» 이글은 http://yimma.tistory.com/159 의 글을 참고하였습니다.