SlideShare a Scribd company logo
1 of 52
Download to read offline
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

Thiết kế hệ thống E-Commerce yêu cầu mở rộng
Thiết kế hệ thống E-Commerce yêu cầu mở rộngThiết kế hệ thống E-Commerce yêu cầu mở rộng
Thiết kế hệ thống E-Commerce yêu cầu mở rộngNguyen Minh Quang
 
Extreme programming
Extreme programmingExtreme programming
Extreme programmingNguyen Tran
 
Báo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmBáo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmThuyet Nguyen
 
Fault tolerance làm rõ đối với Distributed File System
Fault tolerance làm rõ đối với Distributed File SystemFault tolerance làm rõ đối với Distributed File System
Fault tolerance làm rõ đối với Distributed File SystemThường Thường
 
Do an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuDo an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuThiênĐàng CôngDân
 
Quản lý mã nguồn với GIT
Quản lý mã nguồn với GITQuản lý mã nguồn với GIT
Quản lý mã nguồn với GITZendVN
 
SOLID - Những nguyên lí sống còn
SOLID - Những nguyên lí sống cònSOLID - Những nguyên lí sống còn
SOLID - Những nguyên lí sống cònNhật Nguyễn Khắc
 
Slide Báo Cáo Đồ Án Tốt Nghiệp CNTT
Slide Báo Cáo Đồ Án Tốt Nghiệp CNTTSlide Báo Cáo Đồ Án Tốt Nghiệp CNTT
Slide Báo Cáo Đồ Án Tốt Nghiệp CNTTHiệu Nguyễn
 
Design Pattern - Những công thức vàng trong thiết kế
Design Pattern - Những công thức vàng trong thiết kếDesign Pattern - Những công thức vàng trong thiết kế
Design Pattern - Những công thức vàng trong thiết kếNhật Nguyễn Khắc
 
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLPHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLDang Tuan
 
Tương tác người-máy
Tương tác người-máyTương tác người-máy
Tương tác người-máyAlice_Stone
 
Chương 4. Chuẩn hóa cơ sở dữ liệu
Chương 4. Chuẩn hóa cơ sở dữ liệu Chương 4. Chuẩn hóa cơ sở dữ liệu
Chương 4. Chuẩn hóa cơ sở dữ liệu Hoa Le
 
Kinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vnKinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vnDotnet Open Group
 
Xây dựng biểu đồ use case
Xây dựng biểu đồ use caseXây dựng biểu đồ use case
Xây dựng biểu đồ use caseTrung Chinh Hà
 
Báo Cáo Quản Lý Dự Án Mẫu
Báo Cáo Quản Lý Dự Án MẫuBáo Cáo Quản Lý Dự Án Mẫu
Báo Cáo Quản Lý Dự Án MẫuHiệp Nguyễn
 
Kiến trúc-hướng-dịch-vụ-webservice
Kiến trúc-hướng-dịch-vụ-webserviceKiến trúc-hướng-dịch-vụ-webservice
Kiến trúc-hướng-dịch-vụ-webserviceThuyet Nguyen
 

What's hot (20)

Báo cáo Quản lý dự án phần mềm PTIT
Báo cáo Quản lý dự án phần mềm PTITBáo cáo Quản lý dự án phần mềm PTIT
Báo cáo Quản lý dự án phần mềm PTIT
 
Thiết kế hệ thống E-Commerce yêu cầu mở rộng
Thiết kế hệ thống E-Commerce yêu cầu mở rộngThiết kế hệ thống E-Commerce yêu cầu mở rộng
Thiết kế hệ thống E-Commerce yêu cầu mở rộng
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Bizweb Microservices Architecture
Bizweb Microservices ArchitectureBizweb Microservices Architecture
Bizweb Microservices Architecture
 
Báo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmBáo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềm
 
Fault tolerance làm rõ đối với Distributed File System
Fault tolerance làm rõ đối với Distributed File SystemFault tolerance làm rõ đối với Distributed File System
Fault tolerance làm rõ đối với Distributed File System
 
