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