SlideShare a Scribd company logo
Domain Driven Design
Phạm Tiến Hùng
phamtienhung@vnpt.vn
Domain Driven Design - Hungpt 101/07/2016
Nội dung
1. Đôi nét về DDD
2. Domain Model trong DDD
3. Các kỹ thuật và mẫu thiết kế trong DDD
3.1. Các pattern quản lý vòng đời đối tượng trong DDD
3.2. Duy trì tính nhất quán của Model
4. Demo
5. Tài liệu tham khảo thêm
6. Trao đổi
Domain Driven Design - Hungpt 201/07/2016
1. Đôi nét về DDD
DDD
Tại sao quan tâm đến DDD
3 Điểm mấu chốt trong DDD
Lợi ích của DDD
Hạn chế của DDD
01/07/2016 Domain Driven Design - Hungpt 3
1. Đôi nét về DDD
Domain Driven Design - Hungpt 401/07/2016
“DDD - Tackling Complexity in the heart of software”, Eric Evans, 2003
1. Đôi nét về DDD
2003 2006 2013 2014
Domain Driven Design - Hungpt 501/07/2016
1. Đôi nét về DDD
Domain Driven Design - Hungpt 601/07/2016
Domain-driven design (DDD) is an approach to developing software for
complex needs by deeply connecting the implementation to an evolving
model of the core business concepts.
DDDCommunity.org
1. Đôi nét về DDD
1. Nguyên tắc và mẫu thiết kế để giải quyết vấn đề phức tạp
2. Lịch sử thành công với nhiều dự án phức tạp
3. Phù hợp với kinh nghiệm về phần mềm đã được đúc kết
4. Code thể hiện nghiệp vụ rõ ràng, có thể test được
01/07/2016 Domain Driven Design - Hungpt 7
Tại sao quan tâm đến DDD ?
- Steve Smith, CTO Falafel Software -
1. Đôi nét về DDD
01/07/2016 Domain Driven Design - Hungpt 8
3 Điểm mấu chốt trong DDD
2. Tập trung vào mô hình của từng Sub Domain 3. Thực thi từng Sub Domain
1. Đào sâu kiến thức với Domain Expert
1. Đôi nét về DDD
Phần mềm trở nên linh hoạt
Phần mềm phản ánh tầm nhìn của khách hàng/chuyên gia ngành.
Giải quyết những vấn đề phức tạp
Code tổ chức tốt và dễ dàng test
Business logic nằm ở một chỗ
Rất nhiều pattern hữu ích để sử dụng
01/07/2016 Domain Driven Design - Hungpt 9
Lợi ích của DDD
1. Đôi nét về DDD
• Thời gian và effort
• Trao đổi và mô hình hóa vấn đề vơí DExpert
• Tách domain logic ra khỏi các phần khác của ứng dụng
• Học
• Nguyên tắc mới
• Pattern mới
• Quy trình mới
• Chỉ hữu ích khi áp dụng giải quyết vấn đề phức tạp
• Ít nhất vấn đề phải tồn tại do sự phức tạp của business.
• Lựa chọn DDD không chỉ bởi sự phức tạp kỹ thuật đơn thuần.
• Thuyết phục đồng nghiệp, tổ chức hiểu và áp dụng nguyên tắc của DDD.
01/07/2016 Domain Driven Design - Hungpt 10
Hạn chế của DDD
2. Domain model
Tập trung vào domain model
Ngôn ngữ chung
Anemic vs Rich model
Entities vs Value Object
Domain Services
DDD Navigation map
01/07/2016 Domain Driven Design - Hungpt 11
2. Domain model
• Phân tách, gom gộp, module hóa
• Đối phó với sự phức tạp
• Mô hình bằng: hình vẽ, ảnh chụp, note, ngôn ngữ…
• Không ngừng đào sâu kiến thức về domain
01/07/2016 Domain Driven Design - Hungpt 12
Tập trung vào domain model
2. Domain model
Vet Management
01/07/2016 Domain Driven Design - Hungpt 13
Tập trung vào domain model
Patient
Scheduling
Staff
Scheduling
Surgery
Scheduling
Office Visit
CMS ?
Owner & Pet
Managemrnt
Billing ?
2. Domain model
Vet Management – Break thành các Sub Domain
01/07/2016 Domain Driven Design - Hungpt 14
Tập trung vào domain model
Staff
Visit Records
Clients Records
Patient Records
Appointment Scheduling
 Khách hàng (clients) đặt lịch hẹn (appointments) cho bệnh nhân (vật nuôi - patients)
 Cuộc hẹn có thể là thăm khám (office visits) hoặc phẫu thuật (surgeries)
 Thăm khám có là một buổi kiểm tra, yêu cầu có bác sĩ (doctors), hoặc kỹ thuật viên (tech)
 Thăm khám phụ thuộc vào phòng kiếm tra (exam room) còn trống
 Phẫu thuật phụ thuộc vào phòng phẫu thuật (O/R) và hồi phục
