大連理工軟件學(xué)院軟件工程課件(5)_第1頁
大連理工軟件學(xué)院軟件工程課件(5)_第2頁
大連理工軟件學(xué)院軟件工程課件(5)_第3頁
大連理工軟件學(xué)院軟件工程課件(5)_第4頁
大連理工軟件學(xué)院軟件工程課件(5)_第5頁
已閱讀5頁,還剩83頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、大連理工大學(xué)軟件學(xué)院軟件工程2022-3-4大連理工大學(xué)軟件學(xué)院2第第5章章 總體設(shè)計總體設(shè)計 傳統(tǒng)的軟件工程方法學(xué)采用傳統(tǒng)的軟件工程方法學(xué)采用結(jié)構(gòu)化設(shè)計結(jié)構(gòu)化設(shè)計(Structured Design, SD)技術(shù)完成軟件設(shè)計工作,設(shè)計工作通常劃分為技術(shù)完成軟件設(shè)計工作,設(shè)計工作通常劃分為概要設(shè)概要設(shè)計和詳細(xì)設(shè)計計和詳細(xì)設(shè)計兩階段。兩階段。 總體設(shè)計基本目的:概括地說,系統(tǒng)應(yīng)該如何實(shí)現(xiàn)。總體設(shè)計基本目的:概括地說,系統(tǒng)應(yīng)該如何實(shí)現(xiàn)。 劃分系統(tǒng)的物理元素劃分系統(tǒng)的物理元素程序、文件、數(shù)據(jù)庫、人工過程、文檔。程序、文件、數(shù)據(jù)庫、人工過程、文檔。 設(shè)計軟件的結(jié)構(gòu)設(shè)計軟件的結(jié)構(gòu)每個程序由哪些模塊組成,

2、這些模塊相互間每個程序由哪些模塊組成,這些模塊相互間的關(guān)系的關(guān)系2022-3-4大連理工大學(xué)軟件學(xué)院3第第5章章 總體設(shè)計總體設(shè)計 步驟步驟 選擇最佳方案選擇最佳方案 設(shè)計軟件結(jié)構(gòu)設(shè)計軟件結(jié)構(gòu) 通過改進(jìn)得到更合理的結(jié)構(gòu)通過改進(jìn)得到更合理的結(jié)構(gòu) 數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫設(shè)計 確定測試要求并且制定測試計劃確定測試要求并且制定測試計劃2022-3-4大連理工大學(xué)軟件學(xué)院4結(jié)構(gòu)化設(shè)計與結(jié)構(gòu)化分析關(guān)系結(jié)構(gòu)化設(shè)計與結(jié)構(gòu)化分析關(guān)系 軟件設(shè)計必須依據(jù)對軟件的需求來進(jìn)行,軟件設(shè)計必須依據(jù)對軟件的需求來進(jìn)行,結(jié)構(gòu)化分析的結(jié)果為結(jié)構(gòu)化設(shè)計提供了結(jié)構(gòu)化分析的結(jié)果為結(jié)構(gòu)化設(shè)計提供了最基本的輸入信息。最基本的輸入信息。2022-

3、3-4大連理工大學(xué)軟件學(xué)院5 分析模型的每個元素都提供了創(chuàng)建設(shè)計模型時所分析模型的每個元素都提供了創(chuàng)建設(shè)計模型時所需要的信息。下圖描繪了軟件設(shè)計過程中的信息需要的信息。下圖描繪了軟件設(shè)計過程中的信息流。流。 由數(shù)據(jù)模型、功能模型和行為模型清楚地表示的軟件由數(shù)據(jù)模型、功能模型和行為模型清楚地表示的軟件需求被傳送給軟件設(shè)計者,他們使用適當(dāng)?shù)脑O(shè)計方法需求被傳送給軟件設(shè)計者,他們使用適當(dāng)?shù)脑O(shè)計方法完成完成數(shù)據(jù)設(shè)計、體系結(jié)構(gòu)設(shè)計、接口設(shè)計和過程設(shè)計數(shù)據(jù)設(shè)計、體系結(jié)構(gòu)設(shè)計、接口設(shè)計和過程設(shè)計。結(jié)構(gòu)化設(shè)計與結(jié)構(gòu)化分析關(guān)系結(jié)構(gòu)化設(shè)計與結(jié)構(gòu)化分析關(guān)系2022-3-4大連理工大學(xué)軟件學(xué)院6把分析模型轉(zhuǎn)變成軟件設(shè)計

4、2022-3-4大連理工大學(xué)軟件學(xué)院7 在軟件設(shè)計期間所做出的決策,將最終決定軟件在軟件設(shè)計期間所做出的決策,將最終決定軟件開發(fā)能開發(fā)能否成功否成功,更重要的是,這些設(shè)計決策將決定軟件,更重要的是,這些設(shè)計決策將決定軟件維護(hù)的維護(hù)的難易程度難易程度。 設(shè)計是軟件開發(fā)過程中決定產(chǎn)品質(zhì)量的關(guān)鍵階段:設(shè)計是軟件開發(fā)過程中決定產(chǎn)品質(zhì)量的關(guān)鍵階段:提供了可以進(jìn)行質(zhì)量評估的提供了可以進(jìn)行質(zhì)量評估的軟件表示軟件表示把用戶需求準(zhǔn)確轉(zhuǎn)變?yōu)榘延脩粜枨鬁?zhǔn)確轉(zhuǎn)變?yōu)樽罱K產(chǎn)品最終產(chǎn)品是后續(xù)所有軟件是后續(xù)所有軟件開發(fā)與維護(hù)步驟開發(fā)與維護(hù)步驟的基礎(chǔ)的基礎(chǔ)設(shè)計的重要性設(shè)計的重要性2022-3-4大連理工大學(xué)軟件學(xué)院8設(shè)計的重要

5、性設(shè)計的重要性2022-3-4大連理工大學(xué)軟件學(xué)院9 5.1 設(shè)計過程設(shè)計過程 5.2 設(shè)計原理設(shè)計原理 5.3 啟發(fā)規(guī)則啟發(fā)規(guī)則 5.4 表示軟件結(jié)構(gòu)的圖形工具表示軟件結(jié)構(gòu)的圖形工具 5.5 面向數(shù)據(jù)流的設(shè)計方法面向數(shù)據(jù)流的設(shè)計方法 第第5章章 結(jié)構(gòu)化設(shè)計結(jié)構(gòu)化設(shè)計2022-3-4大連理工大學(xué)軟件學(xué)院105.1 設(shè)計過程設(shè)計過程 總體設(shè)計的兩個階段總體設(shè)計的兩個階段 系統(tǒng)設(shè)計階段,確定系統(tǒng)的具體實(shí)現(xiàn)方案系統(tǒng)設(shè)計階段,確定系統(tǒng)的具體實(shí)現(xiàn)方案 結(jié)構(gòu)設(shè)計階段,確定軟件結(jié)構(gòu)結(jié)構(gòu)設(shè)計階段,確定軟件結(jié)構(gòu) 1、設(shè)想供選擇的方案、設(shè)想供選擇的方案 2、選取合理的方案、選取合理的方案 系統(tǒng)流程圖系統(tǒng)流程圖 組

