공통 모듈 구현
독립성을 높이려면 모듈의 결합도는 낮게, 응집도는 높게, FAN-IN 높게, FAN-OUT 낮게 설계해야 한다.
응집도
: 모듈 내부 구성요소 간 연관 정도
우연적 -> 논리적 -> 시간적 -> 절차적 -> 통신적 -> 순차적 -> 기능적
--외우는 Tip
우리 놀(논)던 시절에 먹었던 통통한 순대 기가막혔지!
***절차적 응집도와 순차적 응집도의 차이
절차적 응집도: 모듈 안의 구성요소들이 순차적으로 수행
순차적 응집도: 모듈 안에서 나온 출력값을 다른 활동에 사용
(절차적 응집도의 개념에 순차적이 있다고 헷갈리지 않기!)
결합도(Coupling)
: 모듈과 모듈간의 연관도 또는 상호의존성
자료(Data) -> 스탬프(Stamp) -> 제어(Control) -> 외부(External) -> 공통(Common) -> 내용(Content)
--외우는 Tip
대(Da)스형, 쟤(제) 왜(외)저래 공유랑 내가 닮았대
*** 각 유형별 소스코드 알아두기
자료 결합도: 파라미터로 전달 int a
스탬프 결합도: 배열이나 객체, 구조로 전달 int[] a
제어 결합도: 제어 신호 이용 if else
외부 결합도: 외부 모듈 참조
공통 결합도: 전역 변수 참조 int a가 main 밖에 선언
내용 결합도: 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용
팬인(Fan-In) , 팬아웃(Fan-Out) 계산 방법
들어오는건 팬인, 나가는건 팬아웃
A의 경우 팬인 0, 팬아웃 3
B의 경우 팬인 1, 팬아웃 2
시스템 복잡도를 최적화하기 위해서는 팬인은 높게, 팬아웃은 낮게 설계해야한다.