5. 패턴을 활용한 리팩토링 개발자가 디자인 패턴을 적용해야 한다고 판단 했을 때 따라야 할 리팩토링 절차에 대한 높은 수준 목표 제시 설계 품질을 기술적 관점에서 바라봄
6. 심층 모델을 향한 리팩토링 What? 시스템의 생존력에 가장 큰 영향을 미치는 리팩토링 When ? 도메인에 대한 새로운 통찰력을 얻었을 때 수행 How ? 코드를 사용해 모델이 표현하고자 하는 바를 명확하게 드러내고자 수행 리팩토링의 목표는 개발자가 단순히 코드가 수행 하는 바를 이해하는 것뿐만 아니라 왜 그렇게 수행 되는지를 이해하고 도메인 전문가와 의사소통에 이를 연결 시키는 것이다.
7. 심층 모델(Deep Model)이란? 도메인의 피상적인 측면을 배제하고 도메인 전문가의 주요 관심사와 가장 적절한 지식을 알기 쉽게 표현하는 모델 추상적인 요소를 포함하지만 문제의 핵심을 관통하는 구체적인 요소를 포함 예) 선박과 컨테이너가 포함된 객체 모델 초기 아이디어로 사용 -> 여러번의 반복주기-> 선박운항 과 "선하증권"모델 부각 (선백/컨테이너는 모델에 누락)
8. 심층 모델/유연한 설계 지속적 리팩토링을 수행하려면 설계 자체가 변경을 지원 해야됨 "유연한 설계"(supple design)와 이를 달성하기 위한 접근법 10장에서 소개 예)낡은 야구글러브 구부러지는 지점 유연해짐 - 그 외 부분은 딱딱해서 손을 보호 출처 : http://suhyeonkwon.blog.me/100099740800
9. 발견과정 9장 "암시적인 개념을 명시적으로 " 도메인의 중심 개념을 담고 있는 모델을 확보하고 설계에 반영하는 법 10장 "유연한 설계“ 유연하고 쉽게 확장할 수 있는 소프트웨어를 작성하는 방법 11장 ~12장 분석 패턴과, 디자인 패턴을 적용하는 방법을 설명
11. 리팩토링 효과 서서히 습득한 지식은 소규모 리팩토링을 통해 드러난다 쌓인 지식은 어느 순간 중요한 통찰로서 프로젝트 전체에 영향을 미친다
12. 도약의 사례소개 여러 대출회사가 모여 퍼실리티(facility)를 지원할 지원할 자금을 공동으로 출자하는 채권 은행단 구현 퍼실리티란? 돈을 대출해 줄 회사와의 매매 계약 신용카드 예 신용카드 한도 : 사전 협의된 금액까지 빌릴 수 있는 퍼실리티 신용카드 사용의 미 청구 금액은 퍼실리티에 대한 차용액이 되며 대출 총액을 증가시킴
13. 서서히 지식 쌓아가기 1. 대출 회사 지분이 고정적이라는 가정 2. but. 대출금 제공 받은 투자 회사는 일반적으로 더 많은 지분에 해당 하는 금액을 제공할 수 있음 핵심을 관통 하지 못하여 알고리즘은 복잡해지고 미묘한 반올림 불일치 문제 발생 됨
17. 결과 업무 전문가들도 쉽게 이해할 수 있는 모델이 생김 복잡한 반올림 문제도 자동 해결 됨 심층모델의명확성/단순함 UBIUITUOS LANGUAGE 기반 의사소통 더 나은 모델링으로 도약
18. 정리 우리가 알고 있는 수준의 리팩토링은 코드레벨로 접근하는 마이크로리팩토링 보다 시스템의 생존력에 영향을 미칠 수 있는 큰 관점의 접근법을 심층 모델을 향한 리팩토링 심층 모델은 핵심을 관통하는 구체적인 요소를 포함하면서 알기 쉽게 표현한 모델 심층 모델의 발견과정은 기반 지식을 쌓다 어느순간도약 시점을 거쳐 발견하게 된다.