(Recovery), và có thể liên quan đến các thủ tục khác.
2. Domain model
Vet Management – Tập trung vào từng Sub Domain
01/07/2016 Domain Driven Design - Hungpt 15
Tập trung vào domain model
Appointment Scheduling
2. Domain model
Vet Management – Tập trung vào từng Sub Domain
01/07/2016 Domain Driven Design - Hungpt 16
Tập trung vào domain model
Appointment Scheduling
2. Domain model
Vet Management – Tập trung vào từng Sub Domain
01/07/2016 Domain Driven Design - Hungpt 17
Tập trung vào domain model
Appointment Scheduling
2. Domain model
Vet Management – Tập trung vào từng Sub Domain
01/07/2016 Domain Driven Design - Hungpt 18
Tập trung vào domain model
Appointment Scheduling
2. Domain model
• Loại bỏ khuynh hướng dùng Phương ngữ riêng:
• Giữa Dev và Domain Expert
• Giữa Code và Nghiệp vụ thực tế
01/07/2016 Domain Driven Design - Hungpt 19
Ngôn ngữ chung (Ubiquitous Language)
2. Domain model
• Cấu trúc
• Thuộc tính
• Quan hệ
01/07/2016 Domain Driven Design - Hungpt 20
Anemic Model vs Rich Model
• Cấu trúc
• Thuộc tính
• Quan hệ
• Hành vi
Anemic model Rich model
2. Domain model
01/07/2016 Domain Driven Design - Hungpt 21
Anemic Model vs Rich Model
Anemic model Rich model
2. Domain model
01/07/2016 Domain Driven Design - Hungpt 22
Anemic Model vs Rich Model
Anemic model
-> CRUD
Rich model
-> DDD
MÔ HÌNH THỂ HIỆN CÁCH
LƯU TRỮ
MÔ HÌNH THỂ HIỆN LUỒNG
NGHIỆP VỤ
2. Domain model
• Entities: Xác định bằng định danh
01/07/2016 Domain Driven Design - Hungpt 23
Entities vs Value Object
Pet
Tên: Miu
Màu lông: Xám tro
Màu mắt: Xanh
ID = 123
ID: 123
2. Domain model
• Entities: Xác định bằng định danh
01/07/2016 Domain Driven Design - Hungpt 24
Entities vs Value Object
Pet
Tên: Miu
Màu lông: Xám tro
Màu mắt: Xanh
ID = 123
ID: 123
Xanh
2. Domain model
• Value Object: Xác định bằng giá trị
01/07/2016 Domain Driven Design - Hungpt 25
Entities vs Value Object
$100 $200
2. Domain model
• Value Object: Xác định bằng giá trị
01/07/2016 Domain Driven Design - Hungpt 26
Entities vs Value Object
$100 $200VND
2. Domain model
• Value Object: Xác định bằng giá trị
01/07/2016 Domain Driven Design - Hungpt 27
Entities vs Value Object
2. Domain model
• Value Object: Xác định bằng giá trị
01/07/2016 Domain Driven Design - Hungpt 28
Entities vs Value Object
2. Domain model
• Không thực sự nằm trong một Entity hay Value Object nào của domain.
• Hoạt động trên nhiều đối tượng khác nhau
• Stateless
01/07/2016 Domain Driven Design - Hungpt 29
Domain Services
2. Domain model
01/07/2016 Domain Driven Design - Hungpt 30
DDD Navigation Map
3. Các kỹ thuật và mẫu thiết kế
Các pattern quản lý vòng đời đối tượng trong DDD
- Aggregate - Factory - Repositories
Duy trì tính nhất quán của Model
- Bounded context - Anti-corruption Layer - Shared Kernel
01/07/2016 Domain Driven Design - Hungpt 31
3. Các kỹ thuật và mẫu thiết kế
01/07/2016 Domain Driven Design - Hungpt 32
Các pattern quản lý vòng đời đối tượng trong DDD
Model data
change
Model Data
Creator
Model data Retriever
3. Các kỹ thuật và mẫu thiết kế
• Aggregate
01/07/2016 Domain Driven Design - Hungpt 33
Các pattern quản lý vòng đời đối tượng trong DDD
3. Các kỹ thuật và mẫu thiết kế
• Aggregate
• Một nhóm đối tượng
• Một đơn vị thống nhất đối với các
thay đổi dữ liệu
01/07/2016 Domain Driven Design - Hungpt 34
Các pattern quản lý vòng đời đối tượng trong DDD
3. Các kỹ thuật và mẫu thiết kế
• Aggregate
01/07/2016 Domain Driven Design - Hungpt 35
Các pattern quản lý vòng đời đối tượng trong DDD
3. Các kỹ thuật và mẫu thiết kế
• Aggregate
01/07/2016 Domain Driven Design - Hungpt 36
Các pattern quản lý vòng đời đối tượng trong DDD
Vet Management
3. Các kỹ thuật và mẫu thiết kế
• Factory
01/07/2016 Domain Driven Design - Hungpt 37
Các pattern quản lý vòng đời đối tượng trong DDD
Pattern hỗ trợ khởi tạo đối tượng Aggregate.
3. Các kỹ thuật và mẫu thiết kế
• Factory
01/07/2016 Domain Driven Design - Hungpt 38
Các pattern quản lý vòng đời đối tượng trong DDD
Pattern hỗ trợ khởi tạo đối tượng Aggregate.
• Factory
3. Các kỹ thuật và mẫu thiết kế
01/07/2016 Domain Driven Design - Hungpt 39
Các pattern quản lý vòng đời đối tượng trong DDD
Vet Management
• Repository: Repository đảm nhiệm việc lấy ra những đối tượng đã được lưu trữ.
3. Các kỹ thuật và mẫu thiết kế
01/07/2016 Domain Driven Design - Hungpt 40
Các pattern quản lý vòng đời đối tượng trong DDD
Aggregate (Domain Model) Repository
Data Store
• Cung cấp 1 cách trừu tượng hóa cho việc lưu trữ
• Tách biệt các mối quan tâm
• Cho phép kiểm thử
• Tăng khả năng bảo trì
• Repository: Repository đảm nhiệm việc lấy ra những đối tượng đã được lưu trữ.
3. Các kỹ thuật và mẫu thiết kế
01/07/2016 Domain Driven Design - Hungpt 41
Các pattern quản lý vòng đời đối tượng trong DDD
Lợi ích của
Repository
3. Các kỹ thuật và mẫu thiết kế
01/07/2016 Domain Driven Design - Hungpt 42
Duy trì tính nhất quán của Model
• Bounded context: Một ngữ cảnh giới hạn của model.
3. Các kỹ thuật và mẫu thiết kế
01/07/2016 Domain Driven Design - Hungpt 43
Duy trì tính nhất quán của Model
Client
Appointment Scheduling Context
Client
ID
Name
Client
ID
Name
Credit Cards
Address
Billing
• Bounded context: Một ngữ cảnh giới hạn của model.
3. Các kỹ thuật và mẫu thiết kế
01/07/2016 Domain Driven Design - Hungpt 44
Duy trì tính nhất quán của Model
Client
Appointment Scheduling Context
ID
Name
ID
Name
Credit Cards
Address
Billing Validation
Credit Validation
Billing
Client
4. Demo
Vet Management
01/07/2016 Domain Driven Design - Hungpt 45
5. Tài liệu tham khảo thêm
01/07/2016 Domain Driven Design - Hungpt 46
• DDD Quickly
5. Tài liệu tham khảo thêm
01/07/2016 Domain Driven Design - Hungpt 47
Tài liệu
• DDD Quickly
5. Tài liệu tham khảo thêm
01/07/2016 Domain Driven Design - Hungpt 48
Tài liệu
• Domain-Driven Design, Tackling Complexity
in the Heart of Software
5. Tài liệu tham khảo thêm
01/07/2016 Domain Driven Design - Hungpt 49
Tài liệu
• Pluralsight
Domain-Driven Design
Fundamentals
(Steve Smith & Julie Lerman)
5. Tài liệu tham khảo thêm
01/07/2016 Domain Driven Design - Hungpt 50
Tài liệu
Q/A
01/07/2016 Domain Driven Design - Hungpt 51
Xin cảm ơn !
01/07/2016 Domain Driven Design - Hungpt 52

