工學軟件工程導論-6-詳細設計課件_第1頁
工學軟件工程導論-6-詳細設計課件_第2頁
工學軟件工程導論-6-詳細設計課件_第3頁
工學軟件工程導論-6-詳細設計課件_第4頁
工學軟件工程導論-6-詳細設計課件_第5頁
已閱讀5頁,還剩56頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、教學目標 掌握常用的詳細設計工具、了解人機界面設計問題、了解Jackson結構程序設計技術。教學重點 各種詳細設計工具的使用。教學難點 Jackson結構程序設計技術。第6章 詳細設計詳細設計的基本目的就是回答“詳盡、精確地描述系統各模塊的具體實現方法”。 詳細設計的結果基本決定了最終程序代碼的質量,其中包括:正確性、可讀性、效率。第6章 詳細設計第6章 詳細設計6.1 結構程序設計6.2 人機界面設計6.3 過程設計的工具6.4 面向數據結構的設計方法6.5 程序復雜程度的定量度量6.6 小結及作業結構程序設計的經典定義:“如果一個程序的代碼塊僅僅通過順序、選擇和循環這3種基本控制結構進行連

2、接,并且每個代碼塊只有一個入口和一個出口,則稱這個程序是結構化的。”消滅GOTO語句!僅用3種基本結構,稱為經典的結構程序設計;若還允許使用DO-CASE(多分支循環)、DO-UNTIL(直到型循環),成為擴展結構程序設計;如果在允許使用LEAVE(或BREAK,中斷)結構,則稱為修正結構程序設計。6.1 結構程序設計6.2 人機界面設計對于交互式系統來說,人機界面設計和數據設計、體系結構設計及過程設計一樣重要。直接影響用戶對軟件產品的評價,從而影響軟件產品的競爭力和壽命。人機界面目前所占的工作量越來越大。固定菜單下拉菜單在設計人機界面常會遇到下述4個問題:系統響應時間用戶幫助設施出錯信息處理

3、命令交互上述問題,最好在設計初期作為重要的設計問題來考慮,這時修改比較容易,代價也低。6.2.1 設計問題系統響應時間有兩個重要屬性,分別是長度和易變性。原則:避免相應時間過長或過短:響應時間過長,會感到沮喪;響應時間過短,會迫使用戶加快節奏,會犯錯。減少易變性。一般穩定較好,若發生變化,用戶往往比較敏感,擔心系統工作出現了異常。1. 系統響應時間常見的幫助設施可分為集成的(根據當前的應用進行的幫助)和附加的(需查詢使用)兩類。集成的幫助優于附加的幫助設施。具體設計幫助設施時,必須解決下述的 問題。(1) 幫助的程度:全部還是部分;(2) 如何實現幫助:菜單、功能鍵和HELP命令;(3) 怎樣

4、顯示幫助信息:獨立窗口、指出參考某個文檔(不理想)、顯示簡短;(4) 使用幫助后,如何返回原交互方式中:返回按鈕、功能鍵;(5) 如何組織幫助信息:平面結構、信息的層次結構和超文本結構。2. 用戶幫助設施交互式系統的出錯信息或警告信息,應該具有下述屬性:(1) 信息應該使用用戶可以理解的術語描述問題;(2) 信息應該提供有助于從錯誤中恢復的建設性意見;(3) 信息應該指出錯誤可能導致哪些負面后果(例如,破壞數據文件);(4) 信息應該伴隨著聽覺上或視覺上的提示,強化出現異常;(5) 信息不能帶有指責用戶的內容。當確實出現了問題的時候,有效的出錯信息能提高交互式系統的質量,減輕用戶的挫折感。3.

5、 出錯信息處理在多數情況下,用戶既可以從菜單中選擇軟件功能,也可以通過鍵盤命令序列調用軟件功能。在提供命令交互方式時,必須考慮下列設計問題:(1) 是否每個菜單選項都有對應的命令;(2) 采用何種命令形式:控制序列(如Ctrl+P)、功能鍵、鍵入命令。(3) 命令的難度有多大,忘記了命令怎么辦;(4) 用戶是否可以定制或縮寫命令。4. 命令交互6.3 過程設計的工具描述程序處理過程的工具稱為過程設計的工具。一般有圖形、表格和語言3種。6.3.1 程序流程圖程序流程圖的主要缺點如下:(1) 程序流程圖本質上不是逐步求精的好工具,它誘使程序員過早地考慮程序的控制流程,而不去考慮程序的全局結構。(2

6、) 程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結構程序設計的精神,隨意轉移控制。(3) 程序流程圖不易表示數據結構。6.3.1 程序流程圖abX1X2X7X6X4X3X5higfedcjFTFFFTTT多分支選擇結構先判定型循環結構選擇結構后判定型循環結構6.3.2 盒圖(N-S圖)順序結構塊1塊2塊3塊4條件T FELSETHEN選擇結構Case I=1,2,3T塊1塊2多分支選擇結構F塊3塊當條件成立時當型循環塊直到條件成立時直到型循環6.3.2 盒圖(N-S圖)N-S圖。它有下述特點:(1) 功能域(即,一個特定控制結構的作用域)明確,可以從盒圖上一眼就看出來。(

7、2) 不可能任意轉移控制。(3) 很容易確定局部和全程數據的作用域。(4) 很容易表現嵌套關系,也可以表示模塊的層次結構。ab條 件 1TF Case Xi, i=2,3,4X2X3X4當條件3成立條 件 2直到條件4成立直 到 條 件 成立cdefghij順序結構選擇結構多分支選擇結構先判定型循環結構后判定型循環結構FTTFN-S圖舉例NS圖舉例6.3.3 PAD圖任務1任務2任務3 順序結構WHILE型條件循環體先判定型循環結構條件then部分else部分選擇結構TFUNTIL型條件循環體后判定型循環結構控制變量 任務1任務2任務n多分支選擇結構值 1值 2值 nPAD圖基本結構6.3.3