6、成系統(tǒng)的物理元素清單組成系統(tǒng)的物理元素清單 成本成本/效益分析效益分析 實(shí)現(xiàn)這個系統(tǒng)的進(jìn)度計劃實(shí)現(xiàn)這個系統(tǒng)的進(jìn)度計劃2022-3-4大連理工大學(xué)軟件學(xué)院115.1 設(shè)計過程設(shè)計過程 3、推薦最佳方案、推薦最佳方案 對比各種合理方案,推薦一個最佳方案對比各種合理方案,推薦一個最佳方案 制定詳細(xì)的實(shí)現(xiàn)計劃制定詳細(xì)的實(shí)現(xiàn)計劃 4、功能分解、功能分解 設(shè)計所有程序和文件(或數(shù)據(jù)庫)設(shè)計所有程序和文件(或數(shù)據(jù)庫) 結(jié)構(gòu)設(shè)計結(jié)構(gòu)設(shè)計程序由哪些模塊組成、模塊間的程序由哪些模塊組成、模塊間的關(guān)系關(guān)系 過程設(shè)計過程設(shè)計確定每個模塊的處理過程確定每個模塊的處理過程2022-3-4大連理工大學(xué)軟件學(xué)院125.1 設(shè)

7、計過程設(shè)計過程 從實(shí)現(xiàn)角度把復(fù)雜功能進(jìn)一步分解從實(shí)現(xiàn)角度把復(fù)雜功能進(jìn)一步分解 將數(shù)據(jù)流圖細(xì)化將數(shù)據(jù)流圖細(xì)化 使用使用IPO圖描述每個算法圖描述每個算法 5、設(shè)計軟件結(jié)構(gòu)、設(shè)計軟件結(jié)構(gòu) 把模塊組織成良好的層次把模塊組織成良好的層次 6、設(shè)計數(shù)據(jù)庫、設(shè)計數(shù)據(jù)庫 7、制定測試計劃、制定測試計劃2022-3-4大連理工大學(xué)軟件學(xué)院135.1 設(shè)計過程設(shè)計過程8、書寫文檔、書寫文檔(1)系統(tǒng)說明)系統(tǒng)說明系統(tǒng)構(gòu)成方案系統(tǒng)構(gòu)成方案物理元素清單物理元素清單成本成本/效益分析效益分析數(shù)據(jù)流圖數(shù)據(jù)流圖算法算法接口關(guān)系接口關(guān)系9、審查和復(fù)審、審查和復(fù)審(2)用戶手冊)用戶手冊(3)測試計劃)測試計劃(4)詳細(xì)的實(shí)

8、現(xiàn)計劃)詳細(xì)的實(shí)現(xiàn)計劃(5)數(shù)據(jù)庫設(shè)計結(jié)果)數(shù)據(jù)庫設(shè)計結(jié)果2022-3-4大連理工大學(xué)軟件學(xué)院145.2 設(shè)計原理設(shè)計原理 5.2.1 模塊化模塊化 模塊模塊是由邊界元素限定的相鄰的程序元素是由邊界元素限定的相鄰的程序元素(例如,數(shù)據(jù)說明,例如,數(shù)據(jù)說明,可執(zhí)行的語句可執(zhí)行的語句)的序列,而且有一個總體標(biāo)識符來代表它。的序列,而且有一個總體標(biāo)識符來代表它。 像像Pascal或或Ada這樣的塊結(jié)構(gòu)語言中的這樣的塊結(jié)構(gòu)語言中的Beginend對,或者對,或者C, C+和和Java語言中的語言中的對,都是邊界元素的例子。對,都是邊界元素的例子。 過程、函數(shù)、子程序和宏等,都可作為模塊。過程、函數(shù)、子

9、程序和宏等,都可作為模塊。 面向?qū)ο蠓缎椭械膶ο笫悄K,對象內(nèi)的方法也是模塊。面向?qū)ο蠓缎椭械膶ο笫悄K,對象內(nèi)的方法也是模塊。模塊是構(gòu)成程序的基本構(gòu)件。模塊是構(gòu)成程序的基本構(gòu)件。2022-3-4大連理工大學(xué)軟件學(xué)院155.2.1 模塊化模塊化 模塊化模塊化就是把就是把程序程序劃分劃分成獨(dú)立命名且可獨(dú)立訪成獨(dú)立命名且可獨(dú)立訪問的模塊,每個模塊完問的模塊,每個模塊完成一個子功能,把這些成一個子功能,把這些模塊集成起來構(gòu)成一個模塊集成起來構(gòu)成一個整體,可以完成指定的整體,可以完成指定的功能滿足用戶的需求。功能滿足用戶的需求。2022-3-4大連理工大學(xué)軟件學(xué)院16模塊化和軟件成本模塊化模塊化各個擊

10、各個擊破,復(fù)雜問題簡單破,復(fù)雜問題簡單化。化。接口成本:不能無接口成本:不能無限制的分割問題。限制的分割問題。適當(dāng)模塊數(shù):總成適當(dāng)模塊數(shù):總成本最低。本最低。如何如何確定:確定:適當(dāng)模塊數(shù)?適當(dāng)模塊數(shù)?模塊大小?模塊大???5.2.1 5.2.1 模塊化模塊化2022-3-4大連理工大學(xué)軟件學(xué)院175.2.1 模塊化模塊化 Meyer提出了五條標(biāo)準(zhǔn),可以用這五條標(biāo)準(zhǔn)來評提出了五條標(biāo)準(zhǔn),可以用這五條標(biāo)準(zhǔn)來評價一種價一種設(shè)計方法設(shè)計方法定義有效的模塊系統(tǒng)的能力。下定義有效的模塊系統(tǒng)的能力。下面列出這五條標(biāo)準(zhǔn)。面列出這五條標(biāo)準(zhǔn)。1.模塊可分解性模塊可分解性如果一種設(shè)計方法提供了把問題分解為子問題的系如

