응집도(Cohesion)란?

  • 응집도는 하나의 모듈이나 클래스 내부의 기능들이 얼마나 밀접하게 연관되어 있는지를 나타냅니다.
  • 즉, 하나의 모듈이 단일 기능이나 목적을 가지고 있는 정도를 말합니다.
  • 응집도가 높다는 것은 모듈 내의 모든 요소가 서로 긴밀하게 연결되어 있다는 것을 의미하며, 유지보수와 이해하기 쉬운 코드를 만드는데 중요한 역할을 합니다.

응집도 예시

  1. 높은 응집도
  • '계산기' 클래스에는 수학적 계산과 관련된 메소드들만 포함되어 있습니다.
  • '더하기', '빼기', '곱하기', '나누기' 등의 기능이 계산기 클래스에 포함됩니다.
  • '더하기', '빼기', '곱하기', '나누기' 각 메소드들은 계산기의 기능에 밀접하게 연관되어 있는 기능들로 응집도가 높습니다.
  1. 낮은 응집도
  • '도구상자' 클래스에는 파일을 읽는 메소드, 그래픽을 그리는 메소드, 데이터베이스 쿼리를 실행하는 메소드 등 서로 다른 기능들이 있습니다.
  • 이런식으로 하나의 기능을 특정 짓는 것이 아닌 관련없는 여러 기능들을 하나의 클래스에 선언할 때 응집도가 낮다라고 합니다.

결합도(Coupling)란?

  • 결합도는 서로 다른 모듈 간의 '의존성' 정도를 나타냅니다.
  • 모듈 간의 결합도가 낮다는 것은 각 모듈이 서로 독립적으로 기능한다는 것을 의미하며, 유지보수성과 확장성에 긍정적인 영향을 미칩니다.

결합도 예시

  1. 낮은 결합도
  • '사용자 인터페이스' 모듈과 '데이터 처리' 모듈이 서로 독립적으로 작동합니다.
  • 이는 하나의 모듈을 수정하더라도 다른 모듈에 영향을 주지 않는다는 것을 의미합니다.
  1. 높은 결합도
  • '주문 처리' 모듈이 '재고 관리' 모듈에 강하게 의존하고 있습니다.
  • 이 경우, '재고 관리' 모듈에 변화가 생기면 '주문 처리' 모듈도 이에 맞춰 변경해야 합니다.

응집도와 결합도의 균형

  • 효과적인 소프트웨어 설계를 위해서는 응집도를 높이고 결합도를 낮추는 것이 중요합니다.
  • 높은 응집도는 모듈이 명확하고 관리하기 쉽게 만들어 주며, 낮은 결합도는 시스템의 다른 부분에 영향을 주지 않고 독립적으로 모듈을 수정하거나 교체할 수 있게 해줍니다.
반응형

'개발 > Spring' 카테고리의 다른 글

AOP란? AOP 내용, AOP 예제  (0) 2024.01.11
[Querydsl] DTO 조회 방법  (0) 2023.12.17
OAuth2란? OAuth2 예시  (1) 2023.12.15
DTO <-> Entity 변환 이유!  (0) 2023.12.14

+ Recent posts