Do an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuDo an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tu
 
Quản lý mã nguồn với GIT
Quản lý mã nguồn với GITQuản lý mã nguồn với GIT
Quản lý mã nguồn với GIT
 
Sapo Microservices Architecture
Sapo Microservices ArchitectureSapo Microservices Architecture
Sapo Microservices Architecture
 
SOLID - Những nguyên lí sống còn
SOLID - Những nguyên lí sống cònSOLID - Những nguyên lí sống còn
SOLID - Những nguyên lí sống còn
 
Slide Báo Cáo Đồ Án Tốt Nghiệp CNTT
Slide Báo Cáo Đồ Án Tốt Nghiệp CNTTSlide Báo Cáo Đồ Án Tốt Nghiệp CNTT
Slide Báo Cáo Đồ Án Tốt Nghiệp CNTT
 
Design Pattern - Những công thức vàng trong thiết kế
Design Pattern - Những công thức vàng trong thiết kếDesign Pattern - Những công thức vàng trong thiết kế
Design Pattern - Những công thức vàng trong thiết kế
 
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLPHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
 
luan van thac si tim hieu flutter va ung dung
luan van thac si tim hieu flutter va ung dungluan van thac si tim hieu flutter va ung dung
luan van thac si tim hieu flutter va ung dung
 
Tương tác người-máy
Tương tác người-máyTương tác người-máy
Tương tác người-máy
 
Chương 4. Chuẩn hóa cơ sở dữ liệu
Chương 4. Chuẩn hóa cơ sở dữ liệu Chương 4. Chuẩn hóa cơ sở dữ liệu
Chương 4. Chuẩn hóa cơ sở dữ liệu
 
Kinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vnKinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vn
 
Xây dựng biểu đồ use case
Xây dựng biểu đồ use caseXây dựng biểu đồ use case
Xây dựng biểu đồ use case
 
Báo Cáo Quản Lý Dự Án Mẫu
Báo Cáo Quản Lý Dự Án MẫuBáo Cáo Quản Lý Dự Án Mẫu
Báo Cáo Quản Lý Dự Án Mẫu
 
Kiến trúc-hướng-dịch-vụ-webservice
Kiến trúc-hướng-dịch-vụ-webserviceKiến trúc-hướng-dịch-vụ-webservice
Kiến trúc-hướng-dịch-vụ-webservice
 

Viewers also liked

A Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation SlidesA Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation Slidesthinkddd
 
Refactoring for Domain Driven Design
Refactoring for Domain Driven DesignRefactoring for Domain Driven Design
Refactoring for Domain Driven DesignDavid Berliner
 
Why Domain-Driven Design Matters
Why Domain-Driven Design MattersWhy Domain-Driven Design Matters
Why Domain-Driven Design MattersMathias Verraes
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)Tom Kocjan
 
Implementing DDD Concepts in PHP
Implementing DDD Concepts in PHPImplementing DDD Concepts in PHP
Implementing DDD Concepts in PHPSteve Rhoades
 
Implementing DDD with C#
Implementing DDD with C#Implementing DDD with C#
Implementing DDD with C#Pascal Laurin
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignYoung-Ho Cho
 
ZendCon 2011 UnCon Domain-Driven Design
ZendCon 2011 UnCon Domain-Driven DesignZendCon 2011 UnCon Domain-Driven Design
ZendCon 2011 UnCon Domain-Driven DesignBradley Holt
 
Introduction to Domain Driven Design
Introduction to Domain Driven DesignIntroduction to Domain Driven Design
Introduction to Domain Driven DesignChristos Tsakostas
 
Domain Driven Design Quickly
Domain Driven Design QuicklyDomain Driven Design Quickly
Domain Driven Design QuicklyMariam Hakobyan
 
Modelling a complex domain with Domain-Driven Design
Modelling a complex domain with Domain-Driven DesignModelling a complex domain with Domain-Driven Design
Modelling a complex domain with Domain-Driven DesignNaeem Sarfraz
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignRyan Riley
 