11、果一種設(shè)計方法提供了把問題分解為子問題的系統(tǒng)化機(jī)制,它就能降低整個問題的復(fù)雜性,從而可統(tǒng)化機(jī)制,它就能降低整個問題的復(fù)雜性,從而可以實(shí)現(xiàn)一種有效的模塊化解決方案。以實(shí)現(xiàn)一種有效的模塊化解決方案。2022-3-4大連理工大學(xué)軟件學(xué)院182. 模塊可組裝性模塊可組裝性如果一種設(shè)計方法能把現(xiàn)有的如果一種設(shè)計方法能把現(xiàn)有的(可重用的可重用的)設(shè)計構(gòu)件設(shè)計構(gòu)件組裝成新系統(tǒng),它就能提供一種并非一切都從頭組裝成新系統(tǒng),它就能提供一種并非一切都從頭開始做的模塊化解決方案。開始做的模塊化解決方案。3. 模塊可理解性模塊可理解性如果可以把一個模塊作為一種獨(dú)立單元如果可以把一個模塊作為一種獨(dú)立單元(無需參考無需參考

12、其他模塊其他模塊)來理解,那么,這樣的模塊是易于構(gòu)造來理解,那么,這樣的模塊是易于構(gòu)造和易于修改的。和易于修改的。5.2.1 模塊化模塊化2022-3-4大連理工大學(xué)軟件學(xué)院194. 模塊連續(xù)性模塊連續(xù)性如果對如果對系統(tǒng)需求的微小修改系統(tǒng)需求的微小修改只導(dǎo)致對個別模塊,只導(dǎo)致對個別模塊,而不是對整個系統(tǒng)的修改,則修改所引起的副作而不是對整個系統(tǒng)的修改,則修改所引起的副作用將最小。用將最小。5. 模塊保護(hù)性模塊保護(hù)性如果在一個模塊內(nèi)如果在一個模塊內(nèi)出現(xiàn)異常情況出現(xiàn)異常情況時,它的影響局時,它的影響局限在該模塊內(nèi)部,則由錯誤引起的副作用將最小。限在該模塊內(nèi)部,則由錯誤引起的副作用將最小。5.2.1

13、 模塊化模塊化2022-3-4大連理工大學(xué)軟件學(xué)院20 采用模塊化原理可以使軟件采用模塊化原理可以使軟件結(jié)構(gòu)清晰結(jié)構(gòu)清晰 不僅容易不僅容易設(shè)計設(shè)計也容易也容易閱讀和理解閱讀和理解。 因?yàn)槌绦蝈e誤通常局限在有關(guān)的模塊及它們之間的接口因?yàn)槌绦蝈e誤通常局限在有關(guān)的模塊及它們之間的接口中,所以模塊化使軟件中,所以模塊化使軟件容易測試和調(diào)試容易測試和調(diào)試,因而有助于提,因而有助于提高軟件的高軟件的可靠性可靠性。 因?yàn)樽儎油簧婕吧贁?shù)幾個模塊,所以模塊化能夠提因?yàn)樽儎油簧婕吧贁?shù)幾個模塊,所以模塊化能夠提高軟件的高軟件的可修改性可修改性。 模塊化也有助于軟件開發(fā)工程的模塊化也有助于軟件開發(fā)工程的組織管

14、理組織管理。5.2.1 模塊化模塊化2022-3-4大連理工大學(xué)軟件學(xué)院21 人們在實(shí)踐中認(rèn)識到,在現(xiàn)實(shí)世界中一定事物、狀態(tài)或過人們在實(shí)踐中認(rèn)識到,在現(xiàn)實(shí)世界中一定事物、狀態(tài)或過程之間總存在著程之間總存在著某些相似的方面某些相似的方面(共性共性)。把這些相似的方。把這些相似的方面集中和概括起來,暫時面集中和概括起來,暫時忽略忽略它們之間的它們之間的差異差異,這就是,這就是抽抽象象。 或者說抽象就是抽出事物的或者說抽象就是抽出事物的本質(zhì)特性本質(zhì)特性而暫時而暫時不考慮不考慮它們的它們的細(xì)節(jié)。細(xì)節(jié)。5.2.2 抽象抽象人類在認(rèn)識復(fù)雜現(xiàn)象的過程中使用的最強(qiáng)有力的思維工具是抽象。2022-3-4大連理工

15、大學(xué)軟件學(xué)院22 用層次的方式構(gòu)造和分析復(fù)雜系統(tǒng)。用層次的方式構(gòu)造和分析復(fù)雜系統(tǒng)。 復(fù)雜的動態(tài)系統(tǒng):高級的抽象概念構(gòu)造和理解復(fù)雜的動態(tài)系統(tǒng):高級的抽象概念構(gòu)造和理解較低的層較低的層次次 最低層次、具體元素。最低層次、具體元素。 軟件工程過程:每一步都是對抽象層次的一次精化軟件工程過程:每一步都是對抽象層次的一次精化 可行性研究:完整部件可行性研究:完整部件 需求分析:使用熟悉方式描述軟件解法需求分析:使用熟悉方式描述軟件解法 設(shè)計:越來越具體設(shè)計:越來越具體 實(shí)現(xiàn):抽象的最低層。實(shí)現(xiàn):抽象的最低層。5.2.2 抽象抽象2022-3-4大連理工大學(xué)軟件學(xué)院23 逐步求精是人類解決復(fù)雜問題時采用的

16、基本技術(shù),也是許多逐步求精是人類解決復(fù)雜問題時采用的基本技術(shù),也是許多軟件工程技術(shù)的基礎(chǔ)。軟件工程技術(shù)的基礎(chǔ)。 逐步求精:逐步求精:“為了能集中精力解決主要問題而盡量推遲對問題細(xì)節(jié)的為了能集中精力解決主要問題而盡量推遲對問題細(xì)節(jié)的考慮??紤]。” 求精實(shí)際上是求精實(shí)際上是細(xì)化過程細(xì)化過程。 從在從在高抽象級別高抽象級別定義的功能陳述定義的功能陳述(或信息描述或信息描述)開始。該陳述僅僅開始。該陳述僅僅概念概念性性地描述了功能或信息,但是并沒有提供功能的內(nèi)部工作情況或信息地描述了功能或信息,但是并沒有提供功能的內(nèi)部工作情況或信息的內(nèi)部結(jié)構(gòu)。的內(nèi)部結(jié)構(gòu)。 求精要求設(shè)計者求精要求設(shè)計者細(xì)化原始陳述細(xì)化

17、原始陳述,隨著每個后續(xù)求精,隨著每個后續(xù)求精(細(xì)化細(xì)化)步驟的完成步驟的完成而提供越來越多的而提供越來越多的細(xì)節(jié)細(xì)節(jié)。5.2.3 逐步求精逐步求精2022-3-4大連理工大學(xué)軟件學(xué)院24 逐步求精的重要性在于,認(rèn)知符合逐步求精的重要性在于,認(rèn)知符合MillerMiller法則:一個人在任法則:一個人在任何時刻只能把注意力集中在何時刻只能把注意力集中在7+-27+-2個知識塊上。個知識塊上。5.2.3 5.2.3 逐步求精逐步求精2022-3-4大連理工大學(xué)軟件學(xué)院25 逐步求精:逐步求精:幫助軟件工程師把精力集中在與當(dāng)前開發(fā)階段最相關(guān)的幫助軟件工程師把精力集中在與當(dāng)前開發(fā)階段最相關(guān)的方面方面目

18、前不需要考慮的細(xì)節(jié)留到以后考慮目前不需要考慮的細(xì)節(jié)留到以后考慮把一個時期內(nèi)必須解決的問題按照優(yōu)先級排序把一個時期內(nèi)必須解決的問題按照優(yōu)先級排序自頂向下的策略自頂向下的策略5.2.3 5.2.3 逐步求精逐步求精2022-3-4大連理工大學(xué)軟件學(xué)院26 抽象與求精抽象與求精是一對互補(bǔ)的概念。是一對互補(bǔ)的概念。抽象使得設(shè)計者能夠說明過程和數(shù)據(jù),同時卻忽略低層細(xì)節(jié)。抽象使得設(shè)計者能夠說明過程和數(shù)據(jù),同時卻忽略低層細(xì)節(jié)。事實(shí)上,可以把抽象看作是一種通過忽略多余的細(xì)節(jié)同時強(qiáng)調(diào)有事實(shí)上,可以把抽象看作是一種通過忽略多余的細(xì)節(jié)同時強(qiáng)調(diào)有關(guān)的細(xì)節(jié),而實(shí)現(xiàn)逐步求精的方法。關(guān)的細(xì)節(jié),而實(shí)現(xiàn)逐步求精的方法。求精則幫

19、助設(shè)計者在設(shè)計過程中揭示出低層細(xì)節(jié)。求精則幫助設(shè)計者在設(shè)計過程中揭示出低層細(xì)節(jié)。這兩個概念都有助于設(shè)計者在這兩個概念都有助于設(shè)計者在設(shè)計演化過程中創(chuàng)造出完整的設(shè)計設(shè)計演化過程中創(chuàng)造出完整的設(shè)計模型。模型。5.2.3 逐步求精逐步求精2022-3-4大連理工大學(xué)軟件學(xué)院27 應(yīng)用模塊化原理時,自然會產(chǎn)生的一個問題是:應(yīng)用模塊化原理時,自然會產(chǎn)生的一個問題是:“為了得為了得到最好的一組模塊,應(yīng)該怎樣到最好的一組模塊,應(yīng)該怎樣分解軟件分解軟件”。 信息隱藏原理指出:應(yīng)該這樣設(shè)計和確定模塊,使得一個信息隱藏原理指出:應(yīng)該這樣設(shè)計和確定模塊,使得一個模塊內(nèi)包含的信息模塊內(nèi)包含的信息(過程和數(shù)據(jù)過程和數(shù)據(jù)

20、)對于對于不需要這些信息不需要這些信息的模的模塊來說,是塊來說,是不能訪問不能訪問的。的。5.2.4 信息隱藏和局部化信息隱藏和局部化 2022-3-4大連理工大學(xué)軟件學(xué)院28 隱藏模塊的隱藏模塊的實(shí)現(xiàn)細(xì)節(jié)實(shí)現(xiàn)細(xì)節(jié) 模塊之間只交換那些為了完成軟件功能而模塊之間只交換那些為了完成軟件功能而必須交換的信息必須交換的信息 對模塊內(nèi)部實(shí)現(xiàn)細(xì)節(jié)的對模塊內(nèi)部實(shí)現(xiàn)細(xì)節(jié)的訪問限制訪問限制 修改期間由于疏忽而引入的錯誤修改期間由于疏忽而引入的錯誤很少可能傳播很少可能傳播到其他模塊到其他模塊5.2.4 信息隱藏和局部化信息隱藏和局部化 2022-3-4大連理工大學(xué)軟件學(xué)院295.2.5 模塊獨(dú)立模塊獨(dú)立 “模塊獨(dú)

21、立模塊獨(dú)立”概念是模塊化、抽象、逐步求精和信概念是模塊化、抽象、逐步求精和信息隱藏等概念的直接結(jié)果,也是完成有效的模塊設(shè)息隱藏等概念的直接結(jié)果,也是完成有效的模塊設(shè)計的計的基本標(biāo)準(zhǔn)基本標(biāo)準(zhǔn)。 希望設(shè)計這樣的軟件結(jié)構(gòu):希望設(shè)計這樣的軟件結(jié)構(gòu): 每個模塊完成一定相對獨(dú)立的子功能每個模塊完成一定相對獨(dú)立的子功能 與其他模塊之間的關(guān)系簡單與其他模塊之間的關(guān)系簡單2022-3-4大連理工大學(xué)軟件學(xué)院305.2.5 模塊獨(dú)立模塊獨(dú)立 “模塊獨(dú)立化模塊獨(dú)立化”原因:原因:易于開發(fā)易于開發(fā)易于測試和維護(hù)易于測試和維護(hù) 模塊的獨(dú)立程度可以由兩個定性標(biāo)準(zhǔn)來度量,這兩個標(biāo)準(zhǔn)模塊的獨(dú)立程度可以由兩個定性標(biāo)準(zhǔn)來度量,這

22、兩個標(biāo)準(zhǔn)分別稱為分別稱為內(nèi)聚和耦合內(nèi)聚和耦合。耦合耦合衡量不同模塊彼此間互相依賴衡量不同模塊彼此間互相依賴( (連接連接) )緊密程度;緊密程度;內(nèi)聚內(nèi)聚衡量一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度。衡量一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度。2022-3-4大連理工大學(xué)軟件學(xué)院31耦合是對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間耦合是對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量互連程度的度量。耦合強(qiáng)弱。耦合強(qiáng)弱取決于模塊間取決于模塊間接口的復(fù)雜程度接口的復(fù)雜程度,進(jìn)入或訪問一個模塊的點(diǎn),以及通,進(jìn)入或訪問一個模塊的點(diǎn),以及通過接口的數(shù)據(jù)。過接口的數(shù)據(jù)。在軟件設(shè)計中應(yīng)該追求盡可能在軟件設(shè)計中應(yīng)該追求盡可能松散耦

23、合松散耦合的系統(tǒng)。在這樣的系統(tǒng)中可的系統(tǒng)。在這樣的系統(tǒng)中可以研究、測試或維護(hù)任何一個模塊,而不需要對系統(tǒng)的以研究、測試或維護(hù)任何一個模塊,而不需要對系統(tǒng)的其他模塊有其他模塊有很多了解很多了解。此外,由于模塊間聯(lián)系簡單,發(fā)生在一處的錯誤此外,由于模塊間聯(lián)系簡單,發(fā)生在一處的錯誤傳播到整個系統(tǒng)傳播到整個系統(tǒng)的的可能性就很小。因此,模塊間的耦合程度強(qiáng)烈影響系統(tǒng)的可理解性、可能性就很小。因此,模塊間的耦合程度強(qiáng)烈影響系統(tǒng)的可理解性、可測試性、可靠性和可維護(hù)性。可測試性、可靠性和可維護(hù)性。耦合耦合2022-3-4大連理工大學(xué)軟件學(xué)院32 常見的耦合程度:常見的耦合程度:無耦合:任何一個模塊都獨(dú)立工作,現(xiàn)

24、實(shí)系統(tǒng)中不存在無耦合:任何一個模塊都獨(dú)立工作,現(xiàn)實(shí)系統(tǒng)中不存在數(shù)據(jù)耦合:模塊間交換的信息只有數(shù)據(jù)數(shù)據(jù)耦合:模塊間交換的信息只有數(shù)據(jù)控制耦合:模塊間傳遞控制信息控制耦合:模塊間傳遞控制信息特征耦合:把整個數(shù)據(jù)結(jié)構(gòu)作為參數(shù)傳遞,而被調(diào)用的特征耦合:把整個數(shù)據(jù)結(jié)構(gòu)作為參數(shù)傳遞,而被調(diào)用的模塊之需要使用其中一部分?jǐn)?shù)據(jù)模塊之需要使用其中一部分?jǐn)?shù)據(jù)公共環(huán)境耦合:多個模塊通過公共數(shù)據(jù)環(huán)境相互作用公共環(huán)境耦合:多個模塊通過公共數(shù)據(jù)環(huán)境相互作用耦合耦合2022-3-4大連理工大學(xué)軟件學(xué)院33內(nèi)容耦合:內(nèi)容耦合: 一個模塊訪問另一個模塊的內(nèi)部數(shù)據(jù)一個模塊訪問另一個模塊的內(nèi)部數(shù)據(jù) 一個模塊不通過正常入口而轉(zhuǎn)到另一個

25、模塊的內(nèi)部一個模塊不通過正常入口而轉(zhuǎn)到另一個模塊的內(nèi)部 兩個模塊有一部分程序代碼重迭兩個模塊有一部分程序代碼重迭 一個模塊有多個入口一個模塊有多個入口耦合耦合2022-3-4大連理工大學(xué)軟件學(xué)院34 總之,耦合是影響軟件復(fù)雜程度的一個重要因素??傊詈鲜怯绊戃浖?fù)雜程度的一個重要因素。應(yīng)該采取下述設(shè)計原則:應(yīng)該采取下述設(shè)計原則: 盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合。限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合。耦合耦合2022-3-4大連理工大學(xué)軟件學(xué)院35思考題思考題 確定模塊之間的耦合類型。確定模塊之間

26、的耦合類型。 模塊模塊P、T、U 更新同一個數(shù)更新同一個數(shù) 據(jù)庫據(jù)庫數(shù)據(jù)耦合控制耦合數(shù)據(jù) or 特征P、T、U公共環(huán)境耦合2022-3-4大連理工大學(xué)軟件學(xué)院36 內(nèi)聚標(biāo)志一個模塊內(nèi)各個元素內(nèi)聚標(biāo)志一個模塊內(nèi)各個元素彼此結(jié)合彼此結(jié)合的緊密程度,它的緊密程度,它是信息隱蔽和局部化概念的自然擴(kuò)展。簡單地說,是信息隱蔽和局部化概念的自然擴(kuò)展。簡單地說,理想理想內(nèi)聚的模塊只做一件事情內(nèi)聚的模塊只做一件事情。 設(shè)計時應(yīng)該力求做到設(shè)計時應(yīng)該力求做到高內(nèi)聚高內(nèi)聚,通常中等程度的內(nèi)聚也是,通常中等程度的內(nèi)聚也是可以采用的,而且效果和高內(nèi)聚相差不多;但是,低內(nèi)可以采用的,而且效果和高內(nèi)聚相差不多;但是,低內(nèi)聚很

27、壞,不要使用。聚很壞,不要使用。內(nèi)聚內(nèi)聚2022-3-4大連理工大學(xué)軟件學(xué)院37 內(nèi)聚和耦合是密切相關(guān)的,模塊內(nèi)的內(nèi)聚和耦合是密切相關(guān)的,模塊內(nèi)的高內(nèi)聚高內(nèi)聚往往意味著模塊往往意味著模塊間的間的松耦合松耦合。 內(nèi)聚和耦合都是進(jìn)行模塊化設(shè)計的有力工具,但是實(shí)踐表明內(nèi)聚和耦合都是進(jìn)行模塊化設(shè)計的有力工具,但是實(shí)踐表明內(nèi)聚更重要內(nèi)聚更重要,應(yīng)該把更多注意力集中到提高模塊,應(yīng)該把更多注意力集中到提高模塊的內(nèi)聚程度的內(nèi)聚程度上。上。 低內(nèi)聚:低內(nèi)聚:偶然內(nèi)聚:一個模塊任務(wù)間關(guān)系松散或者沒有關(guān)系偶然內(nèi)聚:一個模塊任務(wù)間關(guān)系松散或者沒有關(guān)系邏輯內(nèi)聚:一個模塊完成的任務(wù)在邏輯上屬于相同或者相似的一類邏輯內(nèi)聚:

28、一個模塊完成的任務(wù)在邏輯上屬于相同或者相似的一類時間內(nèi)聚:模塊包含的任務(wù)必須在同一段時間內(nèi)執(zhí)行時間內(nèi)聚:模塊包含的任務(wù)必須在同一段時間內(nèi)執(zhí)行內(nèi)聚內(nèi)聚2022-3-4大連理工大學(xué)軟件學(xué)院38 中內(nèi)聚中內(nèi)聚過程內(nèi)聚:一個模塊內(nèi)的處理元素相關(guān),并且以特定的次序執(zhí)行過程內(nèi)聚:一個模塊內(nèi)的處理元素相關(guān),并且以特定的次序執(zhí)行通信內(nèi)聚:模塊中所有元素都使用同一個輸入數(shù)據(jù)、產(chǎn)生同一個輸通信內(nèi)聚:模塊中所有元素都使用同一個輸入數(shù)據(jù)、產(chǎn)生同一個輸出數(shù)據(jù)出數(shù)據(jù) 高內(nèi)聚高內(nèi)聚順序內(nèi)聚:一個模塊內(nèi)的處理元素和同一個功能密切相關(guān),并且必順序內(nèi)聚:一個模塊內(nèi)的處理元素和同一個功能密切相關(guān),并且必須順序執(zhí)行須順序執(zhí)行功能內(nèi)聚

29、:模塊內(nèi)所有處理元素屬于一個整體,完成一個單一的功功能內(nèi)聚:模塊內(nèi)所有處理元素屬于一個整體,完成一個單一的功能能內(nèi)聚內(nèi)聚2022-3-4大連理工大學(xué)軟件學(xué)院39 事實(shí)上,沒有必要精確確定內(nèi)聚的級別。重要的是設(shè)計時事實(shí)上,沒有必要精確確定內(nèi)聚的級別。重要的是設(shè)計時力爭做到力爭做到高內(nèi)聚高內(nèi)聚,并且能夠辨認(rèn)出低內(nèi)聚的模塊,有能力,并且能夠辨認(rèn)出低內(nèi)聚的模塊,有能力通過修改設(shè)計提高通過修改設(shè)計提高模塊的內(nèi)聚程度模塊的內(nèi)聚程度,降低模塊間的耦合程,降低模塊間的耦合程度,從而獲得度,從而獲得較高的較高的模塊獨(dú)立性模塊獨(dú)立性。內(nèi)聚內(nèi)聚2022-3-4大連理工大學(xué)軟件學(xué)院40思考題思考題 確定每個模塊的內(nèi)聚

