SlideShare a Scribd company logo
1 of 49
Download to read offline
Teddy Chen
teddy@teddysoft.tw
http://teddy-chen-tw.blogspot.tw/
Sep. 03 2020 @ Asian PLoP 2020
Copyright@2020 Teddysoft
• 實作過OOAD請舉手
• 聽過DDD請舉手
• 實作過DDD請舉手
• 聽過Clean Architecture請舉手
• 實作過Clean Architecture請舉手
• 以上皆是請舉手
Copyright© 2020 Teddysoft
Copyright@2020 Teddysoft
Domain-Driven Design
何謂 Domain?
Copyright© 2020 Teddysoft
• 應用程式邏輯所圍繞的知識和活動範圍
• 翻成白話文就是:
– 在真實世界中,你的軟體所要解決的問題範圍
• 例如:
– 電子商務、醫療系統、保險系統、銀行系統、叫
車系統、訂位系統等。
Copyright© 2020 Teddysoft
Domain-Driven Design
何謂 Driven?
Copyright© 2020 Teddysoft
• 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
Domain-Driven Design
何謂 Design?
Copyright© 2020 Teddysoft
Copyright@2020 Teddysoft
Context
Form
Context
Form
Or
設計就是決定Form與Context的邊界
(設計就是決定你要設計什麼)
Copyright@2020 Teddysoft
Context
Form
force
force
force
force
force
Forces 形塑 Form
• 開發軟體時專注於領域(domain)中的重要概念與
商業邏輯 (business logic),透過與領域專家
(domain expert)緊密溝通,共同建立領域模型
(domain model),再以此領域模行作為軟體實作
的基礎。
• 基本上與傳統物件導向分析與設計(OOAD)做法類
似,但實作細節不同。可視為一種OOAD的進階
版本,更適合當代分散式與反應式 (事件驅動) 的
系統開發 (Teddy個人看法) 。
Copyright© 2020 Teddysoft
Copyright@2020 Teddysoft
Copyright© 2020 Teddysoft
• Model-Driven Design
• Ubiquitous Language
• Bounded Context
• Aggregate
《Notes on the synthesis of form》
覺得沒什麼特別的,沒有很大的動機讓自
己改變熟悉的OOAD開發方式
(因為沒有真的看懂+缺少應用Context)
Copyright@2020 Teddysoft
Copyright© 2020 Teddysoft
《Clean Architecture》, 2017
CA三原則
用DDD實作CA的Entities Layer,用CA
實作DDD的Layered Architecture
Copyright@2020 Teddysoft
《Domain-Driven Design: Tackling Complexity in the Heart of Software》
《Clean Architecture》
Tactical Design
• 困難點:
– 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
ezKanban
Copyright@2020 Teddysoft
Copyright© 2020 Teddysoft
2019
2020
用迭代與增量的方式建立
Domain Events (ES) 與Domain Model
Copyright@2020 Teddysoft
Domain Model Domain Events
(Event Storming)
Copyright@2020 Teddysoft
先有雞還是先有蛋?
《達摩祖師傳》
Copyright@2020 Teddysoft
Ubiquitous Language (1/2)
1. Card
2. Work Item
3. User Story
4. Task
5. Ticket
6. Issue
哪個名字好?
Copyright@2020 Teddysoft
Ubiquitous Language (2/2)
1. 垂直: Column, Stage, Step, Phase
2. 水平: Row, Lane, Swimlane
哪個名字好?
Copyright@2020 Teddysoft
Domain Model 的表達力 (1/2)
Source: https://leankit.com/
Domain model 如何表達複雜的看板?
Copyright@2020 Teddysoft
Domain Model 的表達力 (2/2)
目前版本
各種嘗試版本
Copyright@2020 Teddysoft
Domain Model with Aggregate
• 為什麼突然冒出TDD?
– 自然湧現
Copyright© 2020 Teddysoft
《Clean Architecture》
2
1
3
Copyright© 2020 Teddysoft
TDD: 每一個驗收測試都很像
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
Copyright© 2020 Teddysoft
Task-Based UI
CRUD-Based UI
Copyright© 2020 Teddysoft
Event Storming不再只是CRUD為主的領域事件
Copyright© 2020 Teddysoft
Command
Query
所有Command共用一組
Output/Presenter
在Event Storming圖上面替
Query補上ViewModel
(ReadModel) 與UI畫面
Copyright© 2020 Teddysoft
橋歸橋,路歸路
《CQRS》
Copyright© 2020 Teddysoft
把 “picture that explains everything”
弄得更清楚
Command
Query (可以不套用DDD)
《Introducing EventStorming》
Copyright© 2020 Teddysoft
• 兩種類型的domain events:
– Bounded context之內
– 傳遞至bounded context之外
• 典型用途:
– 狀態同步
• eventual consistency
– Event sourcing
Copyright© 2020 Teddysoft
Domain Event同步不同Aggregate的狀態
Copyright© 2020 Teddysoft
用Domain Event支援同時多人使用相
同看板的狀態同步
Copyright© 2020 Teddysoft
《Clean Architecture》
Entities與Use Cases
乾淨即可,第三層
Interface Adapter可
以直接與框架耦合
Copyright© 2020 Teddysoft
透過依賴反轉達到CA的相依性原則
Copyright© 2020 Teddysoft
Interface Adapter之後就算了 XD
Rest Controller直接與框架 (SpringBoot) 耦合
Copyright© 2020 Teddysoft
Account
Management
Team
Management
Kanban
Management
Reporting
Clean Architecture建議:好的架構應該支持「延遲佈署決策」
Copyright© 2020 Teddysoft
不需要為了趕流行硬套微服務
Copyright@2020 Teddysoft
• DDD
– Aggregate狀態與domain event發送的一致性
– 決定Aggregate邊界。
– 跨越bounded-context的cross-cutting
concerns, 例如認證與存取控制。
• Clean Architecture
– Package by: Layer, Feature, Component?
Copyright© 2020 Teddysoft
Copyright@2020 Teddysoft
Copyright@2020 Teddysoft
請看 Miro 與 IntelliJ
Copyright© 2020 Teddysoft
ULIC搭配Clean Architecture,
可減低軟體開發的 認知負荷
(cognitive load),達到讓軟體
變軟的目的
• Miro很適合用來做event storming
• UI雖是細節但卻是很重要的細節
• 不是所有系統或BC都需要DDD
• 搞笑談軟工部落格
– http://teddy-chen-tw.blogspot.com
• 搞笑談軟工Facebook
– https://www.facebook.com/groups/teddy.tw
• 泰迪軟體官方網站
– http://teddysoft.tw
Copyright@2020 Teddysoft

