軟件工程課件之第5章-總體設(shè)計(第6版)(張海潘編著)_第1頁
軟件工程課件之第5章-總體設(shè)計(第6版)(張海潘編著)_第2頁
軟件工程課件之第5章-總體設(shè)計(第6版)(張海潘編著)_第3頁
軟件工程課件之第5章-總體設(shè)計(第6版)(張海潘編著)_第4頁
軟件工程課件之第5章-總體設(shè)計(第6版)(張海潘編著)_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章總體設(shè)計設(shè)計過程設(shè)計原理啟發(fā)規(guī)則描繪軟件結(jié)構(gòu)的圖形工具面向數(shù)據(jù)流的設(shè)計方法關(guān)于設(shè)計軟件設(shè)計宣言:MitchKapor“什么是設(shè)計?設(shè)計是你站在兩個世界——技術(shù)世界和人類的目標(biāo)世界——而你嘗試將這兩個世界結(jié)合在一起……”。羅馬建筑批評家Vitruvius提出的觀念:“設(shè)計良好的建筑應(yīng)該展示出堅固、實用和令人賞心悅目”。設(shè)計階段從工程管理的角度,可以將軟件設(shè)計分為總體(概要)設(shè)計階段和詳細設(shè)計階段。從技術(shù)的角度,傳統(tǒng)的結(jié)構(gòu)化方法將軟件設(shè)計劃分為體系結(jié)構(gòu)設(shè)計、數(shù)據(jù)設(shè)計、接口設(shè)計和過程設(shè)計4部分。面向?qū)ο蠓椒▌t將軟件設(shè)計劃分為體系結(jié)構(gòu)設(shè)計、類設(shè)計/數(shù)據(jù)設(shè)計、接口設(shè)計和構(gòu)件級設(shè)計4部分。結(jié)構(gòu)化設(shè)計和結(jié)構(gòu)化分析的關(guān)系需求管理的問題總體設(shè)計過程:尋找實現(xiàn)目標(biāo)系統(tǒng)的各種不同的方案;選取若干個合理的方案選出最佳方案向用戶和使用部門負責(zé)人推薦為最佳方案設(shè)計軟件結(jié)構(gòu),數(shù)據(jù)庫設(shè)計,確定測試要求并且制定測試計劃。必要性:從較抽象的層次上分析多種可能的系統(tǒng)實現(xiàn)方案和軟件結(jié)構(gòu),選出最佳方案和最合理的軟件結(jié)構(gòu),以較低成本開發(fā)出較高質(zhì)量的軟件系統(tǒng)。設(shè)計過程由兩個主要階段組成:系統(tǒng)設(shè)計階段,確定系統(tǒng)的具體實現(xiàn)方案設(shè)想供選擇的方案選取合理的方案推薦最佳方案結(jié)構(gòu)設(shè)計階段,確定軟件結(jié)構(gòu)功能分解設(shè)計軟件結(jié)構(gòu)設(shè)計數(shù)據(jù)庫制定測試計劃書寫文檔審查和復(fù)審總體設(shè)計步驟設(shè)想供選擇的方案根據(jù)數(shù)據(jù)流圖考慮各種可能的實現(xiàn)方案選取合理的方案從方案中選取若干個合理的方案。準(zhǔn)備下列4份資料:系統(tǒng)流程圖;組成系統(tǒng)的物理元素清單;成本/效益分析;實現(xiàn)這個系統(tǒng)的進度計劃??傮w設(shè)計步驟推薦最佳方案綜合分析對比各種合理方案,推薦一個最佳的方案,并且制定詳細的實現(xiàn)計劃。功能分解先結(jié)構(gòu)設(shè)計,再過程設(shè)計。結(jié)構(gòu)設(shè)計確定程序由哪些模塊組成,以及這些模塊之間的關(guān)系;總體設(shè)計階段的任務(wù)過程設(shè)計確定每個模塊的處理過程,詳細設(shè)計階段的任務(wù)。總體設(shè)計步驟設(shè)計軟件結(jié)構(gòu)劃分模塊,一個模塊對應(yīng)一個子功能。將模塊組織成層次系統(tǒng),可用層次圖或結(jié)構(gòu)圖來描繪。若數(shù)據(jù)流圖已經(jīng)細化到適當(dāng)?shù)膶哟危瑒t可以直接從數(shù)據(jù)流圖映射出軟件結(jié)構(gòu),這就是面向數(shù)據(jù)流的設(shè)計方法。設(shè)計數(shù)據(jù)庫對于需要使用數(shù)據(jù)庫的那些應(yīng)用系統(tǒng),進一步設(shè)計數(shù)據(jù)庫。總體設(shè)計步驟制定測試計劃早期階段考慮測試問題,能促進在設(shè)計時提高軟件的可測試性。書寫文檔記錄總體設(shè)計的結(jié)果,其文檔有:(1)系統(tǒng)說明;(2)用戶手冊;(3)測試計劃;(4)詳細的實現(xiàn)計劃;(5)數(shù)據(jù)庫設(shè)計結(jié)果。審查和復(fù)審對總體設(shè)計的結(jié)果進行嚴格的技術(shù)審查和管理復(fù)審。設(shè)計原理模塊化模塊:是由邊界元素限定的相鄰程序元素的序列,而且有一個總體標(biāo)識符代表它。模塊化:就是把程序劃分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構(gòu)成一個整體,可以完成指定的功能滿足用戶的需求。為什么要模塊化?使復(fù)雜的大型程序可管理,軟件應(yīng)具備的惟一屬性。單模塊的大型程序難以理解。設(shè)計原理模塊化的根據(jù):假設(shè):C(x)定義問題的復(fù)雜度

