軟件工程:第06章 詳細設(shè)計_第1頁
軟件工程:第06章 詳細設(shè)計_第2頁
軟件工程:第06章 詳細設(shè)計_第3頁
軟件工程:第06章 詳細設(shè)計_第4頁
軟件工程:第06章 詳細設(shè)計_第5頁
已閱讀5頁,還剩96頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、how to do detailedly?how to do detailedly?詳細設(shè)計詳細設(shè)計問題定義可行性研究需求分析總體設(shè)計詳細設(shè)計詳細設(shè)計編碼與單元測試綜合測試軟件維護軟件定義時期軟件開發(fā)時期軟件維護時期詳細地確定怎樣具體地實現(xiàn)系統(tǒng)。給出目標系統(tǒng)的詳細描述。設(shè)計模塊內(nèi)部的處理過程。結(jié)構(gòu)化程序設(shè)計是詳細設(shè)計的邏輯基礎(chǔ)。為編碼實現(xiàn)、測試方案設(shè)計提供藍圖。第第6 6章章 詳細設(shè)計詳細設(shè)計6.1 6.1 結(jié)構(gòu)程序設(shè)計結(jié)構(gòu)程序設(shè)計6.2 6.2 人機界面設(shè)計人機界面設(shè)計6.3 6.3 過程設(shè)計的工具過程設(shè)計的工具6.4 6.4 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法6.5 6.5 程序

2、復雜程度的定量度量程序復雜程度的定量度量6.1 6.1 結(jié)構(gòu)程序設(shè)計結(jié)構(gòu)程序設(shè)計-結(jié)構(gòu)化程序設(shè)計結(jié)構(gòu)化程序設(shè)計-“結(jié)構(gòu)程序設(shè)計是盡可能少用go to語句的程序設(shè)計方法。最好僅在檢測出錯誤時才使用go to語句,而且應該總是使用前向go to語句”,“程序的質(zhì)量與程序中所包含的go to 語句的數(shù)量成反比” 。e.w.dijkstra,1965。-基本的程序控制結(jié)構(gòu)基本的程序控制結(jié)構(gòu)-bohm和jacopini證明了:3種基本的控制結(jié)構(gòu)(順序,選擇,循環(huán))就能實現(xiàn)任何單入口單出口的程序。-實際上,順序結(jié)構(gòu)和循環(huán)結(jié)構(gòu)理論上是的最基本的控制結(jié)構(gòu)。三種基本的控制結(jié)構(gòu)三種基本的控制結(jié)構(gòu)圖圖6.1 3種基

3、本的控制結(jié)構(gòu)種基本的控制結(jié)構(gòu)順序結(jié)構(gòu)順序結(jié)構(gòu)分支結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)其他常用的控制結(jié)構(gòu)其他常用的控制結(jié)構(gòu)圖圖6.2 其他常用的控制結(jié)構(gòu)其他常用的控制結(jié)構(gòu)多項選擇結(jié)構(gòu)多項選擇結(jié)構(gòu)后置循環(huán)結(jié)構(gòu)后置循環(huán)結(jié)構(gòu)結(jié)構(gòu)程序設(shè)計指導準則結(jié)構(gòu)程序設(shè)計指導準則經(jīng)典的結(jié)構(gòu)程序設(shè)計:經(jīng)典的結(jié)構(gòu)程序設(shè)計:只允許使用順序、if-then-else型分支和do-while型循環(huán)這3種基本控制結(jié)構(gòu); 擴展的結(jié)構(gòu)程序設(shè)計:擴展的結(jié)構(gòu)程序設(shè)計:除了上述3種基本控制結(jié)構(gòu)之外,還允許使用do-case型多分支結(jié)構(gòu)和do-until型循環(huán)結(jié)構(gòu); 修正的結(jié)構(gòu)程序設(shè)計:修正的結(jié)構(gòu)程序設(shè)計:除上述結(jié)構(gòu)以外,還允許使用leave(或b

4、reak)結(jié)構(gòu)。 使用使用go togo to語句的原則語句的原則: :結(jié)構(gòu)程序設(shè)計是不使用(或盡可能少用)go to語句的程序設(shè)計方法。僅在檢測出錯誤時才使用go to語句,而且總是使用后向go to語句。6.26.2人機界面設(shè)計人機界面設(shè)計6.2.16.2.1設(shè)計問題設(shè)計問題6.2.26.2.2設(shè)計過程設(shè)計過程6.2.36.2.3人機界面設(shè)計指南人機界面設(shè)計指南6.2.16.2.1設(shè)計問題設(shè)計問題1. 1. 系統(tǒng)響應時間系統(tǒng)響應時間 響應時間的長度:適中相應時間的易變性:同一類操作的響應時間不要差異太大。2. 2. 用戶幫助設(shè)施用戶幫助設(shè)施 脫機幫助手冊附加的聯(lián)機幫助集成的聯(lián)機幫助上下文相

5、關(guān)的聯(lián)機幫助3. 3. 出錯信息(及警告信息)處理出錯信息(及警告信息)處理 如何辦, 用戶心理4. 4. 命令交互命令交互多媒體(圖,文,聲,光)自定義宏指令控制序列(ctrl+字母 )6.2.26.2.2設(shè)計過程設(shè)計過程迭代的設(shè)計過程迭代的設(shè)計過程創(chuàng)建設(shè)計模型原型實現(xiàn)評估復審進一步精化評估復審的準則評估復審的準則系統(tǒng)規(guī)格說明書的長度和復雜程度動作、命令中的包含的平均參數(shù)個數(shù)及操作個數(shù)設(shè)計模型中包含的動作、命令、狀態(tài)的數(shù)量界面風格、幫助設(shè)施、出錯處理的友好性6.2.36.2.3人機界面設(shè)計指南人機界面設(shè)計指南界面的類別界面的類別界面應具有的基本特性界面應具有的基本特性界面設(shè)計指南界面設(shè)計指南

6、界面設(shè)計的任務界面設(shè)計的任務界面的基本形式(舉例)界面的基本形式(舉例)用戶界面的類別用戶界面的類別一般交互界面“一般交互”包括信息顯示、數(shù)據(jù)輸入、系統(tǒng)整體控制。這一部分指南具有全局性意義,對系統(tǒng)界面好壞影響極大。信息顯示界面指顯示信息時要注意的問題。顯示的信息應該是完整的、無二義的、好理解的,這樣才能滿足用戶要求。信息“顯示”的不同方式:文字/圖形/聲音;不同位置/移動;不同大?。徊煌伾?分辨率;等等。數(shù)據(jù)輸入界面數(shù)據(jù)輸入界面,是系統(tǒng)的重要組成部分。主要從輸入效率和減少出錯率考慮。用戶一般會花費大量的時間在命令操作和數(shù)據(jù)輸入操作,因此友好的數(shù)據(jù)輸入操作非常必要。不同輸入手段(介質(zhì)/設(shè)備):

