[java] 응집도(Cohesion)

응집도는 소프트웨어 모듈이 얼마나 관련된 기능들을 함께 수행하는지를 나타내는 소프트웨어 설계 원칙입니다. 모듈의 응집도가 높을수록 더 좋은 설계라고 할 수 있습니다.

응집도의 종류

  1. 기능적 응집도(Functional Cohesion) : 모듈이 단일 기능을 수행하는 경우입니다. 한 가지 독립된 작업에 대한 기능들을 포함하는 것이 좋습니다.

  2. 순차적 응집도(Sequential Cohesion) : 모듈이 연속적인 순서로 처리되는 기능들을 포함하는 경우입니다. 비슷한 과정을 따르거나 순서에 따라 실행되는 작업들을 함께 포함하는 것이 좋습니다.

  3. 통신적 응집도(Communicational Cohesion) : 모듈이 동일한 데이터나 메시지를 전달하는 기능들을 포함하는 경우입니다. 비슷한 테이블, 구조체 또는 메시지를 공유하는 작업들을 함께 포함하는 것이 좋습니다.

  4. 순회적 응집도(Procedural Cohesion) : 모듈이 한 번에 수행되어야 하는 한 가지 작업 또는 절차를 포함하는 경우입니다. 비슷한 절차 또는 알고리즘을 따르는 작업들을 함께 포함하는 것이 좋습니다.

  5. 시간적 응집도(Temporal Cohesion) : 모듈이 특정 시간에 사용되는 기능들을 포함하는 경우입니다. 특정 시간 동안 수행되어야 하는 작업들을 함께 포함하는 것이 좋습니다.

  6. 논리적 응집도(Logical Cohesion) : 모듈이 논리적으로 관련된 기능들을 포함하는 경우입니다. 비슷한 기능 또는 목적을 가진 작업들을 함께 포함하는 것이 좋습니다.

응집도의 중요성

응집도가 높은 모듈은 재사용성, 이해도, 유지보수성 등의 측면에서 이점을 가집니다. 모듈 내부의 기능들이 밀접하게 연관되어 있기 때문에 한 기능을 수정하거나 추가할 때 다른 기능에 영향을 덜 주며, 모듈의 기능을 이해하기 쉽게 만들어 줍니다. 또한, 응집도가 높은 모듈은 다른 프로젝트에서 재사용할 수 있어 개발 시간과 비용을 절약할 수 있습니다.

응집도 개선 방법

응집도를 높이기 위해서는 다음과 같은 방법을 고려할 수 있습니다:

응집도 결론

응집도는 소프트웨어 설계에서 중요한 개념이며, 모듈의 설계와 구조를 개선하는 데 도움을 줍니다. 응집도가 높은 모듈은 유지보수성이 용이하고 재사용 가능한 코드를 작성하는 데 도움을 줍니다. 따라서, 응집도를 고려하여 모듈을 설계하는 것이 좋습니다.

참고 자료