l

2007年6月25日 星期一

Pattern Languages and Patterns

樣式語言的起源

樣式語言 (Pattern Language) 一詞,起源於 Christopher Alexander在1970年代前後對於建築領域所做的理論研究與實作 [1,2,3,4]。Alexander認為樣式 (Pattern) 可有效解決在特定建築領域中,一再重複出現的問題。Alexander期待建築樣式語言的存在,不僅對於建築師有意義,而是所有使用者(也就是一般的民眾) 皆可使用該樣式語言來建造一個有活力與生氣蓬勃的家園。樣式與樣式語言彼此相關但卻不可畫上等號,Alexander在[3]中詳細討論了兩者的關係。簡單地說,一個樣式是對於在特定環境與條件下,一再重複發生問題的解;而一個樣式語言,則是一群相關樣式的集合,在其中每個樣式彼此相互強化。

樣式語言不是正規語言,而是比較像自然語言[3]。Alexander在[1,3]中論述樣式語言的理論基礎,[2]為 Alexander 與其團隊依此理論基礎所建立的253個建築樣式。Alexander 對於樣式的實驗,紀錄於[5]中。

軟體社群與樣式語言

Alexander 對於樣式語言的研究,在1990年代初期,啟發了軟體社群對於應用樣式語言的興趣。在各種不同的軟體設計樣式文獻中,最為人們所熟知的,應首推GoF的設計樣式一書 [5]。迄今,軟體設計社群與工業界已經十分成功地應用亞氏的樣式語言觀念,且大量使用於軟體設計、軟體分析、軟體架構、軟體測試與軟體重整等。

從1994年起在北美所舉辦的 PLoP (Pattern Language of Programming) 研討會,已成為樣式社群發表與討論樣式的重要集會。現今,除北美外,相似的研討會亦在世界各地舉辦,其中包括:EuroPLoP、VikingPLoP、SugarLoafPLoP 與 KoalaPLoP 等。這些研討會所接受的論文,並不侷限於軟體設計,而包括了人機互動與教育領域等多樣化的應用。

其他社群對於樣式語言的應用

近年來,人機互動 (human-computer interaction, HCI) 社群也套用樣式來解決人機互動設計與介面可用性的問題。例如,Jennifer Tidwell 建立了超過50個人機介面設計樣式與10個樣式子語言[6]。她的研究廣泛地被認為是目前在人機介面設計中,最有企圖成為人機介面樣式語言的研究。Tidwell同時指出,軟體設計中的樣式,大部分都是從開發者的觀點出發,而不像 Alexander 原始的構想,由終端使用者的角度。這種終端使用者的觀點,並不表示軟體樣式是無用地。相反地,軟體樣式十分成功,而這樣的成功也吸引其他社群套用樣式語言。軟體社群由開發者的觀點來尋找樣式,使得終端使用者無法直接使用軟體樣式來設計軟體,而這正是亞氏對於樣式語言的期待-終端使用者可以直接使用樣式來從事設計。在HCI樣式中,大部分採用了終端使用者的觀點,而使得HCI樣式語言更接近亞氏的樣式語言。

此外,學習社群也使用樣式的觀念於教學法、教學設計與學習科技系統設計上。一個公開的教學法樣式網站已被建立,用以共享其樣式 [7]。

深入了解樣式與樣式語言

要了解樣式與樣式語言,最好的方式是閱讀 [2, 3] 這兩本書。另一個選擇則是閱讀最近出版的 Pattern-Oriented Software Architecture 5 (POSA 5) [8]。 這本書的內容就在探討 Pattern 與 Pattern Language 的關係。和 Alexander 的書所不同,POSA 5 主要以軟體的角度來探討兩者之間的關係。

參考資料:
  1. C. Alexander, Notes on the Synthesis of Form, Oxford University Press, 1970.
  2. C. Alexander, S. Ishikawa, M. Silverstein, M. Jacobson, I. Fiksdahl-King, and S. Angel, A Pattern Language, Oxford University Press, 1977.
  3. C. Alexander, The Timeless Way of Building, Oxford University Press, 1979.
  4. C. Alexander, M. Siverstein, S. Angel, S. Ishikawa, and D. Abrams, The Oregon Experiment, Oxford University Press, 1988.
  5. E. Gamma, R. Helms, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995.
  6. J. Tidwell, "Common Ground", http://www.mit.edu/~jtidwell/, 1999.
  7. Pedagogical Patterns, http://www.pedagogicalpatterns.org/.
  8. F. Buschmann, K. Henney, and D. C. Schmidt, Pattern Oriented Software Architecture Volume 5: On Patterns and Pattern Languages, Wiley, 2007.

1 則留言: