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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

5、院8設(shè)計(jì)的重要性設(shè)計(jì)的重要性2021-12-9大連理工大學(xué)軟件學(xué)院9 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ì)方法 第第5章章 結(jié)構(gòu)化設(shè)計(jì)結(jié)構(gòu)化設(shè)計(jì)2021-12-9大連理工大學(xué)軟件學(xué)院105.1 設(shè)計(jì)過(guò)程設(shè)計(jì)過(guò)程 總體設(shè)計(jì)的兩個(gè)階段總體設(shè)計(jì)的兩個(gè)階段 系統(tǒng)設(shè)計(jì)階段,確定系統(tǒng)的具體實(shí)現(xiàn)方案系統(tǒng)設(shè)計(jì)階段,確定系統(tǒng)的具體實(shí)現(xiàn)方案 結(jié)構(gòu)設(shè)計(jì)階段,確定軟件結(jié)構(gòu)結(jié)構(gòu)設(shè)計(jì)階段,確定軟件結(jié)構(gòu) 1、設(shè)想供選擇的方案、設(shè)想供選擇的方案 2、選取合理的方案、選取合理的方案 系統(tǒng)流

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

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

8、)測(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é)果2021-12-9大連理工大學(xué)軟件學(xué)院145.2 設(shè)計(jì)原理設(shè)計(jì)原理 5.2.1 模塊化模塊化 模塊模塊是由邊界元素限定的相鄰的程序元素是由邊界元素限定的相鄰的程序元素(例如,數(shù)據(jù)說(shuō)明,例如,數(shù)據(jù)說(shuō)明,可執(zhí)行的語(yǔ)句可執(zhí)行的語(yǔ)句)的序列,而且有一個(gè)總體標(biāo)識(shí)符來(lái)代表它。的序列,而且有一個(gè)總體標(biāo)識(shí)符來(lái)代表它。 像像Pascal或或Ada這樣的塊結(jié)構(gòu)語(yǔ)言中的這樣的塊結(jié)構(gòu)語(yǔ)言中的Beginend對(duì),或者對(duì),或者C, C+和和Java語(yǔ)言中的語(yǔ)言中的對(duì),都是邊界元素的例子。對(duì),都是邊界元素的例子。 過(guò)程、函數(shù)、子程序和宏等,都

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

10、化和軟件成本模塊化模塊化各個(gè)擊各個(gè)擊破,復(fù)雜問(wèn)題簡(jiǎn)單破,復(fù)雜問(wèn)題簡(jiǎn)單化?;?。接口成本:不能無(wú)接口成本:不能無(wú)限制的分割問(wèn)題。限制的分割問(wèn)題。適當(dāng)模塊數(shù):總成適當(dāng)模塊數(shù):總成本最低。本最低。如何如何確定:確定:適當(dāng)模塊數(shù)?適當(dāng)模塊數(shù)?模塊大?。磕K大???5.2.1 5.2.1 模塊化模塊化2021-12-9大連理工大學(xué)軟件學(xué)院175.2.1 模塊化模塊化 Meyer提出了五條標(biāo)準(zhǔn),可以用這五條標(biāo)準(zhǔn)來(lái)評(píng)提出了五條標(biāo)準(zhǔn),可以用這五條標(biāo)準(zhǔn)來(lái)評(píng)價(jià)一種價(jià)一種設(shè)計(jì)方法設(shè)計(jì)方法定義有效的模塊系統(tǒng)的能力。下定義有效的模塊系統(tǒng)的能力。下面列出這五條標(biāo)準(zhǔn)。面列出這五條標(biāo)準(zhǔn)。1.模塊可分解性模塊可分解性如果一種設(shè)計(jì)方

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

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

