資源描述:
《第4章系 統(tǒng) 設(shè) 計(jì).ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、第4章系統(tǒng)設(shè)計(jì)4.1系統(tǒng)結(jié)構(gòu)設(shè)計(jì)4.2網(wǎng)絡(luò)設(shè)計(jì)4.3數(shù)據(jù)庫(kù)設(shè)計(jì)4.4代碼設(shè)計(jì)4.5輸入輸出設(shè)計(jì)4.6模塊設(shè)計(jì)4.7系統(tǒng)設(shè)計(jì)報(bào)告4.8案例:在線輔助教學(xué)系統(tǒng)4.9實(shí)驗(yàn)三習(xí)題4.1系統(tǒng)結(jié)構(gòu)設(shè)計(jì)4.1.1系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的基本原則1.結(jié)構(gòu)化設(shè)計(jì)的基本思想結(jié)構(gòu)化設(shè)計(jì)的基本思想是將一個(gè)系統(tǒng)分為若干個(gè)彼此具有一定獨(dú)立性,同時(shí)又有一定聯(lián)系的組成部分,這些組成部分稱(chēng)為模塊。對(duì)每一個(gè)系統(tǒng)都可以按功能由頂向下逐層分解為一個(gè)多層次的具有獨(dú)立功能的許多模塊,一直分解到每一個(gè)模塊都能很容易實(shí)現(xiàn)為止。結(jié)構(gòu)化設(shè)計(jì)方法集中體現(xiàn)了軟件工程中的模塊化原則,模塊化可以使系統(tǒng)開(kāi)發(fā)的整體工作量變小。在
2、使用模塊化方法時(shí)應(yīng)注意模塊化是與模塊獨(dú)立性緊密相連的,如果模塊之間聯(lián)系過(guò)于密切,雖然每個(gè)模塊工作量減小,但模塊之間接口將很復(fù)雜,這將使得接口工作量增大。模塊的獨(dú)立性可以通過(guò)耦合性和內(nèi)聚性來(lái)定性度量。耦合是指模塊之間的關(guān)聯(lián)程度,而內(nèi)聚則是指模塊內(nèi)部軟件成分之間的關(guān)聯(lián)程度。下面我們分別介紹常見(jiàn)的幾種耦合與內(nèi)聚方式。2.模塊的耦合性耦合性表現(xiàn)了模塊的外部特征,模塊之間的耦合程度越低,說(shuō)明模塊的獨(dú)立性越好。常見(jiàn)的耦合方式有下面幾種:1)非直接耦合非直接耦合是指兩個(gè)模塊能彼此獨(dú)立工作,沒(méi)有直接的關(guān)系,僅通過(guò)主程序的控制和調(diào)用來(lái)實(shí)現(xiàn),兩者之間不傳遞任何信息。2)數(shù)據(jù)耦
3、合數(shù)據(jù)耦合是指兩個(gè)模塊之間通過(guò)數(shù)據(jù)交換實(shí)現(xiàn)相互間的聯(lián)系。一個(gè)模塊帶參數(shù)調(diào)用另一個(gè)模塊,被調(diào)用模塊執(zhí)行后返回一個(gè)參數(shù)給調(diào)用它的模塊。傳入和返回的參數(shù)都是單個(gè)的數(shù)據(jù)項(xiàng)。3)標(biāo)記耦合標(biāo)記耦合是指一個(gè)模塊調(diào)用另一個(gè)模塊時(shí),不是傳送數(shù)據(jù)本身,而是傳送存放數(shù)據(jù)的變量名或文件名等數(shù)據(jù)標(biāo)記。這種耦合比數(shù)據(jù)耦合具有更多的出錯(cuò)機(jī)會(huì),復(fù)雜程度高于數(shù)據(jù)耦合。例如,C語(yǔ)言中通過(guò)傳遞一個(gè)變量的地址給另一個(gè)模塊就是一種標(biāo)記耦合的形式,它的復(fù)雜程度很顯然高于值傳遞,出錯(cuò)的可能性更大。4)控制耦合一個(gè)模塊調(diào)用另一個(gè)模塊時(shí)傳遞的不是數(shù)據(jù)參數(shù),而是一個(gè)控制變量,它用來(lái)控制被調(diào)用模塊的功能,稱(chēng)為
4、控制耦合。通常被調(diào)用的模塊含有多種功能,由傳遞的控制變量決定調(diào)用哪一種功能。被調(diào)用模塊的邏輯控制走向,受控于調(diào)用模塊。控制耦合的耦合程度較高,在設(shè)計(jì)時(shí)應(yīng)盡量避免??刂岂詈显黾恿死斫夂途幊痰膹?fù)雜性,我們看一下圖4.1所示的例子。假設(shè)模塊A通過(guò)傳遞開(kāi)關(guān)變量f調(diào)用模塊B(圖4.1(a)),模塊B返回變量x。模塊B中包含有兩種功能(圖4.1(b)),則在編制模塊A的程序時(shí)首先要理解開(kāi)關(guān)變量f的含義,同時(shí)在模塊A中還必須設(shè)置開(kāi)關(guān)變量的值。模塊A可能還要根據(jù)不同的返回值進(jìn)行不同的處理。圖4.1改控制耦合為數(shù)據(jù)耦合的方法示意圖在絕大多數(shù)情況下,控制耦合是可以避免的,對(duì)于
5、圖4.1中的例子,可以采取如下的方法:(1)將被調(diào)用模塊B中的判定上移到模塊A中去。(2)將被調(diào)用模塊B中包含的兩種功能分為兩個(gè)模塊。經(jīng)過(guò)這樣處理后,控制耦合改變?yōu)閿?shù)據(jù)耦合,圖4.1(c)是改變后的模塊調(diào)用示意圖。5)外部耦合外部耦合是指模塊與外部環(huán)境之間的聯(lián)系,例如輸入輸出模塊,只有當(dāng)需要的外部設(shè)備正常工作時(shí),這些模塊才能正常工作。6)公共耦合公共耦合是指多個(gè)模塊共享全局?jǐn)?shù)據(jù)區(qū),如C語(yǔ)言中的共用外部變量、FORTRAN語(yǔ)言中的COMMON共用數(shù)據(jù)區(qū)等。公共耦合的耦合程度較高,屬于強(qiáng)耦合,設(shè)計(jì)時(shí)應(yīng)該避免使用。7)內(nèi)容耦合內(nèi)容耦合指一個(gè)模塊直接訪問(wèn)另一個(gè)模塊
6、的內(nèi)部信息(程序代碼或內(nèi)部數(shù)據(jù))。這是最不好的耦合形式,它對(duì)模塊的獨(dú)立性破壞最大。上面介紹的七種耦合方式的耦合強(qiáng)度由弱到強(qiáng),模塊之間的接口方式也越來(lái)越復(fù)雜。模塊之間的耦合方式不可能全為非直接耦合,比較理想的耦合方式應(yīng)該是數(shù)據(jù)耦合,一個(gè)模塊帶參數(shù)調(diào)用另一個(gè)模塊,然后返回一個(gè)值。模塊之間僅僅是變量值的傳遞,模塊之間發(fā)生相互影響的可能性較小,發(fā)生錯(cuò)誤時(shí)查找也比較容易。3.模塊的內(nèi)聚性?xún)?nèi)聚性是一個(gè)模塊內(nèi)軟件成分之間聯(lián)系的強(qiáng)弱程度的定性度量,是模塊內(nèi)部特征的表現(xiàn)。內(nèi)聚性越高,表明各成分之間的聯(lián)系強(qiáng)度越大。模塊的內(nèi)聚性好,一般與其他模塊的關(guān)聯(lián)程度也相對(duì)較弱,模塊的獨(dú)立
7、性也較好。常見(jiàn)的內(nèi)聚方式有七種,下面我們分別簡(jiǎn)單介紹一下。1)偶然內(nèi)聚偶然內(nèi)聚是指模塊中各軟件成分之間沒(méi)有有意義的聯(lián)系。有時(shí)若干個(gè)模塊中存在若干相同的語(yǔ)句序列,程序員為了節(jié)省存儲(chǔ)空間將它們抽取出來(lái)形成一個(gè)單獨(dú)的模塊。這些語(yǔ)句只有與調(diào)用它們的模塊放在一起時(shí)才具有意義,這些語(yǔ)句本身相互之間并沒(méi)有有意義的聯(lián)系,這個(gè)新的模塊是偶然內(nèi)聚的。偶然內(nèi)聚的可理解性差,難于修改,內(nèi)聚程度最低,設(shè)計(jì)時(shí)應(yīng)該盡量避免使用。2)邏輯內(nèi)聚邏輯內(nèi)聚是指將幾個(gè)邏輯上功能相似的模塊合并,而形成一個(gè)新的模塊,該模塊包含有若干個(gè)在邏輯上具有相似功能的程序段,由傳送給模塊的參數(shù)來(lái)確定該模塊完成哪
8、一段功能。圖4.2顯示了這種情況,圖4.2(a)表示模塊A、B、C