E(x)確定解決問題x需要的工作量設(shè)有兩個問題:P1和P2如果C(P1)>C(P2),顯然E(P1)>E(P2)根據(jù)人類解決一般問題的經(jīng)驗得到的規(guī)律:C(P1+P2)>C(P1)+C(P2)綜上所述,得到下面的不等式E(P1+P2)>E(P1)+E(P2)設(shè)計原理每個程序都相應(yīng)地有一個最適當(dāng)?shù)哪K數(shù)目M,使得系統(tǒng)的開發(fā)成本最小。模塊化和軟件成本模塊化的作用使軟件結(jié)構(gòu)清晰,容易設(shè)計、閱讀和理解。易于測試和調(diào)試,有助于提高可靠性。提高軟件的可修改性。有助于軟件開發(fā)工程的組織管理。抽象抽象:現(xiàn)實世界中一定事物、狀態(tài)或過程之間總存在著某些相似的方面(共性)。把這些相似的方面集中和概括起來,暫時忽略它們之間的差異,這就是抽象。抽象就是抽出事物本質(zhì)特性而暫時不考慮細節(jié)?!俺橄笫侨祟愄幚韽?fù)雜問題的基本方法之一?!薄狦radyBoach一般抽象過程處理復(fù)雜系統(tǒng)的惟一有效的方法是用層次的方式構(gòu)造和分析它。一個復(fù)雜的動態(tài)系統(tǒng)首先可以用一些高級的抽象概念構(gòu)造和理解,這些高級概念又可以用一些較低級的概念構(gòu)造和理解,如此進行下去,直至最低層次的具體元素。例:過程抽象、數(shù)據(jù)抽象軟件工程抽象過程軟件工程過程的每一步都是對軟件解法的抽象層次的一次精化。在可行性研究階段,軟件作為系統(tǒng)的一個完整部件;在需求分析期間,軟件解法是使用在問題環(huán)境內(nèi)熟悉的方式描述的;當(dāng)由總體設(shè)計向詳細設(shè)計過渡時,抽象的程度也就隨之減少了;最后,當(dāng)源程序?qū)懗鰜硪院螅簿瓦_到了抽象的最低層。逐步求精例:用篩選法求100以內(nèi)的素數(shù)。所謂的篩選法,就是從2到100中去掉2,3,5,7的倍數(shù),剩下的就是100以內(nèi)的素數(shù)。首先按程序功能寫出一個框架main(){

建立2到100的數(shù)組A[],其中A[i]=i;.......................1

建立2到10的素數(shù)表B[],存放2到10以內(nèi)的素數(shù);........2

若A[i]=i是B[]中任一數(shù)的倍數(shù),則剔除A[i];.............3

輸出A[]中所有沒有被剔除的數(shù);…..……………….............4}逐步求精求精main(){/*建立2到100的數(shù)組A[],其中A[i]=i*/………..………1for(i=2;i<=100;i++)A[i]=i;

/*建立2到10的素數(shù)表B[],存放2到10以內(nèi)的素數(shù)*/….2B[1]=2;B[2]=3;B[3]=5;B[4]=7;

/*若A[i]=i是B[]中任一數(shù)的倍數(shù),則剔除A[i]*/.…..….3for(j=1;j<=4;j++)檢查A[]所有數(shù)能否被B[j]整除并將其從A[]剔除;.....3.1/*輸出A[]中所有沒有被剔除的數(shù)*/…….4for(i=2;i<=100;i++)若A[i]沒有被剔除,則輸出之……..…..4.1}繼續(xù)對3.1和4.1細化,直到每個語句都能用程序設(shè)計語言來表示逐步求精的作用幫助軟件工程師把精力集中在與當(dāng)前開發(fā)階段最相關(guān)的那些方面上,而忽略當(dāng)前不必要考慮的細節(jié)。確保每個問題在適當(dāng)?shù)臅r候被解決,且不需要同時處理7個以上知識塊。Wirth的概括說明對付復(fù)雜問題的最重要的辦法是抽象,因此,對一個復(fù)雜的問題不應(yīng)該立刻用計算機指令、數(shù)字和邏輯符號來表示,而應(yīng)該用較自然的抽象語句來表示,從而得出抽象程序。抽象程序?qū)Τ橄蟮臄?shù)據(jù)進行某些特定的運算并用某些合適的記號(可能是自然語言)來表示。對抽象程序做進一步的分解,并進入下一個抽象層次,這樣的精細化過程一直進行下去,直到程序能被計算機接受為止。這時的程序可能是用某種高級語言或機器指令書寫的。信息隱藏和局部化信息隱藏:設(shè)計和確定模塊時,一個模塊內(nèi)包含的信息(過程和數(shù)據(jù))對于不需要這些信息的模塊來說,是不能訪問的。局部化:把一些關(guān)系密切的軟件元素物理地放得彼此靠近。局部化有助于實現(xiàn)信息隱藏。信息隱藏和局部化與模塊獨立信息隱藏和局部化的作用“隱藏”意味著模塊化可以通過定義一組獨立的模塊而實現(xiàn),這些獨立的模塊彼此間僅交換為了完成系統(tǒng)功能而必須交換的信息。使用信息隱藏原理作為模塊化系統(tǒng)設(shè)計的標(biāo)準(zhǔn)可以防止錯誤的傳播。模塊獨立是模塊化、抽象、信息隱藏和局部化概念的直接結(jié)果。每個模塊完成一個相對獨立的特定子功能,并且和其他模塊之間的關(guān)系很簡單。模塊獨立模塊獨立的重要性:有效的模塊化意味著功能分割和接口簡化,有利于多人分工合作開發(fā),提高開發(fā)效率。獨立的模塊比較容易測試和維護。模塊獨立程度定性標(biāo)準(zhǔn)度量:耦合衡量不同模塊彼此間互相依賴(連接)的緊密程度。耦合要低,即每個模塊和其他模塊之間的關(guān)系要簡單;內(nèi)聚衡量一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度。內(nèi)聚要高,每個模塊完成一個相對獨立的特定子功能。耦合是對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。要求:在軟件設(shè)計中應(yīng)該追求盡可能松散耦合的系統(tǒng)。易于研究、測試或維護任何一個模塊抑制錯誤傳播;增強系統(tǒng)的可理解性、可測試性、可靠性和可維護性。耦合程度的度量非直接耦合/完全獨立(nodirectcoupling)兩個模塊功能互不相干、完全獨立。通常不可能所有模塊之間都沒有任何連接。耦合程度的度量數(shù)據(jù)耦合(datacoupling)模塊間通過參數(shù)交換數(shù)據(jù)信息系統(tǒng)中至少必須存在這種耦合。一個系統(tǒng)內(nèi)可以只包含數(shù)據(jù)耦合。是理想的目標(biāo),系統(tǒng)易維護,模塊的修改不會引起其他模塊產(chǎn)生退化錯誤。耦合程度的度量控制耦合(controlcoupling)模塊間傳遞的信息有控制信息把模塊適當(dāng)分解之后控制耦合通??梢杂脭?shù)據(jù)耦合代替它。被調(diào)用的模塊需知道調(diào)用模塊的內(nèi)部結(jié)構(gòu)和邏輯,降低了重用的可能性。耦合程度的度量特征耦合(stampcoupling)把整個數(shù)據(jù)結(jié)構(gòu)作為參數(shù)傳遞而被調(diào)用的模塊只需要使用其中一部分數(shù)據(jù)元素??赡軐?dǎo)致對數(shù)據(jù)的訪問失去控制,從而給計算機犯罪提供了機會。無論何時把指針作為參數(shù)進行傳遞,都應(yīng)該仔細檢查該耦合。耦合程度的度量特征耦合(stampcoupling)耦合程度的度量特征耦合(stampcoupling)耦合程度的度量公共環(huán)境耦合(commoncoupling)多個模塊通過公共數(shù)據(jù)環(huán)境相互作用。公共環(huán)境包括全程變量、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)、任何存儲介質(zhì)上的文件、物理設(shè)備等耦合程度的度量公共環(huán)境耦合(commoncoupling)與結(jié)構(gòu)化編程矛盾,代碼可讀性差。對全局變量的聲明進行修改,必須修改能夠訪問該全局變量的每一個模塊。公共環(huán)境耦合的模塊難于重用,必須提供一個全局變量的清單。即使模塊本身不改變,它和產(chǎn)品中其他模塊之間公共環(huán)境耦合的實例數(shù)也會變化非常大。潛在危險很大。模塊暴露出必需要更多的數(shù)據(jù),難以控制數(shù)據(jù)存取,而且會導(dǎo)致計算機犯罪。耦合程度的度量內(nèi)容耦合(contentcoupling)最高程度的耦合,包括:一個模塊訪問另一個模塊的內(nèi)部數(shù)據(jù);一個模塊通過非正常入口轉(zhuǎn)到其他模塊的內(nèi)部;兩個模塊有一部分程序代碼重疊;一個模塊有多個入口。耦合程度的度量耦合是影響軟件復(fù)雜程度的一個重要因素。應(yīng)該采取下述設(shè)計原則:盡量使用數(shù)據(jù)耦合少用控制耦合和特征耦合限制公共環(huán)境耦合的范圍完全不用內(nèi)容耦合內(nèi)聚標(biāo)志模塊內(nèi)各個元素彼此結(jié)合的緊密程度,它是信息隱藏和局部化概念的自然擴展。簡單地說,理想內(nèi)聚的模塊只做一件事情。要求:設(shè)計時應(yīng)該力求做到高內(nèi)聚,通常中等程度的內(nèi)聚也是可以采用的,而且效果和高內(nèi)聚相差不多;但是,低內(nèi)聚不要使用。內(nèi)聚和耦合是密切相關(guān)的,模塊內(nèi)的高內(nèi)聚往往意味著模塊間的松耦合。實踐表明內(nèi)聚更重要,應(yīng)該把更多注意力集中到提高模塊的內(nèi)聚程度上。內(nèi)聚程度的度量偶然內(nèi)聚(coincidentalcohesion)模塊完成的一組任務(wù)彼此間即使有關(guān)系,關(guān)系也是很松散的。MA=B+CGETCHERIFR=5THENS=1內(nèi)聚程度的度量偶然內(nèi)聚(coincidentalcohesion)評價:模塊內(nèi)各元素之間沒有實質(zhì)性聯(lián)系,強扭的瓜不甜;可理解性差,可維護性產(chǎn)生退化;模塊是不可重用的。解決方案:將模塊分成更小的模塊,每個小模塊執(zhí)行一個操作。內(nèi)聚程度的度量邏輯內(nèi)聚(logicalcohesion)一個模塊完成的任務(wù)在邏輯上屬于相同或相似的一類。內(nèi)聚程度的度量邏輯內(nèi)聚接口難以理解,造成整體上不易理解;完成多個操作的代碼互相糾纏在一起,即使局部功能的修改有時也會影響全局,導(dǎo)致嚴重的維護問題;難以重用。解決方案:模塊分解。內(nèi)聚程度的度量時間內(nèi)聚(temporalcohesion)多個模塊包含的任務(wù)必須在同一段時間內(nèi)執(zhí)行。各種初始化工作打開舊主文件、新主文件、事務(wù)文件和打印文件;初始化銷售地區(qū)表;讀第一條事務(wù)記錄和第一條舊主文件記錄;內(nèi)聚程度的度量時間內(nèi)聚:時間關(guān)系在一定程度上反映了程序某些實質(zhì),所以時間內(nèi)聚比邏輯內(nèi)聚好一些。模塊內(nèi)操作之間的關(guān)系很弱,與其他模塊的操作卻有很強的關(guān)聯(lián)。時間內(nèi)聚的模塊不太可能重用。內(nèi)聚程度的度量過程內(nèi)聚(proceduralcohesion)模塊內(nèi)的元素是相關(guān)的且必須以特定次序執(zhí)行。通常通過研究流程圖確定模塊的劃分得到的往往是過程內(nèi)聚的模塊。內(nèi)聚程度的度量過程內(nèi)聚:比時間內(nèi)聚好,至少操作之間是過程關(guān)聯(lián)的。仍是弱連接,不太可能重用模塊。解決方案:分割為單獨的模塊,每個模塊執(zhí)行一個操作。內(nèi)聚程度的度量通信內(nèi)聚(communicationalcohesion)模塊中所有元素都使用同一個輸入數(shù)據(jù)和(或)產(chǎn)生同一個輸出數(shù)據(jù)。即在同一數(shù)據(jù)結(jié)構(gòu)上操作。內(nèi)聚程度的度量通信內(nèi)聚:模塊中各操作緊密相連,比過程內(nèi)聚更好。不能重用。解決方案:分成多個模塊,每個模塊執(zhí)行一個操作。內(nèi)聚程度的度量順序內(nèi)聚(sequentialcohesion)模塊內(nèi)的處理元素和同一個功能密切相關(guān)且這些處理必須順序執(zhí)行。評價:根據(jù)數(shù)據(jù)流圖劃分模塊時,通常得到順序內(nèi)聚的模塊,這種模塊彼此間的連接往往比較簡單。內(nèi)聚程度的度量功能內(nèi)聚(functionalcohesion)模塊內(nèi)所有處理元素屬于一個整體,完成一個單一的功能最高程度的內(nèi)聚。評價:模塊可重用,應(yīng)盡可能重用;可隔離錯誤,維護更容易;擴充產(chǎn)品功能時更容易。內(nèi)聚程度的度量七種內(nèi)聚的優(yōu)劣評分結(jié)果:高內(nèi)聚:功能內(nèi)聚