30、類型。確定每個模塊的內(nèi)聚類型。功能內(nèi)聚偶然內(nèi)聚2022-3-4大連理工大學(xué)軟件學(xué)院415.3 啟發(fā)規(guī)則啟發(fā)規(guī)則 軟件工程師們在開發(fā)計算機(jī)軟件的長期實(shí)踐中積累軟件工程師們在開發(fā)計算機(jī)軟件的長期實(shí)踐中積累了了豐富的經(jīng)驗(yàn)豐富的經(jīng)驗(yàn),總結(jié)這些經(jīng)驗(yàn)得出了一些啟發(fā)規(guī)則。,總結(jié)這些經(jīng)驗(yàn)得出了一些啟發(fā)規(guī)則。 啟發(fā)規(guī)則雖然不像前兩節(jié)講述的基本原理那樣普遍啟發(fā)規(guī)則雖然不像前兩節(jié)講述的基本原理那樣普遍適用,但是在許多場合仍然能給軟件工程師有益的適用,但是在許多場合仍然能給軟件工程師有益的啟示,往往能幫助他們找到改進(jìn)軟件設(shè)計提高軟件啟示,往往能幫助他們找到改進(jìn)軟件設(shè)計提高軟件質(zhì)量的途徑,因質(zhì)量的途徑,因此此有助于實(shí)現(xiàn)

31、有效的模塊化有助于實(shí)現(xiàn)有效的模塊化。2022-3-4大連理工大學(xué)軟件學(xué)院42 1 改進(jìn)改進(jìn)軟件結(jié)構(gòu)軟件結(jié)構(gòu)提高模塊獨(dú)立性提高模塊獨(dú)立性 2 模塊模塊規(guī)模規(guī)模應(yīng)該適中應(yīng)該適中 3 深度、寬度、扇出和扇入深度、寬度、扇出和扇入都應(yīng)適當(dāng)都應(yīng)適當(dāng) 4 模塊的模塊的作用域作用域應(yīng)該在應(yīng)該在控制域控制域之內(nèi)之內(nèi) 5 力爭降低力爭降低模塊接口模塊接口的復(fù)雜程度的復(fù)雜程度 6 設(shè)計設(shè)計單入口單出口單入口單出口的模塊的模塊 7 模塊功能模塊功能應(yīng)該可以預(yù)測應(yīng)該可以預(yù)測5.3 啟發(fā)規(guī)則啟發(fā)規(guī)則2022-3-4大連理工大學(xué)軟件學(xué)院43 1 改進(jìn)改進(jìn)軟件結(jié)構(gòu)軟件結(jié)構(gòu)提高模塊獨(dú)立性提高模塊獨(dú)立性 軟件初步結(jié)構(gòu)軟件初步結(jié)

32、構(gòu)審查分析審查分析模塊分解或合并模塊分解或合并降低降低耦合提高內(nèi)聚耦合提高內(nèi)聚 2 模塊模塊規(guī)模規(guī)模應(yīng)該適中應(yīng)該適中 規(guī)模過大:理解不充分,進(jìn)行分解規(guī)模過大:理解不充分,進(jìn)行分解 規(guī)模過?。合到y(tǒng)接口復(fù)雜規(guī)模過小:系統(tǒng)接口復(fù)雜5.3 啟發(fā)規(guī)則啟發(fā)規(guī)則2022-3-4大連理工大學(xué)軟件學(xué)院44 3 深度、寬度、扇出和扇入深度、寬度、扇出和扇入都應(yīng)適當(dāng)都應(yīng)適當(dāng) 深度:軟件結(jié)構(gòu)中控制的層數(shù)深度:軟件結(jié)構(gòu)中控制的層數(shù) 寬度:軟件結(jié)構(gòu)中同一個層次上的模塊總數(shù)最寬度:軟件結(jié)構(gòu)中同一個層次上的模塊總數(shù)最大值大值 扇出:一個模塊直接控制(調(diào)用)的模塊數(shù)目扇出:一個模塊直接控制(調(diào)用)的模塊數(shù)目 扇入:有多少個上級

33、模塊直接調(diào)用它扇入:有多少個上級模塊直接調(diào)用它5.3 啟發(fā)規(guī)則啟發(fā)規(guī)則2022-3-4大連理工大學(xué)軟件學(xué)院455.3 啟發(fā)規(guī)則啟發(fā)規(guī)則2022-3-4大連理工大學(xué)軟件學(xué)院46 4 模塊的模塊的作用域作用域應(yīng)該在應(yīng)該在控制域控制域之內(nèi)之內(nèi)5.3 啟發(fā)規(guī)則啟發(fā)規(guī)則 作用域:受該模塊內(nèi)一作用域:受該模塊內(nèi)一個判定影響的所有模塊個判定影響的所有模塊的集合。的集合。 控制域:這個模塊本身控制域:這個模塊本身以及所有直接或者間接以及所有直接或者間接從屬于它的模塊的集合。從屬于它的模塊的集合。2022-3-4大連理工大學(xué)軟件學(xué)院47 5 力爭降低力爭降低模塊接口模塊接口的復(fù)雜程度的復(fù)雜程度 仔細(xì)設(shè)計模塊接口

34、仔細(xì)設(shè)計模塊接口信息傳遞簡單、和模塊的功能一信息傳遞簡單、和模塊的功能一致致 例:求一元二次方程的根模塊例:求一元二次方程的根模塊QUAD_ROOT(TBL,X)QUAD_ROOT(TBL,X),其中其中TBLTBL為系數(shù)數(shù)組,為系數(shù)數(shù)組,X X為根數(shù)組。為根數(shù)組。 QUAD_ROOT(AQUAD_ROOT(A,B B,C C,ROOT1ROOT1,ROOT2)ROOT2),其中,其中A A、B B、C C為系數(shù),為系數(shù), ROOT1ROOT1和和ROOT2ROOT2為根。為根。5.3 啟發(fā)規(guī)則啟發(fā)規(guī)則2022-3-4大連理工大學(xué)軟件學(xué)院48 6 設(shè)計設(shè)計單入口單出口單入口單出口的模塊的模塊

35、避免內(nèi)容耦合避免內(nèi)容耦合 7 模塊功能模塊功能應(yīng)該可以預(yù)測應(yīng)該可以預(yù)測 模塊可預(yù)測:相同的輸入產(chǎn)生相同的輸出模塊可預(yù)測:相同的輸入產(chǎn)生相同的輸出5.3 啟發(fā)規(guī)則啟發(fā)規(guī)則2022-3-4大連理工大學(xué)軟件學(xué)院495.4 表示軟件結(jié)構(gòu)的圖形工具表示軟件結(jié)構(gòu)的圖形工具 5.4.1 層次圖和層次圖和HIPO圖圖 通常使用通常使用層次圖層次圖描繪軟件的層次結(jié)構(gòu)。描繪軟件的層次結(jié)構(gòu)。 在層次圖中一個矩形框代表一個模塊在層次圖中一個矩形框代表一個模塊 框間的連線表示調(diào)用關(guān)系框間的連線表示調(diào)用關(guān)系(位于位于上方的矩形框上方的矩形框所代表所代表的模塊調(diào)用的模塊調(diào)用位于下方的矩形框位于下方的矩形框所代表的模塊所代表

36、的模塊)。2022-3-4大連理工大學(xué)軟件學(xué)院50圖5.3 正文加工系統(tǒng)的層次圖5.4.1 層次圖和HIPO圖2022-3-4大連理工大學(xué)軟件學(xué)院51 HIPO圖圖是美國是美國IBM公司發(fā)明的公司發(fā)明的“層次圖加輸入層次圖加輸入/處理處理/輸出圖輸出圖”的英文縮寫。的英文縮寫。 為了使為了使HIPO圖具有圖具有可追蹤性可追蹤性,在,在H圖圖(即層次圖即層次圖)里除了頂層的方框之外,每個方框都加了里除了頂層的方框之外,每個方框都加了編號編號。 編號方法與數(shù)據(jù)流圖的編號方法相同。編號方法與數(shù)據(jù)流圖的編號方法相同。5.4.1 層次圖和HIPO圖2022-3-4大連理工大學(xué)軟件學(xué)院52圖5.4 帶編號

