결합도
순서 강 > 약 / 내공외제스자
내용 -> 공통 -> 외부 -> 제어 -> 스탬프 -> 데이터(자료)
Content > Common > External > Control > Stamp > Data
Content Coupling (내용 결합도)
하나의 모듈이 다른 모듈의 내부 동작을 수정하거나 내부 동작에 의존하는 상태.
(내부 자료나 제어 정보를 사용하는 것이다.)
한 모듈이 데이터를 생성하는 방법을 변경하면, 다른 모듈의 변경이 필요하다.
(다른 모듈이 로컬 데이터에 접근하는 경우)
Common Coupling (공통 결합도)
두 개의 모듈이 같은 글로벌 데이터를 공유하는 상태. (전역 변수)
공유 자원(변수)을 변경하면 그 자원을 사용하는 모든 모듈의 변경이 필요하다.
External Coupling (외부 결합도)
두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 디바이스 인터페이스를 공유할 때 발생.
(SW 외부환경과 연관되어 있음)
기본적으로 외부 툴이나 디바이스와의 통신과 관련이 있다.
Control Coupling (제어 결합도)
하나의 모듈이 다른 모듈로 무엇을 해야 하는지에 대한 정보를 넘겨줌으로써 다른 모듈의 흐름을 제어
Stamp Coupling (data-structured coupling) (스탬프 결합도)
모듈들이 데이터 구조를 공유하고, 그 서로 다른 일부만을 사용하는 경우
접근할 필요가 없는 필드만 수정되는 경우에도, 레코드/필드를 읽는 방법을 변경해야 한다.
(데이터의 배치가 변경되기 때문)
Data Coupling (자료 결합도)
모듈들이 parameter 등을 통해 데이터를 공유하는 경우
각 데이터가 기본적인 것(elementary piece)이고, 그 데이터를 공유하는 유일한 데이터이어야 한다.
(제곱근을 계산하는 함수로 하나의 정수를 전달하는 경우)
Message Coupling (메시지 결합도)
가장 낮은 결합도 단계. 분산 및 메시지 전달로 실현 (decentralization & message passing)
(의존성 주입 / dependency injection, Observable)
응집도
순서 강 > 약 / 기순교절시논우
기능적 > 순차적 > 통신/교환적 > 절차적 > 시간적 > 논리적 > 우연적
Functional > Sequential > Communicational/Informational > Procedural > Temporal > Logical > Coincidental
Functional Cohesion (기능적 응집도)
모듈 내부의 기능들이 단일 목적을 수행하기 위해 grouping 되는 경우
(Lexcial analysis of an XML String)
Sequential Cohesion (순차적 응집도)
모듈의 한 활동으로부터 나온 출력 값을 다른 활동(다음 기능)에 사용한 경우
(파일에서 데이터를 읽고 처리하는 함수)
Communicational/informational Cohesion (교환적/통신적 응집도)
여러가지 기능을 수행하며 모듈 내부의 기능들이 같은 데이터를 처리(입/출력)할 때 grouping 되는 경우
(정보의 같은 레코드를 작동하는 모듈)
Procedural Cohesion (절차적 응집도)
모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행하는 경우
(파일 허가를 확인한 뒤 열어보는 함수)
Temporal Cohesion (시간적 응집도)
프로그램이 실행되어야 하는 특정 시간 내에 처리되어야 할 프로세스들을 한 모듈에서 처리할 경우
(열려 있는 파일을 닫는 예외 상황을 잡아내어 에러 로그를 생성하고 사용자에게 알려주는 함수)
Logical Cohesion (논리적 응집도)
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
(키보드와 마우스를 입력 처리 루틴으로 그룹화)
Coincidental Cohesion (우연적 응집도)
모듈 내부의 각 구성요소들이 연관이 없거나 임의적인 경우.
'CS > OS & 하드웨어' 카테고리의 다른 글
CPU 스케줄링 (Scheduling) 개념 (1) | 2024.09.24 |
---|---|
논리게이트의 종류(AND, OR, NOT, NAND, NOR, XOR, XNOR) (0) | 2024.09.24 |
Virtual Machine (가상 머신이란?) (0) | 2024.09.19 |
컴퓨터 시스템 (3) | 2024.09.03 |
멀티 프로세싱 vs 멀티 프로그래밍 vs 멀티 태스킹 vs 멀티 스레딩 (0) | 2024.07.28 |