10分順序內(nèi)聚 9分 中內(nèi)聚:通信內(nèi)聚 7分 過程內(nèi)聚 5分低內(nèi)聚:時間內(nèi)聚 3分邏輯內(nèi)聚 1分偶然內(nèi)聚 0分設(shè)計時力爭做到高內(nèi)聚,并且能夠辨認出低內(nèi)聚的模塊。啟發(fā)規(guī)則改進軟件結(jié)構(gòu)提高模塊獨立性通過模塊分解或合并,降低耦合提高內(nèi)聚。兩個方面:模塊功能完善化。一個完整的模塊包含:執(zhí)行規(guī)定的功能的部分出錯處理的部分返回一個“結(jié)束標(biāo)志”消除重復(fù)功能,改善軟件結(jié)構(gòu)。完全相似局部相似啟發(fā)規(guī)則啟發(fā)規(guī)則模塊規(guī)模應(yīng)該適中通常規(guī)定50~100行語句,最多不超過500行,一頁紙內(nèi)。數(shù)字作為參考,要保證模塊的獨立性。過大的模塊往往是由于分解不充分,但是進一步分解必須符合問題結(jié)構(gòu),一般說來,分解后不應(yīng)該降低模塊獨立性。過小的模塊開銷大于有效操作,而且模塊數(shù)目過多將使系統(tǒng)接口復(fù)雜。啟發(fā)規(guī)則深度、寬度、扇出和扇入都應(yīng)適當(dāng)深度:軟件結(jié)構(gòu)中控制的層數(shù),它往往能粗略地標(biāo)志一個系統(tǒng)的大小和復(fù)雜程度。寬度:軟件結(jié)構(gòu)內(nèi)同一個層次上的模塊總數(shù)的最大值。扇出:一個模塊直接控制(調(diào)用)的模塊數(shù)目。扇入:有多少個上級模塊直接調(diào)用它。啟發(fā)規(guī)則啟發(fā)規(guī)則啟發(fā)規(guī)則模塊的作用域應(yīng)該在控制域之內(nèi)模塊的作用域:定義為受該模塊內(nèi)一個判定影響的所有模塊的集合。模塊的控制域:是這個模塊本身以及所有直接或間接從屬于它的模塊的集合。在一個設(shè)計得很好的系統(tǒng)中,所有受判定影響的模塊應(yīng)該都從屬于做出判定的那個模塊,最好局限于做出判定的那個模塊本身及它的直屬下級模塊。啟發(fā)規(guī)則啟發(fā)規(guī)則解決方案:把模塊A中的判定移到模塊M中;把模塊G移到模塊A下面,作為其下級模塊。啟發(fā)規(guī)則力爭降低模塊接口的復(fù)雜程度模塊接口復(fù)雜是軟件發(fā)生錯誤的一個主要原因。應(yīng)該仔細設(shè)計模塊接口,使得信息傳遞簡單并且和模塊的功能一致。例:解一元二次方程的函數(shù)QUAD_ROOT(TBL,X)其中數(shù)組TBL傳送方程的系數(shù)數(shù)組X送回求得的根QUAD_ROOT(A,B,C,ROOT1,ROOT2)啟發(fā)規(guī)則設(shè)計單入口單出口的模塊模塊間不要出現(xiàn)內(nèi)容耦合。軟件易理解和維護。模塊功能應(yīng)該可以預(yù)測模塊的功能可預(yù)測,但也防止功能過分局限。功能可預(yù)測:將模塊當(dāng)做黑盒子,相同輸入數(shù)據(jù)總是產(chǎn)生同樣的輸出。描繪軟件結(jié)構(gòu)的圖形工具層次圖(H圖)