More Related Content

What's hot (20)

PPT
Kiem thu phan mem
TIen Le
 
PDF
Luận văn: Tìm hiểu giải pháp ảo hóa docker và ứng dụng, HOT
Dịch vụ viết bài trọn gói ZALO 0917193864
 
DOC
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
Thùy Linh
 
DOCX
NoSql Database
Nguyen Thieu
 
PPT
Slide bai giang_an_toan_va_bao_mat_thong_tin
Lang Codon
 
PPT
Chuong 3- CSDL phân tán
duysu
 
PDF
Bài 5: Chuẩn hóa cơ sở dữ liệu
MasterCode.vn
 
DOCX
7. tìm hiểu hàm băm md5 và ứng dụng
Sai Lemovom
 
PDF
Thiết kế csdl quản lý nhân sự
leemindinh
 
PDF
PHÂN CỤM DỮ LIỆU TRONG DATAMING.pdf
Man_Ebook
 
PDF
Co so du lieu phan tan
Thao Vu
 
DOC
Đề tài: Chương trình quản lý thư viện trường ĐH sao đỏ, HAY
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
PDF
SOLID - Những nguyên lí sống còn
Nhật Nguyễn Khắc
 
PDF
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
MasterCode.vn
 
PDF
Bài 7: Thiết kế cơ sở dữ liệu vật lý
MasterCode.vn
 
PDF
Hệ thống quản lý và phân tích log tập trung elk stack
laonap166
 
PDF
Luan van hadoop-final
nobjta2015
 
PPT
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
pisu412
 
DOCX
Bao cao UML phan tich he thong nha cho thue
Kali Back Tracker
 
DOCX
Giới thiệu về Rational Rose và Các diagram
Huy Vũ
 
Kiem thu phan mem
TIen Le
 
Luận văn: Tìm hiểu giải pháp ảo hóa docker và ứng dụng, HOT
Dịch vụ viết bài trọn gói ZALO 0917193864
 
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
Thùy Linh
 