13、由錯(cuò)誤引起的副作用將最小。5.2.1 模塊化模塊化2021-12-9大連理工大學(xué)軟件學(xué)院20 采用模塊化原理可以使軟件采用模塊化原理可以使軟件結(jié)構(gòu)清晰結(jié)構(gòu)清晰 不僅容易不僅容易設(shè)計(jì)設(shè)計(jì)也容易也容易閱讀和理解閱讀和理解。 因?yàn)槌绦蝈e(cuò)誤通常局限在有關(guān)的模塊及它們之間的接口因?yàn)槌绦蝈e(cuò)誤通常局限在有關(guān)的模塊及它們之間的接口中,所以模塊化使軟件中,所以模塊化使軟件容易測(cè)試和調(diào)試容易測(cè)試和調(diào)試,因而有助于提,因而有助于提高軟件的高軟件的可靠性可靠性。 因?yàn)樽儎?dòng)往往只涉及少數(shù)幾個(gè)模塊,所以模塊化能夠提因?yàn)樽儎?dòng)往往只涉及少數(shù)幾個(gè)模塊,所以模塊化能夠提高軟件的高軟件的可修改性可修改性。 模塊化也有助于軟件開(kāi)發(fā)工

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

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

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

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

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

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

20、塊內(nèi)包含的信息模塊內(nèi)包含的信息(過(guò)程和數(shù)據(jù)過(guò)程和數(shù)據(jù))對(duì)于對(duì)于不需要這些信息不需要這些信息的模的模塊來(lái)說(shuō),是塊來(lái)說(shuō),是不能訪問(wèn)不能訪問(wèn)的。的。5.2.4 信息隱藏和局部化信息隱藏和局部化 2021-12-9大連理工大學(xué)軟件學(xué)院28 隱藏模塊的隱藏模塊的實(shí)現(xiàn)細(xì)節(jié)實(shí)現(xiàn)細(xì)節(jié) 模塊之間只交換那些為了完成軟件功能而模塊之間只交換那些為了完成軟件功能而必須交換的信息必須交換的信息 對(duì)模塊內(nèi)部實(shí)現(xiàn)細(xì)節(jié)的對(duì)模塊內(nèi)部實(shí)現(xiàn)細(xì)節(jié)的訪問(wèn)限制訪問(wèn)限制 修改期間由于疏忽而引入的錯(cuò)誤修改期間由于疏忽而引入的錯(cuò)誤很少可能傳播很少可能傳播到其他模塊到其他模塊5.2.4 信息隱藏和局部化信息隱藏和局部化 2021-12-9大連理

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

22、度量,這兩個(gè)標(biāo)準(zhǔn)模塊的獨(dú)立程度可以由兩個(gè)定性標(biāo)準(zhǔn)來(lái)度量,這兩個(gè)標(biāo)準(zhǔn)分別稱為分別稱為內(nèi)聚和耦合內(nèi)聚和耦合。耦合耦合衡量不同模塊彼此間互相依賴衡量不同模塊彼此間互相依賴( (連接連接) )緊密程度;緊密程度;內(nèi)聚內(nèi)聚衡量一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度。衡量一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度。2021-12-9大連理工大學(xué)軟件學(xué)院31耦合是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間耦合是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量互連程度的度量。耦合強(qiáng)弱。耦合強(qiáng)弱取決于模塊間取決于模塊間接口的復(fù)雜程度接口的復(fù)雜程度,進(jìn)入或訪問(wèn)一個(gè)模塊的點(diǎn),以及通,進(jìn)入或訪問(wèn)一個(gè)模塊的點(diǎn),以及通過(guò)接口的數(shù)據(jù)。過(guò)接口的數(shù)據(jù)

23、。在軟件設(shè)計(jì)中應(yīng)該追求盡可能在軟件設(shè)計(jì)中應(yīng)該追求盡可能松散耦合松散耦合的系統(tǒng)。在這樣的系統(tǒng)中可的系統(tǒng)。在這樣的系統(tǒng)中可以研究、測(cè)試或維護(hù)任何一個(gè)模塊,而不需要對(duì)系統(tǒng)的以研究、測(cè)試或維護(hù)任何一個(gè)模塊,而不需要對(duì)系統(tǒng)的其他模塊有其他模塊有很多了解很多了解。此外,由于模塊間聯(lián)系簡(jiǎn)單,發(fā)生在一處的錯(cuò)誤此外,由于模塊間聯(lián)系簡(jiǎn)單,發(fā)生在一處的錯(cuò)誤傳播到整個(gè)系統(tǒng)傳播到整個(gè)系統(tǒng)的的可能性就很小。因此,模塊間的耦合程度強(qiáng)烈影響系統(tǒng)的可理解性、可能性就很小。因此,模塊間的耦合程度強(qiáng)烈影響系統(tǒng)的可理解性、可測(cè)試性、可靠性和可維護(hù)性??蓽y(cè)試性、可靠性和可維護(hù)性。耦合耦合2021-12-9大連理工大學(xué)軟件學(xué)院32 常見(jiàn)

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

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

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

