* 결합도(Coupling)
- 모듈 내부가 아닌 모듈 간 연관도(모듈 간 상호의존성). SW 구조에서 모듈 간 관련성 측정하는 척도
- 서로 다른 상위 모듈에 의해 호출되어 연관성 없는 서로 다른 기능 수행
- 자료 전달이 인터페이스 통하므로 인터페이스 복잡성에 의존적
- 낮은 결합도는 복잡성 감소시킴 (loosely-coupled)
- 에러 발생 시 오류 전파되어 다른 오류 원인이 되는 리플 효과(Ripple Effect) 최소화 해야함
* 결합도 단계
결합도 | 내용 |
자료 결합도 (Data Coupling) |
- 모듈 간 인터페이스로 전달되는 파라미터 통해서만 모듈 상호 작용 발생 |
스탬프 결합도 (Stamp Coupling) |
- 모듈 간 인터페이스로 배열이나 오브젝트, 스트럭처 등 전달되는 경우 |
제어 결합도 (Control Coupling) |
- 단순 처리 대상 값만 전달하는 것 아니라 어떻게 처리해야 한다는 제어 요소가 전달되는 경우 |
외부 결합도 (External Coupling) |
- 모듈에서 외부로 선언한 데이터를 다른 모듈에서 참조할 때 경우로 외부에서 도입된 데이터 포맷, 통신 포로토콜 또는 디바이스 인터페이스 공유 시 발생 |
공통 결합도 (Common Coupling) |
- 파라미터가 아닌 모듈 밖에 선언되어 있는 전역변수 참조하고 전역변수 갱신하는 식으로 상호 작용하는 경우 |
내용 결합도 (Content Coupling) |
- 다른 모듈 내부에 있는 변수나 기능 또 다른 모듈에서 사용하는 경우 |
* 강결합(Tightly-Coupled) 예제
- Main 클래스는 Sub 클래스에 종속 --> Main 클래스는 Sub 클래스와 밀접하게 결합되어 있음.
- Sub 클래스에 변경 사항 있다면 Main 클래스 변경해야 함
class Main {
Sub s = new Sub();
public void subCall() {
s.PrintTightCoupling();
}
}
class Sub {
public void PrintTightCoupling() {
System.out.println("강 결합");
}
}
* 약결합(loosely-coupled) 예제
- Sub1과 Sub2는 서로 약하게 결합되어 있음.
- 인터페이스로 구현된 클래스를 런 타임에 사용 가능하며 최종 사용자에게 서비스 제공할 수 있음을 의미
- 결합도가 약하면 클래스 변경 시 서로 영향도 적음
public interface Sub {
void PrintLoosely();
}
class Sub1 implements Sub {
public void PrintLoosely() {
System.out.println("Sub1 Loosely!");
}
}
class Sub2 implements Sub {
public void PrintLoosely() {
System.out.println("Sub2 Loosely!");
}
}
public class Main {
public static void main(String[] args) {
Sub s = new Sub1();
s.printLoosely();
}
}
320x100
'정보처리기사 > 필기' 카테고리의 다른 글
[정보처리기사 필기 요약] 취약점 (0) | 2021.03.04 |
---|---|
[정보처리기사 필기 요약] 모듈화 (2) - 응집도 (Cohesion) (0) | 2021.03.04 |
[정보처리기사 필기 요약] 모듈화(1) (0) | 2021.03.03 |
[정보처리기사 필기 요약] 재사용 (0) | 2021.03.03 |
[정보처리기사 필기 요약] 개발 환경 구축 및 형상 관리 (0) | 2021.03.03 |
댓글