초보 코린이의 성장 일지
소프트웨어 낮은 결합도 / 높은 응집도 본문
모듈화 (Modularization)
- 소프트웨어를 각 기능별로 나누는 것
- 프로그램을 효율적으로 관리될 수 있도록 시스템을 분해, 추상화 함으로써 제품의 성능을 향상시키고, 수정 및 재사용, 유지관리를 용이하게 하는 방법
- 각각의 모듈은 주어진 기능만을 독립적으로 수항하며, 다른 모듈과 적게 연관되어야 한다.
모듈
- 기능별로 나눠진 모듈들의 결과
결합도
- 서로 다른 모듈 간에 상호 의존하는 정도 또는 연관된 관계를 뜻한다.
- 자료 결합도, 스탬프 결합도, 제어 결합도, 외부 결합도, 공통 결합도, 내용 결합도
- 모듈의 변화의 영향과 의존성을 낮추고 재사용성을 높이기 위해 결합도를 낮게 유지시키는 것이 좋다.
결합도가 높은 클래스 특징
- 모듈 연관성이 없다.
- 복장성 감소
결합도 낮은 클래스 문제점
- 연관된 클래스가 변경되면 같이 변경되어야 한다.
- 다른 프로그램에서 재사용이 어렵다.
- 수정하려는 클래스를 위해 연관된 클래스를 함께 이해하고 있어야한다.
응집도
- 모듈 내부의 기능적 집중
- 기능적 응집도, 순차적 응집도, 통신적 응집도, 절차적 응집도, 시간적 응집도, 논리적 응집도, 우연적 응집도
- 정보 은닉의 확장 개념으로 하나의 모듈은 하나의 기능을 수행하는 것을 뜻함.
- 독립적인 모듈이 되기위해 응집도가 높아야한다.
응집도가 높은 클래스 특징
- 단일 책임을 가진 클래스
- 다른 클래스와 상호작용 할 수 있는 클래스
응집도가 낮은 클래스 문제점
- 보기힘들며 이해하기 어렵다.
- 재사용과 유지보수가 어렵다
- 다른 클래스가 변화될때 영향을 줄 수 있다.
'개인 공부' 카테고리의 다른 글
컴파일러 / 인터프리터 설명 및 차이 (0) | 2023.07.18 |
---|---|
CBD (Component Based Development) 개발 방법론 (0) | 2023.04.19 |
레이스컨디션 (Race Condition) (0) | 2023.04.10 |
스마트 포인터 (Smart Pointer) (0) | 2023.04.03 |
가상 메모리 (0) | 2023.03.04 |
Comments