37、的層次圖(H圖)5.4.1 層次圖和HIPO圖2022-3-4大連理工大學(xué)軟件學(xué)院53 H圖中每個方框代表模塊的處理過程,都可以有一張圖中每個方框代表模塊的處理過程,都可以有一張IPO圖圖與之對應(yīng)。與之對應(yīng)。 IPO圖:圖:左邊框中列出輸入項左邊框中列出輸入項中間框?yàn)橹饕奶幚碇虚g框?yàn)橹饕奶幚碛疫吙驗(yàn)檩敵鲰椨疫吙驗(yàn)檩敵鲰椉^指出數(shù)據(jù)通信的情況箭頭指出數(shù)據(jù)通信的情況5.4.1 層次圖和HIPO圖2022-3-4大連理工大學(xué)軟件學(xué)院54IPO圖5.4.1 層次圖和HIPO圖2022-3-4大連理工大學(xué)軟件學(xué)院55 IPO表(改進(jìn)的表(改進(jìn)的IPO圖)圖) 附加信息:附加信息: 系統(tǒng)名稱系統(tǒng)名稱

38、作者作者 完成日期完成日期 模塊名稱模塊名稱 模塊編號模塊編號 被調(diào)用模塊清單被調(diào)用模塊清單 調(diào)用模塊清單調(diào)用模塊清單 注釋注釋 局部數(shù)據(jù)元素局部數(shù)據(jù)元素 改進(jìn)的IPO圖(IPO表)的形式5.4.1 層次圖和HIPO圖2022-3-4大連理工大學(xué)軟件學(xué)院56 結(jié)構(gòu)圖結(jié)構(gòu)圖是進(jìn)行軟件結(jié)構(gòu)設(shè)計的另一個有力工具。是進(jìn)行軟件結(jié)構(gòu)設(shè)計的另一個有力工具。 結(jié)構(gòu)圖也是描繪軟件結(jié)構(gòu)的圖形工具結(jié)構(gòu)圖也是描繪軟件結(jié)構(gòu)的圖形工具 圖中一個方框代表一個模塊,框內(nèi)注明模塊的名字或主要功能圖中一個方框代表一個模塊,框內(nèi)注明模塊的名字或主要功能 方框之間的箭頭方框之間的箭頭(或直線或直線)表示模塊的調(diào)用關(guān)系。表示模塊的調(diào)用

39、關(guān)系。 在結(jié)構(gòu)圖中通常還用帶注釋的箭頭表示模塊調(diào)用過程中在結(jié)構(gòu)圖中通常還用帶注釋的箭頭表示模塊調(diào)用過程中來來回傳遞的信息。回傳遞的信息。 可以利用注釋箭頭尾部的形狀來區(qū)分傳遞的信息是數(shù)據(jù)還是控制信可以利用注釋箭頭尾部的形狀來區(qū)分傳遞的信息是數(shù)據(jù)還是控制信息息 尾部是尾部是空心圓空心圓表示傳遞的是表示傳遞的是數(shù)據(jù)數(shù)據(jù) 實(shí)心圓實(shí)心圓表示傳遞的是表示傳遞的是控制信息控制信息5.4.2 結(jié)構(gòu)圖2022-3-4大連理工大學(xué)軟件學(xué)院57圖5.5 結(jié)構(gòu)圖的例子產(chǎn)生最佳解的一般結(jié)構(gòu)2022-3-4大連理工大學(xué)軟件學(xué)院58結(jié)構(gòu)圖附加符號圖5.6 判定為真時調(diào)用A,為假時調(diào)用B2022-3-4大連理工大學(xué)軟件學(xué)院

40、59結(jié)構(gòu)圖附加符號圖5.7 模塊M循環(huán)調(diào)用模塊A,B,C2022-3-4大連理工大學(xué)軟件學(xué)院60 層次圖和結(jié)構(gòu)圖特點(diǎn):層次圖和結(jié)構(gòu)圖特點(diǎn):并不嚴(yán)格表示模塊的調(diào)用次序并不嚴(yán)格表示模塊的調(diào)用次序并不指明什么時候調(diào)用下層模塊并不指明什么時候調(diào)用下層模塊沒有指明先執(zhí)行調(diào)用還是先執(zhí)行模塊中的語句沒有指明先執(zhí)行調(diào)用還是先執(zhí)行模塊中的語句沒有表示模塊內(nèi)其它成分沒有表示模塊內(nèi)其它成分 通常使用層次圖描繪軟件結(jié)構(gòu)通常使用層次圖描繪軟件結(jié)構(gòu) 可以用層次圖導(dǎo)出結(jié)構(gòu)圖的過程,檢查設(shè)計的正確性和評可以用層次圖導(dǎo)出結(jié)構(gòu)圖的過程,檢查設(shè)計的正確性和評價模塊的獨(dú)立性價模塊的獨(dú)立性5.4.2 結(jié)構(gòu)圖2022-3-4大連理工大學(xué)

41、軟件學(xué)院615.5 面向數(shù)據(jù)流的設(shè)計方法面向數(shù)據(jù)流的設(shè)計方法 面向數(shù)據(jù)流的設(shè)計方法面向數(shù)據(jù)流的設(shè)計方法的目標(biāo)是給出設(shè)計的目標(biāo)是給出設(shè)計軟件結(jié)構(gòu)軟件結(jié)構(gòu)的一個系的一個系統(tǒng)化的途徑。統(tǒng)化的途徑。 在需求分析階段,信息流是一個關(guān)鍵考慮因素,通常用數(shù)據(jù)在需求分析階段,信息流是一個關(guān)鍵考慮因素,通常用數(shù)據(jù)流圖描繪信息在系統(tǒng)中加工和流動情況。流圖描繪信息在系統(tǒng)中加工和流動情況。面向數(shù)據(jù)流的設(shè)計方法定義了一些不同的面向數(shù)據(jù)流的設(shè)計方法定義了一些不同的“映射映射”,利用這些映射可,利用這些映射可以把以把數(shù)據(jù)流圖變換成軟件結(jié)構(gòu)數(shù)據(jù)流圖變換成軟件結(jié)構(gòu)。因?yàn)槿魏诬浖到y(tǒng)都可以用因?yàn)槿魏诬浖到y(tǒng)都可以用數(shù)據(jù)流圖數(shù)據(jù)流