NoSql Database
Nguyen Thieu
 
Slide bai giang_an_toan_va_bao_mat_thong_tin
Lang Codon
 
Chuong 3- CSDL phân tán
duysu
 
Bài 5: Chuẩn hóa cơ sở dữ liệu
MasterCode.vn
 
7. tìm hiểu hàm băm md5 và ứng dụng
Sai Lemovom
 
Thiết kế csdl quản lý nhân sự
leemindinh
 
PHÂN CỤM DỮ LIỆU TRONG DATAMING.pdf
Man_Ebook
 
Co so du lieu phan tan
Thao Vu
 
Đề tài: Chương trình quản lý thư viện trường ĐH sao đỏ, HAY
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
SOLID - Những nguyên lí sống còn
Nhật Nguyễn Khắc
 
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
MasterCode.vn
 
Bài 7: Thiết kế cơ sở dữ liệu vật lý
MasterCode.vn
 
Hệ thống quản lý và phân tích log tập trung elk stack
laonap166
 
Luan van hadoop-final
nobjta2015
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
pisu412
 
Bao cao UML phan tich he thong nha cho thue
Kali Back Tracker
 
Giới thiệu về Rational Rose và Các diagram
Huy Vũ
 

Viewers also liked (20)

PPTX
A Practical Guide to Domain Driven Design: Presentation Slides
thinkddd
 
PPTX
Domain Driven Design 101
Richard Dingwall
 
PDF
Refactoring for Domain Driven Design
David Berliner
 
PDF
Why Domain-Driven Design Matters
Mathias Verraes
 
PPT
Domain Driven Design (DDD)
Tom Kocjan
 
PPTX
Implementing DDD Concepts in PHP
Steve Rhoades
 
PPTX
Implementing DDD with C#
Pascal Laurin
 
PDF
Domain Driven Design
Young-Ho Cho
 
PPT
4a domain model
Châu Thanh Chương
 
PPTX
SignalR with ASP.NET MVC 6
Tung Nguyen Thanh
 
KEY
ZendCon 2011 UnCon Domain-Driven Design
Bradley Holt
 
PDF
Introduction to-ddd
John Ferguson Smart Limited
 
PDF
Introduction to Domain Driven Design
Christos Tsakostas
 
PPTX
Domain Driven Design Quickly
Mariam Hakobyan
 
PDF
Modelling a complex domain with Domain-Driven Design
Naeem Sarfraz
 
PDF
Domain Driven Design and Hexagonal Architecture with Rails
Declan Whelan
 
PPTX
ITEC - Qua trinh phat trien he thong BigData
IT Expert Club
 
PPTX
Designing APIs and Microservices Using Domain-Driven Design
LaunchAny
 
PDF
Domain-Driven Design with ASP.NET MVC
Steven Smith
 
PPTX
Domain Driven Design using Laravel
wajrcs
 
A Practical Guide to Domain Driven Design: Presentation Slides
thinkddd
 
Domain Driven Design 101
Richard Dingwall
 
Refactoring for Domain Driven Design
David Berliner
 
Why Domain-Driven Design Matters
Mathias Verraes
 
Domain Driven Design (DDD)
Tom Kocjan
 
Implementing DDD Concepts in PHP
Steve Rhoades
 
Implementing DDD with C#
Pascal Laurin
 
Domain Driven Design
Young-Ho Cho
 
4a domain model
Châu Thanh Chương
 
SignalR with ASP.NET MVC 6
Tung Nguyen Thanh
 
ZendCon 2011 UnCon Domain-Driven Design
Bradley Holt
 
Introduction to-ddd
John Ferguson Smart Limited
 
Introduction to Domain Driven Design
Christos Tsakostas
 
Domain Driven Design Quickly
Mariam Hakobyan
 
Modelling a complex domain with Domain-Driven Design
Naeem Sarfraz
 
Domain Driven Design and Hexagonal Architecture with Rails
Declan Whelan
 
ITEC - Qua trinh phat trien he thong BigData
IT Expert Club
 
Designing APIs and Microservices Using Domain-Driven Design
LaunchAny
 
Domain-Driven Design with ASP.NET MVC
Steven Smith
 
Domain Driven Design using Laravel
wajrcs
 
Ad

Similar to Domain Driven Design Introduction (20)

PPTX
07CNTT2_Nhóm 2_Báo cáo đồ án môn PM.pptx
NgnThanh95
 
PDF
Phuongphapluanduanphanmem truyenthongvaagilengotrungvietscrumday2013-13100720...
Working in Japan
 
PDF
Bai 02 - Vong doi Phan Mem - cong nghe pm.pdf
doanhvn1207
 
PDF
Bai 02 - Vong doi Phan Mem - cong nghe pm.pdf
doanhvn1207
 
PPT
QuanLiDuAnVaPhamMemPTIT.ppt
Thanhinh45
 
PDF
Qlda 4-lapkehoachduan[easyvn.net]
huongntt16
 
PDF
CNPM04 - Quan ly du an PM.pdfshvhsdhvhdhshhdhvghdhvh
nguyentantoan1610200
 
