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

下載本文檔

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

文檔簡介

2024/7/3信息科學(xué)與技術(shù)學(xué)院1第四章總體設(shè)計(jì)軟件工程(SoftwareEngineering)2024/7/3信息科學(xué)與技術(shù)學(xué)院2總體設(shè)計(jì)

需求分析解決“系統(tǒng)必須做什么(what)”的問題,軟件設(shè)計(jì)解決“怎樣做(how)”,即從技術(shù)角度考慮如何實(shí)現(xiàn)用戶需求。需求解決“做正確的事”,設(shè)計(jì)解決“正確地做事”。

軟件設(shè)計(jì)是把軟件需求變換成軟件表示的過程。最初這種表示只是描述出軟件的總框架,然后進(jìn)一步細(xì)化,在此框架中填入細(xì)節(jié),把它加工成在程序細(xì)節(jié)上非常接近于源程序的表示。因此軟件設(shè)計(jì)分兩步進(jìn)行:

1、將系統(tǒng)劃分成相互聯(lián)系的邏輯單元--總體上應(yīng)該怎樣做---總體設(shè)計(jì)、概要設(shè)計(jì)、初步設(shè)計(jì)。

2、邏輯單元實(shí)現(xiàn)的設(shè)計(jì)--具體應(yīng)該怎樣做--詳細(xì)設(shè)計(jì)。2024/7/3信息科學(xué)與技術(shù)學(xué)院3總體的設(shè)計(jì)過程一、系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)●設(shè)想供選擇的方案

●選取合理的方案

●推薦最佳方案

二、軟件結(jié)構(gòu)設(shè)計(jì)●功能分解

●設(shè)計(jì)軟件結(jié)構(gòu)

三、數(shù)據(jù)庫設(shè)計(jì)

四、制定測試計(jì)劃

五、書寫文檔六、審核和復(fù)審2024/7/3信息科學(xué)與技術(shù)學(xué)院4軟件結(jié)構(gòu)設(shè)計(jì)1、功能分解進(jìn)行功能分解的目的,不是從應(yīng)用角度,而是從實(shí)現(xiàn)角度,針對的是少數(shù)功能。這些功能不是不明確,而是功能實(shí)現(xiàn)起來較復(fù)雜,將其分解成比較簡單的功能,使每個(gè)功能的實(shí)現(xiàn)變得明顯易懂。該步驟將導(dǎo)致數(shù)據(jù)流圖的進(jìn)一步細(xì)化。2024/7/3信息科學(xué)與技術(shù)學(xué)院5軟件結(jié)構(gòu)設(shè)計(jì)2、

設(shè)計(jì)軟件結(jié)構(gòu)軟件結(jié)構(gòu):以模塊為單位的層次結(jié)構(gòu)。即:上層模塊調(diào)用它的下層模塊以實(shí)現(xiàn)程序的完整功能;每個(gè)下層模塊再調(diào)用更下層模塊完成程序的一個(gè)子功能;最下層的模塊完成最具體的功能。方法:根據(jù)數(shù)據(jù)流圖的層次關(guān)系導(dǎo)出軟件結(jié)構(gòu)。任務(wù):劃分程序模塊確定模塊間的邏輯關(guān)系及接口參數(shù)如果數(shù)據(jù)流圖設(shè)計(jì)得好,數(shù)據(jù)流圖和軟件結(jié)構(gòu)具有極強(qiáng)的對應(yīng)關(guān)系。2024/7/3信息科學(xué)與技術(shù)學(xué)院6數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

1、文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)確定輸入、輸出文件的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)。確定算法所需的邏輯數(shù)據(jù)結(jié)構(gòu)及其操作規(guī)則。確定邏輯數(shù)據(jù)結(jié)構(gòu)所涉及的程序模塊2、數(shù)據(jù)庫設(shè)計(jì)如果目標(biāo)系統(tǒng)以數(shù)據(jù)庫為基礎(chǔ),則要進(jìn)行數(shù)據(jù)庫設(shè)計(jì)??傮w設(shè)計(jì)階段的數(shù)據(jù)庫設(shè)計(jì)包括:數(shù)據(jù)庫管理系統(tǒng)的選擇模式設(shè)計(jì):確定有那些基本表組成和每個(gè)表的結(jié)構(gòu)。

