翻譯:
軟件設(shè)計是一個創(chuàng)造性的過程,對一些設(shè)計者來說需要一定的資質(zhì),而最后設(shè)計通常都是由若于初步設(shè)計反復(fù)比較而來。從書本上學(xué)不會設(shè)計,只能經(jīng)過實踐.通過對一現(xiàn)有系統(tǒng)的研究和實際演練才能做到。對于能產(chǎn)生預(yù)期結(jié)果的軟件工程,良好的設(shè)計是關(guān)鍵。設(shè)計得好的軟件系統(tǒng)實現(xiàn)和維護(hù)方式簡單明了、易懂可靠。設(shè)計得不好的系統(tǒng),盡管可以工作,但很可能維護(hù)費高、測試?yán)щy且不可靠。因此,設(shè)計階段是軟件開發(fā)過程中最重要的階段。
直到最近,軟件設(shè)計在很大程度上仍是一個特定過程。一般用自然語言,給定一系列需求,準(zhǔn)備好非正式設(shè)計,并常常用流程圖的形式說明;接著開始編碼;當(dāng)系統(tǒng)實現(xiàn)時設(shè)計還會修改。當(dāng)實現(xiàn)階段完成后,設(shè)計往往與當(dāng)初的規(guī)格說明相去甚遠(yuǎn),以至于原始文檔完全不適合對系統(tǒng)的描述。
軟件設(shè)計的這種方法導(dǎo)致了許多驚人的而且是代價很大的工程失敗。現(xiàn)在已經(jīng)認(rèn)識到一些完全非正式的表示法,諸如接近于編程語言的流程圖,不適用于系統(tǒng)設(shè)計的公式化和表達(dá)。大家認(rèn)識到,精確(盡管并不一定是正式)的規(guī)格說明是設(shè)計過程的必要部分。軟件設(shè)計是一個反復(fù)的、不能用任何單一表示法來表示的多階段活動。相應(yīng)地,大量的設(shè)計表示法,如數(shù)據(jù)流圖、層次化輸入一處理一輸出結(jié)構(gòu)圖和設(shè)計描述語言已經(jīng)開發(fā)出來,比流程圖能更好地表達(dá)軟件設(shè)計。
對于給定的需求定義,軟件工程師必須據(jù)此導(dǎo)出滿足這些需求的程序系統(tǒng)的設(shè)計。此導(dǎo)出過程是通過下述步驟來完成的:
(1)必須建立組成程序系統(tǒng)的子系統(tǒng);
(2)必須把每個子系統(tǒng)分解成獨立的成分,并且通過定義這些成分的操作來建立子系統(tǒng)規(guī)格說明;
(3)每個程序可以用相互作用的子成分設(shè)計;
(4)每個成分還須進(jìn)行優(yōu)化,這通常需要將每個成分規(guī)定為層次式的子成分;
(5)在精化過程中的某個階段,各成分中的算法必須詳細(xì)規(guī)定。
除了程序系統(tǒng)設(shè)計中的這些階段之外,軟件工程師也可能需要設(shè)計允許系統(tǒng)中各進(jìn)程之間進(jìn)行通信的通信機(jī)制。他們或許要設(shè)計文件結(jié)構(gòu),并且?guī)缀醣厝灰O(shè)計用于程序的數(shù)據(jù)結(jié)構(gòu),他們還需要設(shè)計確認(rèn)程序的測試用例。
確定何為“成功”的設(shè)計無一定之規(guī)。依據(jù)應(yīng)用和特定的工程要求。一個成功的設(shè)計應(yīng)該是:能生成高效的代碼,實現(xiàn)盡量緊湊的最小設(shè)計或最易維護(hù)的設(shè)計。最后一個準(zhǔn)則是本文采用的優(yōu)良度準(zhǔn)則。可維護(hù)性設(shè)計意指系統(tǒng)修改費用最低,設(shè)計易于理解和修改是局部性的。只有高度內(nèi)聚而又松散藕合的軟件設(shè)計才能實現(xiàn)以上兩個目標(biāo)。
有效的軟件設(shè)計最好利用一致性設(shè)計方法學(xué)。有大量的在不同應(yīng)用環(huán)境中開發(fā)并使用的設(shè)計方法學(xué)。其中有些是由Yeters(1980),Blank 和 Krijger(1983)闡述的。實質(zhì)上,這些方法學(xué)大多數(shù)和劃分為3類。
(1)自頂向下的功能設(shè)計:從功能的觀點設(shè)計系統(tǒng),從高層的觀點著手逐步提煉成更具體的設(shè)計。結(jié)構(gòu)化設(shè)計和逐步求精就是使用此方法的例子。
(2)面向?qū)ο蟮脑O(shè)計:把系統(tǒng)作為對象集合而不是功能的集合,消息在對象與對象之間傳送,每個對象都有自己的關(guān)聯(lián)操作集。面向?qū)ο蟮脑O(shè)計方法是基于信息隱藏的思想,該思想由Parnas(1972)最先提出,最近又由Robson(1981)和Booch(1983)加以描述。
(3)數(shù)據(jù)驅(qū)動的設(shè)計:此方法由Jackson(1975)和Warnier(1977)提出,認(rèn)為軟件系統(tǒng)的結(jié)構(gòu)應(yīng)該反映該系統(tǒng)所處理的數(shù)據(jù)的結(jié)構(gòu)。因此,軟件設(shè)計應(yīng)從對系統(tǒng)輸入、輸出數(shù)據(jù)進(jìn)行分析中導(dǎo)出。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |