본문 바로가기
Architecture

[Clean Architecture 정리] 13장. 컴포넌트 응집도

by 테리는당근을좋아해 2022. 7. 25.

컴포넌트 응집도

컴포넌트 응집도의 세 가지 원칙

- 재사용/릴리스 등가 원칙 (REP, Reuse/Release Equivalence Principle)
- 공통 폐쇄 원칙 (CCP, Common Closure Principle)
- 공통 재사용 원칙 (CRP, Common Reuse Principle)

 

 

재사용/릴리스 등가 원칙 (REP, Reuse/Release Equivalence Principle)

- "재사용 단위는 릴리스 단위와 같다."
- 컴포넌트가 릴리스 절차를 통해 추적 관리되지 않거나 릴리스 번호가 부여되지 않으면 재사용할 수 없고, 컴포넌트들이 서로 호환되는지 보증할 수 없다.
- 또한, 릴리스 번호를 통해 새로운 버전이 언제 출시되고 무엇이 변했는지 개발자가 알 수 있어야 한다.
- 설계와 아키텍처 관점에서 단일 컴포넌트는 응집성 높은 클래스와 모듈로 구성되어야 한다.
- 하나의 컴포넌트로 묶인 클래스와 모듈은 함께 릴리스할 수 있어야하고, 버전 번호가 같아야하며, 동일한 릴리스로 추적관리되어 릴리스 문서에 포함되어야 한다.

 

 

공통 폐쇄 원칙 (CCP, Common Closure Principle)

- "동일한 이유/시점에 변경되는 클래스를 같은 컴포넌트에 묶어라. 서로 다른 이유/시점에 변경되는 클래스는 다른 컴포넌트로 분리해라."
- 단일 책임 원칙(SRP, Single Responsibility Principle)을 컴포넌트 관점에서 작성한 설계 원칙이다.
- 단일 컴포넌트는 변경의 이유가 하나이여야 한다.
- 변경을 단일 컴포넌트로 제한할 수있다면 해당 컴포넌트만 재배포하면 된다.
- 이를 통해 소프트웨어 릴리스, 재검증, 배포하는 일과 관련된 작업을 최소화할 수 있다.
- 이 원칙은 동일한 유형의 변경에 대해 닫혀 있는 클래스를 하나의 컴포넌트로 묶는다는 관점에서 개방 폐쇄 원칙(OCP, Open-Closed Principle)과도 연관이 있다

 

 

공통 재사용 원칙 (CRP, Common Reuse Principle)

- "컴포넌트 사용자들을 필요하지 않는 것에 의존하게 강요하지 말라."
- 인터페이스 분리 원칙(ISP, Interface Segregation Principle)의 컴포넌트 관점


 

컴포넌트에 포함시켜야하는 클래스 관점
- 대체로 재사용 가능한 클래스는 해당 모듈의 클래스들과 유기적으로 동작하기 때문에 같이 사용되는 경향이 있는 클래스와 모듈은 같은 컴포넌트 안에 속해야 한다.


 

컴포넌트에 포함되지 않아야하는 클래스 관점
- 사용하는 컴포넌트가 사용되는 컴포넌트의 하나에 클래스에만 의존한다고 해서 컴포넌트 간의 의존 관계가 약해지는 것은 아니다.
- 의존하는 컴포넌트가 있다면 해당 컴포넌트의 모든 클래스에 의존함을 확실히 인지하고, 강하게 결합되지 않은 클래스들을 동일한 컴포넌트에 위치시키지 않아야 한다.

 

 

컴포넌트 응집도에 대한 균형 다이어그램

- 재사용/릴리스 등가 원칙(REP)와 공통 폐쇄 원칙(CCP)는 Include Principle으로 컴포넌트를 더욱 크게 만든다.
- 공통 재사용 원칙(CRP)은 Exclude Principle으로 컴포넌트를 더욱 작게 만든다.

컴포넌트 응집도에 대한 균형 다이어그램

- 위 균형 다이어그램에서 Edge는 반대쪽 꼭지점에 있는 원칙을 포기했을 때, 감수해야되는 비용을 의미한다.
- 균형 다이어그램에서 개발팀이 관심 가지고 있는 부분이 어느 곳임을 알고, 소프트웨어의 성숙도에 따라 관심 기준이 변경될 수 있음을 인지해야 한다.

서적 : http://www.yes24.com/Product/Goods/77283734

 

클린 아키텍처 - YES24

살아있는 전설이 들려주는 실용적인 소프트웨어 아키텍처 원칙『클린 코드』와 『클린 코더』의 저자이자 전설적인 소프트웨어 장인인 로버트 C. 마틴은 이 책 『클린 아키텍처』에서 이러한

www.yes24.com

 

댓글