結(jié)構(gòu)化總體設(shè)計_第1頁
結(jié)構(gòu)化總體設(shè)計_第2頁
結(jié)構(gòu)化總體設(shè)計_第3頁
結(jié)構(gòu)化總體設(shè)計_第4頁
結(jié)構(gòu)化總體設(shè)計_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、結(jié)構(gòu)化總體設(shè)計第1頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院2第7章 結(jié)構(gòu)化總體設(shè)計 本章的主要目標是運用結(jié)構(gòu)化方法,介紹軟件總體設(shè)計的相關(guān)工作。讀完本章,你將了解以下基本內(nèi)容:軟件設(shè)計的基本原理。軟件設(shè)計的啟發(fā)式規(guī)則。軟件結(jié)構(gòu)的描述工具。面向數(shù)據(jù)流的結(jié)構(gòu)化設(shè)計過程。第2頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院3Contents7.1 軟件設(shè)計的基本概念和原理7.2 軟件結(jié)構(gòu)的描繪工具7.3 面向數(shù)據(jù)流的設(shè)計過程7.4 啟發(fā)式設(shè)計7.5 設(shè)計優(yōu)化原則第3頁,共59頁,2022年,5月20日,11點49分,

2、星期三*曲阜師范大學計算機科學學院47.1 軟件設(shè)計的基本概念和原理在完成了需求分析之后,項目開發(fā)人員對系統(tǒng)的需求有了完整準確的理解,即知道了“做什么”,接下來就是回答“怎么做”。 第一個階段為總體設(shè)計階段,期間項目開發(fā)人員確定軟件系統(tǒng)的基本框架;第二階段為詳細設(shè)計階段,期間確定軟件系統(tǒng)的內(nèi)部實現(xiàn)細節(jié)。 第4頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院57.1.1 抽象 抽象是人類在認識復雜世界時所使用的最有力的工具。抽象是從眾多的事物中抽取出共同的、本質(zhì)性的特征,而舍棄其非本質(zhì)的特征。例如蘋果、香蕉、梨、葡萄、桃子等,它們共同的特征就是水果。7.1.

3、2 信息隱蔽 信息隱蔽是指每個模塊的內(nèi)部實現(xiàn)細節(jié)對外部來說是看不見的,即模塊內(nèi)部的數(shù)據(jù)、代碼等信息不允許其他不需要這些信息的模塊使用。這樣主要有兩個好處,一是利于模塊之間相互有效隔離,使每個模塊更加具有獨立性,二是可以使系統(tǒng)具有更好的健壯性,以及更好的可維護性 。第5頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院67.1.3 模塊化設(shè)計 人們不斷創(chuàng)新的目的在于更加高效。從軟件開發(fā)的角度來看,人們希望開發(fā)維護同樣一個系統(tǒng)所使用的時間最短,所耗費的成本最低。軟件系統(tǒng)模塊化就是出于這樣的目的,提出了一種提高開發(fā)效率的思想。 在結(jié)構(gòu)化分析方法中,模塊的規(guī)??纱罂?/p>