Domain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with RailsDomain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with RailsDeclan Whelan
 
ITEC - Qua trinh phat trien he thong BigData
ITEC - Qua trinh phat trien he thong BigDataITEC - Qua trinh phat trien he thong BigData
ITEC - Qua trinh phat trien he thong BigDataIT Expert Club
 
Designing APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignDesigning APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignLaunchAny
 
Domain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVCDomain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVCSteven Smith
 
Domain Driven Design using Laravel
Domain Driven Design using LaravelDomain Driven Design using Laravel
Domain Driven Design using Laravelwajrcs
 

Viewers also liked (20)

A Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation SlidesA Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation Slides
 
Domain Driven Design 101
Domain Driven Design 101Domain Driven Design 101
Domain Driven Design 101
 
Refactoring for Domain Driven Design
Refactoring for Domain Driven DesignRefactoring for Domain Driven Design
Refactoring for Domain Driven Design
 
Why Domain-Driven Design Matters
Why Domain-Driven Design MattersWhy Domain-Driven Design Matters
Why Domain-Driven Design Matters
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)
 
Implementing DDD Concepts in PHP
Implementing DDD Concepts in PHPImplementing DDD Concepts in PHP
Implementing DDD Concepts in PHP
 
Implementing DDD with C#
Implementing DDD with C#Implementing DDD with C#
Implementing DDD with C#
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
4a domain model
4a domain model4a domain model
4a domain model
 
ZendCon 2011 UnCon Domain-Driven Design
ZendCon 2011 UnCon Domain-Driven DesignZendCon 2011 UnCon Domain-Driven Design
ZendCon 2011 UnCon Domain-Driven Design
 
Introduction to-ddd
Introduction to-dddIntroduction to-ddd
Introduction to-ddd
 
Introduction to Domain Driven Design
Introduction to Domain Driven DesignIntroduction to Domain Driven Design
Introduction to Domain Driven Design
 
Domain Driven Design Quickly
Domain Driven Design QuicklyDomain Driven Design Quickly
Domain Driven Design Quickly
 
Modelling a complex domain with Domain-Driven Design
Modelling a complex domain with Domain-Driven DesignModelling a complex domain with Domain-Driven Design
Modelling a complex domain with Domain-Driven Design
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Domain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with RailsDomain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with Rails
 
ITEC - Qua trinh phat trien he thong BigData
ITEC - Qua trinh phat trien he thong BigDataITEC - Qua trinh phat trien he thong BigData
ITEC - Qua trinh phat trien he thong BigData
 
Designing APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignDesigning APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven Design
 
Domain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVCDomain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVC
 
Domain Driven Design using Laravel
Domain Driven Design using LaravelDomain Driven Design using Laravel
Domain Driven Design using Laravel
 

Similar to Domain Driven Design Introduction

07CNTT2_Nhóm 2_Báo cáo đồ án môn PM.pptx
07CNTT2_Nhóm 2_Báo cáo đồ án môn PM.pptx07CNTT2_Nhóm 2_Báo cáo đồ án môn PM.pptx
07CNTT2_Nhóm 2_Báo cáo đồ án môn PM.pptxNgnThanh95
 
Phuongphapluanduanphanmem truyenthongvaagilengotrungvietscrumday2013-13100720...
Phuongphapluanduanphanmem truyenthongvaagilengotrungvietscrumday2013-13100720...Phuongphapluanduanphanmem truyenthongvaagilengotrungvietscrumday2013-13100720...
Phuongphapluanduanphanmem truyenthongvaagilengotrungvietscrumday2013-13100720...Working in Japan
 
QuanLiDuAnVaPhamMemPTIT.ppt
QuanLiDuAnVaPhamMemPTIT.pptQuanLiDuAnVaPhamMemPTIT.ppt
QuanLiDuAnVaPhamMemPTIT.pptThanhinh45
 
Qlda 4-lapkehoachduan[easyvn.net]
Qlda 4-lapkehoachduan[easyvn.net]Qlda 4-lapkehoachduan[easyvn.net]
Qlda 4-lapkehoachduan[easyvn.net]huongntt16
 