42、圖表示,所以表示,所以面向數(shù)據(jù)流的設(shè)計方面向數(shù)據(jù)流的設(shè)計方法法理論上可以設(shè)計任何軟件的結(jié)構(gòu)。理論上可以設(shè)計任何軟件的結(jié)構(gòu)。通常的結(jié)構(gòu)化設(shè)計方法,也就是基于數(shù)通常的結(jié)構(gòu)化設(shè)計方法,也就是基于數(shù)據(jù)流的設(shè)計方法。據(jù)流的設(shè)計方法。2022-3-4大連理工大學(xué)軟件學(xué)院62面向數(shù)據(jù)流的設(shè)計方法把信息流面向數(shù)據(jù)流的設(shè)計方法把信息流映射映射成軟件結(jié)構(gòu),信息流成軟件結(jié)構(gòu),信息流的類型決定了映射的方法。信息流有下述兩種類型。的類型決定了映射的方法。信息流有下述兩種類型。 1.變換流變換流 2.事務(wù)流事務(wù)流5.5.1 概念概念2022-3-4大連理工大學(xué)軟件學(xué)院631.變換流變換流2022-3-4大連理工大學(xué)軟件學(xué)

43、院642.事務(wù)流事務(wù)流2022-3-4大連理工大學(xué)軟件學(xué)院65圖圖5.10 5.10 面向數(shù)據(jù)流方法的設(shè)計過程面向數(shù)據(jù)流方法的設(shè)計過程2022-3-4大連理工大學(xué)軟件學(xué)院66 變換分析變換分析是一系列設(shè)計步驟的總稱,經(jīng)過這些是一系列設(shè)計步驟的總稱,經(jīng)過這些步驟把具有步驟把具有變換流特點(diǎn)變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的數(shù)據(jù)流圖按預(yù)先確定的模式的模式映射成軟件結(jié)構(gòu)映射成軟件結(jié)構(gòu)。 下面通過一個例子說明變換分析的方法。下面通過一個例子說明變換分析的方法。 汽車數(shù)字儀表板的設(shè)計。汽車數(shù)字儀表板的設(shè)計。5.5.2 變換分析變換分析2022-3-4大連理工大學(xué)軟件學(xué)院67設(shè)計步驟設(shè)計步驟1.復(fù)查基本系統(tǒng)模

44、型。復(fù)查基本系統(tǒng)模型。2.復(fù)查并精化數(shù)據(jù)流圖。復(fù)查并精化數(shù)據(jù)流圖。3.確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性。確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性。4.確定輸入流和輸出流的邊界,從而孤立出變換中心。確定輸入流和輸出流的邊界,從而孤立出變換中心。5.完成完成“第一級分解第一級分解”。6.完成完成“第二級分解第二級分解”。7.使用設(shè)計度量和啟發(fā)規(guī)則對第一次分割得到的軟件結(jié)構(gòu)進(jìn)一使用設(shè)計度量和啟發(fā)規(guī)則對第一次分割得到的軟件結(jié)構(gòu)進(jìn)一步精化。步精化。5.5.2 變換分析變換分析2022-3-4大連理工大學(xué)軟件學(xué)院68圖圖5.11 5.11 數(shù)字儀表板系統(tǒng)的數(shù)據(jù)流圖數(shù)字儀表板系統(tǒng)的數(shù)據(jù)流圖1、復(fù)查基本系統(tǒng)模

45、型。、復(fù)查基本系統(tǒng)模型。2、復(fù)查并精化數(shù)據(jù)流圖。、復(fù)查并精化數(shù)據(jù)流圖。3、確定數(shù)據(jù)流圖具有變換特性還、確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性。是事務(wù)特性。2022-3-4大連理工大學(xué)軟件學(xué)院69圖圖5.12 5.12 具有邊界的數(shù)據(jù)流圖具有邊界的數(shù)據(jù)流圖4、確定輸入流和輸出流的、確定輸入流和輸出流的邊界,從而孤立出變換中邊界,從而孤立出變換中心。心。2022-3-4大連理工大學(xué)軟件學(xué)院70圖5.13 第一級分解的方法5、完成、完成“第一級分解第一級分解”。2022-3-4大連理工大學(xué)軟件學(xué)院71圖5.14 數(shù)字儀表板系統(tǒng)的第一級分解2022-3-4大連理工大學(xué)軟件學(xué)院72圖5.15 第二級分解的

46、方法6、完成、完成“第二級分解第二級分解”。2022-3-4大連理工大學(xué)軟件學(xué)院73圖圖5.16 5.16 未經(jīng)精化的輸入結(jié)構(gòu)未經(jīng)精化的輸入結(jié)構(gòu)2022-3-4大連理工大學(xué)軟件學(xué)院74圖圖5.17 5.17 未經(jīng)精化的變換結(jié)構(gòu)未經(jīng)精化的變換結(jié)構(gòu)2022-3-4大連理工大學(xué)軟件學(xué)院75圖圖5.18 5.18 未經(jīng)精化的輸出結(jié)構(gòu)未經(jīng)精化的輸出結(jié)構(gòu)2022-3-4大連理工大學(xué)軟件學(xué)院76圖圖5.19 5.19 精化后的數(shù)字儀表板系統(tǒng)的軟件結(jié)構(gòu)精化后的數(shù)字儀表板系統(tǒng)的軟件結(jié)構(gòu)7、使用設(shè)計度量和啟發(fā)規(guī)則對第、使用設(shè)計度量和啟發(fā)規(guī)則對第一次分割得到的軟件結(jié)構(gòu)進(jìn)一一次分割得到的軟件結(jié)構(gòu)進(jìn)一步精化。步精化。2

47、022-3-4大連理工大學(xué)軟件學(xué)院77 上述七個設(shè)計步驟的目的是,開發(fā)出軟件的整體表示。上述七個設(shè)計步驟的目的是,開發(fā)出軟件的整體表示。也就是說,一旦確定了軟件結(jié)構(gòu)就可以把它作為一個整也就是說,一旦確定了軟件結(jié)構(gòu)就可以把它作為一個整體來復(fù)查,從而能夠評價和精化軟件結(jié)構(gòu)。體來復(fù)查,從而能夠評價和精化軟件結(jié)構(gòu)。 在這個時期進(jìn)行修改只需要很在這個時期進(jìn)行修改只需要很少的附加工作,但是卻能少的附加工作,但是卻能夠?qū)浖馁|(zhì)量特別是軟件的可維護(hù)性產(chǎn)生深遠(yuǎn)的影響。夠?qū)浖馁|(zhì)量特別是軟件的可維護(hù)性產(chǎn)生深遠(yuǎn)的影響。5.5.2 變換分析變換分析2022-3-4大連理工大學(xué)軟件學(xué)院78雖然在任何情況下都可以使用變換分析方法設(shè)計軟件結(jié)構(gòu),但雖然在任何情況下都可以使用變換分析方法設(shè)計軟件結(jié)構(gòu),但是在數(shù)據(jù)流具有是在數(shù)據(jù)流具有明顯的事務(wù)特點(diǎn)明顯的事務(wù)

溫馨提示

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

最新文檔

評論

0/150

提交評論