4、小,是一個功能單位。模塊可以是軟件系統(tǒng)中的一個子系統(tǒng),也可以是子系統(tǒng)內(nèi)一個功能程序塊(由邊界元素限定的數(shù)據(jù)說明、可執(zhí)行的語句等的序列,而且有一個總體標識符來代表它。 第6頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院7 模塊化可以簡化軟件問題,一個系統(tǒng)模塊越多,模塊與模塊之間的通信或接口就越多,希望依靠模塊化將系統(tǒng)不斷被分解而使軟件成本不斷降低的愿望可能是不切實際的。隨著系統(tǒng)的分解,系統(tǒng)中模塊數(shù)目將會增加,模塊接口也會增加,軟件構(gòu)造會由此變得復雜起來,模塊連接的難度也會由此加大。 第7頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大

5、學計算機科學學院8 那么如何確定一個軟件系統(tǒng)的模塊數(shù)目? 分別從模塊可分解性、可組裝性、可理解性、連續(xù)性和保護性五個方面來理解:如果一種設(shè)計方法提供了把問題分解為子問題的系統(tǒng)化機制,它就能降低整個問題的復雜性,從而可以實現(xiàn)一種有效的模塊化解決方案。如果一種設(shè)計方法能把現(xiàn)有的(可重用的)設(shè)計構(gòu)件組裝成新系統(tǒng),它就能提供一種并非一切從頭開始的模塊化解決方案。如果可以把一個模塊作為一種獨立單元(無段參考其他模塊)來理解,那么,這樣的模塊是易于構(gòu)造和易于修改的。如果對系統(tǒng)需求的微小修改只會針對個別模塊,而不是對整個系統(tǒng)的修改,則修改所引起的副作用將最小。如果在一個模塊內(nèi)出現(xiàn)異常情況時,它的影響僅局限在

6、該模塊內(nèi)部,則由錯誤引起的副作用最小。第8頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院97.1.4 模塊獨立 模塊獨立是模塊化、抽象、信息隱蔽的直接結(jié)果,是指系統(tǒng)中的模塊盡可能地只涉及自己特定的子功能,并且模塊接口簡單,與其他模塊沒有過多的通信。如果系統(tǒng)中每個模塊都具有很好的獨立性,系統(tǒng)實現(xiàn)起來就更加容易。因此,模塊獨立性是衡量軟件中模塊質(zhì)量最重要的指標。 一般來說,采用耦合和內(nèi)聚這兩個定性的技術(shù)指標來對這一模塊的獨立性進行衡量。內(nèi)聚性可以衡量各模塊內(nèi)部功能的結(jié)合強度,模塊內(nèi)部各元素之間結(jié)合得越緊密,則它的內(nèi)聚性就越高;耦合性顯示了模塊與模塊之間相互的

7、依賴關(guān)系,模塊與模塊之間聯(lián)系越緊密,耦合性就越高。 第9頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院107.1.5 耦合 耦合度量了各模塊之間相互關(guān)聯(lián)的程度,各個模塊之間接口的復雜程度、接口數(shù)據(jù)對模塊內(nèi)部運算的影響程度、使用模塊的方式都決定了耦合的強弱。以下是耦合的幾種主要形式:非直接耦合。兩個模塊之間的聯(lián)系,僅限于被共同模塊控制和調(diào)用,它們之間沒有直接的聯(lián)系,那么這種耦合就成為非直接耦合,因為模塊和模塊之間沒有數(shù)據(jù)通信,所以它的耦合形式是最弱的。數(shù)據(jù)耦合。模塊與模塊之間發(fā)生聯(lián)系,彼此之間通過接口參數(shù)實現(xiàn)通信,傳遞的接口參數(shù)是用于計算的,它們不會影響內(nèi)

8、部程序執(zhí)行的路徑。我們提倡用數(shù)據(jù)耦合,它是一種較弱的耦合方式。第10頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院11控制耦合。如果在數(shù)據(jù)耦合的基礎(chǔ)上,模塊間接口參數(shù)不僅傳遞數(shù)據(jù),同時還傳遞標志、名字、開關(guān)等控制信息,從而影響模塊的內(nèi)部程序執(zhí)行路徑。顯而易見,控制耦合比數(shù)據(jù)耦合的耦合性要強一些,它屬于中等程度的耦合。如果需要通過接口傳遞模塊內(nèi)多項功能的選擇時,就需要用到控制耦合。公共耦合。在軟件系統(tǒng)中,可能有獨立于模塊而存在的數(shù)據(jù)文件、公共變量和公共數(shù)據(jù)環(huán)境。模塊之間通過訪問公共數(shù)據(jù)環(huán)境從而實現(xiàn)通信。內(nèi)容耦合。內(nèi)容耦合是一種耦合性很強的耦合,這種耦合嚴重

9、影響了模塊的獨立性。它的表現(xiàn)形式主要有以下幾種: i. 模塊直接訪問另一模塊的內(nèi)部數(shù)據(jù); ii. 模塊不通過正常的入口轉(zhuǎn)到另一模塊內(nèi)部; iii. 模塊之間存在一部分代碼重疊; iv. 某個模塊有多個入口。 內(nèi)容耦合致使模塊的變動變得非常困難,程序維護和升級也極其困難,這要求在設(shè)計軟件結(jié)構(gòu)時,不允許出現(xiàn)內(nèi)容耦合。第11頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院127.1.6 內(nèi)聚 內(nèi)聚性是信息隱蔽概念的自然擴展,它度量了模塊內(nèi)部各個元素彼此結(jié)合的緊密程度,元素之間聯(lián)系越緊密,其內(nèi)聚性越強。 把模塊內(nèi)聚分為以下幾種主要類型: 功能內(nèi)聚、信息內(nèi)聚、通信內(nèi)

10、聚、過程內(nèi)聚、時間內(nèi)聚、邏輯內(nèi)聚和偶然內(nèi)聚。 第12頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院13偶然內(nèi)聚。偶然內(nèi)聚即模塊內(nèi)部各元素之間的聯(lián)系很少或者沒有。 邏輯內(nèi)聚。邏輯內(nèi)聚將幾種相關(guān)的功能組合在一起形成一個模塊。 時間內(nèi)聚。時間內(nèi)聚是指模塊內(nèi)部各功能之間的執(zhí)行與時間相關(guān)。 過程內(nèi)聚。如果模塊內(nèi)各元素的執(zhí)行是按照一定次序來進行的,即各個元素的處理是相關(guān)的,則稱其為過程內(nèi)聚。 通信內(nèi)聚。一個模塊內(nèi)部可以有幾個功能部分,如果這些功能部分都使用相同的數(shù)據(jù)輸入,或者產(chǎn)生相同的數(shù)據(jù)輸出,這不是通信內(nèi)聚。 順序內(nèi)聚。如果模塊內(nèi)某一功能元素的輸出作為另一個功能元

11、素的輸入,模塊內(nèi)各功能元素順序聯(lián)結(jié),它們之間關(guān)系緊密,那么稱這個模塊為順序內(nèi)聚模塊。功能內(nèi)聚。如果為了實現(xiàn)模塊的具體功能,模塊內(nèi)各個元素都是必需的,這些元素要協(xié)同工作,它們無法單獨執(zhí)行,稱這樣的模塊為功能內(nèi)聚模塊。功能內(nèi)聚模塊的內(nèi)聚程度很高,在進行軟件設(shè)計時,應(yīng)盡可能地實現(xiàn)功能內(nèi)聚。第13頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院147.2 軟件結(jié)構(gòu)的描繪工具7.2.1 層次圖和HIPO圖 層次圖是用來描繪軟件的層次結(jié)構(gòu)。 層次圖很適合在自頂向下設(shè)計軟件的過程中使用。 第14頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算

12、機科學學院15 HIPO圖是美國IBM公司發(fā)明的“層次圖加輸入/處理/輸出圖”的英文縮寫。為了能使HIPO圖具有可追蹤性,在H圖(層次圖)里除了最底層的方框之外,每個方框都加了編號。編號規(guī)則與數(shù)據(jù)流圖的級聯(lián)編號方式相同,圖7.2加了編號后演變?yōu)閳D7.3。 第15頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院167.2.2 結(jié)構(gòu)圖 Yourdon提出的結(jié)構(gòu)圖是進行軟件結(jié)構(gòu)設(shè)計的另一個有利工具。結(jié)構(gòu)圖和層次圖類似,也是描繪軟件結(jié)構(gòu)的圖形工具,圖中一個方框代表一個模塊,框內(nèi)注明模塊的名字或主要功能;方框之間的箭頭(或直線)表示模塊的調(diào)用關(guān)系。 在結(jié)構(gòu)圖中通常還