HIPO圖層次圖用來描繪軟件的層次結(jié)構(gòu)。很適于在自頂向下設(shè)計軟件的過程中使用。層次圖和層次方框圖的區(qū)別:層次圖層次方框圖作用描繪軟件結(jié)構(gòu)描繪數(shù)據(jù)結(jié)構(gòu)矩形框模塊數(shù)據(jù)元素連線調(diào)用關(guān)系組成關(guān)系層次圖正文加工系統(tǒng)的層次圖結(jié)構(gòu)圖與層次圖類似,也是描繪軟件結(jié)構(gòu)的圖形工具。方框代表一個模塊;方框之間的直線表示模塊的調(diào)用關(guān)系;尾部是空心圓箭頭表示傳遞的是數(shù)據(jù);尾部實心圓箭頭表示傳遞的是控制信息。結(jié)構(gòu)圖附加符號:選擇調(diào)用:判定為真時調(diào)用A,為假時調(diào)用B。循環(huán)調(diào)用:模塊M循環(huán)調(diào)用模塊A、B、C。層次圖與結(jié)構(gòu)圖二者并不嚴格表示模塊的調(diào)用次序,多數(shù)人習(xí)慣按調(diào)用次序從左到右畫模塊;二者并不指明何時調(diào)用下層模塊;二者只表明一個模塊調(diào)用那些模塊,沒有表示模塊內(nèi)還有沒有其他成分;通常用層次圖作為描繪軟件結(jié)構(gòu)的文檔;由層次圖導(dǎo)出結(jié)構(gòu)圖的過程,可以作為檢查設(shè)計正確性和評價模塊獨立性的好方法。面向數(shù)據(jù)流的設(shè)計方法定義了一些不同的“映射”,利用這些映射可以把數(shù)據(jù)流圖變換成軟件結(jié)構(gòu),理論上可以設(shè)計任何軟件的結(jié)構(gòu)。也是通常所說的結(jié)構(gòu)化設(shè)計方法(簡稱SD方法)。信息流的類型決定了映射的方法,包括兩種類型:變換流事務(wù)流面向數(shù)據(jù)流的設(shè)計方法變換流信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內(nèi)部形式,進入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。面向數(shù)據(jù)流的設(shè)計方法事務(wù)流數(shù)據(jù)沿輸入通路到達一個處理T,T根據(jù)輸入數(shù)據(jù)的類型在若干個動作序列中選出一個來執(zhí)行。處理T稱為事務(wù)中心,它完成下述任務(wù):接收輸入數(shù)據(jù);分析每個事務(wù)以