7、鍵盤、鼠標、數(shù)字化儀、掃描儀、語音、照片、視頻等等。1 1、可使用性、可使用性 使用簡單 用戶界面中所用術(shù)語的標準化和一致性 具有help功能 快速的系統(tǒng)響應和低的系統(tǒng)成本 具有容錯能力2 2、靈活性、靈活性 考慮用戶的特點、能力、知識水平。 提供不同的系統(tǒng)響應信息。 提供根據(jù)用戶需求制定和修改界面。3 3、界面的復雜性與可靠性、界面的復雜性與可靠性復雜性界面規(guī)模及組織的復雜程度。應該愈簡單愈好??煽啃灾笩o故障使用的時間間隔。用戶界面應該能夠保證用戶正確、可靠地使用系統(tǒng),及程序、數(shù)據(jù)的安全。用戶界面應具有的基本特性用戶界面應具有的基本特性一般交互界面設(shè)計指南保持界面格式的一致性提供有意義的反饋

8、信息重要操作要確認:如新增0次確認、修改1次確認、刪除2次確認為大部分操作提供“回退”(undo)減少兩次操作之間的記憶的信息量(自動補充缺省值)提高操作效率:思考、對話、按鍵、光標移動等效率容許錯誤操作,出錯后不會對系統(tǒng)造成嚴重影響操作功能/動作分類,屏幕合理布局提供操作的幫助設(shè)施簡單易懂的命令名信息顯示界面設(shè)計指南只顯示當前工作相關(guān)的信息以合適的形式顯示信息:圖形?圖表?清單?以統(tǒng)一的風格顯示信息:統(tǒng)一的標記、標準的縮寫、預定的顏色、確定的位置等提供可視化的顯示環(huán)境產(chǎn)生有意義的出錯信息使用格式化的顯示板式:大小寫、縮進、文本分段等使用窗口分隔不同類型信息使用“模擬”顯示方式表示信息:數(shù)字儀

9、表盤技術(shù)合理高效地使用物理顯示屏數(shù)據(jù)輸入界面設(shè)計指南盡量減少用戶的輸入動作,使按鍵最少,如對相同內(nèi)容輸入設(shè)置默認值、自動填入、列表選擇或點擊選擇等。保持信息顯示和數(shù)據(jù)輸入一致性:視覺效果一致容許用戶自定義輸入:為專家級用戶提供的機制提供靈活的交互方式:鍵盤、鼠標等,適應不同用戶休眠(disable)當前動作語境中不用的命令讓用戶控制交互流:靈活的操作順序和恢復機制對所有輸入動作都提供幫助消除冗余的輸入用戶界面設(shè)計的任務用戶界面設(shè)計的任務1 1、用戶特性分析、用戶特性分析 用戶模型用戶模型 了解所有用戶的技能和經(jīng)驗,針對用戶能力設(shè)計或更改界面。從以下方面分析:用戶類型通常分為:外行型、初學型、熟

10、練型、專家型。用戶特性度量與用戶使用模式和用戶群體能力有關(guān)。包括:用戶使用頻度、用戶用機能力、用戶的知識、思維能力等。2 2、用戶界面的任務分析、用戶界面的任務分析 任務模型(任務模型(dfddfd圖)圖)是對系統(tǒng)內(nèi)部活動的分解,不僅要進行功能分解(用dfd圖描述),還要包括與人相關(guān)的活動(人工操作)。每個加工即一個功能或任務。3 3、確定用戶界面類型、確定用戶界面類型從用戶角度出發(fā),用戶界面設(shè)計的類型主要有問題描述語言,數(shù)據(jù)表格、圖形與圖標、菜單、對話框及窗口等。每一種類型都有不同的特點和性能。用戶界面的基本形式舉例用戶界面的基本形式舉例菜單菜單程序中功能的選擇、數(shù)據(jù)的選擇圖象圖象將數(shù)據(jù)可視

