Slide 1

Slide 1 text

DDD The First 15 Years 精選文章分享 1

Slide 2

Slide 2 text

關於我 James Wang • Development Team 打雜軟體工程師。 • DDD Taiwan 核心志工之一。 • 曾於 Agile Meetup / Agile Tour / DDD Taiwan 社群分享。 • 出沒各社群,與大家一起學習成長。 2

Slide 3

Slide 3 text

你正在建構正確的軟體嗎? 3

Slide 4

Slide 4 text

4 challenged, 50% failed, 19% successful, 31% Project Success 2020 challenged failed successful Source: Review Standish Group – CHAOS challenged, 53% failed, 18% successful, 29% Project Success 2004 challenged failed successful

Slide 5

Slide 5 text

團隊面臨哪些挑戰呢? 5

Slide 6

Slide 6 text

團隊面臨的挑戰 PO / SA 對領域知識要有一定程度掌握 6

Slide 7

Slide 7 text

團隊面臨的挑戰 領域知識散落在各單位,整合不易。 7

Slide 8

Slide 8 text

團隊面臨的挑戰 PO / SA 與 Team 間如何有效溝通呢? 8

Slide 9

Slide 9 text

團隊面臨的挑戰 PO / SA 與 Team 間語言不一致。 9 API…… …DB… UI. &@$ #~+ DATA 客單價分析… 損益表… 功能急需…

Slide 10

Slide 10 text

團隊面臨的挑戰 Perception(認知) 不一致 10 請問,你看到什麼?

Slide 11

Slide 11 text

團隊面臨的挑戰 面對環境不斷的變動、不確定、複雜、與模糊。 11 VUCA 霧卡

Slide 12

Slide 12 text

上述的挑戰很困難 12

Slide 13

Slide 13 text

當面對越複雜領域,上述的挑戰更難解。 13

Slide 14

Slide 14 text

軟體開發本質是解決問題 14

Slide 15

Slide 15 text

首先需要理解問題 問題空間與解決空間 15 Source: Problem Space vs. Solution Space PK

Slide 16

Slide 16 text

問題空間與解決空間 妥協的藝術 16 業務人員 技術人員 妥協的藝術

Slide 17

Slide 17 text

問題空間與解決空間 透過工作坊協同合作面對問題 17 Together Impact Mapping User Story Mapping EVENTSTORMING Domain Storytelling Example Mapping Wardley Maps Aggregate Canvas

Slide 18

Slide 18 text

問題空間與解決空間 透過工作坊達成共識,建立統一語言。 18 4 1 2 3

Slide 19

Slide 19 text

問題空間與解決空間 以「探索」方式尋找和選擇解決方案 19 Good Idea Best Solution Solution Solution Solution

Slide 20

Slide 20 text

問題空間與解決空間 以「迭代」方式持續改善解決方案 20

Slide 21

Slide 21 text

DDD 包含上述概念,並給予具體指引與方針。 21

Slide 22

Slide 22 text

Domain Driven Design 指引與方針 Big Picture 22

Slide 23

Slide 23 text

Domain Driven Design 指引與方針 Whirlpool Process 23 Source: DDD_Model_Exploration_Whirlpool

Slide 24

Slide 24 text

Domain Driven Design 指引與方針 戰略流程 24 Complexity Domain UL Bounded Context UL Bounded Context UL Bounded Context U U D D Stakeholders Domain Experts Event Storming Domain Storytelling

Slide 25

Slide 25 text

Domain Driven Design 指引與方針 戰術設計模式 • Aggregate Root • Entity • Value Object • Domain Event • Domain Service • Application Service • Repository • …… 25

Slide 26

Slide 26 text

Domain Driven Design 指引與方針 結合其他好的開發方式 26

Slide 27

Slide 27 text

總結 DDD 的重要原則。 27

Slide 28

Slide 28 text

Domain Driven Design 首要原則 五大原則 • 在問題上達成共識 • 共同努力尋求解決方案 • 確保解決方案解決了核心問題 • 最佳化整體系統 • 成為團隊中積極的影響 28

Slide 29

Slide 29 text

總結,DDD 的整體思路是 匯聚人們,拆分軟體。 34

Slide 30

Slide 30 text

THANK YOU FOR LISTENING 35

Slide 31

Slide 31 text

參考資料 DDD 15 年章節 • PART1 精鍊出 DDD 的首要原則 – Scott Millet • PART3 藉由事件風暴發現限界上下文 – Alberto Brandolini • PART11 你正在建構正確的軟體嗎? – Alexey Zimarev • PART17 模型探索漩渦 – Kenny Baas-Schwegler 36