總體設計和應用_第1頁
總體設計和應用_第2頁
總體設計和應用_第3頁
總體設計和應用_第4頁
總體設計和應用_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第4章 總體(概要)設計 本章重要知識點:軟件體系結構概要設計任務與步驟軟件設計的基本概念面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)結構的分析設計方法概要設計文檔評審對軟件需求有了完整、準確、具體的理解之后,就要通過設計來實現(xiàn)該需求。傳統(tǒng)的軟件工程方法學采用結構化設計技術,完成軟件設計工作。結構化設計可分為兩個階段:概要設計和詳細設計。概要設計主要解決的問題:從黑盒級劃分出組成系統(tǒng)的物理元素(程序,文件,數(shù)據(jù)庫,文檔等);設計出組成軟件的主要模塊及其之間的關系.詳細設計主要解決的問題:設計實現(xiàn)模塊的算法和數(shù)據(jù)結構.軟件體系結構概述軟件體系結構(Software Architecture,SA)定義軟件系統(tǒng)實

2、現(xiàn)的藍圖,從一個較高抽象層次考慮組成系統(tǒng)的構件及其之間的交互,以及構件及其交互形成的拓撲結構關系。體系結構的設計過程1)系統(tǒng)結構化:分解成子系統(tǒng),劃分子系統(tǒng)之間的通信.2)控制建模:建立各部分之間的控制關系的一般模型.3)模塊分解:子系統(tǒng)進一步分解成模塊.常見軟件體系結構風格以數(shù)據(jù)為中心的體系結構;數(shù)據(jù)流體系結構;調用和返回體系結構;面向對象體系結構;層次式體系結構。數(shù)據(jù)存儲客戶軟件客戶軟件客戶軟件客戶軟件客戶軟件客戶軟件數(shù)據(jù)為中心的體系結構過濾器過濾器過濾器數(shù)據(jù)流體系結構過濾器用戶界面層應用層實用層核心層表示構件層次式體系結構體系結構設計的定量分析目前在體系結構設計質量定量分析方面的研究尚處

3、于起步階段。Asada提出了偽定量技術的簡單模型幫助設計者確定體系結構滿足預定義的“好”標準的程度.這些標準稱為設計量綱(Design Dimension),包括軟件的質量屬性:可靠性、安全性、可維護性、可測試性、可移植性、可復用性等。Asada提出的簡單模型可分為:頻譜分析(Spectrum analysis)模型設計選擇分析(Design selection analysis)模型貢獻分析(Contribution analysis)模型Belady將軟件設計分為兩個階段:多樣化(Diversification):獲得所有可選事物和未加工的設計材料,如構件、解決方案和知識;收斂(conve

4、rgence):設計者從設計材料中選擇和組合合適元素,以滿足設計目標。這是一個不斷刪除的過程。數(shù)據(jù)字典狀態(tài)轉換圖控制規(guī)格說明數(shù)據(jù)流圖處理規(guī)格說明實體關系圖數(shù)據(jù)對象描述過程設計接口設計體系結構設計數(shù)據(jù)設計分析模型轉變成軟件設計示意圖系統(tǒng)構成體系結構的三個標準模型 :1.容器模型:適合于數(shù)據(jù)是由一個子系統(tǒng)產生而由其他子系統(tǒng)使用的情形。 2.客戶機/服務器模型:是一個分布式系統(tǒng)模型,數(shù)據(jù)和處理過程可分配在多個處理器之中。 3.抽象機模型:有時叫做分層模型,是用來建立子系統(tǒng)的接口模型??刂颇P?集中式控制:一個子系統(tǒng)被指定為系統(tǒng)控制器來負責管理其他系統(tǒng)的執(zhí)行。 調用返回模型:自上而下的子過程模型,控制

5、始于子程序層次的頂層,在調用過程中,控制逐步傳遞到更低的層次中。該模型只適用于順序執(zhí)行的系統(tǒng)。管理者模型:一個系統(tǒng)組件被指定為系統(tǒng)管理者,它控制其他系統(tǒng)過程的啟動、終止和協(xié)調。一個過程就是一個能和其他過程并發(fā)執(zhí)行的子系統(tǒng)或模塊。2事件驅動系統(tǒng):通過外部產生的事件來驅動系統(tǒng) 。廣播模型:在這些模型中,理論上事件是廣播到所有子系統(tǒng)的。任何能處理該事件的子系統(tǒng)都會響應。中斷驅動模型:該模型專門用于實時系統(tǒng)中,由中斷處理器對來自外部的中斷進行檢測,然后在其他組件中處理這些中斷。1概要設計的主要任務系統(tǒng)分析員審查軟件計劃、需求分析,提出最佳推薦方案。確定模塊結構,劃分功能模塊。編寫概要設計說明書、用戶手