8、 PAD圖PAD(problem analysis diagram,問題分析圖) 自1973年由日本日立公司發明以后,已得到一定程度的推廣,該圖翻譯成程序代碼比較容易。PAD圖的主要優點如下:(1) 使用表示結構化控制結構的PAD符號所設計出來的程序必然是結構化程序。6.3.3 PAD圖(2) 便于描繪程序結構,圖中最左面的豎線是程序的主線,即第一層結構。隨著程序層次的增加,PAD圖逐漸向右延伸,每增加一個層次,圖形向右擴展一條豎線。PAD圖中豎線的總條數就是程序的層次數。6.3.3 PAD圖(3) 程序從圖中最左豎線上端的結點開始執行,自上而下,從左向右順序執行,遍歷所有結點,易讀、易懂、易

9、記。(4) 容易將PAD圖轉換成高級語言源程序,這種轉換可用軟件工具自動完成,從而可省去人工編碼的工作,有利于提高軟件可靠性和軟件生產率。(5) 即可用于表示程序邏輯,也可用于描繪數據結構。6.3.3 PAD圖(6) PAD圖的符號支持自頂向下、逐步求精方法的使用。開始時設計者可以定義一個抽象的程序,隨著設計工作的深入而使用def符號逐步增加細節,直至完成詳細設計,如圖所示。BEGIN FIRST:=K1; SECOND:=0;FIRST=KISECOND=0I:=2 to NKI SECONDKIFIRSTSECOND =FIRSTFIRST=KISECOND =KI ELSE SECOND

10、:=KI END END END. PASCAL源程序段對應PAD圖FOR I:=2 TO N DO BEGIN IF KISECOND THENBEGIN IF KIFIRSTTHEN BEGIN SECOND:=FIRST; FIRST:=KI ENDPAD圖應用舉例例2PAD圖應用舉例6.3.4 判定表對于多重嵌套的條件選擇,用程序流程圖、盒圖、PAD圖或后面即將介紹的過程設計語言(PDL)都不易清楚地描述。例如:假設某航空公司規定,乘客可以免費托運重量不超過30kg的行李。當行李重量超過30kg時,對頭等艙的國內乘客超重部分每公斤收費4元,對其他艙的國內乘客超重部分每公斤收費6元,對外

11、國乘客超重部分每公斤收費比國內乘客多一倍,對殘疾乘客超重部分每公斤收費比正常乘客少一半。利用判定表則可清晰地描述。6.3. 判定表6.3.5 判定樹判定表含義不是一眼就能看出來的。PDL(Program Design Language)程序設計語言,這是一種結構化的語言。是非形式化比較靈活的語言,用于描述模塊內部過程的具體算法,以便在開發人員之間比較精確的進行交流。PDL的語法是開放式的,其外層語法是確定的,而內層語法則不確定。外層語法描述控制結構它用類似于一般程序設計語言控制結構的關鍵字:IF-THEN-ELSE WHILE- DO REPEAT- UNTIL DO CASE DO WHIL

12、E 等表示。有時還用關鍵字反排,表示控制結構結束: DO - OD IF - FI6.3.6 過程設計語言 PDL例如: if X is not negative then return(square root of X as a real number); else return(square root of -X as an imaginary number); 外層語法IF-THEN-ELSE是確定的,內層操作“square root of X ”是不確定的。6.4 面向數據結構的設計方法面向數據結構的設計方法是按輸入和輸出以及內部存儲信息的數據結構進行設計,然后再把數據結構的描述變換為

