본문 바로가기

Domain3

DDD - 불명확한 개념 - 출처: 도메인 주도 설계 - 에릭 에반스 - 불명확한 개념의 모델링 객체지향 패러다임을 적용하는 경우 어떠한 객체를 찾는데 집중하게 된다. 객체지향 관련 책을 보다보면 명사와 동사에 기반하여 객체를 찾으라고 하지만 "발생" 처럼 명사나 동사로 표현하기 힘든 모델도 존재하며 객체 모델로서 중요한 요소가 될 수 있다. - 명시적인 제약조건 제약조건은 중요한 범주의 모델 개념을 형성한다. 보통 이런 개념은 암시적으로 존재하지만 이를 명시적으로 표현해주면 설계를 개선할 수 있다. 간단한 제약조건의 경우 객체의 메서드에 포함되는것이 자연스러운 경우가 있다. 어떤 "Bucket" 객체에 내용물을 저장할 대 제한된 용량을 초과할 수 없다는 불변식을 만족한다고 가정해보자. 이를 아래와 같이 코드로 표현할 수 있다... 2022. 9. 19.
DDD - Module (package) - 출처: 도메인 주도 설계 - 에릭 에반스 - Module (package) 인간이 한번에 받아들일 수 있는 인지력은 한계가 있기 마련이다. 만약 legacy 시스템을 운영해야 하는 업무를 수행한다고 가정해보자. legacy가 방대하다면 해당 시스템을 한번에 이해하기란 쉽지 않을것이다. 그럼 어떻게 해당 시스템을 분석할것인가? 가장 기본적인 접근법은 특정 단위로 나누어서 분석하고 그들간의 관계를 파악하는것이다. module은 왜 필요한가? 위에서 언급한대로 인간의 인지적인 과부하를 줄이기 위한 단위가 필요한데 이것이 바로 module 또는 package 라고할 수 있다. module을 분석하는 관점에는 2가지가 있다. 하나는 module과 module간의 관계를 파악하는 관점이고, 다른 하나는 해당 m.. 2022. 8. 7.
DDD - S/W와 모델 - 출처: 도메인 주도 설계 - 에릭 에반스 - S/W 에서 표현되는 모델 S/W 에서는 모델을 표현하는 주요 패턴으로 3가지 형태가 주로 사용된다. Entity: 어떤 객체가 영속성과 식별성을 지닐 때 VO: 다른 무언가의 상태를 기술하는 속성에 불과할 때 Service: 객체보다 행동/연산으로 더 명확하게 표현되는 경우 자바라면 class, Golang 이라면 struct로 표현하기만 하면 되는데 왜 굳이 Entity와 VO라는 개념을 도입해서 나누는지 의문을 가질 수도 있다. 굳이 이렇게 하는 이유는 특정 객체가 특정 패턴을 따르면 객체의 역할이 더욱 명확해져서 설계 결정을 하는데 도움이 되기 때문이다. Entity와 VO만 있으면 객체를 표현할 수 있는데 Service라는 개념은 왜 필요할까? .. 2022. 7. 16.