(1)軟件的首要技術(shù)使命:管理復(fù)雜度
本質(zhì)性困難的原因:必須去面對復(fù)雜、無序的現(xiàn)實(shí)世界;精確而完整地識別出各種依賴關(guān)系與例外情況;設(shè)計(jì)出完全正確而不是大致正確的解決方案等。想清楚的認(rèn)清現(xiàn)實(shí)世界到底如何運(yùn)作仍有很多挑戰(zhàn),當(dāng)軟件要解決更大規(guī)模的現(xiàn)實(shí)問題的時(shí)候,現(xiàn)實(shí)的實(shí)體之間的交互行為就變得更為復(fù)雜,這些轉(zhuǎn)而又增加軟件解決方案的本質(zhì)性困難。
作為軟件開發(fā)人員,我們不應(yīng)該試著在同一時(shí)間把整個(gè)程序都塞進(jìn)自己的大腦,而應(yīng)該試著以某種方式去組織程序,以便能夠在一個(gè)時(shí)刻可以專注于一個(gè)特定的部分。這么做的目的是盡量減少在任一時(shí)間所要考慮的程序量。
在軟件架構(gòu)的層次上,可以通過把整個(gè)系統(tǒng)分解為多個(gè)子系統(tǒng)來降低問題的復(fù)雜度。所有軟件設(shè)計(jì)技術(shù)的目標(biāo)都是把復(fù)雜問題分解為簡單的部分。子系統(tǒng)之間的相互依賴越少,你就越容易在同一時(shí)間里關(guān)注問題的一小部分。
(2)理想的設(shè)計(jì)特征
最小復(fù)雜度
易于維護(hù):意味著在設(shè)計(jì)時(shí)為做維護(hù)工作的程序員著想。
松散耦合:意味著在設(shè)計(jì)時(shí)為讓程序的各個(gè)組成部分之間關(guān)聯(lián)最小。
可擴(kuò)展性:能增強(qiáng)系統(tǒng)的功能而無須破壞其底層結(jié)構(gòu)。
可重用性:設(shè)計(jì)的系統(tǒng)的組成部分能在其他系統(tǒng)中復(fù)用。
高扇入:大量的類試用某個(gè)特定的類。
低扇出:讓一個(gè)類少量或者始終的使用其他的類。
可移植性:可以很方便的移植到其他環(huán)境中。
精簡性:設(shè)計(jì)出的系統(tǒng)沒有多余的部分。伏爾泰曾說:一本書的完成,不在他不能再加入任何內(nèi)容的時(shí)候,而在不能再刪去任何內(nèi)容的時(shí)候。
層次性:盡量保持系統(tǒng)各個(gè)分階層的層次性,使你可以在任何層面上觀察系統(tǒng),并得到某種具有一致的看法。設(shè)計(jì)出來的系統(tǒng)應(yīng)該能在任意層次上觀察而不需要進(jìn)入其他層次。
標(biāo)準(zhǔn)技術(shù):盡量使用標(biāo)準(zhǔn)化的、常用的方法,讓整個(gè)系統(tǒng)給人一種熟悉的感覺。
(3)設(shè)計(jì)的層次
posted on 2007-09-20 09:36
探丫頭 閱讀(809)
評論(0) 編輯 收藏 引用 所屬分類:
《代碼大全》讀書筆記