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