11、化地展示圖表圖表顯示統(tǒng)計數(shù)據(jù)、對比的數(shù)據(jù)儀表盤儀表盤動態(tài)變化的數(shù)據(jù)、仿真的數(shù)據(jù)對話框?qū)υ捒虺跏紨?shù)據(jù)、任意數(shù)據(jù)的輸入窗口窗口綜合界面,可包含數(shù)據(jù)輸入、信息顯示、功能選擇操作等。菜單(菜單(menumenu)圖3.54 混合菜單圖3.55 固定及下拉菜單固定菜單固定菜單下拉菜單下拉菜單正文菜單、圖標菜單、正文和圖標混合菜單,如:開始菜單固定位置、浮動位置(彈出)、下拉式、嵌入式在用戶界面中,加入豐富多彩的畫面,將能夠更加行象地為用戶提供有用的信息,在用戶界面中,加入豐富多彩的畫面,將能夠更加行象地為用戶提供有用的信息,以達到可視化的目的。主要的處理操作有:圖象的隱蔽和再現(xiàn)、屏幕滾動和圖案以達到可視

12、化的目的。主要的處理操作有:圖象的隱蔽和再現(xiàn)、屏幕滾動和圖案顯示、動畫等。顯示、動畫等。圖象圖象圖表圖表圖表主要形式:折線圖、直方圖、餅圖等圖表主要形式:折線圖、直方圖、餅圖等圖表的用途:顯示時間變化數(shù)據(jù)、統(tǒng)計數(shù)據(jù)、對比數(shù)據(jù)等圖表的用途:顯示時間變化數(shù)據(jù)、統(tǒng)計數(shù)據(jù)、對比數(shù)據(jù)等儀表盤儀表盤仿真儀表面板,直觀、動態(tài)地顯示數(shù)據(jù)仿真儀表面板,直觀、動態(tài)地顯示數(shù)據(jù)適合于動態(tài)數(shù)據(jù)、性能參數(shù)、比較數(shù)據(jù)的顯示適合于動態(tài)數(shù)據(jù)、性能參數(shù)、比較數(shù)據(jù)的顯示對話框是在需要時,顯示在屏幕上一個矩形區(qū)域內(nèi)的圖形和正文信息。通過對對話框是在需要時,顯示在屏幕上一個矩形區(qū)域內(nèi)的圖形和正文信息。通過對話,實現(xiàn)系統(tǒng)和用戶之間的通信

13、。話,實現(xiàn)系統(tǒng)和用戶之間的通信。對話框顯示的方式與彈出式菜單類似,即瞬時彈出。同時,系統(tǒng)還應將對話框?qū)υ捒蝻@示的方式與彈出式菜單類似,即瞬時彈出。同時,系統(tǒng)還應將對話框所覆蓋的原圖象進行保存,以便在對話結(jié)束后能立即恢復。所覆蓋的原圖象進行保存,以便在對話結(jié)束后能立即恢復。有三種對話形式:有三種對話形式:必須回答式如圖必須回答式如圖3.58所示所示無需回答式無需回答式 如圖如圖3.59所示所示警告式警告式 如圖如圖4.58所示所示圖3.58 必須回答式對話框圖3.59 無需回答式對話框圖3.60 警告式對話框?qū)υ捒驅(qū)υ捒蚣匆晥D區(qū)(即視圖區(qū)(viewportviewport),視為虛擬屏幕。一個實

14、用窗口,可包含部件:),視為虛擬屏幕。一個實用窗口,可包含部件: 菜單區(qū)(菜單區(qū)(menu barmenu bar) 圖標區(qū)(圖標區(qū)(icon baricon bar) 標題區(qū)(標題區(qū)(title bartitle bar) 移動區(qū)(移動區(qū)(move barmove bar) 大小區(qū)(大小區(qū)(size barsize bar) 退出區(qū)(退出區(qū)(quit barquit bar) 用戶工作區(qū)(用戶工作區(qū)(users work barusers work bar) 橫向滾動區(qū)(橫向滾動區(qū)(horizontal scroll barhorizontal scroll bar) 縱向滾動區(qū)(縱向滾動區(qū)

15、(vertical scroll barvertical scroll bar)圖3.61 窗口窗口(窗口(windowwindow)用戶界面實例用戶界面實例系統(tǒng)信息管理儀表盤界面設(shè)計系統(tǒng)信息管理儀表盤界面設(shè)計 系統(tǒng)實時動態(tài)運行界面設(shè)計系統(tǒng)實時動態(tài)運行界面設(shè)計 6.3 6.3 過程設(shè)計的工具過程設(shè)計的工具6.3.1 6.3.1 程序流程圖程序流程圖6.3.2 6.3.2 盒圖(盒圖(n-sn-s圖)圖)6.3.3 6.3.3 問題分析圖(問題分析圖(padpad圖)圖)6.3.4 6.3.4 判定表判定表6.3.5 6.3.5 判定樹判定樹6.3.6 6.3.6 過程設(shè)計語言(過程設(shè)計語言(p

16、dlpdl)6.3.1 6.3.1 程序流程圖程序流程圖程序流程圖的作用程序流程圖的作用程序流程圖(progran flowchart)作為一種算法表達工具, 是人們對解決問題的方法、思路或算法的一種描述。國家標準gb1525-89:信息處理-數(shù)據(jù)流程圖,程序流程圖,系統(tǒng)流程圖,程序網(wǎng)絡圖和系統(tǒng)資源圖的文件編制符號及約定國際標準化組織標準iso5807-85 :information processing-documentation symbols and comventions for data,program and system flowcharts,program network ch

17、arts and system resources charts優(yōu)點優(yōu)點采用簡單規(guī)范的符號,畫法簡單;結(jié)構(gòu)清晰,邏輯性強;便于描述,容易理解。 缺點缺點本質(zhì)上不是“自頂向下、逐步求精”的設(shè)計工具(容易引導過早關(guān)注細節(jié))不是結(jié)構(gòu)化設(shè)計工具(流向線可以隨意連)程序流程圖的基本符號程序流程圖的基本符號起始框起始框終止框終止框執(zhí)行框執(zhí)行框判別框判別框流線流線程序流程圖的符號程序流程圖的符號圖圖6.3 程序流程圖中使用的符號程序流程圖中使用的符號程序流程圖的符號(續(xù))程序流程圖的符號(續(xù))(a)(a)判斷(菱形)判斷(菱形)只有一個入口,但可以有一個或二個出口,在出口流線上注明判斷的條件(真、假)(b)

18、(b)注解符(縱邊線和虛線構(gòu)成)注解符(縱邊線和虛線構(gòu)成)用以標識注解的內(nèi)容。(c)(c)特定處理(帶有雙縱邊線的矩形)特定處理(帶有雙縱邊線的矩形)表示已命名的特定處理.該處理為在另外地方已得到詳細說明,如子例行程序。(d)(d)多重選擇多重選擇 (多出口菱形)(多出口菱形)只有一個入口,但可以有多個可供選擇的出口。在出口流線上注明滿足選擇條件的值。(e)(e)端點符(扁圓形)端點符(扁圓形)表示轉(zhuǎn)向外部環(huán)境或從外部環(huán)境轉(zhuǎn)入. 如程序流程的起始或結(jié)束,數(shù)據(jù)的外部使用起點或終點.(f)(f)準備(六邊形符號)準備(六邊形符號)它表示修改一條指令或一組指令以影響隨后的活動.例如,設(shè)置開關(guān),初始化

19、例行程序.(g-h)(g-h)循環(huán)界限(去角矩形)循環(huán)界限(去角矩形)表示循環(huán)的開始和循環(huán)的結(jié)束. 一對符號內(nèi)應注明同一循環(huán)標識符。程序流程圖的符號(續(xù))程序流程圖的符號(續(xù))(i)(i)虛線虛線用于表明被注解的范圍或連接被注解部分與注解正文。.(j)(j)省略符(三點構(gòu)成)省略符(三點構(gòu)成)若流程圖中有些部分無需給出符號的具體形式和數(shù)量,可用省略符。(k)(k)并行方式(一對平行線)并行方式(一對平行線)表示同步進行兩個或兩個以上并行方式的操作.。(l)(l)處理(矩形)處理(矩形)表示各種處理功能.例如,執(zhí)行一個或一組特定的操作, 矩形內(nèi)可注明處理名。(m)(m)數(shù)據(jù)(平行四邊形)數(shù)據(jù)(平

20、行四邊形)表示數(shù)據(jù),其中可注明數(shù)據(jù)名,來源,用途或其它的文字說明。(n)(n)連接符(圓形)連接符(圓形)用以表明轉(zhuǎn)向流程圖的它處,或從流程圖它處轉(zhuǎn)入.它是流線的斷點,在圓形內(nèi)注明斷編號(符號)。(o)(o)連接符(錐形)連接符(錐形)用以表明轉(zhuǎn)向另一流程圖,或從另一流程圖轉(zhuǎn)入.它是流線圖的斷點,在錐形內(nèi)注明流程圖編號(名稱)。(p).(p).流線(箭頭直線)流線(箭頭直線)表示控制流的流向. abx1x2x7x6x4x3x5higfedcjftfffttt多分支選多分支選擇結(jié)構(gòu)擇結(jié)構(gòu)先判定型循先判定型循環(huán)結(jié)構(gòu)環(huán)結(jié)構(gòu)選擇結(jié)構(gòu)選擇結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)程序流程圖例程序流程圖例6.3

21、.2 6.3.2 盒圖(盒圖(n-sn-s圖)圖)盒圖盒圖盒圖(n-s圖)是一種符合結(jié)構(gòu)化程序設(shè)計(sp)的圖形工具。其結(jié)構(gòu)化具有強制性。n-sn-s圖的基本結(jié)構(gòu)圖的基本結(jié)構(gòu)n-s圖僅含有圖6.4的5種基本成分,它們分別表示sp方法的幾種標準控制結(jié)構(gòu)。n-sn-s圖的數(shù)據(jù)盒和模塊盒圖的數(shù)據(jù)盒和模塊盒用ns圖作為詳細設(shè)計的描述手段時,常需用兩個盒子:數(shù)據(jù)盒和模塊盒。前者描述有關(guān)的數(shù)據(jù),包括全程數(shù)據(jù)、局部數(shù)據(jù)和模塊界面上的參數(shù)等,后者描述執(zhí)行過程。n-sn-s圖的主要特點:圖的主要特點:每種結(jié)構(gòu)的功能域明確不可能任意轉(zhuǎn)移(go to)控制很容易確定局部和全局數(shù)據(jù)作用域很容易表現(xiàn)結(jié)構(gòu)的嵌套關(guān)系和模塊

22、的層次結(jié)構(gòu)簡單、易學易用nsns圖的缺點圖的缺點手工修改比較麻煩,這是有些人不用它的主要原因。ab條條 件件 1tf case xi, i=2,3,4x2x3x4當條件當條件3成立成立條條 件件 2直到條件直到條件4成立成立直直 到到 條條 件件 成立成立cdefghijfttfnns s圖基本結(jié)構(gòu)圖基本結(jié)構(gòu)圖圖6.4 盒圖的基本符號盒圖的基本符號順序選擇多重選擇前置/后置條件循環(huán)調(diào)用子程序ab條條 件件 1tf case xi, i=2,3,4x2x3x4當條件當條件3成立成立條條 件件 2直到條件直到條件4成立成立直直 到到 條條 件件 成立成立cdefghij順序結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)選擇

23、結(jié)構(gòu)多分支選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)先判定型循環(huán)結(jié)構(gòu)先判定型循環(huán)結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)fttfns圖舉例n-sn-s圖舉例圖舉例模塊的數(shù)據(jù)盒和過程盒模塊的數(shù)據(jù)盒和過程盒6.3.3 6.3.3 問題分析圖(問題分析圖(padpad圖)圖)padpadpad(problem analysis diagram,問題分析圖)是日立公司創(chuàng)立的一種采用二維(平面)、樹形結(jié)構(gòu)表示程序的控制結(jié)構(gòu)的結(jié)構(gòu)化設(shè)計方法。pad為多種高級程序設(shè)計語言(fortran、cobol、pascal等)根據(jù)其語言結(jié)構(gòu)特點都設(shè)計了一套符號。padpad的優(yōu)點的優(yōu)點結(jié)構(gòu)化:采用結(jié)構(gòu)化的pad設(shè)計出的程序必定是結(jié)構(gòu)化的。程

24、序結(jié)構(gòu)清晰:垂直(豎線)方向表明了結(jié)構(gòu)的順序,水平方向(結(jié)構(gòu))表明了結(jié)構(gòu)嵌套的層次及深度(豎線的數(shù)目)。程序邏輯清晰:很好地表現(xiàn)程序邏輯,易讀、易懂、易記。自上而下、從左向右執(zhí)行,可遍歷程序的所有節(jié)點(圖論中的“廣度優(yōu)先”遍歷)。易于轉(zhuǎn)換成高級程序設(shè)計語言的源程序:pad規(guī)范,易于自動轉(zhuǎn)換,有利于提高軟件可靠性和生產(chǎn)率。表達能力強:既可容易地表達程序邏輯,也可表達數(shù)據(jù)結(jié)構(gòu)。支持“自頂向下、逐步求精”的設(shè)計方法:在上層進行抽象,使用“def”符號在下層逐步細化。padpad的不足的不足水平嵌套層次太深時,表達顯得有點凌亂。padpad圖的基本控制結(jié)構(gòu)圖的基本控制結(jié)構(gòu)(a)(a)順序結(jié)構(gòu)順序結(jié)構(gòu)(

25、b)(b)選擇結(jié)構(gòu)選擇結(jié)構(gòu)(c)(c)多分枝選族結(jié)構(gòu)多分枝選族結(jié)構(gòu)(d)(d)前置條件循環(huán)結(jié)構(gòu)前置條件循環(huán)結(jié)構(gòu)(e)(e)后置條件循環(huán)結(jié)構(gòu)后置條件循環(huán)結(jié)構(gòu)(f)(f)語句標號語句標號(g)(g)定義定義圖圖6.5 pad圖的基本符號圖的基本符號padpad使用使用“def”def”逐步求精示例逐步求精示例圖圖6.6 使用使用pad圖提供的定義功能來逐步求精的例子圖提供的定義功能來逐步求精的例子padpad示例示例while-do x3bfgx1ado-while x6jx4do-while x5hicdex2=1=2=3begin first:=k1; second:=0; for i:=2

26、to n do begin if kisecond then begin if kifirst then begin second:=first; first:=ki end else second:=ki end endend. first=kisecond=0i:=2 to nki secondkifirstsecond=firstfirst=kisecond=kipadpad應用示例應用示例算法功能:在數(shù)組算法功能:在數(shù)組k1.nk1.n中(所有中(所有元素不小于元素不小于0 0),找出最大(),找出最大(firstfirst)和次大()和次大(secondsecond)的數(shù)。)的數(shù)。6

27、.3.4 6.3.4 判定表判定表判定表判定表表達復雜的條件組合與需執(zhí)行的動作之間的對應關(guān)系的一種關(guān)系表。判定表由四部分組成:判定表由四部分組成:基本條件條件組合矩陣 (規(guī)則,或條件表達式)基本動作動作組合矩陣(條件組合對應要執(zhí)行的動作)判定表特點判定表特點可準確地表達“規(guī)則-操作”條件表達式(規(guī)則)可簡化只適用于此,作為其他設(shè)計工具的補充c1c1c2c2cmcma1a1a2a2amam判定表:示例判定表:示例1 1假設(shè)某航空公司規(guī)定,假設(shè)某航空公司規(guī)定,乘客可以免費托運重量乘客可以免費托運重量不超過不超過30kg30kg的行李。的行李。當行李重量超過當行李重量超過30kg30kg時時, 對頭

28、等艙的國內(nèi)乘客超重部分每公斤收費4元, 對其他艙的國內(nèi)乘客超重部分每公斤收費6元,對外國乘客超重部分每公斤收費比國內(nèi)乘客多一倍, 對殘疾乘客超重部分每公斤收費比正常乘客少一半。 判定表:示例判定表:示例2 2假設(shè)某大學要從學生中挑選男子籃球隊隊員,基本條件是:假設(shè)某大學要從學生中挑選男子籃球隊隊員,基本條件是: 各門課程的平均分在70分以上, 身高超過180米,體重超過75千克。 需要從學生登記表中挑選出符合上述條件的男同學,并列出他需要從學生登記表中挑選出符合上述條件的男同學,并列出他們的姓名和住址,以便進一步選拔。們的姓名和住址,以便進一步選拔。 6.3.5 6.3.5 判定樹判定樹判定樹

29、判定樹用樹型結(jié)構(gòu)表示條件組合與應做的動作之間的關(guān)系。是判定表的變種。判定樹的特點判定樹的特點與判定表相比,能更清晰地表達復雜的條件組合關(guān)系。形式簡單,易于使用,易于理解所表達的條件-動作關(guān)系的含義。判定樹例判定樹例圖圖6.6 用判定樹表示計算行李費的算法用判定樹表示計算行李費的算法6.3.6 6.3.6 過程設(shè)計語言(過程設(shè)計語言(pdlpdl)pdlpdl(procedure design languageprocedure design language)過程設(shè)計語言)過程設(shè)計語言pdl也稱為“偽碼”或“偽語言”,是一種介于自然語言和程序設(shè)計語言之間的軟件設(shè)計語言。 pdl是非形式化比較靈

30、活結(jié)構(gòu)化的語言,用于描述模塊內(nèi)部過程的具體算法,以便在開發(fā)人員之間比較精確的進行交流。pdlpdl的語法的語法pdl的語法是開放式的,其外層語法是確定的,采用類似于一般程序設(shè)計語言控制結(jié)構(gòu)和關(guān)鍵字。為了區(qū)別關(guān)鍵字,關(guān)鍵字一律大寫,其它單詞一律小寫。而內(nèi)層語法則不確定,一般使用自然語言(或半形式化語言)來描述處理特性。內(nèi)語法比較靈活,只要寫清楚就可以,不必考慮語法錯,以利于人們可把主要精力放在描述算法的邏輯上。這種語法一般稱為“類-程序設(shè)計語言”,如like-c,like-java,like-pascal等。pdlpdl特點、優(yōu)點和缺點特點、優(yōu)點和缺點pdlpdl特點特點結(jié)構(gòu)描述:固定的關(guān)鍵字詞

31、法;固定的程序結(jié)構(gòu)語法;結(jié)構(gòu)化的控制結(jié)構(gòu);模塊化。處理描述:采用自然語言或半形式化語言描述操作、處理。數(shù)據(jù)描述:規(guī)范的數(shù)據(jù)說明(定義),包括簡單數(shù)據(jù)結(jié)構(gòu)(如標量、數(shù)組)和復雜數(shù)據(jù)結(jié)構(gòu)的定義(如記錄、鏈表)。pdlpdl優(yōu)點優(yōu)點pdl程序易于編寫和編輯,使設(shè)計人員關(guān)注程序的邏輯而不是程序的語法。pdl程序轉(zhuǎn)化成程序設(shè)計語言程序時,可用作很好的注釋,提高了程序的可讀性、可維護性。存在將pdl轉(zhuǎn)化成程序代碼的自動化工具。pdlpdl缺點缺點描述有些算法不如圖形化工具形象直觀。 描述復雜的條件組合與動作間的對應關(guān)系時,不如判定表清晰簡單。pdlpdl控制結(jié)構(gòu)語法例控制結(jié)構(gòu)語法例 順序結(jié)構(gòu)順序結(jié)構(gòu)p1;

32、 p2; pn多分支選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)do case of c c1: p1 c2: p2 cn: pn otherewise: pn+1endcase前置循環(huán)結(jié)構(gòu)前置循環(huán)結(jié)構(gòu)while c do penddo 選擇結(jié)構(gòu)選擇結(jié)構(gòu)if c then p1; else p2;endif后置循環(huán)結(jié)構(gòu)后置循環(huán)結(jié)構(gòu)repeat p until c示例示例: : 拼詞檢查程序拼詞檢查程序procedure spellcheckprocedure spellcheckbeginbegin - -* * split document into single words split document int

33、o single words loop get next word loop get next word add word to word list in sortorder add word to word list in sortorder exit when all words processed exit when all words processed end loop end loop - -* * look up words in dictionary look up words in dictionary loop get word from word list loop ge

34、t word from word list if word not in dictionary then if word not in dictionary then - -* * display words not in dictionary display words not in dictionary display word prompt on user terminal display word prompt on user terminal if user response says word ok then if user response says word ok then a

35、dd word to good word list add word to good word list else else add word to bad word list add word to bad word list endif endif endif endif exit when all words processed exit when all words processedend loopend loop- -* * create a new words dictionary create a new words dictionary dictionary : dictio

36、nary :merge dictionary and good word listmerge dictionary and good word listend spellcheckend spellcheck6.4 hipo6.4 hipo法法hipo hipohipo法法(hierarchy plus input-process-output) (hierarchy plus input-process-output) 即按功能即按功能層次的結(jié)構(gòu)分析法,是層次的結(jié)構(gòu)分析法,是19761976年由年由 ibm ibm 公司推出的軟件分析公司推出的軟件分析及設(shè)計方法,又稱及設(shè)計方法,又稱hipo

37、hipo圖。圖。基本思想結(jié)構(gòu)化方法是以數(shù)據(jù)流,數(shù)據(jù)封閉性準則來分解的,結(jié)構(gòu)化方法是以數(shù)據(jù)流,數(shù)據(jù)封閉性準則來分解的,hipohipo法則是以功能、功能完備性準則逐層分解的。法則是以功能、功能完備性準則逐層分解的。層次圖 (h圖)層次圖 (h圖) 表明各個功能的隸屬關(guān)系。它是自頂向下逐層分解得到的。最高一層是整個系統(tǒng)的名稱和系統(tǒng)的概括功能說明;最高一層是整個系統(tǒng)的名稱和系統(tǒng)的概括功能說明;第二層把系統(tǒng)功能展開,分成幾個框;第二層把系統(tǒng)功能展開,分成幾個框;第二層功能進一步分解,就得到了第三層、第四層,第二層功能進一步分解,就得到了第三層、第四層,直到最后一層。直到最后一層。每個框內(nèi)都應有一個名字

38、,用以標識它的功能。還應有一每個框內(nèi)都應有一個名字,用以標識它的功能。還應有一個編號,以記錄它所在的層次及在該層次的位置。個編號,以記錄它所在的層次及在該層次的位置。軟件工程ipo圖ipo圖為層次圖中每一功能框詳細地指明輸入(i)、處理(p)及輸出(o)。通常,ipo圖有固定格式,處理操作部分總是列在中間,輸入和輸出部分分別在其左邊和右邊。由于某些細節(jié)很難在一張ipo圖中表達清楚,常常把ipo圖又分為兩部分:概括的稱為概括的稱為概要圖概要圖(overview diagram)具體的稱為具體的稱為詳細圖詳細圖(detail diagram)。)。概要概要ipoipo圖圖 vs vs 詳細詳細ip

39、o ipo 圖圖概要ipo圖用于表達對一個系統(tǒng),或?qū)ζ渲心骋蛔酉到y(tǒng)功能的概略表達,用于表達對一個系統(tǒng),或?qū)ζ渲心骋蛔酉到y(tǒng)功能的概略表達,指明完成某一功能框規(guī)定的功能時需要指明完成某一功能框規(guī)定的功能時需要哪些輸入哪些輸入,哪些操作哪些操作和和哪些輸出哪些輸出。概要概要ipoipo在總體設(shè)計中處理。在總體設(shè)計中處理。詳細ipo 圖詳細表明輸入、處理、輸出三者之間的關(guān)系。詳細表明輸入、處理、輸出三者之間的關(guān)系。輸入和輸出應輸入和輸出應是確定的文件和記錄,或是文件和記錄中的字段,以及具體是確定的文件和記錄,或是文件和記錄中的字段,以及具體介質(zhì)和設(shè)備類型,處理框中的操作也應是具體的而不是含糊介質(zhì)和設(shè)備

40、類型,處理框中的操作也應是具體的而不是含糊的,調(diào)用子程序時應標明子程序名。的,調(diào)用子程序時應標明子程序名。 詳細詳細ipoipo在詳細設(shè)計中處理。在詳細設(shè)計中處理。層次圖 (h圖)層次圖 (h圖) 表明各個功能的隸屬關(guān)系。它是自頂向下逐層分解得到的。最高一層是整個系統(tǒng)的名稱和系統(tǒng)的概括功能說明;最高一層是整個系統(tǒng)的名稱和系統(tǒng)的概括功能說明;第二層把系統(tǒng)功能展開,分成幾個框;第二層把系統(tǒng)功能展開,分成幾個框;第二層功能進一步分解,就得到了第三層、第四層,第二層功能進一步分解,就得到了第三層、第四層,直到最后一層。直到最后一層。每個框內(nèi)都應有一個名字,用以標識它的功能。還應有一每個框內(nèi)都應有一個名

41、字,用以標識它的功能。還應有一個編號,以記錄它所在的層次及在該層次的位置。個編號,以記錄它所在的層次及在該層次的位置。盤存盤存/銷售系統(tǒng)銷售系統(tǒng)1.0.0銷售處理銷售處理 1.1.0盤存處理盤存處理1.2.0計算計算銷售銷售記錄記錄1.1.1產(chǎn)生產(chǎn)生銷售銷售報表報表1.1.2核對顧核對顧客賒欠客賒欠的金額的金額1.1.3檢查檢查庫存庫存數(shù)量數(shù)量1.2.1產(chǎn)生發(fā)產(chǎn)生發(fā)貨單、貨單、裝運單裝運單1.2.2顧客顧客付款付款收據(jù)收據(jù)1.2.3產(chǎn)生產(chǎn)生盤存盤存報表報表1.2.3例:盤存例:盤存/ /銷售系統(tǒng)的層次圖銷售系統(tǒng)的層次圖根據(jù)需求分析,系統(tǒng)應具備有以下功能:根據(jù)需求分析,系統(tǒng)應具備有以下功能:1

42、1)計算買主訂單)計算買主訂單 2 2)準備銷售報表)準備銷售報表 3 3)產(chǎn)生買主文件和應收帳發(fā)票)產(chǎn)生買主文件和應收帳發(fā)票4 4)運行更新的盤存文件)運行更新的盤存文件 5 5)產(chǎn)生托運單和包裝單)產(chǎn)生托運單和包裝單 6 6)保證庫存及時訂貨)保證庫存及時訂貨編號1.0.01.1.01.1.11.1.21.1.31.2.0說 明 銷售/盤存處理框圖顧客訂單檢查, 核對顧客賒欠金額, 產(chǎn)生銷售報表用工作文件的盤存項目號, 對顧客訂單進行核對和排序以地區(qū)和人員為單位, 編制銷售報表, 計算銷售傭金檢驗顧客賒欠金額, 計算折扣, 確定支付項目處理顧客盤存管理報表, 顧客付款收帳, 處理發(fā)貨、包裝