13、用帶注釋的箭頭表示模塊調(diào)用過程中來回傳遞的信息。尾部是空心圓表示傳遞的是數(shù)據(jù),實心圓表示傳遞的是控制信息。 第16頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院17 圖7.4是結(jié)構(gòu)圖的一個例子。 第17頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院18圖7.5表示當模塊M中某個判定為真時調(diào)用模塊A,為假時調(diào)用模塊B。圖7.6表示模塊M循環(huán)調(diào)用模塊A、B和C。 注意,層次圖和結(jié)構(gòu)圖并不嚴格表示模塊的調(diào)用次序。事實上,層次圖和結(jié)構(gòu)圖只表明一個模塊調(diào)用那些模塊,至于模塊內(nèi)還有沒有其他成分則完全沒有表示。 通常用層次圖作為

14、描繪軟件結(jié)構(gòu)的文檔。結(jié)構(gòu)圖作為文檔并不很合適,因為圖上包含的信息太多有時反而降低了清晰程度。 第18頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院19第19頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院207.3 面向數(shù)據(jù)流的設(shè)計過程 面向數(shù)據(jù)流的設(shè)計過程,也就是結(jié)構(gòu)化設(shè)計方法(簡稱為SD),是根據(jù)需求階段對數(shù)據(jù)流的分析(一般用數(shù)據(jù)流圖和數(shù)據(jù)字典表示)設(shè)計軟件結(jié)構(gòu)。 第20頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院217. 3.1 基本概念和設(shè)計過程 SD方法能方便地將數(shù)

