首先需要明白的是,什么是架構設計,看了以前的培訓資料,也google了,也自己想了,總結下來:
架構設計:軟件系統是由組件以及它們之間的連接關系組成的,同時架構設計還要滿足軟件系統的易變性、可擴展性、可維護性等特性。
搞清楚了什么是架構設計之后,再想想怎么才能做好架構設計呢?
架構設計可大可小,回顧一下自己做過的項目,細想再小的項目其實也有一個架構設計,只不過這個架構設計可能很小,三言兩語就能描述清楚了,比如一個很小的BS系統,可能也要劃分一下,功能模塊如何劃分,哪些是公用的,目錄或package如何劃分,這個我覺得也是架構設計。
但是當系統變大時,架構設計就變得復雜了,因為需要考慮的東西就多了,一方面從系統的功能來說,系統功能點已經上百成千個了,光是搞清楚這些功能點就已經不容易了,如何從這些功能點中發掘共性,劃分組件,如何設計組件之間的聯系,實現分而治之就更復雜了,另一方面,系統變大了,系統的非功能性需求或約束更多了,一個小系統,可能不需要考慮大用戶量、并發、大數據量等問題,但一個大系統,即使用戶不提這些約束條件,一個好的項目經理或者架構師,必須替用戶考慮這些約束條件,有幾年的數據以后,系統會不會變慢,采取什么樣的方式可以解決這樣的問題,用戶如果要求5秒內,系統必須有響應,那么目前的架構設計能不能滿足這樣的要求呢?
同時從軟件系統的架構與建筑設計的類比來看,一個建筑設計,必定是先把建筑結構定下來,然后再按圖施工,如果想有創新性的設計,則必須廣聞博見,同時還必須功力深厚,否則怎么設計的出鳥巢呢?呵呵
同樣對于一個軟件架構的設計者來說,第一個層次,豐富的實踐知識,達到這樣,至少在一定的范圍內可以依葫蘆畫瓢了,同時還可以有一些局部性的創新設計。
第二個層次建立在第一個層次的基礎上,廣聞博見,精通十八般武藝,無論哪種兵器都能使得很趁手,比如BS架構很熟悉,CS架構很熟悉,銀行系統的架構設計做過,電信系統的架構見過研究過,嵌入式系統的架構也熟悉,操作系統、數據庫等基礎知識那更是不用說,至少熟悉多種主流編程語言,還能緊跟潮流趨勢,更要有自己的思想,理解能力深厚,這樣的大師我想應該能做出創新性的設計了。
回顧一下自己,只能是第一個層次了,其實第一個層次也不算很好,第二個層次只能算剛剛入門,看來要成為一個大師,很難,@_@
posted on 2008-06-01 13:18
The Matrix 閱讀(523)
評論(0) 編輯 收藏 所屬分類:
軟件設計