27、差不多;但是,低內(nèi)可以采用的,而且效果和高內(nèi)聚相差不多;但是,低內(nèi)聚很壞,不要使用。聚很壞,不要使用。內(nèi)聚內(nèi)聚2021-12-9大連理工大學(xué)軟件學(xué)院37 內(nèi)聚和耦合是密切相關(guān)的,模塊內(nèi)的內(nèi)聚和耦合是密切相關(guān)的,模塊內(nèi)的高內(nèi)聚高內(nèi)聚往往意味著模塊往往意味著模塊間的間的松耦合松耦合。 內(nèi)聚和耦合都是進(jìn)行模塊化設(shè)計(jì)的有力工具,但是實(shí)踐表明內(nèi)聚和耦合都是進(jìn)行模塊化設(shè)計(jì)的有力工具,但是實(shí)踐表明內(nèi)聚更重要內(nèi)聚更重要,應(yīng)該把更多注意力集中到提高模塊,應(yīng)該把更多注意力集中到提高模塊的內(nèi)聚程度的內(nèi)聚程度上。上。 低內(nèi)聚:低內(nèi)聚:偶然內(nèi)聚:一個(gè)模塊任務(wù)間關(guān)系松散或者沒(méi)有關(guān)系偶然內(nèi)聚:一個(gè)模塊任務(wù)間關(guān)系松散或者沒(méi)有

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

29、個(gè)模塊內(nèi)的處理元素和同一個(gè)功能密切相關(guān),并且必須順序執(zhí)行須順序執(zhí)行功能內(nèi)聚:模塊內(nèi)所有處理元素屬于一個(gè)整體,完成一個(gè)單一的功功能內(nèi)聚:模塊內(nèi)所有處理元素屬于一個(gè)整體,完成一個(gè)單一的功能能內(nèi)聚內(nèi)聚2021-12-9大連理工大學(xué)軟件學(xué)院39 事實(shí)上,沒(méi)有必要精確確定內(nèi)聚的級(jí)別。重要的是設(shè)計(jì)時(shí)事實(shí)上,沒(méi)有必要精確確定內(nèi)聚的級(jí)別。重要的是設(shè)計(jì)時(shí)力爭(zhēng)做到力爭(zhēng)做到高內(nèi)聚高內(nèi)聚,并且能夠辨認(rèn)出低內(nèi)聚的模塊,有能力,并且能夠辨認(rèn)出低內(nèi)聚的模塊,有能力通過(guò)修改設(shè)計(jì)提高通過(guò)修改設(shè)計(jì)提高模塊的內(nèi)聚程度模塊的內(nèi)聚程度,降低模塊間的耦合程,降低模塊間的耦合程度,從而獲得度,從而獲得較高的較高的模塊獨(dú)立性模塊獨(dú)立性。內(nèi)聚

30、內(nèi)聚2021-12-9大連理工大學(xué)軟件學(xué)院40思考題思考題 確定每個(gè)模塊的內(nèi)聚類型。確定每個(gè)模塊的內(nèi)聚類型。功能內(nèi)聚偶然內(nèi)聚2021-12-9大連理工大學(xué)軟件學(xué)院415.3 啟發(fā)規(guī)則啟發(fā)規(guī)則 軟件工程師們?cè)陂_(kāi)發(fā)計(jì)算機(jī)軟件的長(zhǎng)期實(shí)踐中積累軟件工程師們?cè)陂_(kāi)發(fā)計(jì)算機(jī)軟件的長(zhǎng)期實(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é)講述的基本原理那樣普遍適用,但是在許多場(chǎng)合仍然能給軟件工程師有益的適用,但是在許多場(chǎng)合仍然能給軟件工程師有益的啟示,往往能幫助他們找到改進(jìn)軟件設(shè)計(jì)提高軟件啟示,

