SlideShare uma empresa Scribd logo
1 de 65
Teddy Chen
teddy@teddysoft.tw
http://teddy-chen-tw.blogspot.tw/
Feb. 20 2014
• 超過18年軟體開發經驗。2012年7月
成立泰迪軟體,從事敏捷開發顧問、
教育訓練、軟體工具導入等服務。
• 2012年6月,出版暢銷書「笑談軟體
工程:敏捷方法的逆襲」,獲iTHome
週刊推薦為2012年iT人必看好書。
• 2009年取得Certified ScrumMaster。
• 2008年取得台北科技大學資工博士。
• 2007年起經營「搞笑談軟工」部落格。
Copyright@2014 Teddysoft
1994 年
GoF Design Patterns

Copyright@2014 Teddysoft
1936 : 奧地利
1958: 英國美國
Notes on the Synthesis of Form,
1964 (-1936 = 28)
The Oregon Experiment, 1975
A Pattern Language: Towns,
Buildings, Construction, 1977
The Timeless Way of Building,
1979 (-1936 = 43)

1979-1964 = 15
Copyright@2014 Teddysoft
1979~1994
這15年之間發生了什麼事?

Copyright@2014 Teddysoft
1964

《Notes on the Synthesis of Form》

1975
1977
1979

《The Oregon Experiment》
《 A Pattern Language》
《 The Timeless Way of Building》

1987
OOPSLA 87

Using Pattern Language for ObjectOriented Programs

1990

TOOLS 90,ECOOP/OOPSLA 90

1991

《 Advanced C++ Programming
Styles and Idioms》

1992

OOPSLA 91 Workshop
OOPSLA 92 Workshop

1993
1994
2001

Kent Beck
Ward Cunningham
Bruce Andersen
(Erich Gamma, Richard Helm)

Jim Coplien

Bruce Andersen
(Erich Gamma, Richard Helm,
Ralph Johnson, and John Vlissides)

Kent Beck, Grady Booch, etc.

Hillside Group
First PLoP Conference
《 Design Patterns》

Ward Cunningham, Ralph Johnson
GoF
《物件導向設計模式 Design Patterns》
葉秉哲

2004

10th PLoP Conference

2014

C. C. Agile Sprint 18
Copyright@2014 Teddysoft

Teddy, Kay參加
鄉民 XD
1994~2014
這20年之間又發生了什麼事?

Copyright@2014 Teddysoft
人家已經上太空
我們還在殺豬公
殺
迷之音: 上太空就不用殺豬公了嗎 XD

Copyright@2014 Teddysoft
1. The Timeless Way

Process, it cannot be attained
Pattern of event, geometric
patterns, cannot be made,
can only be generated

2. Quality (QWAN)

3. Gate

Pattern language

4. Way

Single mind, distributed acts, no
drawing, unfolding, on pattern at a
time, repair

5. The Kernel of the Way

Learning the disciple– and
shedding it

Copyright@2014 Teddysoft
茶道

政治

劍道/武術

繪畫

建築
Copyright@2014 Teddysoft

家庭

捷運

軟體開發
永恆之道只可透過流程
自行產生,不可強取

Copyright@2014 Teddysoft
茶道

政治

劍道/武術

繪畫

建築
Copyright@2014 Teddysoft

家庭

捷運

軟體開發
Quality Without A Name
(QWAN)

Copyright@2014 Teddysoft
說到「美」,你
會想到誰?

Copyright@2014 Teddysoft
Copyright@2014 Teddysoft
台鐵天使 餵無
手伯吃便當 10
萬人按讚

Copyright@2014 Teddysoft
Copyright@2014 Teddysoft
Copyright@2014 Teddysoft
請定義「幸福」

Copyright@2014 Teddysoft
問題:既然無法命名,要
如何描述與溝通無名特質?

Copyright@2014 Teddysoft
透過觀察Pattern (模式)
來得知特質的有無

Copyright@2014 Teddysoft
來源:http://zh.wikipedia.org/wiki/File:Magnet0873.png

Copyright@2014 Teddysoft
Copyright@2014 Teddysoft
組成建築、城市的特定模式可以是
有活力的,也可以是死氣沉沉的
具有越多有活力的模式,就越具有
無名特質的自我維持特性

Copyright@2014 Teddysoft
茶道

政治

劍道/武術

繪畫

建築
Copyright@2014 Teddysoft

家庭

捷運

軟體開發
建立領域相關的Pattern
Language

Copyright@2014 Teddysoft
Copyright@2014 Teddysoft
Pattern  單字
Pattern Language 句子

Copyright@2014 Teddysoft
一個Pattern解決一個特定的(小)問題
好幾個Pattern形成Pattern Language
便可解決較大的問題

Copyright@2014 Teddysoft
茶道

政治

劍道/武術

繪畫

建築
Copyright@2014 Teddysoft

家庭

捷運

軟體開發
•
•
•
•
•

