본문 바로가기
IT 이론/소프트웨어공학

결합도(Coupling)과 응집도(Cohension)

by id 2015. 10. 18.
반응형

모듈의 독립성을 판단하는 두 가지 지표이다. 결합도는 모듈과 모듈간의 상호 의존 정도, 응집도는 모듈 내부의 기능적인 집중 정도라고 할 수 있다.

좋은 모듈화는 용도에 맞게 잘 구분된 기능을 가신 모듈들로 세분화 하는 것이다. 즉, 개별 모듈은 독립적으로 자신에게 주어진 기능만을 수행하고 명확한 결과값을 내 놓아야 하고 다른 모듈에 의존성이 높아선 안된다.


즉 

결합도는 낮을 수록 

응집도는 높을 수록 

이상적인 모듈화이다.


물론 결합도가 극단적으로 낮고 응집도가 극단적으로 높다고 다 좋은건 아니다. 데이터베이스 정규화와 마찬가지로 이론적으로 이상적일 수록 현실적으로 적합한건 아니다. 상황에 맞게 적절히 낮고 높을 수록 좋은 것이다.


결합도의 종류 

자료 결합도 < 스탬프 결합도 < 제어 결합도 < 외부 결합도 < 공통 결합도 < 내용 결합도


자료 결합도(Data Coupling) : 모듈간의 인터페이스 전달되는 파라미터를 통해서만 모듈간의 상호 작용이 일어나는 경우. 깔끔한 Call by value

스탬프 결합도(Stamp Coupling) : 모듈간의 인터페이스로 배열이나 오브젝트, 스트럭쳐등이 전달되는 경우. 


ex) 

    someMethod(inVo, outVo);

    nextMethod(inVo, outVo);

    lastMethod(inVo, outVo);

하나의 Output value object를 여러번 반복해서 사용하며 일부의 값을 변경하는 것이 하나의 예이다.


제어 결합도(Control Coupling) : 단순히 처리를 해야할 대상인 값만 전달되는게 아니라 어떻게 처리를 해야 한다는 제어 요소(DCD, Flag등)이 전달되는 경우.

외부 결합도(External Coupling) : 어떤 모듈에서 반환한 값을 다른 모듈에서 참조해서 사용하는 경우

공통 결합도(Common Coupling) : 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역변수를 갱신하는 식으로 상호작용하는 경우

내용 결합도(Content Coupling) : 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용 하는 경우


응집도의 종류

우연적 응집도 < 논리적 응집도 < 시간적 응집도 < 절차적 응집도 < 교환적 응집도 < 순차적 응집도 < 기능적 응집도


기능적 응집도(Functional Cohesion) : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우

순차적 응집도(Sequential Cohesion) : 모듈 내에서 한 활동으로 부터 나온 출력값을 다른 활동이 사용할 경우

교환적 응집도(Communication Cohesion) : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여있을 경우

절차적 응집도(Procedural Cohesion) : 모듈이 다수의 관련 기능을 가질 떄 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우

시잔적 응집도(Temporal Cohesion) : 연관된 기능이라기 보단 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우

논리적 응집도(Logical Cohesion) : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우

우연적 응집도(Coincidental Cohesion) : 모듈 내부의 각 구성요소들이 연관이 없을 경우

반응형

댓글2

  • 김상우 2016.04.26 18:18

    공부하다가 햇갈려서 검색햇는데요. 정리가 너무 깔끔하게 되있어서 좋아요~ 자주 배우러 올께요~
    답글

  • ㅂㄷㄱㄱ 2020.04.22 11:00

    잘 읽었습니다.
    근데 제목에 응집도(Cohension) 오타나셨습니다 ㅋㅋ
    답글