SlideShare a Scribd company logo
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

大規模微服務導入 - #1, 從零開始的系統架構設計概觀
大規模微服務導入 - #1, 從零開始的系統架構設計概觀大規模微服務導入 - #1, 從零開始的系統架構設計概觀
大規模微服務導入 - #1, 從零開始的系統架構設計概觀
Andrew Wu
 
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計するドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
増田 亨
 
Agile meetuphsinchu201508 scrumvskanban
Agile meetuphsinchu201508 scrumvskanbanAgile meetuphsinchu201508 scrumvskanban
Agile meetuphsinchu201508 scrumvskanban
Jen-Chieh Ko
 
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
JustSystems Corporation
 
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
Junya Hayashi
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
増田 亨
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
NTT DATA Technology & Innovation
 
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探しリッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
増田 亨
 
Jenkins 再入門
Jenkins 再入門Jenkins 再入門
Jenkins 再入門
Jumpei Miyata
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
 
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技
Yoichi Toyota
 
ちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てるちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる
増田 亨
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
 
20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux
Takayoshi Tanaka
 
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1  ドメイン駆動設計の基本を理解する3週連続DDDその1  ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
 
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
A AOKI
 
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Masahito Zembutsu
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
 
Play with DockerでDocker学習環境を整えよう!
Play with DockerでDocker学習環境を整えよう!Play with DockerでDocker学習環境を整えよう!
Play with DockerでDocker学習環境を整えよう!
Hori Tasuku
 

What's hot (20)

大規模微服務導入 - #1, 從零開始的系統架構設計概觀
大規模微服務導入 - #1, 從零開始的系統架構設計概觀大規模微服務導入 - #1, 從零開始的系統架構設計概觀
大規模微服務導入 - #1, 從零開始的系統架構設計概觀
 
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計するドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
 
Agile meetuphsinchu201508 scrumvskanban
Agile meetuphsinchu201508 scrumvskanbanAgile meetuphsinchu201508 scrumvskanban
Agile meetuphsinchu201508 scrumvskanban
 
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
 
HTTP/2 入門
HTTP/2 入門HTTP/2 入門
HTTP/2 入門
 
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
 
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探しリッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
 
Jenkins 再入門
Jenkins 再入門Jenkins 再入門
Jenkins 再入門
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技
 
ちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てるちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux
 
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1  ドメイン駆動設計の基本を理解する3週連続DDDその1  ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
 
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
 
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
 
Play with DockerでDocker学習環境を整えよう!
Play with DockerでDocker学習環境を整えよう!Play with DockerでDocker学習環境を整えよう!
Play with DockerでDocker学習環境を整えよう!
 

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_published
teddysoft
 
說出一嘴好設計 1.1
說出一嘴好設計 1.1說出一嘴好設計 1.1
說出一嘴好設計 1.1
teddysoft
 
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) Compliance
Yi-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] 快快樂樂學DDD
Clark
 
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
Denodo
 
HKPC 行業專題培訓講座 , 雲計算 ~ 在零售業 (II) 實踐篇
HKPC 行業專題培訓講座, 雲計算 ~ 在零售業 (II) 實踐篇 HKPC 行業專題培訓講座, 雲計算 ~ 在零售業 (II) 實踐篇
HKPC 行業專題培訓講座 , 雲計算 ~ 在零售業 (II) 實踐篇
Dennis. Lee
 
軟體開發成功的秘訣
軟體開發成功的秘訣軟體開發成功的秘訣
軟體開發成功的秘訣
teddysoft
 
DDD引導
DDD引導DDD引導
DDD引導
國昭 張
 
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
 
Ria lqj
Ria lqjRia lqj
Ria lqj
huzilqj
 
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
 
003 How to write 8D Report
003 How to write 8D Report003 How to write 8D Report
003 How to write 8D Report
Fast SiC Semiconductor Inc.
 
.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
ligaoren
 

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-preview
teddysoft
 
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
teddysoft
 
從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發
teddysoft
 
當Scrum遇到Pattern
當Scrum遇到Pattern當Scrum遇到Pattern
當Scrum遇到Pattern
teddysoft
 
跟著Teddy讀Pattern
跟著Teddy讀Pattern跟著Teddy讀Pattern
跟著Teddy讀Pattern
teddysoft
 
洗白你的軟體架構
洗白你的軟體架構洗白你的軟體架構
洗白你的軟體架構
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周年-published
teddysoft
 
好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14
teddysoft
 
[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309
teddysoft
 
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: 從需求到實作