??????? 軟件系統的架構不外乎兩種:自頂向下和自底向上,究竟哪一種比較好呢?
??????? 先談談自頂向下,也就是傳統的瀑布模型,先確定系統的規模和體系,然后具體化。這種方法的優點是包和類的構造規范,組件間的相互依賴明確。這里最主要的是一個可行性問題,架構合不合理,最終需要編程來檢驗。一個通常的誤區是架構提得太完美以至于難以實現。例如在開發游戲系統的初期就提出要把系統建立在多線程的基礎上,數據庫一個線程,網絡一個線程,圖形一個線程,甚至每個角色一個線程,的確很完美,但是難度太大了,不是嗎?
??????? 再談談自底向上,也就是原型模型。先以最快的速度構建一個模型,然后不斷優化它。這種方法的特點是將軟件看成一種循環過程,可以不斷地擴展和優化,所以系統在任何時候都可以工作,并且將越來越好。這里有一個問題,就是有時為了增加新功能需要修改原有的架構,對于這一點只有在平時通過不斷的優化來減少復雜度。
??????? 兩種方法的關鍵一個在于規劃,一個在于優化。就像打仗一樣,是先制訂全盤計劃呢還是隨機應變呢?我現在一般使用自底向上的方法,因為我覺得首先驗證系統的可行性是最重要的,而且可以隨時應付需求的變化,最重要的是我喜歡那種不斷推出最新版本的感覺。