子模式設(shè)計(jì):具體應(yīng)用所能看到的數(shù)據(jù)庫內(nèi)容。

物理模式設(shè)計(jì):確定數(shù)據(jù)的存儲結(jié)構(gòu)和存取路徑(存儲方式,建立索引)。數(shù)據(jù)庫完整性和安全性設(shè)計(jì)。

2024/7/3信息科學(xué)與技術(shù)學(xué)院7制定測試計(jì)劃確定對各模塊和系統(tǒng)聯(lián)調(diào)的測試方案。在軟件開發(fā)的早期階段考慮測試問題,能促使軟件設(shè)計(jì)人員在設(shè)計(jì)時(shí)注意提高軟件的可測試性。2024/7/3信息科學(xué)與技術(shù)學(xué)院8書寫文檔

1.系統(tǒng)說明:概要設(shè)計(jì)說明書

2.用戶手冊

3.測試計(jì)劃

4.詳細(xì)的實(shí)現(xiàn)計(jì)劃

5.數(shù)據(jù)庫設(shè)計(jì)結(jié)果

2024/7/3信息科學(xué)與技術(shù)學(xué)院9審核和復(fù)審

最后應(yīng)該對總體設(shè)計(jì)的結(jié)果進(jìn)行嚴(yán)格的技術(shù)審查,通過之后再由使用部門從管理角度進(jìn)行復(fù)審。2024/7/3信息科學(xué)與技術(shù)學(xué)院10軟件設(shè)計(jì)原理主要內(nèi)容抽象模塊化信息隱蔽(和局部化)

模塊獨(dú)立

2024/7/3信息科學(xué)與技術(shù)學(xué)院11抽象

在現(xiàn)實(shí)世界中,一定事物、狀態(tài)或過程之間總存在著某些相似的方面(共性)。把這些相似的方面集中和概括起來,暫時(shí)忽略它們之間的差異,這就是抽象。抽出事物的本質(zhì)特征而暫不考慮它們的細(xì)節(jié)。解決復(fù)雜問題的唯一有效的方法就是運(yùn)用抽象的思維方式,首先用一些高級的抽象概念構(gòu)造和理解它;這些高級概念又可以用一些較低級的概念構(gòu)造和理解,如此進(jìn)行下去,直到最低層次的具體元素。2024/7/3信息科學(xué)與技術(shù)學(xué)院12前一頁抽象

抽象的具體表現(xiàn)為:自頂向下、逐步求精。軟件工程過程的每一步都是對軟件解法的抽象層次的一次求精。軟件開發(fā)的三種抽象形式:

1、過程抽象:對過程的任務(wù)采用逐步求精的解法;

2、數(shù)據(jù)抽象:通過層次結(jié)構(gòu)來描述數(shù)據(jù)對象。

3、控制抽象:描述程序控制機(jī)制而無須規(guī)定內(nèi)部細(xì)節(jié)。模塊化就是一種程序設(shè)計(jì)的抽象機(jī)制。2024/7/3信息科學(xué)與技術(shù)學(xué)院13模塊化

模塊:一組有序操作的總稱,它可以單獨(dú)的名字存在,單獨(dú)編譯,可以通過名字來訪問。一個(gè)函數(shù)、一個(gè)過程就是一個(gè)模塊。模塊基本屬性:(1)功能:模塊做什么;(2)邏輯:描述模塊內(nèi)部怎么做;(3)狀態(tài):模塊使用時(shí)的環(huán)境和條件。模塊的外部屬性:模塊名功能參數(shù)(輸入?yún)?shù)和輸出參數(shù))。模塊的內(nèi)部特性:完成模塊功能的代碼和局部數(shù)據(jù)。2024/7/3信息科學(xué)與技術(shù)學(xué)院14模塊化