13、對軟件結構的描述。Jackson方法和Warnier方法是最著名的兩個面向數據結構的設計方法,本節結合一個簡單例子扼要地介紹Jackson方法,目的是使讀者對面向數據結構的設計方法有初步了解。29主要適用范 圍面向數據結構的設計最終目標工作基礎面向數據流的設計設計方法 在詳細設計階段確定部分或全部模塊的邏輯過程。 在概要設計階段用SD方法確定軟件的結構。 以數據結構 為基礎。從問題的數據結構出發導出它的程序結構 。 以數據流圖為基礎。在分析階段用DFD表示軟件的邏輯模型,在設計階段按數據流類型,將數據流圖轉換為軟件結構。兩種方法的共同點: 1.遵循“由頂向下、逐步細化”的原則; 2.服從“程序

14、結構必須適應問題結構”的原則。程序的過程性描述。軟件的最終SC圖面向數據結構的設計與面向數據流的設計的異同Jackson圖是作為Jackson方法配套使用的表達工具,可以作為需求分析和程序設計階段的表達工具。Jackson圖的優點:便于表示層次結構,是對結構進行自頂向下分解的有力工具;形象直觀,可讀性好;既能表達程序的結構,也可表達問題的數據結構。6.4.1 Jackson圖31重復結構選擇結構ABCAB0C0AB*ABCAB0C0sAB*I A由B、C兩部分順序組成 A可以包含B或C(S代表選擇) A由B重復任意次(含零次)構成( I 代表重復) 注:改進的Jackson圖規定順序執行的處理

15、中不許混有選擇執行和重復執行。順序結構Jackson圖表達符號Jackson圖是層次圖的一種精化,兩者的圖形類似,但有著許多區別,表現在:層次圖主要描繪軟件結構,而Jackson圖除描繪軟件結構外,也能描繪數據結構;層次圖中的一個方框代表一個模塊,而Jackson圖即使在描繪程序結構時,一個方框也不表示一個模塊,而只代表幾個語句;層次圖表現的是調用關系,通常一個模塊除了調用下級模塊外還完成其它操作;而Jackson圖表現的是組織關系,一個方框中包括的操作僅僅由它下層框中的哪些操作組成。Jackson圖與層次圖的區別Jackson圖中三種結構對應的偽代碼如下(凡帶下劃線的字均為關鍵字)Jacks

16、on偽代碼重復結構偽代碼選擇結構偽代碼 A seq B C end A A select cond1 B or cond2 C end AABCAB0C0SAB*I untilA iter cond while Bend A順序結構偽代碼姓名類別津貼表頭表體教職工名冊6.4.1 Jackson圖名冊欄名行表名行表頭表體行*姓名類別津貼工齡津貼0教齡津貼0IS教職工名冊的數據結構6.4.1 Jackson圖產生名冊文件產生欄名行產生表名行產生表頭產生表體產生行*產生姓名產生類別產生津貼產生工齡津貼0產生教齡津貼0SI教職工名冊的程序結構6.4.1 Jackson圖程序分析詳細設計結構設計程序設計

17、Jackson方法映射數據結構(Jackson圖)程序結構(Jackson圖)程序的過程描述(Jackson偽代碼)SD方法映射問題結構(DFD)軟件結構(SC圖)模塊的過程表示(PDL等工具)兩種方法的比較6.4.2 Jackson方法Jackson方法的步驟 分析并確定輸入數據和輸出數據的邏輯結構,用Jackson圖描繪這些數據結構。實質是對求解的問題進行需求分析。 用Jackson圖表示數據結構時,省略與解題無關的多余信息,僅保留需要用到的數據單元。找出輸入數據結構和輸出數據結構中有對應關系的數據單元(即有因果關系,在程序中可以同時處理的數據單元),按照下列映射規則, 導出描繪程序結構的

18、Jackson圖。6.4.2 Jackson方法(1)為每一對在輸入結構和輸出結構中有對應關系的單元畫一個處理框; (2)為輸入數據結構中每一剩余的數據單元畫一個處理框;(3)為輸出數據結構中每一剩余的數據單元畫一個處理框;(4)所有處理框在程序結構上的位置, 應與由它處理的數據單元在數據結構Jackson圖上的位置相對應(程序中具有因果關系)。6.4.2 Jackson方法寫出程序的過程性表示:列出所有操作和條件,并把它們分配 到程序結構圖的適當位置。用Jackson偽代碼寫出與程序結構圖對應的過程性表示。6.4.2 Jackson方法例:有兩個輸入文件:考生基本情況文件(簡稱考生情況文件)

19、和考生 高考成績文件(簡稱考分文件)如下: 考生情況文件 考分文件通訊地址姓 名準考證號考 分準考證號 產生輸出文件: 考生新文件 通訊地址考 分姓 名準考證號 試用Jackson方法完成下列工作 (1)用Jackson圖表示輸入與輸出結構,找出它們之間的對應單元; (2)畫出用Jackson圖表示的程序結構; (3)列出程序所需要的操作,并加到上一步畫出的程序結構圖上; (4)用Jackson偽代碼寫出與程序結構圖對應的過程性表示。 (1)輸入結構考生情況文件通訊地址姓 名準考證號考生情況文件考分文件考 分準考證號輸出結構通訊地址姓 名準考證號考 分考生記錄I考生記錄I考生記錄I43 輸入結

