아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델

7,404 views

Published on

0 Comments
19 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,404
On SlideShare
0
From Embeds
0
Number of Embeds
2,957
Actions
Shares
0
Downloads
43
Comments
0
Likes
19
Embeds 0
No embeds

No notes for slide

아꿈사 DDD(Domain-Driven Design) 5장 소프트웨어에서 표현되는 모델

  1. 1. 도메인 주도 설계 Domain-Driven Design Eric Evans5장. 소프트웨어에서 표현되는 모델(일부) 아꿈사 http://cafe.naver.com/architect1 안명환 homepage: http://eritaka.net twitter: @eritakas
  2. 2. 소프트웨어에서 표현되는 모델 MODEL-DRIVEN DESIGN 모델을 표현 VALUE ENTITY SERVICE MODULE OBJECT• 객체의 의미에 따른 모델을 구분한다
  3. 3. 연관관계• 현실세계의 두 사물간의 관계 – 다대다(*:*) 관계가 흔하다 – 애초부터 양방향(bidirection)인 경우가 많다• 현실세계를 그대로 모델링하면… – 구현과 유지보수가 복잡해진다 – 해당 관계의 특성이 드러나지 않는다• 결론: 가능한 한 관계를 제약하자!
  4. 4. 연간관계 간소화 방법1. 탐색 방향을 부여한다2. 한정자(qualifier)를 추가해서 다중성 (multiplicity)을 줄인다3. 중요하지 않은 연관관계를 제거한다 • 요구사항을 분석하여 설계를 단순하게 정제
  5. 5. 1. 탐색 방향을 부여한다• 조지 워싱턴이 대통령이었던 나라가 어디 입니까?• 미국의 대통령은 누구인가요? 국가 국가 대통령 대통령 * * 사람 사람
  6. 6. 2. 한정자를 추가하여 다중성을 줄이자• 미국의 대통령은 누구인가요?• 1790년에 미국의 대통령은 누구인가요? 국가 국가 기간 대통령 대통령 * 사람 사람
  7. 7. Entity• 사전적 의미 – 존재간의 서로 구별되는 것 – 물질적 존재와는 상관없음• Entity라는 용어가 혼란스러워도… – DB: ERD (Entity-Relationship Model) – J2EE: Entity Bean (실제 Entity와는 다르지만)• 그래도 본질은 같습니다.
  8. 8. Entity가 된 에어에게…• 내가 구매 버튼을 누르기 전에는 그는 다만 하나의 고철 덩어리에 지나지 않았다.• 내가 전원 버튼을 눌러 주었을 때 그는 나 에게로 와서 진정 맥북에어가 되었다. 이것은 오직 나만의 사자…
  9. 9. DDD – Entity Model• 어떤 객체를 해당 객체의 식별성으로 정의할 경우 Entity라고 한다• Entity의 형태와 내용은 바뀔 수 있다.• Entity의 정체성이 중요!• 자바의 ‘==‘ 연산자와 같은 메모리 동등 비교 는 Entity와 상관없다• 개념적 속성이므로 언어에서 제공하는 자동화 된 기능으로 대체할 수 없다.
  10. 10. Entity Modeling• 속성이나 행위에 집중하지 말고 본질적인 식별성에 중점을 두고 정의하라.• 즉, 클래스 정의를 단순하게 하고 생명 주 기의 연속성과 식별성에 집중하라. class Exam class Exam Customer Customer - 고객ID Business Line - 이름 - 고객ID - 제품 분류 - 이름 - 제품 분류 - 평균 매출액 - 전화번호 - 평균 매출액 - 주소 Sales Contact Sales Contact - 영업사원 - 우선순위 - 영업사원 - 전화번호 - 우선순위 - 주소
  11. 11. Value Object• 개념적 식별성을 갖지 않으면서 도메인의 서술적 측면을 나타내는 객체• 모든 것에 식별성을 부여하고 Entity로 관 리한다면 복잡성이 증가• DTO(Data Transfer Object)의 과거이름 인 Value Object와는 상관없다
  12. 12. Value Object• 개념적 완전성을 형성해야 함 – 도메인 내에서 해당 개념을 온전히 표현해야 한다 (Whole Value Pattern) class Exam class Exam Customer - 고객ID - 이름 Customer - 주소 - 고객ID - 이름 - 읍면동 - 시군구 - 도 Address - 읍면동 - 시군구 - 도
  13. 13. Value Object 설계• Value Object는 많아지는 경향이 있으므 로 성능 최적화를 생각해야 함• 객체를 안전하게 공유하기 위해서 불변적 (immutable)이어야 한다• 알고리즘이 포함되어 있을 수도 있다• 구현 예 Flyweight Pattern을 이용한 최적화 – .net 의 struct
  14. 14. 끝?아닙니다.SERVICE부터는다음 발표자…

×