15、據(jù)流圖轉(zhuǎn)換為軟件結(jié)構(gòu),需要5個步驟:確定信息流的類型;劃清流程邊界;將數(shù)據(jù)流圖映射為軟件結(jié)構(gòu);提取層次控制結(jié)構(gòu);通過設(shè)計復審和使用啟發(fā)式方法優(yōu)化所得到的結(jié)構(gòu)。第21頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院22 第3步所用映射方法涉及到信息流的類型,信息流分為變換流和事務(wù)流兩種類型:變換流 在基本系統(tǒng)模型(即頂層數(shù)據(jù)流圖)中,信息通常以“外部世界”所具有的形式進入系統(tǒng),經(jīng)過處理后又以這種形式離開系統(tǒng)。 輸入信息流沿傳入路徑進入系統(tǒng),同時由外部形式變換為內(nèi)部形式,經(jīng)系統(tǒng)變換中心加工、處理,作為輸出信息流又沿傳出路徑離開系統(tǒng),并還原為外部形式,如果數(shù)據(jù)流

16、圖所描述的信息流具有上述特征,則稱為變換流。 第22頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院23事務(wù)流 由于基本系統(tǒng)模型一般均可呈現(xiàn)為變換流,故任意系統(tǒng)中的信息均可用變換流刻畫。 第23頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院24 值得注意的是,在大型系統(tǒng)的DFD中,變換流與事務(wù)流往往交織在一起。比如在基于事務(wù)流的系統(tǒng)中,當信息沿動作路徑流動時可能呈現(xiàn)變換流的特征。 第24頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院257.3.2 變換分析 變換分析由一系列步驟

17、組成,經(jīng)過這些步驟就能把具有變換流特點的數(shù)據(jù)流圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu)。下面以“家庭保安系統(tǒng)”的傳感器監(jiān)測子系統(tǒng)為例說明變換分析的各個步驟。 第25頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院26第26頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院277.3.2 變換分析 圖7.10和圖7.11分別為“家庭保安系統(tǒng)”的頂級和第一級數(shù)據(jù)流圖。 第27頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院28第28頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜

18、師范大學計算機科學學院29步驟一:復審基本系統(tǒng)模型。步驟二:復審和精化軟件數(shù)據(jù)流圖。這一步主要是對軟件需求規(guī)格說明書中的分析模型進行精化,直至獲得足夠詳細的DFD。 步驟三:確定DFD的特性,判定它為變換流還是事務(wù)流。設(shè)計人員首先要判定DFD中占主導地位的信息流,確定其特性,然后孤立具有變換特性或事務(wù)特性的支流,這些支流將用于精化由主導數(shù)據(jù)流推出的程序結(jié)構(gòu)。 數(shù)據(jù)沿1個傳入路徑進來,沿3個傳出路徑離開,無明顯的事務(wù)中心,因此,該信息流是變換流。 第29頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院30步驟四:劃定輸入流和輸出流的邊界,孤立變換中心。輸入、

