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