軟件工程第四章 軟件設(shè)計(jì)_第1頁
軟件工程第四章 軟件設(shè)計(jì)_第2頁
軟件工程第四章 軟件設(shè)計(jì)_第3頁
軟件工程第四章 軟件設(shè)計(jì)_第4頁
軟件工程第四章 軟件設(shè)計(jì)_第5頁
已閱讀5頁,還剩128頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

軟件工程第四章軟件設(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ì)是軟件開發(fā)的關(guān)鍵步驟,直接影響軟件的質(zhì)量。在軟件需求分析階段已經(jīng)完全弄清楚了軟件的各種需求,較好地解決了所開發(fā)的軟件“做什么”的問題,并已在軟件需求說明書中詳盡和充分地闡明了這些需求以后,下一步就要著手實(shí)現(xiàn)軟件的需求,即軟件設(shè)計(jì)階段要解決“怎么做”的問題。4.1軟件設(shè)計(jì)階段的任務(wù)與目標(biāo)第2頁,共133頁,2024年2月25日,星期天設(shè)計(jì)過程的一般模型需求描述體系結(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頁,共133頁,2024年2月25日,星期天

4.1.1軟件設(shè)計(jì)在開發(fā)階段中的重要性軟件設(shè)計(jì)功能與性能需求編碼軟件測試程序模塊已測試軟件系統(tǒng)結(jié)構(gòu)設(shè)計(jì)過程設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)信息域需求開發(fā)階段信息流

軟件設(shè)計(jì)階段要解決“如何做”的問題。系統(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ù)庫設(shè)計(jì)要進(jìn)行數(shù)據(jù)庫的概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì)。

過程設(shè)計(jì)確定每個(gè)模塊的處理過程。數(shù)據(jù)庫設(shè)計(jì)第4頁,共133頁,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ù)庫設(shè)計(jì)

(1)數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì):設(shè)計(jì)抽象的數(shù)據(jù)結(jié)構(gòu)(2)數(shù)據(jù)庫的概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì)3.編寫概要設(shè)計(jì)文檔

文檔主要有:

(1)概要設(shè)計(jì)說明書。

(2)數(shù)據(jù)庫設(shè)計(jì)說明書,主要給出所使用的DBMS簡介、數(shù)據(jù)庫的概念模型、邏輯設(shè)計(jì)、結(jié)果。

(3)用戶手冊(cè),對(duì)需求分析階段編寫的用戶手冊(cè)進(jìn)行補(bǔ)充。

(4)修訂測試計(jì)劃,對(duì)測試策略、方法、步驟提出明確要求。

第5頁,共133頁,2024年2月25日,星期天詳細(xì)設(shè)計(jì):確定模塊內(nèi)算法;數(shù)據(jù)結(jié)構(gòu)詳細(xì)設(shè)計(jì)(JACKSON方法);接口內(nèi)部的細(xì)節(jié)。第6頁,共133頁,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ī)格說明清晰、簡潔、完整和無二義性。常用的設(shè)計(jì)方法有:SD法、Jackson法、HIPO法、Parnas法、Warnier法等。第7頁,共133頁,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頁,共133頁,2024年2月25日,星期天4.2.1軟件結(jié)構(gòu)的基本概念二、模塊化

模塊化就是將系統(tǒng)劃分為若干個(gè)模塊,每個(gè)模塊完成一個(gè)子功能。模塊化的目的是將系統(tǒng)“分而治之”,模塊化能夠降低問題的復(fù)雜性,使軟件結(jié)構(gòu)清晰,易閱讀、易理解,易于測試和調(diào)試,因而也有助于提高軟件的可靠性。

軟件結(jié)構(gòu)表示軟件系統(tǒng)的構(gòu)成,是軟件模塊間關(guān)系的表示,下圖則為軟件結(jié)構(gòu)示意圖。下面先介紹幾個(gè)相關(guān)的的概念。ABCDEFGHIJKLM一、模塊(Module)

模塊是程序?qū)ο笥忻值募?。例如,過程、函數(shù)、子程序、宏等,是構(gòu)成軟件系統(tǒng)結(jié)構(gòu)的基本元素。 軟件結(jié)構(gòu)圖第9頁,共133頁,2024年2月25日,星期天模塊化降低軟件復(fù)雜度的簡單證明令:C(X)表示問題X的復(fù)雜度函數(shù);

E(X)解決問題X所需工作量的復(fù)雜度函數(shù);若:有問題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)將問題(P1+P2)劃分為兩個(gè)問題P1和P2后,其工作量和復(fù)雜度都降低。并非模塊分得越小越好,因?yàn)槟K之間接口的復(fù)雜度和工作量增加。顯然,每個(gè)軟件系統(tǒng)都有一個(gè)最佳模塊數(shù)M。注意選擇分解的最佳模塊數(shù)。右上圖描述了模塊化與軟件成本的關(guān)系。軟件總成本模塊化與軟件成本的關(guān)系成本模塊數(shù)目模塊成本接口成本}最小成本區(qū)M第10頁,共133頁,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頁,共133頁,2024年2月25日,星期天4.2.2軟件的樹狀結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu)