確定它的類型;根據(jù)事務(wù)類型

選取一條活動通路。設(shè)計過程變換分析一系列設(shè)計步驟的總稱,經(jīng)過這些步驟把具有變換流特點的數(shù)據(jù)流圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu)。設(shè)計步驟復(fù)查基本系統(tǒng)模型確保系統(tǒng)的輸入數(shù)據(jù)和輸出數(shù)據(jù)符合實際。復(fù)查并精化數(shù)據(jù)流圖對需求分析階段得出的數(shù)據(jù)流圖認真復(fù)查,并且在必要時進行精化。確保數(shù)據(jù)流圖給出正確的邏輯模型,使數(shù)據(jù)流圖中每個處理代表一個規(guī)模適中相對獨立的子功能。設(shè)計步驟確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性所有信息流都可認為是變換流,但遇到有明顯事務(wù)特性的信息流時,建議采用事務(wù)分析方法進行設(shè)計。確定數(shù)據(jù)流的全局特性和局部特性。確定輸入流和輸出流的邊界,從而孤立出變換中心輸入流和輸出流的邊界和對它們的解釋有關(guān),不同設(shè)計人員可能會在流內(nèi)選取稍微不同的點作為邊界的位置。設(shè)計步驟完成“第一

級分解”位于軟件結(jié)構(gòu)最頂層的控制模塊Cm協(xié)調(diào)下述從屬的控制功能:輸入信息處理控制模塊Ca變換中心控制模塊Ct,管理內(nèi)部數(shù)據(jù)操作;輸出信息處理控制模塊Ce。設(shè)計步驟完成“第二級分解”設(shè)計步驟使用設(shè)計度量和啟發(fā)式規(guī)則對第一次分割得到的軟件結(jié)構(gòu)進一步精化為了產(chǎn)生合理的分解,得到盡可能高的內(nèi)聚、盡可能松散的耦合,為了得到一個易于實現(xiàn)、易于測試和易于維護的軟件結(jié)構(gòu),應(yīng)該對初步分割得到的模塊進行再分解或合并。事務(wù)分析當(dāng)數(shù)據(jù)流有一個明顯的“發(fā)射中心”(事務(wù)中心)時,采用事務(wù)分析方法為宜。事務(wù)分析與變換分析設(shè)計步驟的差別僅在于由數(shù)據(jù)流圖到軟件結(jié)構(gòu)的映射方法不同:由事務(wù)流映射成的軟件結(jié)構(gòu)包括一個接收分支和一個發(fā)送分支;接收分支與變換分析相似,即從事務(wù)中心的邊界開始,把沿著接收流通路的處理映射成模塊;發(fā)送分支包含一個調(diào)度模塊,控制下層的所有活動模塊;然后把數(shù)據(jù)流圖中的每個活動流通路映射成與它的流特征相對應(yīng)的結(jié)構(gòu)。事務(wù)分析應(yīng)用示例例1(補充)設(shè)計一個產(chǎn)品,它將一個文件名作為輸入,并返回文件中的字數(shù)。應(yīng)用示例第一級分解應(yīng)用示例第二級分解應(yīng)用示例精化應(yīng)用示例例2:汽車數(shù)字儀表板通過模數(shù)轉(zhuǎn)換實現(xiàn)傳感器和微處理機接口;在發(fā)光二極管面板上顯示數(shù)據(jù);指示每小時英里數(shù)(mph),行駛的里程,每加侖油行駛的英里數(shù)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論