43、、托運例:盤存例:盤存/ /銷售系統(tǒng)的層次圖說明銷售系統(tǒng)的層次圖說明對應h圖上1.1.0框的概要ipo圖 銷售事務記錄銷售事務記錄顧客賒欠顧客賒欠金額文件金額文件退回訂單文件退回訂單文件后備訂單文件后備訂單文件退回訂單退回訂單無效訂單無效訂單特殊處理訂單特殊處理訂單工作文件工作文件銷售報表銷售報表計算銷售事務記錄計算銷售事務記錄,產(chǎn)生排序的工作文產(chǎn)生排序的工作文件件 1.1.1按地區(qū)及銷售人員按地區(qū)及銷售人員,產(chǎn)生銷售報表產(chǎn)生銷售報表,計算計算銷售手續(xù)費銷售手續(xù)費 1.1.2核對顧客賒欠金額核對顧客賒欠金額,計算應付款項計算應付款項1.1.31.1.0輸入輸入 input輸出輸出 output

44、處理處理 process1.1.2銷售報表銷售報表1. 以銷售地區(qū)和銷售以銷售地區(qū)和銷售 人員的銷售額排序人員的銷售額排序2. 準備銷售報表準備銷售報表 地區(qū)銷售總計地區(qū)銷售總計 人員銷售總計人員銷售總計 計算傭金計算傭金交易交易文件文件sort系統(tǒng)提供系統(tǒng)提供的子例程的子例程銷售數(shù)銷售數(shù)據(jù)排序據(jù)排序文件文件從從1.1.1框來框來到到 1.1.3框去框去對應于對應于hh圖圖1.1.21.1.2框的詳細框的詳細ipoipo圖圖hipohipo法的特點法的特點優(yōu)點:簡單易行,資料易于查找,不僅適于信息軟件的開發(fā),也可用于邏輯關(guān)系較復雜的應用軟件缺點:無驗證功能,功能完備性很難驗證。未能反映系統(tǒng)性能