由模塊連接而得到的軟件結(jié)構(gòu)最普通的形式就是樹狀結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu)。在樹狀結(jié)構(gòu)中,位于最上層的根部是頂層模塊,它是程序的主模塊。與其聯(lián)系的有若干下屬模塊,各下屬模塊還可以進(jìn)一步引出更下一層的下屬模塊,如圖所示的樹狀結(jié)構(gòu)。樹狀結(jié)構(gòu)的特點(diǎn)是:整個(gè)結(jié)構(gòu)只有一個(gè)頂層模塊,而對(duì)于任何一個(gè)下屬模塊來說,它只有一個(gè)上級(jí)模塊,而且同一層模塊之間不發(fā)生關(guān)系。頂層1層2層3層

軟件的樹狀結(jié)構(gòu)ABCDEFGHIKLM第12頁,共133頁,2024年2月25日,星期天

在網(wǎng)狀結(jié)構(gòu)中,任何兩個(gè)模塊間都可以有雙向的關(guān)系,不分層次。任何兩個(gè)模塊都是平等的,沒有從屬關(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ù)雜,處理起來勢(shì)必引起許多麻煩,這與原來劃分模塊為便于處理的意圖相矛盾。所以在軟件開發(fā)的實(shí)踐中,人們通常采用樹狀結(jié)構(gòu),而不采用網(wǎng)狀結(jié)構(gòu)。第13頁,共133頁,2024年2月25日,星期天模塊5模塊5模塊4模塊4模塊1模塊3模塊2valuesvaluesdatadata模塊1模塊2模塊3valuesvaluesdatadata4.2.3軟件結(jié)構(gòu)圖(SC圖)

結(jié)構(gòu)圖(StructureChart,簡稱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頁,共133頁,2024年2月25日,星期天例:畫出打印報(bào)告的軟件結(jié)構(gòu)圖

調(diào)用次序?yàn)樯蠈诱{(diào)用下層;同層按照數(shù)據(jù)傳遞關(guān)系確定;一般從左到右執(zhí)行。

執(zhí)行過程即按照數(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頁,共133頁,2024年2月25日,星期天4.3模塊的獨(dú)立性

上一節(jié)討論了關(guān)于軟件結(jié)構(gòu)與軟件結(jié)構(gòu)圖的概念,本節(jié)進(jìn)一步討論影響軟件系統(tǒng)質(zhì)量的另一個(gè)關(guān)鍵問題,模塊的獨(dú)立性問題。模塊化方法已經(jīng)為所有工程領(lǐng)域所接受。模塊化的主要優(yōu)點(diǎn)是,模塊化設(shè)計(jì)降低了軟件系統(tǒng)的復(fù)雜性,使得系統(tǒng)容易修改,同時(shí)使得系統(tǒng)各個(gè)部分可以并行開發(fā),從而提高了軟件的生產(chǎn)率。提高模塊質(zhì)量在于提高模塊獨(dú)立性。模塊的獨(dú)立性用耦合性和內(nèi)聚性來衡量。 第16頁,共133頁,2024年2月25日,星期天4.3.1模塊獨(dú)立性(moduleindependence)

“模塊”,又稱“構(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)中其他模塊的接口是簡單的。即功能專一,模塊之間無過多的相互作用的模塊。這種類型的模塊可以并行開發(fā),模塊獨(dú)立性越強(qiáng),開發(fā)越容易。獨(dú)立性強(qiáng)的模塊,還能減少錯(cuò)誤的影響,使模塊容易組合、修改及測試。第17頁,共133頁,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頁,共133頁,2024年2月25日,星期天在描述一個(gè)模塊時(shí),還必須按模塊的外部特性與內(nèi)部特性分別描述模塊的外部特性模塊的模塊名、參數(shù)表、其中的輸入?yún)?shù)和輸出參數(shù),以及給程序以至整個(gè)系統(tǒng)造成的影響模塊的內(nèi)部特性完成其功能的程序代碼和僅供該模塊內(nèi)部使用的數(shù)據(jù)第19頁,共133頁,2024年2月25日,星期天模塊間耦合的類型:第20頁,共133頁,2024年2月25日,星期天內(nèi)容耦合(ContentCoupling)如果發(fā)生下列情形,兩個(gè)模塊之間就發(fā)生了內(nèi)容耦合。(1)一個(gè)模塊直接訪問另一個(gè)模塊的內(nèi)部數(shù)據(jù);(2)一個(gè)模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部;(3)兩個(gè)模塊有一部分程序代碼重迭(只可能出現(xiàn)在匯編語言中);(4)一個(gè)模塊有多個(gè)入口。最不好的耦合形式

!!!第21頁,共133頁,2024年2月25日,星期天若一組模塊都訪問同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。公共耦合(CommonCoupling)第22頁,共133頁,2024年2月25日,星期天公共耦合的復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而顯著增加。若只是兩模塊間有公共數(shù)據(jù)環(huán)境,則公共耦合有兩種情況。松散公共耦合和緊密公共耦合。第23頁,共133頁,2024年2月25日,星期天Global:V1V2A:……………………A1=V1+V2……………………B:……………………V1=B1……………………Global:V1V2A:……………………V1++……………………B:……………………V2=B1+V1……………………問題:

