도메인 주도 설계 철저 입문 (코드와 패턴으로 밑바닥부터 이해하는 DDD)

도메인 주도 설계 철저 입문 (코드와 패턴으로 밑바닥부터 이해하는 DDD)

$28.72
Description
이해하기 쉬운 패턴부터 학습하자!
도메인 주도 설계를 쉽게 이해할 수 있는 입문서!
초심자라도 이해하기 쉽고 실천하기도 쉬운 패턴부터 시작해 구체적인 예제와 함께 도메인 주도 설계에서 자주 볼 수 있는 패턴의 목적과 구현 방법을 하나씩 보톰업 방식으로 설명한다.

에릭 에반스의 《도메인 주도 설계》를 읽고 감명받아 쓰게 된 도메인 주도 설계 입문서이며, 앞으로 《도메인 주도 설계》를 읽으려는 독자, 또는 이미 해당 도서를 읽었더라도 ‘더 이해하기 쉬운 입문서’를 필요로 하는 엔지니어를 대상으로 한다.

이 책의 목적은 《도메인 주도 설계》 프랙티스 중에서도 상대적으로 이해하기 쉬운 구현 패턴부터 시작해 《도메인 주도 설계》에 본격적으로 입문하는 것이다. 그런 만큼 구현 패턴을 집중적으로 다룬다. 특히 도메인 주도 설계에서 자주 등장하는 패턴의 구현 방법 및 그 목적으로 함께 설명하는 형식을 취하는 것이 특징이다. 이 책에서 설명하는 구현 패턴은 다음과 같다.

◎ [도메인 지식을 나타내기 위한 일반 패턴]
값 객체 / 엔티티 / 도메인서비스

◎ [애플리케이션을 만들기 위한 패턴]
리포지토리 / 애플리케이션서비스 / 팩토리

◎ [도메인 지식을 나타내기 위한 고급 패턴]
애그리게이트 / 명세
저자

나루세마사노부

成?允宣
기후현출신.프로그래머.25세에프로그래밍을시작했다.업무시스템개발부터프로그래밍커리어를시작해,게임,웹등다양한애플리케이션개발에종사했다.

목차

▣01장:도메인주도설계란?
1.1도메인주도설계란무엇인가?
1.2도메인지식에초점을맞춘설계기법
___1.2.1도메인모델링이란무엇인가?
___1.2.2지식을코드로나타내는도메인객체
1.3이책의접근법과목표
1.4이책에서설명하는패턴에대하여
___1.4.1지식표현을위한패턴
___1.4.2애플리케이션을구성하기위한패턴
___1.4.3지식표현을위한고급패턴

▣02장:시스템특유의값을나타내기위한‘값객체’
2.1값객체란?
2.2값의성질과값객체구현
___2.2.1값의불변성
___2.2.2교환가능하다
___2.2.3등가성비교가능
2.3값객체가되기위한기준
2.4행동이정의된값객체
___2.4.1정의되지않았기때문에알수있는것
2.5값객체를도입했을때의장점
___2.5.1표현력의증가
___2.5.2무결성의유지
___2.5.3잘못된대입방지하기
___2.5.4로직을한곳에모아두기
2.6정리

▣03장:생애주기를갖는객체-엔티티
3.1엔티티란?
3.2엔티티의성질
___3.2.1가변이다
___3.2.2속성이같아도구분할수있다
___3.2.3동일성
3.3엔티티의판단기준-생애주기와연속성
3.4값객체도되고엔티티도될수있는모델
3.5도메인객체를정의할때의장점
___3.5.1자기서술적인코드가된다
___3.5.2도메인에일어난변경을코드에반영하기쉽다
3.6정리

▣04장:부자연스러움을해결하는도메인서비스
4.1서비스란?
4.2도메인서비스란?
___4.2.1값객체나엔티티에정의하기어색한행동
___4.2.2부자연스러움을해결해주는객체
4.3도메인서비스를남용한결과
___4.3.1도메인서비스는가능한한피할것
4.4엔티티/값객체와함께유스케이스수립하기
___4.4.1사용자엔티티확인
___4.4.2사용자생성처리구현
4.5물류시스템의도메인서비스예
___4.5.1거점의행동으로정의하기
___4.5.2운송도메인서비스정의하기
4.6정리

▣05장:데이터와관계된처리를분리하자-리포지토리
5.1리포지토리란무엇인가
5.2리포지토리의책임
5.3리포지토리의인터페이스
5.4SQL을이용하는리포지토리구현하기
5.5테스트로구현검증하기
___5.5.1테스트가필요한작업확인하기
___5.5.2기도하는자의테스트이론
___5.5.3기도는이제그만
5.6테스트용리포지토리만들기
5.7객체-관계매핑이적용된리포지토리구현하기
5.8리포지토리에정의되는행동
___5.8.1객체의저장과관계된행위
___5.8.2저장된객체의복원과관계된행위
5.9정리