45、要求。資料量大,不宜規(guī)模大的系統(tǒng)。6.4 6.4 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法(jackson(jackson方法方法) )6.4.1 jackson6.4.1 jackson圖圖6.4.2 6.4.2 改進的改進的jacksonjackson圖圖6.4.3 jackson6.4.3 jackson方法方法jsdjsd系統(tǒng)方法簡介系統(tǒng)方法簡介jacksonjackson系統(tǒng)開發(fā)(系統(tǒng)開發(fā)(jsdjsd)方法是一種典型的面向數(shù)據(jù))方法是一種典型的面向數(shù)據(jù)結(jié)構(gòu)的分析與設(shè)計方法。其分析的重點放在構(gòu)造與系結(jié)構(gòu)的分析與設(shè)計方法。其分析的重點放在構(gòu)造與系統(tǒng)相關(guān)的現(xiàn)實世界,并建立現(xiàn)實世界的信

46、息域的模型統(tǒng)相關(guān)的現(xiàn)實世界,并建立現(xiàn)實世界的信息域的模型上。其最終目標是生產(chǎn)軟件的過程性描述。上。其最終目標是生產(chǎn)軟件的過程性描述。前面介紹的結(jié)構(gòu)化開發(fā)方法是一種面向數(shù)據(jù)流的開發(fā)前面介紹的結(jié)構(gòu)化開發(fā)方法是一種面向數(shù)據(jù)流的開發(fā)方法,而方法,而jacksonjackson系統(tǒng)開發(fā)方法則是面向數(shù)據(jù)結(jié)構(gòu)的開系統(tǒng)開發(fā)方法則是面向數(shù)據(jù)結(jié)構(gòu)的開發(fā)方法。其基本思想實現(xiàn)建立輸入輸出的數(shù)據(jù)結(jié)構(gòu),發(fā)方法。其基本思想實現(xiàn)建立輸入輸出的數(shù)據(jù)結(jié)構(gòu),再將其轉(zhuǎn)換為軟件結(jié)構(gòu)。再將其轉(zhuǎn)換為軟件結(jié)構(gòu)。jacksonjackson方法由英國的方法由英國的m. jacksonm. jackson提出,該方法特別提出,該方法特別適合于數(shù)

47、據(jù)處理類問題。如企事業(yè)管理一類的軟件系適合于數(shù)據(jù)處理類問題。如企事業(yè)管理一類的軟件系統(tǒng)。統(tǒng)。6.4.1 jackson6.4.1 jackson圖圖數(shù)據(jù)元素彼此間的基本邏輯關(guān)系只有順序、選擇和重數(shù)據(jù)元素彼此間的基本邏輯關(guān)系只有順序、選擇和重復復3 3類,因此,邏輯數(shù)據(jù)結(jié)構(gòu)也只有這類,因此,邏輯數(shù)據(jù)結(jié)構(gòu)也只有這3 3類。類。1. 1. 順序結(jié)構(gòu)順序結(jié)構(gòu)順序結(jié)構(gòu)的數(shù)據(jù):由一個或多個數(shù)據(jù)元素組成,每個元素按確定次序出現(xiàn)一次。2. 2. 選擇結(jié)構(gòu)選擇結(jié)構(gòu)選擇結(jié)構(gòu)的數(shù)據(jù):包含兩個或多個數(shù)據(jù)元素,每次使用這個數(shù)據(jù)時按一定條件從這些數(shù)據(jù)元素中選擇一個。 3. 3. 重復結(jié)構(gòu)重復結(jié)構(gòu)重復結(jié)構(gòu)的數(shù)據(jù):根據(jù)使用時

