개발자 '쑥말고인절미'
[정보처리기사] 결합도, 응집도 본문
간단정리
- 결합도(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)
- 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도
- 1) 자료 결합도 (데이터 결합도, Data Coupling)
응집도(Cohesion)
- 정보 은닉 개념을 확장한 것으로, 명령어나 호출문 등 모듈의 내부 요소들의 서로 관련되어 있는 정도, 즉 모듈이 독립적인 기능으로 정의되어 있는 정도를 의미한다.
- 다양한 기준으로 모듈을 구성할 수 있으나 응집도가 강할수록 품질이 높고, 약할수록 품질이 낮다.
- 종류 (높은품질 -> 낮은품질 순)
- 1) 기능적 응집도 (Function Cohesion)
- 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도
- 2) 순차적 응집도 (Sequential Cohesion)
- 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도
- 3) 통신적 응집도 (교환적 응집도, Communication Cohesion)
- 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우의 응집도
- 4) 절차적 응집도 (Procedural Cohesion)
- 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도
- 5) 시간적 응집도 (Temporal Cohesion)
- 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
- 6) 논리적 응집도 (Logical Cohesion)
- 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
- 7) 우연적 응집도 (Coincidental Cohesion)
- 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도
- 1) 기능적 응집도 (Function Cohesion)
효과적인 모듈 설계 방안
- 결합도는 줄이고 응집도는 높여서 모듈의 독립성과 재사용성을 높인다.
- 모듈의 제어 영역 안에서 그 모듈의 영향 영역을 유지시킨다.
- 복잡도와 중복성을 줄이고 일관성을 유지시킨다.
- 모듈의 기능은 예측이 가능해야 하며 지나치게 제한적이어서는 안된다.
- 유지보수가 용이해야 한다.
- 모듈 크기는 시스템의 전반적인 기능과 구조를 이해하기 쉬운 크기로 분해한다.
- 하나의 입구와 하나의 출구를 갖도록 해야 한다.
- 인덱스 번호나 기능 코드들이 전반적인 처리 논리 구조에 예기치 못한 영향을 끼치지 않도록 모듈 인터페이스를 설계해야 한다.
- 효과적인 제어를 위해 모듈 간의 계층적 관계를 정의하는 자료가 제시되어야 한다.
'STUDY > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 5과목 정보시스템 구축 관리 315 ~ 321 (구조적/정보공학/컴포넌트 방법론, 소프트웨어 재사용, CASE) (0) | 2024.02.21 |
---|---|
[정보처리기사] 1 ~ 5과목 키워드 정리(시나공_2024 핵심요약(상세 116 page) (0) | 2024.02.20 |
[프로그래밍]76. 다음은 C언어 코드이다. 출력 결과를 쓰시오. (0) | 2022.06.09 |
[프로그래밍]112. 다음은 C언어 코드이다. 출력 결과를 쓰시오. (0) | 2022.06.09 |
[프로그래밍]11. 다음은 C언어 코드이다. 출력 결과를 쓰시오 (0) | 2022.06.07 |