ݺߣ

ݺߣShare a Scribd company logo
도메인 주도 설계14장, 모델의 무결성 유지2011. 9. 24, 최기원
제 4부전략적 설계ㄴㄴ개별 객체 -> 컨텍스트개인 : 개인 -> 팀 : 팀 정치설계 단위의 변화에 따른 전략들14장.모델의 무결성 유지     15장. 디스틸레이션     16장. 대규모 구조17장. 전략의 종합
14장
1부14장의 주요 개념
D.D.D. 14장
모델은 컨텍스트에 적용된다.컨텍스트는 코드의 특정 부분일 수도, 개별 팀이 수행하는 업무일 수도 있다.
프로젝트가 작을때ㄴㄴ객체응집도를 높이고결합도를 낮추자객체객체
프로젝트가 커지면객체객체객체객체객체객체객체객체객체객체객체객체객체ㄴ객체객체객체객체객체객체객체객체객체객체ㄴ객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체
모델에 맞춰 의미 있게 묶자객체객체객체객체객체객체객체객체객체객체ㄴ객체객체객체객체객체객체객체객체객체객체객체객체ㄴ객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체
Bounded Context라 하자객체객체객체객체객체객체객체객체객체객체객체ㄴ객체객체객체객체객체객체객체객체객체객체객체객체ㄴ객체객체객체객체객체객체객체객체객체객체객체객체객체Bounded Context 별로 명확한 의미를 부여한다.이름을 붙인다.Ubiqiutous language로 사용경계를 명확히 한다.모델에 일치시킨다.객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체객체
ㄴㄴ응집도가 높아진다. ... 우연 응집도 -> 기능 응집도결합도가 낮아진다. ... 내용 결합도 -> 데이터 결합도개발자는 Context만 신경 쓰면 된다.Context의 통합에는 번역이 필요하다.
화물 예제 – 1/2
화물 예약 컨텍스트 (팀)화물 추적 컨텍스트 (팀)화물 운항 컨텍스트 (팀)팀별로 Bounded Context를 명확히 한다.인터페이스를 맞춘다.코드를 공유하지 않는다.Context의 경계는 번역 프로그램을 따로 만든다.ㄴㄴ
결합할 때의 문제점중복된 개념서로 다른 말을 하고 있지만 같은 의미허위 동족 언어서로 같은 말을 하고 있지만 다른 의미ㄴㄴ
D.D.D. 14장
개발이 진행됨에 따라Context의 의미가 모델과 달라진다.Context내에서 중복된 개념이 생긴다.Context 밖의 개념을 고려하기 시작한다.ㄴㄴ
지속적인 통합을 한다.개념의 통합Ubiquitous Language를 지속적으로 사용한다.“조지 팀에서 만든 것이 변경될 예정이므로 그에 따라 저희 것도 변경할 예정입니다.”“운송망 모델이 바뀌고 있습니다. 그러니 저희도 예약 컨텍스트에 대한 번역기를 변경할 예정입니다.”구현의 통합단계적이고 재생 가능한 병합/빌드TDDㄴㄴ
D.D.D. 14장
Context Map컨텍스트 간의 관계도(지도)Context의 이름을 쓴다.Context간의 관계를 표현한다.현재 상태 그대로의 상황을 표현한다. 유지한다.모든 이들이 경계가 어디에 위치하는지 알 수 있도록 공표한다.Map을 보면 바꾸고 싶어진다. 심사숙고 해야 한다.ㄴㄴ
화물 예제 – 2/2
예제) 화물... ㅡㅡ;화물 예약 팀화물 추적 팀화물 운항 일정 관리 팀팀별로 Bounded Context를 명확히 한다.인터페이스를 맞춘다.코드를 공유하지 않는다.Context의 경계는 번역 프로그램을 따로 만든다.ㄴㄴ
예제, 화물 ㅡㅡ;;ㄴ화물항로 명세ㄴ일정예약 Context구간
ㄴㄴRoute Specification -> locationCodes                  Itinerary <- Node ID의 List
Route Specification -> locationCodes
Node ID의 List -> Itinerary배 항해 ID
D.D.D. 14장
D.D.D. 14장
컨텍스트 간에는 의사소통이 활발하지 않다.번역기는 TDD를 해야 한다.
모델을 컨텍스트화 하는 하나의 예시코끼리 통일하기
알겠다. 코끼리는 밧줄같이 생겼어!맙소사! 코끼리는 벽처럼 생겼네!알겠다. 코끼리는 뱀같이 생겼어.정말 이상한 동물일세. 정말 평범해. 코끼리는 꼭 나무 같이 생겼어
D.D.D. 14장
상상력과 지속적인(아마도 열띤) 토론을 거친후
코끼리를 한쪽 끝에는 밧줄이 있고 다른 쪽에는 뱀이 있는, 나무기둥이 떠받치고 있는 벽으로 간주하는 것이 적합할지도 모른다.
코끼리는 동물의 특성을 갶졌을꺼야
Context(팀)간의 관계 패턴2부
팀 사이에 모델 공유를 사용하는 패턴
갑/을 관계의 팀단방향 의존
갑/을 관계의 팀에서‘을’을 전적으로 신뢰
갑/을 관계의 팀에서‘을’을 어느 정도만 신뢰
갑/을 관계의 팀에서을을 버린 갑.
컨텍스트번역기번역기번역기컨텍스트컨텍스트컨텍스트
컨텍스트번역기컨텍스트컨텍스트컨텍스트
번역기 대신 (XML과 같은) 도메인 정보를 표현할 수 있는 공유 언어를 사용 하는 관계
변형 : 리펙토링. Separate ways -> Shared Kernel. Shared Kernel -> Continous Integration. 레거시 시스템의 단계적 폐기. Open Host Service -> Published Language
병합
병합
폐기레거시 시스템
공식화
질문?

More Related Content

D.D.D. 14장