개발자 '쑥말고인절미'

[정보처리기사] 결합도, 응집도 본문

STUDY/정보처리기사

[정보처리기사] 결합도, 응집도

쑥말고인절미 2024. 2. 15. 01:30
간단정리
  • 결합도(Coupling)는 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미한다.
  • 응집도(Cohesion)는 정보 은닉 개념을 확장한 것으로, 명령어나 호출문 등 모듈의 내부 요소들의 서로 관련되어 있는 정도, 즉 모듈이 독립적인 기능으로 정의되어 있는 정도를 의미한다.
  • 결합도는 자스제외공내, 응집도는 우논시절통순기

 


 

결합도(Coupling)
  • 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미한다.
  • 다양한 결합으로 모듈을 구성할 수 있으나 결합도가 약할수록 품질이 높고, 강할수록 품질이 낮다.
  • 결합도가 강하면 시스템 구현 및 유지보수 작업이 어렵다.
  • 종류 (높은품질 -> 낮은품질 순)
    • 1) 자료 결합도 (데이터 결합도, Data Coupling)
      • 모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도
    • 2) 스탬프 결합도 (검인 결합도, Stamp Coupling)
      • 모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도
    • 3) 제어 결합도 (Control Coupling)
      • 한 모듈에서 다른 모듈로 논리적인 흐름을 제어하는 데 사용하는 제어 요소(Function code, Switch, Tag, Flag)가 전달될 때의 결합도
    • 4) 외부 결합도 (External Coupling)
      • 어떤 모듈에서 외부로 선언한 데이터(변수)를 다른 모듈에서 참조할 때의 결합도
    • 5) 공통 결합도 (공유 결합도, Common Coupling)
      • 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도
    • 6) 내용 결합도 (Content Coupling)
      • 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도

 


 

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

 


 

 

효과적인 모듈 설계 방안
  • 결합도는 줄이고 응집도는 높여서 모듈의 독립성과 재사용성을 높인다.
  • 모듈의 제어 영역 안에서 그 모듈의 영향 영역을 유지시킨다.
  • 복잡도와 중복성을 줄이고 일관성을 유지시킨다.
  • 모듈의 기능은 예측이 가능해야 하며 지나치게 제한적이어서는 안된다.
  • 유지보수가 용이해야 한다.
  • 모듈 크기는 시스템의 전반적인 기능과 구조를 이해하기 쉬운 크기로 분해한다.
  • 하나의 입구와 하나의 출구를 갖도록 해야 한다.
  • 인덱스 번호나 기능 코드들이 전반적인 처리 논리 구조에 예기치 못한 영향을 끼치지 않도록 모듈 인터페이스를 설계해야 한다.
  • 효과적인 제어를 위해 모듈 간의 계층적 관계를 정의하는 자료가 제시되어야 한다.