![第5章總體設(shè)計(jì)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-6/6/9f11c544-3686-4c27-be44-65437d6e8eed/9f11c544-3686-4c27-be44-65437d6e8eed1.gif)
![第5章總體設(shè)計(jì)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-6/6/9f11c544-3686-4c27-be44-65437d6e8eed/9f11c544-3686-4c27-be44-65437d6e8eed2.gif)
![第5章總體設(shè)計(jì)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-6/6/9f11c544-3686-4c27-be44-65437d6e8eed/9f11c544-3686-4c27-be44-65437d6e8eed3.gif)
![第5章總體設(shè)計(jì)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-6/6/9f11c544-3686-4c27-be44-65437d6e8eed/9f11c544-3686-4c27-be44-65437d6e8eed4.gif)
![第5章總體設(shè)計(jì)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-6/6/9f11c544-3686-4c27-be44-65437d6e8eed/9f11c544-3686-4c27-be44-65437d6e8eed5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第5章章 總體設(shè)計(jì)總體設(shè)計(jì)5.1 設(shè)計(jì)過(guò)程設(shè)計(jì)過(guò)程5.2 設(shè)計(jì)原理設(shè)計(jì)原理5.3 啟發(fā)規(guī)則啟發(fā)規(guī)則5.4 描繪軟件結(jié)構(gòu)的圖形工具描繪軟件結(jié)構(gòu)的圖形工具5.5 面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法設(shè)計(jì)階段:設(shè)計(jì)階段:n從工程管理的角度,可以將軟件設(shè)計(jì)分為從工程管理的角度,可以將軟件設(shè)計(jì)分為總體設(shè)計(jì)階段和詳細(xì)設(shè)計(jì)階段??傮w設(shè)計(jì)階段和詳細(xì)設(shè)計(jì)階段。n從技術(shù)的角度,傳統(tǒng)的結(jié)構(gòu)化方法將軟件從技術(shù)的角度,傳統(tǒng)的結(jié)構(gòu)化方法將軟件設(shè)計(jì)劃分為體系結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、接設(shè)計(jì)劃分為體系結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)和過(guò)程設(shè)計(jì)口設(shè)計(jì)和過(guò)程設(shè)計(jì)4部分。部分。n面向?qū)ο蠓椒▌t將軟件設(shè)計(jì)劃分為體系結(jié)面向?qū)ο蠓椒▌t將軟件
2、設(shè)計(jì)劃分為體系結(jié)構(gòu)設(shè)計(jì)、類設(shè)計(jì)構(gòu)設(shè)計(jì)、類設(shè)計(jì)/數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)和構(gòu)數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)和構(gòu)件級(jí)設(shè)計(jì)件級(jí)設(shè)計(jì)4部分。部分。 結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化分析的關(guān)系:結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化分析的關(guān)系:n總體設(shè)計(jì)的過(guò)程總體設(shè)計(jì)的過(guò)程q首先尋找實(shí)現(xiàn)目標(biāo)系統(tǒng)的各種不同的方案;q然后分析員從這些供選擇的方案中選取若干個(gè)合理的方案,從中選出一個(gè)最佳方案向用戶和使用部門負(fù)責(zé)人推薦;q分析員應(yīng)該進(jìn)一步為這個(gè)最佳方案設(shè)計(jì)軟件結(jié)構(gòu),進(jìn)行必要的數(shù)據(jù)庫(kù)設(shè)計(jì),確定測(cè)試要求并且制定測(cè)試計(jì)劃。5.1 設(shè)計(jì)過(guò)程設(shè)計(jì)過(guò)程由兩個(gè)主要階段組成:由兩個(gè)主要階段組成:n系統(tǒng)設(shè)計(jì)階段,確定系統(tǒng)的具體實(shí)現(xiàn)方案系統(tǒng)設(shè)計(jì)階段,確定系統(tǒng)的具體實(shí)現(xiàn)方案q設(shè)想供選
3、擇的方案設(shè)想供選擇的方案q選取合理的方案選取合理的方案q推薦最佳方案推薦最佳方案n結(jié)構(gòu)設(shè)計(jì)階段,確定軟件結(jié)構(gòu)結(jié)構(gòu)設(shè)計(jì)階段,確定軟件結(jié)構(gòu)q功能分解功能分解q設(shè)計(jì)軟件結(jié)構(gòu)設(shè)計(jì)軟件結(jié)構(gòu)q設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)q制定測(cè)試計(jì)劃制定測(cè)試計(jì)劃q書寫文檔書寫文檔q審查和復(fù)審審查和復(fù)審典型的總體設(shè)計(jì)過(guò)程包括下述典型的總體設(shè)計(jì)過(guò)程包括下述9個(gè)步驟:個(gè)步驟:1. 設(shè)想供選擇的方案設(shè)想供選擇的方案n根據(jù)需求分析階段得出的數(shù)據(jù)流圖考慮各種可根據(jù)需求分析階段得出的數(shù)據(jù)流圖考慮各種可能的實(shí)現(xiàn)方案,力求從中選出最佳方案。能的實(shí)現(xiàn)方案,力求從中選出最佳方案。2. 選取合理的方案選取合理的方案n從前一步得到的一系列供選擇的方案中選
4、取若從前一步得到的一系列供選擇的方案中選取若干個(gè)合理的方案。對(duì)每個(gè)合理的方案分析員都干個(gè)合理的方案。對(duì)每個(gè)合理的方案分析員都應(yīng)該準(zhǔn)備下列應(yīng)該準(zhǔn)備下列4份資料:份資料:q系統(tǒng)流程圖;系統(tǒng)流程圖;q組成系統(tǒng)的物理元素清單;組成系統(tǒng)的物理元素清單;q成本成本/效益分析;效益分析;q實(shí)現(xiàn)這個(gè)系統(tǒng)的進(jìn)度計(jì)劃。實(shí)現(xiàn)這個(gè)系統(tǒng)的進(jìn)度計(jì)劃。3. 推薦最佳方案推薦最佳方案n分析員應(yīng)該綜合分析對(duì)比各種合理方案的利弊分析員應(yīng)該綜合分析對(duì)比各種合理方案的利弊,推薦一個(gè)最佳的方案,并且為推薦的方案制,推薦一個(gè)最佳的方案,并且為推薦的方案制定詳細(xì)的實(shí)現(xiàn)計(jì)劃。定詳細(xì)的實(shí)現(xiàn)計(jì)劃。4. 功能分解功能分解n首先進(jìn)行結(jié)構(gòu)設(shè)計(jì),然后進(jìn)
5、行過(guò)程設(shè)計(jì)。首先進(jìn)行結(jié)構(gòu)設(shè)計(jì),然后進(jìn)行過(guò)程設(shè)計(jì)。n結(jié)構(gòu)設(shè)計(jì)確定程序由哪些模塊組成,以及這些結(jié)構(gòu)設(shè)計(jì)確定程序由哪些模塊組成,以及這些模塊之間的關(guān)系;過(guò)程設(shè)計(jì)確定每個(gè)模塊的處模塊之間的關(guān)系;過(guò)程設(shè)計(jì)確定每個(gè)模塊的處理過(guò)程。理過(guò)程。n結(jié)構(gòu)設(shè)計(jì)是總體設(shè)計(jì)階段的任務(wù),過(guò)程設(shè)計(jì)是結(jié)構(gòu)設(shè)計(jì)是總體設(shè)計(jì)階段的任務(wù),過(guò)程設(shè)計(jì)是詳細(xì)設(shè)計(jì)階段的任務(wù)。詳細(xì)設(shè)計(jì)階段的任務(wù)。5. 設(shè)計(jì)軟件結(jié)構(gòu)設(shè)計(jì)軟件結(jié)構(gòu)n通常程序中的一個(gè)模塊完成一個(gè)適當(dāng)?shù)淖庸δ芡ǔ3绦蛑械囊粋€(gè)模塊完成一個(gè)適當(dāng)?shù)淖庸δ堋?yīng)該把模塊組織成良好的層次系統(tǒng)。軟件結(jié)。應(yīng)該把模塊組織成良好的層次系統(tǒng)。軟件結(jié)構(gòu)可以用層次圖或結(jié)構(gòu)圖來(lái)描繪。構(gòu)可以用層次圖或結(jié)構(gòu)圖來(lái)描繪。
6、n如果數(shù)據(jù)流圖已經(jīng)細(xì)化到適當(dāng)?shù)膶哟?,則可以如果數(shù)據(jù)流圖已經(jīng)細(xì)化到適當(dāng)?shù)膶哟危瑒t可以直接從數(shù)據(jù)流圖映射出軟件結(jié)構(gòu),這就是面向直接從數(shù)據(jù)流圖映射出軟件結(jié)構(gòu),這就是面向數(shù)據(jù)流的設(shè)計(jì)方法。數(shù)據(jù)流的設(shè)計(jì)方法。6. 設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)n對(duì)于需要使用數(shù)據(jù)庫(kù)的那些應(yīng)用系統(tǒng),軟件工對(duì)于需要使用數(shù)據(jù)庫(kù)的那些應(yīng)用系統(tǒng),軟件工程師應(yīng)該在需求分析階段所確定的系統(tǒng)數(shù)據(jù)需程師應(yīng)該在需求分析階段所確定的系統(tǒng)數(shù)據(jù)需求的基礎(chǔ)上,進(jìn)一步設(shè)計(jì)數(shù)據(jù)庫(kù)。求的基礎(chǔ)上,進(jìn)一步設(shè)計(jì)數(shù)據(jù)庫(kù)。7. 制定測(cè)試計(jì)劃制定測(cè)試計(jì)劃n在軟件開發(fā)的早期階段考慮測(cè)試問題,能促使軟在軟件開發(fā)的早期階段考慮測(cè)試問題,能促使軟件設(shè)計(jì)人員在設(shè)計(jì)時(shí)注意提高軟件的可測(cè)試
7、性。件設(shè)計(jì)人員在設(shè)計(jì)時(shí)注意提高軟件的可測(cè)試性。8. 書寫文檔書寫文檔n應(yīng)該用正式的文檔記錄總體設(shè)計(jì)的結(jié)果,在這個(gè)應(yīng)該用正式的文檔記錄總體設(shè)計(jì)的結(jié)果,在這個(gè)階段應(yīng)該完成的文檔通常有下述幾種:階段應(yīng)該完成的文檔通常有下述幾種: (1) 系統(tǒng)說(shuō)明;系統(tǒng)說(shuō)明; (2) 用戶手冊(cè);用戶手冊(cè);(3) 測(cè)試計(jì)劃;測(cè)試計(jì)劃; (4) 詳細(xì)的實(shí)現(xiàn)計(jì)劃;詳細(xì)的實(shí)現(xiàn)計(jì)劃;(5) 數(shù)據(jù)庫(kù)設(shè)計(jì)結(jié)果。數(shù)據(jù)庫(kù)設(shè)計(jì)結(jié)果。9. 審查和復(fù)審審查和復(fù)審n最后應(yīng)該對(duì)總體設(shè)計(jì)的結(jié)果進(jìn)行嚴(yán)格的技術(shù)審查最后應(yīng)該對(duì)總體設(shè)計(jì)的結(jié)果進(jìn)行嚴(yán)格的技術(shù)審查和管理復(fù)審。和管理復(fù)審。 5.2 設(shè)計(jì)原理設(shè)計(jì)原理5.2.1 模塊化模塊化n模塊:模塊:是由邊界
8、元素限定的相鄰程序元素的序是由邊界元素限定的相鄰程序元素的序列,而且有一個(gè)總體標(biāo)識(shí)符代表它。列,而且有一個(gè)總體標(biāo)識(shí)符代表它。n模塊化:模塊化:就是把程序劃分成獨(dú)立命名且可獨(dú)立就是把程序劃分成獨(dú)立命名且可獨(dú)立訪問的模塊,每個(gè)模塊完成一個(gè)子功能,把這訪問的模塊,每個(gè)模塊完成一個(gè)子功能,把這些模塊集成起來(lái)構(gòu)成一個(gè)整體,可以完成指定些模塊集成起來(lái)構(gòu)成一個(gè)整體,可以完成指定的功能滿足用戶的需求。的功能滿足用戶的需求。 為什么要模塊化?為什么要模塊化?n模塊化是為了使一個(gè)復(fù)雜的大型程序能被人的模塊化是為了使一個(gè)復(fù)雜的大型程序能被人的智力所管理,軟件應(yīng)該具備的惟一屬性。智力所管理,軟件應(yīng)該具備的惟一屬性。n
9、如果一個(gè)大型程序僅由一個(gè)模塊組成,它將很如果一個(gè)大型程序僅由一個(gè)模塊組成,它將很難被人所理解。難被人所理解。 模塊化的根據(jù):模塊化的根據(jù): nC(x)定義問題定義問題x的復(fù)雜程度,的復(fù)雜程度,E(x)確定解決確定解決x需要需要的工作量,對(duì)于問題的工作量,對(duì)于問題P1和和P2: 如果如果C(P1)C(P2),顯然,顯然E(P1)E(P2)n根據(jù)人類解決一般問題的經(jīng)驗(yàn),根據(jù)人類解決一般問題的經(jīng)驗(yàn),C(P1+P2)C(P1)+C(P2)n綜上所述,得到下面的不等式綜上所述,得到下面的不等式E(P1+P2)E(P1)+E(P2)把復(fù)雜問題分解成許多小問題,原來(lái)的問題就容易把復(fù)雜問題分解成許多小問題,原
10、來(lái)的問題就容易解決了。解決了。n每個(gè)程序都相每個(gè)程序都相應(yīng)地有一個(gè)最應(yīng)地有一個(gè)最適當(dāng)?shù)哪K數(shù)適當(dāng)?shù)哪K數(shù)目目M,使得系,使得系統(tǒng)的開發(fā)成本統(tǒng)的開發(fā)成本最小。最小。 模塊化和軟件成本模塊化和軟件成本評(píng)價(jià)一種設(shè)計(jì)方法定義模塊能力的五條標(biāo)準(zhǔn):評(píng)價(jià)一種設(shè)計(jì)方法定義模塊能力的五條標(biāo)準(zhǔn):n模塊可分解性模塊可分解性 n模塊可組裝性模塊可組裝性 n模塊可理解性模塊可理解性n模塊連續(xù)性模塊連續(xù)性 n模塊保護(hù)性模塊保護(hù)性模塊化的作用:模塊化的作用:n采用模塊化原理可以使軟件結(jié)構(gòu)清晰,不僅容采用模塊化原理可以使軟件結(jié)構(gòu)清晰,不僅容易設(shè)計(jì)也容易閱讀和理解。易設(shè)計(jì)也容易閱讀和理解。n模塊化使軟件容易測(cè)試和調(diào)試,因而有助
11、于提模塊化使軟件容易測(cè)試和調(diào)試,因而有助于提高軟件的可靠性。高軟件的可靠性。n模塊化能夠提高軟件的可修改性。模塊化能夠提高軟件的可修改性。n模塊化也有助于軟件開發(fā)工程的組織管理。模塊化也有助于軟件開發(fā)工程的組織管理。 5.2.2 抽象抽象n抽象:抽象:現(xiàn)實(shí)世界中一定事物、狀態(tài)或過(guò)程之間現(xiàn)實(shí)世界中一定事物、狀態(tài)或過(guò)程之間總存在著某些相似的方面總存在著某些相似的方面(共性共性)。把這些相似。把這些相似的方面集中和概括起來(lái),暫時(shí)忽略它們之間的的方面集中和概括起來(lái),暫時(shí)忽略它們之間的差異,這就是抽象。差異,這就是抽象。n抽象就是抽出事物本質(zhì)特性而暫時(shí)不考慮細(xì)節(jié)抽象就是抽出事物本質(zhì)特性而暫時(shí)不考慮細(xì)節(jié)。
12、一般抽象過(guò)程:一般抽象過(guò)程:n處理復(fù)雜系統(tǒng)的惟一有效的方法是用層次的方處理復(fù)雜系統(tǒng)的惟一有效的方法是用層次的方式構(gòu)造和分析它。式構(gòu)造和分析它。n一個(gè)復(fù)雜的動(dòng)態(tài)系統(tǒng)首先可以用一些高級(jí)的抽一個(gè)復(fù)雜的動(dòng)態(tài)系統(tǒng)首先可以用一些高級(jí)的抽象概念構(gòu)造和理解,這些高級(jí)概念又可以用一象概念構(gòu)造和理解,這些高級(jí)概念又可以用一些較低級(jí)的概念構(gòu)造和理解,如此進(jìn)行下去,些較低級(jí)的概念構(gòu)造和理解,如此進(jìn)行下去,直至最低層次的具體元素。直至最低層次的具體元素。 n例:過(guò)程抽象、數(shù)據(jù)抽象例:過(guò)程抽象、數(shù)據(jù)抽象軟件工程抽象過(guò)程:軟件工程抽象過(guò)程:n軟件工程過(guò)程的每一步都是對(duì)軟件解法的抽象軟件工程過(guò)程的每一步都是對(duì)軟件解法的抽象層
13、次的一次精化。層次的一次精化。n在可行性研究階段,軟件作為系統(tǒng)的一個(gè)完整在可行性研究階段,軟件作為系統(tǒng)的一個(gè)完整部件;部件;n在需求分析期間,軟件解法是使用在問題環(huán)境在需求分析期間,軟件解法是使用在問題環(huán)境內(nèi)熟悉的方式描述的;內(nèi)熟悉的方式描述的;n當(dāng)由總體設(shè)計(jì)向詳細(xì)設(shè)計(jì)過(guò)渡時(shí),抽象的程度當(dāng)由總體設(shè)計(jì)向詳細(xì)設(shè)計(jì)過(guò)渡時(shí),抽象的程度也就隨之減少了;也就隨之減少了;n最后,當(dāng)源程序?qū)懗鰜?lái)以后,也就達(dá)到了抽象最后,當(dāng)源程序?qū)懗鰜?lái)以后,也就達(dá)到了抽象的最低層。的最低層。 5.2.3 逐步求精逐步求精n逐步求精:逐步求精:為了能集中精力解決主要問題而盡為了能集中精力解決主要問題而盡量推遲對(duì)問題細(xì)節(jié)的考慮。逐
14、步求精是人類解量推遲對(duì)問題細(xì)節(jié)的考慮。逐步求精是人類解決復(fù)雜問題時(shí)采用的基本方法,也是許多軟件決復(fù)雜問題時(shí)采用的基本方法,也是許多軟件工程技術(shù)的基礎(chǔ)。工程技術(shù)的基礎(chǔ)。nMiller法則:一個(gè)人在任何時(shí)候都只能把注意法則:一個(gè)人在任何時(shí)候都只能把注意力集中在(力集中在(72)個(gè)知識(shí)塊上。)個(gè)知識(shí)塊上。 例:例:用篩選法求用篩選法求100以內(nèi)的素?cái)?shù)。所謂的篩選法,就以內(nèi)的素?cái)?shù)。所謂的篩選法,就是從是從2到到100中去掉中去掉2,3,5,7的倍數(shù),剩下的就的倍數(shù),剩下的就是是100以內(nèi)的素?cái)?shù)。以內(nèi)的素?cái)?shù)。n首先按程序功能寫出一個(gè)框架首先按程序功能寫出一個(gè)框架main() 建立建立2到到100的數(shù)組的
15、數(shù)組A ,其中,其中Aii;.1 建立建立2到到10的素?cái)?shù)表的素?cái)?shù)表B ,存放,存放2到到10以內(nèi)的素?cái)?shù);以內(nèi)的素?cái)?shù);.2 若若Aii是是B 中任一數(shù)的倍數(shù),則剔除中任一數(shù)的倍數(shù),則剔除Ai;.3 輸出輸出A 中所有沒有被剔除的數(shù);中所有沒有被剔除的數(shù);.4 n上述框架中每一個(gè)加工語(yǔ)句都可進(jìn)一步細(xì)化上述框架中每一個(gè)加工語(yǔ)句都可進(jìn)一步細(xì)化nmain() /*建立建立2到到100的數(shù)組的數(shù)組A ,其中,其中Aii*/ .1 for (i = 2;i = 100;i+)Ai = i; /* 建立建立2到到10的素?cái)?shù)表的素?cái)?shù)表B ,存放,存放2到到10以內(nèi)的素?cái)?shù)以內(nèi)的素?cái)?shù)*/ .2 B1 =2; B2
16、 = 3; B3 = 5; B4 = 7; /*若若Aii是是B 中任一數(shù)的倍數(shù),則剔除中任一數(shù)的倍數(shù),則剔除Ai*/ .3 for (j = 1; j = 4; j+) 檢查檢查A所有數(shù)能否被所有數(shù)能否被Bj整除并將其從整除并將其從A剔除;剔除;.3.1 /*輸出輸出A 中所有沒有被剔除的數(shù)中所有沒有被剔除的數(shù)*/ .4 for (i = 2; i 25) module_3(); else module_4();評(píng)價(jià):評(píng)價(jià):n如果在一個(gè)模塊中對(duì)一個(gè)全局變量的聲明如果在一個(gè)模塊中對(duì)一個(gè)全局變量的聲明進(jìn)行修改,必須修改能夠訪問該全局變量進(jìn)行修改,必須修改能夠訪問該全局變量的每一個(gè)模塊。的每一個(gè)模
17、塊。n公共環(huán)境耦合的模塊難于重用,必須提供公共環(huán)境耦合的模塊難于重用,必須提供一個(gè)全局變量的清單。一個(gè)全局變量的清單。n潛在危險(xiǎn)很大。模塊暴露出必需要更多的潛在危險(xiǎn)很大。模塊暴露出必需要更多的數(shù)據(jù),難以控制數(shù)據(jù)存取,而且會(huì)導(dǎo)致計(jì)數(shù)據(jù),難以控制數(shù)據(jù)存取,而且會(huì)導(dǎo)致計(jì)算機(jī)犯罪。算機(jī)犯罪。n有些情況下,如兩模塊的共享數(shù)據(jù)很多,有些情況下,如兩模塊的共享數(shù)據(jù)很多,參數(shù)傳遞不方便,公共環(huán)境耦合更好。參數(shù)傳遞不方便,公共環(huán)境耦合更好。 (6) 內(nèi)容耦合內(nèi)容耦合(content coupling)n最高程度的耦合是內(nèi)容耦合。如果出現(xiàn)下列最高程度的耦合是內(nèi)容耦合。如果出現(xiàn)下列情況之一,兩個(gè)模塊間就發(fā)生了內(nèi)容耦
18、合:情況之一,兩個(gè)模塊間就發(fā)生了內(nèi)容耦合:q一個(gè)模塊訪問另一個(gè)模塊的內(nèi)部數(shù)據(jù);一個(gè)模塊訪問另一個(gè)模塊的內(nèi)部數(shù)據(jù);q一個(gè)模塊不通過(guò)正常入口轉(zhuǎn)到另一個(gè)模塊的內(nèi)部;一個(gè)模塊不通過(guò)正常入口轉(zhuǎn)到另一個(gè)模塊的內(nèi)部;q兩個(gè)模塊有一部分程序代碼重疊;兩個(gè)模塊有一部分程序代碼重疊;q一個(gè)模塊有多個(gè)入口。一個(gè)模塊有多個(gè)入口。 n耦合是影響軟件復(fù)雜程度的一個(gè)重要因素。耦合是影響軟件復(fù)雜程度的一個(gè)重要因素。n應(yīng)該采取下述設(shè)計(jì)原則:應(yīng)該采取下述設(shè)計(jì)原則: 盡量使用數(shù)據(jù)耦合,盡量使用數(shù)據(jù)耦合, 少用控制耦合和特征耦合,少用控制耦合和特征耦合, 限制公共環(huán)境耦合的范圍,限制公共環(huán)境耦合的范圍, 完全不用內(nèi)容耦合。完全不用內(nèi)
19、容耦合。 2. 內(nèi)聚內(nèi)聚n內(nèi)聚:內(nèi)聚:標(biāo)志一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊標(biāo)志一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度,它是信息隱藏和局部化概念的自然擴(kuò)密程度,它是信息隱藏和局部化概念的自然擴(kuò)展。簡(jiǎn)單地說(shuō),理想內(nèi)聚的模塊只做一件事情展。簡(jiǎn)單地說(shuō),理想內(nèi)聚的模塊只做一件事情。n要求:要求:設(shè)計(jì)時(shí)應(yīng)該力求做到高內(nèi)聚,通常中等設(shè)計(jì)時(shí)應(yīng)該力求做到高內(nèi)聚,通常中等程度的內(nèi)聚也是可以采用的,而且效果和高內(nèi)程度的內(nèi)聚也是可以采用的,而且效果和高內(nèi)聚相差不多;但是,低內(nèi)聚不要使用。聚相差不多;但是,低內(nèi)聚不要使用。n內(nèi)聚和耦合是密切相關(guān)的,模塊內(nèi)的高內(nèi)聚往內(nèi)聚和耦合是密切相關(guān)的,模塊內(nèi)的高內(nèi)聚往往意味著模塊間的松耦
20、合。實(shí)踐表明內(nèi)聚更重往意味著模塊間的松耦合。實(shí)踐表明內(nèi)聚更重要,應(yīng)該把更多注意力集中到提高模塊的內(nèi)聚要,應(yīng)該把更多注意力集中到提高模塊的內(nèi)聚程度上。程度上。 內(nèi)聚程度的度量:內(nèi)聚程度的度量:(1) 偶然內(nèi)聚偶然內(nèi)聚(coincidental cohesion)n如果一個(gè)模塊完成一組任務(wù),這些任務(wù)彼此間如果一個(gè)模塊完成一組任務(wù),這些任務(wù)彼此間即使有關(guān)系,關(guān)系也是很松散的,就叫做偶然即使有關(guān)系,關(guān)系也是很松散的,就叫做偶然內(nèi)聚。內(nèi)聚。MA=B+CGET CHERIF R=5 THEN S=1評(píng)價(jià):評(píng)價(jià):n模塊內(nèi)各元素之間沒有實(shí)質(zhì)性聯(lián)系,很可模塊內(nèi)各元素之間沒有實(shí)質(zhì)性聯(lián)系,很可能在一種應(yīng)用場(chǎng)合需要修
21、改這個(gè)模塊,在能在一種應(yīng)用場(chǎng)合需要修改這個(gè)模塊,在另一種應(yīng)用場(chǎng)合又不允許這種修改,從而另一種應(yīng)用場(chǎng)合又不允許這種修改,從而陷入困境;陷入困境;n可理解性差,可維護(hù)性產(chǎn)生退化;可理解性差,可維護(hù)性產(chǎn)生退化;n模塊是不可重用的。模塊是不可重用的。解決方案:解決方案:n將模塊分成更小的模塊,每個(gè)小模塊執(zhí)行將模塊分成更小的模塊,每個(gè)小模塊執(zhí)行一個(gè)操作。一個(gè)操作。(2) 邏輯內(nèi)聚邏輯內(nèi)聚(logical cohesion)n如果一個(gè)模塊完成的任務(wù)在邏輯上屬于相同如果一個(gè)模塊完成的任務(wù)在邏輯上屬于相同或相似的一類,則稱為邏輯內(nèi)聚?;蛳嗨频囊活?,則稱為邏輯內(nèi)聚。評(píng)價(jià):評(píng)價(jià):n接口難以理解,造成整體上不易理解
22、;接口難以理解,造成整體上不易理解;n完成多個(gè)操作的代碼互相糾纏在一起,即完成多個(gè)操作的代碼互相糾纏在一起,即使局部功能的修改有時(shí)也會(huì)影響全局,導(dǎo)使局部功能的修改有時(shí)也會(huì)影響全局,導(dǎo)致嚴(yán)重的維護(hù)問題;致嚴(yán)重的維護(hù)問題;n難以重用。難以重用。解決方案:解決方案:n模塊分解。模塊分解。 (3) 時(shí)間內(nèi)聚時(shí)間內(nèi)聚(temporal cohesion)n如果一個(gè)模塊包含的任務(wù)必須在同一段時(shí)間如果一個(gè)模塊包含的任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行,就叫時(shí)間內(nèi)聚。內(nèi)執(zhí)行,就叫時(shí)間內(nèi)聚。執(zhí)行初始化執(zhí)行初始化打開舊主文件、新主文件、事務(wù)文件和打印文打開舊主文件、新主文件、事務(wù)文件和打印文件;件;初始化銷售地區(qū)表;初始化
23、銷售地區(qū)表;讀第一條事務(wù)記錄和第一條舊主文件記錄;讀第一條事務(wù)記錄和第一條舊主文件記錄;評(píng)價(jià):評(píng)價(jià):n時(shí)間關(guān)系在一定程度上反映了程序某些實(shí)時(shí)間關(guān)系在一定程度上反映了程序某些實(shí)質(zhì),所以時(shí)間內(nèi)聚比邏輯內(nèi)聚好一些。質(zhì),所以時(shí)間內(nèi)聚比邏輯內(nèi)聚好一些。n模塊內(nèi)操作之間的關(guān)系很弱,與其他模塊模塊內(nèi)操作之間的關(guān)系很弱,與其他模塊的操作卻有很強(qiáng)的關(guān)聯(lián)。的操作卻有很強(qiáng)的關(guān)聯(lián)。n時(shí)間內(nèi)聚的模塊不太可能重用。時(shí)間內(nèi)聚的模塊不太可能重用。 (4) 過(guò)程內(nèi)聚過(guò)程內(nèi)聚(procedural cohesion)n如果一個(gè)模塊內(nèi)的處理元素是相關(guān)的,而且必如果一個(gè)模塊內(nèi)的處理元素是相關(guān)的,而且必須以特定次序執(zhí)行,則稱為過(guò)程內(nèi)聚
24、。須以特定次序執(zhí)行,則稱為過(guò)程內(nèi)聚。n使用程序流程圖作為工具設(shè)計(jì)軟件時(shí),常常通使用程序流程圖作為工具設(shè)計(jì)軟件時(shí),常常通過(guò)研究流程圖確定模塊的劃分,這樣得到的往過(guò)研究流程圖確定模塊的劃分,這樣得到的往往是過(guò)程內(nèi)聚的模塊。往是過(guò)程內(nèi)聚的模塊。 評(píng)價(jià):評(píng)價(jià):n比時(shí)間內(nèi)聚好,至少操作之間是過(guò)程關(guān)聯(lián)比時(shí)間內(nèi)聚好,至少操作之間是過(guò)程關(guān)聯(lián)的。的。n仍是弱連接,不太可能重用模塊。仍是弱連接,不太可能重用模塊。解決方案:解決方案:n分割為單獨(dú)的模塊,每個(gè)模塊執(zhí)行一個(gè)操分割為單獨(dú)的模塊,每個(gè)模塊執(zhí)行一個(gè)操作。作。(5) 通信內(nèi)聚通信內(nèi)聚(communicational cohesion)n如果模塊中所有元素都使用
25、同一個(gè)輸入數(shù)據(jù)如果模塊中所有元素都使用同一個(gè)輸入數(shù)據(jù)和和(或或)產(chǎn)生同一個(gè)輸出數(shù)據(jù),則稱為通信內(nèi)產(chǎn)生同一個(gè)輸出數(shù)據(jù),則稱為通信內(nèi)聚。即在同一個(gè)數(shù)據(jù)結(jié)構(gòu)上操作。聚。即在同一個(gè)數(shù)據(jù)結(jié)構(gòu)上操作。評(píng)價(jià):評(píng)價(jià):n模塊中各操作緊密相連,比過(guò)程內(nèi)聚更好。模塊中各操作緊密相連,比過(guò)程內(nèi)聚更好。n不能重用。不能重用。解決方案:解決方案:n分成多個(gè)模塊,每個(gè)模塊執(zhí)行一個(gè)操作。分成多個(gè)模塊,每個(gè)模塊執(zhí)行一個(gè)操作。(6) 順序內(nèi)聚順序內(nèi)聚(sequential cohesion)n如果一個(gè)模塊內(nèi)的處理元素和同一個(gè)功能密如果一個(gè)模塊內(nèi)的處理元素和同一個(gè)功能密切相關(guān),而且這些處理必須順序執(zhí)行,則稱切相關(guān),而且這些處理必須
26、順序執(zhí)行,則稱為順序內(nèi)聚。為順序內(nèi)聚。評(píng)價(jià):評(píng)價(jià):n根據(jù)數(shù)據(jù)流圖劃分模塊時(shí),通常得到順序內(nèi)根據(jù)數(shù)據(jù)流圖劃分模塊時(shí),通常得到順序內(nèi)聚的模塊,這種模塊彼此間的連接往往比較聚的模塊,這種模塊彼此間的連接往往比較簡(jiǎn)單。簡(jiǎn)單。 (7) 功能內(nèi)聚功能內(nèi)聚(functional cohesion)n如果模塊內(nèi)所有處理元素屬于一個(gè)整體,完如果模塊內(nèi)所有處理元素屬于一個(gè)整體,完成一個(gè)單一的功能,則稱為功能內(nèi)聚。功能成一個(gè)單一的功能,則稱為功能內(nèi)聚。功能內(nèi)聚是最高程度的內(nèi)聚。內(nèi)聚是最高程度的內(nèi)聚。評(píng)價(jià):評(píng)價(jià):n模塊可重用,應(yīng)盡可能重用;模塊可重用,應(yīng)盡可能重用;n可隔離錯(cuò)誤,維護(hù)更容易;可隔離錯(cuò)誤,維護(hù)更容易;n
27、擴(kuò)充產(chǎn)品功能時(shí)更容易。擴(kuò)充產(chǎn)品功能時(shí)更容易。七種內(nèi)聚的優(yōu)劣評(píng)分結(jié)果:七種內(nèi)聚的優(yōu)劣評(píng)分結(jié)果:n高內(nèi)聚:功能內(nèi)聚高內(nèi)聚:功能內(nèi)聚 10分分 順序內(nèi)聚順序內(nèi)聚 9分分n中內(nèi)聚:通信內(nèi)聚中內(nèi)聚:通信內(nèi)聚 7分分 過(guò)程內(nèi)聚過(guò)程內(nèi)聚 5分分n低內(nèi)聚:時(shí)間內(nèi)聚低內(nèi)聚:時(shí)間內(nèi)聚 3分分 邏輯內(nèi)聚邏輯內(nèi)聚 1分分 偶然內(nèi)聚偶然內(nèi)聚 0分分n設(shè)計(jì)時(shí)力爭(zhēng)做到高內(nèi)聚,并且能夠辨認(rèn)出低內(nèi)設(shè)計(jì)時(shí)力爭(zhēng)做到高內(nèi)聚,并且能夠辨認(rèn)出低內(nèi)聚的模塊。聚的模塊。 5.3 啟發(fā)規(guī)則啟發(fā)規(guī)則1. 改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性n通過(guò)模塊分解或合并,降低耦合提高內(nèi)聚。通過(guò)模塊分解或合并,降低耦合提高內(nèi)聚。n兩個(gè)方面:
28、兩個(gè)方面: q模塊功能完善化。一個(gè)完整的模塊包含:模塊功能完善化。一個(gè)完整的模塊包含:n執(zhí)行規(guī)定的功能的部分執(zhí)行規(guī)定的功能的部分n出錯(cuò)處理的部分出錯(cuò)處理的部分n返回一個(gè)返回一個(gè)“結(jié)束標(biāo)志結(jié)束標(biāo)志”q消除重復(fù)功能,改善軟件結(jié)構(gòu)。消除重復(fù)功能,改善軟件結(jié)構(gòu)。n完全相似完全相似n局部相似局部相似2. 模塊規(guī)模應(yīng)該適中模塊規(guī)模應(yīng)該適中n經(jīng)驗(yàn)表明,一個(gè)模塊的規(guī)模不應(yīng)過(guò)大,最好能經(jīng)驗(yàn)表明,一個(gè)模塊的規(guī)模不應(yīng)過(guò)大,最好能寫在一頁(yè)紙內(nèi)。通常規(guī)定寫在一頁(yè)紙內(nèi)。通常規(guī)定50100行語(yǔ)句,最多行語(yǔ)句,最多不超過(guò)不超過(guò)500行。數(shù)字只能作為參考,根本問題行。數(shù)字只能作為參考,根本問題是要保證模塊的獨(dú)立性。是要保證模塊
29、的獨(dú)立性。n過(guò)大的模塊往往是由于分解不充分,但是進(jìn)一過(guò)大的模塊往往是由于分解不充分,但是進(jìn)一步分解必須符合問題結(jié)構(gòu),一般說(shuō)來(lái),分解后步分解必須符合問題結(jié)構(gòu),一般說(shuō)來(lái),分解后不應(yīng)該降低模塊獨(dú)立性。不應(yīng)該降低模塊獨(dú)立性。n過(guò)小的模塊開銷大于有效操作,而且模塊數(shù)目過(guò)小的模塊開銷大于有效操作,而且模塊數(shù)目過(guò)多將使系統(tǒng)接口復(fù)雜。過(guò)多將使系統(tǒng)接口復(fù)雜。3. 深度、寬度、扇出和扇入都應(yīng)適當(dāng)深度、寬度、扇出和扇入都應(yīng)適當(dāng)n深度:深度:軟件結(jié)構(gòu)中控制的層數(shù),它往往能粗略軟件結(jié)構(gòu)中控制的層數(shù),它往往能粗略地標(biāo)志一個(gè)系統(tǒng)的大小和復(fù)雜程度。地標(biāo)志一個(gè)系統(tǒng)的大小和復(fù)雜程度。n寬度:寬度:軟件結(jié)構(gòu)內(nèi)同一個(gè)層次上的模塊總數(shù)
30、的軟件結(jié)構(gòu)內(nèi)同一個(gè)層次上的模塊總數(shù)的最大值。最大值。n扇出:扇出:一個(gè)模塊直接控制一個(gè)模塊直接控制(調(diào)用調(diào)用)的模塊數(shù)目。的模塊數(shù)目。n扇入:扇入:有多少個(gè)上級(jí)模塊直接調(diào)用它。有多少個(gè)上級(jí)模塊直接調(diào)用它。4. 模塊的作用域應(yīng)該在控制域之內(nèi)模塊的作用域應(yīng)該在控制域之內(nèi)n模塊的作用域:模塊的作用域:定義為受該模塊內(nèi)一個(gè)判定影定義為受該模塊內(nèi)一個(gè)判定影響的所有模塊的集合。響的所有模塊的集合。n模塊的控制域:模塊的控制域:是這個(gè)模塊本身以及所有直接是這個(gè)模塊本身以及所有直接或間接從屬于它的模塊的集合。或間接從屬于它的模塊的集合。 n在一個(gè)設(shè)計(jì)得很好的系統(tǒng)中,所有受判定影響在一個(gè)設(shè)計(jì)得很好的系統(tǒng)中,所有
31、受判定影響的模塊應(yīng)該都從屬于做出判定的那個(gè)模塊,最的模塊應(yīng)該都從屬于做出判定的那個(gè)模塊,最好局限于做出判定的那個(gè)模塊本身及它的直屬好局限于做出判定的那個(gè)模塊本身及它的直屬下級(jí)模塊。下級(jí)模塊。解決方案:解決方案:n把模塊把模塊A中的判定移到模塊中的判定移到模塊M中;中;n把模塊把模塊G移到模塊移到模塊A下面,作為他的下級(jí)模塊下面,作為他的下級(jí)模塊。 5. 力爭(zhēng)降低模塊接口的復(fù)雜程度力爭(zhēng)降低模塊接口的復(fù)雜程度n模塊接口復(fù)雜是軟件發(fā)生錯(cuò)誤的一個(gè)主要原因模塊接口復(fù)雜是軟件發(fā)生錯(cuò)誤的一個(gè)主要原因。應(yīng)該仔細(xì)設(shè)計(jì)模塊接口,使得信息傳遞簡(jiǎn)單。應(yīng)該仔細(xì)設(shè)計(jì)模塊接口,使得信息傳遞簡(jiǎn)單并且和模塊的功能一致。并且和模
32、塊的功能一致。例:解一元二次方程的函數(shù)例:解一元二次方程的函數(shù)nQUAD_ROOT(TBL,X)q其中數(shù)組其中數(shù)組TBL傳送方程的系數(shù)傳送方程的系數(shù)q數(shù)組數(shù)組X送回求得的根送回求得的根nQUAD_ROOT(A,B,C,ROOT1,ROOT2)6. 設(shè)計(jì)單入口單出口的模塊設(shè)計(jì)單入口單出口的模塊n警告軟件工程師不要使模塊間出現(xiàn)內(nèi)容耦合。警告軟件工程師不要使模塊間出現(xiàn)內(nèi)容耦合。當(dāng)從頂部進(jìn)入模塊并且從底部退出來(lái)時(shí),軟件當(dāng)從頂部進(jìn)入模塊并且從底部退出來(lái)時(shí),軟件是比較容易理解的,因此也是比較容易維護(hù)的是比較容易理解的,因此也是比較容易維護(hù)的。7. 模塊功能應(yīng)該可以預(yù)測(cè)模塊功能應(yīng)該可以預(yù)測(cè)n模塊的功能應(yīng)該能
33、夠預(yù)測(cè),但也要防止模塊功模塊的功能應(yīng)該能夠預(yù)測(cè),但也要防止模塊功能過(guò)分局限。能過(guò)分局限。n功能可預(yù)測(cè):功能可預(yù)測(cè):如果一個(gè)模塊可以當(dāng)做一個(gè)黑盒如果一個(gè)模塊可以當(dāng)做一個(gè)黑盒子,只要輸入的數(shù)據(jù)相同就產(chǎn)生同樣的輸出,子,只要輸入的數(shù)據(jù)相同就產(chǎn)生同樣的輸出,這個(gè)模塊的功能就是可以預(yù)測(cè)的。這個(gè)模塊的功能就是可以預(yù)測(cè)的。5.4 描繪軟件結(jié)構(gòu)的圖形工具描繪軟件結(jié)構(gòu)的圖形工具5.4.1 層次圖和層次圖和HIPO圖圖1. 層次圖層次圖(H圖圖)n層次圖用來(lái)描繪軟件的層次結(jié)構(gòu)。很適于在自頂向?qū)哟螆D用來(lái)描繪軟件的層次結(jié)構(gòu)。很適于在自頂向下設(shè)計(jì)軟件的過(guò)程中使用。下設(shè)計(jì)軟件的過(guò)程中使用。層次圖和層次方框圖的區(qū)別:層次圖
34、和層次方框圖的區(qū)別:層次圖層次圖層次方框圖層次方框圖作用作用描繪軟件結(jié)構(gòu)描繪軟件結(jié)構(gòu)描繪數(shù)據(jù)結(jié)構(gòu)描繪數(shù)據(jù)結(jié)構(gòu)矩形框矩形框模塊模塊數(shù)據(jù)元素?cái)?shù)據(jù)元素連線連線調(diào)用關(guān)系調(diào)用關(guān)系組成關(guān)系組成關(guān)系正文加工系統(tǒng)的層次圖正文加工系統(tǒng)的層次圖 2. HIPO圖圖nHIPO圖是美國(guó)圖是美國(guó)IBM公司發(fā)明的公司發(fā)明的“層次圖層次圖+輸入輸入/處理處理/輸出圖輸出圖”的英文縮寫。的英文縮寫。n為了能使為了能使HIPO圖具有可追蹤性,在圖具有可追蹤性,在H圖圖(層次層次圖圖)里除了最頂層的方框之外,每個(gè)方框都加里除了最頂層的方框之外,每個(gè)方框都加了編號(hào)。了編號(hào)。n和和H圖中每個(gè)方框相對(duì)應(yīng),應(yīng)該有一張圖中每個(gè)方框相對(duì)應(yīng),
35、應(yīng)該有一張IPO圖圖描繪這個(gè)方框代表的模塊的處理過(guò)程。模塊在描繪這個(gè)方框代表的模塊的處理過(guò)程。模塊在H圖中的編號(hào)便于追蹤了解這個(gè)模塊在軟件結(jié)圖中的編號(hào)便于追蹤了解這個(gè)模塊在軟件結(jié)構(gòu)中的位置。構(gòu)中的位置。5.4.2 結(jié)構(gòu)圖結(jié)構(gòu)圖nYourdon提出的結(jié)構(gòu)圖是進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)的提出的結(jié)構(gòu)圖是進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)的另一個(gè)有力工具。結(jié)構(gòu)圖和層次圖類似,也是另一個(gè)有力工具。結(jié)構(gòu)圖和層次圖類似,也是描繪軟件結(jié)構(gòu)的圖形工具。描繪軟件結(jié)構(gòu)的圖形工具?;痉?hào):基本符號(hào):n方框代表一個(gè)模塊;方框代表一個(gè)模塊;n方框之間的直線表示模塊的調(diào)用關(guān)系;方框之間的直線表示模塊的調(diào)用關(guān)系;n尾部是空心圓箭頭表示傳遞的是數(shù)據(jù);尾
36、部是空心圓箭頭表示傳遞的是數(shù)據(jù);n尾部實(shí)心圓箭頭表示傳遞的是控制信息。尾部實(shí)心圓箭頭表示傳遞的是控制信息。 附加符號(hào):附加符號(hào):n選擇調(diào)用:判定為選擇調(diào)用:判定為真時(shí)調(diào)用真時(shí)調(diào)用A,為假,為假時(shí)調(diào)用時(shí)調(diào)用B。n循環(huán)調(diào)用:模塊循環(huán)調(diào)用:模塊M循環(huán)調(diào)用模塊循環(huán)調(diào)用模塊A、B、C。注意:注意:n層次圖和結(jié)構(gòu)圖并不嚴(yán)格表示模塊的調(diào)用次序?qū)哟螆D和結(jié)構(gòu)圖并不嚴(yán)格表示模塊的調(diào)用次序,多數(shù)人習(xí)慣按調(diào)用次序從左到右畫模塊;,多數(shù)人習(xí)慣按調(diào)用次序從左到右畫模塊;n層次圖和結(jié)構(gòu)圖并不指明何時(shí)調(diào)用下層模塊;層次圖和結(jié)構(gòu)圖并不指明何時(shí)調(diào)用下層模塊;n層次圖和結(jié)構(gòu)圖只表明一個(gè)模塊調(diào)用那些模塊層次圖和結(jié)構(gòu)圖只表明一個(gè)模塊調(diào)
37、用那些模塊,沒有表示模塊內(nèi)還有沒有其他成分;,沒有表示模塊內(nèi)還有沒有其他成分;n通常用層次圖作為描繪軟件結(jié)構(gòu)的文檔;通常用層次圖作為描繪軟件結(jié)構(gòu)的文檔;n由層次圖導(dǎo)出結(jié)構(gòu)圖的過(guò)程,可以作為檢由層次圖導(dǎo)出結(jié)構(gòu)圖的過(guò)程,可以作為檢查設(shè)計(jì)正確性和評(píng)價(jià)模塊獨(dú)立性的好方法。查設(shè)計(jì)正確性和評(píng)價(jià)模塊獨(dú)立性的好方法。5.5 面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法n面向數(shù)據(jù)流的設(shè)計(jì)方法定義了一些不同的面向數(shù)據(jù)流的設(shè)計(jì)方法定義了一些不同的“映映射射”,利用這些映射可以把數(shù)據(jù)流圖變換成軟,利用這些映射可以把數(shù)據(jù)流圖變換成軟件結(jié)構(gòu)。件結(jié)構(gòu)。n因?yàn)槿魏诬浖到y(tǒng)都可以用數(shù)據(jù)流圖表示,所因?yàn)槿魏诬浖到y(tǒng)都可以用數(shù)據(jù)流圖表
38、示,所以面向數(shù)據(jù)流的設(shè)計(jì)方法理論上可以設(shè)計(jì)任何以面向數(shù)據(jù)流的設(shè)計(jì)方法理論上可以設(shè)計(jì)任何軟件的結(jié)構(gòu)。通常所說(shuō)的結(jié)構(gòu)化設(shè)計(jì)方法軟件的結(jié)構(gòu)。通常所說(shuō)的結(jié)構(gòu)化設(shè)計(jì)方法(簡(jiǎn)簡(jiǎn)稱稱SD方法方法),也就是基于數(shù)據(jù)流的設(shè)計(jì)方法。,也就是基于數(shù)據(jù)流的設(shè)計(jì)方法。 5.5.1 概念概念n面向數(shù)據(jù)流的設(shè)計(jì)方法把信息流映射成軟件結(jié)面向數(shù)據(jù)流的設(shè)計(jì)方法把信息流映射成軟件結(jié)構(gòu),信息流的類型決定了映射的方法。構(gòu),信息流的類型決定了映射的方法。n信息流有兩種類型:信息流有兩種類型:q變換流變換流q事務(wù)流事務(wù)流1. 變換流變換流n信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式,進(jìn)入
39、系統(tǒng)的信息通過(guò)變換中心,經(jīng)成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過(guò)變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)軟件系統(tǒng)。2. 事務(wù)流事務(wù)流n數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理T,T根據(jù)輸入根據(jù)輸入數(shù)據(jù)的類型在若干個(gè)動(dòng)作序列中選出一個(gè)來(lái)執(zhí)數(shù)據(jù)的類型在若干個(gè)動(dòng)作序列中選出一個(gè)來(lái)執(zhí)行。處理行。處理T稱為事務(wù)中心,它完成下述任務(wù):稱為事務(wù)中心,它完成下述任務(wù):q接收輸入數(shù)據(jù);接收輸入數(shù)據(jù);q分析每個(gè)事務(wù)以分析每個(gè)事務(wù)以 確定它的類型;確定它的類型;q根據(jù)事務(wù)類型根據(jù)事務(wù)類型 選取一條活動(dòng)通路。選取一條活動(dòng)通路。 3. 設(shè)計(jì)過(guò)程設(shè)計(jì)過(guò)程
40、 5.5.2 變換分析變換分析n變換分析是一系列設(shè)計(jì)步驟的總稱,經(jīng)過(guò)這些變換分析是一系列設(shè)計(jì)步驟的總稱,經(jīng)過(guò)這些步驟把具有變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定步驟把具有變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu)。的模式映射成軟件結(jié)構(gòu)。設(shè)計(jì)步驟:設(shè)計(jì)步驟:(1) 復(fù)查基本系統(tǒng)模型復(fù)查基本系統(tǒng)模型n確保系統(tǒng)的輸入數(shù)據(jù)和輸出數(shù)據(jù)符合實(shí)際。確保系統(tǒng)的輸入數(shù)據(jù)和輸出數(shù)據(jù)符合實(shí)際。(2) 復(fù)查并精化數(shù)據(jù)流圖復(fù)查并精化數(shù)據(jù)流圖n對(duì)需求分析階段得出的數(shù)據(jù)流圖認(rèn)真復(fù)查,并對(duì)需求分析階段得出的數(shù)據(jù)流圖認(rèn)真復(fù)查,并且在必要時(shí)進(jìn)行精化。且在必要時(shí)進(jìn)行精化。n不僅要確保數(shù)據(jù)流圖給出了目標(biāo)系統(tǒng)的正確的不僅要確保數(shù)據(jù)流圖
41、給出了目標(biāo)系統(tǒng)的正確的邏輯模型,而且應(yīng)該使數(shù)據(jù)流圖中每個(gè)處理都邏輯模型,而且應(yīng)該使數(shù)據(jù)流圖中每個(gè)處理都代表一個(gè)規(guī)模適中相對(duì)獨(dú)立的子功能。代表一個(gè)規(guī)模適中相對(duì)獨(dú)立的子功能。 (3) 確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性n一個(gè)系統(tǒng)中的所有信息流都可以認(rèn)為是變換一個(gè)系統(tǒng)中的所有信息流都可以認(rèn)為是變換流,但是,當(dāng)遇到有明顯事務(wù)特性的信息流流,但是,當(dāng)遇到有明顯事務(wù)特性的信息流時(shí),建議采用事務(wù)分析方法進(jìn)行設(shè)計(jì)。確定時(shí),建議采用事務(wù)分析方法進(jìn)行設(shè)計(jì)。確定數(shù)據(jù)流的全局特性和局部特性。數(shù)據(jù)流的全局特性和局部特性。(4) 確定輸入流和輸出流的邊界,從而孤立出變確定輸入流和輸出
42、流的邊界,從而孤立出變換中心換中心n輸入流和輸出流的邊界和對(duì)它們的解釋有關(guān)輸入流和輸出流的邊界和對(duì)它們的解釋有關(guān),不同設(shè)計(jì)人員可能會(huì)在流內(nèi)選取稍微不同,不同設(shè)計(jì)人員可能會(huì)在流內(nèi)選取稍微不同的點(diǎn)作為邊界的位置。的點(diǎn)作為邊界的位置。(5) 完成完成“第一級(jí)分解第一級(jí)分解”。n位于軟件結(jié)構(gòu)最頂層的控制模塊位于軟件結(jié)構(gòu)最頂層的控制模塊Cm協(xié)調(diào)下協(xié)調(diào)下述從屬的控制功能:述從屬的控制功能:q輸入信息處理控制模塊輸入信息處理控制模塊Ca,協(xié)調(diào)對(duì)所有輸入數(shù)據(jù)的協(xié)調(diào)對(duì)所有輸入數(shù)據(jù)的接收;接收;q變換中心控制模塊變換中心控制模塊Ct,管理對(duì)內(nèi)部形式的數(shù)據(jù)的所管理對(duì)內(nèi)部形式的數(shù)據(jù)的所有操作;有操作;q輸出信息處理控
43、制模塊輸出信息處理控制模塊Ce,協(xié)調(diào)輸出信息的產(chǎn)生過(guò),協(xié)調(diào)輸出信息的產(chǎn)生過(guò)程。程。 第一級(jí)分解方法第一級(jí)分解方法(6) 完成完成“第二級(jí)分解第二級(jí)分解”n處理映射成軟件結(jié)構(gòu)中一個(gè)適當(dāng)?shù)哪K。完處理映射成軟件結(jié)構(gòu)中一個(gè)適當(dāng)?shù)哪K。完成第二級(jí)分解的方法是:成第二級(jí)分解的方法是:q從變換中心的邊界開始沿著輸入通路向外移動(dòng),把從變換中心的邊界開始沿著輸入通路向外移動(dòng),把輸入通路中每個(gè)處理映射成軟件結(jié)構(gòu)中輸入通路中每個(gè)處理映射成軟件結(jié)構(gòu)中Ca控制下控制下的一個(gè)低層模塊;的一個(gè)低層模塊;q然后沿輸出通路向外移動(dòng),把輸出通路中每個(gè)處理然后沿輸出通路向外移動(dòng),把輸出通路中每個(gè)處理映射成直接或間接受模塊映射成直
44、接或間接受模塊Ce控制的一個(gè)低層模塊;控制的一個(gè)低層模塊;q最后把變換中心內(nèi)的每個(gè)處理映射成受最后把變換中心內(nèi)的每個(gè)處理映射成受Ct控制的一控制的一個(gè)模塊。個(gè)模塊。第二級(jí)分解方法第二級(jí)分解方法(7) 使用設(shè)計(jì)度量和啟發(fā)式規(guī)則對(duì)第一次分割得使用設(shè)計(jì)度量和啟發(fā)式規(guī)則對(duì)第一次分割得到的軟件結(jié)構(gòu)進(jìn)一步精化到的軟件結(jié)構(gòu)進(jìn)一步精化n為了產(chǎn)生合理的分解,得到盡可能高的內(nèi)聚為了產(chǎn)生合理的分解,得到盡可能高的內(nèi)聚、盡可能松散的耦合,為了得到一個(gè)易于實(shí)、盡可能松散的耦合,為了得到一個(gè)易于實(shí)現(xiàn)、易于測(cè)試和易于維護(hù)的軟件結(jié)構(gòu),應(yīng)該現(xiàn)、易于測(cè)試和易于維護(hù)的軟件結(jié)構(gòu),應(yīng)該對(duì)初步分割得到的模塊進(jìn)行再分解或合并。對(duì)初步分割得
45、到的模塊進(jìn)行再分解或合并。5.5.3 事務(wù)分析事務(wù)分析n雖然在任何情況下都可以使用變換分析方雖然在任何情況下都可以使用變換分析方法設(shè)計(jì)軟件結(jié)構(gòu),但是在數(shù)據(jù)流具有明顯法設(shè)計(jì)軟件結(jié)構(gòu),但是在數(shù)據(jù)流具有明顯的事務(wù)特點(diǎn)時(shí),也就是有一個(gè)明顯的的事務(wù)特點(diǎn)時(shí),也就是有一個(gè)明顯的“發(fā)發(fā)射中心射中心”(事務(wù)中心事務(wù)中心)時(shí),還是以采用事務(wù)分時(shí),還是以采用事務(wù)分析方法為宜。析方法為宜。 n事務(wù)分析的設(shè)計(jì)步驟和變換分析的設(shè)計(jì)步事務(wù)分析的設(shè)計(jì)步驟和變換分析的設(shè)計(jì)步驟大部分相同或類似,主要差別僅在于由驟大部分相同或類似,主要差別僅在于由數(shù)據(jù)流圖到軟件結(jié)構(gòu)的映射方法不同:數(shù)據(jù)流圖到軟件結(jié)構(gòu)的映射方法不同:由事務(wù)流映射成的
46、軟件結(jié)構(gòu)包括一個(gè)接收分支由事務(wù)流映射成的軟件結(jié)構(gòu)包括一個(gè)接收分支和一個(gè)發(fā)送分支;和一個(gè)發(fā)送分支;映射出接收分支結(jié)構(gòu)的方法和變換分析映射出映射出接收分支結(jié)構(gòu)的方法和變換分析映射出輸入結(jié)構(gòu)的方法很相像,即從事務(wù)中心的邊界輸入結(jié)構(gòu)的方法很相像,即從事務(wù)中心的邊界開始,把沿著接收流通路的處理映射成模塊;開始,把沿著接收流通路的處理映射成模塊;發(fā)送分支的結(jié)構(gòu)包含一個(gè)調(diào)度模塊,它控制下發(fā)送分支的結(jié)構(gòu)包含一個(gè)調(diào)度模塊,它控制下層的所有活動(dòng)模塊;然后把數(shù)據(jù)流圖中的每個(gè)層的所有活動(dòng)模塊;然后把數(shù)據(jù)流圖中的每個(gè)活動(dòng)流通路映射成與它的流特征相對(duì)應(yīng)的結(jié)構(gòu)?;顒?dòng)流通路映射成與它的流特征相對(duì)應(yīng)的結(jié)構(gòu)。 例例1:n設(shè)計(jì)一個(gè)產(chǎn)品,它將一個(gè)文件名作為輸入,并設(shè)計(jì)一個(gè)產(chǎn)品,它將一個(gè)文件名作為輸入,并返回文件中的字?jǐn)?shù)。返回文件中的字?jǐn)?shù)。第一級(jí)分解第一級(jí)分解第二級(jí)分解第二級(jí)分解精化精化例例2:汽車數(shù)字儀表板汽車數(shù)字儀表板n通過(guò)模數(shù)轉(zhuǎn)換實(shí)現(xiàn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年混凝土添加劑合作協(xié)議書
- 電商直播基地主播合作協(xié)議模板
- 2025年發(fā)動(dòng)機(jī)基本件:飛輪合作協(xié)議書
- 2025年地震電磁輻射觀測(cè)儀合作協(xié)議書
- 2024-2025學(xué)年廣東省廣州市番禹區(qū)四年級(jí)(上)期末數(shù)學(xué)試卷
- 2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)上冊(cè)全冊(cè)知識(shí)點(diǎn)梳理
- 2023--2024學(xué)年湖北省武漢市武昌區(qū)九年級(jí)上學(xué)期元調(diào)物理試題
- 2025年個(gè)人機(jī)械加工合同(4篇)
- 血液凈化中心護(hù)理應(yīng)急指引理論考核試題
- 2025年九年級(jí)班主任個(gè)人德育工作年度小結(jié)(三篇)
- 9這點(diǎn)挫折算什么(課件)-五年級(jí)上冊(cè)生命與健康
- 價(jià)格監(jiān)督檢查知識(shí)培訓(xùn)課件
- 中國(guó)心理衛(wèi)生協(xié)會(huì)家庭教育指導(dǎo)師參考試題庫(kù)及答案
- 智能廣告投放技術(shù)方案
- 中國(guó)移動(dòng)各省公司組織架構(gòu)
- 知識(shí)產(chǎn)權(quán)保護(hù)執(zhí)法
- 手術(shù)安全管理之手術(shù)部位標(biāo)識(shí)安全
- 2022年版煤礦安全規(guī)程
- 數(shù)字化時(shí)代的酒店員工培訓(xùn):技能升級(jí)
- 《學(xué)術(shù)規(guī)范和論文寫作》課件全套 第1-10章 知:認(rèn)識(shí)研究與論文寫作 - 引文規(guī)范
- 帶式輸送機(jī)滾筒出廠檢驗(yàn)規(guī)范
評(píng)論
0/150
提交評(píng)論