Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

11.분석패턴

1,588 views

Published on

도메인 주도 설계 11장 분석패턴

Published in: Technology
  • Be the first to comment

11.분석패턴

  1. 1. 11. 분석 패턴의 적용<br />박종석<br />아꿈사<br />
  2. 2. 목적<br />분석 패턴의 목록을 만드는 것 (X)<br />예제에 사용된 패턴을 완전하게 설명 하려는 것 (X)<br />도메인 주도 설계 과정과 분석 패턴을 함께 통합하는 방법을 설명하는 것 (0)<br />
  3. 3. 분석 패턴 : 재사용 가능한 객체 모델<br />어떻게 모델링을 해야 하는지 그 기법, 또는 절차를 설명하기 보다, 모델링을 한 결과인 모델 그 자체에집중<br />
  4. 4. 책의 구조 : First section<br />Analysis pattern<br />Conceptual business model pattern<br />provide key abstractions from domains such as trading, measurement, accounting, and organizational relationships<br />represent the way people think about the business, rather than the way a computer system is designed<br />
  5. 5. 책의 구조 : Second section<br />Support patterns<br />how analysis patterns fit into an information systems architecture<br />how the constructs of conceptual models turn into software interfaces and implementations<br />
  6. 6. 디자인 패턴과 분석 패턴<br />각 디자인 패턴은 기존환경내에서 반복적으로 일어나는 문제들을 설명한 후, 그 문제들에 대한 해법의 핵심을설명해 줍니다. 똑같은 방법으로 두 번 하지 않고 이 해법을 100만번 이상 재사용할 수 있도록 말이죠 – 디자인 패턴 (크리스토퍼알렉산더)<br />분석 패턴은 업무 모델링 과정에서 발견되는 공통적인 구조를 표현하는 개념의 집합이다. 분석 패턴은 단 하나의 도메인에 대해서만 적절할 수도 있고 여러 도메인에 걸쳐 적용이 가능할 수도 있다. <br />디자인 패턴은 추상적이고 분석 패턴은 구체적이다.<br />
  7. 7. 디자인 패턴에는 없는 분석 패턴의 장점<br />파악하기 힘든 도메인 분석의 출발점, 지침서, 깔끔하게 추상화된 어휘집<br />물론 정답은 아니다.. 하지만 훌륭한 출발점이 된다.<br />구현할 때 고려해야 할 영향력에 대한 지침을 제공<br />실제 경험을 바탕으로 실용적인 지침<br />… 이 작업은 시스템을 다시 컴파일하거나 빌드하지 않고도 시스템이 가동하는 중에 수행할 수 있다. … 필요한 상황을 피할 수 없는 경우도 있겠지만 그런 일은 드물게 발생할 것이다. <br />모델 선택의 배경이 된 논리와 그에 따르는 영향력까지 제공<br />가장 중요하고 어려운 결정 사항에 집중<br />어떤 것을 선택해야 하는지와 그 대안을 제시<br />하부 활동의 영향력을 예측할 수 있게 만들어 줌<br />
  8. 8. 분석 패턴이 없다면?<br />1 chaper지식 탐구 참고<br />
  9. 9. 예제 1: 계좌의 이자 수익<br />분석패턴과 비슷한 도메인에 해당하는 모델을 적용한 사례<br />
  10. 10. 그림 11-1 : 초기 클래스 다이어그램<br />이자(interest)와 수수료(fee)로 Asset이 이루어짐<br />각각은 그 내역(History)를 가짐<br />
  11. 11. 그림 11-2: 기본적인 회계 모델<br />값을 추가 : Account에 양의 Entry를 삽입<br />값을 뺌 : Account에 음의 Entry를 삽입<br />변경내역 관리를 위해 Entry를 삭제하지 않는다.<br />잔액은 Entry를 통해 계산<br />
  12. 12. 그림 11-3: 거래 모델<br />보존(Conservation)을 위해 Transaction 도입<br />하나의 Account에서 다른 Account로 돈이 이동<br />Transaction은 2개의 Entry를 동시에 생성한다. (음&양)<br /> 총 양은 보존된다.<br />
  13. 13. 그림 11-4: 새로운 모델 제안<br />수수료(fee) 내역 관리를 위해 Fee Account와 Entry도입<br />이자(interest) 내역 관리를 위해 Interest Account와 Entry도입<br />거래모델에서처럼 2개의 Entry와 Transaction을 도입<br /> 원래의 의도와 맞지 않음, 원래 의도는 상이한 Account간의<br />  Entry이동을 위한 것<br />
  14. 14. 그림 11-5: 발생이 상환에서 분리돼 있는 원래의 클래스 다이어그램<br />원래의 다이어그램이 오히려 해당 도메인을 더 잘 표현하고 있다.<br /> 분석 패턴이 정답이 아니다. <br />
  15. 15. 그림 11-6: Transaction을 제거한 계정 기반 다이어그램<br />그대로 따라 하지 말고 핵심아이디어를 소화해서 적용해야 한다.<br />
  16. 16. 그림 11-7: 구현 후의 클래스 다이어그램<br />구현 이슈 때문에 모델이 변경됨<br />Fee Entry와 Interest Entry는 통합되지 못함 <br />Fee Calculator와 Interest Calculator는 SIDE-EFFECT-FREEFUNCTION으로 작성<br /> 가장 복잡한 부분을 분석하고 테스트하기 쉽게 하기 위해<br />  이들 내부에서 유지하던 Entry가 Asset으로 옮겨감<br />
  17. 17. 예제 2: 야간 배치 프로그램에 대한 통찰력<br />분석패턴의 도메인과 그다지 상관없어 보이는 곳에 분석패턴을 적용한 사례<br />
  18. 18. 야간 배치 작업<br />기존엔 스크립트 코드 내에 도메인 로직이 간접적으로 포함돼 있었고, 시감이 흐르면서 점점 더 복잡해 짐<br />배치 로직= 객체로 표현하기에 부적절한 프로시저<br />야간 배치 프로그램과 연동하도록 새로운 설계를 개선해야 하는 개발자는 배치의 작동 방식과 분석 패턴에 포함돼 있는 일부 개념간의 연관성을 인식하기 시작했다.<br />
  19. 19. 그림 11-8: 기본 기입 규칙(Posting Rule)을 표현하는 클래스 다이어그램<br />새로운 Entry가 입력 계정에 추가되면 기입 규칙이 실행된다.<br />기입 규칙은 계산 Method를 사용해서 새로운 Entry를 생성하고 Account에 삽입<br />봉급 Account라면 Entry가 추가될때마다 30%의 세금 계산 Posting Rule이 수행<br />수행결과 생성된 Entry를 원천징수세액 Account에 삽입<br />정확히 개념이 딱 맞아 떨어지는 것은 아니지만, <br />각 Entry에 적용될 새로운작업을 Triggering 한다는 개념이 비슷하다.<br />규칙을 객체화 하여 관리하면, 상호 연관된 규칙 때문에 뒤죽박죽 되지 않는다.<br />
  20. 20. 기입 규칙 수행 시기<br />적극적인 실행<br />Account 기반 실행<br />Posting-Rule 기반 실행<br />Posting Rule을 실행하는 외부 에이전트에 의해 작업이 수행됨<br />야간 배치 작업에서 이용할 수 있음!<br />
  21. 21. 그림 11-9: 배치에 Posting Rule을 적용한 화면<br />배치 스크립트가 posting rule을 수행<br />Posting rule은 도메인의 지식을 필요로 하기 때문에 도메인 영역으로…<br /> 복잡성은 도메인 계층 내부로, 배치 스크립트는 심플해짐<br />  도메인에 추가된 복잡성은 모델을 좀더 추상적이고 명확하게 함<br />
  22. 22. 그림 11-10: Posing Rule이 포함된 클래스 다이어그램<br />분석 패턴에서는 Account와 Posting Rule을 직접 연결<br />우리 시스템에서의 Asset객체는 개별 Account의 내용을 알고 있기 때문에<br />어떤 Posting Rule을 적용해야 할지 알고 있다.<br /> 즉, Asset이 Posting Rule을 호출하는 형태여야 한다.<br />  배치가 Asset을 접근하는 형태이어야 한다.<br />
  23. 23. 그림 11-11: 규칙 실행을 보여주는 시퀀스 다이어그램<br />
  24. 24. 분석 패턴 적용 시 유의점<br />패턴의 외견상의 형태는 변경해도 무방하지만 패턴이 의미하는 기본적인 개념은 유지<br />
  25. 25. … 마지막으로<br />우리 도메인이 분석 패턴에 있다면?<br />당신은 행운아!<br />우리 도메인이 분석 패턴에 없다면?<br />자신만의 분석 패턴을 만들고 발전 시키자!<br />
  26. 26. Q&A<br />

×