版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
軟件工程電子課件第3章總體設(shè)計
根據(jù)總體設(shè)計的任務(wù)和目標,總體設(shè)計的過程主要由系統(tǒng)設(shè)計和結(jié)構(gòu)設(shè)計兩個階段組成,具體的過程包括以下步驟:3.1.2
總體設(shè)計的過程2023/1/1241.設(shè)想供選擇的方案2.選取合理的方案3.推薦最佳方案4.功能分解5.設(shè)計軟件結(jié)構(gòu)6.數(shù)據(jù)庫的設(shè)計7.制訂測試計劃8.書寫文檔9.審查和復(fù)審3.1.2
總體設(shè)計的過程2023/1/1255.設(shè)計軟件結(jié)構(gòu)
設(shè)計軟件模塊的結(jié)構(gòu)就是要把軟件模塊組成良好的層次系統(tǒng),描述各模塊之間的關(guān)系。頂層模塊調(diào)用它的下層模塊以實現(xiàn)程序的完整功能,每個下層模塊再調(diào)用更下層的模塊,最下層的模塊完成最具體的功能。軟件設(shè)計方法主要有面向數(shù)據(jù)流的設(shè)計方法和面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法,在總體設(shè)計階段,主要采用面向數(shù)據(jù)流的結(jié)構(gòu)化設(shè)計方法。2023/1/1266.數(shù)據(jù)庫的設(shè)計
對于需要使用數(shù)據(jù)庫的那些應(yīng)用領(lǐng)域,還要進行數(shù)據(jù)庫的設(shè)計。數(shù)據(jù)庫的設(shè)計包括模式設(shè)計、子模式設(shè)計、完整性和安全性設(shè)計等。
2023/1/1273.2總體設(shè)計的原理
軟件結(jié)構(gòu)是軟件元素(模塊)間的關(guān)系表示,而軟件元素間的關(guān)系是多種多樣的,如調(diào)用關(guān)系、包含關(guān)系、從屬關(guān)系和嵌套關(guān)系等。但不管什么關(guān)系,都可以表示為層次形式,即層次之間是由關(guān)系連接的,故受到關(guān)系的制約。因此,可以這樣來定義軟件層次結(jié)構(gòu):在軟件系統(tǒng)中,有一對應(yīng)的組成成份α和β,它們的關(guān)系為R(α,β),若這個關(guān)系為層次結(jié)構(gòu),則應(yīng)滿足條件:
3.2.1軟件結(jié)構(gòu)和過程2023/1/128(1)第0層有組成成份α,該層不出現(xiàn)的另一成份β與它有R(α,β)關(guān)系;(2)在第i層(i>0),α是這樣一個集合;(3)在第i-1層必定有一個成份,且僅有一個成份β,與之有R(β,α)關(guān)系;(4)若有R(β,γ),則成份γ必定在i+1層上。其中i是層次編號,0號最高,號數(shù)若增大,層次就降低。3.2.1軟件結(jié)構(gòu)和過程2023/1/129
層次結(jié)構(gòu)概念之所以能夠獲得廣泛應(yīng)用,主要是由于它結(jié)構(gòu)清晰,可理解性好,從而使可靠性和可維護性、可讀性都得到提高。
以模塊為軟件元素的層次結(jié)構(gòu)是一種靜態(tài)層次結(jié)構(gòu),它是在對“問題”的逐步定義過程中得到的,當問題的每一部分都能夠由軟件元素(模塊)來實現(xiàn)時,則軟件的層次結(jié)構(gòu)也就得到了。因為問題定義過程,實際上是一種分解過程,隱含地表示了模塊間的關(guān)系。3.2.1軟件結(jié)構(gòu)和過程2023/1/1210
軟件結(jié)構(gòu)提供了軟件模塊間組成關(guān)系的表示。它不提供模塊間實現(xiàn)控制關(guān)系的操作細節(jié),更不提供模塊內(nèi)部的操作細節(jié)。軟件過程是用以描述每個模塊的操作細節(jié),當然包括一個模塊對下一層模塊控制的操作細節(jié)。實際上,過程的描述就是關(guān)于某個模塊算法的詳細描述,它應(yīng)當包括處理的順序、精確的判定位置、重復(fù)的操作以及數(shù)據(jù)組織和結(jié)構(gòu)等。3.2.1軟件結(jié)構(gòu)和過程2023/1/12111.模塊化
模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募希姆N屬性:(1)輸入/輸出(2)邏輯功能(3)運行程序(4)內(nèi)部數(shù)據(jù)3.2.1軟件結(jié)構(gòu)和過程2023/1/12121.模塊化模塊可以被單獨命名,而且可通過名字來訪問。模塊有大有小,它可以是一個程序,也可以是程序中的一個程序段或者一個子程序。例如:過程、函數(shù)、子程序、宏等等都可作為模塊。
模塊化就是把程序劃分成若干個模塊,每個模塊具有一個子功能,把這些模塊集總起來組成一個整體,可以完成指定的功能,實現(xiàn)問題的要求。3.2.1軟件結(jié)構(gòu)和過程2023/1/12131.模塊化理想模塊(黑箱模塊)的特點:(1)每個理想模塊只解決一個問題。(2)每個理想模塊的功能都應(yīng)該明確,使人容易理解。(3)理想模塊之間的連接關(guān)系簡單,具有獨立性。(4)由理想模塊構(gòu)成的系統(tǒng),容易使人理解,易于編程,易于測試,易于修改和維護。
3.2.1軟件結(jié)構(gòu)和過程2023/1/12141.模塊化
對用戶來說,其感興趣是模塊的功能,而不必去理解模塊內(nèi)部的結(jié)構(gòu)和原理。下面根據(jù)人類解決問題的一般規(guī)律,描述上面所提出的結(jié)論。定義函數(shù)c(x)為問題x的復(fù)雜程度,函數(shù)E(x)為解決問題x需要的工作量(時間)。對于問題P1和問題P2,如C(P1)>C(P2),則有E(P1)>E(P2)。
因為由P1和P2兩個問題組合而成一個問題的復(fù)雜程度大于分別考慮每個問題時的復(fù)雜程度之和,根據(jù)人類解決一般問題的經(jīng)驗,有:
C(P1+P2)>C(P1)+C(P2)
3.2.1軟件結(jié)構(gòu)和過程2023/1/12151.模塊化
綜上所述,可得到下面的不等式:
E(P1+P2)>E(P1)+E(P2)
由此可知,把復(fù)雜的問題分解成許多容易解決的小問題,原來的問題也就容易解決了,這就是模塊化提出的理論根據(jù)。3.2.1軟件結(jié)構(gòu)和過程2023/1/12161.模塊化
根據(jù)模塊數(shù)目和設(shè)計模塊間接口的成本,得出了最適合的總成本曲線。每個程序都相應(yīng)地有一個最適當?shù)哪K數(shù)目M,使得系統(tǒng)的開發(fā)成本最小。3.2.1軟件結(jié)構(gòu)和過程
圖3-1模塊化和軟件成本的關(guān)系
2023/1/12171.模塊化
采用模塊化原理的好處:可以使軟件結(jié)構(gòu)清晰,不僅容易實現(xiàn)設(shè)計,也使設(shè)計出的軟件的可閱讀性和可理解性大大增強。使軟件容易測試和調(diào)試,進而有助于提高軟件的可靠性。有助于軟件開發(fā)工程的組織管理。3.2.1軟件結(jié)構(gòu)和過程2023/1/12182.抽象
抽象是一種思維方法,這種方法在認識事物時,忽略事物的細節(jié),通過事物本質(zhì)的共同特性來認識事物。在軟件工程就是這樣,在每個階段中,抽象的層次逐步降低,在軟件結(jié)構(gòu)設(shè)計中的模塊分層也是由抽象到具體的分析和構(gòu)造出來的。
軟件工程過程的每一步,都是對軟件解法的抽象層次的一次細化。在可行性研究階段,軟件被看作是一個完整的系統(tǒng)部分;在需求分析期間,用在問題環(huán)境中的熟悉的術(shù)語來描述軟件的解法;由總體設(shè)計階段轉(zhuǎn)入詳細設(shè)計階段時,抽象的程度進一步減少;最后,當源程序?qū)懗鰜頃r,也就達到了抽象的最底層。3.2.1軟件結(jié)構(gòu)和過程2023/1/12193.信息隱蔽
信息隱蔽是指在設(shè)計和確定模塊時,使得一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的,或者說是“不可見”的。
局部化的概念和信息隱蔽概念是密切相關(guān)的。所謂局部化是指把一些關(guān)系密切的軟件元素物理地放得彼此靠近,在模塊中使用局部數(shù)據(jù)元素是局部化的一個例子。3.2.1軟件結(jié)構(gòu)和過程2023/1/12204.模塊獨立性模塊獨立性是軟件系統(tǒng)中每個模塊只涉及軟件要求的具體子功能,而和軟件系統(tǒng)中其他的模塊接口是簡單的。模塊獨立的概念是模塊化、抽象、信息隱蔽和局部化概念的直接結(jié)果。模塊的獨立程度可由兩個定性標準度量,這兩個標準分別稱為耦合和內(nèi)聚。耦合衡量不同模塊彼此間互相依賴(連接)的緊密程度;內(nèi)聚衡量一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度。3.2.1軟件結(jié)構(gòu)和過程2023/1/12215.模塊的耦合耦合是對一個軟件結(jié)構(gòu)內(nèi)各個模塊之間互連程度的度量。耦合強弱取決于模塊間接口的復(fù)雜程度、調(diào)用模塊的方式以及通過接口的信息。在軟件設(shè)計中應(yīng)該盡可能釆用松散耦合的系統(tǒng)。在這樣的系統(tǒng)中可以研究、測試或維護任何一個模塊,而不需要對系統(tǒng)的其他模塊有很多了解和影響。3.2.1軟件結(jié)構(gòu)和過程2023/1/12225.模塊的耦合具體區(qū)分模塊間耦合程度強弱的標準如下:(1)非直接耦合如果兩個模塊中的每一個都能獨立地工作而不需要另一個模塊的存在,那么它們彼此完全獨立。(2)數(shù)據(jù)耦合如果兩個模塊彼此間通過參數(shù)交換信息,而且交換的信息僅僅是數(shù)據(jù),那么這種耦合稱為數(shù)據(jù)耦合。(3)控制耦合如果傳遞的信息中有控制信息,則這種耦合稱為控制耦合,如圖3-2所示。3.2.1軟件結(jié)構(gòu)和過程2023/1/12235.模塊的耦合
控制耦合是中等程度的耦合,它增加了系統(tǒng)的復(fù)雜程度??刂岂詈贤嵌嘤嗟?,在把模塊適當分解之后通??梢杂脭?shù)據(jù)耦合代替它。圖3-2控制耦合3.2.1軟件結(jié)構(gòu)和過程2023/1/12245.模塊的耦合
(4)公共環(huán)境耦合
當兩個或多個模塊通過一個公共數(shù)據(jù)環(huán)境相互作用時,它們之間的耦合稱為公共環(huán)境耦合。
當耦合的模塊個數(shù)增加時復(fù)雜程度顯著增加。如果只有兩個模塊有公共環(huán)境,那么這種耦合有下述兩種可能,如圖3-3所示。
3.2.1軟件結(jié)構(gòu)和過程2023/1/12255.模塊的耦合圖3-3公共環(huán)境耦合
公共環(huán)境耦合是一種不良的連接關(guān)系,它給模塊的維護和修改帶來困難。如公共數(shù)據(jù)要作修改,很難判定有多少模塊應(yīng)用了該公共數(shù)據(jù),故在模塊設(shè)計時,一般不允許有公共連接關(guān)系的模塊存在。3.2.1軟件結(jié)構(gòu)和過程2023/1/12265.模塊的耦合(5)內(nèi)容耦合
如果一個模塊和另一個模塊的內(nèi)部屬性(即運行程序和內(nèi)部數(shù)據(jù))有關(guān),則稱為內(nèi)部耦合。兩個模塊間發(fā)生內(nèi)容耦的情況:
圖3-4內(nèi)容耦合
堅決避免使用內(nèi)容耦合。事實上許多高級程序設(shè)計語言已經(jīng)設(shè)計成不允許在程序中出現(xiàn)任何形式的內(nèi)容耦合。3.2.1軟件結(jié)構(gòu)和過程2023/1/12275.模塊的耦合(6)標記耦合如果一組模塊通過參數(shù)表傳遞記錄信息,也就是說,這組模塊共享了這個紀錄,這就是標記耦合。在設(shè)計中應(yīng)盡量避免這種耦合。(7)外部耦合一組模塊都訪問同一全局簡單變量而不是同一全局數(shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該變量的信息,則稱之為外部耦合。3.2.1軟件結(jié)構(gòu)和過程2023/1/12285.模塊的耦合
一般模塊之間的連接有七種,構(gòu)成的耦合也有七種類型,如圖3-5所示。圖3-5七種耦合類型的關(guān)系
總之,耦合是影響軟件復(fù)雜程度的一個重要因素。應(yīng)該采取的原則是:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合。3.2.1軟件結(jié)構(gòu)和過程2023/1/12296.模塊的內(nèi)聚(1)偶然內(nèi)聚
如果一個模塊完成一組任務(wù),各個任務(wù)之間沒有實質(zhì)性聯(lián)系,即使這些任務(wù)彼此間有關(guān)系,其關(guān)系也是很松散的,就叫做偶然內(nèi)聚,如圖3-6所示。圖3-6偶然內(nèi)聚
圖3-7邏輯內(nèi)聚3.2.1軟件結(jié)構(gòu)和過程2023/1/126.模塊的內(nèi)聚(2)邏輯內(nèi)聚
如果一個模塊內(nèi)部各組成部分的處理動作在邏輯上相似,但功能都彼此不同或無關(guān),則稱為邏輯內(nèi)聚,如圖3-7所示。(3)時間內(nèi)聚
如果一個模塊內(nèi)的各組成部分的處理動作和時間相關(guān),則稱為時間內(nèi)聚。
3.2.1軟件結(jié)構(gòu)和過程2023/1/12316.模塊的內(nèi)聚(4)過程內(nèi)聚
如果一個模塊內(nèi)部的各個組成部分的處理動作各不相同,彼此也沒有聯(lián)系,但他們都受同一個控制流支配,并由這個控制流決定他們的執(zhí)行次序,則為過程內(nèi)聚。
使用程序流程圖作為工具設(shè)計軟件時,常常通過研究流程圖確定模塊的劃分,這樣得到的往往是過程內(nèi)聚的模塊。如圖3-8所示,通過循環(huán)體,計算兩種累積數(shù)。圖3-8過程內(nèi)聚3.2.1軟件結(jié)構(gòu)和過程2023/1/12326.模塊的內(nèi)聚(5)通信內(nèi)聚如果模塊中所有元素都使用同一個輸入數(shù)據(jù)和(或)產(chǎn)生同一個輸出數(shù)據(jù),則稱為通信內(nèi)聚.
圖3-9所示的是通信內(nèi)聚模塊的示意圖。例如要完成兩個工作,這兩個處理動作都使用相同的輸入數(shù)據(jù):圖3-9通信內(nèi)聚模塊3.2.1軟件結(jié)構(gòu)和過程2023/1/12336.模塊的內(nèi)聚(6)信息內(nèi)聚信息內(nèi)聚模塊具有多種功能,能完成多種任務(wù)。各個功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項功能只有一個惟一的入口點,例如圖3-10所示的有四個功能,即這個模塊將根據(jù)不同的要求,確定該執(zhí)行哪一功能。但這個模塊都基于同一數(shù)據(jù)結(jié)構(gòu),即符號表。圖3-10信息內(nèi)聚
3.2.1軟件結(jié)構(gòu)和過程2023/1/12346.模塊的內(nèi)聚(7)功能內(nèi)聚如果一個模塊內(nèi)部的各組成部分的處理動作全都為執(zhí)行同一個功能而存在,并且只執(zhí)行一個功能,則稱為功能內(nèi)聚。功能內(nèi)聚是最高程度的內(nèi)聚。判斷一個模塊是不是功能內(nèi)聚,只要看這個模塊是“做什么”,是完成一個具體的任務(wù),還是完成多任務(wù)。
內(nèi)聚的七種類型如圖3-11所示:圖3-11內(nèi)聚的七種類型
3.2.1軟件結(jié)構(gòu)和過程2023/1/1235
軟件結(jié)構(gòu)也可以描述為管道和過濾器式的、面向?qū)ο蟮?、隱式請求的、層次化的、過程控制式的等形式。了解各種軟件結(jié)構(gòu)的風(fēng)格特征,有助于讀者確定對于一個給定的系統(tǒng)使用哪一種風(fēng)格才是最適合的。3.2.2結(jié)構(gòu)設(shè)計2023/1/12361.管道和過濾器
所謂管道就是傳送數(shù)據(jù)流的元素,而過濾器就是實現(xiàn)從輸入數(shù)據(jù)到輸出結(jié)果轉(zhuǎn)換的。其中,各個過濾器是獨立的,每一個過濾器不知道系統(tǒng)其他過濾器的功能。此外,系統(tǒng)輸出的正確性不依賴于過濾器的順序。管道/過濾器系統(tǒng)所具有的幾個重要特征是:
設(shè)計者可以把整個系統(tǒng)看成是一個大的過濾器,它對系統(tǒng)的輸入和輸出產(chǎn)生影響,導(dǎo)致輸入數(shù)據(jù)轉(zhuǎn)換為輸出結(jié)果。任意兩個過濾器可以連接在一起,所以用它們可以很容易地建立其他系統(tǒng)。系統(tǒng)發(fā)展演變很容易,因為新的過濾器可以很容易地加進來,而舊的過濾器也可以很容易地刪除。允許過濾器并行執(zhí)行。2023/1/12371.管道和過濾器
管道/過濾器的缺點:首先,它更適合進行批量處理,而不適合交互處理。其次,當兩個數(shù)據(jù)流相關(guān)時,系統(tǒng)必須維持它們之間的通信。第三,過濾器的獨立性意味著一些過濾器必須具備的一些準備功能,可能是與其他過濾器的功能重復(fù)的,這樣會降低性能,并使代碼變得十分復(fù)雜。2023/1/12382.面向?qū)ο笮枨罂梢酝ㄟ^對象以及它們的抽象類型組織起來。這種設(shè)計也可以圍繞抽象的數(shù)據(jù)類型來建立系統(tǒng)的模塊(組件)?;趯ο蟮脑O(shè)計必須具備兩個重要特征:對象必須保持數(shù)據(jù)表示的完整性;數(shù)據(jù)表示對于其他對象是隱藏的。與管道/過濾器系統(tǒng)不同的是,一個對象必須能識別其他對象以便于它們之間的通信,而過濾器是完全獨立的。3.2.2結(jié)構(gòu)設(shè)計2023/1/12393.隱式請求
隱式請求的設(shè)計模型是事件驅(qū)動的。它是基于廣播的概念,不同于直接調(diào)用一個過程;它是由一個組件宣布一個或多個事件要發(fā)生了,然后,其他組件將一個過程與這些事件聯(lián)系起來(稱這樣的過程為注冊過程),這些注冊過程是由系統(tǒng)調(diào)用的。在這種系統(tǒng)中,數(shù)據(jù)交換是通過儲存庫中的共享數(shù)據(jù)完成的。這種類型的設(shè)計經(jīng)常用于數(shù)據(jù)庫中以保持信息的一致性。這種風(fēng)格的設(shè)計有利于組件復(fù)用,因為任何組件都可以注冊到一個事件中,并且獨立于其他組件。同樣,當系統(tǒng)更新或升級時,老的組件可以很容易地刪除,新的組件也可以很容易地加進來。這種設(shè)計風(fēng)格的不利之處是缺乏組件響應(yīng)事件的保證機制。3.2.2結(jié)構(gòu)設(shè)計2023/1/12404.層次化
將系統(tǒng)按層次劃分,每一層都為上一層提供服務(wù),同時每一層是下一層的一個客戶。圖3-12描繪了一個提供文件安全保障的系統(tǒng)。圖3-12文件安全保障系統(tǒng)的層次結(jié)構(gòu)
最頂層提供身份驗證。這一層管理一個密碼文件,這個文件以加密形式存儲,并且要求用戶輸入用戶名和密碼。第二層是密鑰管理層。它根據(jù)上層傳遞的用戶名和密碼,計算出一個散列碼作為訪問文件的密鑰。第三層是文件級的接口。根據(jù)用戶的訪問要求操作一個文件。最內(nèi)層是加密解密層。對具體的文件實現(xiàn)加密和解密操作,在這層上實現(xiàn)系統(tǒng)最基本的加密解密策略。2023/1/12415.過程控制過程控制系統(tǒng)的目標就是將過程輸出維持在某個指定值的范圍之內(nèi)。大部分基于軟件的控制系統(tǒng)都涉及兩種形式的閉環(huán)——反饋和前饋。一個反饋系統(tǒng)測量出一個控制變量,如溫度,然后調(diào)整過程使控制變量值在設(shè)定點附近。前饋循環(huán)中,系統(tǒng)通過測量其他過程變量值來對控制變量施加更多的影響。在進行軟件結(jié)構(gòu)設(shè)計時,選擇什么樣的設(shè)計風(fēng)格的一個重要因素是分析該軟件應(yīng)用的范圍,每種設(shè)計風(fēng)格各有所長,設(shè)計者應(yīng)該根據(jù)具體的應(yīng)用進行選擇。2023/1/12423.3總體設(shè)計準則總體設(shè)計既是過程又是模型。設(shè)計過程是一系列迭代的步驟,它們使設(shè)計者能夠描述要構(gòu)造的軟件系統(tǒng)的特征??傮w設(shè)計與其他所有設(shè)計活動一樣,是受創(chuàng)造性的技能、以往的設(shè)計經(jīng)驗和良好的設(shè)計靈感,以及對質(zhì)量的深刻理解等一些關(guān)鍵因素影響的。(1)多樣化設(shè)計(2)設(shè)計對于分析模型應(yīng)該是可跟蹤的(3)設(shè)計不應(yīng)該從頭做起(4)軟件設(shè)計應(yīng)該盡可能縮短軟件和現(xiàn)實世界的距離(5)設(shè)計應(yīng)該表現(xiàn)出一致性和規(guī)范性(6)設(shè)計的易修改性2023/1/1243(7)容錯性設(shè)計(8)設(shè)計的粒度要適當(9)在設(shè)計時就要開始評估軟件的質(zhì)量(10)要復(fù)審設(shè)計,減少設(shè)計引入的錯誤。
設(shè)計不足編碼,即使在詳細設(shè)計階段,設(shè)計模型的抽象級別也比源代碼要高。詳細設(shè)計是設(shè)計實現(xiàn)的算法和具體的數(shù)據(jù)結(jié)構(gòu)。軟件的質(zhì)量屬性需要在設(shè)計時考慮如何實現(xiàn),在設(shè)計過程中要不斷評價軟件質(zhì)量,不要等全部設(shè)計結(jié)束之后再考慮。3.3總體設(shè)計準則2023/1/1244
目前已經(jīng)有許多總體設(shè)計方法,每種設(shè)計方法都引入了獨特的啟發(fā)規(guī)則和符號體系。然而,這些方法具有一些共同的特征:
具有將分析模型轉(zhuǎn)變?yōu)樵O(shè)計模型的機制。具有描述軟件功能性構(gòu)件和接口的符號體系。設(shè)計優(yōu)化和結(jié)構(gòu)求精的啟發(fā)規(guī)則。質(zhì)量評價的指南。下面是影響軟件設(shè)計的因素:共同設(shè)計用戶界面文化問題并發(fā)性3.3總體設(shè)計準則2023/1/12453.4總體設(shè)計的常用方法及工具3.4.1面向數(shù)據(jù)流的設(shè)計方法
運用面向數(shù)據(jù)流的方法進行軟件體系結(jié)構(gòu)的設(shè)計時,應(yīng)該首先對需求分析階段得到的數(shù)據(jù)流圖進行復(fù)查,必要時進行修改和精化;接著在仔細分析系統(tǒng)數(shù)據(jù)流圖的基礎(chǔ)上,確定數(shù)據(jù)流圖的類型,并按照相應(yīng)的設(shè)計步驟將數(shù)據(jù)流圖轉(zhuǎn)化為軟件結(jié)構(gòu);最后還要根據(jù)體系結(jié)構(gòu)設(shè)計的原則對得到的軟件結(jié)構(gòu)進行優(yōu)化和改進。面向數(shù)據(jù)流方法的設(shè)計過程如圖3-13所示。2023/1/1246圖3-13面向數(shù)據(jù)流方法的設(shè)計過程3.4.1面向數(shù)據(jù)流的設(shè)計方法2023/1/12471.變換流
如圖4-14所示,信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內(nèi)部形式,進入系統(tǒng)的信息通過變換中心,經(jīng)過加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。當數(shù)據(jù)流具有這些特征時,這種信息流被稱為變換流。圖3-14變換流3.4.1面向數(shù)據(jù)流的設(shè)計方法2023/1/12482.事物流
數(shù)據(jù)沿輸入通路到達一個處理T,這個處理根據(jù)輸入數(shù)據(jù)的類型在若干個動作序列中選出一個來執(zhí)行。這種“以事務(wù)為中心的”的數(shù)據(jù)流,成為“事務(wù)流”。圖3-15事務(wù)流3.4.1面向數(shù)據(jù)流的設(shè)計方法2023/1/12493.變換分析
對于變換型的數(shù)據(jù)流圖,應(yīng)按照變換分析的方法建立系統(tǒng)的結(jié)構(gòu)圖。(1)劃分邊界,區(qū)分系統(tǒng)的輸入、變換中心和輸出部分(2)完成第一級分解,設(shè)計系統(tǒng)的上層模塊例如工資計算系統(tǒng)的一級分解結(jié)果如圖3-16所示。圖3-16工資計算系統(tǒng)的一級分解(3)完成第二級分解,設(shè)計輸入、變換中心和輸出部分的中、下層模塊3.4.1面向數(shù)據(jù)流的設(shè)計方法2023/1/1250
完成二級分解后,上述的工資計算系統(tǒng)的軟件結(jié)構(gòu)如圖3-17,圖中省略了模塊調(diào)用傳遞的信息。圖3-17完成二級分解后的工資計算系統(tǒng)軟件結(jié)構(gòu)3.4.1面向數(shù)據(jù)流的設(shè)計方法2023/1/12514.事務(wù)分析事務(wù)分析設(shè)計方法也是從分析數(shù)據(jù)流圖出發(fā),通過自頂向下的逐步分解來建立系統(tǒng)軟件結(jié)構(gòu)。下面以圖3-18所示的事務(wù)型數(shù)據(jù)流圖為例,介紹事務(wù)分析設(shè)計方法生成軟件結(jié)構(gòu)的具體步驟。圖3-18進行了邊界劃分的事務(wù)型數(shù)據(jù)流圖(1)劃分邊界,明確數(shù)據(jù)流圖中的接收路徑、事務(wù)中心和加工路徑(2)建立事務(wù)型結(jié)構(gòu)的上層模塊
圖3-18中,事務(wù)型數(shù)據(jù)流圖映射得到的上層軟件結(jié)構(gòu)如圖3-19所示。3.4.1面向數(shù)據(jù)流的設(shè)計方法2023/1/1252(3)分解、細化接收路徑和加工路徑,得到事務(wù)型結(jié)構(gòu)的下層模塊
經(jīng)過分解后得到的完整的事務(wù)型軟件結(jié)構(gòu)如圖3-20所示。圖3-19事務(wù)型系統(tǒng)的上層軟件結(jié)構(gòu)圖3-20完整的事務(wù)型軟件結(jié)構(gòu)3.4.1面向數(shù)據(jù)流的設(shè)計方法2023/1/12535.軟件模塊結(jié)構(gòu)的改進
為了使最終生成的軟件系統(tǒng)具有良好的風(fēng)格及較高的效率,應(yīng)在軟件的早期設(shè)計階段盡量地對軟件結(jié)構(gòu)進行優(yōu)化。因此在建立軟件結(jié)構(gòu)后,軟件設(shè)計人員需要按照體系結(jié)構(gòu)設(shè)計的基本原則對其進行必要的改進和調(diào)整。軟件結(jié)構(gòu)的優(yōu)化應(yīng)該在保證模塊劃分合理的前提下,力求減少模塊的數(shù)量、提高模塊的內(nèi)聚性及降低模塊的耦合性,設(shè)計出具有良好特性的軟件結(jié)構(gòu)。3.4.1面向數(shù)據(jù)流的設(shè)計方法2023/1/12541、系統(tǒng)流程圖2、HIPO圖(1)HIPO圖的H圖(2)IPO圖表3-1IPO表的組成3.4.2總體設(shè)計中的工具2023/1/12551引言2總體設(shè)計3接口設(shè)計4運行設(shè)計5系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計6補救措施7系統(tǒng)維護設(shè)計3.4.2總體設(shè)計中說明書編寫規(guī)范2023/1/1256設(shè)計軟件模塊的結(jié)構(gòu)就是要把軟件模塊組成良好的層次系統(tǒng),描述各模塊之間的關(guān)系。頂層模塊調(diào)用它的下層模塊以實現(xiàn)程序的完整功能,每個下層模塊再調(diào)用更下層的模塊,最下層的模塊完成最具體的功能。3.5模塊結(jié)構(gòu)設(shè)計
2023/1/1257數(shù)據(jù)存儲管理是系統(tǒng)存儲或檢索對象的基本設(shè)施,它建立在某種數(shù)據(jù)存儲管理系統(tǒng)之上,并且隔離了數(shù)據(jù)存儲管理模式的影響。(1)數(shù)據(jù)文件(2)關(guān)系數(shù)據(jù)庫(3)面向?qū)ο髷?shù)據(jù)庫3.6數(shù)據(jù)存儲設(shè)計
2023/1/12583.7模型-視圖-控制器框架
3.7.1MVC模式
模型-視圖-控制器(Model-View-Controller,MVC),是一種用來使用戶界面層和系統(tǒng)的其他部分分離的結(jié)構(gòu)化模式。
MVC模式使系統(tǒng)的功能層(模型)同用戶界面的兩個方面分離:視圖(view)和控制器(contro11er)。如圖3-21所示。
圖3-21用戶界面的模型—視圖—控制器(MVC)結(jié)構(gòu)化模式2023/1/12593.7.2MVC中的模型類、視圖類和控制類
圖3-22MVC中的模型類、視圖類和控制類2023/1/12603.7.3MVC的實現(xiàn)
圖3-23MVC的實現(xiàn)2023/1/12613.8軟件體系結(jié)構(gòu)3.8.1軟件體系結(jié)構(gòu)的興起20世紀60年代的軟件危機使得人們開始重視軟件工程的研究。軟件系統(tǒng)被分成許多模塊,并且模塊之間有相互作用,組合起來具有整體的屬性,就具有了體系結(jié)構(gòu)。軟件也從傳統(tǒng)的軟件工程進入到現(xiàn)代面向?qū)ο蟮能浖こ蹋芯空麄€軟件系統(tǒng)的體系結(jié)構(gòu),尋求構(gòu)建最快、成本最低、質(zhì)量最好的構(gòu)造過程。
2023/1/1262軟件體系結(jié)構(gòu)指軟件的整體結(jié)構(gòu)和這種結(jié)構(gòu)提供系統(tǒng)在概念上的整體性的方式。體系結(jié)構(gòu)設(shè)計是總體設(shè)計的主要任務(wù),目標是建立一個結(jié)構(gòu)良好的系統(tǒng)。
軟件體系結(jié)構(gòu)設(shè)計過程實際上是在高層次上定義軟件的組織。軟件人員用某一種方法把系統(tǒng)分解為若干單元,并且定義這些單元之間的相互作用。不同的設(shè)計方法可能構(gòu)建體系結(jié)構(gòu)的過程也不同。3.8.2軟件體系結(jié)構(gòu)的概念2023/1/12631.系統(tǒng)結(jié)構(gòu)化
將系統(tǒng)分解成一系列基本子系統(tǒng)(每一個子系統(tǒng)都是一個獨立的軟件單元),并且識別出子系統(tǒng)之間的通信。2.控制建模
建立系統(tǒng)各個部分之間控制關(guān)系的構(gòu)成模型,重點關(guān)注系統(tǒng)如何分解成子系統(tǒng)。作為一個整體,子系統(tǒng)必須得到有效的控制。3.模塊分解
把子系統(tǒng)進一步分解成模塊。這時,軟件結(jié)構(gòu)設(shè)計就需要確定模塊的類型以及模塊之間的關(guān)聯(lián)。
3.8.2軟件體系結(jié)構(gòu)的概念2023/1/1264
近年來,分布式系統(tǒng)使用越來越廣泛。通常,大型計算機系統(tǒng)都是分布式系統(tǒng)。分布式系統(tǒng)的信息處理分布在許多計算機上,系統(tǒng)軟件運行在網(wǎng)絡(luò)相連的一組松散的集成在一起的處理機上。分布式系統(tǒng)體系結(jié)構(gòu)一般有如下幾類:1.客戶機/服務(wù)器體系結(jié)構(gòu)
這類系統(tǒng)被看成是提供一組服務(wù)供客戶機使用,客戶機和服務(wù)器被分別對待,數(shù)據(jù)以及加工過程在多個處理機之間分配??蛻魴C/服務(wù)器體系結(jié)構(gòu)模型的一般形式如圖3-24所示:3.8.3軟件體系結(jié)構(gòu)的現(xiàn)狀及發(fā)展方向2023/1/1265圖3-24客戶機/服務(wù)器體系結(jié)構(gòu)這種模型的主要組成元素是:一組提供服務(wù)的單機服務(wù)器;一組向服務(wù)器請求服務(wù)的客戶機;一個連接服務(wù)器與客戶機的網(wǎng)絡(luò)。
1.客戶機/服務(wù)器體系結(jié)構(gòu)2023/1/12661.客戶機/服務(wù)器體系結(jié)構(gòu)
在Internet/Intranet領(lǐng)域,目前“瀏覽器—Web服務(wù)器—數(shù)據(jù)庫服務(wù)器”結(jié)構(gòu)是一種非常流行的客戶機/服務(wù)器結(jié)構(gòu),如圖3-25所示。圖3-25“瀏覽器—Web、服務(wù)器—數(shù)據(jù)庫服務(wù)器”結(jié)構(gòu)2023/1/12673.8.3軟件體系結(jié)構(gòu)的現(xiàn)狀及發(fā)展方向
這類系統(tǒng)不再區(qū)別客戶機和服務(wù)器,系統(tǒng)被看成是交互的一組對象。系統(tǒng)的基本組件是對象,它提供一組服務(wù),并且對外給出這些服務(wù)的接口,其他對象可以調(diào)用這些服務(wù)。2.分布式對象體系結(jié)構(gòu)3.三層C/S軟件體系結(jié)構(gòu)對客戶機/服務(wù)器模型的一種修改方案是,將一部分數(shù)據(jù)處理邏輯或者商務(wù)邏輯移到服務(wù)器上。這種體系結(jié)構(gòu)有時稱為“兩層半體系結(jié)構(gòu)”。
2023/1/12683.8.3軟件體系結(jié)構(gòu)的現(xiàn)狀及發(fā)展方向
三層模型可以明顯地改善系統(tǒng)的可擴展性和可復(fù)用能力。三層體系結(jié)構(gòu)有時也稱為多層或N層體系結(jié)構(gòu),這是因為三層中的每一層(尤其是商務(wù)層)可能進一步劃分成若干子層。三層模型中的用戶層、商務(wù)層和數(shù)據(jù)層是一種邏輯劃分,圖3-26表示出了這三層之間的邏輯關(guān)系。圖3-26三層應(yīng)用體系結(jié)構(gòu)模型2023/1/12693.8.4軟件體系結(jié)構(gòu)的描述方法
軟件設(shè)計的目標之一是導(dǎo)出系統(tǒng)的體系結(jié)構(gòu)透視圖,通常,可以用結(jié)構(gòu)圖描述。把結(jié)構(gòu)圖作為一個框架,它是詳細設(shè)計的基礎(chǔ)。人機界面問題域任務(wù)管理數(shù)據(jù)管理1.系統(tǒng)的層次結(jié)構(gòu)與塊狀結(jié)構(gòu)系統(tǒng)的體系結(jié)構(gòu)可以考慮兩種主要組織結(jié)構(gòu),即層次組織結(jié)構(gòu)與塊狀組織結(jié)構(gòu)。但是系統(tǒng)本身可能是—個復(fù)合型體系結(jié)構(gòu)。塊狀結(jié)構(gòu)把系統(tǒng)垂直地分解成若干個相對獨立的低耦合的子系統(tǒng),一個子系統(tǒng)相當于一塊,每塊提供一種類型的服務(wù),所以稱為塊狀組織形式。系統(tǒng)的塊狀結(jié)構(gòu)如圖3-27所示:圖3-27系統(tǒng)的塊狀結(jié)構(gòu)2023/1/123.8.4軟件體系結(jié)構(gòu)的描述方法
層次結(jié)構(gòu)把軟件系統(tǒng)組織成一個層次結(jié)構(gòu)的形式,上層在下層的基礎(chǔ)上建立,下層為上層提供必要的服務(wù)。位于同一層的多個軟件或者子系統(tǒng),具有同等的通用度(通用性程度),低層的軟件比高層的軟件更具有通用性,每一層可以視為同等通用檔次的一組子系統(tǒng)。系統(tǒng)層次結(jié)構(gòu)如圖3-28所示。圖3-28系統(tǒng)層次結(jié)構(gòu)2023/1/12713.8.4軟件體系結(jié)構(gòu)的描述方法2.基于構(gòu)件系統(tǒng)的分層體系及引用關(guān)系
為了確保分層系統(tǒng)的管理,規(guī)定在一個系統(tǒng)內(nèi),高層可以重用低層的構(gòu)件,低層不能重用高層的構(gòu)件。分層系統(tǒng)的管理如圖3-29示。圖3-29分層系統(tǒng)及引用關(guān)系2023/1/12723.8.4軟件體系結(jié)構(gòu)的描述方法3.創(chuàng)建者、支持者與重用者
為了實施軟件的重用,軟件開發(fā)單位往往要考慮3個子系統(tǒng),即創(chuàng)建者子系統(tǒng)、支持者子系統(tǒng)與重用者子系統(tǒng)。基于重用性控制系統(tǒng)如圖3-30所示。圖3-30基于重用性控制系統(tǒng)2023/1/12733.9軟件體系結(jié)構(gòu)與操作系統(tǒng)3.9.1分層結(jié)構(gòu)對于開發(fā)人員來說,操作系統(tǒng)代表了一個平臺。平臺在計
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 年度B2B電子商務(wù)戰(zhàn)略市場規(guī)劃報告
- 年度高分子復(fù)合材料競爭策略分析報告
- 2025個人公司股權(quán)轉(zhuǎn)讓合同范本:股權(quán)分割與權(quán)益調(diào)整4篇
- 2024離婚財產(chǎn)分割協(xié)議公證與遺產(chǎn)分割
- 2024蔬菜大棚溫室租賃與農(nóng)業(yè)科技研發(fā)服務(wù)合同3篇
- 課程設(shè)計要不要上課呢
- 《電子商務(wù)概論》課件
- 增加頂管施工方案
- 二零二五版民法典離婚協(xié)議書樣本與專業(yè)律師服務(wù)協(xié)議4篇
- 2025年暑期學(xué)生兼職工作質(zhì)量及效果評估協(xié)議3篇
- 2025年中國重汽集團招聘筆試參考題庫含答案解析
- 教師招聘(教育理論基礎(chǔ))考試題庫(含答案)
- 2024年秋季學(xué)期學(xué)校辦公室工作總結(jié)
- 鋪大棚膜合同模板
- 長亭送別完整版本
- 智能養(yǎng)老院視頻監(jiān)控技術(shù)方案
- 你比我猜題庫課件
- 無人駕駛航空器安全操作理論復(fù)習(xí)測試附答案
- 建筑工地春節(jié)留守人員安全技術(shù)交底
- 默納克-NICE1000技術(shù)交流-V1.0
- 蝴蝶蘭的簡介
評論
0/150
提交評論