Phong cách phát triển mở (MHST 2014)
Phong cách phát triển mở (MHST 2014)Phong cách phát triển mở (MHST 2014)
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
Chương 3: PHÁT TRIỂN MẪU KHÁI NIỆM_Phần 4Chương 3: PHÁT TRIỂN MẪU KHÁI NIỆM_Phần 4
Chương 3: PHÁT TRIỂN MẪU KHÁI NIỆM_Phần 4Le Nguyen Truong Giang
 
CƠ CẤU CỦA TIẾN TRÌNH QUẢN LÝ DỰ ÁN PHẦN MỀM
CƠ CẤU CỦA TIẾN TRÌNH QUẢN LÝ DỰ ÁN PHẦN MỀM CƠ CẤU CỦA TIẾN TRÌNH QUẢN LÝ DỰ ÁN PHẦN MỀM
CƠ CẤU CỦA TIẾN TRÌNH QUẢN LÝ DỰ ÁN PHẦN MỀM nataliej4
 
Project Kickoff Presentation.pptx
Project Kickoff Presentation.pptxProject Kickoff Presentation.pptx
Project Kickoff Presentation.pptxTrnQuangPht
 
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
Bài 2: Tổng quan về quản lý dự án & Lựa chọn và lập kế hoạch cho dự ánBài 2: Tổng quan về quản lý dự án & Lựa chọn và lập kế hoạch cho dự án
Bài 2: Tổng quan về quản lý dự án & Lựa chọn và lập kế hoạch cho dự ánMasterCode.vn
 
PM-COFICO-VN2022 final(1)_compressed.pdf
PM-COFICO-VN2022 final(1)_compressed.pdfPM-COFICO-VN2022 final(1)_compressed.pdf
PM-COFICO-VN2022 final(1)_compressed.pdfAbrahamLinh
 
Bài tập công nghệ phần mềm
Bài tập công nghệ phần mềmBài tập công nghệ phần mềm
Bài tập công nghệ phần mềmLượng Võ Đại
 
ScrumDay Vietnam 2013: Phương pháp luận phần mềm - Truyền thống và Agile - Ng...
ScrumDay Vietnam 2013: Phương pháp luận phần mềm - Truyền thống và Agile - Ng...ScrumDay Vietnam 2013: Phương pháp luận phần mềm - Truyền thống và Agile - Ng...
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
05_Project_management.ppt05_Project_management.ppt
05_Project_management.ppttienlqtienlq
 
Quản lý dự án phần mềm dasssssssssaasdasdasd
Quản lý dự án phần mềm dasssssssssaasdasdasdQuản lý dự án phần mềm dasssssssssaasdasdasd
Quản lý dự án phần mềm dasssssssssaasdasdasdLNhtQuang11
 
Proposal development workflow
Proposal development workflowProposal development workflow
Proposal development workflowPhương Nguyễn
 
AGILE project management - Quản lý dự án linh hoạt & Ứng dụng trong eCommerce
AGILE project management - Quản lý dự án linh hoạt & Ứng dụng trong eCommerceAGILE project management - Quản lý dự án linh hoạt & Ứng dụng trong eCommerce
AGILE project management - Quản lý dự án linh hoạt & Ứng dụng trong eCommerceHo Quang Thanh
 
13690151 slide-phan-tich-thiet-ke-he-thong-huong-doi-tuong-dai-hoc-bach-khoa-...
13690151 slide-phan-tich-thiet-ke-he-thong-huong-doi-tuong-dai-hoc-bach-khoa-...13690151 slide-phan-tich-thiet-ke-he-thong-huong-doi-tuong-dai-hoc-bach-khoa-...
13690151 slide-phan-tich-thiet-ke-he-thong-huong-doi-tuong-dai-hoc-bach-khoa-...leethinh
 