模塊化:以模塊作為程序設(shè)計(jì)的基本單位,把程序劃分成若干個(gè)模塊,每個(gè)模塊完成一個(gè)子功能,把這些模塊集總起來,并通過模塊間的調(diào)用關(guān)系把它們組成一個(gè)完整的整體,完成指定的功能。采用模塊化的依據(jù):

容易被理解。

使問題復(fù)雜度降低,容易被實(shí)現(xiàn)。2024/7/3信息科學(xué)與技術(shù)學(xué)院15采用模塊化的依據(jù)

容易被理解。

使問題復(fù)雜度降低,容易被實(shí)現(xiàn)。

設(shè)函數(shù)C(x)定義問題x的復(fù)雜程度,函數(shù)E(x)確定解決問題x需要的工作量(時(shí)間),對于兩個(gè)問題p1和p2,如果

C(p1)>C(p2)則:E(p1)>E(p2)規(guī)律:C(p1+p2)>C(P1)+C(p2)

必有:E(p1+p2)>E(p1)+E(p2)2024/7/3信息科學(xué)與技術(shù)學(xué)院16模塊化與軟件成本2024/7/3信息科學(xué)與技術(shù)學(xué)院17模塊化結(jié)論1、采用模塊化,是使軟件設(shè)計(jì)從難到易的基本方法。

2、模塊分解應(yīng)適度。模塊規(guī)模太小,完成每個(gè)模塊的工作量很小,但設(shè)計(jì)和調(diào)試模塊間的接口工作量隨之增加。2024/7/3信息科學(xué)與技術(shù)學(xué)院18信息的隱蔽和局部化信息隱蔽:模塊內(nèi)部的信息(處理過程和數(shù)據(jù)),應(yīng)對不需要了解這些信息的模塊隱蔽起來,使它們不能訪問。信息隱蔽是模塊設(shè)計(jì)的基本原則。意味著在進(jìn)行模塊劃分時(shí),應(yīng)保證模塊的獨(dú)立性,使組成程序的模塊之間只需交換完成軟件功能所必需的信息。將信息隱蔽作為模塊化設(shè)計(jì)標(biāo)準(zhǔn),為軟件測試和維護(hù)對模塊的修改帶來了極大的方便,使得修改時(shí)無意引入的錯誤不會被擴(kuò)散到被修改模塊以外的其它位置。局部化:指關(guān)系密切的軟件元素物理地彼此靠近。局部化是實(shí)現(xiàn)信息隱蔽的重要方法。如模塊內(nèi)使用的局部數(shù)據(jù)元素,當(dāng)模塊被調(diào)用執(zhí)行時(shí)發(fā)揮作用,退出后便失去意義。2024/7/3信息科學(xué)與技術(shù)學(xué)院19模塊獨(dú)立

模塊獨(dú)立(Independence)的概念是模塊化、抽象、信息隱蔽和局部化概念的直接結(jié)果。開發(fā)具有獨(dú)立功能且與其他模塊之間沒有過多的相互作用的模塊,就可以做到模塊獨(dú)立。第一,有效的模塊化(即具有獨(dú)立的模塊)的軟件比較容易開發(fā)出來。第二,獨(dú)立的模塊比較容易測試和維護(hù)。模塊的獨(dú)立程度的度量標(biāo)準(zhǔn):

內(nèi)聚:衡量一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度;耦合:衡量不同模塊彼此間互相依賴(連接)的緊密程度。2024/7/3信息科學(xué)與技術(shù)學(xué)院20模塊獨(dú)立–

耦合

耦合是對一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互聯(lián)程度的度量。耦合強(qiáng)弱取決于模塊之間接口的復(fù)雜程度,調(diào)用模塊的方式,以及通過接口的數(shù)據(jù)。實(shí)際上,耦合是接口數(shù)據(jù)對模塊獨(dú)立性的影響。如果兩個(gè)模塊中的每一個(gè)都能獨(dú)立地工作而不需要另一個(gè)模塊地存在,那么它們彼此完全獨(dú)立,這意味著模塊間無任何連接,耦合程度最低。但一個(gè)軟件系統(tǒng)中的模塊之間是彼此協(xié)同工作的,不可能所有模塊間沒有連結(jié)。2024/7/3信息科學(xué)與技術(shù)學(xué)院21模塊獨(dú)立–

