미분류

모듈 설계의 핵심 개념: 응집도, 결합도, 의존성

1. 응집도 (Cohesion)

하나의 모듈 내부 요소들이 서로 관련되어 있는 정도를 말합니다.

모듈 내부의 함수나 클래스가 같은 목적을 위해 함께 동작한다면, 해당 모듈은 응집도가 높은 상태입니다.

✅ 좋은 응집도란?

  • 모듈이 하나의 책임만 가질 때
  • 내부 요소들이 서로 연관된 역할을 수행할 때

❌ 나쁜 응집도의 예시

  • 유틸 함수가 이것저것 뒤섞여 있는 경우
  • 한 모듈이 인증, 네트워크, UI 처리까지 모두 맡고 있는 경우

2. 결합도 (Coupling)

서로 다른 모듈 간의 의존성과 연결 정도를 의미합니다.

모듈 간 연결이 느슨할수록 유지보수가 쉬워지며, 다른 모듈로 교체하거나 수정하기도 편해집니다.

✅ 낮은 결합도란?

  • 한 모듈이 다른 모듈의 내부 구현을 몰라도 동작할 수 있을 때
  • 인터페이스나 추상화를 통해 느슨하게 연결된 상태일 때

❌ 높은 결합도의 위험

  • 한 모듈이 변경되면, 연결된 다른 모듈들도 함께 수정해야 할 가능성이 높음
  • 테스트가 어려워짐

3. 의존성 (Dependency)

한 모듈이 다른 모듈의 기능이나 데이터에 의존하는 관계를 의미합니다.

의존성 자체가 나쁜 것은 아니지만, 이를 적절히 관리하지 않으면 결합도가 높아지고, 모듈 간 독립성이 떨어지게 됩니다.

✅ 의존성을 잘 관리하는 방법

  • 의존성 주입(DI)을 사용하는 방법
  • 인터페이스나 추상화를 통해 유연한 구조를 만드는 것