일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 캐나다 영주권
- 딥러닝
- LV1
- 온라인석사
- 방통대
- 매트랩
- omscs
- EOI
- LAA
- Plotting
- 조지아텍
- zeros
- 기본
- 프로그래머스
- 알고리즘
- 머신러닝
- 방송통신대학교
- machine learning
- 컴퓨터과학과
- Deep learning
- 마니토바
- 선형대수
- leetcode
- 주정부이민
- 코딩테스트
- 개발자
- cpp
- MATLAB
- C++
- mpnp
- Today
- Total
Krononberg
software architecture - Coupling & Cohesion 본문
소프트웨어 공학에서 "커플링(Coupling)"은 두 모듈이나 시스템 구성 요소가 얼마나 밀접하게 연결되어 있는지를 나타내는 지표입니다. 이러한 연결성은 정보 공유, 변수 접근, 모듈 간 호출 등 다양한 형태로 나타날 수 있습니다.
커플링의 주요 특징은 다음과 같습니다:
낮은 커플링 (Low Coupling): 두 모듈 사이의 의존성이 최소화된 상태. 낮은 커플링은 소프트웨어의 재사용성과 유지 보수성을 향상시키는 데 도움이 됩니다.
높은 커플링 (High Coupling): 두 모듈 사이에 강한 의존성이 있는 상태. 높은 커플링은 시스템의 유연성을 저하시키고, 한 모듈에서의 변경이 다른 모듈에 문제를 일으킬 가능성이 있습니다.
커플링을 줄이려는 노력은 소프트웨어의 모듈성을 향상시키고, 각 모듈을 독립적으로 개발하고 테스트할 수 있게 만듭니다. 이는 소프트웨어의 전체적인 품질과 확장성에 긍정적인 영향을 미칩니다.
"응집도(Cohesion)"는 소프트웨어 공학에서 매우 중요한 개념입니다. 이것은 하나의 모듈 내의 기능이나 작업들이 서로 얼마나 밀접하게 연관되어 있는지를 나타내는 지표입니다.
1. 높은 응집도 (High Cohesion): 모듈이나 클래스 내의 기능들이 서로 밀접하게 관련되어 있고, 해당 모듈이나 클래스의 주요 목적을 지원하는 기능만 포함되어 있다면 높은 응집도를 가진 것입니다. 높은 응집도는 소프트웨어의 유지 보수성, 재사용성, 가독성을 향상시키는 데 도움이 됩니다.
2. 낮은 응집도 (Low Cohesion): 모듈이나 클래스 내의 기능들이 서로 관련성이 없거나 약하게만 연결되어 있다면 낮은 응집도를 가진 것입니다. 낮은 응집도는 유지 보수가 어렵고, 오류 발생 확률이 높아질 수 있습니다.
응집도의 몇 가지 유형은 다음과 같습니다:
- 기능 응집도 (Functional Cohesion): 모듈의 모든 기능이 단일 목적을 수행하기 위해 밀접하게 연관되어 있을 때.
- 순차 응집도 (Sequential Cohesion): 모듈 내의 기능들이 특정 순서대로 실행되어야 할 때.
- 통신 응집도 (Communicational Cohesion): 모듈 내의 기능들이 동일한 데이터 또는 입력/출력을 공유할 때.
- 임시 응집도 (Temporal Cohesion): 모듈 내의 기능들이 동일한 시간 범위 내에서 실행되어야 할 때 (예: 초기화 함수).
커플링과 응집도는 서로 연관된 개념입니다. 일반적으로 소프트웨어 디자인의 목표는 높은 응집도와 낮은 커플링을 갖는 구조를 만드는 것입니다. 이렇게 하면 시스템이 더 유연하고, 유지 보수가 쉬우며, 재사용성도 높아집니다.
'개발 로그 > 기록장' 카테고리의 다른 글
Information Hiding (0) | 2023.09.08 |
---|---|
Design Validation Issues (0) | 2023.09.08 |
소프트웨어 디자인 approach (0) | 2023.09.08 |
Software design이란? (0) | 2023.09.08 |
Viewport란? (0) | 2023.09.08 |