耦合

數(shù)據(jù)耦合:如果兩個(gè)模塊彼此間通過參數(shù)交換信息,而且交換的信息僅僅是數(shù)據(jù),那么這種耦合稱為數(shù)據(jù)耦合。

控制耦合:如果傳遞的信息中有控制信息,則這種耦合稱為控制耦合。數(shù)據(jù)耦合是低耦合。系統(tǒng)必須存在這種耦合,因?yàn)橹挥挟?dāng)某些模塊的輸出數(shù)據(jù)作為另一些模塊的輸入數(shù)據(jù)時(shí),系統(tǒng)才能完成有價(jià)值的功能。

2024/7/3信息科學(xué)與技術(shù)學(xué)院22模塊獨(dú)立–

耦合

公共環(huán)境耦合:當(dāng)兩個(gè)或多個(gè)模塊通過一個(gè)公共數(shù)據(jù)環(huán)境(全程變量、數(shù)據(jù)文件等)相互作用時(shí),它們之間的耦合稱為公共環(huán)境耦合。

內(nèi)容耦合:一個(gè)模塊直接引用另一個(gè)模塊內(nèi)部的內(nèi)容。例如:一個(gè)模塊直接訪問另一個(gè)模塊的內(nèi)部數(shù)據(jù);一個(gè)模塊不通過正常入口轉(zhuǎn)到另一個(gè)模塊的內(nèi)部;兩個(gè)模塊有一部分代碼重疊。最高程度的耦合是內(nèi)容耦合。

原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合。

2024/7/3信息科學(xué)與技術(shù)學(xué)院23前一頁模塊獨(dú)立–

內(nèi)聚

內(nèi)聚是一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度的度量。內(nèi)聚是信息隱蔽功能的自然擴(kuò)展,是模塊內(nèi)部功能獨(dú)立性的表現(xiàn),理想內(nèi)聚的模塊只做一件事情。按程度分類:低內(nèi)聚中內(nèi)聚高內(nèi)聚。

2024/7/3信息科學(xué)與技術(shù)學(xué)院24模塊獨(dú)立–

內(nèi)聚

偶然內(nèi)聚:模塊中元素之間沒有實(shí)質(zhì)的聯(lián)系。模塊內(nèi)的語句難以定義其功能,它是把多個(gè)模塊共同的語句抽出來組成一個(gè)模塊

邏輯內(nèi)聚:模塊完成的任務(wù)邏輯相關(guān)(如產(chǎn)生各種類型的全部輸出)。不同功能混在一起,合用部分程序代碼,局部修改會影響全局,導(dǎo)致修改困難。

時(shí)間內(nèi)聚:模塊包含的任務(wù)必須在同一時(shí)間內(nèi)執(zhí)行。2024/7/3信息科學(xué)與技術(shù)學(xué)院25模塊獨(dú)立–

內(nèi)聚

過程內(nèi)聚:模塊內(nèi)的處理元素是相關(guān)的,并且需要按特定順序執(zhí)行。

通信內(nèi)聚:模塊中所有元素都使用同一個(gè)輸入數(shù)據(jù)或產(chǎn)生同一個(gè)輸出數(shù)據(jù)。

順序內(nèi)聚:一個(gè)模塊中多個(gè)處理元素均與同一功能相關(guān),且必須順序執(zhí)行(一個(gè)處理單元的輸出是另一個(gè)處理單元的輸入)。

功能內(nèi)聚:模塊中所有處理元素屬于一個(gè)整體,共同完成同一功能。2024/7/3信息科學(xué)與技術(shù)學(xué)院26模塊獨(dú)立–

內(nèi)聚

低內(nèi)聚:偶然內(nèi)聚、邏輯內(nèi)聚和時(shí)間內(nèi)聚中內(nèi)聚:過程內(nèi)聚、通信內(nèi)聚高內(nèi)聚:順序內(nèi)聚、功能內(nèi)聚對內(nèi)聚的參考評價(jià):

