Top Banner
분석 패턴의 적용
13

11장. 분석 패턴의 적용

Jul 03, 2015

Download

Documents

kidoki

Domain Driven Design
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 11장. 분석 패턴의 적용

분석 패턴의 적용

박 기 덕

Page 2: 11장. 분석 패턴의 적용

목차

1. 분석 패턴 이란?

2. 예제 1 - 계좌의 이익 수익

3. 분석패턴 1 - 회계 모델

4. 리팩토링 1 - 계좌의 이익 수익

5. 분석패턴 2 - 기입 규칙

6. 예제 2 - 야간 배치 프로그램

7. 리팩토링 2 - 야간 배치 프로그램

8. 분석 패턴 정의

Page 3: 11장. 분석 패턴의 적용

분석 패턴 이란?

● 과거에 경험했던 시행 착오중의 일부가 패턴 형식으로 기록되고 공유되어 축적된 경험을 다른 사람들이 활용할 수 있도록 제시

● 업무 모델링 과정에서 발견되는 공통적인 구조를 표현하는 개념의 집합

● 기술적인 해법은 아니며, 유용한 지침서

Page 4: 11장. 분석 패턴의 적용

예제 1 - 계좌의 이자 수익

● Lone과 Interest-Bearing asset을 관리하는 애플리케이션. 발생한 Interest와 Fee를 계산하고 차용인이 변제한 Payment를 추적

● 야간 배치 프로세스는 계산 결과를 레거시 회계 시스템으로 전달하며, 이때 각 금액을 어느 Ledger에 기록해야 하는지도 함께 전달

Page 5: 11장. 분석 패턴의 적용

분석 패턴 1 - 회계 모델

● 회계의 기본 원리는 보존● " 모든 대변에는 차변이 존재한다."

Page 6: 11장. 분석 패턴의 적용

리팩토링 1 - 계좌의 이자 수익

● Transaction 이 분석패턴과 현재의 프로젝트와 동일한 개념인가??

● 새로운 보편언어 Accrual 발견 !!

● Account 객체의 사용 여부??

● Account에서 이자 발생, 상환, 잔액을 모두 확인 할 수 있어야 함 !!

Page 7: 11장. 분석 패턴의 적용

리팩토링 1을 통해 변경된 사항

● 도메인 검토 후 Payment와 Accrual이 미묘하게 다른 책임 이라는 사실 파악

● 두 가지 모두 중요한 개념을 표현하므로 Entry를 상속하는 하위 클래스 추가

● Fee와 Interest에 의해 발생한 Entry의 경우 개념상으로 행위의 차이가 없으므로 적절하게 Account에 추가

● 수수료 Entry와 이자 Entry의 통합을 위한 추상화 포기(하위 객체 생성)

Page 8: 11장. 분석 패턴의 적용

리팩토링 1 - 계좌의 이자 수익

Page 9: 11장. 분석 패턴의 적용

분석 패턴 2 - 기입 규칙

● 한 계정에서 수입을 추적하는 동안 다른 계정에서 수입에 부과되는 예상 세금을 추적할때, 자동으로 세금을 계산 하여야 한다면 세금 계정과 수입 계정이 강하게 결합 될 수 밖에 없으므로, 새로운 객체를 추가해 규칙을 명확하게 만든다.

Page 10: 11장. 분석 패턴의 적용

분석 패턴 2 - 기입 규칙

● 의존성 설계 시 가장 까다로운 부분인 갱신의 시기와 제어 방식

○ "적극적인 실행" 방식은 Account에 Entry가 삽입될 때마다 곧바로 Posting Rule을 실행하므로 모든 갱신 작업이 즉시 발생 (가장 명확 하지만 비효율적)

○ "Account 기반 실행" 방식은 특정 시점에 Account로 메시지가 전달되고, Posting Rule이 실행되어 마지막으로 실행된 후에 삽임된 모든 Entry 처리 (처리 시기 연기 가능)

○ "Posting-Rule 기반 실행" 방식은 Posting Rule을 실행하는 외부 에이전트에서 의해 시작 (최종 실행 시점 이후에 입력 계정에 추가된 모든 Entry를 찾아야 하는 책임을 짐)

Page 11: 11장. 분석 패턴의 적용

예제 2 - 야간 배치 프로그램

● Posting Rule이 기입 될 원장명(거래 내역을 적은 명세서)을 알고 있다면 Method가 필요 없음

● 분석 패턴에서는 Account와 Posting Rule이 직접 연결 되지만 현재 프로젝트에서는 Account 정보를 알고 있는 Asset와 연결

● Posting-Rule 기반 실행 방식 사용

● Posting Rule은 Account의 속성을 토대로 원장을 선택

Page 12: 11장. 분석 패턴의 적용

리팩토링 2 - 야간 배치 프로그램

Page 13: 11장. 분석 패턴의 적용

분석 패턴 정의

● 운 좋게 적용 가능한 분석 패턴을 찾아도 현재의 특정 요구사항에 완벽하게 들어 맞는 경우는 거의 없다.

● 하지만 도메인을 파악하는 과정의 훌륭한 길잡이 역활을 수행하며, 깔끔하게 추상화된 어휘집을 제공

● 분석 패턴을 적용 시 외견상의 형태는 변경해도 무방하나 기본적인 개념은 변경하지 말아야 한다.○ 패턴에는 문제의 발생을 미연에 방지할 수 있는 지식을 포함 하고 있기 때문

○ 널리 이해되거나 적어도 잘 설명된 용어를 포함시킴으로 보편언어의 품질을 향상