




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1第5章 總體設計25.1 設計過程5.2 設計原理5.3 啟發(fā)規(guī)則5.4 描繪軟件結構的圖形工具5.5 面向數據流的設計5.6 小結主要內容主要內容軟件過程模型軟件生命周期5 總體設計4軟件設計 階段需求開發(fā)體系結構設計界面設計數據設計過程設計編程與測試總體設計詳細設計5678DFD91、模塊化2、抽象3、逐步求精4、信息隱藏和局部化5、模塊獨立5.2 設計原理105.2.1 模塊化(Modularity)模塊模塊:由邊界元素限定邊界元素限定的相鄰程序元素的序列,而且有一個總體標識符代表它。(本質:本質:具有相對獨立性的程序段)E.g.,PASCAL語言中的BeginEnd,或者C、C+與J
2、ava中的對,都是邊界元素。注:注:過程、函數、子程序、宏等都可作為模塊。模塊是構成程序的基本構件模塊是構成程序的基本構件。模塊化:模塊化:把程序劃分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構成一個整體,可以完成用戶指定的功能以滿足用戶的需求。為什么采用模塊化u經驗:一個大問題拆成多個小問題解決更容易u但是也不要無限的細分模塊12各個擊破各個擊破結構清晰可修改性好易測試和調試13 模塊化和成本的關系接口成本接口成本圖5.1 模塊化和軟件成本規(guī)模145.2.2 抽象什么是抽象?認識復雜事物的思維工具抽取事物的本質特性,暫時不考慮它們的細節(jié) 處理處理復雜系統(tǒng)復雜系統(tǒng)
3、的唯一有效的方法是用的唯一有效的方法是用層次層次的方式構造和分析它的方式構造和分析它。 一個復雜的動態(tài)系統(tǒng)首先可以用一些一個復雜的動態(tài)系統(tǒng)首先可以用一些高級的抽象概念高級的抽象概念構造和理解構造和理解 高級概念又可以用一些較高級概念又可以用一些較低級的概念構造低級的概念構造和理解,如此進行下去,和理解,如此進行下去,直至直至最低層次最低層次的具體元素。的具體元素。 在最高的抽象層次上,以概括的方式概括的方式敘述問題的解法;在較低的抽象層次上,則采用過程化的方法過程化的方法;在最低抽象層次上,以直接直接實現的方式實現的方式敘述問題的解法。上下級關系的層次結構上下級關系的層次結構 15在軟件工程過
4、程中,從系統(tǒng)定義到實現,每進展一步都可以看做是對軟件解決方案的抽象化過程的一次細化。5.2.2 抽象 可行性研究階段可行性研究階段,軟件作為系統(tǒng)的一個完整部件完整部件;需求分析期間需求分析期間,軟件解法是使用在問題環(huán)境內熟悉的方式描述;由總體設計向詳細設計過渡總體設計向詳細設計過渡時,抽象的程度也就隨之減少減少了;源程序源程序寫出來以后,也就達到了抽象的最低層最低層。逐步求精逐步求精16可以把逐步求精定義為:“為了能集中精力解決主要問題而盡量推遲對問題細節(jié)的考慮?!鼻缶羌毣^程。5.2.3 逐步求精 逐步求精:抽象-具體u忽略細節(jié),u分層理解問題,u自頂向下層層加細175.2.3 逐步求精
5、進門進門走到門前走到門前;摸到把手摸到把手;開門開門;走進去走進去;關門關門;while(門沒打開門沒打開) 轉動把手轉動把手; if(把手轉不動把手轉不動) 掏出鑰匙掏出鑰匙; 找到正確的鑰匙找到正確的鑰匙; 插入鎖孔插入鎖孔; 轉動鑰匙轉動鑰匙; 推推/拉拉門門;18Miller法則:一個人在任何時候都只能把注意力集中在(72)個知識塊上。但是,在開發(fā)軟件的過程中,軟件工程師在一段時間內需要考慮的知識塊數遠遠多于7。例如,一個程序通常不止使用個數據,一個用戶也往往有不止7個方面的需求。逐步求精方法的強大作用就在于,它能幫助軟件工程師把精力集中在與當前開發(fā)階段最相關的那些方面上,而忽略目前還
6、不需要考慮的細節(jié),這些細節(jié)將留到以后再考慮。5.2.3 逐步求精19 應用模塊化原理時,自然會產生的一個問題是:“為了得到最好的一組模塊,應該怎樣分解軟件呢?”信息隱藏原理指出信息隱藏原理指出:應該這樣設計和確定模塊:一個模塊內包含的信息(過程和數據)對于不需要這些信息的模塊來說,是不能訪問的。5.2.4 信息隱藏20局部化局部化的概念和信息隱藏概念是密切相關的。所謂局部化局部化是指把一些關系密切關系密切的軟件元素物理地放得彼此靠近。在模塊中使用局部數據元素是局部化的一個例子。局部化有助于實現信息隱藏。隱藏的一般是模塊的實現細節(jié),故又稱隱藏的一般是模塊的實現細節(jié),故又稱“細節(jié)隱藏細節(jié)隱藏”21
7、接口模塊5.2.4 信息隱藏“秘密”用戶 算法算法 數據結構數據結構 外部接口的實現細節(jié)外部接口的實現細節(jié) 資源分配方式資源分配方式 .接口225.2.4 信息隱藏為什么要信息隱藏?u減少局部設計對全局的影響u強調通過接口來進行通信u不鼓勵使用全局數據u有助于實現封裝u有助于提高軟件的質量23模塊化、抽象、信息隱藏和局部模塊化、抽象、信息隱藏和局部化的直接結果化的直接結果?模塊獨立模塊獨立245.2.5 模塊獨立 開發(fā)具有獨立功能而且和其他模塊間沒有過多的相互作用的模塊,就可以做到模塊獨立。即:每個模塊有相對獨立的特定功能,與其他模塊間的關系較為簡單. 模塊獨立性的重要性:(1)具有獨立模塊的
8、軟件容易開發(fā);(2)獨立的模塊容易測試與維護。 模塊獨立是好設計的關鍵,而設計又是決定軟件質量的關鍵環(huán)節(jié)。 模塊的獨立程度可由兩個定性標準度量:(1)耦合耦合:衡量不同模塊間相互依賴的緊密程度;(2)內聚內聚:衡量一個模塊內部各個元素彼此結合的緊密程度25耦合程度越低,模塊之間的獨立性越好26數據耦合 定義:定義:如果兩個模塊間通過參數交換信息,而且交換的信息僅僅是數據,屬于低耦合低耦合范疇 系統(tǒng)中至少必須必須存在這種耦合; 一般來說,一個系統(tǒng)內可以只包含只包含數據耦合27main()int sum (int result, int n) int i; int sum = 0; for (i
9、= 0; i n; i +) sum += resulti; return sum;float division (int sum, int n) if (n!=0) return sum/n;學生成績人數成績之和平均成績成績和,人數28控制耦合一個模塊通過傳送開關、標志、名字等控制信息,明顯地控制選擇另一模塊的功能,屬于中等程度中等程度的耦合。2930A:.A1=V1+V2.B:.V1 = B1.Global: V1 、 V2Global: V1、V2A:.V1 +.B:.V2 = B1+V1.32導致的問題導致的問題公共環(huán)境耦合特點公共環(huán)境耦合特點:公共部分的改動公共部分的改動將影響所有調
10、用它的模塊公共部分的數據存取無法控數據存取無法控制系統(tǒng)復雜程度系統(tǒng)復雜程度隨耦合模塊的個數增加而增加33ABA:.goto label.C:.lable: .DC34影響耦合強弱因素:3536內聚標志一個模塊內,各個元素彼此結合的緊密程度,它是信息隱藏和局部化概念的自然擴展。設計目標:高內聚高內聚理想的內聚模塊只做一件事。模塊內的高內聚往往意味著模塊間的松耦合內聚 Cohesion37在偶然內聚的模塊中,各種元素之間沒有實質性聯系,很可能在一種應用場合需要修改這個模塊,在另一種應用場合又不允許這種修改,從而陷入困境。如果一個模塊完成一組任務,這些任務彼此間即使有關系,關系也是很松散的38 或者
11、一組語句在兩處或多處出現(作為一個模塊以節(jié)省內存):ABACAcall ABcall AC39如果一個模塊完成的任務,在邏輯上屬于相同或相似的一類40int ReadInputs (int device) switch (device) case 0: return ReadFromDisk(); case 1: return ReadFromTape(); case 2: return ReadFromKeyboard(); . 把邏輯上功能相似的數據和代碼放在同一把邏輯上功能相似的數據和代碼放在同一個模塊里個模塊里41void Initialize() InitScreen(); Init
12、Memery(); InitLogFile(); .void Failure() CancelAllServices(); NotifyOperator(); RecordFailure(); .42根據程序程序流程圖流程圖確定的模塊劃分,這樣得到的往往是過程內聚的模塊4344順序內聚:順序內聚:如果一個模塊內的處理元素和同一個功能密切相關,而且這些處理必須順序執(zhí)行通常一個處理元素的輸出數據作為下一個下一個處理元素的輸人輸人數據數據根據數據流數據流圖圖劃分模塊時,得到的往往是順序內聚的模塊int average (int result, int n) int i; int sum = 0; i
13、nt ave; for (i = 0; i 描繪軟件結構的層次圖結構的層次圖定義了一些不同的“映射”,利用這些映射可以把數據流圖變換成軟件結構。64背景材料Edward Yourdonu軟件領域最有影響力的人士之一u被選入計算機名人堂u超過25本專著,包括結構化方法的開山之作結構化方法的開山之作 Structured Design、面向對象方法的經典面向對象方法的經典Object Oriented Analysis和Object Oriented Design,項目管理名著項目管理名著Death Marchu創(chuàng)立創(chuàng)立了結構化方法結構化方法和Coad/Yourdon方法u建立建立并領導了YOUR
14、DON咨詢公司65背景材料結構化方法u即SASD方法,也稱為面向功能的開發(fā)方法或面向數據流的開發(fā)方法u1978年,由Yourdon和L. L. Constantine提出u1979年,Tom DeMarco對此方法進行了完善u它首先用結構化分析結構化分析(SA)進行需求分析需求分析,然后用結構化設計結構化設計(SD)方法進行總體設計總體設計,最后是結構化編程結構化編程(SP)u該方法開發(fā)步驟明確,SA-SD-SP一氣呵成,而且給出了兩類典型的軟件結構兩類典型的軟件結構(變換型和事務型),便于參照,使得開發(fā)成功率大大提高665.5.1 概念數據流分類:變換流事務流 5.5 面向數據流的設計方法6
15、7信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內部形式外部形式變換成內部形式,進入系統(tǒng)的信息通過變換中心變換中心,經加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。1. 變換流事實上所有的信息流都可歸結為變換流68這種數據流是“以事務為中心的以事務為中心的”,即數據沿輸入通路到達一個處理處理T,這個處理T根據輸入數據的類型,在若干個動作序列中選出一個來執(zhí)行。處理處理T稱為事務中心稱為事務中心,完成下述任務:(1) 接收輸入數據(輸入數據又稱為事務);(2) 分析每個事務以確定它的類型;(3) 根據事務類型選取選取一條活動通路。2 事務流69是一系列設計步驟的總稱總稱,經過這些步驟,把具有變
16、換流特點的數據流圖,按預先確定的模式,映射映射成軟件結構成軟件結構。下面通過一個例子說明變換分析的方法。701.例子: 汽車數字儀表板的設計。5.5.2 變換分析智能產品設計包含軟件設計71假設的儀表板將完成下述功能功能:(1) 通過模數轉換實現傳感器和微處理機接口;(2) 在發(fā)光二極管面板上顯示數據;(3) 指示每小時英里數(mph),行駛的里程,每加侖油行駛的英里數(mpg)等等;(4) 指示加速或減速;(5) 超速警告:如果車速超過55英里/小時,則發(fā)出超速警告鈴聲。軟件需求分析階段(需求分析階段(SA)-每條要求以及系統(tǒng)的其他特點進行全面的分析評價-建立起必要的文檔資料(數據流圖數據流
17、圖DFD).結構化設計結構化設計SD(面向數據流設計)(面向數據流設計)結構化編程結構化編程SP72設計步驟設計步驟第第1步步 復查基本系統(tǒng)模型,確保輸入數據和輸出數據符合實際。第第2步步 復查并精化數據流圖精化數據流圖。第第3步步 確定數據流圖具有變換特性變換特性還是事務特性事務特性。第第4步步 確定輸入流和輸出流的邊界邊界,從而孤立出變換中心變換中心。第第5步步 完成“第一級分解一級分解”。第第6步步 完成“第二級分解第二級分解”。第第7步步 使用設計度量設計度量(耦合與內聚)(耦合與內聚)和啟發(fā)式規(guī)則啟發(fā)式規(guī)則對第一次分割得到的軟件結構進一步精化。73功能功能:(1) 通過模數轉換實現傳
18、感器和微處理機接口;(2) 在發(fā)光二極管面板上顯示數據顯示數據;(3) 指示每小時英里數每小時英里數(mph),行駛的里程行駛的里程,每加侖油行駛每加侖油行駛的英里數的英里數(mpg)等等;(4) 指示加速或減速加速或減速;(5) 超速警告超速警告:如果車速超過55英里/小時,則發(fā)出超速警告鈴聲。75輸入流和輸出流的邊界邊界,從而孤立出變換中心變換中心76設計步驟設計步驟 . 輸入信息處理控制模塊Ca,協(xié)調對所有輸入數據的接收協(xié)調對所有輸入數據的接收; 變換中心控制模塊Ct,管理管理對內部形式的數據的所有操作操作; 輸出信息處理控制模塊Ce,協(xié)調輸出信息協(xié)調輸出信息的產生過程。能夠完成控制功能
19、并且保持好的耦合和內聚特性的前提下,盡量使第一級控制中的模塊數目取最小值第一級控制中的模塊數目取最小值。第第一一級級分分解解77第二級分解第二級分解7879兩條輸入通路(第二層分解)兩條輸入通路(第二層分解)80五條輸出通路(第二層分解)五條輸出通路(第二層分解)81變換中心(第二層分解)變換中心(第二層分解)82第二級分解第二級分解進一步精化進一步精化83使用設計度量(耦合與內聚)和啟發(fā)式規(guī)則,進一步精化(修改)使用設計度量(耦合與內聚)和啟發(fā)式規(guī)則,進一步精化(修改)輸入結構中的模塊“轉換成轉換成rpm”和和“收集收集sps”可以合并;模塊“確定加速確定加速/減速減速”可以放在模塊可以放在模塊“計算計算mph”下面,以減少耦合;模塊“加速加速/減速顯示減速顯示”可以相應地放在模塊“顯示顯示mph”的下面的下面。84注:每個模塊應附一簡要說明描述u進出該模塊的信息(接口描述)u模塊內部的信息u過程陳述,包括主要判定點及任務等u對約束和特殊特點的簡短討論總體設計與寫程序的區(qū)別:軟件的整體結構全局的高度評價和精化軟件程序代碼是對某個功能模塊的實現,不能體現全局高度855.5.3 事務分析86圖5.20 事務分析的映射方法l接收分支接收分支l發(fā)送分支發(fā)送分支發(fā)送分
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 競業(yè)禁止協(xié)議及知識產權歸屬合同(針對管理人員)
- 抖音短視頻平臺與火花金融科技大數據合作框架協(xié)議
- 抖音抖音號注銷及用戶個人信息保護合同
- ICU腦出血護理要點與規(guī)范
- 中班網絡安全教育教案
- 艾滋病防治宣傳教育活動策劃方案
- 外企消防安全管理體系培訓
- 現代醫(yī)學理論解讀
- 酒店管理崗位中介合同(2篇)
- 崗位流程培訓體系
- 幼兒園語言教育的應對困難與挑戰(zhàn)策略
- 4、易制爆化學品安全教育培訓制度
- 冷卻塔減速機振動標準
- 2023黑龍江大慶市大同區(qū)人才引進高頻考點題庫(共500題含答案解析)模擬練習試卷
- 認識橋梁課件
- 北大強基試題
- 河南省機關事業(yè)單位退休人員一次性退休補貼審核表
- 英文電影鑒賞智慧樹知到答案章節(jié)測試2023年北華大學
- 教練技術三階段講義
- GB/T 27760-2011利用Si(111)晶面原子臺階對原子力顯微鏡亞納米高度測量進行校準的方法
- GB/T 223.26-2008鋼鐵及合金鉬含量的測定硫氰酸鹽分光光度法
評論
0/150
提交評論