公共部分的改動(dòng)將影響所有調(diào)用它的模塊;

公共部分的數(shù)據(jù)存取無法控制;

復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而增加。第24頁,共133頁,2024年2月25日,星期天公共耦合舉例A公共數(shù)據(jù)區(qū)CB模塊A、B、C間存在錯(cuò)綜復(fù)雜的聯(lián)系第25頁,共133頁,2024年2月25日,星期天(1)軟件可理解性降低(2)診斷錯(cuò)誤困難(3)軟件可維護(hù)性差,(4)軟件可靠性差(公共數(shù)據(jù)區(qū)及全程變量無保護(hù)措施)慎用公共數(shù)據(jù)區(qū)和全程變量!!!公共耦合存在的問題:第26頁,共133頁,2024年2月25日,星期天外部耦合(ExternalCoupling)一組模塊都訪問同一全局簡單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。一組模塊均與同一外部環(huán)境關(guān)聯(lián)(例如,I/O模塊與特定的設(shè)備、格式和通信協(xié)議相關(guān)聯(lián)),它們之間便存在外部耦合。外部偶合必不可少,但這種模塊數(shù)目應(yīng)盡量少。第27頁,共133頁,2024年2月25日,星期天控制耦合(ControlCoupling)如果一個(gè)模塊通過傳送開關(guān)、標(biāo)志、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合。第28頁,共133頁,2024年2月25日,星期天控制耦合舉例A計(jì)算平均分或最高分B平均/最高(控制信號(hào))成績讀入分?jǐn)?shù)輸出結(jié)果計(jì)算平均分計(jì)算最高分平均/最高?B第29頁,共133頁,2024年2月25日,星期天控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊必須知道被調(diào)模塊的內(nèi)部邏輯,增加了相互依賴去除模塊間控制耦合的方法:(1)將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進(jìn)行(2)被調(diào)用模塊分解成若干單一功能模塊第30頁,共133頁,2024年2月25日,星期天改控制耦合為數(shù)據(jù)耦合舉例A計(jì)算平均分B1平均成績最高成績計(jì)算最高分B2第31頁,共133頁,2024年2月25日,星期天標(biāo)記耦合(StampCoupling)一個(gè)模塊訪問另一個(gè)模塊時(shí),彼此之間是通過簡單數(shù)據(jù)參數(shù)

(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量)來交換輸入、輸出信息的。數(shù)據(jù)耦合(DataCoupling)一組模塊通過參數(shù)表傳遞記錄信息,就是標(biāo)記耦合。這個(gè)記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡單變量。第32頁,共133頁,2024年2月25日,星期天數(shù)據(jù)耦合舉例開發(fā)票計(jì)算水費(fèi)單價(jià)數(shù)量金額第33頁,共133頁,2024年2月25日,星期天標(biāo)記耦合舉例計(jì)算水電費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)住戶情況水費(fèi)電費(fèi)住戶情況“住戶情況”是一個(gè)數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此數(shù)據(jù)結(jié)構(gòu)有關(guān).“計(jì)算水費(fèi)”和“計(jì)算電費(fèi)”本無關(guān),由于引用了此數(shù)據(jù)結(jié)構(gòu)產(chǎn)生依賴關(guān)系,它們之間也是標(biāo)記偶合.第34頁,共133頁,2024年2月25日,星期天將標(biāo)記耦合修改為數(shù)據(jù)耦合舉例計(jì)算水電費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)本月用水量本月用電量水費(fèi)電費(fèi)第35頁,共133頁,2024年2月25日,星期天兩個(gè)模塊之間沒有直接關(guān)系,它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實(shí)現(xiàn)的。非直接耦合的模塊獨(dú)立性最強(qiáng)。非直接耦合(NondirectCoupling)第36頁,共133頁,2024年2月25日,星期天如何降低模塊間耦合度:(1)盡量使用數(shù)據(jù)耦合少用控制耦合限制公共耦合的范圍

堅(jiān)決避免使用內(nèi)容耦合(2)降低接口的復(fù)雜性第37頁,共133頁,2024年2月25日,星期天2.模塊獨(dú)立性的度量之二:內(nèi)聚性

一個(gè)模塊內(nèi)部元素在功能上相互關(guān)聯(lián)的強(qiáng)度

設(shè)計(jì)目標(biāo):高內(nèi)聚

(模塊在軟件過程中完成單一的任務(wù))第38頁,共133頁,2024年2月25日,星期天模塊的內(nèi)聚性類型:第39頁,共133頁,2024年2月25日,星期天(1)偶然內(nèi)聚(巧合內(nèi)聚)