功能內(nèi)聚10分時(shí)間內(nèi)聚3分順序內(nèi)聚9分邏輯內(nèi)聚1分通信內(nèi)聚7分偶然內(nèi)聚0分過程內(nèi)聚5分在軟件軟件中,盡可能構(gòu)造高內(nèi)聚的模塊,辨認(rèn)和避免低內(nèi)聚的模塊,最好不用偶然內(nèi)聚。2024/7/3信息科學(xué)與技術(shù)學(xué)院27啟發(fā)式規(guī)則前一頁主要內(nèi)容改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性模塊規(guī)模應(yīng)該適中深度、寬度、扇出和扇入應(yīng)適當(dāng)模塊的作用域應(yīng)在控制域之內(nèi)盡量降低模塊接口的復(fù)雜程度設(shè)計(jì)單入口出口的模塊模塊功能應(yīng)該可以預(yù)測2024/7/3信息科學(xué)與技術(shù)學(xué)院28改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性

模塊獨(dú)立性主要體現(xiàn)在低耦合、高內(nèi)聚。可以通過分解或合并來提高模塊獨(dú)立性。分解:把幾個(gè)模塊中相同部分(相同的子功能)分解出來建立一個(gè)新的模塊。合并:把幾個(gè)模塊合并成一個(gè)模塊,減少對控制信息的傳遞,以及對全程數(shù)據(jù)的引用,降低接口的復(fù)雜程度,降低塊間耦合度。2024/7/3信息科學(xué)與技術(shù)學(xué)院29模塊規(guī)模應(yīng)該適中

在保證模塊功能獨(dú)立性的前提下,盡可能使模塊中的語句數(shù)少。

50~100行。美國空軍部:5~500行目的:可理解性、可讀性好。為了保證模塊獨(dú)立性,少數(shù)模塊可以大一些。模塊過小,系統(tǒng)開銷大于有效操作。對大模塊的分解不應(yīng)降低獨(dú)立性。面向?qū)ο蠹夹g(shù),模塊的大小無實(shí)際意義。2024/7/3信息科學(xué)與技術(shù)學(xué)院30深度、寬度、扇出和扇入應(yīng)適當(dāng)

深度:軟件層次結(jié)構(gòu)的層數(shù)。寬度:軟件結(jié)構(gòu)內(nèi)同一層次上模塊總數(shù)的最大值。扇入:一個(gè)模塊被調(diào)用的上級模塊數(shù)量。扇入越大,表示共享該模塊的上級模塊越多。扇出:一個(gè)模塊直接控制(調(diào)用)的模塊個(gè)數(shù)。扇出影響寬度。扇出過大意味著模塊過分復(fù)雜,需要控制和協(xié)調(diào)過多的下級模塊。一個(gè)好的系統(tǒng)的平均扇出通常是3~4(上限是5~9)(7±2原理—心理學(xué)原理)一個(gè)好的軟件結(jié)構(gòu)通常頂層扇出較大,中層扇出較低,底層模塊高扇入。軟件結(jié)構(gòu)的形狀呈橢圓外形.2024/7/3信息科學(xué)與技術(shù)學(xué)院31模塊的作用域應(yīng)在控制域之內(nèi)

控制范圍:指包含模塊本身的所有下屬模塊。作用域:模塊內(nèi)一個(gè)條件判斷可能引起的的被執(zhí)行模塊。設(shè)計(jì)得好的系統(tǒng),模塊的作用域應(yīng)在模塊的控制范圍內(nèi)。例:A的控制范圍為:A、B、C、D、E、F

若A的作用域也是A、B、C、D、E、F,則是合理的。若A的判斷要影響到G的執(zhí)行過程,則應(yīng)調(diào)整軟件結(jié)構(gòu)。MAGBCDEF2024/7/3信息科學(xué)與技術(shù)學(xué)院32盡量降低模塊接口的復(fù)雜程度

模塊接口設(shè)計(jì)原則:易理解,傳遞信息簡單且與模塊功能一致。例:求一元二次方程的根:

Quad_Root(Tal,x);Tal--系數(shù)數(shù)組;

