본문 바로가기
seok

결합도와 응집도

by shulk 2024. 6. 25.

결합도와 응집도는 소프트웨어 설계에서 중요한 개념으로, 코드의 유지보수성과 재사용성을 높이는 데 중요한 역할을 합니다. 두 개념을 쉽게 설명하면 다음과 같습니다:

결합도 (Coupling)

결합도는 하나의 모듈(또는 클래스)이 다른 모듈과 얼마나 밀접하게 연결되어 있는지를 나타냅니다. 결합도가 높을수록 모듈 간의 의존성이 커지고, 결합도가 낮을수록 모듈 간의 의존성이 적습니다.

  • 높은 결합도: 한 모듈이 다른 모듈에 강하게 의존하고 있어서, 한 모듈에 변경이 발생하면 이를 사용하는 다른 모듈에도 변경이 필요하게 되는 상황입니다.
    • 예시: 클래스 A가 클래스 B의 내부 구현에 의존하여, B의 코드가 변경되면 A도 함께 변경되어야 합니다.
    • 단점: 유지보수가 어려워지고, 재사용성이 낮아집니다.
  • 낮은 결합도: 모듈 간의 의존성이 적고, 한 모듈의 변경이 다른 모듈에 미치는 영향이 적은 상태입니다.
    • 예시: 클래스 A가 클래스 B의 인터페이스에만 의존하고, B의 내부 구현이 변경되더라도 A는 영향을 받지 않습니다.
    • 장점: 유지보수가 용이하고, 재사용성이 높아집니다.

응집도 (Cohesion)

응집도는 하나의 모듈(또는 클래스) 내의 구성 요소들이 얼마나 밀접하게 관련되어 있는지를 나타냅니다. 응집도가 높을수록 모듈 내부의 구성 요소들이 관련이 깊고, 응집도가 낮을수록 모듈 내부의 구성 요소들이 관련이 적습니다.

  • 높은 응집도: 모듈 내의 구성 요소들이 하나의 목적을 달성하기 위해 밀접하게 연관되어 있는 상태입니다.
    • 예시: 클래스 내의 메소드와 필드들이 모두 클래스의 주된 기능을 수행하기 위해 존재합니다.
    • 장점: 모듈의 기능이 명확하고, 유지보수성이 높아집니다.
  • 낮은 응집도: 모듈 내의 구성 요소들이 서로 연관성이 적고, 다양한 목적을 위해 존재하는 상태입니다.
    • 예시: 클래스 내의 메소드들이 서로 다른 기능을 수행하고, 하나의 클래스가 여러 가지 책임을 가지는 경우입니다.
    • 단점: 모듈의 기능이 명확하지 않고, 유지보수가 어렵습니다.

비유를 통한 설명

  • 결합도: 결합도를 사람 간의 의존 관계로 생각할 수 있습니다. 높은 결합도는 두 사람이 매우 의존적인 관계를 가지고 있어, 한 사람이 없으면 다른 사람이 일을 할 수 없는 상태를 의미합니다. 낮은 결합도는 두 사람이 독립적으로 일을 할 수 있고, 서로의 도움 없이도 자신의 일을 잘 해낼 수 있는 상태를 의미합니다.
  • 응집도: 응집도를 팀의 목표와 관련된 정도로 생각할 수 있습니다. 높은 응집도는 팀의 모든 구성원이 같은 목표를 향해 협력하고, 각자의 역할이 명확히 정의되어 있는 상태를 의미합니다. 낮은 응집도는 팀의 구성원들이 각기 다른 목표를 가지고 있고, 협력보다는 개별적으로 일하는 상태를 의미합니다.

결론

  • 낮은 결합도높은 응집도를 목표로 설계하면, 소프트웨어의 유지보수성과 재사용성을 높일 수 있습니다.
  • 모듈 간의 의존성을 줄이고(낮은 결합도), 모듈 내부의 구성 요소들이 밀접하게 관련되도록(높은 응집도) 설계하는 것이 중요합니다.

'seok' 카테고리의 다른 글

프로젝트 MyBatis  (0) 2024.06.03
테스트용-데이터베이스를 임베디드 모드  (0) 2024.05.31
Querydsl프로젝트 설정,여러팁/비공개  (0) 2024.03.27