NHÓM 1010_ĐỒ ÁN LẬP TRÌNH WEB .docx.pptx
NHÓM 1010_ĐỒ ÁN LẬP TRÌNH WEB .docx.pptxNHÓM 1010_ĐỒ ÁN LẬP TRÌNH WEB .docx.pptx
NHÓM 1010_ĐỒ ÁN LẬP TRÌNH WEB .docx.pptxPhuongPhan826909
 
PP Thứ 6 thi vietsub.pdf
PP Thứ 6 thi vietsub.pdfPP Thứ 6 thi vietsub.pdf
PP Thứ 6 thi vietsub.pdfHngVit831022
 

Similar to Domain Driven Design Introduction (20)

07CNTT2_Nhóm 2_Báo cáo đồ án môn PM.pptx
07CNTT2_Nhóm 2_Báo cáo đồ án môn PM.pptx07CNTT2_Nhóm 2_Báo cáo đồ án môn PM.pptx
07CNTT2_Nhóm 2_Báo cáo đồ án môn PM.pptx
 
Phuongphapluanduanphanmem truyenthongvaagilengotrungvietscrumday2013-13100720...
Phuongphapluanduanphanmem truyenthongvaagilengotrungvietscrumday2013-13100720...Phuongphapluanduanphanmem truyenthongvaagilengotrungvietscrumday2013-13100720...
Phuongphapluanduanphanmem truyenthongvaagilengotrungvietscrumday2013-13100720...
 
QuanLiDuAnVaPhamMemPTIT.ppt
QuanLiDuAnVaPhamMemPTIT.pptQuanLiDuAnVaPhamMemPTIT.ppt
QuanLiDuAnVaPhamMemPTIT.ppt
 
Qlda 4-lapkehoachduan[easyvn.net]
Qlda 4-lapkehoachduan[easyvn.net]Qlda 4-lapkehoachduan[easyvn.net]
Qlda 4-lapkehoachduan[easyvn.net]
 
Phong cách phát triển mở (MHST 2014)
Phong cách phát triển mở (MHST 2014)Phong cách phát triển mở (MHST 2014)
Phong cách phát triển mở (MHST 2014)
 
Chương 3: PHÁT TRIỂN MẪU KHÁI NIỆM_Phần 4
Chương 3: PHÁT TRIỂN MẪU KHÁI NIỆM_Phần 4Chương 3: PHÁT TRIỂN MẪU KHÁI NIỆM_Phần 4
Chương 3: PHÁT TRIỂN MẪU KHÁI NIỆM_Phần 4
 
CƠ CẤU CỦA TIẾN TRÌNH QUẢN LÝ DỰ ÁN PHẦN MỀM
CƠ CẤU CỦA TIẾN TRÌNH QUẢN LÝ DỰ ÁN PHẦN MỀM CƠ CẤU CỦA TIẾN TRÌNH QUẢN LÝ DỰ ÁN PHẦN MỀM
CƠ CẤU CỦA TIẾN TRÌNH QUẢN LÝ DỰ ÁN PHẦN MỀM
 
Project Kickoff Presentation.pptx
Project Kickoff Presentation.pptxProject Kickoff Presentation.pptx
Project Kickoff Presentation.pptx
 
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
Bài 2: Tổng quan về quản lý dự án & Lựa chọn và lập kế hoạch cho dự ánBài 2: Tổng quan về quản lý dự án & Lựa chọn và lập kế hoạch cho dự án
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
 
PM-COFICO-VN2022 final(1)_compressed.pdf
PM-COFICO-VN2022 final(1)_compressed.pdfPM-COFICO-VN2022 final(1)_compressed.pdf
PM-COFICO-VN2022 final(1)_compressed.pdf
 
Bài tập công nghệ phần mềm
Bài tập công nghệ phần mềmBài tập công nghệ phần mềm
Bài tập công nghệ phần mềm
 
ScrumDay Vietnam 2013: Phương pháp luận phần mềm - Truyền thống và Agile - Ng...
ScrumDay Vietnam 2013: Phương pháp luận phần mềm - Truyền thống và Agile - Ng...ScrumDay Vietnam 2013: Phương pháp luận phần mềm - Truyền thống và Agile - Ng...
ScrumDay Vietnam 2013: Phương pháp luận phần mềm - Truyền thống và Agile - Ng...
 