分散式行動
單一心智
不須繁複設計圖
一次一個模式的展開過程
修復
這不是XP,什麼才是XP?
Copyright@2014 Teddysoft
茶道

政治

劍道/武術

繪畫

建築
Copyright@2014 Teddysoft

家庭

捷運

軟體開發
何本明菩
處來鏡提
惹無亦本
塵一非無
埃物台樹

PK

火頭僧—慧能禪師
(文盲)
Copyright@2014 Teddysoft

勿
使
惹
塵
埃

時
時
勤
拂
拭

心
如
明
鏡
台

身
是
菩
提
樹

大弟子神秀大師
直接由Force產生設計

《Notes on the Synthesis of Form》

Copyright@2014 Teddysoft
1. 世上存在某種永恆不變之道

此道只可透過流程自行產生,不可強取

2. 它具有某些無法命名的特質

透過觀察Pattern來得知特質的有無

3. 以PL作為求道的大門

建立領域相關的Pattern language

4. 實踐與套用PL

單一心智、分散式行動, 不須繁複設計
圖, 一次一個模式的展開過程, 修復

5. 最後,忘掉PL才可真正得道

學習方法—然後忘記它

Copyright@2014 Teddysoft
Copyright@2014 Teddysoft
A pattern is a solution to a problem
in a context.

A pattern is a proven solution to a
recurring problem in a specific
context, and more.
Copyright@2014 Teddysoft
欲知詳情,請報名參加:
Design Patterns這樣學就會了:入門實作班

Design Patterns這樣學就會了:進階實作班

Copyright@2014 Teddysoft
Copyright@2014 Teddysoft
1.
2.
3.
4.
5.

Window Per Task
Few Panes Per Window
Standard Panes
Short Menus
Nouns and Verbs

Copyright@2014 Teddysoft
Copyright@2014 Teddysoft
Copyright@2014 Teddysoft
Copyright@2014 Teddysoft
Copyright@2014 Teddysoft
Copyright@2014 Teddysoft
Copyright@2014 Teddysoft
Client
Type A

Server

Database

Copyright@2014 Teddysoft

Device B

Device C

Client
Type D
UI

Client
Type B
Client
Type C

User

Device A

Device D
<client>

<server>
User

Server

Client
Type A

Device A

Client
Type B

Device B

<client>

<client>

Client
Type C

Device C

<server>

<server>

Client
Type D

Device D

UI

<client>

Database

<server>

<client>

Copyright@2014 Teddysoft

<server>
<client>

User

Server

Device A

Client
Type B

<server>

Client
Type A

Device B

Plug-in

<client>

<client>

Client
Type C

<server>

<server>

Client
Type D

UI
<client>

Plug
-in

Device C

Device D

Database
<server>

<client>

Copyright@2014 Teddysoft

<server>
<client>

User

Server

Device A

Client
Type B

<server>

Client
Type A

Device B

Plug-in

<client>

<client>

Client
Type C

<server>

<server>

Client
Type D

UI
<client>

ORMapping

ORMapping

Plug
-in

Device C

Device D

Database
<server>

<client>

Copyright@2014 Teddysoft

<server>
<client>
State
Observer
Command …

User

Server

Device A

Client
Type B

<server>

Client
Type A

Device B

Plug-in
<client>

<client>

Client
Type C

<server>

<server>

Client
Type D

UI

<client>

ORMapping

ORMapping

Plug
-in

Device C

Device D

Database

<server>

<client>
Copyright@2014 Teddysoft

<server>
維護社會治安不僅是警察的責任

維持可擴充的軟體架構也不僅是架構師的責任
如果人人都是架構師,如何避免架構被改壞?

Copyright@2013 Teddysoft
問題:我只是要開發軟體,
又不是要出家,為什麼要知
道這一堆奇奇怪怪的東西?

Copyright@2014 Teddysoft
因為我們都是人

Copyright@2014 Teddysoft
而且是資訊人

Copyright@2014 Teddysoft
The Timeless Way
of Programming

Copyright@2014 Teddysoft
練拳不練功

到老一場空

練功不輕鬆

到老養生終

Copyright@2014 Teddysoft
• Patterns and Software: Essential Concepts and
Terminology by Brad Appleton
• History Of Patterns
– http://c2.com/cgi-bin/wiki?HistoryOfPatterns

• The Timeless Way of Building
• Kent Beck、Ward Cunningham、Christopher
Alexander、台鐵天使等照片節錄自網路

Copyright@2014 Teddysoft
Copyright@2014 Teddysoft

66

Mais conteúdo relacionado

Destaque

從 Classes 到 Objects: 那些 OOP 教我的事
從 Classes 到 Objects: 那些 OOP 教我的事從 Classes 到 Objects: 那些 OOP 教我的事
從 Classes 到 Objects: 那些 OOP 教我的事
Wen-Tien Chang
 