▣06장:유스케이스를구현하기위한‘애플리케이션서비스’
6.1애플리케이션서비스란무엇인가
6.2유스케이스수립하기
___6.2.1도메인객체준비하기
___6.2.2사용자등록처리구현하기
___6.2.3사용자정보확인처리구현하기
___6.2.4사용자정보수정처리구현하기
___6.2.5탈퇴처리구현하기
6.3도메인규칙의유출
6.4애플리케이션서비스와프로그램의응집도.
___6.4.1응집도가낮은애플리케이션서비스
6.5애플리케이션서비스의인터페이스
6.6서비스란무엇인가
___6.6.1서비스는무상태다
6.7정리

▣07장:소프트웨어의유연성을위한의존관계제어
7.1특정기술요소에대한의존의결과
7.2의존이란무엇인가
7.3의존관계역전원칙이란무엇인가
___7.3.1추상타입에의존하라
___7.3.2주도권을추상타입에둬라
7.4의존관계제어하기
___7.4.1ServiceLocator패턴
___7.4.2IoCContainer패턴
7.5정리

▣08장:소프트웨어시스템구성하기
8.1소프트웨어에꼭필요한사용자인터페이스
8.2명령행인터페이스추가하기
___8.2.1Main구현하기
8.3MVC프레임워크적용하기
___8.3.1의존관계설정하기
___8.3.2컨트롤러구현하기
8.4단위테스트작성하기
___8.4.1사용자등록처리를위한단위테스트
8.5정리

▣09장:복잡한객체생성을맡길수있는‘팩토리패턴’
9.1팩토리의목적
9.2번호매기기를구현한팩토리의구현예
___9.2.1자동번호매기기기능활용하기
___9.2.2번호매기기메서드를리포지토리에두기
9.3팩토리역할을하는메서드
9.4복잡한객체생성절차를캡슐화하기
9.5정리

▣10장:데이터의무결성유지하기
10.1무결성이란무엇인가
10.2치명적인버그
10.3방법1-유일키제약
___10.3.1유일키제약에중복확인을맡겼을경우의문제점
___10.3.2유일키제약의올바른활용
10.4방법2-트랜잭션
___10.4.1트랜잭션을사용하는패턴
___10.4.2트랜잭션범위를사용하는패턴
___10.4.3AOP를사용하는패턴
___10.4.4유닛오브워크를사용하는패턴
___10.4.5트랜잭션으로인한로크
10.5정리

▣11장:애플리케이션밑바닥부터만들기
11.1애플리케이션을만드는과정
11.2어떤기능을구현할까
___11.2.1서클기능분석하기
11.3서클에대한지식을담은객체만들기
11.4유스케이스구현하기
___11.4.1말과어긋나는코드가일으킬수있는일
___11.4.2규칙이도메인객체를이탈했을때생기는일
11.5정리

▣12장:도메인의규칙을지키는‘애그리게이트’
12.1애그리게이트란?
___12.1.1애그리게이트의기본구조
___12.1.2객체를다루는조작의기본원칙
___12.1.3내부데이터를숨기기위해
12.2애그리게이트의경계를어떻게정할것인가
___12.2.1식별자를이용한컴포지션
12.3애그리게이트의크기와조작의단위
12.4언어표현과의모순제거하기
12.5정리

▣13장:복잡한조건을나타내기위한‘명세’
13.1명세란?
___13.1.1객체의복잡한평가절차
___13.1.2이문제의해결책-명세
___13.1.3리포지토리를되도록사용하지않기
13.2명세와리포지토리의조합
___13.2.1추천서클검색기능으로본복잡한검색
___13.2.2명세를이용한해결책
___13.2.3명세와리포지토리를함께사용할때생기는성능문제
___13.2.4복잡한쿼리는리드모델로
13.3정리

▣14장:아키텍처
14.1아키텍처의역할
___14.1.1안티패턴-스마트UI
___14.1.2도메인주도설계가아키텍처에게서원하는것
14.2아키텍처
___14.2.1계층형아키텍처
___14.2.2헥사고날아키텍처
___14.2.3클린아키텍처
14.3정리

▣15장:앞으로의학습
15.1경량DDD에머무르지않기위해
15.2도메인전문가와함께모델링하기
___15.2.1해결이필요한진짜문제찾기
___15.2.2도메인과코드를연결하는모델
15.3보편언어
___15.3.1깊은통찰을얻으려면
___15.3.2코드에서사용되는보편언어
15.4컨텍스트의경계정하기
15.5컨텍스트맵
___15.5.1팀과팀사이의가교역할을하는테스트
15.6상향식도메인주도설계
15.7정리

▣부록:솔루션구성
A.1소프트웨어개발의첫걸음
___A.1.1도메인레이어의패키지구성
___A.1.2애플리케이션레이어의패키지구성
___A.1.3인프라스트럭처레이어의패키지구성
A.2솔루션구성
___A.2.1모두별도의프로젝트에두는구성
___A.2.2애플리케이션과도메인레이어만같은프로젝트에두는구성
___A.2.3특정언어의기능이미치는영향
A.3정리