版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第4章 軟件結構設計,設計:應用各種技術和原理,對設備、過程或系統(tǒng)作出足夠詳細的定義,使之能夠在物理上得以實現(xiàn)。 軟件結構設計:是一個把軟件需求變換為軟件表示的過程,是對軟件的整體結構、程序結構、數(shù)據(jù)結構、文件結構、接口定義等的設計,是宏觀上的設計。,4.1 軟件結構設計概述,1,PPT學習交流,2,PPT學習交流,軟件設計與程序設計的區(qū)別:,程序設計就是編程序,這是大家熟悉的,很多人印象中的“做軟件”就是編程序, 因此可能有人會把程序設計和軟件設計等同起來。這是不對的,軟件設計是宏觀上的設計。而程序設計僅僅是軟件設計的實現(xiàn),所以做軟件決不簡單等同與編程序。,3,PPT學習交流,4.2 軟件結
2、構設計的目標、任務和過程,目標:綜合采用各種技術手段,將系統(tǒng)需求轉換為數(shù)據(jù)結構、模塊結構(或對象/類結構)的表達形式,并實現(xiàn)系統(tǒng)的性能、安全性、可靠性要求。取得最佳方案。最佳方案的標準:(1)開發(fā)費用省;(2)資源消耗低;(3)開發(fā)時間短;(4)生產(chǎn)效率高;(5)可靠性較高;(6)可維護性好。,結果:用模塊結構圖表達。,4,PPT學習交流,任務:,結構設計是一個自頂向下,逐步具體的綜合性的設計過程。主要內容:,(1)綜合分析系統(tǒng)的各種實現(xiàn)方案,提出最佳實現(xiàn)方案的建議。,(2)制定設計規(guī)范、標準及約定原則。,(3)軟件結構設計:采用某種軟件設計方法,按照模塊的構造原則,逐步、逐層地設計軟件的模塊
3、層次結構。,5,PPT學習交流,(4)數(shù)據(jù)結構以及接口的設計。,(5)系統(tǒng)性能設計。,(6)系統(tǒng)安全性能設計:系統(tǒng)的自保護設計;數(shù)據(jù)一致性設計;容錯設計。,(7)系統(tǒng)可靠性設計。,(8)設計文檔的編寫:結構設計說明書;用戶手冊;系統(tǒng)初步的測試計劃說明書。,(9)設計的審查和復審。,6,PPT學習交流,軟件結構設計過程:,1. 設想供選擇方案; 2.選擇合理的方案; 3.推薦最優(yōu)方案; 4.功能分解; 5.設計軟件結構; 6.設計數(shù)據(jù)庫; 7.制訂測試計劃; 8.書寫文檔; 9.審查和復審;,7,PPT學習交流,4.3 軟件設計中的基本概念和原理,1. 模塊化 所謂模塊,是指具有相對獨立性的,由
4、數(shù)據(jù)說明、執(zhí)行語句等程序對象構成的集合。程序中的每個模塊都需要單獨命名,通過名字可實現(xiàn)對指定模塊的訪問。在高級語言中,模塊具體表現(xiàn)為函數(shù)、子程序、過程等。一個模塊具有輸入/輸出(接口)、功能、內部數(shù)據(jù)和程序代碼四個特征。輸入/輸出用于實現(xiàn)模塊與其他模塊間的數(shù)據(jù)傳送,即向模塊傳入所需的原始數(shù)據(jù)及從模塊傳出得到的結果數(shù)據(jù)。功能指模塊所完成的工作。模塊的輸入/輸出和功能構成了模塊的外部特征。內部數(shù)據(jù)是指僅能在模塊內部使用的局部量。程序代碼用于描述實現(xiàn)模塊功能的具體方法和步驟。模塊的內部數(shù)據(jù)和程序代碼反映的是模塊的內部特征。,8,PPT學習交流,模塊化是指將整個程序劃分為若干個模塊,每個模塊用于實現(xiàn)一
5、個特定的功能。劃分模塊對于解決大型復雜的問題是非常必要的,可以大大降低解決問題的難度。為了說明這一點,我們可對問題復雜性、開發(fā)工作量和模塊數(shù)之間的關系進行以下推理。 首先,我們設C(x)為問題x所對應的復雜度函數(shù),E(x)為解決問題x所需要的工作量函數(shù)。對于兩個問題P1和P2,如果: C(P1) C(P2) 即問題P1的復雜度比P2高,則顯然有: E(P1) E(P2) 即解決問題P1比P2所需的工作量大。,9,PPT學習交流,在人們解決問題的過程中,發(fā)現(xiàn)存在有另一個有趣的規(guī)律: C(P1+P2) C(P1)+C(P2) 即解決由多個問題復合而成的大問題的復雜度大于單獨解決各個問題的復雜度之和
6、。也就是說,對于一個復雜問題,將其分解成多個小問題分別解決比較容易。由此我們可以推出: E(P1+P2) E(P1)+E(P2) 即將復雜問題分解成若干個小問題,各個擊破,所需要的工作量小于直接解決復雜問題所需的工作量。,10,PPT學習交流,根據(jù)上面的推理,我們可以得到這樣一個結論,模塊化可以降低解決問題的復雜度,從而降低軟件開發(fā)的工作量。雖然增加程序中的模塊數(shù)可以降低開發(fā)每個模塊的工作量,但同時卻增加了設計模塊接口的工作量。通過圖4.1所示的模塊數(shù)與軟件開發(fā)成本的關系圖中可以看出,當劃分的模塊數(shù)處于最小成本區(qū)時,開發(fā)軟件的總成本最低。 模塊化不但可以降低軟件開發(fā)的難度,而且可以使程序結構清
7、晰,增加易讀性和易修改性。此外,模塊化還有利于提高代碼的可重用性及團隊合作開發(fā)大型軟件的可行性。,11,PPT學習交流,圖4.1 模塊數(shù)與軟件開發(fā)成本,12,PPT學習交流,2. 模塊獨立性 1) 耦合性 耦合性是對一個軟件結構內部不同模塊間聯(lián)系緊密程度的度量指標。模塊間的聯(lián)系越緊密,耦合性就越高,模塊的獨立性也就越低。由于模塊間的聯(lián)系是通過模塊接口實現(xiàn)的,因此,模塊耦合性的高低主要取決于模塊接口的復雜程度、調用模塊的方式以及通過模塊接口的數(shù)據(jù)。模塊間的耦合性主要可劃分為如下幾種類型。,13,PPT學習交流,(1) 數(shù)據(jù)耦合。若兩個模塊之間僅通過模塊參數(shù)交換信息,且交換的信息全部為簡單數(shù)據(jù),則
8、稱這種耦合為數(shù)據(jù)耦合。數(shù)據(jù)耦合的耦合性最低,通常軟件中都包含有數(shù)據(jù)耦合。數(shù)據(jù)耦合的例子如下所示:,14,PPT學習交流,15,PPT學習交流,(2) 公共耦合。若兩個或多個模塊通過引用公共數(shù)據(jù)相互聯(lián)系,則稱這種耦合為公共耦合。例如,在程序中定義了全局變量,并在多個模塊中對全局變量進行了引用,則引用全局變量的多個模塊間就具有了公共耦合關系。 FORTRAN語言中使用的common語句也會在多個模塊間建立公共耦合關系。公共耦合的復雜度隨著耦合的模塊個數(shù)的增加而顯著增加。在程序設計中,若兩個模塊間需要交換的數(shù)據(jù)較多,僅通過參數(shù)傳遞難以實現(xiàn)時,可以考慮采用公共耦合完成,但一定注意盡量降低公共耦合的程度
9、。,16,PPT學習交流,17,PPT學習交流,(4) 內容耦合。若一個模塊對另一模塊中的內容(包括數(shù)據(jù)和程序段)進行了直接的引用甚至修改,或通過非正常入口進入到另一模塊內部,或一個模塊具有多個入口,或兩個模塊共享一部分代碼,則稱模塊間的這種耦合為內容耦合。內容耦合是所有耦合關系中程度最高的,會使因模塊間的聯(lián)系過于緊密而對后期的開發(fā)和維護工作帶來很大的麻煩,因此,應堅決避免任何形式的內容耦合。實際上,許多高級程序設計語言在規(guī)定語法時就已經(jīng)杜絕了任何形式的內容耦合。 耦合是影響軟件復雜度的一個重要因素,設計過程中應力求降低程序的耦合性。在以上所介紹的耦合中,數(shù)據(jù)耦合的程度最低,其次是公共耦合,再
10、其次是控制耦合,程度最高的是內容耦合。,18,PPT學習交流,2) 內聚性 內聚性是對一個模塊內部各個組成元素之間相互結合的緊密程度的度量指標。模塊中組成元素結合的越緊密,模塊的內聚性就越高,模塊的獨立性也就越高。模塊的內聚性和耦合性是兩個相互對立且又密切相關的概念。事實上,它們是同一事物的兩個方面,模塊的高內聚性往往就意味著模塊間的低耦合性。因為程序中的各個部分必定是有聯(lián)系的,若將其中密切相關的部分放在同一個模塊中,模塊間的聯(lián)系就會降低;反之,若將密切相關的部分分散放在不同的模塊之中,模塊間的聯(lián)系必然會加強。在進行模塊化設計時,耦合性和內聚性都是必須考慮的重要指標。但在軟件設計時應將更多的注
11、意力集中在提高模塊的內聚性上。模塊的內聚性主要可劃分為如下幾種不同的類型。,19,PPT學習交流,(1) 偶然內聚。若一個模塊由多個完成不同任務的語句段組成,各語句段之間的聯(lián)系十分松散或根本沒有任何聯(lián)系,則稱此模塊的內聚為偶然內聚。例如,程序中多處出現(xiàn)一些無聯(lián)系的語句段序列,為了節(jié)省內存空間將其組合成為一個模塊,這個模塊就屬于偶然內聚。偶然內聚的模塊由于組成部分之間沒有實質的聯(lián)系,因此難于理解和修改,會給軟件開發(fā)帶來很大的困擾。偶然內聚是內聚程度最低的一種,在軟件設計時應盡量避免。,20,PPT學習交流,(2) 邏輯內聚。若一個模塊可實現(xiàn)多個邏輯上相同或相似的一類功能,則稱該模塊的內聚為邏輯內
12、聚。例如,將程序中多種不同類型數(shù)據(jù)的輸出放在同一個模塊中實現(xiàn),這個模塊就屬于邏輯聚合。邏輯內聚比偶然內聚的內聚程度高一些。雖然邏輯聚合模塊的組成部分之間有一定的關系,但不同功能混在一起并公用模塊中的部分代碼,給修改帶來了一定的麻煩。另外,為了在調用模塊時能選擇執(zhí)行其中的某個功能,需要傳遞相應的控制參數(shù),因而會造成模塊間的控制耦合,降低模塊的獨立性。,21,PPT學習交流,(3) 時間內聚。若一個模塊包含了需要在同一時間段中執(zhí)行的多個任務,則稱該模塊的內聚為時間內聚。例如,將多個變量的初始化放在同一個模塊中實現(xiàn),或將需要同時使用的多個庫文件的打開操作放在同一個模塊中,都會產(chǎn)生時間內聚的模塊。由于
13、時間內聚模塊中的各個部分在時間上的聯(lián)系,其內聚程度比邏輯內聚高一些。但這樣的模塊往往會和其他相關模塊有著緊密的聯(lián)系,因而會造成耦合性的增加。,22,PPT學習交流,(4) 過程內聚。若一個模塊中的各個部分相關,并且必須按特定的次序執(zhí)行,則稱該模塊的內聚為過程內聚。在結構化程序中,通常采用程序流程圖作為設計軟件和確定模塊劃分的工具,因此,這樣得到的模塊往往具有過程內聚的特性。 (5) 通信內聚。若一個模塊中的各個部分使用同一個輸入數(shù)據(jù)或產(chǎn)生同一個輸出數(shù)據(jù),則稱該模塊的內聚為通信內聚。由于通信內聚模塊中的各個部分都與某個共同的數(shù)據(jù)密切相關,因此內聚性高于前幾種內聚。,23,PPT學習交流,(6)
14、順序內聚。若一個模塊中的各個部分都與同一個功能密切相關,并且必須按照先后順序執(zhí)行(通常前一個部分的輸出數(shù)據(jù)就是后一個部分的輸入數(shù)據(jù)),則稱該模塊的內聚為順序內聚。例如,在一個處理學生成績的模塊中,前一個部分根據(jù)成績統(tǒng)計出及格的學生人數(shù),后一個部分根據(jù)及格人數(shù)計算出學生的及格率。根據(jù)數(shù)據(jù)流圖劃分出的模塊通常都是順序內聚的模塊。由于順序內聚模塊中的各個部分在功能和執(zhí)行順序上都密切相關,因此內聚程度很高且易于理解。,24,PPT學習交流,(7) 功能內聚。若一個模塊中各個組成部分構成一個整體并共同完成一個單一的功能,則稱該模塊的內聚為功能內聚。由于功能內聚模塊中的各個部分關系非常密切,構成一個不可分
15、割的整體,因此功能內聚是所有內聚中內聚程度最高的一種。 在以上所介紹的七種內聚中,按照內聚性從低到高進行排列的結果如圖4.2所示。,25,PPT學習交流,圖4.2 內聚性的排列,26,PPT學習交流,3. 抽象 抽象是人類在解決復雜問題時經(jīng)常采用的一種思維方式,它是指將現(xiàn)實世界中具有共性的一類事物的相似的、本質的方面集中概括起來,而暫時忽略它們之間的細節(jié)差異。在軟件開發(fā)中運用抽象的概念,可以將復雜問題的求解過程分層,在不同的抽象層上實現(xiàn)難度的分解。在抽象級別較高的層次上,可以將瑣碎的細節(jié)的信息暫時隱藏起來,以利于解決系統(tǒng)中的全局性的問題。軟件開發(fā)過程中從問題定義到最終的軟件生成,每一階段都是在
16、前一階段基礎上對軟件解法的抽象層上的一次求精和細化。,27,PPT學習交流,結構化程序中自頂向下、逐步求精的模塊劃分思想正是人類思維中運用抽象方法解決復雜問題的體現(xiàn)。軟件結構中頂層的模塊抽象級別最高,控制并協(xié)調軟件的主要功能且影響全局;軟件結構中位于底層的模塊抽象級別最低,具體實現(xiàn)數(shù)據(jù)的處理過程。采用自頂向下、由抽象到具體的思維方式,不但降低了軟件開發(fā)中每個階段的工作難度,簡化了軟件的設計和實現(xiàn)過程,還有助于提高軟件的可讀性、可測試性和可維護性。此外,在程序設計中運用抽象的方法還能夠提高代碼的可重用性。,28,PPT學習交流,4. 信息隱蔽 信息隱蔽是指一個模塊將自身的內部信息向其他模塊隱藏起
17、來,以避免其他模塊不恰當?shù)脑L問和修改,只有對那些為了完成系統(tǒng)功能所必須的數(shù)據(jù)交換才被允許在模塊間進行。信息隱蔽的目的主要是為了提高模塊的獨立性,減少將一個模塊中的錯誤擴散到其他模塊的機會。但信息隱蔽并不意味著某個模塊中的內部信息對其他模塊來說是完全不可見或不能使用的,而是說模塊之間的信息傳遞只能通過合法的調用接口來實現(xiàn)。顯然,信息隱蔽對提高軟件的可讀性和可維護性都是非常重要的。,29,PPT學習交流,5. 逐步求精 “為了能集中精力解決主要問題而盡量推遲對問題細節(jié)的考慮”。可以看作是一項把一個時期內必須解決的種種問題按優(yōu)先級排列序的技術,是由Niklaus Wirth提出的一種自頂向下的設計策
18、略。求精實際上是一個細化過程。抽象與求精是一對互補的概念。,30,PPT學習交流,4.4 啟發(fā)式規(guī)則,(1) 降低模塊的耦合性,提高模塊的內聚性。 為了提高軟件中各個模塊的獨立性,提高程序的可讀性、可測試性和可維護性,在軟件體系結構設計時應盡可能采用內聚性高的模塊,如最好實現(xiàn)功能內聚;盡量只使用數(shù)據(jù)耦合,限制公共耦合的使用,避免控制耦合的使用,杜絕內容耦合的出現(xiàn)。,31,PPT學習交流,(2) 保持適中的模塊規(guī)模。 程序中模塊的規(guī)模過大,會降低程序的可讀性;而模塊規(guī)模過小,勢必會導致程序中的模塊數(shù)目過多,增加接口的復雜性。對于模塊的適當規(guī)模并沒有嚴格的規(guī)定,但普遍的觀點是模塊中的語句數(shù)最好保持
19、在10100之間。為了使模塊的規(guī)模適中,在保證模塊獨立性的前提下,可對程序中規(guī)模過小的模塊進行合并或對規(guī)模過大的模塊進行分解。,32,PPT學習交流,(3) 模塊應具有高扇入和適當?shù)纳瘸?在模塊調用中,某個模塊的上級模塊數(shù)被稱為該模塊的扇入(如圖4.3(a)所示,模塊M的扇入數(shù)為n);而某個模塊可以調用的下級模塊數(shù)被稱為該模塊的扇出(如圖4.3(b)所示,模塊M的扇出數(shù)為k)。顯然,一個模塊的扇入表明了共有多少個模塊需要調用該模塊,而其扇出表明了該模塊可以控制的下級模塊的數(shù)目。,33,PPT學習交流,圖4.3 模塊的扇入和扇出 (a) 扇入;(b) 扇出,34,PPT學習交流,模塊的扇入越大,
20、則說明共享該模塊的上級模塊數(shù)越多,或者說該模塊在程序中的重用性越高,這正是程序設計所追求的目標之一。當多個模塊具有一部分相同功能時,應將這部分相同的功能分離出來,編寫成獨立的模塊供需要的模塊調用。通過消除不同模塊中的重復內容,提高代碼的可重用性,可以減少程序的總代碼量,便于程序的測試和維護。,35,PPT學習交流,模塊的扇出若過大,如在一個模塊中要調用八個下級模塊,則會使該模塊的調用控制過于復雜。這種現(xiàn)象發(fā)生的原因通常都是由于設計階段,模塊細化的過程中,分解速度過快造成的。最常見的解決辦法是通過在此模塊和下級模塊間增加一個中間層來控制模塊分解的速度。模塊的扇出過小,如扇出為1(下級模塊層中只有
21、一個模塊),在系統(tǒng)設計中通常是不可取的。常見的解決方法是考慮將其合并到上級模塊中。但若合并會影響模塊的獨立性,則將其保留下來也未嘗不可。根據(jù)實踐經(jīng)驗,設計良好的典型系統(tǒng)中,模塊的平均扇出通常為3或4。,36,PPT學習交流,可以看出:在一個好的軟件結構中,模塊應具有較高的扇入和適當?shù)纳瘸?。但絕不能為了單純追求高扇入或合適的扇出而破壞了模塊的獨立性。此外,經(jīng)過對大量軟件系統(tǒng)的研究后發(fā)現(xiàn),在設計良好的軟件結構中,通常頂層的扇出數(shù)較大,中間層的扇出數(shù)較小,底層的扇入數(shù)較大,如圖4.4所示。,37,PPT學習交流,圖4.4 軟件結構圖示例,38,PPT學習交流,(4) 軟件結構中的深度和寬度不宜過大。
22、 所謂深度,是指軟件體系結構中控制的層數(shù),它能夠粗略地反映出軟件系統(tǒng)的規(guī)模和復雜程度;所謂寬度,是指軟件體系結構內同一層次上模塊個數(shù)的最大值,通常寬度越大的系統(tǒng)越復雜。如圖4.6所示的軟件結構圖中,深度為5,寬度為8。深度在程序中表現(xiàn)為模塊的嵌套調用,嵌套的層數(shù)越多,程序就越復雜。模塊可以調用的下級模塊數(shù)越多,軟件結構的寬度就越大。深度過大可通過將結構中過于簡單的模塊分層與上一級模塊合并來解決;而寬度過大則可通過增加中間層來解決。顯然,軟件結構中的深度和寬度是相互對立的兩個方面,降低深度會引起寬度的增加,而降低寬度又會帶來深度的增加。,39,PPT學習交流,(5) 模塊的作用域應處于其控制域范
23、圍之內。 模塊的作用域是指受該模塊內一個判定條件影響的所有模塊范圍。模塊的控制域是指該模塊本身以及所有該模塊的下屬模塊(包括該模塊可以直接調用的下級模塊和可以間接調用的更下層的模塊)。例如,在圖4.5中,模塊C的控制域為模塊C、E和F;若在模塊C中存在一個對模塊D、E和F均有影響的判定條件,即模塊C的作用域為模塊C、D、E和F(圖中帶陰影的模塊),則顯然模塊C的作用域超出了其作用域。由于模塊D在模塊C的作用域中,因此模塊C對模塊D的控制信息必然要通過上級模塊B進行傳遞,這樣不但會增加模塊間的耦合性,而且會給模塊的維護和修改帶來麻煩(若要修改模塊C,可能會對不在它控制域中的模塊D造成影響)。因此
24、,軟件設計時應使各個模塊的作用域處于其控制域范圍之內。若發(fā)現(xiàn)不符合此設計原則的模塊,可通過下面的方法進行改進:,40,PPT學習交流, 將判定位置上移。如將圖4.7中的模塊C中的判定條件上移到上級模塊B中或將模塊C整個合并到模塊B中。 將超出作用域的模塊下移。如將圖4.5中的模塊D移至模塊C的下一層上,使模塊D處于模塊C的控制域中。,41,PPT學習交流,圖4.5 模塊的作用域和控制域,42,PPT學習交流,(6) 盡量降低模塊的接口復雜度。 由于復雜的模塊接口是導致軟件出現(xiàn)錯誤的主要原因之一,因此在軟件設計中應盡量使模塊接口簡單清晰,如減少接口傳送的信息個數(shù)以及確保實參和形參的一致性和對應性
25、等。降低模塊的接口復雜度,可以提高軟件的可讀性,減少出現(xiàn)錯誤的可能性,并有利于軟件的測試和維護。 (7)設計單入口單出口模塊 (8)模塊功能應該可以預測,43,PPT學習交流,4.5.1 描述軟件結構用的圖形工具 1. HIPO圖 HIPO(Hierarchy Plus Input/Processing/Output)圖是IBM公司在20世紀70年代發(fā)展起來的用于描述軟件結構的圖形工具。它實質上是在描述軟件總體模塊結構的層次圖(H圖)的基礎上,加入了用于描述每個模塊輸入/輸出數(shù)據(jù)和處理功能的IPO圖,因此它的中文全名為層次圖加輸入/處理/輸出圖。,4.5 軟件結構設計方法,44,PPT學習交流
26、,1) HIPO圖中的H圖 H圖用于在體系結構設計過程中描繪軟件的層次結構。在H圖中,每一個矩形框代表一個模塊,圖中最頂層的矩形框表示系統(tǒng)中的主控模塊,矩形框之間的連線用于表示模塊之間的調用關系。為了使H圖更具有可追蹤性,可以為除頂層矩形框以外的其他矩形框加上能反映層次關系的編號。H圖比較適用于自頂向下進行分解的軟件結構設計方法。工資計算系統(tǒng)的H圖如下圖所示。,45,PPT學習交流,圖4.6 工資計算系統(tǒng)的H圖,46,PPT學習交流,2) IPO圖 IPO圖能夠方便、清晰地描繪出模塊的輸入數(shù)據(jù)、加工和輸出數(shù)據(jù)之間的關系。與層次圖中每個矩形框相對應,應該有一張IPO圖描述該矩形框所代表的模塊的具
27、體處理過程,作為對層次圖中內容的補充說明。IPO圖的基本形式為:在圖中左邊的框中列出模塊涉及的所有輸入數(shù)據(jù),在中間的框中列出主要的加工,在右邊的框中列出處理后產(chǎn)生的輸出數(shù)據(jù);圖中的箭頭用于指明輸入數(shù)據(jù)、加工和輸出結果之間的關系。工資計算系統(tǒng)中的計算工資模塊的IPO圖如圖4.7所示。,47,PPT學習交流,圖4.7 計算工資模塊的IPO圖,48,PPT學習交流,2. 結構圖 在軟件工程中,軟件結構經(jīng)常采用20世紀70年代中期由Yourdon等人提出的結構圖(SC,Structure Chart)這種圖形工具來表示。結構圖能夠描述出軟件系統(tǒng)的模塊層次結構,清楚地反映出程序中各模塊之間的調用關系和聯(lián)
28、系。結構圖中的基本符號及其含義見表。,49,PPT學習交流,表4.1 結構圖中的基本符號,50,PPT學習交流,4.5.2 面向數(shù)據(jù)流的軟件結構設計方法,1、數(shù)據(jù)流圖的類型 面向數(shù)據(jù)流的體系設計方法能夠方便地將需求分析階段生成的數(shù)據(jù)流圖轉換成設計階段所需的軟件結構。但對于不同類型的數(shù)據(jù)流圖,轉換得到的軟件結構也不同,因此有必要首先研究一下數(shù)據(jù)流圖的典型形式。根據(jù)數(shù)據(jù)流圖的結構特點通??蓪?shù)據(jù)流圖劃分為如下兩個基本類型。,51,PPT學習交流,(1)變換型數(shù)據(jù)流圖 變換型數(shù)據(jù)流圖呈現(xiàn)出的結構特點為:由(邏輯)輸入、變換中心和(邏輯)輸出三部分組成,如圖4.8所示。該類型數(shù)據(jù)流圖所描述的加工過程為
29、:首先,外部數(shù)據(jù)沿邏輯輸入路徑進入系統(tǒng),同時數(shù)據(jù)的形式由外部形式轉化為內部形式;接著,數(shù)據(jù)被送往變換中心進行加工處理;最后,經(jīng)過加工得到的結果數(shù)據(jù)的內部形式被轉換為外部形式并沿邏輯輸出路徑離開系統(tǒng)??梢钥闯?,變換型數(shù)據(jù)流圖反映的是一個順序結構的加工過程。,52,PPT學習交流,圖4.8 變換型數(shù)據(jù)流圖的基本模型,53,PPT學習交流,(2)事務型數(shù)據(jù)流圖 原則上,所有基本系統(tǒng)模型都屬于變換型,但其中有一類具有特殊形態(tài)的數(shù)據(jù)流圖又被單獨劃分為事務型。事務型數(shù)據(jù)流圖呈現(xiàn)出的結構特點為:輸入流在經(jīng)過某個被稱為“事務中心”的加工時被分離為多個發(fā)散的輸出流,形成多個平行的加工處理路徑,如圖4.9所示。該
30、類型數(shù)據(jù)流圖所描述的加工過程為:外部數(shù)據(jù)沿輸入通路進入系統(tǒng)后,被送往事務中心;事務中心接收輸入數(shù)據(jù)并分析確定其類型;最后根據(jù)所確定的類型為數(shù)據(jù)選擇其中的一條加工路徑。,54,PPT學習交流,圖4.9 事務型數(shù)據(jù)流圖的基本模型,55,PPT學習交流,2、面向數(shù)據(jù)流的軟件結構設計過程 運用面向數(shù)據(jù)流的方法進行軟件體系結構的設計時,應該首先對需求分析階段得到的數(shù)據(jù)流圖進行復查,必要時進行修改和精化;接著在仔細分析系統(tǒng)數(shù)據(jù)流圖的基礎上,確定數(shù)據(jù)流圖的類型,并按照相應的設計步驟將數(shù)據(jù)流圖轉化為軟件結構;最后還要根據(jù)體系結構設計的原則對得到的軟件結構進行優(yōu)化和改進。面向數(shù)據(jù)流的體系結構設計過程如圖4.10
31、所示。,56,PPT學習交流,圖4.10 面向數(shù)據(jù)流的體系結構設計過程,57,PPT學習交流,一般來說,大多數(shù)系統(tǒng)的加工問題被表示為變換型,可采用變換分析設計方法建立系統(tǒng)的軟件結構,但當數(shù)據(jù)流圖具有明顯的事務特點時,則應采用事務分析技術進行處理。變換分析設計方法與事務分析設計方法類似,都遵循圖4.10所示的設計過程,主要差別僅在于由數(shù)據(jù)流圖向軟件結構的映射方法不同。對于一個復雜的系統(tǒng),數(shù)據(jù)流圖中可能既存在變換流又存在事務流,這時應當根據(jù)數(shù)據(jù)流圖的主要處理功能,選擇一個面向全局的、涉及整個軟件系統(tǒng)的總體類型,映射得到系統(tǒng)的整體軟件結構。此外,再對局部范圍內的數(shù)據(jù)流圖進行具體研究,確定它們各自的類
32、型并分別處理,得到系統(tǒng)的局部軟件結構。,58,PPT學習交流,(1)變換分析設計 對于變換型的數(shù)據(jù)流圖,應按照變換分析設計的方法建立系統(tǒng)的結構圖。下面以圖4.11所示的工資計算系統(tǒng)數(shù)據(jù)流圖為例來介紹變換分析建立軟件結構的具體步驟。,59,PPT學習交流,A 劃分邊界,區(qū)分系統(tǒng)的輸入、變換中心和輸出部分。 變換中心在圖中往往是多股數(shù)據(jù)流匯集的地方,經(jīng)驗豐富的設計人員通??筛鶕?jù)其特征直接確定系統(tǒng)的變換中心。另外,下述方法可幫助設計人員確定系統(tǒng)的輸入和輸出:從數(shù)據(jù)流圖的物理輸入端出發(fā),沿著數(shù)據(jù)流方向逐步向系統(tǒng)內部移動,直至遇到不能被看作是系統(tǒng)輸入的數(shù)據(jù)流為止,則此數(shù)據(jù)流之前的部分即為系統(tǒng)的輸入;同理
33、,從數(shù)據(jù)流圖的物理輸出端出發(fā),逆著數(shù)據(jù)流方向逐步向系統(tǒng)內部移動,直至遇到不能被看作是系統(tǒng)輸出的數(shù)據(jù)流為止,則該數(shù)據(jù)流之后的部分即為系統(tǒng)的輸出;夾在輸入和輸出之間的部分就是系統(tǒng)的變換中心。,60,PPT學習交流,圖4.11 進行了邊界劃分的工資計算系統(tǒng)數(shù)據(jù)流圖,61,PPT學習交流,B 完成第一級分解,設計系統(tǒng)的上層模塊。 這一步主要是確定軟件結構的頂層和第一層。任何系統(tǒng)的頂層都只含一個用于控制的主模塊。變換型數(shù)據(jù)流圖對應的軟件結構的第一層一般由輸入、變換和輸出三種模塊組成。系統(tǒng)中的每個邏輯輸入對應一個輸入模塊,完成為主模塊提供數(shù)據(jù)的功能;每一個邏輯輸出對應一個輸出模塊,完成為主模塊輸出數(shù)據(jù)的功
34、能;變換中心對應一個變換模塊,完成將系統(tǒng)的邏輯輸入轉換為邏輯輸出的功能。工資計算系統(tǒng)的一級分解結果如圖4.12所示。,62,PPT學習交流,圖4.12 工資計算系統(tǒng)的一級分解,63,PPT學習交流,C 完成第二級分解,設計輸入、變換中心和輸出部分的中、下層模塊。 這一步主要是對上一步確定的軟件結構進行逐層細化,為每一個輸入、輸出模塊及變換模塊設計下屬模塊。通常,一個輸入模塊應包括用于接收數(shù)據(jù)和轉換數(shù)據(jù)(將接收的數(shù)據(jù)轉換成下級模塊所需的形式)的兩個下屬模塊;一個輸出模塊應包括用于轉換數(shù)據(jù)(將上級模塊的處理結果轉換成輸出所需的形式)和傳出數(shù)據(jù)的兩個下屬模塊;變換模塊的分解一般應根據(jù)變換中心的組成情況及模塊分解的原則來確定下屬模塊。完成二級分解后,工資計算系統(tǒng)的軟件結構如圖4.13所示。,64,PPT學習交流,圖4.13 完成二級分解后的工資計算系統(tǒng)軟件結構,65,PPT學習交流,(2)事務分析設計,圖4.14 進行了邊界劃分的事務型數(shù)據(jù)流圖,66,PPT學習交流,A 劃分邊界,明確數(shù)據(jù)流圖中的接收路徑、事務中心和加工路徑。 事務中心在數(shù)據(jù)流圖中位于多條加工路徑的起點,經(jīng)過事務中心的數(shù)據(jù)流被分解為多個發(fā)散的數(shù)據(jù)流,根據(jù)這個特征很容易在圖中找到
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025廣東江門市人民醫(yī)院招聘高層次人才1人備考題庫附答案
- 2025江蘇省蘇豪控股集團招聘備考題庫附答案
- 2026中鐵十一局集團有限公司專業(yè)人才招聘1人筆試備考題庫及答案解析
- 2026廣東廣州醫(yī)科大學附屬第五醫(yī)院人才招聘54人(一)筆試備考題庫及答案解析
- 2025四川巴中市巴州區(qū)赴高校考試(考核)招聘緊缺學科教師和體育教練員79人筆試備考試題及答案解析
- 2025秋人教版道德與法治八年級上冊第三單元單元思考與行動教學設計
- 2026新疆博爾塔拉州博樂邊合區(qū)金垣熱力有限責任公司招聘1人筆試參考題庫及答案解析
- 2026廣東廣州市越秀區(qū)建設街招聘勞動保障監(jiān)察協(xié)管員1人筆試備考題庫及答案解析
- 2026年滁州鳳陽縣人民醫(yī)院派遣項目特崗教師招聘2名筆試參考題庫及答案解析
- 2025福建福州濱海實驗學校臨聘教師招聘2人筆試模擬試題及答案解析
- 粉刷安全晨會(班前會)
- 2024年國網(wǎng)35條嚴重違章及其釋義解讀-知識培訓
- 部編版八年級語文上冊課外文言文閱讀訓練5篇()【含答案及譯文】
- 高三英語一輪復習人教版(2019)全七冊單元寫作主題匯 總目錄清單
- 工業(yè)區(qū)物業(yè)服務手冊
- 大學基礎課《大學物理(一)》期末考試試題-含答案
- 道德與法治五年級上冊練習測試題帶答案(模擬題)
- 招標代理機構內部管理制度
- 2024新能源集控中心儲能電站接入技術方案
- 生產(chǎn)拉絲部門工作總結
- 農(nóng)村買墓地合同的范本
評論
0/150
提交評論