초보 코린이의 성장 일지

소프트웨어 낮은 결합도 / 높은 응집도 본문

개인 공부

소프트웨어 낮은 결합도 / 높은 응집도

코오린이 2023. 4. 10. 01:12

모듈화 (Modularization)

- 소프트웨어를 각 기능별로 나누는 것

- 프로그램을 효율적으로 관리될 수 있도록 시스템을 분해, 추상화 함으로써 제품의 성능을 향상시키고, 수정 및 재사용, 유지관리를 용이하게 하는 방법

- 각각의 모듈은 주어진 기능만을 독립적으로 수항하며, 다른 모듈과 적게 연관되어야 한다.

 

모듈

- 기능별로 나눠진 모듈들의 결과

 

결합도

- 서로 다른 모듈 간에 상호 의존하는 정도 또는 연관된 관계를 뜻한다.

- 자료 결합도, 스탬프 결합도, 제어 결합도, 외부 결합도, 공통 결합도, 내용 결합도 

- 모듈의 변화의 영향과 의존성을 낮추고 재사용성을 높이기 위해 결합도를 낮게 유지시키는 것이 좋다.

결합도가 높은 클래스 특징

- 모듈 연관성이 없다.

- 복장성 감소

결합도 낮은 클래스 문제점

- 연관된 클래스가 변경되면 같이 변경되어야 한다.

- 다른 프로그램에서 재사용이 어렵다.

- 수정하려는 클래스를 위해 연관된 클래스를 함께 이해하고 있어야한다.

 

응집도

- 모듈 내부의 기능적 집중

- 기능적 응집도, 순차적 응집도, 통신적 응집도, 절차적 응집도, 시간적 응집도, 논리적 응집도, 우연적 응집도

- 정보 은닉의 확장 개념으로 하나의 모듈은 하나의 기능을 수행하는 것을 뜻함.

- 독립적인 모듈이 되기위해 응집도가 높아야한다.

응집도가 높은 클래스 특징

- 단일 책임을 가진 클래스

- 다른 클래스와 상호작용 할 수 있는 클래스

응집도가 낮은 클래스 문제점

- 보기힘들며 이해하기 어렵다.

- 재사용과 유지보수가 어렵다

- 다른 클래스가 변화될때 영향을 줄 수 있다.

Comments