Intro to Project Calico: a pure layer 3 approach to scale-out networking
Intro to Project Calico: a pure layer 3 approach to scale-out networkingIntro to Project Calico: a pure layer 3 approach to scale-out networking
Intro to Project Calico: a pure layer 3 approach to scale-out networking
Packet
 

Destaque (20)

重構三兩事
重構三兩事重構三兩事
重構三兩事
 
好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14
 
[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309
 
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
 
了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)
 
Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術
 
從 Classes 到 Objects: 那些 OOP 教我的事
從 Classes 到 Objects: 那些 OOP 教我的事從 Classes 到 Objects: 那些 OOP 教我的事
從 Classes 到 Objects: 那些 OOP 教我的事
 
Behavior Driven Development on C.C.Agile
Behavior Driven Development on C.C.AgileBehavior Driven Development on C.C.Agile
Behavior Driven Development on C.C.Agile
 
ScrumMaster 的吃飯傢伙 – 引導出個夢幻團隊 Building a Dream Team with Facilitation
ScrumMaster 的吃飯傢伙 – 引導出個夢幻團隊 Building a Dream Team with FacilitationScrumMaster 的吃飯傢伙 – 引導出個夢幻團隊 Building a Dream Team with Facilitation
ScrumMaster 的吃飯傢伙 – 引導出個夢幻團隊 Building a Dream Team with Facilitation
 
Seeing system patterns in organizational coaching
Seeing system patterns in organizational coachingSeeing system patterns in organizational coaching
Seeing system patterns in organizational coaching
 
空手、緊握、到放手 – 敏捷路上學到的5件事
空手、緊握、到放手 – 敏捷路上學到的5件事 空手、緊握、到放手 – 敏捷路上學到的5件事
空手、緊握、到放手 – 敏捷路上學到的5件事
 
Intro to Project Calico: a pure layer 3 approach to scale-out networking
Intro to Project Calico: a pure layer 3 approach to scale-out networkingIntro to Project Calico: a pure layer 3 approach to scale-out networking
Intro to Project Calico: a pure layer 3 approach to scale-out networking
 
Bdd atdd sbe_tdd_ddd_published
Bdd atdd sbe_tdd_ddd_publishedBdd atdd sbe_tdd_ddd_published
Bdd atdd sbe_tdd_ddd_published
 
淺談 Startup 公司的軟體開發流程 v2
淺談 Startup 公司的軟體開發流程 v2淺談 Startup 公司的軟體開發流程 v2
淺談 Startup 公司的軟體開發流程 v2
 
用十分鐘搞懂 《系統分析、軟體工程、專案管理與設計模式》
用十分鐘搞懂   《系統分析、軟體工程、專案管理與設計模式》用十分鐘搞懂   《系統分析、軟體工程、專案管理與設計模式》
用十分鐘搞懂 《系統分析、軟體工程、專案管理與設計模式》
 
用20分鐘搞懂 《系統分析、軟體工程、專案管理與設計模式》
用20分鐘搞懂   《系統分析、軟體工程、專案管理與設計模式》用20分鐘搞懂   《系統分析、軟體工程、專案管理與設計模式》
用20分鐘搞懂 《系統分析、軟體工程、專案管理與設計模式》
 
深入淺出C語言
深入淺出C語言深入淺出C語言
深入淺出C語言
 
那些 Functional Programming 教我的事
那些 Functional Programming 教我的事那些 Functional Programming 教我的事
那些 Functional Programming 教我的事
 
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
 
C.C. Agile#30 – Coding Dojo – Prepared Kata
C.C. Agile#30 – Coding Dojo – Prepared KataC.C. Agile#30 – Coding Dojo – Prepared Kata
C.C. Agile#30 – Coding Dojo – Prepared Kata
 

Mais de teddysoft

Mais de teddysoft (10)

Dci vs aggregate_dddtw_2021-0.3-16-9
Dci vs aggregate_dddtw_2021-0.3-16-9Dci vs aggregate_dddtw_2021-0.3-16-9
Dci vs aggregate_dddtw_2021-0.3-16-9
 
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
 
DDD + Clean Architecture: 從需求到實作
DDD + Clean Architecture: 從需求到實作DDD + Clean Architecture: 從需求到實作
DDD + Clean Architecture: 從需求到實作
 
漫談重構
漫談重構漫談重構
漫談重構
 
Pattern based problem solving-published
Pattern based problem solving-publishedPattern based problem solving-published
Pattern based problem solving-published
 
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看敏捷開發
 
說出一嘴好設計 1.1
說出一嘴好設計 1.1說出一嘴好設計 1.1
說出一嘴好設計 1.1
 
跟著Teddy讀Pattern
跟著Teddy讀Pattern跟著Teddy讀Pattern
跟著Teddy讀Pattern
 
洗白你的軟體架構
洗白你的軟體架構洗白你的軟體架構
洗白你的軟體架構
 

那一夜我們說Pattern design patterns 20周年-published