05_Project_management.ppt
05_Project_management.ppt05_Project_management.ppt
05_Project_management.ppt
 
Quản lý dự án phần mềm dasssssssssaasdasdasd
Quản lý dự án phần mềm dasssssssssaasdasdasdQuản lý dự án phần mềm dasssssssssaasdasdasd
Quản lý dự án phần mềm dasssssssssaasdasdasd
 
Proposal development workflow
Proposal development workflowProposal development workflow
Proposal development workflow
 
AGILE project management - Quản lý dự án linh hoạt & Ứng dụng trong eCommerce
AGILE project management - Quản lý dự án linh hoạt & Ứng dụng trong eCommerceAGILE project management - Quản lý dự án linh hoạt & Ứng dụng trong eCommerce
AGILE project management - Quản lý dự án linh hoạt & Ứng dụng trong eCommerce
 
13690151 slide-phan-tich-thiet-ke-he-thong-huong-doi-tuong-dai-hoc-bach-khoa-...
13690151 slide-phan-tich-thiet-ke-he-thong-huong-doi-tuong-dai-hoc-bach-khoa-...13690151 slide-phan-tich-thiet-ke-he-thong-huong-doi-tuong-dai-hoc-bach-khoa-...
13690151 slide-phan-tich-thiet-ke-he-thong-huong-doi-tuong-dai-hoc-bach-khoa-...
 
Nhóm 8
Nhóm 8Nhóm 8
Nhóm 8
 
NHÓM 1010_ĐỒ ÁN LẬP TRÌNH WEB .docx.pptx
NHÓM 1010_ĐỒ ÁN LẬP TRÌNH WEB .docx.pptxNHÓM 1010_ĐỒ ÁN LẬP TRÌNH WEB .docx.pptx
NHÓM 1010_ĐỒ ÁN LẬP TRÌNH WEB .docx.pptx
 
PP Thứ 6 thi vietsub.pdf
PP Thứ 6 thi vietsub.pdfPP Thứ 6 thi vietsub.pdf
PP Thứ 6 thi vietsub.pdf
 

More from Tung Nguyen Thanh

How to become senior .net developer
How to become senior .net developerHow to become senior .net developer
How to become senior .net developerTung Nguyen Thanh
 
Continuous Delivery with VS2015 and TFS2015
Continuous Delivery with VS2015 and TFS2015Continuous Delivery with VS2015 and TFS2015
Continuous Delivery with VS2015 and TFS2015Tung Nguyen Thanh
 
Agile .NET Development with BDD and Continuous Integration
Agile .NET Development with BDD and Continuous IntegrationAgile .NET Development with BDD and Continuous Integration
Agile .NET Development with BDD and Continuous IntegrationTung Nguyen Thanh
 
Performance Tuning And Optimization Microsoft SQL Database
Performance Tuning And Optimization Microsoft SQL DatabasePerformance Tuning And Optimization Microsoft SQL Database
Performance Tuning And Optimization Microsoft SQL DatabaseTung Nguyen Thanh
 
HaNoi Net Group Introduction
HaNoi Net Group IntroductionHaNoi Net Group Introduction
HaNoi Net Group IntroductionTung Nguyen Thanh
 
Software architecture for high traffic website
Software architecture for high traffic websiteSoftware architecture for high traffic website
Software architecture for high traffic websiteTung Nguyen Thanh
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven DevelopmentTung Nguyen Thanh
 
Visual studio 2015 ide new features
Visual studio 2015 ide new featuresVisual studio 2015 ide new features
Visual studio 2015 ide new featuresTung Nguyen Thanh
 
How to release every week case study of continuous integration
How to release every week case study of continuous integrationHow to release every week case study of continuous integration
How to release every week case study of continuous integrationTung Nguyen Thanh
 
