본문 바로가기

정보처리기사 (필기)/1. 소프트웨어 설계

[정보처리기사] 1-9. 결합도와 응집도

1. 모듈

  • 모듈화 통해 분리된 시스템의 각 기능
  • 단독 컴파일 가능, 재사용 가능
  • 모듈의 독립성은 결합도와 응집도에 의해 측정됨
  • 독립성 높이려면 / 모듈의 결합도는 낮게 / 응집도는 강하게 / 모듈의 크기는 작게
  • 독립성이 높을수록 모듈 수정시 다른 모듈들에게 영향이 적고 오류 발견도 쉽고 해결도 쉬움

2. 결합도 (Coupling)

  • 결합도가 낮으수록 품질 높고 , 강할수록 품질 낮음
  • 결합도 강하면 유지보수 어려움
  • 내-공-외-제-스-자 (높음/안좋음------->낮음/좋음)
  • 내용 결합도 (content) : 한 모듈이 다른 모듈 내부 기능 및 내부 자료 직접참조하거나 수장할 때의 결합도
  • 공통 결합도 (common) : 공유되는 공통 데이터 영역을 여러 모듈이 사용할 떄의 결합도 (전역변수)
  • 외부 결합도 (external) : 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때의 결합도(순차적)
  • 제어 결합도 (control) : 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호를 이용하여 통신하거나 제어 요소를 전달하는 결합도
  • 스탬프 결합도 (stamp) : 모듈간의 인터페이스로 배열이나 레코드 등의 자료구조가 전달될 때의 결합도
  • 자료 결합도 (data) : 어떤 모듈이 다른 모듈을 호출하면서 매개변수 (파라미터)나 인수로 데이터를 넘계주고 호출받는 모듈은 받은 데이터에 대한 처리 결과를 다시 돌려주는 결합도

3. 응집도 (Cohesion)

  • 정보 은닉 개념을 확장한 것, 명령이나 호출문 등 모듈의 내부 요소들의 서로 관련되어 있는 정도
  • 모듈이 독립적인 기능으로 정의되어있는 정도
  • 응집도가 강할 수 록 품질 높고 약할수록 품질 낮음
  • 우-논-시-절-통-순-기 (낮음/안좋음 -------> 높음/좋음)
  • 우연적 응집도 (Coincidental) :  모듈 내부의 각 구성요소들이 서로 관련없는 요소로만 구성된 경우의 응집도
  • 논리적 응집도 (Logical) : 유사한 성격을 갖거나 특정 형태로 분류되는 처리되는 요소들로 하나의 모듈이 형성되는 경우
  • 시간적 응집도 (Temporal) : 특정 시간에 처리되는 몇개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
  • 절차적 응집도 (Procedural) : 모듈의 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
  • 통신적 응집도 (Communication) : 동일한 입출력과 출력을 사용하여 서로 다른 기능을 수행하는 구성요소들이 모였을 경우의 응집도
  • 순차적 응집도 (Sequential) : 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도
  • 기능적 응집도 (Functional) : 모듈 내부의 모든 기능요소들이 단일 문제와 연관되어 수행될 경우의 응집도