x--根數(shù)組

Quad_Root(a,b,c,Root1,Root2);

接口復(fù)雜或不一致,是緊耦合或低內(nèi)聚的征兆。盡可能不用全局變量是降低接口復(fù)雜性的一個(gè)方面。2024/7/3信息科學(xué)與技術(shù)學(xué)院33設(shè)計(jì)單入口出口的模塊前一頁

對模塊的執(zhí)行,通過模塊調(diào)用語句進(jìn)入模塊,模塊執(zhí)行完后應(yīng)返回到模塊調(diào)用語句的下一個(gè)語句位置。2024/7/3信息科學(xué)與技術(shù)學(xué)院34模塊功能應(yīng)該可以預(yù)測

模塊作為一個(gè)黑箱,只要輸入數(shù)據(jù)相同就產(chǎn)生同樣的輸出,這個(gè)模塊的功能就是可預(yù)測的。帶有內(nèi)部“存儲器”(如某個(gè)標(biāo)志狀態(tài))的模塊的功能是不可預(yù)測的,因?yàn)樗妮敵霾粌H取決于輸入,而且還取決于內(nèi)部“存儲器”的狀態(tài)。這樣的模塊難理解、難測試、難維護(hù)。全程變量使用不當(dāng)或數(shù)組初始化不當(dāng)會導(dǎo)致這種情況。以面向?qū)ο蟮念悶槟K,不能保證輸入數(shù)據(jù)相同就能產(chǎn)生相同的輸出。2024/7/3信息科學(xué)與技術(shù)學(xué)院35圖形工具--層次圖和HIPO圖

層次圖:描述軟件的層次結(jié)構(gòu)(H圖)。層次圖中每個(gè)矩形框代表一個(gè)模塊,矩形框之間的連線表示模塊調(diào)用關(guān)系。層次圖適合用來描繪軟件的層次結(jié)構(gòu)。

HIPO圖:層次圖+IPO圖對H圖的每個(gè)方框,都有一張IPO圖與之對應(yīng),來描述方框所代表的模塊的處理過程。并且對每個(gè)IPO圖都對應(yīng)H圖中方框相同的標(biāo)記和編號,便于追蹤。2024/7/3信息科學(xué)與技術(shù)學(xué)院36前一頁圖形工具層次圖和HIPO圖2024/7/3信息科學(xué)與技術(shù)學(xué)院37前一頁圖形工具--結(jié)構(gòu)圖

Yourdon提出的結(jié)構(gòu)圖是進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)的另一個(gè)有力工具。在結(jié)構(gòu)圖中,通常還用帶注釋的箭頭表示模塊調(diào)用過程中來回傳遞的信息。如果希望進(jìn)一步標(biāo)明傳遞的信息是數(shù)據(jù)還是控制信息,則可以利用注釋箭頭尾部的形狀來區(qū)分:尾部是空心圓,表示傳遞的是數(shù)據(jù)尾部是實(shí)心圓,表示傳遞的是控制信息2024/7/3信息科學(xué)與技術(shù)學(xué)院38前一頁圖形工具--結(jié)構(gòu)圖2024/7/3信息科學(xué)與技術(shù)學(xué)院39前一頁圖形工具概述

層次圖和結(jié)構(gòu)圖并不嚴(yán)格表示調(diào)用次序,只表明一個(gè)模塊調(diào)用哪些模塊,至于模塊是否還有其它成分則完全沒有表示。通常用層次圖作為描述軟件結(jié)構(gòu)的文檔。結(jié)構(gòu)圖作為文檔很不適合。但用HIPO圖道出結(jié)構(gòu)圖的過程可以作為檢查設(shè)計(jì)正確性和評價(jià)模塊獨(dú)立性的好方法。2024/7/3信息科學(xué)與技術(shù)學(xué)院40面向數(shù)據(jù)流的設(shè)計(jì)方法

