학습

SW 공학: 결합도와 응집도

반생자 2016. 4. 14. 10:54

<출처>

http://gisulsa.tistory.com/226

<추가 참조>

http://lazineer.tistory.com/93


1. 결합도(Coupling)
   두 모듈간의 상호 의존도를 측정하는 것으로, 좋은 설계는 모듈간의 결합도를 최소화하여 모듈의 독립성을
   높인것을 의미 
   
  결합도 순서: 자료결합도 -> 스태프 결합도 -> 제어 결합도 -> 외부 결합도 -> 공통 결합도 -> 내용 결합도 

  자료 결합도 : 단순한 매개변수 전단 
  스태프 결합도 : 모듈간 자료구조 전달 결합
  제에 결합도 : 호출하는 모듈이 호출되어 지는 모듈의 제어를 지시하는 데이터를 매개변수로 사용
  외부 결합도 : SW 외부환경과 연관되어 있음
  공통 결합도 : 많은 모듈이 전역변수를 참조함
  내용 결합도 : 특정 모듈이 다른 모듈의 내부 자료 나 제어정보를 사용함

2. 응집도(Cohesion) 
   한 모듈 내에 있는 구성 요소의 기능적 관련성을 평가하는 기준으로 응집도가 높을수록 모듈의 독립성은 높아짐
  
  응집도 순서 : 기능적 응집도 -> 순차적 응집도 -> 통신적 응집도 -> 절차적 응집도 -> 시간적 응집도 ->
                     논리적 응집도 -> 우연적 응집도

 기능적 응집도 : 하나의 기능을 수행하는데 필요한 요소들만 포함한 경우
                      - 구조도 최하위 모듈에서 많이 발견
 순차적 응집도 : 하나의 기능에서 생성된 출력자료가 다음 기능의 입력자료로 사용되는 경우
                      (예: 행렬 입력 후 그 행렬의 역행렬을 구해서 이를 출력)
 통신적 응집도 : 동일한 자료 사용하지만, 자료에 대한 처리 절차가 완전히 다르고 서로 관계없는 경우
                     - 교환 응집, 정보 응집
                     (예: 같은 입력자료를 사용하여 A를 계산한 후 B를 계산한다.)
 절차적 응집도 : 입출력을 공유하지 않으나 순서에 따라서 수행될 필요가 있는 경우
                       예: restart루틴
                           총계 출력하고 화면을 지우고 메뉴를 뿌린다.
 시간적 응집도 : 특정한 시점에서 작업을 수행하는 경우
                       (예: 초기치 설정, 종료처리 등) 
 논리적 응집도 : 유사한 기능들이 하나의 모듈 안에 구성된 경우
                       - 사용하는 매개변수에 따라 처리하는 내용이나 경로가 달라진다
                     예: 오류처리- 자판기의 잔액부족, 음료수부족
                          출력처리- 직원 인사정보 출력, 회계정보 출력
 우연적 응집도 : 관련 없는 요소들로 구성된 모듈 (단순히 일정한 크기로 분할한 경우)
                       - 모듈화 장점이 없다.
                      - 유지보수 작업 곤란