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