[DDD] 도메인 모델 시작하기 -1
·
📚 개발자의 서재/도메인 주도 개발 시작하기
해당 포스팅은 최범균 작가님의 도메인 주도 개발 시작하기 (P.22~29)를 읽고 정리한 글입니다. 도메인이란?도메인이란 소프트웨어로 해결하고자 하는 문제 영역을 의미한다. 예를 들어 온라인 서점이 있다. 온라인 서점 소프트웨어는 온라인으로 책을 판매하는데 필요한 상품 조회, 구매, 결제, 배송 추적 등의 기능을 제공해야 한다. 한 도메인은 다시 하위 도메인으로 나눌 수 있다. 온라인 서점 도메인은 주문, 배송, 정산 등 여러 하위 도메인으로 분리할 수 있다. 한 하위 도메인은 다른 하위 도메인과 연동하여 완전한 기능을 제공한다. 예를 들어 고객이 물건을 구매하면 주문, 결제, 배송, 혜택 하위 도메인의 기능이 엮이게 된다. 특정 도메인을 위한 소프트웨어라고 해서 도메인이 제공해야할 모든 기능을 직접 ..
[객체지향의 사실과 오해] 객체 지도 -6
·
📚 개발자의 서재/객체지향의 사실과 오해
해당 포스팅은 조영호 작가님의  객체지향의 사실과 오해 (P.203~206)를 읽고 정리한 글입니다. 재료 합치기: 기능과 구조의 통합기능 변경을 흡수하는 안정적인 구조도메인 모델이 안정적인 이유는 도메인 모델이 다음과 같은 특징을 가지고 있기 때문이다.도메인 모델을 구성하는 개념은 비즈니스가 없어지거나 완전히 개편되지 않는 한 안정적으로 유지된다.도메인 모델을 구성하는 개념 간의 관계는 비즈니스 규칙을 기반으로 한다.비즈니스 정책이나 규칙이 크게 변경되지 않는 한 시스템의 기능이 변경되더라도 객체 간의 관계는 일정하게 유지된다. 기능적인 요구사항이 변경될 경우 책임과 객체 간의 대응 관계만 수정될 뿐이다. 안정적인 도메인 모델을 기반으로 시스템 기능을 구현할 경우 시스템의 기능이 변경되더라도 비즈니스 ..
[객체지향의 사실과 오해] 객체 지도 -5
·
📚 개발자의 서재/객체지향의 사실과 오해
해당 포스팅은 조영호 작가님의  객체지향의 사실과 오해 (P.197~203)를 읽고 정리한 글입니다. 재료 합치기: 기능과 구조의 조합도메인 모델, 유스케이스, 그리고 책임-주도 설계다시 정리하는 책임-주도 설계1. 애플리케이션이 수행하는 기능을 시스템의 책임으로 보는 것으로부터 시작2. 적절한 객체를 찾아 시스템의 책임을 객체의 책임으로 할당3. 객체가 책임을 완수하기 위해 다른 객체의 도움이 필요하다고 판단되면 도움을 요청하기 위해 어떤 메시지가 필요한지 결정4. 메시지를 결정한 후에는 메시지를 수신하기 위해 적합한 객체를 선택5. 수신자가 송신자가 기대한 대로 메시지를 처리 불안정한 기능을 안정적인 구조 안에 담음으로써 변경에 대한 파급효과를 최소화하는 것은 훌륭한 객체지향 설계자가 갖춰야 할 기본..
[객체지향의 사실과 오해] 객체 지도 -3
·
📚 개발자의 서재/객체지향의 사실과 오해
해당 포스팅은 조영호 작가님의  객체지향의 사실과 오해 (P.189~193)를 읽고 정리한 글입니다. 안정적인 재료: 구조불안정한 기능을 담는 안정적인 도메인 모델 도메인 모델을 기반으로 코드를 작성하는 두 번째 이유는 도메인 모델이 제공하는 구조가 상대적으로 안정적이기 때문이다.  왜 안정적일까? 도메인 모델의 핵심은 사용자가 도메인을 바라보는 관점을 반영해 소프트웨어를 설계하고 구현하는 것이다. 도메인에 대한 사용자의 관점을 반영해야 하는 이유는 사용자들이 누구보다도 도메인의 '본질적인' 측면을 가장 잘 이해하고 있기 때문이다. 본질적이라는 것은 변경이 적고 비교적 그 특성이 오랜 시간 유지된다는 것을 의미한다. 사용자 모델에 포함된 개념과 규칙은 비교적 변경될 확률이 적기 때문에 사용자 모델을 기반..
[객체지향의 사실과 오해] 객체지도 -2
·
📚 개발자의 서재/객체지향의 사실과 오해
해당 포스팅은 조영호 작가님의  객체지향의 사실과 오해 (P.184~189)를 읽고 정리한 글입니다. 두 가지 재료: 기능과 구조객체지향 세계를 구축하기 위해서는 사용자에게 제공할 '기능'과 기능을 담는 안정적인 '구조'라는 재료가 준비돼 있어야 한다. 기능은 사용자가 자신의 목표를 달성하기 위해 사용할 수 있는 시스템의 서비스다. 구조는 시스템 기능을 구현하기 위한 기반으로, 기능 변경을 수용할 수 있도록 안정적이어야 한다. 구조는 사용자나 이해관계자들이 도메인(domain)에 관해 생각하는 개념과 개념들 간의 관계로 표현한다.기능은 사용자의 목표를 만족시키기 위해 책임을 수행하는 시스템의 행위로 표현된다. 일반적으로 기능을 수집하고 표현하기 위한 기법을 유스케이스 모델링이라고 하고 구조를 수집하고 표..