模塊內(nèi)各部分間無聯(lián)系A(chǔ)BCMMOVEOTORREADFILEFMOVESTOT模塊M中的三個(gè)語句沒有任何聯(lián)系缺點(diǎn):可理解性差,可修改性差例:第40頁,共133頁,2024年2月25日,星期天(2)邏輯內(nèi)聚(LogicalCohesion)這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時(shí),由傳送給模塊的判定參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。第41頁,共133頁,2024年2月25日,星期天邏輯內(nèi)聚模塊ABCEFGABCEFGA1B1C1EFG模塊內(nèi)部邏輯E、F、G邏輯功能相似,組成新模塊EFG缺點(diǎn):增強(qiáng)了耦合程度(控制耦合)

不易修改,效率低公用代碼段公用代碼段第42頁,共133頁,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頁,共133頁,2024年2月25日,星期天使用流程圖做為工具設(shè)計(jì)程序時(shí),把流程圖中的某一部分劃出組成模塊,就得到過程內(nèi)聚模塊。例如,把流程圖中的循環(huán)部分、判定部分、計(jì)算部分分成三個(gè)模塊,這三個(gè)模塊都是過程內(nèi)聚模塊。模塊內(nèi)各處理成分相關(guān),且必須以特定次序執(zhí)行(4)過程內(nèi)聚(ProceduralCohesion)第44頁,共133頁,2024年2月25日,星期天過程內(nèi)聚模塊讀入成績單審查成績單統(tǒng)計(jì)成績打印成績讀入并審查成績單統(tǒng)計(jì)并打印成績單第45頁,共133頁,2024年2月25日,星期天如果一個(gè)模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過數(shù)據(jù)流圖來定義的。(5)通信內(nèi)聚(CommunicationCohesion)第46頁,共133頁,2024年2月25日,星期天通信內(nèi)聚模塊例產(chǎn)生工資報(bào)表計(jì)算平均工資職工工資記錄職工工資報(bào)表平均工資產(chǎn)生職工工資報(bào)表并計(jì)算平均工資模塊第47頁,共133頁,2024年2月25日,星期天第48頁,共133頁,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頁,共133頁,2024年2月25日,星期天第50頁,共133頁,2024年2月25日,星期天一個(gè)模塊中各個(gè)部分都是完成某一具體功能必不可少的組成部分,或者說該模塊中所有部分都是為了完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱該模塊為功能內(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頁,共133頁,2024年2月25日,星期天內(nèi)聚與耦合密切相關(guān),同其它模塊強(qiáng)耦合的模塊意味者弱內(nèi)聚,強(qiáng)內(nèi)聚模塊意味著與其它模塊間松散耦合.設(shè)計(jì)目標(biāo):力爭強(qiáng)內(nèi)聚、弱耦合第52頁,共133頁,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)生描述各模塊程序過程的詳細(xì)文檔。第53頁,共133頁,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)種類是有限的,它們是構(gòu)成一些更復(fù)雜結(jié)構(gòu)的基本構(gòu)件塊。數(shù)據(jù)結(jié)構(gòu)第54頁,共133頁,2024年2月25日,星期天第55頁,共133頁,2024年2月25日,星期天軟件過程軟件過程必須提供精確的處理說明,包括事件的順序、正確的判定點(diǎn)、重復(fù)的操作直至數(shù)據(jù)的組織和結(jié)構(gòu)等等。程序結(jié)構(gòu)與軟件過程是有關(guān)系的。對(duì)每個(gè)模塊的處理必須指明該模塊所在的上下級(jí)環(huán)境。軟件過程遵從程序結(jié)構(gòu)的主從關(guān)系,因此它也是層次化的。下圖軟件過程側(cè)重與描述模塊間的處理細(xì)節(jié)。第56頁,共133頁,2024年2月25日,星期天第57頁,共133頁,2024年2月25日,星期天信息隱蔽由parnas方法提倡的信息隱蔽是指,每個(gè)模塊的實(shí)現(xiàn)細(xì)節(jié)對(duì)于其它模塊來說是隱蔽的。也就是說,模塊中所包含的信息(包括數(shù)據(jù)和過程)不允許其它不需要這些信息的模塊使用。第58頁,共133頁,2024年2月25日,星期天4.5概要設(shè)計(jì)(總體設(shè)計(jì))主要確定:軟件系統(tǒng)的結(jié)構(gòu)各模塊功能及模塊間聯(lián)系(接口)表示軟件結(jié)構(gòu)的圖形工具結(jié)構(gòu)圖層次圖和HIPO圖第59頁,共133頁,2024年2月25日,星期天4.5結(jié)構(gòu)化設(shè)計(jì)方法首先研究、分析和審查數(shù)據(jù)流圖。從軟件的需求規(guī)格說明中弄清數(shù)據(jù)流加工的過程,對(duì)于發(fā)現(xiàn)的問題及時(shí)解決。然后根據(jù)數(shù)據(jù)流圖決定問題的類型。數(shù)據(jù)處理問題典型的類型有兩種:變換型和事務(wù)型。針對(duì)兩種不同的類型分別進(jìn)行分析處理。第60頁,共133頁,2024年2月25日,星期天由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。利用一些啟發(fā)式原則來改進(jìn)系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止。修改和補(bǔ)充數(shù)據(jù)詞典。制定測試計(jì)劃?;舅枷?DFDSystemHierarchy第61頁,共133頁,2024年2月25日,星期天InternalrepresentationInformationTransformflowOutgoingflowIncomingflowExternalrepresentationTime事實(shí)上所有信息流都可歸結(jié)為變換流⑴變換流(TransformFlow):1、DataFlow的分類第62頁,共133頁,2024年2月25日,星期天⑵事務(wù)流(TransactionFlow)

…TTransactionrequest

…Actionpaths

…T=Calloneoftheseveralsubroutinesdependingonthetypeoftheincomingtransactionrequest.當(dāng)信息流具有明顯的“發(fā)射中心”時(shí),可歸結(jié)為事務(wù)流。第63頁,共133頁,2024年2月25日,星期天2系統(tǒng)結(jié)構(gòu)圖中的模塊分類傳入模塊─從下屬模塊取得數(shù)據(jù),經(jīng)過某些處理,再將其傳送給上級(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頁,共133頁,2024年2月25日,星期天第65頁,共133頁,2024年2月25日,星期天3變換型系統(tǒng)結(jié)構(gòu)圖變換型數(shù)據(jù)處理問題的工作過程大致分為三步,即取得數(shù)據(jù),變換數(shù)據(jù)和給出數(shù)據(jù)。相應(yīng)于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),變換型系統(tǒng)結(jié)構(gòu)圖由輸入、中心變換和輸出等三部分組成。第66頁,共133頁,2024年2月25日,星期天第67頁,共133頁,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ù)的類型,選擇某一事務(wù)處理模塊執(zhí)行。各事務(wù)處理模塊并列。每個(gè)事務(wù)處理模塊可能要調(diào)用若干個(gè)操作模塊,而操作模塊又可能調(diào)用若干個(gè)細(xì)節(jié)模塊。第68頁,共133頁,2024年2月25日,星期天第69頁,共133頁,2024年2月25日,星期天5變換分析變換分析方法由以下四步組成:審查數(shù)據(jù)流圖;區(qū)分有效(邏輯)輸入、有效(邏輯)輸出和中心變換部分;進(jìn)行一級(jí)分解,設(shè)計(jì)上層模塊;進(jìn)行二級(jí)分解,設(shè)計(jì)輸入、輸出和中心變換部分的中、下層模塊。第70頁,共133頁,2024年2月25日,星期天第71頁,共133頁,2024年2月25日,星期天①

在選擇模塊設(shè)計(jì)的次序時(shí),必須對(duì)一個(gè)模塊的全部直接下屬模塊都設(shè)計(jì)完成之后,才能轉(zhuǎn)向另一個(gè)模塊的下層模塊的設(shè)計(jì)。由DFDSC時(shí),應(yīng)遵循一些原則:第72頁,共133頁,2024年2月25日,星期天②

在設(shè)計(jì)下層模塊時(shí),應(yīng)考慮模塊的耦合和內(nèi)聚問題,以提高初始結(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頁,共133頁,2024年2月25日,星期天④在模塊劃分時(shí),一個(gè)模塊的直接下屬模塊一般在5個(gè)左右。如果直接下屬模塊超過10個(gè),可設(shè)立中間層次。⑤如果出現(xiàn)了以下情況,就停止模塊的功能分解:

當(dāng)模塊不能再細(xì)分為明顯的子任務(wù)時(shí);

當(dāng)分解成用戶提供的模塊或程序庫的子程序時(shí);

當(dāng)模塊的界面是輸入/輸出設(shè)備傳送的信息時(shí);

當(dāng)模塊不宜再分解得過小時(shí)。

第74頁,共133頁,2024年2月25日,星期天6事務(wù)分析在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個(gè)或多個(gè)處理,這些處理能夠完成該作業(yè)要求的功能。這種數(shù)據(jù)流就叫做事務(wù)。與變換分析一樣,事務(wù)分析也是從分析數(shù)據(jù)流圖開始,自頂向下,逐步分解,建立系統(tǒng)結(jié)構(gòu)圖。第75頁,共133頁,2024年2月25日,星期天

第76頁,共133頁,2024年2月25日,星期天7事務(wù)分析過程①

識(shí)別事務(wù)源

利用數(shù)據(jù)流圖和數(shù)據(jù)詞典,從問題定義和需求分析的結(jié)果中,找出各種需要處理的事務(wù)。通常,事務(wù)來自物理輸入裝置。有時(shí),設(shè)計(jì)人員還必須區(qū)別系統(tǒng)的輸入、中心加工和輸出中產(chǎn)生的事務(wù)。第77頁,共133頁,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ù)及其操作所必需的全部信息,對(duì)于系統(tǒng)內(nèi)部產(chǎn)生的事務(wù),必須仔細(xì)地定義它們的操作。第78頁,共133頁,2024年2月25日,星期天④

注意利用公用模塊

在事務(wù)分析的過程中,如果不同事務(wù)的一些中間模塊可由具有類似的語法和語義的若干個(gè)低層模塊組成,則可以把這些低層模塊構(gòu)造成公用模塊。⑤

