Enterprise face a
challenging environment
High customer expectations, fickleness
Low barriers to entry
Constant, rapid change and uncertainty
… More
Slide 7
Slide 7 text
Enterprise
Opportunity
Enterprise
Challenges
Slide 8
Slide 8 text
Way to deal with Complexity Problem Domain
Slide 9
Slide 9 text
Domain-Driven Design Can Help!
Slide 10
Slide 10 text
Domain-Driven Design 簡介
▪ 我們看看提出 DDD 概念的 Eric Evans 的解釋:
Tackling Complexity in the Heart of Software.
【軟體核心複雜度的解決方案】
Slide 11
Slide 11 text
Domain-Driven Design 價值
▪ DDD 其重要價值是有系統地解構複雜的問題。
▪ 什麼是複雜的問題?
The critical complexity of many software projects is in understanding
the domain itself.
【軟體開發過程中,最為關鍵複雜根本的原因是目標領域本身就錯綜複雜】
Slide 12
Slide 12 text
為什麼領域本身
錯綜複雜會是個
問題?
思考問題背後的問題!
Slide 13
Slide 13 text
Domain-Driven Design 解決複雜領域問題的概念
▪ 我們該如何面對複雜的領域?如何控制複雜呢?
Creative collaboration of software experts and domain experts.
【讓系統開發專家與領域專家協同合作】
Bounded Context(BC)
▪ DDD 核心最重要概念之一。
DDD deals with large
models by dividing them
into different Bounded
Contexts and being
explicit about their
interrelationships.
Slide 44
Slide 44 text
透過 Bounded Context Canvas 切分 Bounded
Context
Slide 45
Slide 45 text
團隊與領域專家合作優點
• 一同瞭解複雜的領域全貌。
• 將複雜領域拆分成較小且易於解決的 Bounded Context。
• 建立團隊 Ubiquitous Language。
A language structured around the domain model and used by all team
members to connect all the activities of the team with the software.
【一種圍繞領域模型構造的語言,所有團隊成員都使用該語言,將團隊所有
活動與系統聯繫起來。】
... within a bounded context.
【...在限界上下文的範圍內。 】
Slide 46
Slide 46 text
Ubiquitous Language(UL)
▪ DDD 核心最重要概念之一。
在臺灣,代表 OK 沒有問題的意思。
在巴西,這是很粗魯的手勢。
Bounded Context
Ubiquitous Language
Slide 47
Slide 47 text
Ubiquitous Language(UL)
Slide 48
Slide 48 text
DDD 戰略流程
Complexity
Domain
UL
Bounded
Context
UL
Bounded
Context
UL
Bounded
Context
U U
D
D
Stakeholders Domain Experts
Event
Storming
Domain
Storytelling
Ubiquitous
Language UL
UL
UL
U
D
D
Bounded
Context
Bounded
Context
Bounded
Context
Stackholders Domain Experts
Feedback
Refactoring
Coding
Red
Green
Refactoring
Modeling
U
Potentially Shippable
Product Increment