19、輸出流邊界的劃分可能因人而異,不同的設(shè)計人員可能把邊界沿著數(shù)據(jù)通道向前推進或后退一個處理框,不過這對最后的軟件結(jié)構(gòu)影響不大。 第30頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院31步驟五:執(zhí)行“一級分解”(First Level Factoring)。一級分解的目標是導出具有3個層次的程序結(jié)構(gòu),頂層為主控模塊;底層模塊執(zhí)行輸入、計算和輸出功能;中層模塊控制、協(xié)調(diào)底層的工作。程序結(jié)構(gòu)可用Yourdon結(jié)構(gòu)圖(SC圖)表示。 圖7.14所示的結(jié)構(gòu)圖對應(yīng)于一級分解的上兩層模塊,即主控模塊和下面幾個中層控制模塊: 輸入流控制模塊(Ca),接收所有輸入數(shù)據(jù);變換

20、流控制模塊(Ct),對內(nèi)部形式數(shù)據(jù)進行加工、處理,也稱為中心變換。 輸出流控制模塊(Ce),產(chǎn)生輸出數(shù)據(jù)。主控模塊(Cm)代表整個系統(tǒng)。第31頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院32 “傳感器監(jiān)測子系統(tǒng)”一級分解如圖7.15所示,其中控制模塊的名字概括了所有下屬模塊的功能。 第32頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院33步驟六:執(zhí)行“二級分解”。二級分解過程是從中心變換的邊界開始沿輸入、輸出通道向外移動,把遇到的每個處理框映射為程序結(jié)構(gòu)中的一個模塊 。第33頁,共59頁,2022年,5月20日,

21、11點49分,星期三*曲阜師范大學計算機科學學院34圖7.13的輸出流部分導出的程序結(jié)構(gòu)如圖7.17所示: 第34頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院35第35頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院36第36頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院37 有必要為每個模塊寫一個簡要的處理說明,應(yīng)包括:進出模塊的信息(接口描述);模塊的局部信息;處理過程陳述,包括主要的判斷點和任務(wù);對有關(guān)限制和一些專門特性的簡要說明(例如文件I/O、獨立于硬件的特性、特殊

22、的實時要求等)。第37頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院38步驟七:采用啟發(fā)式設(shè)計策略,精化所得到的結(jié)構(gòu)雛形,改良軟件質(zhì)量,以“模塊獨立”為指導思想,對模塊或合或拆,旨在追求高內(nèi)聚、低耦合、易實現(xiàn)、易測試、易維護的軟件結(jié)構(gòu)。 “傳感器監(jiān)測子系統(tǒng)”的結(jié)構(gòu)雛形可修改如下:因只存在惟一一條傳入路徑,故輸入控制模塊可刪除;由變換中心產(chǎn)生的整個子結(jié)構(gòu)可歸并為“建立警報條件”一個模塊(選擇電話號碼的功能納入其中),變換控制模塊不再需要;(3)“格式化顯示”和“生成顯示”兩個模塊歸并為“產(chǎn)生顯示”一個模塊。第38頁,共59頁,2022年,5月20日,11點

23、49分,星期三*曲阜師范大學計算機科學學院39 “傳感器監(jiān)測子系統(tǒng)”精化后的程序結(jié)構(gòu)如圖7.19 :第39頁,共59頁,2022年,5月20日,11點49分,星期三40舉例:人事信息更新第40頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院41第41頁,共59頁,2022年,5月20日,11點49分,星期三7.3.3 事務(wù)分析當數(shù)據(jù)流具有明顯的事務(wù)特征時,如果能找到一個事務(wù)(亦稱觸發(fā)數(shù)據(jù)項)和一個事務(wù)中心,采用事務(wù)分析法更為適宜。*曲阜師范大學計算機科學學院42第42頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院43