20、構與輸出結構中對應的數據單元產生新文件(2)程序結構圖產生通訊地址產生姓名產生準考證號產生考分考生情況文件考生記錄通訊地址姓名準考證號I處理考生記錄I考生新文件考分通訊地址姓名準考證號考生記錄I考分文件考生記錄I考分準考證號 (3)列出程序所需用的操作,并加到上一步畫出的程序結構圖上I(1)將新記錄寫入輸出文件;建立輸出文件;I(1)文件結束生成一條新記錄;打開兩個輸入文件;關閉全部文件;從輸入文件中各讀一條記錄停止;分析考生記錄產生新文件處理考生記錄產生通訊地址產生姓名產生準考證號產生考分14657432 產生新文件 seq 打開兩個輸入文件 建立輸出文件 從輸入文件中各讀一條記錄 分析考生

21、記錄iter until文件結束 處理考生記錄 seq 產生準靠證號 產生姓名 產生通訊地址 產生考分 生成一條新記錄 將新記錄寫入輸出文件 從輸入文件中各讀一條記錄 處理考生記錄 end 關閉全部文件 停止 產生新文件 end(4)用Jackson偽代碼寫出上述程序的過程表示。6.5 程序復雜程度的定量度量定性度量軟件質量軟件設計基本原理;定量度量軟件質量程序復雜度是一種方法。定量度量程序復雜程度的方法的意義:程序的復雜程度乘以適當常數:估算軟件中錯誤的數量、軟件開發需要用的工作量;可用來比較不同的設計或不同算法的優劣;定量的復雜程度可以作為模塊規模的精確限度。下面著重介紹使用得比較廣泛的M

22、cCabe方法和Halstead方法。1. 流圖McCabe方法根據程序控制流的復雜程度定量度量程序的復雜程度程序的環形復雜度。流圖程序圖,實質是“退化了的”程序流程圖,僅描繪程序的控制流程。在流圖中用圓表示結點,一個圓代表一條或多條語句。程序流程圖中的一個順序的處理框序列和一個菱形判定框,可以映射成流圖中的一個結點。6.5.1 McCabe方法1. 流圖流圖中的箭頭線稱為邊,代表控制流,終止于一個結點。由邊和結點圍成的面積稱為區域,當計算區域數時應該包括圖外部未被圍起來的那個區域。圖6.15所示。6.5.1 McCabe方法6.5.1 McCabe方法圖6.15程序流程圖映射成流圖用任何方法

23、表示的過程設計結果,都可以翻譯成流圖。圖6.16是用PDL表示的處理過程及與之對應的流圖。6.5.1 McCabe方法圖6.16 由PDL翻譯成的流圖當過程設計中包含復合條件時,生成流圖的方法稍微復雜一些。所謂復合條件,就是在條件中包含了一個或多個布爾運算符(邏輯OR,AND,NAND,NOR)。在這種情況下,應該把復合條件分解為若干個簡單條件,每個簡單條件對應流圖中一個結點。包含條件的結點稱為判定節點,從每個判定結點引出兩條或多條邊。圖6.17是由包含復合條件的PDL片斷翻譯成的流圖。6.5.1 McCabe方法圖6.17 由包含復合條件的PDL映射成的流圖2. 計算環形復雜度的方法環形復雜

24、度定量度量程序的邏輯復雜度。利用流圖,可以用下述3種方法中的任何一種來計算環形復雜度。(1) 流圖中的區域數等于環形復雜度。(2) 流圖G的環形復雜度V(G)=E-N+2,其中,E是流圖中邊的條數,N是結點數。(3) 流圖G的環形復雜度V(G)=P+1,其中,P是流圖中判定結點的數目。6.5.1 McCabe方法(1) 流圖中的區域數等于環形復雜度;V(G)=4(2) 流圖G的環形復雜度V(G)=E-N+2,其中,E是流圖中邊的條數,N是結點數;E=11,N=9,V(G)=4(3) 流圖G的環形復雜度V(G)=P+1,其中,P是流圖中判定結點的數目;P=3,V(G)=4。3. 環形復雜度的用途程序的環形復雜度取決于程序控制流的復雜程度,也即是取決于程序結構的復雜程度。當程序內分支數或循環個數增加時,環形復雜度也隨之增加,因此它是對測試難度的一種定量度量,也能對軟件最終的可靠性給出某種預測。McCabe研究大量程序后發現,環形復雜度高的程序往往是最困難、最容

溫馨提示

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

評論

0/150

提交評論