版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第5章總體設(shè)計5.1設(shè)計過程5.2設(shè)計原理5.3啟發(fā)規(guī)則5.4描繪軟件結(jié)構(gòu)的圖形工具5.5面向數(shù)據(jù)流的設(shè)計方法5.6小結(jié)軟件設(shè)計思路軟件設(shè)計
需求分析:軟件系統(tǒng)必須“做什么”;軟件設(shè)計:“如何做”才可以滿足需求規(guī)格說明中規(guī)定的各項需求。從工程管理的角度來看,軟件設(shè)計通常分為兩步,即概要設(shè)計和詳細設(shè)計。軟件設(shè)計思路概要設(shè)計的基本目的是回答“概括地說,軟件系統(tǒng)應(yīng)如何實現(xiàn)”這一問題。因此,概要設(shè)計有時稱為初步設(shè)計或總體設(shè)計。這個階段的工作將劃分出組成系統(tǒng)的物理元素——程序、文件、數(shù)據(jù)庫、人工過程和文檔等,每個物理元素仍處在黑盒子級,具體內(nèi)容將在以后仔細設(shè)計。概要設(shè)計的關(guān)鍵是確定軟件的總體結(jié)構(gòu),即確定軟件系統(tǒng)的組成成份(子系統(tǒng)或模塊)以及各組成成份之間的相互關(guān)系。軟件設(shè)計(續(xù))
軟件設(shè)計思路詳細設(shè)計是對概要設(shè)計結(jié)果的進一步細化,其主要任務(wù)是確定軟件系統(tǒng)各組成成份內(nèi)部的數(shù)據(jù)結(jié)構(gòu)和算法過程方法:結(jié)構(gòu)化方法、面向?qū)ο蠓椒ㄜ浖O(shè)計(續(xù))
軟件設(shè)計思路總體設(shè)計過程首先尋找實現(xiàn)目標(biāo)系統(tǒng)的各種不同的方案(需求分析階段得到的數(shù)據(jù)流圖是設(shè)想各種可能方案的基礎(chǔ))。然后分析員從這些供選擇的方案中選取若干個合理的方案,為每個合理的方案都準(zhǔn)備一份系統(tǒng)流程圖,列出組成系統(tǒng)的所有物理元素,進行成本效益/分析,并且制定實現(xiàn)出一個最佳方案的進度計劃。系統(tǒng)分析員推薦最佳方案,用戶接受后,為這個最佳方案設(shè)計軟件結(jié)構(gòu)。進行必要的數(shù)據(jù)庫設(shè)計,確定測試要求并制定測試計劃。軟件設(shè)計思路總體設(shè)計的必要性可以站在全局高度上,花較少成本,從較抽象的層次上分析對比多種可能的系統(tǒng)實現(xiàn)方案和軟件結(jié)構(gòu),從中選出最佳方案和最合理的軟件結(jié)構(gòu),從而用較低成本開發(fā)出較高質(zhì)量的軟件系統(tǒng)。軟件設(shè)計思路總體設(shè)計過程由兩個主要階段(包括9個步驟)組成:(1)系統(tǒng)設(shè)計階段,確定系統(tǒng)的具體實現(xiàn)方案;(2)結(jié)構(gòu)設(shè)計階段,確定軟件結(jié)構(gòu)。設(shè)計原理:模塊化、抽象、信息隱藏和局部化、模塊獨立模塊的獨立程度度量:內(nèi)聚和耦合,在軟件設(shè)計中應(yīng)該追求盡可能松耦合、高內(nèi)聚的系統(tǒng)。啟發(fā)規(guī)則:7條規(guī)則描繪軟件結(jié)構(gòu)的圖形工具:層次圖、HIPO圖、結(jié)構(gòu)圖面向數(shù)據(jù)流的設(shè)計方法:變換流分析、事務(wù)流分析軟件設(shè)計思路5.1設(shè)計過程總體設(shè)計過程通常由兩個主要階段組成:(1)系統(tǒng)設(shè)計階段,確定系統(tǒng)的具體實現(xiàn)方案;(2)結(jié)構(gòu)設(shè)計階段,確定軟件結(jié)構(gòu)。典型的總體設(shè)計過程包括下述9個步驟:1.設(shè)想供選擇的方案2.選取合理的方案3.推薦最佳方案4.功能分解5.設(shè)計軟件結(jié)構(gòu)6.設(shè)計數(shù)據(jù)庫7.制定測試計劃8.書寫文檔9.審查和復(fù)審軟件設(shè)計思路
在總體設(shè)計階段分析員應(yīng)該考慮各種可能的實現(xiàn)方案,并且力求從中選出最佳方案。在總體設(shè)計階段開始時只有系統(tǒng)的邏輯模型,分析員有充分的自由分析比較不同的物理實現(xiàn)方案,一旦選出了最佳的方案,將能大大提高系統(tǒng)的性能/價格比。需求分析階段得出的數(shù)據(jù)流圖是總體設(shè)計的極好的出發(fā)點。設(shè)想供選擇的方案的一種常用的方法是,設(shè)想把數(shù)據(jù)流圖中的處理分組的各種可能的方法,拋棄在技術(shù)上行不通的分組方法(例如,組內(nèi)不同處理的執(zhí)行時間不相容),余下的分組方法代表可能的實現(xiàn)策略,并且可以啟示供選擇的物理系統(tǒng)。1.設(shè)想供選擇的方案軟件設(shè)計思路應(yīng)該從前一步得到的一系列供選擇的方案中選取若干個合理的方案,通常至少選取低成本、中等成本和高成本的三種方案。在判斷哪些方案合理時應(yīng)該考慮在問題定義和可行性研究階段確定的工程規(guī)模和目標(biāo),有時可能還需要進一步征求用戶的意見。對每個合理的方案分析員都應(yīng)該準(zhǔn)備下列4份資料:(1)系統(tǒng)流程圖;(2)組成系統(tǒng)的物理元素清單;(3)成本/效益分析;(4)實現(xiàn)這個系統(tǒng)的進度計劃。2.選取合理的方案軟件設(shè)計思路分析員應(yīng)該綜合分析對比各種合理方案的利弊,推薦一個最佳的方案,并且為推薦的方案制定詳細的實現(xiàn)計劃。制定詳細實現(xiàn)計劃的關(guān)鍵技術(shù)是本書第13章中將要介紹的工程網(wǎng)絡(luò)。用戶和有關(guān)的技術(shù)專家應(yīng)該認真審查分析員所推薦的最佳系統(tǒng),如果該系統(tǒng)確實符合用戶的需要,并且是在現(xiàn)有條件下完全能夠?qū)崿F(xiàn)的,則應(yīng)該提請使用部門負責(zé)人進一步審批。在使用部門的負責(zé)人也接受了分析員所推薦的方案之后,將進入總體設(shè)計過程的下一個重要階段——結(jié)構(gòu)設(shè)計。3.推薦最佳方案軟件設(shè)計思路為了最終實現(xiàn)目標(biāo)系統(tǒng),必須設(shè)計出組成這個系統(tǒng)的所有程序和文件(或數(shù)據(jù)庫)。對程序(特別是復(fù)雜的大型程序)的設(shè)計,通常分為兩個階段完成:首先進行結(jié)構(gòu)設(shè)計,然后進行過程設(shè)計。結(jié)構(gòu)設(shè)計確定程序由哪些模塊組成,以及這些模塊之間的關(guān)系;過程設(shè)計確定每個模塊的處理過程。結(jié)構(gòu)設(shè)計是總體設(shè)計階段的任務(wù),過程設(shè)計是詳細設(shè)計階段的任務(wù)。
為確定軟件結(jié)構(gòu),首先需要從實現(xiàn)角度把復(fù)雜的功能進一步分解。分析員結(jié)合算法描述仔細分析數(shù)據(jù)流圖中的每個處理,如果一個處理的功能過分復(fù)雜,必須把它的功能適當(dāng)?shù)胤纸獬梢幌盗斜容^簡單的功能。一般說來,經(jīng)過分解之后應(yīng)該使每個功能對大多數(shù)程序員而言都是明顯易懂的。功能分解導(dǎo)致數(shù)據(jù)流圖的進一步細化,同時還應(yīng)該用IPO圖或其他適當(dāng)?shù)墓ぞ吆喴枋黾毣竺總€處理的算法。4.功能分解軟件設(shè)計思路通常程序中的一個模塊完成一個適當(dāng)?shù)淖庸δ?。?yīng)該把模塊組織成良好的層次系統(tǒng),頂層模塊調(diào)用它的下層模塊以實現(xiàn)程序的完整功能,每個下層模塊再調(diào)用更下層的模塊,從而完成程序的一個子功能,最下層的模塊完成最具體的功能。軟件結(jié)構(gòu)(即由模塊組成的層次系統(tǒng))可以用層次圖或結(jié)構(gòu)圖來描繪,第5.4節(jié)將介紹這些圖形工具。如果數(shù)據(jù)流圖已經(jīng)細化到適當(dāng)?shù)膶哟?,則可以直接從數(shù)據(jù)流圖映射出軟件結(jié)構(gòu),這就是第5.5節(jié)中將要講述的面向數(shù)據(jù)流的設(shè)計方法。5.設(shè)計軟件結(jié)構(gòu)軟件設(shè)計思路
對于需要使用數(shù)據(jù)庫的那些應(yīng)用系統(tǒng),軟件工程師應(yīng)該在需求分析階段所確定的系統(tǒng)數(shù)據(jù)需求的基礎(chǔ)上,進一步設(shè)計數(shù)據(jù)庫。在數(shù)據(jù)庫課中已經(jīng)詳細講述了設(shè)計數(shù)據(jù)庫的方法,本書不再贅述。6.設(shè)計數(shù)據(jù)庫軟件設(shè)計思路
在軟件開發(fā)的早期階段考慮測試問題,能促使軟件設(shè)計人員在設(shè)計時注意提高軟件的可測試性。本書第7章將仔細討論軟件測試的目的和設(shè)計測試方案的各種技術(shù)方法。7.制定測試計劃軟件設(shè)計思路應(yīng)該用正式的文檔記錄總體設(shè)計的結(jié)果,在這個階段應(yīng)該完成的文檔通常有下述幾種:(1)系統(tǒng)說明主要內(nèi)容包括用系統(tǒng)流程圖描繪的系統(tǒng)構(gòu)成方案,組成系統(tǒng)的物理元素清單,成本/效益分析;對最佳方案的概括描述,精化的數(shù)據(jù)流圖,用層次圖或結(jié)構(gòu)圖描繪的軟件結(jié)構(gòu),用IPO圖或其他工具(例如,PDL語言)簡要描述的各個模塊的算法,模塊間的接口關(guān)系,以及需求、功能和模塊三者之間的交叉參照關(guān)系等等。(2)用戶手冊根據(jù)總體設(shè)計階段的結(jié)果,修改更正在需求分析階段產(chǎn)生的初步的用戶手冊。(3)測試計劃包括測試策略,測試方案,預(yù)期的測試結(jié)果,測試進度計劃等等。(4)詳細的實現(xiàn)計劃(5)數(shù)據(jù)庫設(shè)計結(jié)果8.書寫文檔軟件設(shè)計思路
最后應(yīng)該對總體設(shè)計的結(jié)果進行嚴(yán)格的技術(shù)審查,在技術(shù)審查通過之后再由使用部門的負責(zé)人從管理角度進行復(fù)審。9.審查和復(fù)審軟件設(shè)計思路5.2設(shè)計原理模塊可以是過程、函數(shù)、子程序和宏、對象內(nèi)的方法。
5.2.1模塊化C(P1)>C(P2)顯然E(P1)>E(P2)而且C(P1+P2)>C(P1)+C(P2)故E(P1+P2)>E(P1)+E(P2)其中,C(x)問題x的復(fù)雜程度;模塊化和軟件成本當(dāng)模塊數(shù)目增加時每個模塊的規(guī)模將減小,開發(fā)單個模塊需要的成本(工作量)確實減少了;但是隨著模塊數(shù)目增加,設(shè)計模塊間接口所需要的工作量也將增加。軟件設(shè)計思路
雖然目前還不能精確地決定M的數(shù)值,但是在考慮模塊化的時候總成本曲線確實是有用的指南。采用模塊化原理可以使軟件結(jié)構(gòu)清晰,不僅容易設(shè)計也容易閱讀和理解。因為程序錯誤通常局限在有關(guān)的模塊及它們之間的接口中,所以模塊化使軟件容易測試和調(diào)試,因而有助于提高軟件的可靠性。因為變動往往只涉及少數(shù)幾個模塊,所以模塊化能夠提高軟件的可修改性。模塊化也有助于軟件開發(fā)工程的組織管理,一個復(fù)雜的大型程序可以由許多程序員分工編寫不同的模塊,并且可以進一步分配技術(shù)熟練的程序員編寫困難的模塊。軟件設(shè)計思路5.2.2抽象
抽象就是抽出事物的本質(zhì)特性而暫時不考慮它們的細節(jié)。
軟件工程過程的每一步都是對軟件解法的抽象層次的一次精化。在可行性研究階段,軟件作為系統(tǒng)的一個完整部件;在需求分析期間,軟件解法是使用在問題環(huán)境內(nèi)熟悉的方式描述的;當(dāng)由總體設(shè)計向詳細設(shè)計過渡時,抽象的程度也就隨之減少了;最后,當(dāng)源程序?qū)懗鰜硪院?,也就達到了抽象的最低層。軟件設(shè)計思路5.2.3逐步求精逐步求精:為了能集中精力解決主要問題而盡量推遲對問題細節(jié)的考慮。
人類的認知過程遵守Miller法則:一個人在任何時候都只能把注意力集中在(7±2)個知識塊上。逐步求精方法的強大作用就在于,它能幫助軟件工程師把精力集中在與當(dāng)前開發(fā)階段最相關(guān)的那些方面上,而忽略那些對整體解決方案來說雖然是必要的,然而目前還不需要考慮的細節(jié),這些細節(jié)將留到以后再考慮。軟件設(shè)計思路5.2.4信息隱藏和局部化
信息隱藏原理指出:應(yīng)該這樣設(shè)計和確定模塊,使得一個模塊內(nèi)包含的信息(過程和數(shù)據(jù))對于不需要這些信息的模塊來說,是不能訪問的。
局部化是指把一些關(guān)系密切的軟件元素物理地放得彼此靠近。軟件設(shè)計思路5.2.5模塊獨立模塊獨立化有如下優(yōu)點:1.有效的模塊化(即具有獨立的模塊)的軟件比較容易開發(fā)出來。2.獨立的模塊比較容易測試和維護。模塊的獨立程度可以由內(nèi)聚和耦合兩個定性標(biāo)準(zhǔn)度量:耦合衡量不同模塊彼此間互相依賴(連接)的緊密程度;內(nèi)聚衡量一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度。軟件設(shè)計思路耦合是對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。耦合強弱取決于模塊間接口的復(fù)雜程度,進入或訪問一個模塊的點,以及通過接口的數(shù)據(jù)。在軟件設(shè)計中應(yīng)該追求盡可能松散耦合的系統(tǒng)。模塊間的耦合程度強烈影響系統(tǒng)的可理解性、可測試性、可靠性和可維護性。如果兩個模塊中的每一個都能獨立地工作而不需要另一個模塊的存在,那么它們彼此完全獨立,這意味著模塊間無任何連接,耦合程度最低。但是,在一個軟件系統(tǒng)中不可能所有模塊之間都沒有任何連接。1.耦合軟件設(shè)計思路數(shù)據(jù)耦合:如果兩個模塊彼此間通過參數(shù)交換信息,而且交換的信息僅僅是數(shù)據(jù),那么這種耦合稱為數(shù)據(jù)耦合??刂岂詈希喝绻麄鬟f的信息中有控制信息(盡管有時這種控制信息以數(shù)據(jù)的形式出現(xiàn)),則這種耦合稱為控制耦合。特征耦合:當(dāng)把整個數(shù)據(jù)結(jié)構(gòu)作為參數(shù)傳遞而被調(diào)用的模塊只需要使用其中一部分?jǐn)?shù)據(jù)元素時,就出現(xiàn)了特征耦合。公共環(huán)境耦合:當(dāng)兩個或多個模塊通過一個公共數(shù)據(jù)環(huán)境相互作用時,它們之間的耦合稱為公共環(huán)境耦合。軟件設(shè)計思路內(nèi)容耦合:如果出現(xiàn)下列情況之一,兩個模塊間就發(fā)生了內(nèi)容耦合:一個模塊訪問另一個模塊的內(nèi)部數(shù)據(jù);一個模塊不通過正常入口而轉(zhuǎn)到另一個模塊的內(nèi)部;兩個模塊有一部分程序代碼重疊(只可能出現(xiàn)在匯編程序中);一個模塊有多個入口(這意味著一個模塊有幾種功能)??傊詈鲜怯绊戃浖?fù)雜程度的一個重要因素。應(yīng)該采取下述設(shè)計原則:盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合。軟件設(shè)計思路內(nèi)聚標(biāo)志一個模塊內(nèi)各個元素彼此結(jié)合的緊密程度,簡單地說,理想內(nèi)聚的模塊只做一件事情。設(shè)計時應(yīng)該力求做到高內(nèi)聚,內(nèi)聚和耦合是密切相關(guān),模塊內(nèi)的高內(nèi)聚往往意味著模塊間的松耦合。2.內(nèi)聚軟件設(shè)計思路低內(nèi)聚有如下幾類:偶然內(nèi)聚:如果一個模塊完成一組任務(wù),這些任務(wù)彼此間即使有關(guān)系,關(guān)系也是很松散的,就叫做偶然內(nèi)聚。邏輯內(nèi)聚:如果一個模塊完成的任務(wù)在邏輯上屬于相同或相似的一類,則稱為邏輯內(nèi)聚。時間內(nèi)聚:如果一個模塊包含的任務(wù)必須在同一段時間內(nèi)執(zhí)行,就叫時間內(nèi)聚。軟件設(shè)計思路中內(nèi)聚主要有兩類:過程內(nèi)聚:如果一個模塊內(nèi)的處理元素是相關(guān)的,而且必須以特定次序執(zhí)行,則稱為過程內(nèi)聚。(使用程序流程圖作為工具設(shè)計軟件時,常常通過研究流程圖確定模塊的劃分,這樣得到的往往是過程內(nèi)聚的模塊)通信內(nèi)聚:如果模塊中所有元素都使用同一個輸入數(shù)據(jù)和(或)產(chǎn)生同一個輸出數(shù)據(jù),則稱為通信內(nèi)聚。軟件設(shè)計思路高內(nèi)聚也有兩類:順序內(nèi)聚:如果一個模塊內(nèi)的處理元素和同一個功能密切相關(guān),而且這些處理必須順序執(zhí)行(通常一個處理元素的輸出數(shù)據(jù)作為下一個處理元素的輸入數(shù)據(jù)),則稱為順序內(nèi)聚。功能內(nèi)聚:根據(jù)數(shù)據(jù)流圖劃分模塊時,通常得到順序內(nèi)聚的模塊,這種模塊彼此間的連接往往比較簡單。如果模塊內(nèi)所有處理元素屬于一個整體,完成一個單一的功能,則稱為功能內(nèi)聚。功能內(nèi)聚是最高程度的內(nèi)聚。軟件設(shè)計思路耦合和內(nèi)聚的概念是Constantine,Yourdon,Myers和Stevens等人提出來的。按照他們的觀點,如果給上述七種內(nèi)聚的優(yōu)劣評分,將得到如下結(jié)果:功能內(nèi)聚 10分 時間內(nèi)聚 3分順序內(nèi)聚 9分 邏輯內(nèi)聚 1分通信內(nèi)聚 7分 偶然內(nèi)聚 0分過程內(nèi)聚 5分事實上,沒有必要精確確定內(nèi)聚的級別。重要的是設(shè)計時力爭做到高內(nèi)聚,并且能夠辨認出低內(nèi)聚的模塊,有能力通過修改設(shè)計提高模塊的內(nèi)聚程度降低模塊間的耦合程度,從而獲得較高的模塊獨立性。軟件設(shè)計思路5.3啟發(fā)規(guī)則1.改進軟件結(jié)構(gòu)提高模塊獨立性2.模塊規(guī)模應(yīng)該適中3.深度、寬度、扇出和扇入都應(yīng)適當(dāng)4.模塊的作用域應(yīng)該在控制域之內(nèi)5.力爭降低模塊接口的復(fù)雜程度6.設(shè)計單入口單出口的模塊7.模塊功能應(yīng)該可以預(yù)測軟件設(shè)計思路設(shè)計出軟件的初步結(jié)構(gòu)以后,應(yīng)該審查分析這個結(jié)構(gòu),通過模塊分解或合并,力求降低耦合提高內(nèi)聚。例如,多個模塊公有的一個子功能可以獨立成一個模塊,由這些模塊調(diào)用;有時可以通過分解或合并模塊以減少控制信息的傳遞及對全程數(shù)據(jù)的引用,并且降低接口的復(fù)雜程度。1.改進軟件結(jié)構(gòu)提高模塊獨立性軟件設(shè)計思路經(jīng)驗表明,一個模塊的規(guī)模不應(yīng)過大,最好能寫在一頁紙內(nèi)(通常不超過60行語句)。有人從心理學(xué)角度研究得知,當(dāng)一個模塊包含的語句數(shù)超過30以后,模塊的可理解程度迅速下降。過大的模塊往往是由于分解不充分,但是進一步分解必須符合問題結(jié)構(gòu),一般說來,分解后不應(yīng)該降低模塊獨立性。過小的模塊開銷大于有效操作,而且模塊數(shù)目過多將使系統(tǒng)接口復(fù)雜。因此過小的模塊有時不值得單獨存在,特別是只有一個模塊調(diào)用它時,通??梢园阉喜⒌缴霞壞K中去而不必單獨存在。2.模塊規(guī)模應(yīng)該適中模塊過大:可理解程度下降模塊過?。洪_銷大于有效操作、接口復(fù)雜軟件設(shè)計思路深度表示軟件結(jié)構(gòu)中控制的層數(shù)。寬度是軟件結(jié)構(gòu)內(nèi)同一個層次上的模塊總數(shù)的最大值。扇出是一個模塊直接控制(調(diào)用)的模塊數(shù)目。扇出太大,應(yīng)增加中間層次的控制模塊;扇出小時,把下級模塊進一步分解成若干個子功能模塊或合并到它的上級模塊中去。扇入是表明有多少個上級模塊直接調(diào)用它。3.深度、寬度、扇出和扇入都應(yīng)適當(dāng)設(shè)計得很好的軟件結(jié)構(gòu)通常頂層扇出比較高,中層扇出較少,底層扇入到公共的實用模塊中去(底層模塊有高扇入)。軟件設(shè)計思路(1)深度和程序長度之間應(yīng)該有粗略的對應(yīng)關(guān)系,當(dāng)然這個對應(yīng)關(guān)系是在一定范圍內(nèi)變化的。如果層數(shù)過多則應(yīng)該考慮是否有許多管理模塊過分簡單了,能否適當(dāng)合并。(2)一般說來,寬度越大系統(tǒng)越復(fù)雜。對寬度影響最大的因素是模塊的扇出。(3)一個設(shè)計得好的典型系統(tǒng)的平均扇出通常是3或4(扇出的上限通常是5~9)。(4)扇入越大則共享該模塊的上級模塊數(shù)目越多,這是有好處的,但是,不能違背模塊獨立原理單純追求高扇入。軟件設(shè)計思路高扇出的模塊結(jié)構(gòu)舉例:編外人員工資取得工資數(shù)據(jù)計時制工資額薪金制工資額編外人員稅款編外人員扣款常規(guī)扣款稅收扣款計算實發(fā)工資避免平鋪結(jié)構(gòu)軟件設(shè)計思路編外人員工資取得工資數(shù)據(jù)計時制工資額薪金制工資額編外人員稅款編外人員扣款常規(guī)扣款稅收扣款計算實發(fā)工資計時工人實發(fā)工資計薪工人實發(fā)工資編外人員實發(fā)工資增加中間層降低扇出軟件設(shè)計思路模塊的作用域定義為受該模塊內(nèi)一個判定影響的所有模塊的集合。模塊的控制域是這個模塊本身以及所有直接或間接從屬于它的模塊的集合。模塊C的控制范圍:C、D、E、F、G、H,如果模塊C
作出的決策影響了模塊L,L超出了C
的控制范圍.(難于理解;會出現(xiàn)控制耦合)1、把做決策的點C上移2、把L移到C的控制域中在一個設(shè)計得很好的系統(tǒng)中,所有受判定影響的模塊應(yīng)該都從屬于做出判定的那個模塊,最好局限于做出判定的那個模塊本身及它的直屬下級模塊。4.模塊的作用域應(yīng)該在控制域之內(nèi)CHDEGXFAILJKB軟件設(shè)計思路模塊接口復(fù)雜是軟件發(fā)生錯誤的一個主要原因。應(yīng)該仔細設(shè)計模塊接口,使得信息傳遞簡單并且和模塊的功能一致。
接口復(fù)雜或不一致(即看起來傳遞的數(shù)據(jù)之間沒有聯(lián)系),是緊耦合或低內(nèi)聚的征兆,應(yīng)該重新分析這個模塊的獨立性。5.力爭降低模塊接口的復(fù)雜程度軟件設(shè)計思路這條啟發(fā)式規(guī)則警告軟件工程師不要使模塊間出現(xiàn)內(nèi)容耦合。當(dāng)從頂部進入模塊并且從底部退出來時,軟件是比較容易理解的,因此也是比較容易維護的。6.設(shè)計單入口單出口的模塊軟件設(shè)計思路模塊的功能應(yīng)該能夠預(yù)測,但也要防止模塊功能過分局限。如果一個模塊可以當(dāng)做一個黑盒子,也就是說,只要輸入的數(shù)據(jù)相同就產(chǎn)生同樣的輸出,這個模塊的功能就是可以預(yù)測的。帶有內(nèi)部“存儲器”的模塊的功能可能是不可預(yù)測的,因為它的輸出可能取決于內(nèi)部存儲器(例如某個標(biāo)記)的狀態(tài)。由于內(nèi)部存儲器對于上級模塊而言是不可見的,所以這樣的模塊既不易理解又難于測試和維護。7.模塊功能應(yīng)該可以預(yù)測軟件設(shè)計思路5.4描繪軟件結(jié)構(gòu)的圖形工具層次圖軟件設(shè)計思路HIPO圖(可追蹤)IPO圖來描述處理過程軟件設(shè)計思路結(jié)構(gòu)圖循環(huán)調(diào)用條件調(diào)用模塊的名字或主要功能調(diào)用關(guān)系傳遞的信息(數(shù)據(jù)流和控制流)軟件設(shè)計思路5.5面向數(shù)據(jù)流的設(shè)計方法(結(jié)構(gòu)化設(shè)計 方法SD)面向數(shù)據(jù)流的設(shè)計方法的目標(biāo)是給出設(shè)計軟件結(jié)構(gòu)的一個系統(tǒng)化的途徑。面向數(shù)據(jù)流的設(shè)計方法定義了一些不同的“映射”,利用這些映射可以把數(shù)據(jù)流圖變換成軟件結(jié)構(gòu)。因為任何軟件系統(tǒng)都可以用數(shù)據(jù)流圖表示,所以面向數(shù)據(jù)流的設(shè)計方法理論上可以設(shè)計任何軟件的結(jié)構(gòu)。軟件設(shè)計思路5.5.1概念結(jié)構(gòu)化設(shè)計方法(SD)以數(shù)據(jù)流圖為基礎(chǔ),它定義了把DFD變換成軟件結(jié)構(gòu)的不同映射方法。數(shù)據(jù)流圖可分為兩種類型:
變換型數(shù)據(jù)流事務(wù)型數(shù)據(jù)流軟件設(shè)計思路參看圖5.8,信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內(nèi)部形式,進入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。當(dāng)數(shù)據(jù)流圖具有這些特征時,這種信息流就叫作變換流。1.變換流圖5.8變換流軟件設(shè)計思路當(dāng)數(shù)據(jù)流圖具有和圖5.9類似的形狀時,這種數(shù)據(jù)流是“以事務(wù)為中心的”,也就是說,數(shù)據(jù)沿輸入通路到達一個處理T,這個處理根據(jù)輸入數(shù)據(jù)的類型在若干個動作序列中選出一個來執(zhí)行。這類數(shù)據(jù)流應(yīng)該劃為一類特殊的數(shù)據(jù)流,稱為事務(wù)流。圖5.9中的處理T稱為事務(wù)中心,它完成下述任務(wù):(1)接收輸入數(shù)據(jù)(2)分析每個事務(wù)以確定它的類型;(3)根據(jù)事務(wù)類型選取一條活動通路。2.事務(wù)流圖5.9事務(wù)流軟件設(shè)計思路圖5.10(見書96頁)說明了使用面向數(shù)據(jù)流方法逐步設(shè)計的過程。應(yīng)該注意,任何設(shè)計過程都不是機械地一成不變的,設(shè)計首先需要人的判斷力和創(chuàng)造精神,這往往會凌駕于方法的規(guī)則之上。3.設(shè)計過程精化數(shù)據(jù)流圖區(qū)分事務(wù)中心和數(shù)據(jù)接收路徑映射成變換結(jié)構(gòu)流類型區(qū)分輸入和輸出分支映射成事務(wù)結(jié)構(gòu)用啟發(fā)式設(shè)計規(guī)則精化軟件結(jié)構(gòu)導(dǎo)出接口描述和全程數(shù)據(jù)結(jié)構(gòu)復(fù)查詳細設(shè)計“事務(wù)”“變換”事務(wù)分析變換分析軟件設(shè)計思路5.5.2變換分析變換分析是一系列設(shè)計步驟的總稱,經(jīng)過這些步驟把具有變換流特點的數(shù)據(jù)流圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu)。映射DFD(問題結(jié)構(gòu))軟件系統(tǒng)的結(jié)構(gòu)(程序結(jié)構(gòu))軟件設(shè)計思路變換流映射軟件設(shè)計思路步驟:(1)區(qū)分傳入、變換中心、傳出部分,在DFD上標(biāo)明分界線軟件設(shè)計思路(2)第一級分解(建立初始SC框架)設(shè)計頂層和第一層模塊軟件設(shè)計思路(3)第二級分解(分解SC各分支)自頂向下分解,設(shè)計出每個分支的中、下層模塊軟件設(shè)計思路軟件設(shè)計思路MCMTMAMEc,ec,eu,wu,wCBAEDabdecQPRepc,prru,wWUVwuv軟件設(shè)計思路假設(shè)的儀表板將完成下述功能:(1)通過模數(shù)轉(zhuǎn)換實現(xiàn)傳感器和微處理機接口;(2)在發(fā)光二極管面板上顯示數(shù)據(jù);(3)指示每小時英里數(shù)(mph),行駛的里程,每加侖油行駛的英里數(shù)(mpg)等等;(4)指示加速或減速;(5)超速警告:如果車速超過55英里/小時,則發(fā)出超速警告鈴聲。在軟件需求分析階段應(yīng)該對上述每條要求以及系統(tǒng)的其他特點進行全面的分析評價,建立起必要的文檔資料,特別是數(shù)據(jù)流圖。1.例子軟件設(shè)計思路軟件設(shè)計思路第1步復(fù)查基本系統(tǒng)模型。復(fù)查的目的是確保系統(tǒng)的輸入數(shù)據(jù)和輸出數(shù)據(jù)符合實際。第2步復(fù)查并精化數(shù)據(jù)流圖。應(yīng)該對需求分析階段得出的數(shù)據(jù)流圖認真復(fù)查,并且在必要時進行精化。不僅要確保數(shù)據(jù)流圖給出了目標(biāo)系統(tǒng)的正確的邏輯模型,而且應(yīng)該使數(shù)據(jù)流圖中每個處理都代表一個規(guī)模適中相對獨立的子功能。第3步確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性一般地說,一個系統(tǒng)中的所有信息流都可以認為是變換流,但是,當(dāng)遇到有明顯事務(wù)特性的信息流時,建議采用事務(wù)分析方法進行設(shè)計。2.設(shè)計步驟軟件設(shè)計思路輸入流和輸出流的邊界和對它們的解釋有關(guān),也就是說,不同設(shè)計人員可能會在流內(nèi)選取稍微不同的點作為邊界的位置。當(dāng)然在確定邊界時應(yīng)該仔細認真,但是把邊界沿著數(shù)據(jù)流通路移動一個處理框的距離,通常對最后的軟件結(jié)構(gòu)只有很小的影響。第4步確定輸入流和輸出流的邊界,從而孤立出變換中心圖5.12具有邊界的數(shù)據(jù)流圖軟件設(shè)計思路圖5.13說明了第一級分解的方法。位于軟件結(jié)構(gòu)最頂層的控制模塊Cm協(xié)調(diào)下述從屬的控制功能:輸入信息處理控制模塊Ca,協(xié)調(diào)對所有輸入數(shù)據(jù)的接收;變換中心控制模塊Ct,管理對內(nèi)部形式的數(shù)據(jù)的所有操作;第5步完成“第一級分解”圖5.13第一級分解的方法軟件設(shè)計思路圖5.14數(shù)字儀表板系統(tǒng)的第一級分解軟件設(shè)計思路所謂第二級分解就是把數(shù)據(jù)流圖中的每個處理映射成軟件結(jié)構(gòu)中一個適當(dāng)?shù)哪K。完成第二級分解的方法是,從變換中心的邊界開始沿著輸入通路向外移動,把輸入通路中每個處理映射成軟件結(jié)構(gòu)中Ca控制下的一個低層模塊;然后沿輸出通路向外移動,把輸出通路中每個處理映射成直接或間接受模塊Ce控制的一個低層模塊;最后把變換中心內(nèi)的每個處理映射成受Ct控制的一個模塊。圖5.15表示進行第二級分解的普遍途徑。第6步完成“第二級分解”。軟件設(shè)計思路圖5.15第二級分解的方法軟件設(shè)計思路圖5.17未經(jīng)精化的變換結(jié)構(gòu)圖5.18未經(jīng)精化的輸出結(jié)構(gòu)圖5.16未經(jīng)精化的輸入結(jié)構(gòu)軟件設(shè)計思路第7步使用設(shè)計度量和啟發(fā)式規(guī)則對第一次分割得到的軟件結(jié)構(gòu)進一步精化。圖5.19精化后的數(shù)字儀表板系統(tǒng)的軟件結(jié)構(gòu)輸入結(jié)構(gòu)中的模塊“轉(zhuǎn)換成rpm”和“收集sps”可以合并;模塊“確定加速/減速”可以放在模塊“計算mph”下面,以減少耦合;軟件設(shè)計思路5.5.3事務(wù)分析雖然在任何情況下都可以使用變換分析方法設(shè)計軟件結(jié)構(gòu),但是在數(shù)據(jù)流具有明顯的事務(wù)特點時,也就是有一個明顯的“發(fā)射中心”(事務(wù)中心)時,還是以采用事務(wù)分析方法為宜。事務(wù)分析的設(shè)計步驟和變換分析的設(shè)計步驟大部分相同或類似,主要差別僅在于由數(shù)據(jù)流圖到軟件結(jié)構(gòu)的映射方法不同。由事務(wù)流映射成的軟件結(jié)構(gòu)包括一個接收分支和一個發(fā)送分支。映射出接收分支結(jié)構(gòu)的方法和變換分析映射出輸入結(jié)構(gòu)的方法很相像,即從事務(wù)中心的邊界開始,把沿著接收流通路的處理映射成模塊。發(fā)送分支的結(jié)構(gòu)包含一個調(diào)度模塊,它控制下層的所有活動模塊;然后把數(shù)據(jù)流圖中的每個活動流通路映射成與它的流特征相對應(yīng)的結(jié)構(gòu)。圖5.20說明了上述映射過程。軟件設(shè)計思路軟件設(shè)計思路軟件設(shè)計思路事務(wù)流映射方法:軟件設(shè)計思路一般說來,如果數(shù)據(jù)流不具有顯著的事務(wù)特點,最好使用變換分析;反之,如果具有明顯的事務(wù)中心,則應(yīng)該采用事務(wù)分析技術(shù)。但是,機械地遵循變換分析或事務(wù)分析的映射規(guī)則,很可能會得到一些不必要的控制模塊,如果它們確實用處不大,那么可以而且應(yīng)該把它們合并。反之,如果一個控制模塊功能過分復(fù)雜,則應(yīng)該分解為兩個或多個控制模塊,或者增加中間層次的控制模塊。軟件設(shè)計思路混合流設(shè)計對于一個大系統(tǒng),常常把變換分析和事務(wù)分析應(yīng)用到同一個數(shù)據(jù)流圖的不同部分,由此得到的子結(jié)構(gòu)形成“構(gòu)件”,可以利用它們構(gòu)造完整的軟件結(jié)構(gòu)。軟件設(shè)計思路軟件設(shè)計思路5.5.4設(shè)計優(yōu)化考慮設(shè)計優(yōu)化問題時應(yīng)該記住,“一個不能工作的‘最佳設(shè)計’的價值是值得懷疑的”。軟件設(shè)計人員應(yīng)該致力于開發(fā)能夠滿足所有功能和性能要求,而且按照設(shè)計原理和啟發(fā)式設(shè)計規(guī)則衡量是值得接收的軟件。應(yīng)該在設(shè)計的早期階段盡量對軟件結(jié)構(gòu)進行精化??梢詫?dǎo)出不同的軟件結(jié)構(gòu),然后對它們進行評價和比較,力求得到“最好”的結(jié)果。這種優(yōu)化的可能,是把軟件結(jié)構(gòu)設(shè)計和過程設(shè)計分開的真正優(yōu)點之一。軟件設(shè)計思路注意,結(jié)構(gòu)簡單通常既表示設(shè)計風(fēng)格優(yōu)雅,又表明效率高。設(shè)計優(yōu)化應(yīng)該力求做到在有效的模塊化的前提下使用最少量的模塊,以及在能夠滿足信息要求的前提下使用最簡單的數(shù)據(jù)結(jié)構(gòu)。對于時間是決定性因素的應(yīng)用場合,可能有必要在詳細設(shè)計階段,也可能在編寫程序的過程中進行優(yōu)化。軟件開發(fā)人員應(yīng)該認識到,程序中相對說比較小的部分(典型地,10%~20%),通常占用全部處理時間的大部分(50%~80%)。軟件設(shè)計思路用下述方法對時間起決定性作用的軟件進行優(yōu)化是合理的:(1)在不考慮時間因素的前提下開發(fā)并精化軟件結(jié)構(gòu);(2)在詳細設(shè)計階段選出最耗費時間的那些模塊,仔細地設(shè)計它們的處理過程(算法),以求提高效率;(3)使用高級程序設(shè)計語言編寫程序;(4)在軟件中孤立出那些大量占用處理機資源的模塊;(5)必要時重新設(shè)計或用依賴于機器的語言重寫上述大量占用資源的模塊的代碼,以求提高效率。上述優(yōu)化方法遵守了一句格言:“先使它能工作,然后再使它快起來。”軟件設(shè)計思路(1)計算標(biāo)準(zhǔn)分:根據(jù)考生原始分計算,得到標(biāo)準(zhǔn)分,存入考生分?jǐn)?shù)文件。(2)計算錄取線分:根據(jù)標(biāo)準(zhǔn)分、招生計劃文件中的招生人數(shù),計算錄取線,存人錄取線文件。試根據(jù)要求畫出該系統(tǒng)的數(shù)據(jù)流程圖,并將其轉(zhuǎn)換為軟件結(jié)構(gòu)圖。[案例]高校錄取統(tǒng)分子系統(tǒng)有如下功能:軟件設(shè)計思路源點/終點
處理
計算標(biāo)準(zhǔn)分計算錄取線分?jǐn)?shù)據(jù)流
數(shù)據(jù)存儲
原始分標(biāo)準(zhǔn)分錄取線分招生人數(shù)考生分?jǐn)?shù)文件招生計劃文件錄取線文件軟件設(shè)計思路計算標(biāo)準(zhǔn)分計算錄取線分標(biāo)準(zhǔn)分錄取線分招生人數(shù)原始分考生分?jǐn)?shù)文件招生計劃文件錄取線文件標(biāo)準(zhǔn)分?jǐn)?shù)據(jù)流圖:軟件設(shè)計思路系統(tǒng)的軟件結(jié)構(gòu)圖:①原始分②標(biāo)準(zhǔn)分③招生人數(shù)④錄取線分統(tǒng)分子系統(tǒng)處理標(biāo)準(zhǔn)分取得原始分計算標(biāo)準(zhǔn)分存取標(biāo)準(zhǔn)分計算錄取線分取得招生人數(shù)存錄取線分①②②②②①③②③④軟件設(shè)計思路計算標(biāo)準(zhǔn)分計算錄取線分招生計劃文件考生分?jǐn)?shù)文件錄取線文件標(biāo)準(zhǔn)分文件原始分標(biāo)準(zhǔn)分標(biāo)準(zhǔn)分標(biāo)準(zhǔn)分招生數(shù)錄取線分系統(tǒng)的數(shù)據(jù)流圖:軟件設(shè)計思路統(tǒng)分子系統(tǒng)取得標(biāo)準(zhǔn)分取得招生數(shù)計算錄取分?jǐn)?shù)線取得原始分計算標(biāo)準(zhǔn)分登錄考生分?jǐn)?shù)登錄錄取線分①②②②③③④②①原始分②標(biāo)準(zhǔn)分③招生數(shù)④錄取線分統(tǒng)分子系統(tǒng)取得標(biāo)準(zhǔn)分取得招生數(shù)計算錄取分?jǐn)?shù)線取得原始分計算標(biāo)準(zhǔn)分登錄考生分?jǐn)?shù)登錄錄取線分①②②②③③④②①原始分②標(biāo)準(zhǔn)分③招生數(shù)④錄取線分①系統(tǒng)的軟件結(jié)構(gòu)圖:軟件設(shè)計思路5.6小結(jié)總體設(shè)計階段的基本目的是用比較抽象概括的方式確定系統(tǒng)如何完成預(yù)定的任務(wù),也就是說,應(yīng)該確定系統(tǒng)的物理配置方案,并且進而確定組成系統(tǒng)的每個程序的結(jié)構(gòu)。因此,總體設(shè)計階段主要由兩個小階段組成。首先需要進行系統(tǒng)設(shè)計,從數(shù)據(jù)流圖出發(fā)設(shè)想完成系統(tǒng)功能的若干種合理的物理方案,分析員應(yīng)該仔細分析比較這些方案,并且和用戶共同選定一個最佳方案。然后進行軟件結(jié)構(gòu)設(shè)計,確定軟件由哪些模塊組成以及這些模塊之間的動態(tài)調(diào)用關(guān)系。層次圖和結(jié)構(gòu)圖是
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度國有企業(yè)股權(quán)投資風(fēng)險評估與咨詢服務(wù)協(xié)議3篇
- 二零二五年度建筑垃圾外運與資源循環(huán)利用協(xié)議3篇
- 湖南省張家界市桑植縣2024-2025學(xué)年九年級上學(xué)期歷史期末試卷(含答案)
- 貴州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院《侵權(quán)法律實務(wù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年證券居間商代理協(xié)議3篇
- 2024跨區(qū)域銷售團隊派遣協(xié)議
- 2024年甲乙雙方基于智能家居產(chǎn)品研發(fā)的的技術(shù)合作與許可協(xié)議
- 2024年設(shè)備購銷合同:設(shè)備供應(yīng)商與終端用戶之間的交易范本
- 2024年版商業(yè)合伙權(quán)益分配協(xié)議版B版
- 二建建筑工程實務(wù)-二建《建筑工程管理與實務(wù)》全真模擬卷12255
- 2024年股東股權(quán)繼承轉(zhuǎn)讓協(xié)議3篇
- 2025年中央歌劇院畢業(yè)生公開招聘11人歷年高頻重點提升(共500題)附帶答案詳解
- 北京市高校課件 開天辟地的大事變 中國近代史綱要 教學(xué)課件
- 監(jiān)事會年度工作計劃
- 2024中國近海生態(tài)分區(qū)
- 山東省濟南市2023-2024學(xué)年高一上學(xué)期1月期末考試化學(xué)試題(解析版)
- 北師大版五年級數(shù)學(xué)下冊第3單元第1課時分?jǐn)?shù)乘法(一)課件
- 2024年認證行業(yè)法律法規(guī)及認證基礎(chǔ)知識
- SCA自動涂膠系統(tǒng)培訓(xùn)講義
- LEC法取值標(biāo)準(zhǔn)對照表
- 華中數(shù)控車床編程及操作
評論
0/150
提交評論