基本思想:根據(jù)軟件需求分析的數(shù)據(jù)流圖,將其轉(zhuǎn)換成軟件系統(tǒng)的結(jié)構(gòu)。面向數(shù)據(jù)流的設(shè)計(jì)方法定義了一些“映射”,利用這些映射可以把數(shù)據(jù)流圖變換成軟件結(jié)構(gòu)。通常所說的結(jié)構(gòu)化設(shè)計(jì)方法(簡稱SD方法),也就是基于數(shù)據(jù)流的設(shè)計(jì)方法。數(shù)據(jù)流的類型決定了映射的方法。2024/7/3信息科學(xué)與技術(shù)學(xué)院41面向數(shù)據(jù)流的設(shè)計(jì)方法主要內(nèi)容概念

變換流分析設(shè)計(jì)

事物流分析設(shè)計(jì)混合流分析設(shè)計(jì)

設(shè)計(jì)優(yōu)化

2024/7/3信息科學(xué)與技術(shù)學(xué)院42概念—交換流

數(shù)據(jù)流圖呈線性變換特征,而且可以抽象成三部分:I-P-O。信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。當(dāng)數(shù)據(jù)流圖具有這些特征時(shí),這種信息流就叫作變換流。計(jì)算、分析型軟件的數(shù)據(jù)流圖通常具有這種形式。2024/7/3信息科學(xué)與技術(shù)學(xué)院43變換流圖2024/7/3信息科學(xué)與技術(shù)學(xué)院44概念--事務(wù)流

數(shù)據(jù)流圖呈輻射型,根據(jù)輸入數(shù)據(jù)的性質(zhì)選擇加工路徑。若處理沿輸入通道達(dá)到一個(gè)處理T,處理T根據(jù)輸入數(shù)據(jù)的類型在若干動作序列中選擇一個(gè)來執(zhí)行。這類特殊的數(shù)據(jù)流稱為事務(wù)流。處理T稱為處理中心。處理中心的任務(wù):

(1)接收輸入數(shù)據(jù)(輸入數(shù)據(jù)又稱為事務(wù));(2)分析每個(gè)事務(wù)以確定它的類型;(3)根據(jù)事務(wù)類型選取一條活動通道。2024/7/3信息科學(xué)與技術(shù)學(xué)院45概念--事務(wù)流2024/7/3信息科學(xué)與技術(shù)學(xué)院46設(shè)計(jì)過程2024/7/3信息科學(xué)與技術(shù)學(xué)院47變換流分析設(shè)計(jì)

把具有變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu)。(1)找出變換的中心;(2)設(shè)計(jì)軟件結(jié)構(gòu)的頂層和第二層;(3)設(shè)計(jì)中下層模塊。

2024/7/3信息科學(xué)與技術(shù)學(xué)院48變換流分析設(shè)計(jì)—例子

考慮具有“智能”的汽車數(shù)字儀表板的設(shè)計(jì)功能描述:(1)通過模數(shù)轉(zhuǎn)換實(shí)現(xiàn)傳感器與微機(jī)的接口(2)在發(fā)光二極管面板上顯示數(shù)據(jù)(3)指示每小時(shí)英里數(shù)(mph)

(4)指示行駛的里程(5)指示每加侖油行駛的英里數(shù)(mpg)(6)指示加速或減速(7)超速警告,超過55英里/小時(shí),發(fā)出超速警告鈴聲。2024/7/3信息科學(xué)與技術(shù)學(xué)院49數(shù)字儀表板數(shù)據(jù)流圖2024/7/3信息科學(xué)與技術(shù)學(xué)院50變換流分析設(shè)計(jì)步驟第一步:確定數(shù)據(jù)流圖的類型一個(gè)數(shù)據(jù)流圖中可能含有變換流的成分,又含有事務(wù)流的成分,應(yīng)根據(jù)數(shù)據(jù)流圖中占優(yōu)勢的屬性,來確定數(shù)據(jù)流的全局特性。第二步:確定輸入流和輸出流的邊界,孤立變換中心確定輸出流邊界:一般具有顯示、打印、產(chǎn)生控制等。確定輸入流邊界:一般作為有效輸入應(yīng)是完成相應(yīng)功能有關(guān)的數(shù)據(jù)形式。這樣在輸入原始數(shù)據(jù)后,還要做一些簡單處理,轉(zhuǎn)換成實(shí)際需要的內(nèi)部形式。上例中,完成功能所需要的輸入數(shù)據(jù)形式是:轉(zhuǎn)速增量、轉(zhuǎn)速(轉(zhuǎn)/分)、燃料消耗速度。實(shí)際獲得的信號是:車輪旋轉(zhuǎn)的瞬時(shí)值,燃料消耗速率瞬時(shí)值。2024/7/3信息科學(xué)與技術(shù)學(xué)院51確定輸入流和輸出流的邊界2024/7/3信息科學(xué)與技術(shù)學(xué)院52變換流分析設(shè)計(jì)步驟第三步:完成“第一級分解”把軟件的功能劃分成邏輯上相互獨(dú)立的幾個(gè)子功能。所謂分解,就是分配控制的過程。第一級分解:即確定最頂層模塊控制第二層哪些模塊。對于變換流,可以明顯地分為輸入、中心變換和輸出三部分,其數(shù)據(jù)流圖通常被映射成一種特殊的軟件結(jié)構(gòu):