48、的條件由一個數(shù)據(jù)元素出現(xiàn)零次或多次構(gòu)成。 jacksonjackson圖的三種結(jié)構(gòu)圖的三種結(jié)構(gòu)圖圖6.8 順序結(jié)構(gòu)順序結(jié)構(gòu)a由由b、c、d 3個元素順序組成個元素順序組成圖圖6.9 選擇結(jié)構(gòu)選擇結(jié)構(gòu)根據(jù)條件根據(jù)條件a是是b或或c或或d中的某一個中的某一個圖圖6.10 重復結(jié)構(gòu)重復結(jié)構(gòu)a由由b出現(xiàn)出現(xiàn)n次次(n0)組成組成6.4.2 6.4.2 改進的改進的jacksonjackson圖圖上一小節(jié)介紹的上一小節(jié)介紹的jacksonjackson圖的缺點是:圖的缺點是: 表示選擇或重復結(jié)構(gòu)時,選擇條件或循環(huán)結(jié)束條件不能直接在圖上表示出來;框間連線為斜線,層次結(jié)構(gòu)不嚴謹。(舊理由:不易在行式打印機上

49、輸出。) 改進改進jacksonjackson圖圖 上、下層之間的連線改成組織結(jié)構(gòu)層次連線。在重復結(jié)構(gòu)的連線上標注循環(huán)條件。在選擇結(jié)構(gòu)的連線上標注選擇條件。增加單分支選擇結(jié)構(gòu),即在無操作的選擇臂上使用“無關(guān)”結(jié)點框。6.4.2 6.4.2 改進的改進的jacksonjackson圖圖(a)(a)順序結(jié)構(gòu)順序結(jié)構(gòu)(b)(b)多重選擇結(jié)構(gòu),帶選擇條多重選擇結(jié)構(gòu),帶選擇條件件(c)(c)單臂選擇結(jié)構(gòu),帶選擇條單臂選擇結(jié)構(gòu),帶選擇條件件(d)(d)重復結(jié)構(gòu),帶重復選擇條重復結(jié)構(gòu),帶重復選擇條件件圖圖6.11 改進的改進的jackson圖圖jacksonjackson圖和軟件結(jié)構(gòu)層次圖不同圖和軟件結(jié)構(gòu)層

50、次圖不同jacksonjackson圖和描繪軟件結(jié)構(gòu)的層次圖形式類似,但是圖和描繪軟件結(jié)構(gòu)的層次圖形式類似,但是含義卻很不相同。含義卻很不相同。方框中內(nèi)容不同方框中內(nèi)容不同層次圖中的一個方框通常代表一個模塊; jackson圖的一個方框只代表幾個語句。 上下方框之間的關(guān)系不同上下方框之間的關(guān)系不同 層次圖表現(xiàn)的是調(diào)用關(guān)系,通常一個模塊除了調(diào)用下級模塊外,還完成其他操作;jackson圖表現(xiàn)的是組成關(guān)系,一個方框中包括的操作僅僅由它下層框中的那些操作組成。6.4.3 jackson6.4.3 jackson方法方法jacksonjackson方法方法sd法是一種面向數(shù)據(jù)流的設(shè)計方法,jackso

51、n方法是一種面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法。強調(diào)程序結(jié)構(gòu)與問題結(jié)構(gòu)相對應。jacksonjackson方法的構(gòu)成方法的構(gòu)成jackson方法由jsp(jackson structured programming)和jsd(jackson system development)方法構(gòu)成。jsp法主要體現(xiàn)程序結(jié)構(gòu)的設(shè)計,不嚴格區(qū)分軟件概要設(shè)計和詳細設(shè)計??梢愿鶕?jù)jsp的規(guī)則直接導出程序結(jié)構(gòu)。一般用于規(guī)模不大的數(shù)據(jù)處理系統(tǒng),而且i/o數(shù)據(jù)結(jié)構(gòu)容易描述的情況。jsd法是對jsp法的擴充,針對jsp法的缺陷而提出的解決方案。其主要特點是:用“分而治之”的策略控制系統(tǒng)的復雜性,解決i/o結(jié)構(gòu)的沖突問題。jsdjs

52、d方法的步驟如下方法的步驟如下1 1、實體動作分析、實體動作分析2 2、實體結(jié)構(gòu)分析、實體結(jié)構(gòu)分析3 3、定義初始模型、定義初始模型4 4、功能描述:詳細說明與已定義的動作相對應的功能。、功能描述:詳細說明與已定義的動作相對應的功能。5 5、絕對系統(tǒng)時間特性:對進程調(diào)度特性進行評價和說明。、絕對系統(tǒng)時間特性:對進程調(diào)度特性進行評價和說明。6 6、實現(xiàn):設(shè)計組成系統(tǒng)的硬件和軟件。、實現(xiàn):設(shè)計組成系統(tǒng)的硬件和軟件。jsdjsd方法的前三步屬于需求分析階段,后三步屬于軟件設(shè)計方法的前三步屬于需求分析階段,后三步屬于軟件設(shè)計階段。階段。 例:文本輸入輸出數(shù)據(jù)結(jié)構(gòu)的例:文本輸入輸出數(shù)據(jù)結(jié)構(gòu)的jackso

53、njackson圖圖圖圖6.12 表示輸入輸出數(shù)據(jù)結(jié)構(gòu)的表示輸入輸出數(shù)據(jù)結(jié)構(gòu)的jackson圖圖例:描繪統(tǒng)計空格程序結(jié)構(gòu)的例:描繪統(tǒng)計空格程序結(jié)構(gòu)的jacksonjackson圖圖圖圖6.13 描繪統(tǒng)計空格程序結(jié)構(gòu)的描繪統(tǒng)計空格程序結(jié)構(gòu)的jackson圖圖把操作和條件分配到程序結(jié)構(gòu)圖的適當把操作和條件分配到程序結(jié)構(gòu)圖的適當位置位置圖圖6.14 把操作和條件分配到程序結(jié)構(gòu)圖的適當位置把操作和條件分配到程序結(jié)構(gòu)圖的適當位置實體結(jié)構(gòu)分析實體結(jié)構(gòu)分析1、建立數(shù)據(jù)結(jié)構(gòu):jackson方法中數(shù)據(jù)結(jié)構(gòu)表示為樹型結(jié)構(gòu),有順序、選擇和循環(huán)三種基本結(jié)構(gòu)。2、以數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ),建立相應的程序結(jié)構(gòu)圖,也稱為jacks

