결합도 편집하기
IT위키
편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
[[분류:소프트웨어 공학]] | [[분류:소프트웨어 공학]] | ||
;Coupling | ;Coupling | ||
*[[응집도|응집도( | * [[응집도|응집도(Cohension)]]와 함께 모듈의 독립성을 판단하는 지표 | ||
*'''결합도는 모듈과 모듈간의 상호 결합 정도를 나타낸다.''' | * '''결합도는 모듈과 모듈간의 상호 결합 정도를 나타낸다.''' | ||
*응집도는 모듈 내부의 기능적인 응집 정도를 나타낸다. | * 응집도는 모듈 내부의 기능적인 응집 정도를 나타낸다. | ||
*'''결합도는 낮을수록 좋고''', 응집도는 높을수록 좋다. | * '''결합도는 낮을수록 좋고''', 응집도는 높을수록 좋다. | ||
결합도와 응집도의 차이를 간단하게 나타내자면 | 결합도와 응집도의 차이를 간단하게 나타내자면 | ||
결합도는 우리 하나가 | 결합도는 : 우리 하나가 되자 에 가까운 말이고. | ||
응집도는 우리 필요하니까 | 응집도는 : 우리 필요하니까 이부분에서 협력하고 나머지는 따로따로 하자. | ||
라는 의미에 가깝다. 당연히 소스코드를 물리적으로 합쳐버리면 양이 너무 많아져서 나중에 찾아내기가 어렵고 | |||
공통으로 쓰는부분을 하나만 두고 쓰면 불필요한 중복코드를 작성하지 않아도 되서 편리한 원리이다. | |||
== 종류 == | |||
;자료 결합도 < 스탬프 결합도 < 제어 결합도 < 외부 결합도 < 공통 결합도 < 내용 결합도<ref>아래 내용 출처 [https://raisonde.tistory.com/entry/결합도Coupling과-응집도Cohension 지식잡식 블로그]</ref> | ;자료 결합도 < 스탬프 결합도 < 제어 결합도 < 외부 결합도 < 공통 결합도 < 내용 결합도<ref>아래 내용 출처 [https://raisonde.tistory.com/entry/결합도Coupling과-응집도Cohension 지식잡식 블로그]</ref> | ||
* '''자료 결합도(Data Coupling)''' | |||
*'''자료 결합도(Data Coupling)''' | ** 모듈간의 인터페이스 전달되는 파라미터를 통해서만 모듈간의 상호 작용이 일어나는 경우 | ||
**모듈간의 인터페이스 전달되는 파라미터를 통해서만 모듈간의 상호 작용이 일어나는 경우 | ** 깔끔한 Call by value | ||
**깔끔한 Call by value | * '''스탬프 결합도(Stamp Coupling)''' | ||
*'''스탬프 결합도(Stamp Coupling)''' | ** 모듈간의 인터페이스로 배열이나 오브젝트, 스트럭쳐등이 전달되는 경우 | ||
**모듈간의 인터페이스로 배열이나 오브젝트, 스트럭쳐등이 전달되는 경우 | * '''제어 결합도(Control Coupling)''' | ||
*'''제어 결합도(Control Coupling)''' | ** 단순히 처리를 해야할 대상인 값만 전달되는게 아니라 어떻게 처리를 해야 한다는 제어 요소(DCD, Flag등)이 전달되는 경우. | ||
**단순히 처리를 해야할 대상인 값만 전달되는게 아니라 어떻게 처리를 해야 한다는 제어 요소(DCD, Flag등)이 전달되는 경우. | * '''외부 결합도(External Coupling)''' | ||
** 어떤 모듈에서 반환한 값을 다른 모듈에서 참조해서 사용하는 경우 | |||
*'''외부 결합도(External Coupling)''' | * '''공통 결합도(Common Coupling)''' | ||
**어떤 모듈에서 반환한 값을 다른 모듈에서 참조해서 사용하는 경우 | ** 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역변수를 갱신하는 식으로 상호작용하는 경우 | ||
*'''공통 결합도(Common Coupling)''' | * '''내용 결합도(Content Coupling)''' | ||
**파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역변수를 갱신하는 식으로 상호작용하는 경우 | ** 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용 하는 경우 | ||
*'''내용 결합도(Content Coupling)''' | |||
**다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용 하는 경우 | |||