6、冊、測試計劃,選用相關的軟件工具來描述軟件結構,選擇分解功能與劃分模塊的設計原則。概要設計的任務與步驟概要設計過程分兩個主要階段:系統(tǒng)設計階段:確定系統(tǒng)的具體實現(xiàn)方案;結構設計階段:確定軟件結構。2.典型的總體設計過程包括9個步驟:1)設想供選擇的方案2)選取合理的方案通常至少選取低成本、中等成本和高成本的三種方案。對每個合理的方案都應該準備下列4份資料: (1) 系統(tǒng)流程圖; (2) 組成系統(tǒng)的物理元素清單; (3) 成本/效益分析; (4) 實現(xiàn)這個系統(tǒng)的進度計劃。3)推薦最佳方案綜合分析對比各種合理方案的利弊,推薦一個最佳方案,并制定詳細實現(xiàn)計劃。 用戶和有關技術專家應該認真審查分析員所

7、推薦的最佳方案。4.)功能分解對程序(特別是復雜的大型程序)的設計,通常分為結構設計和過程設計。結構設計確定程序由哪些模塊組成,以及這些模塊之間的關系;過程設計確定每個模塊的處理過程。結構設計是總體設計階段的任務,過程設計是詳細設計階段的任務。為確定軟件結構需要從實現(xiàn)角度把復雜功能進一步分解為一系列簡單功能。5.)設計軟件結構 一個模塊完成一個適當?shù)淖庸δ堋摪涯K組織成良好的層次系統(tǒng),軟件結構(即由模塊組成的層次系統(tǒng))可以用層次圖或結構圖來描繪,第節(jié)將介紹這些圖形工具。從數(shù)據(jù)流圖映射出軟件結構,這就是第節(jié)中將要講述的面向數(shù)據(jù)流的設計方法。6)設計數(shù)據(jù)庫與文件結構7)制定測試計劃8)書寫文檔

8、系統(tǒng)說明:主要包括系統(tǒng)構成方案,物理元素清單,成本/效益分析等。用戶手冊:根據(jù)總體設計階段產生的初步的用戶手冊。測試計劃包括測試策略,測試方案,預期的測試結果,測試進度計劃等。詳細實現(xiàn)計劃數(shù)據(jù)庫設計結果9)審查和復審進行技術審查和管理復審。軟件設計的概念和原理模塊化抽象逐步求精信息隱藏和局部化模塊獨立(耦合和類聚)4.3.1.模塊化與模塊獨立1)模塊(Module)是由邊界元素限定的相鄰的程序元素的序列,且有一個總體標識符來代表它(如過程、函數(shù)、子程序名等),是構成程序的基本構件.2)模塊化(Modularity)即把程序劃分成若干個相對獨立的模塊,每個模塊完成一定功能,集成起來形成一個整體,