54、on圖。當沒有結(jié)構(gòu)沖突時,轉(zhuǎn)換過程是簡單的。jacksonjackson方法的設(shè)計過程方法的設(shè)計過程例:合并文件例:合并文件考慮輸入和輸出之間的對應關(guān)系:輸入、輸出數(shù)據(jù)結(jié)構(gòu)在內(nèi)容、數(shù)量、次序考慮輸入和輸出之間的對應關(guān)系:輸入、輸出數(shù)據(jù)結(jié)構(gòu)在內(nèi)容、數(shù)量、次序上是對應的。上是對應的。1 1、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)2 2、設(shè)計程序圖、設(shè)計程序圖jackson方法的技術(shù)構(gòu)成方法的技術(shù)構(gòu)成根據(jù)報文的中間結(jié)構(gòu),將輸入數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為與輸入的數(shù)據(jù)結(jié)構(gòu)相對應,消除了結(jié)構(gòu)沖突,圖中將報文分析的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為結(jié)構(gòu)圖。顯然,中間結(jié)構(gòu)的選取依賴于設(shè)計者對問題的理解及其設(shè)計者的設(shè)計風格?;厮萁Y(jié)構(gòu)設(shè)計回溯結(jié)構(gòu)設(shè)計 以上回溯結(jié)構(gòu)

55、由三種構(gòu)件組成:以上回溯結(jié)構(gòu)由三種構(gòu)件組成:、posit(假定):用于表示條件成立時的處理過程,進入posit構(gòu)件時程序狀態(tài)就被保存起來。2、quit(退出):當假定調(diào)解不成立,控制轉(zhuǎn)向另一認可。3、admit (認可):admit構(gòu)件提供了另一條處理路徑,在admit的入口處程序無條件恢復到原有狀態(tài)。jacksonjackson方法的優(yōu)點和缺點方法的優(yōu)點和缺點優(yōu)點:優(yōu)點:結(jié)構(gòu)清晰、易理解、易修改。不會過多依賴于設(shè)計者的經(jīng)驗。缺點:缺點:當系統(tǒng)規(guī)模及復雜度大時,確定數(shù)據(jù)結(jié)構(gòu)困難。6.4 程序復雜程度的定量度量程序的復雜程度定量度量的意義:程序的復雜程度定量度量的意義:把程序的復雜程度乘以適當常

56、數(shù)即可估算出軟件中錯誤的數(shù)量以及軟件開發(fā)需要用的工作量,定量度量的結(jié)果可以用來比較兩個不同的設(shè)計或兩個不同算法的優(yōu)劣;程序的定量的復雜程度可以作為模塊規(guī)模的精確限度。 介紹定量度量的二個著名方法介紹定量度量的二個著名方法6.4.1 mccabe方法6.4.2 halstead方法mccabe和halstead在70年代中期提出的度量方法是非常著名的度量方法,直到今天還被激烈討論。mccabe根據(jù)圖論定義了 “循環(huán)數(shù)”來得到一種軟件復雜性度量方法,即著名的mccabe循環(huán)復雜度(cyclomatic complexity )。halstead度是基于程序源代碼。halstead指出估計工作量,或

57、者程序員工作時間,可以用運算符,運算元或語法數(shù)的函數(shù)來表示。6.4.1 mccabe6.4.1 mccabe方法方法mccabemccabe方法概要方法概要mccabe方法根據(jù)程序控制流的復雜程度定量地度量程序的復雜程度,這樣度量出的結(jié)果稱為程序的“環(huán)形復雜度”。主要內(nèi)容主要內(nèi)容流圖概念及變換計算環(huán)形復雜度的方法環(huán)形復雜度的用途1.1.流圖流圖流圖流圖“流圖”是mccabe方法所基于的表示程序控制流的一種圖,也稱為“程序圖”。 流圖是退化的程度流程圖,僅僅描述了程序的“控制流”,完全不表示程序中的具體操作和分支或循環(huán)的具體判定條件。流圖的構(gòu)成流圖的構(gòu)成結(jié)點:流圖中的圓點,表示一個元判定(最簡單

58、的條件),程序中連續(xù)的操作和接著的一個判定可映射成一個結(jié)點。邊:流圖中的箭頭線,表示控制流,每條比邊必須終止于某個結(jié)點。區(qū)域:由流圖的邊所圍成的封閉區(qū)域,所有區(qū)域以外的開區(qū)域(這樣的區(qū)域只有一個)也是流圖的一個區(qū)域。程序流程圖映射成流圖程序流程圖映射成流圖圖圖6.15 把程序流程圖映射成流圖把程序流程圖映射成流圖從程序(或程序段)的入口開始從程序(或程序段)的入口開始,按程序流程順序處理;,按程序流程順序處理;每個判定設(shè)置一個結(jié)點(如圖每個判定設(shè)置一個結(jié)點(如圖1 1、3 3、6 6););將兩個判定之間的所有連續(xù)操作將兩個判定之間的所有連續(xù)操作忽略不計,或合并到后續(xù)的第一忽略不計,或合并到后

59、續(xù)的第一個判定結(jié)點(如圖個判定結(jié)點(如圖2&32&3););后續(xù)沒有判定的操作(或連續(xù)操后續(xù)沒有判定的操作(或連續(xù)操作合并)各設(shè)置一個結(jié)點(如圖作合并)各設(shè)置一個結(jié)點(如圖7 7、8 8、4&54&5););每個結(jié)構(gòu)的出口匯合點各設(shè)置一每個結(jié)構(gòu)的出口匯合點各設(shè)置一個結(jié)點(如圖個結(jié)點(如圖9 9、1010););按照程序流程圖的邏輯關(guān)系用邊按照程序流程圖的邏輯關(guān)系用邊(箭頭線)連接起來。(箭頭線)連接起來。pdlpdl翻譯成流圖翻譯成流圖圖圖6.16 由由pdl翻譯成的流圖翻譯成的流圖包含復合條件的的流圖包含復合條件的的流圖復合條件復合條件指含有布爾運算符的條件:

60、and、or、nand、nor等復合條件的變換復合條件的變換當程序中包含復合條件時,將其拆分成若干個簡單條件(元條件),每個簡單條件對應一個結(jié)點(如圖a、b)。同一個復合條件中簡單條件結(jié)點串聯(lián)起來,且連接到同一操作結(jié)點。圖圖6.17 由包含復合條件的由包含復合條件的pdl映射成的流圖映射成的流圖2.2.計算環(huán)形復雜度的方法計算環(huán)形復雜度的方法可采用下面任何一種方法可采用下面任何一種方法“流圖流圖g g的環(huán)形復雜度的環(huán)形復雜度”: :使用區(qū)域數(shù)計算v(g) = d 其中d為區(qū)域數(shù)使用邊與結(jié)點數(shù)計算:v(g)=e-n+2其中:e為邊數(shù),n為結(jié)點數(shù)使用判定結(jié)點數(shù)計算:v(g)=p+1其中:p為判定結(jié)點數(shù)例:如圖例:如圖4個區(qū)域:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論