ODP
Phong cách phát triển mở (MHST 2014)
Vu Hung Nguyen
 
PPT
Chương 3: PHÁT TRIỂN MẪU KHÁI NIỆM_Phần 4
Le Nguyen Truong Giang
 
PDF
CƠ CẤU CỦA TIẾN TRÌNH QUẢN LÝ DỰ ÁN PHẦN MỀM
nataliej4
 
PPTX
các_quy_trình_phát_triển_phần_mềm_phổ_biến.pptx
PHCNGPHANMINH
 
PPTX
Project Kickoff Presentation.pptx
TrnQuangPht
 
PPTX
1_slides bài giảng - SoftwareProjectManagement1.pptx
tungvuvanthanh
 
PDF
Bài 2: Tổng quan về quản lý dự án & Lựa chọn và lập kế hoạch cho dự án
MasterCode.vn
 
PDF
PM-COFICO-VN2022 final(1)_compressed.pdf
AbrahamLinh
 
PPTX
Bài tập công nghệ phần mềm
Lượng Võ Đại
 
PDF
ScrumDay Vietnam 2013: Phương pháp luận phần mềm - Truyền thống và Agile - Ng...
Vu Hung Nguyen
 
PPT
05_Project_management.ppt
tienlqtienlq
 
PPT
Quản lý dự án phần mềm dasssssssssaasdasdasd
LNhtQuang11
 
PPTX
Proposal development workflow
Phương Nguyễn
 
07CNTT2_Nhóm 2_Báo cáo đồ án môn PM.pptx
NgnThanh95
 
Phuongphapluanduanphanmem truyenthongvaagilengotrungvietscrumday2013-13100720...
Working in Japan
 
Bai 02 - Vong doi Phan Mem - cong nghe pm.pdf
doanhvn1207
 
Bai 02 - Vong doi Phan Mem - cong nghe pm.pdf
doanhvn1207
 
QuanLiDuAnVaPhamMemPTIT.ppt
Thanhinh45
 
Qlda 4-lapkehoachduan[easyvn.net]
huongntt16
 
CNPM04 - Quan ly du an PM.pdfshvhsdhvhdhshhdhvghdhvh
nguyentantoan1610200
 
Phong cách phát triển mở (MHST 2014)
Vu Hung Nguyen
 
Chương 3: PHÁT TRIỂN MẪU KHÁI NIỆM_Phần 4
Le Nguyen Truong Giang
 
CƠ CẤU CỦA TIẾN TRÌNH QUẢN LÝ DỰ ÁN PHẦN MỀM
nataliej4
 
các_quy_trình_phát_triển_phần_mềm_phổ_biến.pptx
PHCNGPHANMINH
 
Project Kickoff Presentation.pptx
TrnQuangPht
 
1_slides bài giảng - SoftwareProjectManagement1.pptx
tungvuvanthanh
 
Bài 2: Tổng quan về quản lý dự án & Lựa chọn và lập kế hoạch cho dự án
MasterCode.vn
 
PM-COFICO-VN2022 final(1)_compressed.pdf
AbrahamLinh
 
Bài tập công nghệ phần mềm
Lượng Võ Đại
 
ScrumDay Vietnam 2013: Phương pháp luận phần mềm - Truyền thống và Agile - Ng...
Vu Hung Nguyen
 
05_Project_management.ppt
tienlqtienlq
 
Quản lý dự án phần mềm dasssssssssaasdasdasd
LNhtQuang11
 
Proposal development workflow
Phương Nguyễn
 
Ad

More from Tung Nguyen Thanh (20)

PPTX
How to become senior .net developer
Tung Nguyen Thanh
 
PPTX
Docker for .net developer
Tung Nguyen Thanh
 
PPTX
Continuous Delivery with VS2015 and TFS2015
Tung Nguyen Thanh
 
PPTX
Agile .NET Development with BDD and Continuous Integration
Tung Nguyen Thanh
 
PPT
Performance Tuning And Optimization Microsoft SQL Database
Tung Nguyen Thanh
 
PPTX
HaNoi Net Group Introduction
Tung Nguyen Thanh
 
PPTX
Software architecture for high traffic website
Tung Nguyen Thanh
 
PPTX
TDD - Test Driven Development
Tung Nguyen Thanh
 
PPTX
Refactoring code in .net
Tung Nguyen Thanh
 
PPTX
Visual studio 2015 ide new features
Tung Nguyen Thanh
 
PPTX
Whatmakesoftwareflexible
Tung Nguyen Thanh
 
PDF
How to release every week case study of continuous integration
Tung Nguyen Thanh
 
PDF
Xp not windows xp
Tung Nguyen Thanh
 
PDF
Is xp still extreme
Tung Nguyen Thanh
 
PDF
Workshop fight legacy code write unit test
Tung Nguyen Thanh
 
PPTX
Windows Phone Introduction
Tung Nguyen Thanh
 
PPTX
Developing windows phone 7 application with silverlight
Tung Nguyen Thanh
 
PDF
Top 100 .NET Interview Questions and Answers
Tung Nguyen Thanh
 