9、完成系統(tǒng)的功能。軟件體系結構(Software Architecture, SA)體現(xiàn)了模塊化。SA包括構件(模塊)的層次結構、構件間的交互方式和構件的數(shù)據(jù)結構等。模塊化的根據(jù): C(P1)C(P2) (問題P1和P2復雜程度) E(P1)E(P2) (工作量(時間) C(P1+P2)C(P1)+C(P2) E(P1+P2)E(P1)+E(P2)結論:把復雜的問題分解成許多容易解決的小問題,原來的問題也就容易解決了。模塊數(shù)目成本成本/模塊接口成本軟件總成本最小成本 模塊化與軟件成本關系圖結論:模塊的數(shù)量應該適當(最小成本區(qū))。軟件結構清晰,容易設計、閱讀和理解;開發(fā)過程中便于組織管理(“分而治

10、之”的思想).提出評價模塊化的5條標準:模塊的可分解性、可組裝性、可理解性、連續(xù)性和保護性。抽象與逐步求精1.抽象(Abstraction)即忽略事物之間的差異而對其共同本質特征加以集中和概括。軟件開發(fā)過程是一個逐步求精,由抽象到具體的漸進過程(問題定義需求分析概要設計詳細設計編碼).2.逐步求精即“為了能集中精力解決主要問題而盡量推遲對問題細節(jié)的考慮”,是人類解決復雜問題時采用的基本技術,是許多軟件工程技術的基礎。認知過程的Miller(72)法則:一個人在任何時候都只能把注意力集中在72個知識塊上。 逐步求精最初是由Niklaus Wirth提出的一種自頂向下的設計策略.按照這種設計策略,

11、程序的體系結構是通過逐步精化處理過程的層次而設計出來的.抽象和求精是互補的概念。抽象使設計者重視過程和數(shù)據(jù),忽略底層細節(jié);求精則幫助設計者揭示底層細節(jié)。3.信息隱藏(Information Hiding)原理:軟件開發(fā)過程中設計和確定模塊時,應使模塊內所包含的信息(數(shù)據(jù)和過程)對于不需要這些信息的模塊來說,是不能訪問的(隱蔽模塊的實現(xiàn)細節(jié))。4.局部化原理:把模塊內關系密切的軟件元素物理地放得彼此靠近些。作用: a.提高系統(tǒng)安全性; b.軟件結構更清晰。模塊獨立是模塊化、抽象、逐步求精和信息隱蔽等概念應用的直接結果,也是模塊設計的基本要求(即每個模塊完成一個相對獨立的特定子功能,并且和其他模塊

12、之間的關系盡量簡單)。模塊獨立是決定軟件質量的關鍵有效模塊化的軟件容易開發(fā);獨立的模塊容易維護和測試。評價模塊獨立性的兩個重要指標1.耦合(Coupling)是不同模塊之間彼此相互依賴的緊密程度。耦合的強弱取決于模塊之間接口的復雜程度、進入或訪問的點數(shù)以及通過接口的數(shù)據(jù).軟件設計盡可能追求松散耦合的系統(tǒng).耦合分為:數(shù)據(jù)耦合;控制耦合;公共環(huán)境耦合;內容耦合。設計原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共環(huán)境耦合,完全不用內容耦合.2.內聚(Cohesion)是一個模塊內部各個元素之間彼此結合的緊密程度。理想類聚的模塊只做一件事情。內聚的種類:a.低內聚:偶然內聚、邏輯內聚和時間內聚;b.中

13、內聚:過程內聚和通信內聚;c.高內聚:順序內聚和功能內聚。設計原則:力爭做到高內聚。啟發(fā)式規(guī)則1.改進軟件結構提高模塊獨立性通過模塊分解和合并的辦法來降低耦合、提高內聚,以提高模塊獨立性。2.模塊規(guī)模應該適中實驗現(xiàn)象:一個模塊最好能寫在一頁紙內(60行),當程序語句超過30行時,其可讀性大大降低。結論:模塊規(guī)模不能太大,否則就要分解它。過多的模塊數(shù)使接口復雜,規(guī)模很小且調用次數(shù)很少的模塊要與其他模塊合并.3.深度、寬度、扇出和扇入都應適當深度:表示軟件結構中控制的層數(shù),能大體上反映一個系統(tǒng)的大小和復雜程度。寬度:軟件結構內同一個層次上模塊總數(shù)的最大值。一般地說,寬度越大,系統(tǒng)越復雜。扇出:模塊

14、直接控制的模塊數(shù)目.扇出過大, 需要控制和協(xié)調過多的下級模塊.扇入:直接調用某個模塊的模塊個數(shù)。在提高模塊共享性的同時,不能違背獨立性原則。結論:頂層扇出高,中間扇出小,底層扇入高。4.模塊的作用域應該在控制域之內作用域:受該模塊內一個判定影響的所有模塊的集合。控制域:該模塊本身及直接或間接從屬于它的模塊集合。調整的辦法:移動判定點或移動模塊。MAGBCDEF模塊的作用域與控制域MABCDEF模塊G移到A的控制域內G5.設計單入口單出口的模塊模塊間不要出現(xiàn)內容耦合。6.力爭降低模塊接口的復雜程度模塊接口復雜是軟件發(fā)生錯誤的主要原因。模塊接口設計應使信息傳遞簡單且和模塊的功能一致。7.模塊功能應

15、該可以預測只要輸入的數(shù)據(jù)相同就產生相同的輸出,則該模塊的功能就是可以預測的。面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)流的設計方法的目標是給出設計軟件結構的一個系統(tǒng)化的途徑,即怎樣把數(shù)據(jù)流圖變換成軟件體系結構,所以,又稱為結構化設計方法(SD)。軟件體系結構(Software Architecture,SA)定義軟件系統(tǒng)實現(xiàn)的藍圖,從一個較高抽象層次考慮組成系統(tǒng)的構件及其之間的交互,以及構件及其交互形成的拓撲結構關系。概念面向數(shù)據(jù)流的設計方法把信息流映射成軟件體系結構,信息流的類型決定了映射的方法。信息流有兩種類型: 1.變換流; 2.事務流。信息沿輸入通路進入系統(tǒng),由外部形式變換成內部形式,經過變換中心加