31、往往能幫助他們找到改進(jìn)軟件設(shè)計(jì)提高軟件質(zhì)量的途徑,因質(zhì)量的途徑,因此此有助于實(shí)現(xiàn)有效的模塊化有助于實(shí)現(xiàn)有效的模塊化。2021-12-9大連理工大學(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 力爭(zhēng)降低力爭(zhēng)降低模塊接口模塊接口的復(fù)雜程度的復(fù)雜程度 6 設(shè)計(jì)設(shè)計(jì)單入口單出口單入口單出口的模塊的模塊 7 模塊功能模塊功能應(yīng)該可以預(yù)測(cè)應(yīng)該可以預(yù)測(cè)5.3 啟發(fā)規(guī)則啟發(fā)規(guī)則2021-12-9大連理工大學(xué)軟件學(xué)院4

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

33、直接控制(調(diào)用)的模塊數(shù)目扇出:一個(gè)模塊直接控制(調(diào)用)的模塊數(shù)目 扇入:有多少個(gè)上級(jí)模塊直接調(diào)用它扇入:有多少個(gè)上級(jí)模塊直接調(diào)用它5.3 啟發(fā)規(guī)則啟發(fā)規(guī)則2021-12-9大連理工大學(xué)軟件學(xué)院455.3 啟發(fā)規(guī)則啟發(fā)規(guī)則2021-12-9大連理工大學(xué)軟件學(xué)院46 4 模塊的模塊的作用域作用域應(yīng)該在應(yīng)該在控制域控制域之內(nèi)之內(nèi)5.3 啟發(fā)規(guī)則啟發(fā)規(guī)則 作用域:受該模塊內(nèi)一作用域:受該模塊內(nèi)一個(gè)判定影響的所有模塊個(gè)判定影響的所有模塊的集合。的集合。 控制域:這個(gè)模塊本身控制域:這個(gè)模塊本身以及所有直接或者間接以及所有直接或者間接從屬于它的模塊的集合。從屬于它的模塊的集合。2021-12-9大連理工

34、大學(xué)軟件學(xué)院47 5 力爭(zhēng)降低力爭(zhēng)降低模塊接口模塊接口的復(fù)雜程度的復(fù)雜程度 仔細(xì)設(shè)計(jì)模塊接口仔細(xì)設(shè)計(jì)模塊接口信息傳遞簡(jiǎn)單、和模塊的功能一信息傳遞簡(jiǎn)單、和模塊的功能一致致 例:求一元二次方程的根模塊例:求一元二次方程的根模塊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ī)則

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

36、框上方的矩形框所代表所代表的模塊調(diào)用的模塊調(diào)用位于下方的矩形框位于下方的矩形框所代表的模塊所代表的模塊)。2021-12-9大連理工大學(xué)軟件學(xué)院50圖5.3 正文加工系統(tǒng)的層次圖5.4.1 層次圖和HIPO圖2021-12-9大連理工大學(xué)軟件學(xué)院51 HIPO圖圖是美國(guó)是美國(guó)IBM公司發(fā)明的公司發(fā)明的“層次圖加輸入層次圖加輸入/處理處理/輸出圖輸出圖”的英文縮寫(xiě)。的英文縮寫(xiě)。 為了使為了使HIPO圖具有圖具有可追蹤性可追蹤性,在,在H圖圖(即層次圖即層次圖)里除了頂層的方框之外,每個(gè)方框都加了里除了頂層的方框之外,每個(gè)方框都加了編號(hào)編號(hào)。 編號(hào)方法與數(shù)據(jù)流圖的編號(hào)方法相同。編號(hào)方法與數(shù)據(jù)流圖的