三叉控制結(jié)構(gòu)數(shù)據(jù)輸入控制模塊:協(xié)調(diào)對所有輸入數(shù)據(jù)的接收。中心變換控制模塊:協(xié)調(diào)對數(shù)據(jù)的各種加工處理。數(shù)據(jù)輸出控制模塊:協(xié)調(diào)對輸出數(shù)據(jù)的產(chǎn)生和輸出。準(zhǔn)則:盡量使第一級控制的模塊數(shù)目取最小值。2024/7/3信息科學(xué)與技術(shù)學(xué)院532024/7/3信息科學(xué)與技術(shù)學(xué)院54變換流分析設(shè)計(jì)步驟第四步:完成“第二級分解”把數(shù)據(jù)流圖中的每個(gè)處理映射成軟件結(jié)構(gòu)中的一個(gè)適當(dāng)模塊--完成流圖中的處理與模塊的映射關(guān)系。方法:

1、從變換中心的邊界開始,沿著輸入通路向外移動,把輸入通路中的每個(gè)處理映射成軟件結(jié)構(gòu)中輸入數(shù)據(jù)控制模塊控制下的低層模塊。一般數(shù)據(jù)流圖中的前一個(gè)處理總是后一個(gè)處理的下層模塊。

2、沿著輸出通路向外移動,把輸出通路中的每個(gè)處理映射成軟件結(jié)構(gòu)中輸出數(shù)據(jù)控制模塊控制下的低層模塊。一般數(shù)據(jù)流圖中的后一個(gè)處理總是前一個(gè)處理的下層模塊。

3、把變換中心內(nèi)的每個(gè)處理映射成中心變換控制模塊下的低層模塊。一般處于同一張流圖上的變換在變換框的下層處于同一層次上,按照處理的邏輯順序從左到右排列。若變換不處于同一線上,而處于同一抽象層上,其模塊也應(yīng)處于同一層次上。2024/7/3信息科學(xué)與技術(shù)學(xué)院55前一頁完成第二級的分解2024/7/3信息科學(xué)與技術(shù)學(xué)院56前一頁未經(jīng)精化的結(jié)構(gòu)圖2024/7/3信息科學(xué)與技術(shù)學(xué)院57變換流分析設(shè)計(jì)步驟第五步:對第四步得到的結(jié)果進(jìn)一步精化依據(jù):設(shè)計(jì)度量:內(nèi)聚、偶合、信息隱蔽啟發(fā)式規(guī)則通過合并與分解,得到一個(gè)易于實(shí)現(xiàn)、易于測試和易于維護(hù)的軟件結(jié)構(gòu)。例:

1、把“旋轉(zhuǎn)信號/秒”轉(zhuǎn)換成“旋轉(zhuǎn)信號/分”,功能太弱,不足以構(gòu)成一個(gè)模塊,可將“轉(zhuǎn)換成rpm”與“收集sps”合并。

2、“確定加速/減速”和“計(jì)算mph”都使用了相同數(shù)據(jù),

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論