PPTX
New in Visual Studio and TFS 2013
Tung Nguyen Thanh
 
PPTX
Visual studio2012 tipsandtricks
Tung Nguyen Thanh
 
How to become senior .net developer
Tung Nguyen Thanh
 
Docker for .net developer
Tung Nguyen Thanh
 
Continuous Delivery with VS2015 and TFS2015
Tung Nguyen Thanh
 
Agile .NET Development with BDD and Continuous Integration
Tung Nguyen Thanh
 
Performance Tuning And Optimization Microsoft SQL Database
Tung Nguyen Thanh
 
HaNoi Net Group Introduction
Tung Nguyen Thanh
 
Software architecture for high traffic website
Tung Nguyen Thanh
 
TDD - Test Driven Development
Tung Nguyen Thanh
 
Refactoring code in .net
Tung Nguyen Thanh
 
Visual studio 2015 ide new features
Tung Nguyen Thanh
 
Whatmakesoftwareflexible
Tung Nguyen Thanh
 
How to release every week case study of continuous integration
Tung Nguyen Thanh
 
Xp not windows xp
Tung Nguyen Thanh
 
Is xp still extreme
Tung Nguyen Thanh
 
Workshop fight legacy code write unit test
Tung Nguyen Thanh
 
Windows Phone Introduction
Tung Nguyen Thanh
 
Developing windows phone 7 application with silverlight
Tung Nguyen Thanh
 
Top 100 .NET Interview Questions and Answers
Tung Nguyen Thanh
 
New in Visual Studio and TFS 2013
Tung Nguyen Thanh
 
Visual studio2012 tipsandtricks
Tung Nguyen Thanh
 