More Related Content

What's hot

DDD TW Conference 2020 與RD一起跳坑DDD (20201127)
DDD TW Conference 2020 與RD一起跳坑DDD (20201127)DDD TW Conference 2020 與RD一起跳坑DDD (20201127)
DDD TW Conference 2020 與RD一起跳坑DDD (20201127)Sylvia Yang
 
大規模微服務導入 - #1, 從零開始的系統架構設計概觀
大規模微服務導入 - #1, 從零開始的系統架構設計概觀大規模微服務導入 - #1, 從零開始的系統架構設計概觀
大規模微服務導入 - #1, 從零開始的系統架構設計概觀Andrew Wu
 
DevOps的神鬼奇航
DevOps的神鬼奇航DevOps的神鬼奇航
DevOps的神鬼奇航Edward Kuo
 
2019-03-13-ddd taiwan-community-iddd-studygroup-2nd
2019-03-13-ddd taiwan-community-iddd-studygroup-2nd2019-03-13-ddd taiwan-community-iddd-studygroup-2nd
2019-03-13-ddd taiwan-community-iddd-studygroup-2ndFong Liou
 
從零開始做架構圖
從零開始做架構圖從零開始做架構圖
從零開始做架構圖Philip Zheng
 
DDD架構設計
DDD架構設計DDD架構設計
DDD架構設計國昭 張
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについてkumake
 
漫談重構
漫談重構漫談重構
漫談重構teddysoft
 
91APP: 從 "零" 開始的 DevOps
91APP: 從 "零" 開始的 DevOps91APP: 從 "零" 開始的 DevOps
91APP: 從 "零" 開始的 DevOpsAndrew Wu
 
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ良質なコードを高速に書くコツ
良質なコードを高速に書くコツShunji Konishi
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかKoichiro Matsuoka
 
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドラインドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン増田 亨
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方増田 亨
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD増田 亨
 
微服務對IT人員的衝擊
微服務對IT人員的衝擊微服務對IT人員的衝擊
微服務對IT人員的衝擊Philip Zheng
 
Scrum and xp from the trenches (1st edition, Chinese)
Scrum and xp from the trenches   (1st edition, Chinese)Scrum and xp from the trenches   (1st edition, Chinese)
Scrum and xp from the trenches (1st edition, Chinese)Jen-Chieh Ko
 
ドメイン駆動設計 at DDD.rb #5
ドメイン駆動設計 at DDD.rb #5ドメイン駆動設計 at DDD.rb #5
ドメイン駆動設計 at DDD.rb #5啓 杉本
 
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)Masaya Tahara
 
ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀増田 亨
 

What's hot (20)

DDD TW Conference 2020 與RD一起跳坑DDD (20201127)
DDD TW Conference 2020 與RD一起跳坑DDD (20201127)DDD TW Conference 2020 與RD一起跳坑DDD (20201127)
DDD TW Conference 2020 與RD一起跳坑DDD (20201127)
 
大規模微服務導入 - #1, 從零開始的系統架構設計概觀
大規模微服務導入 - #1, 從零開始的系統架構設計概觀大規模微服務導入 - #1, 從零開始的系統架構設計概觀
大規模微服務導入 - #1, 從零開始的系統架構設計概觀
 
DevOps的神鬼奇航
DevOps的神鬼奇航DevOps的神鬼奇航
DevOps的神鬼奇航
 
2019-03-13-ddd taiwan-community-iddd-studygroup-2nd
2019-03-13-ddd taiwan-community-iddd-studygroup-2nd2019-03-13-ddd taiwan-community-iddd-studygroup-2nd
2019-03-13-ddd taiwan-community-iddd-studygroup-2nd
 
從零開始做架構圖
從零開始做架構圖從零開始做架構圖
從零開始做架構圖
 
DDD架構設計
DDD架構設計DDD架構設計
DDD架構設計
 
【BS1】What’s new in visual studio 2022 and c# 10
【BS1】What’s new in visual studio 2022 and c# 10【BS1】What’s new in visual studio 2022 and c# 10
【BS1】What’s new in visual studio 2022 and c# 10
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
漫談重構
漫談重構漫談重構
漫談重構
 
91APP: 從 "零" 開始的 DevOps
91APP: 從 "零" 開始的 DevOps91APP: 從 "零" 開始的 DevOps
91APP: 從 "零" 開始的 DevOps
 
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ良質なコードを高速に書くコツ
良質なコードを高速に書くコツ
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
 
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドラインドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
 
微服務對IT人員的衝擊
微服務對IT人員的衝擊微服務對IT人員的衝擊
微服務對IT人員的衝擊
 
Scrum and xp from the trenches (1st edition, Chinese)
Scrum and xp from the trenches   (1st edition, Chinese)Scrum and xp from the trenches   (1st edition, Chinese)
Scrum and xp from the trenches (1st edition, Chinese)
 
ドメイン駆動設計 at DDD.rb #5
ドメイン駆動設計 at DDD.rb #5ドメイン駆動設計 at DDD.rb #5
ドメイン駆動設計 at DDD.rb #5
 
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
 
ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀
 

Similar to DDD + Clean Architecture: 從需求到實作

Taobao数据库这5年
Taobao数据库这5年Taobao数据库这5年
Taobao数据库这5年yp_fangdong
 
Bdd atdd sbe_tdd_ddd_published
Bdd atdd sbe_tdd_ddd_publishedBdd atdd sbe_tdd_ddd_published
Bdd atdd sbe_tdd_ddd_publishedteddysoft
 
說出一嘴好設計 1.1
說出一嘴好設計 1.1說出一嘴好設計 1.1
說出一嘴好設計 1.1teddysoft
 
2T 软件解决方案责任有限公司
2T 软件解决方案责任有限公司2T 软件解决方案责任有限公司
2T 软件解决方案责任有限公司Brrs Nguyen(2TS)
 
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱TIM WANG
 
A Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) ComplianceA Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) ComplianceYi-Feng Tzeng
 
開發學校雲端服務的奇技淫巧(Tips for Building Third-Party School Service)
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
開發學校雲端服務的奇技淫巧(Tips for Building Third-Party School Service)Sheng-Hao Ma
 
[DDD] 快快樂樂學DDD
[DDD] 快快樂樂學DDD[DDD] 快快樂樂學DDD
[DDD] 快快樂樂學DDDClark
 
How Enterprises Leverage Data to Overcome Business Challenges During Coronavirus
How Enterprises Leverage Data to Overcome Business Challenges During CoronavirusHow Enterprises Leverage Data to Overcome Business Challenges During Coronavirus
How Enterprises Leverage Data to Overcome Business Challenges During CoronavirusDenodo
 
HKPC 行業專題培訓講座 , 雲計算 ~ 在零售業 (II) 實踐篇
HKPC 行業專題培訓講座, 雲計算 ~ 在零售業 (II) 實踐篇 HKPC 行業專題培訓講座, 雲計算 ~ 在零售業 (II) 實踐篇
HKPC 行業專題培訓講座 , 雲計算 ~ 在零售業 (II) 實踐篇 Dennis. Lee
 
軟體開發成功的秘訣
軟體開發成功的秘訣軟體開發成功的秘訣
軟體開發成功的秘訣teddysoft
 
Catia逆向工程應用
Catia逆向工程應用Catia逆向工程應用
Catia逆向工程應用Jimmy Chang
 
Responsive Web Design [rebuild as design]
Responsive Web Design [rebuild as design]Responsive Web Design [rebuild as design]
Responsive Web Design [rebuild as design]Benny Chak
 
赵泽欣 - 淘宝网前端应用与发展
赵泽欣 - 淘宝网前端应用与发展赵泽欣 - 淘宝网前端应用与发展
赵泽欣 - 淘宝网前端应用与发展d0nn9n
 
HKPC 行業專題培訓講座 - 雲計算 在零售業 (I) 基礎篇
HKPC 行業專題培訓講座 - 雲計算 在零售業 (I) 基礎篇HKPC 行業專題培訓講座 - 雲計算 在零售業 (I) 基礎篇
HKPC 行業專題培訓講座 - 雲計算 在零售業 (I) 基礎篇Dennis. Lee
 
Don’t Make Me Think—PPT设计中的形象化表达_田士庆(小田).pps
Don’t Make Me Think—PPT设计中的形象化表达_田士庆(小田).ppsDon’t Make Me Think—PPT设计中的形象化表达_田士庆(小田).pps
Don’t Make Me Think—PPT设计中的形象化表达_田士庆(小田).ppsshen wannian
 
.net framework from 1.0 -> 4.0
.net framework from 1.0 -> 4.0.net framework from 1.0 -> 4.0
.net framework from 1.0 -> 4.0ligaoren
 

Similar to DDD + Clean Architecture: 從需求到實作 (20)

Taobao数据库这5年
Taobao数据库这5年Taobao数据库这5年
Taobao数据库这5年
 
Bdd atdd sbe_tdd_ddd_published
Bdd atdd sbe_tdd_ddd_publishedBdd atdd sbe_tdd_ddd_published
Bdd atdd sbe_tdd_ddd_published
 
說出一嘴好設計 1.1
說出一嘴好設計 1.1說出一嘴好設計 1.1
說出一嘴好設計 1.1
 
2T 软件解决方案责任有限公司
2T 软件解决方案责任有限公司2T 软件解决方案责任有限公司
2T 软件解决方案责任有限公司
 
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
 
A Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) ComplianceA Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) Compliance
 
開發學校雲端服務的奇技淫巧(Tips for Building Third-Party School Service)
開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)開發學校雲端服務的奇技淫巧(Tips for Building  Third-Party School Service)
開發學校雲端服務的奇技淫巧(Tips for Building Third-Party School Service)
 
[DDD] 快快樂樂學DDD
[DDD] 快快樂樂學DDD[DDD] 快快樂樂學DDD
[DDD] 快快樂樂學DDD
 
How Enterprises Leverage Data to Overcome Business Challenges During Coronavirus
How Enterprises Leverage Data to Overcome Business Challenges During CoronavirusHow Enterprises Leverage Data to Overcome Business Challenges During Coronavirus
How Enterprises Leverage Data to Overcome Business Challenges During Coronavirus
 
HKPC 行業專題培訓講座 , 雲計算 ~ 在零售業 (II) 實踐篇
HKPC 行業專題培訓講座, 雲計算 ~ 在零售業 (II) 實踐篇 HKPC 行業專題培訓講座, 雲計算 ~ 在零售業 (II) 實踐篇
HKPC 行業專題培訓講座 , 雲計算 ~ 在零售業 (II) 實踐篇
 
軟體開發成功的秘訣
軟體開發成功的秘訣軟體開發成功的秘訣
軟體開發成功的秘訣
 
DDD引導
DDD引導DDD引導
DDD引導
 
Catia逆向工程應用
Catia逆向工程應用Catia逆向工程應用
Catia逆向工程應用
 
Responsive Web Design [rebuild as design]
Responsive Web Design [rebuild as design]Responsive Web Design [rebuild as design]
Responsive Web Design [rebuild as design]
 
赵泽欣 - 淘宝网前端应用与发展
赵泽欣 - 淘宝网前端应用与发展赵泽欣 - 淘宝网前端应用与发展
赵泽欣 - 淘宝网前端应用与发展
 
Ria lqj
Ria lqjRia lqj
Ria lqj
 
HKPC 行業專題培訓講座 - 雲計算 在零售業 (I) 基礎篇
HKPC 行業專題培訓講座 - 雲計算 在零售業 (I) 基礎篇HKPC 行業專題培訓講座 - 雲計算 在零售業 (I) 基礎篇
HKPC 行業專題培訓講座 - 雲計算 在零售業 (I) 基礎篇
 