對(duì)每一事務(wù),或?qū)β?lián)系密切的一組事務(wù),建立一個(gè)事務(wù)處理模塊;

如果發(fā)現(xiàn)在系統(tǒng)中有類似的事務(wù),可以把它們組成一個(gè)事務(wù)處理模塊。第79頁,共133頁,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頁,共133頁,2024年2月25日,星期天SD的總體過程:“變換”“事務(wù)”精化數(shù)據(jù)流圖流類型區(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頁,共133頁,2024年2月25日,星期天

第82頁,共133頁,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頁,共133頁,2024年2月25日,星期天消除重復(fù)功能,改善軟件結(jié)構(gòu)

完全相似:在結(jié)構(gòu)上完全相似,可能只是在數(shù)據(jù)類型上不一致。此時(shí)可以采取完全合并的方法。

②局部相似:找出其相同部分,分離出去,重新定義成一個(gè)獨(dú)立的下一層模塊。還可以與它的上級(jí)模塊合并。第84頁,共133頁,2024年2月25日,星期天如左圖,虛線框部分是相似的。此時(shí),不可把兩者合并為一,如圖(b)所示,因?yàn)檫@樣在合并后的模塊內(nèi)部必須設(shè)置許多開關(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頁,共133頁,2024年2月25日,星期天模塊的作用范圍應(yīng)在控制范圍之內(nèi)

模塊的控制范圍包括它本身及其所有的從屬模塊。模塊的作用范圍是指模塊內(nèi)一個(gè)判定的作用范圍,凡是受這個(gè)判定影響的所有模塊都屬于這個(gè)判定的作用范圍。如果一個(gè)判定的作用范圍包含在這個(gè)判定所在模塊的控制范圍之內(nèi),則這種結(jié)構(gòu)是簡單的,否則,它的結(jié)構(gòu)是不簡單的。

第86頁,共133頁,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)過不必要的信號(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頁,共133頁,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頁,共133頁,2024年2月25日,星期天盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。

如果一個(gè)模塊的扇出數(shù)過大,就意味著該模塊過分復(fù)雜,需要協(xié)調(diào)和控制過多的下屬模塊。應(yīng)當(dāng)適當(dāng)增加中間層次的控制模塊。比較適當(dāng)?shù)纳瘸鰯?shù)為2-5,最多不要超過9.模塊的扇出數(shù)過小,例如總是1,也不好。這樣將使得結(jié)構(gòu)圖的深度大大增加,不但增大了模塊接口的復(fù)雜性,而且增加了調(diào)用和返回上的時(shí)間開銷,降低了工作效率。一個(gè)模塊的扇入數(shù)越大,則共享該模塊的上級(jí)模塊數(shù)目越多。但如果一個(gè)模塊的扇入數(shù)太大,例如超過8,而它又不是公用模塊,說明該模塊可能具有多個(gè)功能。在這種情況下應(yīng)當(dāng)對(duì)它進(jìn)一步分析并將其功能分解。

(c)所示模塊Q的扇入數(shù)為9,它又不是公用模塊,通過分析得知它是3功能的模塊。對(duì)它進(jìn)行分解,增加3個(gè)中間控制模塊Q1,Q2,Q3,而把真正公用部分提取出來留在Q中,使它成為這3個(gè)中間模塊的公用模塊,使各模塊的功能單一化,從而改善了模塊結(jié)構(gòu),如圖(d).

經(jīng)驗(yàn)證明,一個(gè)設(shè)計(jì)的很好的軟件模塊結(jié)構(gòu),通常上層扇出比較高,中間扇出較少,底層扇入到有高扇入的公用模塊中。第89頁,共133頁,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頁,共133頁,2024年2月25日,星期天

公共數(shù)據(jù)域病態(tài)聯(lián)接模塊A和模塊B通過公共數(shù)據(jù)域,直接傳送或接受數(shù)據(jù),而不是通過它們的上級(jí)模塊。這種方式將使得模塊間的耦合程度劇增。它不僅影響模塊A和模塊B,而且影響與公共數(shù)據(jù)域有關(guān)聯(lián)的所有模塊。③

通信模塊聯(lián)接即模塊A和模塊B通過通信模塊TABLEIT傳送數(shù)據(jù)。從表面看,這不是病態(tài)聯(lián)接,因?yàn)槟KA和模塊B都未涉及通信模塊TABLEIT的內(nèi)部。然而,它們之間的通信(即數(shù)據(jù)傳送)沒有通過它們的上級(jí)模塊。從這個(gè)意義上講,這種聯(lián)接是病態(tài)的。第91頁,共133頁,2024年2月25日,星期天模塊的大小要適中