Workshop fight legacy code write unit test
Workshop fight legacy code write unit testWorkshop fight legacy code write unit test
Workshop fight legacy code write unit testTung Nguyen Thanh
 
Developing windows phone 7 application with silverlight
Developing windows phone 7 application with silverlightDeveloping windows phone 7 application with silverlight
Developing windows phone 7 application with silverlightTung Nguyen Thanh
 
Top 100 .NET Interview Questions and Answers
Top 100 .NET Interview Questions and AnswersTop 100 .NET Interview Questions and Answers
Top 100 .NET Interview Questions and AnswersTung Nguyen Thanh
 
New in Visual Studio and TFS 2013
New in Visual Studio and TFS 2013New in Visual Studio and TFS 2013
New in Visual Studio and TFS 2013Tung Nguyen Thanh
 
Visual studio2012 tipsandtricks
Visual studio2012 tipsandtricksVisual studio2012 tipsandtricks
Visual studio2012 tipsandtricksTung Nguyen Thanh
 

More from Tung Nguyen Thanh (20)

How to become senior .net developer
How to become senior .net developerHow to become senior .net developer
How to become senior .net developer
 
Docker for .net developer
Docker for .net developerDocker for .net developer
Docker for .net developer
 
Continuous Delivery with VS2015 and TFS2015
Continuous Delivery with VS2015 and TFS2015Continuous Delivery with VS2015 and TFS2015
Continuous Delivery with VS2015 and TFS2015
 
Agile .NET Development with BDD and Continuous Integration
Agile .NET Development with BDD and Continuous IntegrationAgile .NET Development with BDD and Continuous Integration
Agile .NET Development with BDD and Continuous Integration
 
Performance Tuning And Optimization Microsoft SQL Database
Performance Tuning And Optimization Microsoft SQL DatabasePerformance Tuning And Optimization Microsoft SQL Database
Performance Tuning And Optimization Microsoft SQL Database
 
HaNoi Net Group Introduction
HaNoi Net Group IntroductionHaNoi Net Group Introduction
HaNoi Net Group Introduction
 
Software architecture for high traffic website
Software architecture for high traffic websiteSoftware architecture for high traffic website
Software architecture for high traffic website
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Refactoring code in .net
Refactoring code in .netRefactoring code in .net
Refactoring code in .net
 
Visual studio 2015 ide new features
Visual studio 2015 ide new featuresVisual studio 2015 ide new features
Visual studio 2015 ide new features
 
Whatmakesoftwareflexible
WhatmakesoftwareflexibleWhatmakesoftwareflexible
Whatmakesoftwareflexible
 
How to release every week case study of continuous integration
How to release every week case study of continuous integrationHow to release every week case study of continuous integration
How to release every week case study of continuous integration
 
Xp not windows xp
Xp not windows xpXp not windows xp
Xp not windows xp
 
Is xp still extreme
Is xp still extremeIs xp still extreme
Is xp still extreme
 
Workshop fight legacy code write unit test
Workshop fight legacy code write unit testWorkshop fight legacy code write unit test
Workshop fight legacy code write unit test
 
Windows Phone Introduction
Windows Phone IntroductionWindows Phone Introduction
Windows Phone Introduction
 
Developing windows phone 7 application with silverlight
Developing windows phone 7 application with silverlightDeveloping windows phone 7 application with silverlight
Developing windows phone 7 application with silverlight
 
Top 100 .NET Interview Questions and Answers
Top 100 .NET Interview Questions and AnswersTop 100 .NET Interview Questions and Answers
Top 100 .NET Interview Questions and Answers
 
New in Visual Studio and TFS 2013
New in Visual Studio and TFS 2013New in Visual Studio and TFS 2013
New in Visual Studio and TFS 2013
 
Visual studio2012 tipsandtricks
Visual studio2012 tipsandtricksVisual studio2012 tipsandtricks
Visual studio2012 tipsandtricks
 

Domain Driven Design Introduction

  • 1. Domain Driven Design Phạm Tiến Hùng phamtienhung@vnpt.vn 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