Más contenido relacionado La actualidad más candente (20) Similar a DDD + Clean Architecture: 從需求到實作 (20) DDD + Clean Architecture: 從需求到實作3. • 實作過OOAD請舉手
• 聽過DDD請舉手
• 實作過DDD請舉手
• 聽過Clean Architecture請舉手
• 實作過Clean Architecture請舉手
• 以上皆是請舉手
Copyright© 2020 Teddysoft
8. • Boss-Driven Design (BDD)
• Use-Case Driven/ User Story Driven
• Test-Driven Design (TDD)
• Behavior-Driven Design (BDD)
• Domain-Driven Design (DDD)
Copyright© 2020 Teddysoft
12. • 開發軟體時專注於領域(domain)中的重要概念與
商業邏輯 (business logic),透過與領域專家
(domain expert)緊密溝通,共同建立領域模型
(domain model),再以此領域模行作為軟體實作
的基礎。
• 基本上與傳統物件導向分析與設計(OOAD)做法類
似,但實作細節不同。可視為一種OOAD的進階
版本,更適合當代分散式與反應式 (事件驅動) 的
系統開發 (Teddy個人看法) 。
Copyright© 2020 Teddysoft
14. Copyright© 2020 Teddysoft
• Model-Driven Design
• Ubiquitous Language
• Bounded Context
• Aggregate
《Notes on the synthesis of form》
18. • 困難點:
– Domain Expert VS Developer
– 講師需同時具備領域專業與開發專業
– Ubiquitous Language in Code
• How to verify?
• 嘗試:
– 2018: Monitoring System
• 成立 ezKanban team (前身為ezScrum team)
– 2019 and 2020: Kanban System
Copyright© 2020 Teddysoft
30. Write a failing
unit test
Make the
test pass
Refactor
Write a failing
acceptance
test for a use
case
1 2
3
0
OOAD VS Teddy’s DDD
Copyright@2020 Teddysoft
Design Model
Implementation
Model
After
Implementation
Code-First
OOAD
DDD+ES+CA+TDD
Domain Model
Use Case
Model
DDD
Domain Model
Event Storming
Clean Architecture
36. Copyright© 2020 Teddysoft
• 兩種類型的domain events:
– Bounded context之內
– 傳遞至bounded context之外
• 典型用途:
– 狀態同步
• eventual consistency
– Event sourcing
45. • DDD
– Aggregate狀態與domain event發送的一致性
– 決定Aggregate邊界。
– 跨越bounded-context的cross-cutting
concerns, 例如認證與存取控制。
• Clean Architecture
– Package by: Layer, Feature, Component?
Copyright© 2020 Teddysoft