![軟件工程第四章 軟件設(shè)計(jì)_第1頁(yè)](http://file4.renrendoc.com/view5/M00/3E/06/wKhkGGYy8MOADwk7AADNcVgPNNc433.jpg)
![軟件工程第四章 軟件設(shè)計(jì)_第2頁(yè)](http://file4.renrendoc.com/view5/M00/3E/06/wKhkGGYy8MOADwk7AADNcVgPNNc4332.jpg)
![軟件工程第四章 軟件設(shè)計(jì)_第3頁(yè)](http://file4.renrendoc.com/view5/M00/3E/06/wKhkGGYy8MOADwk7AADNcVgPNNc4333.jpg)
![軟件工程第四章 軟件設(shè)計(jì)_第4頁(yè)](http://file4.renrendoc.com/view5/M00/3E/06/wKhkGGYy8MOADwk7AADNcVgPNNc4334.jpg)
![軟件工程第四章 軟件設(shè)計(jì)_第5頁(yè)](http://file4.renrendoc.com/view5/M00/3E/06/wKhkGGYy8MOADwk7AADNcVgPNNc4335.jpg)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件工程第四章軟件設(shè)計(jì)4.1軟件設(shè)計(jì)階段的任務(wù)與目標(biāo)
軟件設(shè)計(jì)是對(duì)實(shí)現(xiàn)軟件的結(jié)構(gòu)、系統(tǒng)的數(shù)據(jù)、系統(tǒng)組件之間的接口以及所用算法的描述。軟件設(shè)計(jì)是軟件開(kāi)發(fā)的關(guān)鍵步驟,直接影響軟件的質(zhì)量。在軟件需求分析階段已經(jīng)完全弄清楚了軟件的各種需求,較好地解決了所開(kāi)發(fā)的軟件“做什么”的問(wèn)題,并已在軟件需求說(shuō)明書(shū)中詳盡和充分地闡明了這些需求以后,下一步就要著手實(shí)現(xiàn)軟件的需求,即軟件設(shè)計(jì)階段要解決“怎么做”的問(wèn)題。4.1軟件設(shè)計(jì)階段的任務(wù)與目標(biāo)第2頁(yè),共133頁(yè),2024年2月25日,星期天設(shè)計(jì)過(guò)程的一般模型需求描述體系結(jié)構(gòu)設(shè)計(jì)抽象描述接口設(shè)計(jì)組件設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)系統(tǒng)體系結(jié)構(gòu)軟件描述接口描述組件描述數(shù)據(jù)結(jié)構(gòu)描述算法描述算法設(shè)計(jì)設(shè)計(jì)活動(dòng)設(shè)計(jì)產(chǎn)品第3頁(yè),共133頁(yè),2024年2月25日,星期天
4.1.1軟件設(shè)計(jì)在開(kāi)發(fā)階段中的重要性軟件設(shè)計(jì)功能與性能需求編碼軟件測(cè)試程序模塊已測(cè)試軟件系統(tǒng)結(jié)構(gòu)設(shè)計(jì)過(guò)程設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)信息域需求開(kāi)發(fā)階段信息流
軟件設(shè)計(jì)階段要解決“如何做”的問(wèn)題。系統(tǒng)結(jié)構(gòu)設(shè)計(jì)確定程序有哪些模塊組成,以及這些模塊之間的關(guān)系。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)主要是進(jìn)行數(shù)據(jù)結(jié)構(gòu)的定義。數(shù)據(jù)庫(kù)設(shè)計(jì)要進(jìn)行數(shù)據(jù)庫(kù)的概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì)。
過(guò)程設(shè)計(jì)確定每個(gè)模塊的處理過(guò)程。數(shù)據(jù)庫(kù)設(shè)計(jì)第4頁(yè),共133頁(yè),2024年2月25日,星期天
4.1.2軟件設(shè)計(jì)階段的任務(wù)一、軟件設(shè)計(jì)的任務(wù)總體設(shè)計(jì)(概要設(shè)計(jì))和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)的主要任務(wù):1.設(shè)計(jì)軟件結(jié)構(gòu)(1)采用某種設(shè)計(jì)方法,將一個(gè)復(fù)雜的系統(tǒng)按功能劃分成模塊(2)確定每個(gè)模塊的功能(3)確定模塊之間的調(diào)用關(guān)系(4)確定模塊之間的接口,即模塊之間傳遞的信息(5)評(píng)價(jià)模塊結(jié)構(gòu)的質(zhì)量
2.數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫(kù)設(shè)計(jì)
(1)數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì):設(shè)計(jì)抽象的數(shù)據(jù)結(jié)構(gòu)(2)數(shù)據(jù)庫(kù)的概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì)3.編寫(xiě)概要設(shè)計(jì)文檔
文檔主要有:
(1)概要設(shè)計(jì)說(shuō)明書(shū)。
(2)數(shù)據(jù)庫(kù)設(shè)計(jì)說(shuō)明書(shū),主要給出所使用的DBMS簡(jiǎn)介、數(shù)據(jù)庫(kù)的概念模型、邏輯設(shè)計(jì)、結(jié)果。
(3)用戶(hù)手冊(cè),對(duì)需求分析階段編寫(xiě)的用戶(hù)手冊(cè)進(jìn)行補(bǔ)充。
(4)修訂測(cè)試計(jì)劃,對(duì)測(cè)試策略、方法、步驟提出明確要求。
第5頁(yè),共133頁(yè),2024年2月25日,星期天詳細(xì)設(shè)計(jì):確定模塊內(nèi)算法;數(shù)據(jù)結(jié)構(gòu)詳細(xì)設(shè)計(jì)(JACKSON方法);接口內(nèi)部的細(xì)節(jié)。第6頁(yè),共133頁(yè),2024年2月25日,星期天軟件設(shè)計(jì)高可靠性高可維護(hù)性高可理解性高效率軟件設(shè)計(jì)的目標(biāo)二、軟件設(shè)計(jì)的目標(biāo)在設(shè)計(jì)階段應(yīng)達(dá)到的目標(biāo)是:提高可靠性;提高可維護(hù)性;提高可理解性;提高效率。衡量該目標(biāo)的準(zhǔn)則:1、軟件實(shí)體有明顯的層次結(jié)構(gòu),利于軟件元素間控制。2、軟件實(shí)體應(yīng)該是模塊化的,模塊具有獨(dú)立功能。3、軟件實(shí)體與環(huán)境的界面清晰。4、設(shè)計(jì)規(guī)格說(shuō)明清晰、簡(jiǎn)潔、完整和無(wú)二義性。常用的設(shè)計(jì)方法有:SD法、Jackson法、HIPO法、Parnas法、Warnier法等。第7頁(yè),共133頁(yè),2024年2月25日,星期天4.2軟件結(jié)構(gòu)與軟件結(jié)構(gòu)圖軟件結(jié)構(gòu)是軟件模塊之間關(guān)系的表示,它決定了整個(gè)系統(tǒng)的結(jié)構(gòu),也確定了系統(tǒng)的質(zhì)量。模塊之間的關(guān)系可有多種,但都可以歸結(jié)為一種層次關(guān)系。軟件結(jié)構(gòu)圖是總體設(shè)計(jì)階段的主要描述工具,它描述了構(gòu)成系統(tǒng)的基本元素——模塊及模塊之間的調(diào)用關(guān)系,模塊之間的數(shù)據(jù)傳遞關(guān)系。本節(jié)討論如何進(jìn)行軟件結(jié)構(gòu)的設(shè)計(jì),設(shè)計(jì)的準(zhǔn)則以及為了提高軟件系統(tǒng)的質(zhì)量,如何對(duì)軟件結(jié)構(gòu)進(jìn)行改進(jìn)的技術(shù)。第8頁(yè),共133頁(yè),2024年2月25日,星期天4.2.1軟件結(jié)構(gòu)的基本概念二、模塊化
模塊化就是將系統(tǒng)劃分為若干個(gè)模塊,每個(gè)模塊完成一個(gè)子功能。模塊化的目的是將系統(tǒng)“分而治之”,模塊化能夠降低問(wèn)題的復(fù)雜性,使軟件結(jié)構(gòu)清晰,易閱讀、易理解,易于測(cè)試和調(diào)試,因而也有助于提高軟件的可靠性。
軟件結(jié)構(gòu)表示軟件系統(tǒng)的構(gòu)成,是軟件模塊間關(guān)系的表示,下圖則為軟件結(jié)構(gòu)示意圖。下面先介紹幾個(gè)相關(guān)的的概念。ABCDEFGHIJKLM一、模塊(Module)
模塊是程序?qū)ο笥忻值募?。例如,過(guò)程、函數(shù)、子程序、宏等,是構(gòu)成軟件系統(tǒng)結(jié)構(gòu)的基本元素。 軟件結(jié)構(gòu)圖第9頁(yè),共133頁(yè),2024年2月25日,星期天模塊化降低軟件復(fù)雜度的簡(jiǎn)單證明令:C(X)表示問(wèn)題X的復(fù)雜度函數(shù);
E(X)解決問(wèn)題X所需工作量的復(fù)雜度函數(shù);若:有問(wèn)題P1,P2;
C(P1)>C(P2);顯然:E(P1)>E(P2)由經(jīng)驗(yàn):C(P1+P2)>C(P1)+C(P2)于是:E(P1+P2)>E(P1)+E(P2)將問(wèn)題(P1+P2)劃分為兩個(gè)問(wèn)題P1和P2后,其工作量和復(fù)雜度都降低。并非模塊分得越小越好,因?yàn)槟K之間接口的復(fù)雜度和工作量增加。顯然,每個(gè)軟件系統(tǒng)都有一個(gè)最佳模塊數(shù)M。注意選擇分解的最佳模塊數(shù)。右上圖描述了模塊化與軟件成本的關(guān)系。軟件總成本模塊化與軟件成本的關(guān)系成本模塊數(shù)目模塊成本接口成本}最小成本區(qū)M第10頁(yè),共133頁(yè),2024年2月25日,星期天軟件的層次結(jié)構(gòu)頂層1層2層ABCDEFGHIJKLMN深度扇入為2扇出為3扇入為33層4層寬度寬度寬度軟件結(jié)構(gòu)示意圖有關(guān)指標(biāo):⑴深度:表示軟件結(jié)構(gòu)中從頂層模塊到最底層模塊的層數(shù)。⑵寬度:表示控制的總分布。⑶扇出數(shù):指一個(gè)模塊直接控制下屬的模塊個(gè)數(shù)。⑷扇入數(shù):指一個(gè)模塊的直接上屬模塊個(gè)數(shù)。
一個(gè)好的軟件結(jié)構(gòu)的形態(tài)準(zhǔn)則是:頂部寬度小,中部寬度大,底部寬度次之;在結(jié)構(gòu)頂部有較高的扇出數(shù),在底部有較高的扇入數(shù)。
軟件結(jié)構(gòu)圖表示軟件的系統(tǒng)結(jié)構(gòu),它是軟件模塊間關(guān)系的表示,軟件之間的各種關(guān)系,均可表示為層次結(jié)構(gòu)。如圖所示。第11頁(yè),共133頁(yè),2024年2月25日,星期天4.2.2軟件的樹(shù)狀結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu)
由模塊連接而得到的軟件結(jié)構(gòu)最普通的形式就是樹(shù)狀結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu)。在樹(shù)狀結(jié)構(gòu)中,位于最上層的根部是頂層模塊,它是程序的主模塊。與其聯(lián)系的有若干下屬模塊,各下屬模塊還可以進(jìn)一步引出更下一層的下屬模塊,如圖所示的樹(shù)狀結(jié)構(gòu)。樹(shù)狀結(jié)構(gòu)的特點(diǎn)是:整個(gè)結(jié)構(gòu)只有一個(gè)頂層模塊,而對(duì)于任何一個(gè)下屬模塊來(lái)說(shuō),它只有一個(gè)上級(jí)模塊,而且同一層模塊之間不發(fā)生關(guān)系。頂層1層2層3層
軟件的樹(shù)狀結(jié)構(gòu)ABCDEFGHIKLM第12頁(yè),共133頁(yè),2024年2月25日,星期天
在網(wǎng)狀結(jié)構(gòu)中,任何兩個(gè)模塊間都可以有雙向的關(guān)系,不分層次。任何兩個(gè)模塊都是平等的,沒(méi)有從屬關(guān)系。
網(wǎng)狀結(jié)構(gòu)(a)(b)ABCDEFGHABCD
比較兩種結(jié)構(gòu)的特點(diǎn):對(duì)于不加限制的網(wǎng)狀結(jié)構(gòu),由于模塊間相互關(guān)系的任意性,使得整個(gè)結(jié)構(gòu)十分復(fù)雜,處理起來(lái)勢(shì)必引起許多麻煩,這與原來(lái)劃分模塊為便于處理的意圖相矛盾。所以在軟件開(kāi)發(fā)的實(shí)踐中,人們通常采用樹(shù)狀結(jié)構(gòu),而不采用網(wǎng)狀結(jié)構(gòu)。第13頁(yè),共133頁(yè),2024年2月25日,星期天模塊5模塊5模塊4模塊4模塊1模塊3模塊2valuesvaluesdatadata模塊1模塊2模塊3valuesvaluesdatadata4.2.3軟件結(jié)構(gòu)圖(SC圖)
結(jié)構(gòu)圖(StructureChart,簡(jiǎn)稱(chēng)SC圖)是精確表達(dá)軟件結(jié)構(gòu)的圖形表示方法,它以特定的符號(hào)表示模塊、模塊間的調(diào)用關(guān)系和模塊間信息的傳遞。結(jié)構(gòu)圖的主要構(gòu)成有:⑴模塊(Module):⑶數(shù)據(jù):模塊調(diào)用圖⑵調(diào)用:data○數(shù)字信息控制信息第14頁(yè),共133頁(yè),2024年2月25日,星期天例:畫(huà)出打印報(bào)告的軟件結(jié)構(gòu)圖
調(diào)用次序?yàn)樯蠈诱{(diào)用下層;同層按照數(shù)據(jù)傳遞關(guān)系確定;一般從左到右執(zhí)行。
執(zhí)行過(guò)程即按照數(shù)據(jù)流向進(jìn)行。報(bào)告計(jì)算獲得編輯確認(rèn)數(shù)據(jù)讀入編輯打印報(bào)告頭打印報(bào)告尾打印輸入EOF輸入已編輯已編輯已編輯已確認(rèn)已確認(rèn)數(shù)據(jù)已確認(rèn)數(shù)據(jù)計(jì)算結(jié)果結(jié)果日期總結(jié)果行行行打印報(bào)告予以確認(rèn)第15頁(yè),共133頁(yè),2024年2月25日,星期天4.3模塊的獨(dú)立性
上一節(jié)討論了關(guān)于軟件結(jié)構(gòu)與軟件結(jié)構(gòu)圖的概念,本節(jié)進(jìn)一步討論影響軟件系統(tǒng)質(zhì)量的另一個(gè)關(guān)鍵問(wèn)題,模塊的獨(dú)立性問(wèn)題。模塊化方法已經(jīng)為所有工程領(lǐng)域所接受。模塊化的主要優(yōu)點(diǎn)是,模塊化設(shè)計(jì)降低了軟件系統(tǒng)的復(fù)雜性,使得系統(tǒng)容易修改,同時(shí)使得系統(tǒng)各個(gè)部分可以并行開(kāi)發(fā),從而提高了軟件的生產(chǎn)率。提高模塊質(zhì)量在于提高模塊獨(dú)立性。模塊的獨(dú)立性用耦合性和內(nèi)聚性來(lái)衡量。 第16頁(yè),共133頁(yè),2024年2月25日,星期天4.3.1模塊獨(dú)立性(moduleindependence)
“模塊”,又稱(chēng)“構(gòu)件”,一般指用一個(gè)名字可調(diào)用的一段程序。它一般具有如下三個(gè)基本屬性:⑴功能即指該模塊實(shí)現(xiàn)什么功能,做什么事情。必須注意:模塊功能,應(yīng)是該模塊本身的功能加上它所調(diào)用的所有子模塊的功能。⑵邏輯即描述模塊內(nèi)部怎么做。⑶狀態(tài)即該模塊使用時(shí)的環(huán)境和條件。所謂模塊的獨(dú)立性,是指軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他模塊的接口是簡(jiǎn)單的。即功能專(zhuān)一,模塊之間無(wú)過(guò)多的相互作用的模塊。這種類(lèi)型的模塊可以并行開(kāi)發(fā),模塊獨(dú)立性越強(qiáng),開(kāi)發(fā)越容易。獨(dú)立性強(qiáng)的模塊,還能減少錯(cuò)誤的影響,使模塊容易組合、修改及測(cè)試。第17頁(yè),共133頁(yè),2024年2月25日,星期天4.3.1模塊獨(dú)立性(moduleindependence)模塊獨(dú)立性的度量標(biāo)準(zhǔn)是兩個(gè)定性準(zhǔn)則:
耦合性用于描述模塊之間聯(lián)系的緊密程度。
內(nèi)聚性用于描述模塊內(nèi)部聯(lián)系的緊密程度。模塊獨(dú)立性比較強(qiáng)的模塊應(yīng)該是具有高內(nèi)聚性和的低耦合度。
第18頁(yè),共133頁(yè),2024年2月25日,星期天在描述一個(gè)模塊時(shí),還必須按模塊的外部特性與內(nèi)部特性分別描述模塊的外部特性模塊的模塊名、參數(shù)表、其中的輸入?yún)?shù)和輸出參數(shù),以及給程序以至整個(gè)系統(tǒng)造成的影響模塊的內(nèi)部特性完成其功能的程序代碼和僅供該模塊內(nèi)部使用的數(shù)據(jù)第19頁(yè),共133頁(yè),2024年2月25日,星期天模塊間耦合的類(lèi)型:第20頁(yè),共133頁(yè),2024年2月25日,星期天內(nèi)容耦合(ContentCoupling)如果發(fā)生下列情形,兩個(gè)模塊之間就發(fā)生了內(nèi)容耦合。(1)一個(gè)模塊直接訪(fǎng)問(wèn)另一個(gè)模塊的內(nèi)部數(shù)據(jù);(2)一個(gè)模塊不通過(guò)正常入口轉(zhuǎn)到另一模塊內(nèi)部;(3)兩個(gè)模塊有一部分程序代碼重迭(只可能出現(xiàn)在匯編語(yǔ)言中);(4)一個(gè)模塊有多個(gè)入口。最不好的耦合形式
!!!第21頁(yè),共133頁(yè),2024年2月25日,星期天若一組模塊都訪(fǎng)問(wèn)同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱(chēng)為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。公共耦合(CommonCoupling)第22頁(yè),共133頁(yè),2024年2月25日,星期天公共耦合的復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而顯著增加。若只是兩模塊間有公共數(shù)據(jù)環(huán)境,則公共耦合有兩種情況。松散公共耦合和緊密公共耦合。第23頁(yè),共133頁(yè),2024年2月25日,星期天Global:V1V2A:……………………A1=V1+V2……………………B:……………………V1=B1……………………Global:V1V2A:……………………V1++……………………B:……………………V2=B1+V1……………………問(wèn)題:
公共部分的改動(dòng)將影響所有調(diào)用它的模塊;
公共部分的數(shù)據(jù)存取無(wú)法控制;
復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而增加。第24頁(yè),共133頁(yè),2024年2月25日,星期天公共耦合舉例A公共數(shù)據(jù)區(qū)CB模塊A、B、C間存在錯(cuò)綜復(fù)雜的聯(lián)系第25頁(yè),共133頁(yè),2024年2月25日,星期天(1)軟件可理解性降低(2)診斷錯(cuò)誤困難(3)軟件可維護(hù)性差,(4)軟件可靠性差(公共數(shù)據(jù)區(qū)及全程變量無(wú)保護(hù)措施)慎用公共數(shù)據(jù)區(qū)和全程變量!!!公共耦合存在的問(wèn)題:第26頁(yè),共133頁(yè),2024年2月25日,星期天外部耦合(ExternalCoupling)一組模塊都訪(fǎng)問(wèn)同一全局簡(jiǎn)單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過(guò)參數(shù)表傳遞該全局變量的信息,則稱(chēng)之為外部耦合。一組模塊均與同一外部環(huán)境關(guān)聯(lián)(例如,I/O模塊與特定的設(shè)備、格式和通信協(xié)議相關(guān)聯(lián)),它們之間便存在外部耦合。外部偶合必不可少,但這種模塊數(shù)目應(yīng)盡量少。第27頁(yè),共133頁(yè),2024年2月25日,星期天控制耦合(ControlCoupling)如果一個(gè)模塊通過(guò)傳送開(kāi)關(guān)、標(biāo)志、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合。第28頁(yè),共133頁(yè),2024年2月25日,星期天控制耦合舉例A計(jì)算平均分或最高分B平均/最高(控制信號(hào))成績(jī)讀入分?jǐn)?shù)輸出結(jié)果計(jì)算平均分計(jì)算最高分平均/最高?B第29頁(yè),共133頁(yè),2024年2月25日,星期天控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊必須知道被調(diào)模塊的內(nèi)部邏輯,增加了相互依賴(lài)去除模塊間控制耦合的方法:(1)將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進(jìn)行(2)被調(diào)用模塊分解成若干單一功能模塊第30頁(yè),共133頁(yè),2024年2月25日,星期天改控制耦合為數(shù)據(jù)耦合舉例A計(jì)算平均分B1平均成績(jī)最高成績(jī)計(jì)算最高分B2第31頁(yè),共133頁(yè),2024年2月25日,星期天標(biāo)記耦合(StampCoupling)一個(gè)模塊訪(fǎng)問(wèn)另一個(gè)模塊時(shí),彼此之間是通過(guò)簡(jiǎn)單數(shù)據(jù)參數(shù)
(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量)來(lái)交換輸入、輸出信息的。數(shù)據(jù)耦合(DataCoupling)一組模塊通過(guò)參數(shù)表傳遞記錄信息,就是標(biāo)記耦合。這個(gè)記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡(jiǎn)單變量。第32頁(yè),共133頁(yè),2024年2月25日,星期天數(shù)據(jù)耦合舉例開(kāi)發(fā)票計(jì)算水費(fèi)單價(jià)數(shù)量金額第33頁(yè),共133頁(yè),2024年2月25日,星期天標(biāo)記耦合舉例計(jì)算水電費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)住戶(hù)情況水費(fèi)電費(fèi)住戶(hù)情況“住戶(hù)情況”是一個(gè)數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此數(shù)據(jù)結(jié)構(gòu)有關(guān).“計(jì)算水費(fèi)”和“計(jì)算電費(fèi)”本無(wú)關(guān),由于引用了此數(shù)據(jù)結(jié)構(gòu)產(chǎn)生依賴(lài)關(guān)系,它們之間也是標(biāo)記偶合.第34頁(yè),共133頁(yè),2024年2月25日,星期天將標(biāo)記耦合修改為數(shù)據(jù)耦合舉例計(jì)算水電費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)本月用水量本月用電量水費(fèi)電費(fèi)第35頁(yè),共133頁(yè),2024年2月25日,星期天兩個(gè)模塊之間沒(méi)有直接關(guān)系,它們之間的聯(lián)系完全是通過(guò)主模塊的控制和調(diào)用來(lái)實(shí)現(xiàn)的。非直接耦合的模塊獨(dú)立性最強(qiáng)。非直接耦合(NondirectCoupling)第36頁(yè),共133頁(yè),2024年2月25日,星期天如何降低模塊間耦合度:(1)盡量使用數(shù)據(jù)耦合少用控制耦合限制公共耦合的范圍
堅(jiān)決避免使用內(nèi)容耦合(2)降低接口的復(fù)雜性第37頁(yè),共133頁(yè),2024年2月25日,星期天2.模塊獨(dú)立性的度量之二:內(nèi)聚性
一個(gè)模塊內(nèi)部元素在功能上相互關(guān)聯(lián)的強(qiáng)度
設(shè)計(jì)目標(biāo):高內(nèi)聚
(模塊在軟件過(guò)程中完成單一的任務(wù))第38頁(yè),共133頁(yè),2024年2月25日,星期天模塊的內(nèi)聚性類(lèi)型:第39頁(yè),共133頁(yè),2024年2月25日,星期天(1)偶然內(nèi)聚(巧合內(nèi)聚)
模塊內(nèi)各部分間無(wú)聯(lián)系A(chǔ)BCMMOVEOTORREADFILEFMOVESTOT模塊M中的三個(gè)語(yǔ)句沒(méi)有任何聯(lián)系缺點(diǎn):可理解性差,可修改性差例:第40頁(yè),共133頁(yè),2024年2月25日,星期天(2)邏輯內(nèi)聚(LogicalCohesion)這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時(shí),由傳送給模塊的判定參數(shù)來(lái)確定該模塊應(yīng)執(zhí)行哪一種功能。第41頁(yè),共133頁(yè),2024年2月25日,星期天邏輯內(nèi)聚模塊ABCEFGABCEFGA1B1C1EFG模塊內(nèi)部邏輯E、F、G邏輯功能相似,組成新模塊EFG缺點(diǎn):增強(qiáng)了耦合程度(控制耦合)
不易修改,效率低公用代碼段公用代碼段第42頁(yè),共133頁(yè),2024年2月25日,星期天(3)時(shí)間內(nèi)聚(經(jīng)典內(nèi)聚)模塊完成的功能必須在同一段時(shí)間內(nèi)執(zhí)行,這些功能只因時(shí)間因素關(guān)聯(lián)在一起。例如:初始化系統(tǒng)模塊、系統(tǒng)結(jié)束模塊、緊急故障處理模塊等均是時(shí)間性聚合模塊.第43頁(yè),共133頁(yè),2024年2月25日,星期天使用流程圖做為工具設(shè)計(jì)程序時(shí),把流程圖中的某一部分劃出組成模塊,就得到過(guò)程內(nèi)聚模塊。例如,把流程圖中的循環(huán)部分、判定部分、計(jì)算部分分成三個(gè)模塊,這三個(gè)模塊都是過(guò)程內(nèi)聚模塊。模塊內(nèi)各處理成分相關(guān),且必須以特定次序執(zhí)行(4)過(guò)程內(nèi)聚(ProceduralCohesion)第44頁(yè),共133頁(yè),2024年2月25日,星期天過(guò)程內(nèi)聚模塊讀入成績(jī)單審查成績(jī)單統(tǒng)計(jì)成績(jī)打印成績(jī)讀入并審查成績(jī)單統(tǒng)計(jì)并打印成績(jī)單第45頁(yè),共133頁(yè),2024年2月25日,星期天如果一個(gè)模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱(chēng)之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過(guò)數(shù)據(jù)流圖來(lái)定義的。(5)通信內(nèi)聚(CommunicationCohesion)第46頁(yè),共133頁(yè),2024年2月25日,星期天通信內(nèi)聚模塊例產(chǎn)生工資報(bào)表計(jì)算平均工資職工工資記錄職工工資報(bào)表平均工資產(chǎn)生職工工資報(bào)表并計(jì)算平均工資模塊第47頁(yè),共133頁(yè),2024年2月25日,星期天第48頁(yè),共133頁(yè),2024年2月25日,星期天這種模塊完成多個(gè)功能,各個(gè)功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項(xiàng)功能有一個(gè)唯一的入口點(diǎn)。這個(gè)模塊將根據(jù)不同的要求,確定該執(zhí)行哪一個(gè)功能。由于這個(gè)模塊的所有功能都是基于同一個(gè)數(shù)據(jù)結(jié)構(gòu)(符號(hào)表),因此,它是一個(gè)信息內(nèi)聚的模塊。(6)信息內(nèi)聚(InformationalCohesion)第49頁(yè),共133頁(yè),2024年2月25日,星期天第50頁(yè),共133頁(yè),2024年2月25日,星期天一個(gè)模塊中各個(gè)部分都是完成某一具體功能必不可少的組成部分,或者說(shuō)該模塊中所有部分都是為了完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱(chēng)該模塊為功能內(nèi)聚模塊。模塊僅包括為完成某個(gè)功能所必須的所有成分。
(模塊所有成分共同完成一個(gè)功能,缺一不可)
內(nèi)聚性最強(qiáng)(7)功能內(nèi)聚(FunctionalCohesion)信息內(nèi)聚模塊可以看成是多個(gè)功能內(nèi)聚模塊的組合,并且達(dá)到信息的隱蔽。即把某個(gè)數(shù)據(jù)結(jié)構(gòu)、資源或設(shè)備隱蔽在一個(gè)模塊內(nèi),不為別的模塊所知曉。第51頁(yè),共133頁(yè),2024年2月25日,星期天內(nèi)聚與耦合密切相關(guān),同其它模塊強(qiáng)耦合的模塊意味者弱內(nèi)聚,強(qiáng)內(nèi)聚模塊意味著與其它模塊間松散耦合.設(shè)計(jì)目標(biāo):力爭(zhēng)強(qiáng)內(nèi)聚、弱耦合第52頁(yè),共133頁(yè),2024年2月25日,星期天4.4結(jié)構(gòu)化設(shè)計(jì)方法軟件設(shè)計(jì)分為兩個(gè)階段:(1)概要設(shè)計(jì)(總體設(shè)計(jì))確定軟件的結(jié)構(gòu)以及各組成成分(子系統(tǒng)或模塊)之間的相互關(guān)系。(2)詳細(xì)設(shè)計(jì)
確定模塊內(nèi)部的算法和數(shù)據(jù)結(jié)構(gòu),產(chǎn)生描述各模塊程序過(guò)程的詳細(xì)文檔。第53頁(yè),共133頁(yè),2024年2月25日,星期天數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)的各個(gè)元素之間的邏輯關(guān)系的一種表示。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)應(yīng)確定數(shù)據(jù)的組織、存取方式、相關(guān)程度以及信息的不同處理方法。數(shù)據(jù)結(jié)構(gòu)的組織方法和復(fù)雜程度可以靈活多樣,但典型的數(shù)據(jù)結(jié)構(gòu)種類(lèi)是有限的,它們是構(gòu)成一些更復(fù)雜結(jié)構(gòu)的基本構(gòu)件塊。數(shù)據(jù)結(jié)構(gòu)第54頁(yè),共133頁(yè),2024年2月25日,星期天第55頁(yè),共133頁(yè),2024年2月25日,星期天軟件過(guò)程軟件過(guò)程必須提供精確的處理說(shuō)明,包括事件的順序、正確的判定點(diǎn)、重復(fù)的操作直至數(shù)據(jù)的組織和結(jié)構(gòu)等等。程序結(jié)構(gòu)與軟件過(guò)程是有關(guān)系的。對(duì)每個(gè)模塊的處理必須指明該模塊所在的上下級(jí)環(huán)境。軟件過(guò)程遵從程序結(jié)構(gòu)的主從關(guān)系,因此它也是層次化的。下圖軟件過(guò)程側(cè)重與描述模塊間的處理細(xì)節(jié)。第56頁(yè),共133頁(yè),2024年2月25日,星期天第57頁(yè),共133頁(yè),2024年2月25日,星期天信息隱蔽由parnas方法提倡的信息隱蔽是指,每個(gè)模塊的實(shí)現(xiàn)細(xì)節(jié)對(duì)于其它模塊來(lái)說(shuō)是隱蔽的。也就是說(shuō),模塊中所包含的信息(包括數(shù)據(jù)和過(guò)程)不允許其它不需要這些信息的模塊使用。第58頁(yè),共133頁(yè),2024年2月25日,星期天4.5概要設(shè)計(jì)(總體設(shè)計(jì))主要確定:軟件系統(tǒng)的結(jié)構(gòu)各模塊功能及模塊間聯(lián)系(接口)表示軟件結(jié)構(gòu)的圖形工具結(jié)構(gòu)圖層次圖和HIPO圖第59頁(yè),共133頁(yè),2024年2月25日,星期天4.5結(jié)構(gòu)化設(shè)計(jì)方法首先研究、分析和審查數(shù)據(jù)流圖。從軟件的需求規(guī)格說(shuō)明中弄清數(shù)據(jù)流加工的過(guò)程,對(duì)于發(fā)現(xiàn)的問(wèn)題及時(shí)解決。然后根據(jù)數(shù)據(jù)流圖決定問(wèn)題的類(lèi)型。數(shù)據(jù)處理問(wèn)題典型的類(lèi)型有兩種:變換型和事務(wù)型。針對(duì)兩種不同的類(lèi)型分別進(jìn)行分析處理。第60頁(yè),共133頁(yè),2024年2月25日,星期天由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。利用一些啟發(fā)式原則來(lái)改進(jìn)系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止。修改和補(bǔ)充數(shù)據(jù)詞典。制定測(cè)試計(jì)劃。基本思想:DFDSystemHierarchy第61頁(yè),共133頁(yè),2024年2月25日,星期天InternalrepresentationInformationTransformflowOutgoingflowIncomingflowExternalrepresentationTime事實(shí)上所有信息流都可歸結(jié)為變換流⑴變換流(TransformFlow):1、DataFlow的分類(lèi)第62頁(yè),共133頁(yè),2024年2月25日,星期天⑵事務(wù)流(TransactionFlow)
…
…TTransactionrequest
…Actionpaths
…
…T=Calloneoftheseveralsubroutinesdependingonthetypeoftheincomingtransactionrequest.當(dāng)信息流具有明顯的“發(fā)射中心”時(shí),可歸結(jié)為事務(wù)流。第63頁(yè),共133頁(yè),2024年2月25日,星期天2系統(tǒng)結(jié)構(gòu)圖中的模塊分類(lèi)傳入模塊─從下屬模塊取得數(shù)據(jù),經(jīng)過(guò)某些處理,再將其傳送給上級(jí)模塊。它傳送的數(shù)據(jù)流叫做邏輯輸入數(shù)據(jù)流。傳出模塊─從上級(jí)模塊獲得數(shù)據(jù),進(jìn)行某些處理,再將其傳送給下屬模塊。它傳送的數(shù)據(jù)流叫做邏輯輸出數(shù)據(jù)流。變換模塊─它從上級(jí)模塊取得數(shù)據(jù),進(jìn)行特定的處理,轉(zhuǎn)換成其它形式,再傳送回上級(jí)模塊。它加工的數(shù)據(jù)流叫做變換數(shù)據(jù)流。協(xié)調(diào)模塊─對(duì)所有下屬模塊進(jìn)行協(xié)調(diào)和管理的模塊。第64頁(yè),共133頁(yè),2024年2月25日,星期天第65頁(yè),共133頁(yè),2024年2月25日,星期天3變換型系統(tǒng)結(jié)構(gòu)圖變換型數(shù)據(jù)處理問(wèn)題的工作過(guò)程大致分為三步,即取得數(shù)據(jù),變換數(shù)據(jù)和給出數(shù)據(jù)。相應(yīng)于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),變換型系統(tǒng)結(jié)構(gòu)圖由輸入、中心變換和輸出等三部分組成。第66頁(yè),共133頁(yè),2024年2月25日,星期天第67頁(yè),共133頁(yè),2024年2月25日,星期天4事務(wù)型系統(tǒng)結(jié)構(gòu)圖它接受一項(xiàng)事務(wù),根據(jù)事務(wù)處理的特點(diǎn)和性質(zhì),選擇分派一個(gè)適當(dāng)?shù)奶幚韱卧?,然后給出結(jié)果。在事務(wù)型系統(tǒng)結(jié)構(gòu)圖中,事務(wù)中心模塊按所接受的事務(wù)的類(lèi)型,選擇某一事務(wù)處理模塊執(zhí)行。各事務(wù)處理模塊并列。每個(gè)事務(wù)處理模塊可能要調(diào)用若干個(gè)操作模塊,而操作模塊又可能調(diào)用若干個(gè)細(xì)節(jié)模塊。第68頁(yè),共133頁(yè),2024年2月25日,星期天第69頁(yè),共133頁(yè),2024年2月25日,星期天5變換分析變換分析方法由以下四步組成:審查數(shù)據(jù)流圖;區(qū)分有效(邏輯)輸入、有效(邏輯)輸出和中心變換部分;進(jìn)行一級(jí)分解,設(shè)計(jì)上層模塊;進(jìn)行二級(jí)分解,設(shè)計(jì)輸入、輸出和中心變換部分的中、下層模塊。第70頁(yè),共133頁(yè),2024年2月25日,星期天第71頁(yè),共133頁(yè),2024年2月25日,星期天①
在選擇模塊設(shè)計(jì)的次序時(shí),必須對(duì)一個(gè)模塊的全部直接下屬模塊都設(shè)計(jì)完成之后,才能轉(zhuǎn)向另一個(gè)模塊的下層模塊的設(shè)計(jì)。由DFDSC時(shí),應(yīng)遵循一些原則:第72頁(yè),共133頁(yè),2024年2月25日,星期天②
在設(shè)計(jì)下層模塊時(shí),應(yīng)考慮模塊的耦合和內(nèi)聚問(wèn)題,以提高初始結(jié)構(gòu)圖的質(zhì)量。③使用“黑箱”技術(shù):在設(shè)計(jì)當(dāng)前模塊時(shí),先把這個(gè)模塊的所有下層模塊定義成“黑箱”,在設(shè)計(jì)中利用它們時(shí),暫時(shí)不考慮其內(nèi)部結(jié)構(gòu)和實(shí)現(xiàn)。在這一步定義好的“黑箱”,在下一步就可以對(duì)它們進(jìn)行設(shè)計(jì)和加工。這樣,又會(huì)導(dǎo)致更多的“黑箱”。最后,全部“黑箱”的內(nèi)容和結(jié)構(gòu)應(yīng)完全被確定。第73頁(yè),共133頁(yè),2024年2月25日,星期天④在模塊劃分時(shí),一個(gè)模塊的直接下屬模塊一般在5個(gè)左右。如果直接下屬模塊超過(guò)10個(gè),可設(shè)立中間層次。⑤如果出現(xiàn)了以下情況,就停止模塊的功能分解:
當(dāng)模塊不能再細(xì)分為明顯的子任務(wù)時(shí);
當(dāng)分解成用戶(hù)提供的模塊或程序庫(kù)的子程序時(shí);
當(dāng)模塊的界面是輸入/輸出設(shè)備傳送的信息時(shí);
當(dāng)模塊不宜再分解得過(guò)小時(shí)。
第74頁(yè),共133頁(yè),2024年2月25日,星期天6事務(wù)分析在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個(gè)或多個(gè)處理,這些處理能夠完成該作業(yè)要求的功能。這種數(shù)據(jù)流就叫做事務(wù)。與變換分析一樣,事務(wù)分析也是從分析數(shù)據(jù)流圖開(kāi)始,自頂向下,逐步分解,建立系統(tǒng)結(jié)構(gòu)圖。第75頁(yè),共133頁(yè),2024年2月25日,星期天
第76頁(yè),共133頁(yè),2024年2月25日,星期天7事務(wù)分析過(guò)程①
識(shí)別事務(wù)源
利用數(shù)據(jù)流圖和數(shù)據(jù)詞典,從問(wèn)題定義和需求分析的結(jié)果中,找出各種需要處理的事務(wù)。通常,事務(wù)來(lái)自物理輸入裝置。有時(shí),設(shè)計(jì)人員還必須區(qū)別系統(tǒng)的輸入、中心加工和輸出中產(chǎn)生的事務(wù)。第77頁(yè),共133頁(yè),2024年2月25日,星期天②
規(guī)定適當(dāng)?shù)氖聞?wù)型結(jié)構(gòu)
在確定了該數(shù)據(jù)流圖具有事務(wù)型特征之后,根據(jù)模塊劃分理論,建立適當(dāng)?shù)氖聞?wù)型結(jié)構(gòu)。③
識(shí)別各種事務(wù)和它們定義的操作。
從問(wèn)題定義和需求分析中找出的事務(wù)及其操作所必需的全部信息,對(duì)于系統(tǒng)內(nèi)部產(chǎn)生的事務(wù),必須仔細(xì)地定義它們的操作。第78頁(yè),共133頁(yè),2024年2月25日,星期天④
注意利用公用模塊
在事務(wù)分析的過(guò)程中,如果不同事務(wù)的一些中間模塊可由具有類(lèi)似的語(yǔ)法和語(yǔ)義的若干個(gè)低層模塊組成,則可以把這些低層模塊構(gòu)造成公用模塊。⑤
對(duì)每一事務(wù),或?qū)β?lián)系密切的一組事務(wù),建立一個(gè)事務(wù)處理模塊;
如果發(fā)現(xiàn)在系統(tǒng)中有類(lèi)似的事務(wù),可以把它們組成一個(gè)事務(wù)處理模塊。第79頁(yè),共133頁(yè),2024年2月25日,星期天⑥
對(duì)事務(wù)處理模塊規(guī)定它們?nèi)康南聦硬僮髂K⑦對(duì)操作模塊規(guī)定它們的全部細(xì)節(jié)模塊。
變換分析是軟件系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的主要方法。一般,一個(gè)大型的軟件系統(tǒng)是變換型結(jié)構(gòu)和事務(wù)型結(jié)構(gòu)的混合結(jié)構(gòu)。所以,我們通常利用以變換分析為主,事務(wù)分析為輔的方式進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)。第80頁(yè),共133頁(yè),2024年2月25日,星期天SD的總體過(guò)程:“變換”“事務(wù)”精化數(shù)據(jù)流圖流類(lèi)型區(qū)分事務(wù)中心和數(shù)據(jù)接收通路區(qū)分輸入和輸出分支映射成事務(wù)結(jié)構(gòu)映射成變換結(jié)構(gòu)用啟發(fā)式設(shè)計(jì)規(guī)則精化軟件結(jié)構(gòu)導(dǎo)出接口描述和全程數(shù)據(jù)結(jié)構(gòu)復(fù)查詳細(xì)設(shè)計(jì)變換分析事務(wù)分析優(yōu)化的前題是:“Getittowork,thenmakeitfast.”第81頁(yè),共133頁(yè),2024年2月25日,星期天
第82頁(yè),共133頁(yè),2024年2月25日,星期天8軟件模塊結(jié)構(gòu)的改進(jìn)(啟發(fā)式原則)模塊功能的完善化
一個(gè)完整的模塊應(yīng)當(dāng)有以下幾部分:
①執(zhí)行規(guī)定的功能的部分;
②出錯(cuò)處理部分。當(dāng)模塊不能完成規(guī)定的功能時(shí),必須回送出錯(cuò)標(biāo)志,出現(xiàn)例外情況的原因。
③如果需要返回?cái)?shù)據(jù)給它的調(diào)用者,在完成數(shù)據(jù)加工或結(jié)束時(shí),應(yīng)當(dāng)給它的調(diào)用者返回一個(gè)狀態(tài)碼。第83頁(yè),共133頁(yè),2024年2月25日,星期天消除重復(fù)功能,改善軟件結(jié)構(gòu)
①
完全相似:在結(jié)構(gòu)上完全相似,可能只是在數(shù)據(jù)類(lèi)型上不一致。此時(shí)可以采取完全合并的方法。
②局部相似:找出其相同部分,分離出去,重新定義成一個(gè)獨(dú)立的下一層模塊。還可以與它的上級(jí)模塊合并。第84頁(yè),共133頁(yè),2024年2月25日,星期天如左圖,虛線(xiàn)框部分是相似的。此時(shí),不可把兩者合并為一,如圖(b)所示,因?yàn)檫@樣在合并后的模塊內(nèi)部必須設(shè)置許多開(kāi)關(guān),如圖(f)所示,勢(shì)必把模塊降低到邏輯內(nèi)聚一級(jí)。一般處理辦法是分析R1和R2,找出其相同部分,從R1和R2中分離出去,重新定義成一個(gè)獨(dú)立的下一層模塊。R1和R2剩余的部分根據(jù)情況還可以與它的上級(jí)模塊合并,以減少控制的傳遞性、全局?jǐn)?shù)據(jù)的引用和接口的復(fù)雜性,這樣就形成了圖中如(c)、(d)、(e)的各種方案。第85頁(yè),共133頁(yè),2024年2月25日,星期天模塊的作用范圍應(yīng)在控制范圍之內(nèi)
模塊的控制范圍包括它本身及其所有的從屬模塊。模塊的作用范圍是指模塊內(nèi)一個(gè)判定的作用范圍,凡是受這個(gè)判定影響的所有模塊都屬于這個(gè)判定的作用范圍。如果一個(gè)判定的作用范圍包含在這個(gè)判定所在模塊的控制范圍之內(nèi),則這種結(jié)構(gòu)是簡(jiǎn)單的,否則,它的結(jié)構(gòu)是不簡(jiǎn)單的。
第86頁(yè),共133頁(yè),2024年2月25日,星期天(a),模塊A的控制范圍為模塊A,B,C,D,E,F,G.模塊C的控制范圍為模塊C,F,G.(b)表明作用范圍不在控制范圍之內(nèi)。模塊G作出一個(gè)判定之后,若需要模塊C工作,則必須把信號(hào)回送給模塊D,再由D把信號(hào)回送給模塊B。這樣就增加了數(shù)據(jù)的傳送量和模塊間的耦合,使模塊間出現(xiàn)了控制耦合,這顯然不是一個(gè)好的設(shè)計(jì)。圖中反白框表示判定的作用范圍。(c)雖然表明模塊的作用范圍是在控制范圍之內(nèi),可是判定所在模塊TOP所處層次太高,這樣也需要經(jīng)過(guò)不必要的信號(hào)傳送,增加了數(shù)據(jù)的傳送量。雖然可以用,但不是較好的結(jié)構(gòu)。(d)表明作用范圍在控制范圍之內(nèi),只有一個(gè)判定分支有一個(gè)不必要的穿越,是一個(gè)較好的結(jié)構(gòu)。(e)是一個(gè)比較理想的結(jié)構(gòu)。解決:判斷點(diǎn)上移或模塊下移!
從以上比較可知,在一個(gè)設(shè)計(jì)的很好的系統(tǒng)模塊結(jié)構(gòu)圖中,所有受一個(gè)判定影響的模塊都應(yīng)該從屬于該判定所在的模塊,最好局限于作出判定的那個(gè)模塊本身及它的直接下屬模塊。如圖(e)那樣。第87頁(yè),共133頁(yè),2024年2月25日,星期天控制域MACBM的控制域?yàn)閧M,A,B,C}
作用域:M中的一個(gè)判定所影響的模塊。例如:A:…………if……thengotoB1……………………B:……………………B1:……………………作用域在控制域內(nèi)A:…………if……thengotoM1……………………M:……………………M1:gotoC1……………………作用域超出了控制域上例中A的作用超出了控制域。改進(jìn)方法之一,可以把A中的if移到M中;方法之二,可以把C移到A下面。第88頁(yè),共133頁(yè),2024年2月25日,星期天盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。
如果一個(gè)模塊的扇出數(shù)過(guò)大,就意味著該模塊過(guò)分復(fù)雜,需要協(xié)調(diào)和控制過(guò)多的下屬模塊。應(yīng)當(dāng)適當(dāng)增加中間層次的控制模塊。比較適當(dāng)?shù)纳瘸鰯?shù)為2-5,最多不要超過(guò)9.模塊的扇出數(shù)過(guò)小,例如總是1,也不好。這樣將使得結(jié)構(gòu)圖的深度大大增加,不但增大了模塊接口的復(fù)雜性,而且增加了調(diào)用和返回上的時(shí)間開(kāi)銷(xiāo),降低了工作效率。一個(gè)模塊的扇入數(shù)越大,則共享該模塊的上級(jí)模塊數(shù)目越多。但如果一個(gè)模塊的扇入數(shù)太大,例如超過(guò)8,而它又不是公用模塊,說(shuō)明該模塊可能具有多個(gè)功能。在這種情況下應(yīng)當(dāng)對(duì)它進(jìn)一步分析并將其功能分解。
(c)所示模塊Q的扇入數(shù)為9,它又不是公用模塊,通過(guò)分析得知它是3功能的模塊。對(duì)它進(jìn)行分解,增加3個(gè)中間控制模塊Q1,Q2,Q3,而把真正公用部分提取出來(lái)留在Q中,使它成為這3個(gè)中間模塊的公用模塊,使各模塊的功能單一化,從而改善了模塊結(jié)構(gòu),如圖(d).
經(jīng)驗(yàn)證明,一個(gè)設(shè)計(jì)的很好的軟件模塊結(jié)構(gòu),通常上層扇出比較高,中間扇出較少,底層扇入到有高扇入的公用模塊中。第89頁(yè),共133頁(yè),2024年2月25日,星期天
避免或減少使用病態(tài)聯(lián)接
應(yīng)限制使用如下三種病態(tài)聯(lián)接:
①
直接病態(tài)聯(lián)接即模塊A直接從模塊B內(nèi)部取出某些數(shù)據(jù),或者把某些數(shù)據(jù)直接送到模塊B內(nèi)部。第90頁(yè),共133頁(yè),2024年2月25日,星期天
②
公共數(shù)據(jù)域病態(tài)聯(lián)接模塊A和模塊B通過(guò)公共數(shù)據(jù)域,直接傳送或接受數(shù)據(jù),而不是通過(guò)它們的上級(jí)模塊。這種方式將使得模塊間的耦合程度劇增。它不僅影響模塊A和模塊B,而且影響與公共數(shù)據(jù)域有關(guān)聯(lián)的所有模塊。③
通信模塊聯(lián)接即模塊A和模塊B通過(guò)通信模塊TABLEIT傳送數(shù)據(jù)。從表面看,這不是病態(tài)聯(lián)接,因?yàn)槟KA和模塊B都未涉及通信模塊TABLEIT的內(nèi)部。然而,它們之間的通信(即數(shù)據(jù)傳送)沒(méi)有通過(guò)它們的上級(jí)模塊。從這個(gè)意義上講,這種聯(lián)接是病態(tài)的。第91頁(yè),共133頁(yè),2024年2月25日,星期天模塊的大小要適中
模塊的大小,可以用模塊中所含語(yǔ)句的數(shù)量的多少來(lái)衡量。把模塊的大小限制在一定的范圍之內(nèi)。通常規(guī)定其語(yǔ)句行數(shù)在50~100左右,保持在一頁(yè)紙之內(nèi),最多不超過(guò)500行。設(shè)計(jì)功能可預(yù)測(cè)的模塊,但要避免過(guò)分受限制的模塊一個(gè)功能可預(yù)測(cè)的模塊,不論內(nèi)部處理細(xì)節(jié)如何,但對(duì)相同的輸入數(shù)據(jù),總能產(chǎn)生同樣的結(jié)果。但是,如果模塊內(nèi)部蘊(yùn)藏有一些特殊的鮮為人知的功能時(shí),這個(gè)模塊就可能是不可預(yù)測(cè)的。對(duì)于這種模塊,如果調(diào)用者不小心使用,其結(jié)果將不可預(yù)測(cè)。第92頁(yè),共133頁(yè),2024年2月25日,星期天如果一個(gè)模塊的局部數(shù)據(jù)結(jié)構(gòu)的大小、控制流的選擇或者與外界(人、硬軟件)的接口模式被限制死了,則很難適應(yīng)用戶(hù)新的要求或環(huán)境的變更。為了能夠適應(yīng)將來(lái)的變更,軟件模塊中局部數(shù)據(jù)結(jié)構(gòu)的大小應(yīng)當(dāng)是可控制的,控制流的選擇對(duì)于調(diào)用者來(lái)說(shuō),應(yīng)當(dāng)是可預(yù)測(cè)的。而與外界的接口應(yīng)當(dāng)是靈活的。
第93頁(yè),共133頁(yè),2024年2月25日,星期天層次圖和HIPO圖IBM公司發(fā)明的HIPO圖:層次圖
+
輸入/處理/輸出圖
(H圖)(IPO圖)(HierachyInputProcessOutput)第94頁(yè),共133頁(yè),2024年2月25日,星期天1.層次圖(H圖)
表示軟件的層次結(jié)構(gòu)正文加工系統(tǒng)輸入輸出編輯加標(biāo)題存儲(chǔ)檢索編目錄添加刪除插入修改合并列表第95頁(yè),共133頁(yè),2024年2月25日,星期天帶編號(hào)的層次圖(H圖)
正文加工系統(tǒng)輸入1.0輸出2.0編輯3.0加標(biāo)題
4.0存儲(chǔ)5.0檢索6.0編目錄
7.0添加3.1刪除3.2插入3.3修改3.4合并3.5列表3.6第96頁(yè),共133頁(yè),2024年2月25日,星期天2.
HIPO圖
H圖中每一方框(模塊)均有一張IPO圖對(duì)應(yīng)
航線(xiàn)調(diào)度系統(tǒng)HIPO圖舉例
H圖:命令監(jiān)控器1.0取得輸入1.1輸入確認(rèn)
1.2請(qǐng)求確認(rèn)1.3更新處理
1.4第97頁(yè),共133頁(yè),2024年2月25日,星期天傳統(tǒng)的IPO圖舉例輸入處理輸出讀口令請(qǐng)求口令文件1取得輸入2口令確認(rèn)3請(qǐng)求確認(rèn)請(qǐng)求記錄權(quán)限文件4更新處理權(quán)限記錄狀態(tài)報(bào)告響應(yīng)命令監(jiān)控器(1.0)的IPO圖第98頁(yè),共133頁(yè),2024年2月25日,星期天改進(jìn)的IPO圖格式IPO圖系統(tǒng):模塊:編號(hào):作者:日期:被調(diào)用:調(diào)用:輸出:輸入:輸入:局部數(shù)據(jù)元素:注釋?zhuān)旱?9頁(yè),共133頁(yè),2024年2月25日,星期天§4.6詳細(xì)設(shè)計(jì)(過(guò)程設(shè)計(jì)、模塊設(shè)計(jì))主要任務(wù):編寫(xiě)詳細(xì)設(shè)計(jì)說(shuō)明書(shū)為此,設(shè)計(jì)人員應(yīng):(1)確定每個(gè)模塊的算法,用工具表達(dá)算法的過(guò)程,寫(xiě)出模塊的詳細(xì)過(guò)程性描述。(2)確定每一模塊的數(shù)據(jù)結(jié)構(gòu)。(3)確定模塊接口細(xì)節(jié)。詳細(xì)設(shè)計(jì)是編碼的先導(dǎo)。第100頁(yè),共133頁(yè),2024年2月25日,星期天4.6.1詳細(xì)設(shè)計(jì)的描述方法詳細(xì)設(shè)計(jì)工具:(1)圖形工具(2)表格工具(3)語(yǔ)言工具第101頁(yè),共133頁(yè),2024年2月25日,星期天1.程序流程圖2.盒圖(N-S圖)3.問(wèn)題分析圖(PAD)4.過(guò)程設(shè)計(jì)語(yǔ)言(PDL)(偽碼)5.判定表第102頁(yè),共133頁(yè),2024年2月25日,星期天1.盒圖(N-S圖)用方框圖代替?zhèn)鹘y(tǒng)的流程圖描述五種基本控制結(jié)構(gòu)的圖形構(gòu)件(1)順序型ABC第103頁(yè),共133頁(yè),2024年2月25日,星期天(2)選擇型(If–then–else)If–then–elseIf–thenABF條件TAFT條件then–部分then–部分else–部分第104頁(yè),共133頁(yè),2024年2月25日,星期天(3)多分支選擇型(CASE型)A1值1A2An........條件值2值n第105頁(yè),共133頁(yè),2024年2月25日,星期天(4)WHILE重復(fù)型(5)UNTIL重復(fù)型S(循環(huán)體)DO-WHILEPS(循環(huán)體)REPEATUNTILP(先測(cè)試循環(huán))(后測(cè)試循環(huán))循環(huán)條件第106頁(yè),共133頁(yè),2024年2月25日,星期天(6)并行結(jié)構(gòu)A1A2An....第107頁(yè),共133頁(yè),2024年2月25日,星期天(7)移出標(biāo)記ACBFX6TA:D(調(diào)用結(jié)構(gòu))第108頁(yè),共133頁(yè),2024年2月25日,星期天2.問(wèn)題分析圖(PAD)
(ProblemAnalysisDiagram)基本控制結(jié)構(gòu):(1)順序結(jié)構(gòu)(2)選擇結(jié)構(gòu)
ABCABTF條件第109頁(yè),共133頁(yè),2024年2月25日,星期天(3)重復(fù)結(jié)構(gòu)
WHILE
CSUNTIL
CS(先測(cè)試循環(huán))(后測(cè)試循環(huán))等價(jià)的PASCAL語(yǔ)言:REPEATCUNTILS等價(jià)的PASCAL語(yǔ)言:WHILECDOS第110頁(yè),共133頁(yè),2024年2月25日,星期天(4)多分支選擇型(CASE型)
A1值1值2值nA2An......條件第111頁(yè),共133頁(yè),2024年2月25日,星期天3.判定表(決策表)描述多條件、多目標(biāo)動(dòng)作的形式化工具判定表舉例(計(jì)算機(jī)票折扣率)旅游時(shí)間訂票量折扣量7-9,12月≤20≤20>20>20
15%
5%
20%
30%條件類(lèi)別四種條件組合操作條件組合下操作的執(zhí)行1-6,10,11月第112頁(yè),共133頁(yè),2024年2月25日,星期天判定樹(shù)(Decision決策樹(shù))條件1條件2
結(jié)果計(jì)7-9,訂票量>20:15%算12月訂票量≤20:5%折扣1-6,訂票量>20:30%量10,11月訂票量≤20:5%第113頁(yè),共133頁(yè),2024年2月25日,星期天保費(fèi)計(jì)算性別男性別女已婚已婚未婚未婚≤25≤25>25>25≤30≤30>30>30CDABGHEF某保險(xiǎn)公司對(duì)投保人的汽車(chē)保費(fèi)計(jì)算方法如下:?jiǎn)紊砟校挲g30歲以下(含30歲),計(jì)保費(fèi)標(biāo)準(zhǔn)A,30歲以上計(jì)保費(fèi)標(biāo)準(zhǔn)B;已婚男30歲以下(含30歲),計(jì)保費(fèi)標(biāo)準(zhǔn)C,30歲以上計(jì)保費(fèi)標(biāo)準(zhǔn)D,單身女,年齡25歲以下(含25歲),計(jì)保費(fèi)標(biāo)準(zhǔn)E,25歲以上計(jì)保費(fèi)標(biāo)準(zhǔn)F;已婚女25歲以下(含25歲),計(jì)保費(fèi)標(biāo)準(zhǔn)G,25歲以上計(jì)保費(fèi)標(biāo)準(zhǔn)H,請(qǐng)畫(huà)出對(duì)應(yīng)的判定樹(shù)。第114頁(yè),共133頁(yè),2024年2月25日,星期天習(xí)題:某校的課酬計(jì)算方案如下:(l)基本課酬為每節(jié)課10元;(2)如果班級(jí)人數(shù)超過(guò)40人,課酬增加:基本課酬×0.1;(3)如果班級(jí)人數(shù)超過(guò)60人,課酬增加:基本課酬×0.2;(4)如果教師是副教授,課酬增加:基本課酬×0.1;(5)如果教師是教授,課酬增加:基本課酬×0.2;(6)講師,課酬不增加;(7)助教,課酬減少:基本課酬×0.1。請(qǐng)用判定表表達(dá)上述計(jì)算方案。第115頁(yè),共133頁(yè),2024年2月25日,星期天123456789101112人數(shù)≤40TTTT40<人數(shù)≤60TTTT人數(shù)>60TTTT助教TTT講師TTT副教授TTT教授TTT課酬:9元/節(jié)√課酬:10元/節(jié)√√課酬:11元/節(jié)√√√課酬:12元/節(jié)√√√課酬:13元/節(jié)√√課酬:14元/節(jié)√第116頁(yè),共133頁(yè),2024年2月25日,星期天4.PDL(1)關(guān)鍵字的固定語(yǔ)法,它提供了結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說(shuō)明和模塊化的特點(diǎn)。為了使結(jié)構(gòu)清晰和可讀性好,通常在所有可能嵌套使用的控制結(jié)構(gòu)的頭和尾都有關(guān)鍵字,例如,if…fi(或endif)等等。(2)自然語(yǔ)言的自由語(yǔ)法,它描述處理特點(diǎn)。(3)數(shù)據(jù)說(shuō)明的手段。應(yīng)該既包括簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)(例如純量和數(shù)組),又包括復(fù)雜的數(shù)據(jù)結(jié)構(gòu)(例如,鏈表或?qū)哟蔚臄?shù)據(jù)結(jié)構(gòu))。(4)模塊定義和調(diào)用的技術(shù),應(yīng)該提供各種接口描述模式。第117頁(yè),共133頁(yè),2024年2月25日,星期天4.6程序復(fù)雜程度的定量度量4.6.1McCabe方法4.6.2Halstead方法第118頁(yè),共133頁(yè),2024年2月25日,星期天
1、可使用性
①使用簡(jiǎn)單②用戶(hù)界面中所用術(shù)語(yǔ)的標(biāo)準(zhǔn)化和一致性③
具有HELP功能④
快速的系統(tǒng)響應(yīng)和低的系統(tǒng)成本
⑤具有容錯(cuò)能力
2、靈活性
①考慮用戶(hù)的特點(diǎn)、能力、知識(shí)水平。②提供不同的系統(tǒng)響應(yīng)信息。③提供根據(jù)用戶(hù)需求制定和修改界面。
3、界面的復(fù)雜性與可靠性復(fù)雜性—界面規(guī)模及組織的復(fù)雜程度。應(yīng)該愈簡(jiǎn)單愈好??煽啃浴笩o(wú)故障使用的時(shí)間間隔。用戶(hù)界面應(yīng)該能夠保證用戶(hù)正確、可靠地使用系統(tǒng),及程序、數(shù)據(jù)的安全。4.7.1用戶(hù)界面應(yīng)具有的特性4.7用戶(hù)界面設(shè)計(jì)第119頁(yè),共133頁(yè),2024年2月25日,星期天
1、用戶(hù)特性分析—
用戶(hù)模型了解所有用戶(hù)的技能和經(jīng)驗(yàn),針對(duì)用戶(hù)能力設(shè)計(jì)或更改界面。從以下方面分析:用戶(hù)類(lèi)型—通常分為:外行型、初學(xué)型、熟練型、專(zhuān)家型。用戶(hù)特性度量—與用戶(hù)使用模式和用戶(hù)群體能力有關(guān)。包括:用戶(hù)使用頻度、用戶(hù)用機(jī)能力、用戶(hù)的知識(shí)、思維能力等。4.7.2用戶(hù)界面設(shè)計(jì)的任務(wù)這部分工作應(yīng)該與軟件需求分析同步進(jìn)行。包括以下內(nèi)容:2、用戶(hù)界面的任務(wù)分析—任務(wù)模型(DFD圖)是對(duì)系統(tǒng)內(nèi)部活動(dòng)的分解,不僅要進(jìn)行功能分解(用DFD圖描述),還要包括與人相關(guān)的活動(dòng)。每個(gè)加工即一個(gè)功能或任務(wù)。3、確定用戶(hù)界面類(lèi)型第120頁(yè),共133頁(yè),2024年2月25日,星期天1、菜單(menu)
按照顯示方式正文菜單、圖標(biāo)菜單、正文和圖標(biāo)混合菜單,如:開(kāi)始菜單。4.7.3用戶(hù)界面的基本類(lèi)型字符界面、GUI界面、無(wú)交互界面。設(shè)計(jì)原則:以人為本,以用戶(hù)的體驗(yàn)為準(zhǔn)。GUI界面的主要元素如下:按屏幕位置和操作風(fēng)格固定位置、浮動(dòng)位置(彈出)、下拉式、嵌入式混合菜單固定及下拉菜單固定菜單下拉菜單第121頁(yè),共133頁(yè),2024年2月25日,星期天2、圖象在用戶(hù)界面中,加入豐富多彩的畫(huà)面,將能夠更加行象地為用戶(hù)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 湘教版數(shù)學(xué)八年級(jí)上冊(cè)《2.3 等腰三角形》聽(tīng)評(píng)課記錄1
- 特許經(jīng)營(yíng)協(xié)議書(shū)范本
- 地上附著物轉(zhuǎn)讓協(xié)議書(shū)范本
- 社區(qū)團(tuán)購(gòu)合作店鋪協(xié)議書(shū)范本
- 民辦學(xué)校聘用合同范本
- 中圖版地理七年級(jí)下冊(cè)5.2《地方文化特色對(duì)旅游的影響》聽(tīng)課評(píng)課記錄
- 海南省2024七年級(jí)道德與法治上冊(cè)第一單元少年有夢(mèng)第三課夢(mèng)想始于當(dāng)下課后練習(xí)新人教版
- 裝修簡(jiǎn)易施工方案
- 初升高銜接課數(shù)學(xué)試卷
- 巴中市數(shù)學(xué)試卷
- 人教版八年級(jí)上冊(cè)數(shù)學(xué)期末考試試卷含答案
- 2024至2030年全球與中國(guó)市場(chǎng)頭戴式耳機(jī)深度研究報(bào)告
- 學(xué)前教育普及普惠質(zhì)量評(píng)估幼兒園準(zhǔn)備工作詳解
- 青少年人工智能編程水平測(cè)試一級(jí)-模擬真題01含答案
- 第十五章《探究電路》復(fù)習(xí)課課件滬科版九年級(jí)物理
- 2024年中考物理科技創(chuàng)新題型(教師版)
- 唐山市重點(diǎn)中學(xué)2024-2025學(xué)年全國(guó)高考大聯(lián)考信息卷:數(shù)學(xué)試題試卷(3)含解析
- 經(jīng)營(yíng)性房屋租賃項(xiàng)目 投標(biāo)方案(技術(shù)方案)
- 未成年上班知情協(xié)議書(shū)
- 2024年山東藥品食品職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)含答案
- 進(jìn)出潔凈室培訓(xùn)
評(píng)論
0/150
提交評(píng)論