ShovelingLife
A Game Programmer
ShovelingLife
전체 방문자
오늘
어제
  • 분류 전체보기 (1066) N
    • 그래픽스 (57)
      • 공통 (19)
      • 수학 물리 (22)
      • OpenGL & Vulkan (1)
      • DirectX (14)
    • 게임엔진 (179) N
      • Unreal (69)
      • Unity (99) N
      • Cocos2D-X (3)
      • 개인 플젝 (8)
    • 코딩테스트 (221)
      • 공통 (7)
      • 프로그래머스 (22)
      • 백준 (162)
      • LeetCode (19)
      • HackerRank (2)
      • 코딩테스트 알고리즘 (8)
    • CS (235)
      • 공통 (21)
      • 네트워크 (44)
      • OS & 하드웨어 (55)
      • 자료구조 & 알고리즘 (98)
      • 디자인패턴 (6)
      • UML (4)
      • 데이터베이스 (7)
    • 프로그래밍 언어 (346)
      • C++ (167)
      • C# (88)
      • Java (9)
      • Python (33)
      • SQL (30)
      • JavaScript (8)
      • React (7)
    • 그 외 (9)
      • Math (5)
      • 일상 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Source Code 좌측 상단에 복사 버튼 추가 완료
  • 언리얼 엔진 C++ 빌드시간 단축 꿀팁
  • 게임 업계 코딩테스트 관련
  • 1인칭 시점으로 써내려가는 글들

인기 글

태그

  • 문자열
  • 티스토리챌린지
  • 그래픽스
  • SQL
  • 언리얼
  • 포인터
  • 유니티
  • C++
  • 파이썬
  • 함수
  • 백준
  • C
  • 프로그래머스
  • c#
  • Unity
  • 알고리즘
  • string
  • 오블완
  • 클래스
  • 배열

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ShovelingLife

A Game Programmer

CS/OS & 하드웨어

결합도(Coupling)과 응집도(Cohesion) 순서

2024. 9. 22. 18:46

결합도

순서 강 > 약 / 내공외제스자

내용 -> 공통 -> 외부 -> 제어 -> 스탬프 -> 데이터(자료)

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 (우연적 응집도)

모듈 내부의 각 구성요소들이 연관이 없거나 임의적인 경우.

 

 

https://1000hg.tistory.com/32

저작자표시

'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
    'CS/OS & 하드웨어' 카테고리의 다른 글
    • CPU 스케줄링 (Scheduling) 개념
    • 논리게이트의 종류(AND, OR, NOT, NAND, NOR, XOR, XNOR)
    • Virtual Machine (가상 머신이란?)
    • 컴퓨터 시스템
    ShovelingLife
    ShovelingLife
    Main skill stack => Unity C# / Unreal C++ Studying Front / BackEnd, Java Python

    티스토리툴바