24、事務(wù)流的映射方法第43頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院44第44頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院457.3.3 事務(wù)分析當數(shù)據(jù)流具有明顯的事務(wù)特征時,如果能找到一個事務(wù)(亦稱觸發(fā)數(shù)據(jù)項)和一個事務(wù)中心,采用事務(wù)分析法更為適宜。在“家庭保安系統(tǒng)”中“用戶交互子系統(tǒng)”是一個事務(wù)分析過程。 第45頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院46 事務(wù)分析法的步驟與變換分析方法基本相似,主要差別在于從數(shù)據(jù)流圖到程序結(jié)構(gòu)的映射。事務(wù)分析法可概括為7個步驟:

25、步驟一:復審基本系統(tǒng)模型。步驟二:復審并精化軟件數(shù)據(jù)流圖。步驟三:確定數(shù)據(jù)流圖的特征。 顯然,前三步與變換分析法相同。第46頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院47步驟四:找出事務(wù)中心,確定由事務(wù)中心發(fā)出的每一動作路徑的數(shù)據(jù)流特征。數(shù)條路徑的公共源頭即為事務(wù)中心,事務(wù)中心定位為“啟動命令處理”框。事務(wù)中心一經(jīng)確定,即可劃定接受路徑與所有動作路徑的界限 。第47頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院48步驟五:把數(shù)據(jù)流圖映射為事務(wù)處理型的程序結(jié)構(gòu)。事務(wù)處理型的程序結(jié)構(gòu)由“輸入”和“散轉(zhuǎn)”兩部分組成

26、。第48頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院49 “用戶交互子系統(tǒng)”一級分解的結(jié)構(gòu)如圖7.23所示 第49頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院50步驟六:分解并精化事務(wù)結(jié)構(gòu)以及每條動作路徑所對應(yīng)的結(jié)構(gòu)。 步驟七:使用啟發(fā)式設(shè)計策略,精化所得程序結(jié)構(gòu)雛形,改良軟件質(zhì)量。這一步驟與變換分析法相同。第50頁,共59頁,2022年,5月20日,11點49分,星期三混合流*曲阜師范大學計算機科學學院51第51頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院527.4

27、啟發(fā)式設(shè)計改造程序結(jié)構(gòu),降低耦合度,提高內(nèi)聚度。 改造程序結(jié)構(gòu),減少扇出,在增加程序深度的前提下追求高扇入 。第52頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院53深度表示軟件結(jié)構(gòu)中控制的層數(shù),它往往能粗略地標志一個系統(tǒng)的大小和復雜程度。 寬度是軟件結(jié)構(gòu)內(nèi)同一層次上的模塊總數(shù)的最大值。 扇出是一個模塊直接控制(調(diào)用)的模塊數(shù)目,扇出過大意味著模塊過分復雜,需要控制和協(xié)調(diào)過多的下級模塊;扇出過小(例如總是1)也不好。扇出太大一般是因為缺乏中間層次,應(yīng)該適當增加中間層次的控制模塊。 第53頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范

28、大學計算機科學學院54通過觀察大量軟件實例后發(fā)現(xiàn),設(shè)計良好的軟件結(jié)構(gòu)通常頂層扇出較高,中層扇出較低,底層又高扇入到公共的實用模塊中去。 第54頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院55改造程序結(jié)構(gòu),使任一模塊的作用域在其控制域之內(nèi)。 模塊的作用域定義為受該模塊內(nèi)一個判定影響的所有模塊的集合。模塊的控制域是這個模塊本身以及所有直接或間接從屬于它的模塊的集合 。第55頁,共59頁,2022年,5月20日,11點49分,星期三*曲阜師范大學計算機科學學院56改造程序結(jié)構(gòu),降低界面的復雜性和冗余程度,提高協(xié)調(diào)性。界面復雜是引起軟件錯誤的一個基本要素。 模塊功能應(yīng)該是可預(yù)言的,避免對模塊施加過多限制。改造程序結(jié)構(gòu),追求單入口單出口的模塊。為滿足設(shè)計或可移植性的要求,把某些軟件用包(Package)的形式封裝起來。 無論是采用變

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論