37、編號(hào)方法相同。5.4.1 層次圖和HIPO圖2021-12-9大連理工大學(xué)軟件學(xué)院52圖5.4 帶編號(hào)的層次圖(H圖)5.4.1 層次圖和HIPO圖2021-12-9大連理工大學(xué)軟件學(xué)院53 H圖中每個(gè)方框代表模塊的處理過(guò)程,都可以有一張圖中每個(gè)方框代表模塊的處理過(guò)程,都可以有一張IPO圖圖與之對(duì)應(yīng)。與之對(duì)應(yīng)。 IPO圖:圖:左邊框中列出輸入項(xiàng)左邊框中列出輸入項(xiàng)中間框?yàn)橹饕奶幚碇虚g框?yàn)橹饕奶幚碛疫吙驗(yàn)檩敵鲰?xiàng)右邊框?yàn)檩敵鲰?xiàng)箭頭指出數(shù)據(jù)通信的情況箭頭指出數(shù)據(jù)通信的情況5.4.1 層次圖和HIPO圖2021-12-9大連理工大學(xué)軟件學(xué)院54IPO圖5.4.1 層次圖和HIPO圖2021-12-9

38、大連理工大學(xué)軟件學(xué)院55 IPO表(改進(jìn)的表(改進(jìn)的IPO圖)圖) 附加信息:附加信息: 系統(tǒng)名稱系統(tǒng)名稱 作者作者 完成日期完成日期 模塊名稱模塊名稱 模塊編號(hào)模塊編號(hào) 被調(diào)用模塊清單被調(diào)用模塊清單 調(diào)用模塊清單調(diào)用模塊清單 注釋注釋 局部數(shù)據(jù)元素局部數(shù)據(jù)元素 改進(jìn)的IPO圖(IPO表)的形式5.4.1 層次圖和HIPO圖2021-12-9大連理工大學(xué)軟件學(xué)院56 結(jié)構(gòu)圖結(jié)構(gòu)圖是進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)的另一個(gè)有力工具。是進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)的另一個(gè)有力工具。 結(jié)構(gòu)圖也是描繪軟件結(jié)構(gòu)的圖形工具結(jié)構(gòu)圖也是描繪軟件結(jié)構(gòu)的圖形工具 圖中一個(gè)方框代表一個(gè)模塊,框內(nèi)注明模塊的名字或主要功能圖中一個(gè)方框代表一個(gè)模塊

39、,框內(nèi)注明模塊的名字或主要功能 方框之間的箭頭方框之間的箭頭(或直線或直線)表示模塊的調(diào)用關(guān)系。表示模塊的調(diào)用關(guān)系。 在結(jié)構(gòu)圖中通常還用帶注釋的箭頭表示模塊調(diào)用過(guò)程中在結(jié)構(gòu)圖中通常還用帶注釋的箭頭表示模塊調(diào)用過(guò)程中來(lái)來(lái)回傳遞的信息。回傳遞的信息。 可以利用注釋箭頭尾部的形狀來(lái)區(qū)分傳遞的信息是數(shù)據(jù)還是控制信可以利用注釋箭頭尾部的形狀來(lái)區(qū)分傳遞的信息是數(shù)據(jù)還是控制信息息 尾部是尾部是空心圓空心圓表示傳遞的是表示傳遞的是數(shù)據(jù)數(shù)據(jù) 實(shí)心圓實(shí)心圓表示傳遞的是表示傳遞的是控制信息控制信息5.4.2 結(jié)構(gòu)圖2021-12-9大連理工大學(xué)軟件學(xué)院57圖5.5 結(jié)構(gòu)圖的例子產(chǎn)生最佳解的一般結(jié)構(gòu)2021-12-9