Domain Driven Design Introduction

  • 1. Domain Driven Design Phạm Tiến Hùng [email protected] Domain Driven Design - Hungpt 101/07/2016
  • 2. Nội dung 1. Đôi nét về DDD 2. Domain Model trong DDD 3. Các kỹ thuật và mẫu thiết kế trong DDD 3.1. Các pattern quản lý vòng đời đối tượng trong DDD 3.2. Duy trì tính nhất quán của Model 4. Demo 5. Tài liệu tham khảo thêm 6. Trao đổi Domain Driven Design - Hungpt 201/07/2016
  • 3. 1. Đôi nét về DDD DDD Tại sao quan tâm đến DDD 3 Điểm mấu chốt trong DDD Lợi ích của DDD Hạn chế của DDD 01/07/2016 Domain Driven Design - Hungpt 3
  • 4. 1. Đôi nét về DDD Domain Driven Design - Hungpt 401/07/2016 “DDD - Tackling Complexity in the heart of software”, Eric Evans, 2003
  • 5. 1. Đôi nét về DDD 2003 2006 2013 2014 Domain Driven Design - Hungpt 501/07/2016
  • 6. 1. Đôi nét về DDD Domain Driven Design - Hungpt 601/07/2016 Domain-driven design (DDD) is an approach to developing software for complex needs by deeply connecting the implementation to an evolving model of the core business concepts. DDDCommunity.org
  • 7. 1. Đôi nét về DDD 1. Nguyên tắc và mẫu thiết kế để giải quyết vấn đề phức tạp 2. Lịch sử thành công với nhiều dự án phức tạp 3. Phù hợp với kinh nghiệm về phần mềm đã được đúc kết 4. Code thể hiện nghiệp vụ rõ ràng, có thể test được 01/07/2016 Domain Driven Design - Hungpt 7 Tại sao quan tâm đến DDD ? - Steve Smith, CTO Falafel Software -
  • 8. 1. Đôi nét về DDD 01/07/2016 Domain Driven Design - Hungpt 8 3 Điểm mấu chốt trong DDD 2. Tập trung vào mô hình của từng Sub Domain 3. Thực thi từng Sub Domain 1. Đào sâu kiến thức với Domain Expert
  • 9. 1. Đôi nét về DDD Phần mềm trở nên linh hoạt Phần mềm phản ánh tầm nhìn của khách hàng/chuyên gia ngành. Giải quyết những vấn đề phức tạp Code tổ chức tốt và dễ dàng test Business logic nằm ở một chỗ Rất nhiều pattern hữu ích để sử dụng 01/07/2016 Domain Driven Design - Hungpt 9 Lợi ích của DDD
  • 10. 1. Đôi nét về DDD • Thời gian và effort • Trao đổi và mô hình hóa vấn đề vơí DExpert • Tách domain logic ra khỏi các phần khác của ứng dụng • Học • Nguyên tắc mới • Pattern mới • Quy trình mới • Chỉ hữu ích khi áp dụng giải quyết vấn đề phức tạp • Ít nhất vấn đề phải tồn tại do sự phức tạp của business. • Lựa chọn DDD không chỉ bởi sự phức tạp kỹ thuật đơn thuần. • Thuyết phục đồng nghiệp, tổ chức hiểu và áp dụng nguyên tắc của DDD. 01/07/2016 Domain Driven Design - Hungpt 10 Hạn chế của DDD
  • 11. 2. Domain model Tập trung vào domain model Ngôn ngữ chung Anemic vs Rich model Entities vs Value Object Domain Services DDD Navigation map 01/07/2016 Domain Driven Design - Hungpt 11
  • 12. 2. Domain model • Phân tách, gom gộp, module hóa • Đối phó với sự phức tạp • Mô hình bằng: hình vẽ, ảnh chụp, note, ngôn ngữ… • Không ngừng đào sâu kiến thức về domain 01/07/2016 Domain Driven Design - Hungpt 12 Tập trung vào domain model
  • 13. 2. Domain model Vet Management 01/07/2016 Domain Driven Design - Hungpt 13 Tập trung vào domain model Patient Scheduling Staff Scheduling Surgery Scheduling Office Visit CMS ? Owner & Pet Managemrnt Billing ?
  • 14. 2. Domain model Vet Management – Break thành các Sub Domain 01/07/2016 Domain Driven Design - Hungpt 14 Tập trung vào domain model Staff Visit Records Clients Records Patient Records Appointment Scheduling
  • 15.  Khách hàng (clients) đặt lịch hẹn (appointments) cho bệnh nhân (vật nuôi - patients)  Cuộc hẹn có thể là thăm khám (office visits) hoặc phẫu thuật (surgeries)  Thăm khám có là một buổi kiểm tra, yêu cầu có bác sĩ (doctors), hoặc kỹ thuật viên (tech)  Thăm khám phụ thuộc vào phòng kiếm tra (exam room) còn trống  Phẫu thuật phụ thuộc vào phòng phẫu thuật (O/R) và hồi phục (Recovery), và có thể liên quan đến các thủ tục khác. 2. Domain model Vet Management – Tập trung vào từng Sub Domain 01/07/2016 Domain Driven Design - Hungpt 15 Tập trung vào domain model Appointment Scheduling
  • 16. 2. Domain model Vet Management – Tập trung vào từng Sub Domain 01/07/2016 Domain Driven Design - Hungpt 16 Tập trung vào domain model Appointment Scheduling
  • 17. 2. Domain model Vet Management – Tập trung vào từng Sub Domain 01/07/2016 Domain Driven Design - Hungpt 17 Tập trung vào domain model Appointment Scheduling
  • 18. 2. Domain model Vet Management – Tập trung vào từng Sub Domain 01/07/2016 Domain Driven Design - Hungpt 18 Tập trung vào domain model Appointment Scheduling
  • 19. 2. Domain model • Loại bỏ khuynh hướng dùng Phương ngữ riêng: • Giữa Dev và Domain Expert • Giữa Code và Nghiệp vụ thực tế 01/07/2016 Domain Driven Design - Hungpt 19 Ngôn ngữ chung (Ubiquitous Language)
  • 20. 2. Domain model • Cấu trúc • Thuộc tính • Quan hệ 01/07/2016 Domain Driven Design - Hungpt 20 Anemic Model vs Rich Model • Cấu trúc • Thuộc tính • Quan hệ • Hành vi Anemic model Rich model
  • 21. 2. Domain model 01/07/2016 Domain Driven Design - Hungpt 21 Anemic Model vs Rich Model Anemic model Rich model
  • 22. 2. Domain model 01/07/2016 Domain Driven Design - Hungpt 22 Anemic Model vs Rich Model Anemic model -> CRUD Rich model -> DDD MÔ HÌNH THỂ HIỆN CÁCH LƯU TRỮ MÔ HÌNH THỂ HIỆN LUỒNG NGHIỆP VỤ
  • 23. 2. Domain model • Entities: Xác định bằng định danh 01/07/2016 Domain Driven Design - Hungpt 23 Entities vs Value Object Pet Tên: Miu Màu lông: Xám tro Màu mắt: Xanh ID = 123 ID: 123
  • 24. 2. Domain model • Entities: Xác định bằng định danh 01/07/2016 Domain Driven Design - Hungpt 24 Entities vs Value Object Pet Tên: Miu Màu lông: Xám tro Màu mắt: Xanh ID = 123 ID: 123 Xanh
  • 25. 2. Domain model • Value Object: Xác định bằng giá trị 01/07/2016 Domain Driven Design - Hungpt 25 Entities vs Value Object $100 $200
  • 26. 2. Domain model • Value Object: Xác định bằng giá trị 01/07/2016 Domain Driven Design - Hungpt 26 Entities vs Value Object $100 $200VND
  • 27. 2. Domain model • Value Object: Xác định bằng giá trị 01/07/2016 Domain Driven Design - Hungpt 27 Entities vs Value Object
  • 28. 2. Domain model • Value Object: Xác định bằng giá trị 01/07/2016 Domain Driven Design - Hungpt 28 Entities vs Value Object
  • 29. 2. Domain model • Không thực sự nằm trong một Entity hay Value Object nào của domain. • Hoạt động trên nhiều đối tượng khác nhau • Stateless 01/07/2016 Domain Driven Design - Hungpt 29 Domain Services
  • 30. 2. Domain model 01/07/2016 Domain Driven Design - Hungpt 30 DDD Navigation Map
  • 31. 3. Các kỹ thuật và mẫu thiết kế Các pattern quản lý vòng đời đối tượng trong DDD - Aggregate - Factory - Repositories Duy trì tính nhất quán của Model - Bounded context - Anti-corruption Layer - Shared Kernel 01/07/2016 Domain Driven Design - Hungpt 31
  • 32. 3. Các kỹ thuật và mẫu thiết kế 01/07/2016 Domain Driven Design - Hungpt 32 Các pattern quản lý vòng đời đối tượng trong DDD Model data change Model Data Creator Model data Retriever
  • 33. 3. Các kỹ thuật và mẫu thiết kế • Aggregate 01/07/2016 Domain Driven Design - Hungpt 33 Các pattern quản lý vòng đời đối tượng trong DDD
  • 34. 3. Các kỹ thuật và mẫu thiết kế • Aggregate • Một nhóm đối tượng • Một đơn vị thống nhất đối với các thay đổi dữ liệu 01/07/2016 Domain Driven Design - Hungpt 34 Các pattern quản lý vòng đời đối tượng trong DDD
  • 35. 3. Các kỹ thuật và mẫu thiết kế • Aggregate 01/07/2016 Domain Driven Design - Hungpt 35 Các pattern quản lý vòng đời đối tượng trong DDD
  • 36. 3. Các kỹ thuật và mẫu thiết kế • Aggregate 01/07/2016 Domain Driven Design - Hungpt 36 Các pattern quản lý vòng đời đối tượng trong DDD Vet Management
  • 37. 3. Các kỹ thuật và mẫu thiết kế • Factory 01/07/2016 Domain Driven Design - Hungpt 37 Các pattern quản lý vòng đời đối tượng trong DDD Pattern hỗ trợ khởi tạo đối tượng Aggregate.
  • 38. 3. Các kỹ thuật và mẫu thiết kế • Factory 01/07/2016 Domain Driven Design - Hungpt 38 Các pattern quản lý vòng đời đối tượng trong DDD Pattern hỗ trợ khởi tạo đối tượng Aggregate.
  • 39. • Factory 3. Các kỹ thuật và mẫu thiết kế 01/07/2016 Domain Driven Design - Hungpt 39 Các pattern quản lý vòng đời đối tượng trong DDD Vet Management
  • 40. • Repository: Repository đảm nhiệm việc lấy ra những đối tượng đã được lưu trữ. 3. Các kỹ thuật và mẫu thiết kế 01/07/2016 Domain Driven Design - Hungpt 40 Các pattern quản lý vòng đời đối tượng trong DDD Aggregate (Domain Model) Repository Data Store
  • 41. • Cung cấp 1 cách trừu tượng hóa cho việc lưu trữ • Tách biệt các mối quan tâm • Cho phép kiểm thử • Tăng khả năng bảo trì • Repository: Repository đảm nhiệm việc lấy ra những đối tượng đã được lưu trữ. 3. Các kỹ thuật và mẫu thiết kế 01/07/2016 Domain Driven Design - Hungpt 41 Các pattern quản lý vòng đời đối tượng trong DDD Lợi ích của Repository
  • 42. 3. Các kỹ thuật và mẫu thiết kế 01/07/2016 Domain Driven Design - Hungpt 42 Duy trì tính nhất quán của Model
  • 43. • Bounded context: Một ngữ cảnh giới hạn của model. 3. Các kỹ thuật và mẫu thiết kế 01/07/2016 Domain Driven Design - Hungpt 43 Duy trì tính nhất quán của Model Client Appointment Scheduling Context Client ID Name Client ID Name Credit Cards Address Billing
  • 44. • Bounded context: Một ngữ cảnh giới hạn của model. 3. Các kỹ thuật và mẫu thiết kế 01/07/2016 Domain Driven Design - Hungpt 44 Duy trì tính nhất quán của Model Client Appointment Scheduling Context ID Name ID Name Credit Cards Address Billing Validation Credit Validation Billing Client
  • 45. 4. Demo Vet Management 01/07/2016 Domain Driven Design - Hungpt 45
  • 46. 5. Tài liệu tham khảo thêm 01/07/2016 Domain Driven Design - Hungpt 46
  • 47. • DDD Quickly 5. Tài liệu tham khảo thêm 01/07/2016 Domain Driven Design - Hungpt 47 Tài liệu
  • 48. • DDD Quickly 5. Tài liệu tham khảo thêm 01/07/2016 Domain Driven Design - Hungpt 48 Tài liệu
  • 49. • Domain-Driven Design, Tackling Complexity in the Heart of Software 5. Tài liệu tham khảo thêm 01/07/2016 Domain Driven Design - Hungpt 49 Tài liệu
  • 50. • Pluralsight Domain-Driven Design Fundamentals (Steve Smith & Julie Lerman) 5. Tài liệu tham khảo thêm 01/07/2016 Domain Driven Design - Hungpt 50 Tài liệu
  • 51. Q/A 01/07/2016 Domain Driven Design - Hungpt 51
  • 52. Xin cảm ơn ! 01/07/2016 Domain Driven Design - Hungpt 52