모듈화 : 소프트웨어를 각 기능별로 나누는 것
모듈
- 각각의 기능별로 나눠진 모듈화의 결과
- '프로그램' 또는 '작업 단위' 정도의 의미
목적에 맞는 기능만으로 모듈을 나누고,
그 모듈들이 각자 주어진 기능만을 독립적으로 수행하면서,
다른 모듈과 연관성이 적어야 한다.
즉, 독립성이 높은 모듈일수록 좋다.
why?
독립성 高 면,
해당 모듈을 수정하더라도, 다른 모듈에 끼치는 영향 小
해당 모듈에 오류가 발생하더라도, 쉽게 문제 발견 + 해결 가능
결론적으로
응↑
결↓
모듈의 독립성을 높이기 위해서는
모듈이 독립적으로 자체 기능만을 수행하도록 응집도 ↑
모듈 간의 상호 의존 정도를 나타내는 결합도 ↓
(모듈의 독립성은 모듈의 응집도(Cohesion) + 결합도(Coupling) 로 측정)
결합도가 높은 클래스 = 다른 클래스와 연관된 정도가 높다.
--> 해당 클래스를 변경하면, 연관된 클래스도 변경해야 하며 다른 코드에서 클래스를 재사용하기도 어렵다.
응집도가 높으면, 프로그램을 쉽게 이해할 수 있어서 유지보수성이 높아진다.