40、大連理工大學(xué)軟件學(xué)院58結(jié)構(gòu)圖附加符號(hào)圖5.6 判定為真時(shí)調(diào)用A,為假時(shí)調(diào)用B2021-12-9大連理工大學(xué)軟件學(xué)院59結(jié)構(gòu)圖附加符號(hào)圖5.7 模塊M循環(huán)調(diào)用模塊A,B,C2021-12-9大連理工大學(xué)軟件學(xué)院60 層次圖和結(jié)構(gòu)圖特點(diǎn):層次圖和結(jié)構(gòu)圖特點(diǎn):并不嚴(yán)格表示模塊的調(diào)用次序并不嚴(yán)格表示模塊的調(diào)用次序并不指明什么時(shí)候調(diào)用下層模塊并不指明什么時(shí)候調(diào)用下層模塊沒(méi)有指明先執(zhí)行調(diào)用還是先執(zhí)行模塊中的語(yǔ)句沒(méi)有指明先執(zhí)行調(diào)用還是先執(zhí)行模塊中的語(yǔ)句沒(méi)有表示模塊內(nèi)其它成分沒(méi)有表示模塊內(nèi)其它成分 通常使用層次圖描繪軟件結(jié)構(gòu)通常使用層次圖描繪軟件結(jié)構(gòu) 可以用層次圖導(dǎo)出結(jié)構(gòu)圖的過(guò)程,檢查設(shè)計(jì)的正確性和評(píng)可以用

41、層次圖導(dǎo)出結(jié)構(gòu)圖的過(guò)程,檢查設(shè)計(jì)的正確性和評(píng)價(jià)模塊的獨(dú)立性價(jià)模塊的獨(dú)立性5.4.2 結(jié)構(gòu)圖2021-12-9大連理工大學(xué)軟件學(xué)院615.5 面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法 面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法的目標(biāo)是給出設(shè)計(jì)的目標(biāo)是給出設(shè)計(jì)軟件結(jié)構(gòu)軟件結(jié)構(gòu)的一個(gè)系的一個(gè)系統(tǒng)化的途徑。統(tǒng)化的途徑。 在需求分析階段,信息流是一個(gè)關(guān)鍵考慮因素,通常用數(shù)據(jù)在需求分析階段,信息流是一個(gè)關(guān)鍵考慮因素,通常用數(shù)據(jù)流圖描繪信息在系統(tǒng)中加工和流動(dòng)情況。流圖描繪信息在系統(tǒng)中加工和流動(dòng)情況。面向數(shù)據(jù)流的設(shè)計(jì)方法定義了一些不同的面向數(shù)據(jù)流的設(shè)計(jì)方法定義了一些不同的“映射映射”,利用這些映射可,利用這些映

42、射可以把以把數(shù)據(jù)流圖變換成軟件結(jié)構(gòu)數(shù)據(jù)流圖變換成軟件結(jié)構(gòu)。因?yàn)槿魏诬浖到y(tǒng)都可以用因?yàn)槿魏诬浖到y(tǒng)都可以用數(shù)據(jù)流圖數(shù)據(jù)流圖表示,所以表示,所以面向數(shù)據(jù)流的設(shè)計(jì)方面向數(shù)據(jù)流的設(shè)計(jì)方法法理論上可以設(shè)計(jì)任何軟件的結(jié)構(gòu)。理論上可以設(shè)計(jì)任何軟件的結(jié)構(gòu)。通常的結(jié)構(gòu)化設(shè)計(jì)方法,也就是基于數(shù)通常的結(jié)構(gòu)化設(shè)計(jì)方法,也就是基于數(shù)據(jù)流的設(shè)計(jì)方法。據(jù)流的設(shè)計(jì)方法。2021-12-9大連理工大學(xué)軟件學(xué)院62面向數(shù)據(jù)流的設(shè)計(jì)方法把信息流面向數(shù)據(jù)流的設(shè)計(jì)方法把信息流映射映射成軟件結(jié)構(gòu),信息流成軟件結(jié)構(gòu),信息流的類型決定了映射的方法。信息流有下述兩種類型。的類型決定了映射的方法。信息流有下述兩種類型。 1.變換流變換流 2.

