l

2014年12月4日 星期四

設計模式簡史(上)

Dec. 02 17:40~18:09

image

 

很多鄉民對設計模式(design pattern)的認識,來自於Erich Gamma、Richard Helm、Ralph Johnson與John Vlissides所撰寫的《Design Patterns: Elements of Reusable Object-Oriented Software;簡稱Design Patterns》這本書。由於作者有四個人,因此江湖人稱四人幫(Gang of Four;GoF)。書中所介紹的23個設計模式則稱為GoF設計模式 。

GoF設計模式這本書從1994年10月出版至今已超過20個年頭,經過這些年的演進,在軟體開發中套用模式已成為一種廣為流行的設計方法。學過GoF設計模式的鄉民可能都知道,設計模式的靈感是受到建築師Christopher Alexander的啟發。但至於Alexander本人做了哪些事,又是在怎樣的機緣之下影響到軟體開發社群,這段歷史就比較少人知道。本篇參考c2網站上面一篇名為〈History Of Patterns 〉的文章,回顧GoF設計模式起源的這段歷史,並補充說明該文章所提到的重要人物、組織與事件。

***

在軟體領域首先倡導始用模式的人並不是GoF,而是Ward CunninghamKent Beck。在1987年,Cunningham和Beck將Alexander所提出的模式方法套用在使用者介面設計,隨後Cunningham整理出5個模式—Window Per Task、Few Panes、Standard Panes、Nouns And Verbs與Short Menus,用來幫助初學者設計Smalltalk的使用者介面。

不知到鄉民們是否認識Cunningham和Beck?這兩位都是模式敏捷開發社群的先驅與名人。Cunningham還發明了Wiki與Fit自動化驗收測試框架,Beck則是終極編程(eXtreme Programming;XP)與測試驅動開發(Test-Driven Development;TDD)的提出者,以及JUnit單元測試框架的共同發明者。Beck還寫了兩本與模式相關的書—《Smalltalk Best Practice Patterns》與《Implementation Patterns》。

螢幕截圖 2014-12-02 17.57.16

***

Cunningham和Beck在1987年的OOPSLA 研討會中報告了他們套用模式的經驗,先介紹一下這個在物件導向領域很重要的研討會。OOPSLA—Object-Oriented Programming, Systems, Languages and Applications的簡稱,由計算機協會(Association for Computing Machinery;ACM)所舉辦的年度學術研討會,是物件導向技術的頂尖研討會。OOPSLA由1986年舉辦至2009年,2010年後改名為SPLASH — Systems, Programming, Languages and Applications: Software for Humanity,會議內容擴展到更多軟體相關議題,不在只侷限於物件導向技術。

話說雖然Cunningham和Beck費盡心力介紹模式,但因為當時沒有更多具體的模式可供參考,所以當下並沒有獲得與會者的立即認同。在此同時,Erich Gamma(GoF第一作者,後來和Beck一起設計了JUnit)正在準備他的博士論文,其中有一部份內容談及ET++的物件導向設計。Gamma認知到重複出現的設計結構是很重要的,但在當時卻不確定要用何種方式來記錄與溝通這些知識。

***

友藏內心獨白:考古真的不容易。

1 則留言: