응집도(Cohesion), 결합도(Coupling)

박영준·2023년 1월 8일
0

Java

목록 보기
36/111

1. 모듈, 모듈화

1) '모듈', '모듈화' 란?

  • 모듈화 : 소프트웨어를 각 기능별로 나누는 것

  • 모듈
    - 각각의 기능별로 나눠진 모듈화의 결과
    - '프로그램' 또는 '작업 단위' 정도의 의미

2) '좋은 모듈', '좋은 모듈화' 란?

목적에 맞는 기능만으로 모듈을 나누고,
그 모듈들이 각자 주어진 기능만을 독립적으로 수행하면서,
다른 모듈과 연관성이 적어야 한다.

즉, 독립성이 높은 모듈일수록 좋다.

why?
독립성 高 면,
해당 모듈을 수정하더라도, 다른 모듈에 끼치는 영향 小
해당 모듈에 오류가 발생하더라도, 쉽게 문제 발견 + 해결 가능

결론적으로
응↑
결↓
모듈의 독립성을 높이기 위해서는
모듈이 독립적으로 자체 기능만을 수행하도록 응집도 ↑
모듈 간의 상호 의존 정도를 나타내는 결합도 ↓
(모듈의 독립성은 모듈의 응집도(Cohesion) + 결합도(Coupling) 로 측정)

2. 결합도(Coupling)

결합도가 높은 클래스 = 다른 클래스와 연관된 정도가 높다.
--> 해당 클래스를 변경하면, 연관된 클래스도 변경해야 하며 다른 코드에서 클래스를 재사용하기도 어렵다.

1) 자료 결합도(Data Coupling)

2) 스탬프 결합도(Stamp Coupling)

3) 제어 결합도(Control Coupling)

4) 외부 결합도(External Coupling)

5) 공통 결합도(Common Coupling)

6) 내용 결합도(Content Coupling)

3. 응집도(Cohesion)

응집도가 높으면, 프로그램을 쉽게 이해할 수 있어서 유지보수성이 높아진다.

1) 기능적 응집도(Functional Cohesion)

2) 순차적 응집도(Sequential Cohesion)

3) 통신적 응집도(Communicational Cohesion)

4) 절차적 응집도(Procedural Cohesion)

5) 일시적 응집도(Temporal Cohesion)

6) 논리적 응집도(Logical Cohesion)

7) 우연적 응집도(Coincidental Cohesion)


참고: 결합도와 응집도는 무엇일까?
참고: 결합도(Coupling), 응집도(Cohesion)

profile
개발자로 거듭나기!

0개의 댓글