43、事務(wù)流事務(wù)流5.5.1 概念概念2021-12-9大連理工大學(xué)軟件學(xué)院631.變換流變換流2021-12-9大連理工大學(xué)軟件學(xué)院642.事務(wù)流事務(wù)流2021-12-9大連理工大學(xué)軟件學(xué)院65圖圖5.10 5.10 面向數(shù)據(jù)流方法的設(shè)計(jì)過(guò)程面向數(shù)據(jù)流方法的設(shè)計(jì)過(guò)程2021-12-9大連理工大學(xué)軟件學(xué)院66 變換分析變換分析是一系列設(shè)計(jì)步驟的總稱,經(jīng)過(guò)這些是一系列設(shè)計(jì)步驟的總稱,經(jīng)過(guò)這些步驟把具有步驟把具有變換流特點(diǎn)變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的數(shù)據(jù)流圖按預(yù)先確定的模式的模式映射成軟件結(jié)構(gòu)映射成軟件結(jié)構(gòu)。 下面通過(guò)一個(gè)例子說(shuō)明變換分析的方法。下面通過(guò)一個(gè)例子說(shuō)明變換分析的方法。 汽車數(shù)字儀表板的

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

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

46、21-12-9大連理工大學(xué)軟件學(xué)院71圖5.14 數(shù)字儀表板系統(tǒng)的第一級(jí)分解2021-12-9大連理工大學(xué)軟件學(xué)院72圖5.15 第二級(jí)分解的方法6、完成、完成“第二級(jí)分解第二級(jí)分解”。2021-12-9大連理工大學(xué)軟件學(xué)院73圖圖5.16 5.16 未經(jīng)精化的輸入結(jié)構(gòu)未經(jīng)精化的輸入結(jié)構(gòu)2021-12-9大連理工大學(xué)軟件學(xué)院74圖圖5.17 5.17 未經(jīng)精化的變換結(jié)構(gòu)未經(jīng)精化的變換結(jié)構(gòu)2021-12-9大連理工大學(xué)軟件學(xué)院75圖圖5.18 5.18 未經(jīng)精化的輸出結(jié)構(gòu)未經(jīng)精化的輸出結(jié)構(gòu)2021-12-9大連理工大學(xué)軟件學(xué)院76圖圖5.19 5.19 精化后的數(shù)字儀表板系統(tǒng)的軟件結(jié)構(gòu)精化后的數(shù)

47、字儀表板系統(tǒng)的軟件結(jié)構(gòu)7、使用設(shè)計(jì)度量和啟發(fā)規(guī)則對(duì)第、使用設(shè)計(jì)度量和啟發(fā)規(guī)則對(duì)第一次分割得到的軟件結(jié)構(gòu)進(jìn)一一次分割得到的軟件結(jié)構(gòu)進(jìn)一步精化。步精化。2021-12-9大連理工大學(xué)軟件學(xué)院77 上述七個(gè)設(shè)計(jì)步驟的目的是,開(kāi)發(fā)出軟件的整體表示。上述七個(gè)設(shè)計(jì)步驟的目的是,開(kāi)發(fā)出軟件的整體表示。也就是說(shuō),一旦確定了軟件結(jié)構(gòu)就可以把它作為一個(gè)整也就是說(shuō),一旦確定了軟件結(jié)構(gòu)就可以把它作為一個(gè)整體來(lái)復(fù)查,從而能夠評(píng)價(jià)和精化軟件結(jié)構(gòu)。體來(lái)復(fù)查,從而能夠評(píng)價(jià)和精化軟件結(jié)構(gòu)。 在這個(gè)時(shí)期進(jìn)行修改只需要很在這個(gè)時(shí)期進(jìn)行修改只需要很少的附加工作,但是卻能少的附加工作,但是卻能夠?qū)浖馁|(zhì)量特別是軟件的可維護(hù)性產(chǎn)生深遠(yuǎn)的影響。夠?qū)浖馁|(zhì)量特別是軟件的可維護(hù)性產(chǎn)生深遠(yuǎn)的影響。5.5.2 變換分析變換分析2021-12-9大連理工大學(xué)軟件學(xué)院78雖然在任何情況下都可以使用變換分析方法設(shè)計(jì)軟件結(jié)構(gòu),但雖然在任何情況下都可以使用變換分析方法設(shè)計(jì)軟件結(jié)構(gòu),但是在數(shù)據(jù)流具有是在數(shù)據(jù)流具有明顯的事務(wù)特點(diǎn)明顯的事務(wù)特點(diǎ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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論