樣式語言 (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 主要以軟體的角度來探討兩者之間的關係。
參考資料:
- C. Alexander, Notes on the Synthesis of Form, Oxford University Press, 1970.
- C. Alexander, S. Ishikawa, M. Silverstein, M. Jacobson, I. Fiksdahl-King, and S. Angel, A Pattern Language, Oxford University Press, 1977.
- C. Alexander, The Timeless Way of Building, Oxford University Press, 1979.
- C. Alexander, M. Siverstein, S. Angel, S. Ishikawa, and D. Abrams, The Oregon Experiment, Oxford University Press, 1988.
- E. Gamma, R. Helms, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995.
- J. Tidwell, "Common Ground", http://www.mit.edu/~jtidwell/, 1999.
- Pedagogical Patterns, http://www.pedagogicalpatterns.org/.
- F. Buschmann, K. Henney, and D. C. Schmidt, Pattern Oriented Software Architecture Volume 5: On Patterns and Pattern Languages, Wiley, 2007.
如果不用翻墙也能访问,就完美了。
回覆刪除