16、工處理以后,沿輸出通路變換成外部形式離開軟件系統(tǒng),這種信息流稱為變換流.其重點是數(shù)據(jù)的輸入、處理、輸出。外部表示內部表示信息輸入流輸出流變換流信息流時間數(shù)據(jù)沿輸入通路到達一個處理,該處理根據(jù)輸入數(shù)據(jù)的類型在若干個動作序列中選出一個來執(zhí)行,這種信息流稱為事務流.其重點是事務處理(動作)。T活動通路事務事務中心 事務流系統(tǒng)結構圖的組成描述系統(tǒng)整體結構的圖形符號如下,它是系統(tǒng)設計中反映系統(tǒng)功能模塊層次分解關系、調用關系、數(shù)據(jù)流和控制信息流傳遞關系的一種重要工具,由模塊、調用、數(shù)據(jù)、控制信息4種基本符號組成。 變換分析 變換分析是一系列設計步驟的總稱,通過汽車數(shù)字儀表板的設計來說明變換分析的方法。汽車

17、數(shù)字儀表板功能如下:通過A/D轉換實現(xiàn)傳感器和微處理機接口;在發(fā)光二極管面板上顯示數(shù)據(jù);指示速度、行駛里程、單位油耗行駛里程等;指示加減速和超速警告等。設計步驟:復查基本系統(tǒng)模型;復查并精化數(shù)據(jù)流圖;確定數(shù)據(jù)流圖具有變換特性還是事務特性;確定輸入/輸出流的邊界,孤立出變換中心;完成第一級分解(因子化);完成第二級分解(因子化) ;對軟件結構進一步精化。旋轉信號Signal/sSignal/s箭頭指示上箭頭水平線下箭頭燃料流傳感器信號燃料流Gal/hSignal/sr/minr/min英里超速值mile/hmile/h顯示鈴聲顯示mile/hmile/Galmile/Gal顯示劃分邊界的數(shù)據(jù)流圖

18、第一級分解(因子化)第一級分解(因子化)的作用是分配控制,即將數(shù)據(jù)流圖映射成特定的軟件結構,該結構控制輸入、變換和輸出等信息處理過程。劃分邊界的數(shù)據(jù)流圖可分解為如下結構:數(shù)字儀表板控制接受傳感器信號數(shù)據(jù)轉換控制驅動儀表板輸入控制變換控制輸出控制 數(shù)字儀表板系統(tǒng)的第一級分解第二級分解(因子化)第二級分解(因子化)就是把數(shù)據(jù)流圖中的每個處理映射成軟件結構中一個適當?shù)哪K。方法是:沿輸入/輸出路徑向外,將變換依次映射到從屬層的軟件結構中.CmCaCBDAADBC第二級分解的方法 未經精化的輸入結構精化后的數(shù)字儀表板系統(tǒng)的軟件結構事務分析事務分析與變換分析的設計步驟大體相同,其主要區(qū)別在于由數(shù)據(jù)流圖到

19、軟件結構的映射方法不同。由事務流映射成的軟件結構包括一個接收分支和一個發(fā)送分支。發(fā)送分支的結構包含一個調度模塊,它控制下層的所有活動模塊,然后把數(shù)據(jù)流圖案中的每個活動流通路映射成與它的特征相對應的結構。 事務分析的映射方法設計優(yōu)化1.軟件設計人員首先應該致力于按照設計原理和啟發(fā)規(guī)則設計能夠滿足功能要求和性能要求的軟件;2.在設計的早期對軟件結構進行精化;3.力爭做到結構簡單;4.在時間是決定性因素的場合,也可能在編程過程中優(yōu)化。優(yōu)化的準則:先使它能工作,然后再讓它快起來。面向數(shù)據(jù)結構的設計方法 面向數(shù)據(jù)流的設計方法是用于軟件結構的設計;面向數(shù)據(jù)結構的設計方法則是模塊內程序處理過程的設計方法。Jackson方法和Warnier方法是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論