架構(Architecture)(也有被稱為體系結構的)是軟件設計中非常重要的一個環節。軟件開發的過程中只要需求和架構確定之后,這個軟件就基本上可以定型了。這就好比骨骼確定了,這個人的體形就不會有很大的變化。因此我選擇了架構設計來討論敏捷軟件開發(需求我已經寫過了)。我們在前面討論過超集和子集的概念,因此我們接下去要討論的架構設計也是一個很小的子集。方法論如果沒有經歷過多個項目的檢驗是不能稱為成功的方法論的,我也并不認為我的架構設計就是一個好的方法論,但引玉還需拋磚,他的主要目的是為了傳播一種思想。因此,我采用了模式語言(PLOP)做為寫作架構設計的形式,主要的原因就是模式是一種很好的組織思想的方法。
因此,在我們接下去的歷程中,我們集中討論的東西就圍繞著架構、方法學、敏捷這三個要素展開。這篇文章并不是討論如何編碼實現軟件架構的,也不要單純的把它看作架構設計的指南,其實文中的很多思想來自于方法論,因此提到的很多架構設計的思想也適用于其它工作,如果能夠了解這一點,看這篇文章的收獲可能會更多一些。