模塊的大小,可以用模塊中所含語句的數(shù)量的多少來衡量。把模塊的大小限制在一定的范圍之內(nèi)。通常規(guī)定其語句行數(shù)在50~100左右,保持在一頁紙之內(nèi),最多不超過500行。設(shè)計(jì)功能可預(yù)測的模塊,但要避免過分受限制的模塊一個(gè)功能可預(yù)測的模塊,不論內(nèi)部處理細(xì)節(jié)如何,但對(duì)相同的輸入數(shù)據(jù),總能產(chǎn)生同樣的結(jié)果。但是,如果模塊內(nèi)部蘊(yùn)藏有一些特殊的鮮為人知的功能時(shí),這個(gè)模塊就可能是不可預(yù)測的。對(duì)于這種模塊,如果調(diào)用者不小心使用,其結(jié)果將不可預(yù)測。第92頁,共133頁,2024年2月25日,星期天如果一個(gè)模塊的局部數(shù)據(jù)結(jié)構(gòu)的大小、控制流的選擇或者與外界(人、硬軟件)的接口模式被限制死了,則很難適應(yīng)用戶新的要求或環(huán)境的變更。為了能夠適應(yīng)將來的變更,軟件模塊中局部數(shù)據(jù)結(jié)構(gòu)的大小應(yīng)當(dāng)是可控制的,控制流的選擇對(duì)于調(diào)用者來說,應(yīng)當(dāng)是可預(yù)測的。而與外界的接口應(yīng)當(dāng)是靈活的。

第93頁,共133頁,2024年2月25日,星期天層次圖和HIPO圖IBM公司發(fā)明的HIPO圖:層次圖

+

輸入/處理/輸出圖

(H圖)(IPO圖)(HierachyInputProcessOutput)第94頁,共133頁,2024年2月25日,星期天1.層次圖(H圖)

表示軟件的層次結(jié)構(gòu)正文加工系統(tǒng)輸入輸出編輯加標(biāo)題存儲(chǔ)檢索編目錄添加刪除插入修改合并列表第95頁,共133頁,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頁,共133頁,2024年2月25日,星期天2.

HIPO圖

H圖中每一方框(模塊)均有一張IPO圖對(duì)應(yīng)

航線調(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頁,共133頁,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頁,共133頁,2024年2月25日,星期天改進(jìn)的IPO圖格式IPO圖系統(tǒng):模塊:編號(hào):作者:日期:被調(diào)用:調(diào)用:輸出:輸入:輸入:局部數(shù)據(jù)元素:注釋:第99頁,共133頁,2024年2月25日,星期天§4.6詳細(xì)設(shè)計(jì)(過程設(shè)計(jì)、模塊設(shè)計(jì))主要任務(wù):編寫詳細(xì)設(shè)計(jì)說明書為此,設(shè)計(jì)人員應(yīng):(1)確定每個(gè)模塊的算法,用工具表達(dá)算法的過程,寫出模塊的詳細(xì)過程性描述。(2)確定每一模塊的數(shù)據(jù)結(jié)構(gòu)。(3)確定模塊接口細(xì)節(jié)。詳細(xì)設(shè)計(jì)是編碼的先導(dǎo)。第100頁,共133頁,2024年2月25日,星期天4.6.1詳細(xì)設(shè)計(jì)的描述方法詳細(xì)設(shè)計(jì)工具:(1)圖形工具(2)表格工具(3)語言工具第101頁,共133頁,2024年2月25日,星期天1.程序流程圖2.盒圖(N-S圖)3.問題分析圖(PAD)4.過程設(shè)計(jì)語言(PDL)(偽碼)5.判定表第102頁,共133頁,2024年2月25日,星期天1.盒圖(N-S圖)用方框圖代替?zhèn)鹘y(tǒng)的流程圖描述五種基本控制結(jié)構(gòu)的圖形構(gòu)件(1)順序型ABC第103頁,共133頁,2024年2月25日,星期天(2)選擇型(If–then–else)If–then–elseIf–thenABF條件TAFT條件then–部分then–部分else–部分第104頁,共133頁,2024年2月25日,星期天(3)多分支選擇型(CASE型)A1值1A2An........條件值2值n第105頁,共133頁,2024年2月25日,星期天(4)WHILE重復(fù)型(5)UNTIL重復(fù)型S(循環(huán)體)DO-WHILEPS(循環(huán)體)REPEATUNTILP(先測試循環(huán))(后測試循環(huán))循環(huán)條件第106頁,共133頁,2024年2月25日,星期天(6)并行結(jié)構(gòu)A1A2An....第107頁,共133頁,2024年2月25日,星期天(7)移出標(biāo)記ACBFX6TA:D(調(diào)用結(jié)構(gòu))第108頁,共133頁,2024年2月25日,星期天2.問題分析圖(PAD)

(ProblemAnalysisDiagram)基本控制結(jié)構(gòu):(1)順序結(jié)構(gòu)(2)選擇結(jié)構(gòu)

ABCABTF條件第109頁,共133頁,2024年2月25日,星期天(3)重復(fù)結(jié)構(gòu)

WHILE

CSUNTIL

CS(先測試循環(huán))(后測試循環(huán))等價(jià)的PASCAL語言:REPEATCUNTILS等價(jià)的PASCAL語言:WHILECDOS第110頁,共133頁,2024年2月25日,星期天(4)多分支選擇型(CASE型)

A1值1值2值nA2An......條件第111頁,共133頁,2024年2月25日,星期天3.判定表(決策表)描述多條件、多目標(biāo)動(dòng)作的形式化工具判定表舉例(計(jì)算機(jī)票折扣率)旅游時(shí)間訂票量折扣量7-9,12月≤20≤20>20>20