Don’t Make Me Think—PPT设计中的形象化表达_田士庆(小田).pps
Don’t Make Me Think—PPT设计中的形象化表达_田士庆(小田).ppsDon’t Make Me Think—PPT设计中的形象化表达_田士庆(小田).pps
Don’t Make Me Think—PPT设计中的形象化表达_田士庆(小田).pps
 
003 How to write 8D Report
003 How to write 8D Report003 How to write 8D Report
003 How to write 8D Report
 
.net framework from 1.0 -> 4.0
.net framework from 1.0 -> 4.0.net framework from 1.0 -> 4.0
.net framework from 1.0 -> 4.0
 

More from teddysoft

Dci vs aggregate_dddtw_2021-0.3-preview
Dci vs aggregate_dddtw_2021-0.3-previewDci vs aggregate_dddtw_2021-0.3-preview
Dci vs aggregate_dddtw_2021-0.3-previewteddysoft
 
Agile the timeless way of software development-2019-05-17-v1.2-published
Agile the timeless way of software development-2019-05-17-v1.2-publishedAgile the timeless way of software development-2019-05-17-v1.2-published
Agile the timeless way of software development-2019-05-17-v1.2-publishedteddysoft
 
從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發teddysoft
 
當Scrum遇到Pattern
當Scrum遇到Pattern當Scrum遇到Pattern
當Scrum遇到Patternteddysoft
 
跟著Teddy讀Pattern
跟著Teddy讀Pattern跟著Teddy讀Pattern
跟著Teddy讀Patternteddysoft
 
洗白你的軟體架構
洗白你的軟體架構洗白你的軟體架構
洗白你的軟體架構teddysoft
 
如何學好設計模式
如何學好設計模式如何學好設計模式
如何學好設計模式teddysoft
 
重構三兩事
重構三兩事重構三兩事
重構三兩事teddysoft
 
了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)teddysoft
 
從五個小故事看敏捷開發精神
從五個小故事看敏捷開發精神從五個小故事看敏捷開發精神
從五個小故事看敏捷開發精神teddysoft
 
[演講] Scrum導入經驗分享
[演講] Scrum導入經驗分享[演講] Scrum導入經驗分享
[演講] Scrum導入經驗分享teddysoft
 
那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-published那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-publishedteddysoft
 
好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14teddysoft
 
[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309teddysoft
 
Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材teddysoft
 
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題teddysoft
 
Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術teddysoft
 
模式入門第一堂課: 30分鐘寫出一個模式
模式入門第一堂課: 30分鐘寫出一個模式模式入門第一堂課: 30分鐘寫出一個模式
模式入門第一堂課: 30分鐘寫出一個模式teddysoft
 

More from teddysoft (18)

Dci vs aggregate_dddtw_2021-0.3-preview
Dci vs aggregate_dddtw_2021-0.3-previewDci vs aggregate_dddtw_2021-0.3-preview
Dci vs aggregate_dddtw_2021-0.3-preview
 
Agile the timeless way of software development-2019-05-17-v1.2-published
Agile the timeless way of software development-2019-05-17-v1.2-publishedAgile the timeless way of software development-2019-05-17-v1.2-published
Agile the timeless way of software development-2019-05-17-v1.2-published
 
從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發
 
當Scrum遇到Pattern
當Scrum遇到Pattern當Scrum遇到Pattern
當Scrum遇到Pattern
 
跟著Teddy讀Pattern
跟著Teddy讀Pattern跟著Teddy讀Pattern
跟著Teddy讀Pattern
 
洗白你的軟體架構
洗白你的軟體架構洗白你的軟體架構
洗白你的軟體架構
 
如何學好設計模式
如何學好設計模式如何學好設計模式
如何學好設計模式
 
重構三兩事
重構三兩事重構三兩事
重構三兩事
 
了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)
 
從五個小故事看敏捷開發精神
從五個小故事看敏捷開發精神從五個小故事看敏捷開發精神
從五個小故事看敏捷開發精神
 
[演講] Scrum導入經驗分享
[演講] Scrum導入經驗分享[演講] Scrum導入經驗分享
[演講] Scrum導入經驗分享
 
那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-published那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-published
 
好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14
 
[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309
 
Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材
 
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
 
Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術
 
模式入門第一堂課: 30分鐘寫出一個模式
模式入門第一堂課: 30分鐘寫出一個模式模式入門第一堂課: 30分鐘寫出一個模式
模式入門第一堂課: 30分鐘寫出一個模式
 

DDD + Clean Architecture: 從需求到實作