컴포넌트 설계

엔지니어링을 하다 보면 이건 어디에 배치 시켜야 적절할까? 라는 질문을 정말 자주 던지고, 이 질문에 대한 해답을 내리기까지 정말 많은 시간을 소비한다. (이때 내적갈등이 정말 심하다)

클린 아키텍처에서는 이와 같은 의사결정을 돕기위한 엔지니어링 원칙을 다음과 같이 제시한다

  • REP : 재사용/릴리스 등가 원칙
  • CCP : 공통 폐쇄 원칙
  • CRP : 공통 재사용 원칙

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

image

다이어그램 해석

  • REP 를 희생하면 재사용성이 저하된다
  • CCP 를 희생하면 컴포넌트 변경 횟수가 증가된다
  • CRP 를 희생하면 불필요한 릴리즈 횟수가 증가한다

완벽한 균형은 없다.

소프트웨어 수명주기에 따라 더 중요한 가치가 존재하며, 현재 중요한 가치에 따라 trade off 를 실행하고 의사를 결정한다
과거에 적합한 의사결정이 현재에는 유효하지 않을 수 있다

컴포넌트

여기에서 이야기하는 컴포넌트는 다양하게 해석할 수 있을 것 같다.

모듈 VIEW에서 이야기를 한다면 모듈 혹은 패키지가 될 수 있을 것이다

시스템 VIEW에서 이야기 한다면 하나의 기능을 처리하기 위해 상호 작용하는 서비스들이 될 수도 있을 것이다

중요한건 컴포넌트와 클래스의 상호관계를 이용하여 필자가 독자에게 무엇을 전달 하고자 했는지 이해하는 것이라고 생각된다

결론

엔지니어링을 하면서 필연적으로 하게 되는 고민을 누군가가 제시한 엔지니어링 원칙이 완벽하게 해결해줄 수는 없지만, 의사결정이 필요한 순간에 이 원칙을 활용해서 적용했을 때와 아닐 때는 분명한 차이가 발생할 것이다. (이 차이는 대부분의 상황에 긍정적 요소로 작용할 것이라 생각한다)

더불어 동료에게 내가 생각하는 근거를 구체화하고 전달할 수 있도록 하는 도구로 활용될 수 있을 것이라 기대한다.

참고자료

클린 아키텍처 4부 13장

Back to Top ↑

댓글남기기