15%

5%

20%

30%條件類別四種條件組合操作條件組合下操作的執(zhí)行1-6,10,11月第112頁,共133頁,2024年2月25日,星期天判定樹(Decision決策樹)條件1條件2

結(jié)果計(jì)7-9,訂票量>20:15%算12月訂票量≤20:5%折扣1-6,訂票量>20:30%量10,11月訂票量≤20:5%第113頁,共133頁,2024年2月25日,星期天保費(fèi)計(jì)算性別男性別女已婚已婚未婚未婚≤25≤25>25>25≤30≤30>30>30CDABGHEF某保險(xiǎn)公司對(duì)投保人的汽車保費(fèi)計(jì)算方法如下:單身男,年齡30歲以下(含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)畫出對(duì)應(yīng)的判定樹。第114頁,共133頁,2024年2月25日,星期天習(xí)題:某校的課酬計(jì)算方案如下:(l)基本課酬為每節(jié)課10元;(2)如果班級(jí)人數(shù)超過40人,課酬增加:基本課酬×0.1;(3)如果班級(jí)人數(shù)超過60人,課酬增加:基本課酬×0.2;(4)如果教師是副教授,課酬增加:基本課酬×0.1;(5)如果教師是教授,課酬增加:基本課酬×0.2;(6)講師,課酬不增加;(7)助教,課酬減少:基本課酬×0.1。請(qǐng)用判定表表達(dá)上述計(jì)算方案。第115頁,共133頁,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頁,共133頁,2024年2月25日,星期天4.PDL(1)關(guān)鍵字的固定語法,它提供了結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說明和模塊化的特點(diǎn)。為了使結(jié)構(gòu)清晰和可讀性好,通常在所有可能嵌套使用的控制結(jié)構(gòu)的頭和尾都有關(guān)鍵字,例如,if…fi(或endif)等等。(2)自然語言的自由語法,它描述處理特點(diǎn)。(3)數(shù)據(jù)說明的手段。應(yīng)該既包括簡單的數(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頁,共133頁,2024年2月25日,星期天4.6程序復(fù)雜程度的定量度量4.6.1McCabe方法4.6.2Halstead方法第118頁,共133頁,2024年2月25日,星期天

1、可使用性

①使用簡單②用戶界面中所用術(shù)語的標(biāo)準(zhǔn)化和一致性③

具有HELP功能④

快速的系統(tǒng)響應(yīng)和低的系統(tǒng)成本

⑤具有容錯(cuò)能力

2、靈活性

①考慮用戶的特點(diǎn)、能力、知識(shí)水平。②提供不同的系統(tǒng)響應(yīng)信息。③提供根據(jù)用戶需求制定和修改界面。

3、界面的復(fù)雜性與可靠性復(fù)雜性—界面規(guī)模及組織的復(fù)雜程度。應(yīng)該愈簡單愈好??煽啃浴笩o故障使用的時(shí)間間隔。用戶界面應(yīng)該能夠保證用戶正確、可靠地使用系統(tǒng),及程序、數(shù)據(jù)的安全。4.7.1用戶界面應(yīng)具有的特性4.7用戶界面設(shè)計(jì)第119頁,共133頁,2024年2月25日,星期天

1、用戶特性分析—

用戶模型了解所有用戶的技能和經(jīng)驗(yàn),針對(duì)用戶能力設(shè)計(jì)或更改界面。從以下方面分析:用戶類型—通常分為:外行型、初學(xué)型、熟練型、專家型。用戶特性度量—與用戶使用模式和用戶群體能力有關(guān)。包括:用戶使用頻度、用戶用機(jī)能力、用戶的知識(shí)、思維能力等。4.7.2用戶界面設(shè)計(jì)的任務(wù)這部分工作應(yīng)該與軟件需求分析同步進(jìn)行。包括以下內(nèi)容:2、用戶界面的任務(wù)分析—任務(wù)模型(DFD圖)是對(duì)系統(tǒng)內(nèi)部活動(dòng)的分解,不僅要進(jìn)行功能分解(用DFD圖描述),還要包括與人相關(guān)的活動(dòng)。每個(gè)加工即一個(gè)功能或任務(wù)。3、確定用戶界面類型第120頁,共133頁,2024年2月25日,星期天1、菜單(menu)

按照顯示方式正文菜單、圖標(biāo)菜單、正文和圖標(biāo)混合菜單,如:開始菜單。4.7.3用戶界面的基本類型字符界面、GUI界面、無交互界面。設(shè)計(jì)原則:以人為本,以用戶的體驗(yàn)為準(zhǔn)。GUI界面的主要元素如下:按屏幕位置和操作風(fēng)格固定位置、浮動(dòng)位置(彈出)、下拉式、嵌入式混合菜單固定及下拉菜單固定菜單下拉菜單第121頁,共133頁,2024年2月25日,星期天2、圖象在用戶界面中,加入豐富多彩的畫面,將能夠更加行象地為用戶

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論