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

下載本文檔

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

文檔簡(jiǎn)介

1、第六章 詳細(xì)設(shè)計(jì)How to do detailedly?詳細(xì)設(shè)計(jì)問(wèn)題定義可行性研究需求分析總體設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼與單元測(cè)試綜合測(cè)試軟件維護(hù)軟件定義時(shí)期軟件開發(fā)時(shí)期軟件維護(hù)時(shí)期詳細(xì)地確定怎樣具體地實(shí)現(xiàn)系統(tǒng)。給出目標(biāo)系統(tǒng)的詳細(xì)描述。設(shè)計(jì)模塊內(nèi)部的處理過(guò)程。結(jié)構(gòu)化程序設(shè)計(jì)是詳細(xì)設(shè)計(jì)的邏輯基礎(chǔ)。為編碼實(shí)現(xiàn)、測(cè)試方案設(shè)計(jì)提供藍(lán)圖。第6章 詳細(xì)設(shè)計(jì)6.1 結(jié)構(gòu)程序設(shè)計(jì)6.2 人機(jī)界面設(shè)計(jì)6.3 過(guò)程設(shè)計(jì)的工具6.4 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法6.5 程序復(fù)雜程度的定量度量6.1 結(jié)構(gòu)程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)“結(jié)構(gòu)程序設(shè)計(jì)是盡可能少用GO TO語(yǔ)句的程序設(shè)計(jì)方法。最好僅在檢測(cè)出錯(cuò)誤時(shí)才使用GO TO語(yǔ)句,而且應(yīng)該

2、總是使用前向GO TO語(yǔ)句”,“程序的質(zhì)量與程序中所包含的GO TO 語(yǔ)句的數(shù)量成反比” 。E.W.Dijkstra,1965。基本的程序控制結(jié)構(gòu)Bohm和Jacopini證明了:3種基本的控制結(jié)構(gòu)(順序,選擇,循環(huán))就能實(shí)現(xiàn)任何單入口單出口的程序。實(shí)際上,順序結(jié)構(gòu)和循環(huán)結(jié)構(gòu)理論上是的最基本的控制結(jié)構(gòu)。三種基本的控制結(jié)構(gòu)圖6.1 3種基本的控制結(jié)構(gòu)順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)其他常用的控制結(jié)構(gòu)圖6.2 其他常用的控制結(jié)構(gòu)多項(xiàng)選擇結(jié)構(gòu)后置循環(huán)結(jié)構(gòu)結(jié)構(gòu)程序設(shè)計(jì)指導(dǎo)準(zhǔn)則經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì):只允許使用順序、IF-THEN-ELSE型分支和DO-WHILE型循環(huán)這3種基本控制結(jié)構(gòu); 擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì):除了

3、上述3種基本控制結(jié)構(gòu)之外,還允許使用DO-CASE型多分支結(jié)構(gòu)和DO-UNTIL型循環(huán)結(jié)構(gòu); 修正的結(jié)構(gòu)程序設(shè)計(jì):除上述結(jié)構(gòu)以外,還允許使用LEAVE(或BREAK)結(jié)構(gòu)。 使用GO TO語(yǔ)句的原則:結(jié)構(gòu)程序設(shè)計(jì)是不使用(或盡可能少用)GO TO語(yǔ)句的程序設(shè)計(jì)方法。僅在檢測(cè)出錯(cuò)誤時(shí)才使用GO TO語(yǔ)句,而且總是使用后向GO TO語(yǔ)句。6.2人機(jī)界面設(shè)計(jì)6.2.1設(shè)計(jì)問(wèn)題6.2.2設(shè)計(jì)過(guò)程6.2.3人機(jī)界面設(shè)計(jì)指南6.2.1設(shè)計(jì)問(wèn)題1. 系統(tǒng)響應(yīng)時(shí)間 響應(yīng)時(shí)間的長(zhǎng)度:適中相應(yīng)時(shí)間的易變性:同一類操作的響應(yīng)時(shí)間不要差異太大。2. 用戶幫助設(shè)施 脫機(jī)幫助手冊(cè)附加的聯(lián)機(jī)幫助集成的聯(lián)機(jī)幫助上下文相關(guān)的聯(lián)

4、機(jī)幫助3. 出錯(cuò)信息(及警告信息)處理 如何辦, 用戶心理4. 命令交互多媒體(圖,文,聲,光)自定義宏指令控制序列(CTRL+字母 )6.2.2設(shè)計(jì)過(guò)程迭代的設(shè)計(jì)過(guò)程創(chuàng)建設(shè)計(jì)模型原型實(shí)現(xiàn)評(píng)估復(fù)審進(jìn)一步精化評(píng)估復(fù)審的準(zhǔn)則系統(tǒng)規(guī)格說(shuō)明書的長(zhǎng)度和復(fù)雜程度動(dòng)作、命令中的包含的平均參數(shù)個(gè)數(shù)及操作個(gè)數(shù)設(shè)計(jì)模型中包含的動(dòng)作、命令、狀態(tài)的數(shù)量界面風(fēng)格、幫助設(shè)施、出錯(cuò)處理的友好性6.2.3人機(jī)界面設(shè)計(jì)指南界面的類別界面應(yīng)具有的基本特性界面設(shè)計(jì)指南界面設(shè)計(jì)的任務(wù)界面的基本形式(舉例)用戶界面的類別一般交互界面“一般交互”包括信息顯示、數(shù)據(jù)輸入、系統(tǒng)整體控制。這一部分指南具有全局性意義,對(duì)系統(tǒng)界面好壞影響極大。信

5、息顯示界面指顯示信息時(shí)要注意的問(wèn)題。顯示的信息應(yīng)該是完整的、無(wú)二義的、好理解的,這樣才能滿足用戶要求。信息“顯示”的不同方式:文字/圖形/聲音;不同位置/移動(dòng);不同大小;不同顏色/分辨率;等等。數(shù)據(jù)輸入界面數(shù)據(jù)輸入界面,是系統(tǒng)的重要組成部分。主要從輸入效率和減少出錯(cuò)率考慮。用戶一般會(huì)花費(fèi)大量的時(shí)間在命令操作和數(shù)據(jù)輸入操作,因此友好的數(shù)據(jù)輸入操作非常必要。不同輸入手段(介質(zhì)/設(shè)備):鍵盤、鼠標(biāo)、數(shù)字化儀、掃描儀、語(yǔ)音、照片、視頻等等。1、可使用性 使用簡(jiǎn)單 用戶界面中所用術(shù)語(yǔ)的標(biāo)準(zhǔn)化和一致性 具有HELP功能 快速的系統(tǒng)響應(yīng)和低的系統(tǒng)成本 具有容錯(cuò)能力2、靈活性 考慮用戶的特點(diǎn)、能力、知識(shí)水平。

6、 提供不同的系統(tǒng)響應(yīng)信息。 提供根據(jù)用戶需求制定和修改界面。3、界面的復(fù)雜性與可靠性復(fù)雜性界面規(guī)模及組織的復(fù)雜程度。應(yīng)該愈簡(jiǎn)單愈好。可靠性指無(wú)故障使用的時(shí)間間隔。用戶界面應(yīng)該能夠保證用戶正確、可靠地使用系統(tǒng),及程序、數(shù)據(jù)的安全。用戶界面應(yīng)具有的基本特性一般交互界面設(shè)計(jì)指南保持界面格式的一致性提供有意義的反饋信息重要操作要確認(rèn):如新增0次確認(rèn)、修改1次確認(rèn)、刪除2次確認(rèn)為大部分操作提供“回退”(Undo)減少兩次操作之間的記憶的信息量(自動(dòng)補(bǔ)充缺省值)提高操作效率:思考、對(duì)話、按鍵、光標(biāo)移動(dòng)等效率容許錯(cuò)誤操作,出錯(cuò)后不會(huì)對(duì)系統(tǒng)造成嚴(yán)重影響操作功能/動(dòng)作分類,屏幕合理布局提供操作的幫助設(shè)施簡(jiǎn)單易懂

7、的命令名信息顯示界面設(shè)計(jì)指南只顯示當(dāng)前工作相關(guān)的信息以合適的形式顯示信息:圖形?圖表?清單?以統(tǒng)一的風(fēng)格顯示信息:統(tǒng)一的標(biāo)記、標(biāo)準(zhǔn)的縮寫、預(yù)定的顏色、確定的位置等提供可視化的顯示環(huán)境產(chǎn)生有意義的出錯(cuò)信息使用格式化的顯示板式:大小寫、縮進(jìn)、文本分段等使用窗口分隔不同類型信息使用“模擬”顯示方式表示信息:數(shù)字儀表盤技術(shù)合理高效地使用物理顯示屏數(shù)據(jù)輸入界面設(shè)計(jì)指南盡量減少用戶的輸入動(dòng)作,使按鍵最少,如對(duì)相同內(nèi)容輸入設(shè)置默認(rèn)值、自動(dòng)填入、列表選擇或點(diǎn)擊選擇等。保持信息顯示和數(shù)據(jù)輸入一致性:視覺效果一致容許用戶自定義輸入:為專家級(jí)用戶提供的機(jī)制提供靈活的交互方式:鍵盤、鼠標(biāo)等,適應(yīng)不同用戶休眠(disa

8、ble)當(dāng)前動(dòng)作語(yǔ)境中不用的命令讓用戶控制交互流:靈活的操作順序和恢復(fù)機(jī)制對(duì)所有輸入動(dòng)作都提供幫助消除冗余的輸入用戶界面設(shè)計(jì)的任務(wù)1、用戶特性分析 用戶模型 了解所有用戶的技能和經(jīng)驗(yàn),針對(duì)用戶能力設(shè)計(jì)或更改界面。從以下方面分析:用戶類型通常分為:外行型、初學(xué)型、熟練型、專家型。用戶特性度量與用戶使用模式和用戶群體能力有關(guān)。包括:用戶使用頻度、用戶用機(jī)能力、用戶的知識(shí)、思維能力等。2、用戶界面的任務(wù)分析 任務(wù)模型(DFD圖)是對(duì)系統(tǒng)內(nèi)部活動(dòng)的分解,不僅要進(jìn)行功能分解(用DFD圖描述),還要包括與人相關(guān)的活動(dòng)(人工操作)。每個(gè)加工即一個(gè)功能或任務(wù)。3、確定用戶界面類型從用戶角度出發(fā),用戶界面設(shè)計(jì)的

9、類型主要有問(wèn)題描述語(yǔ)言,數(shù)據(jù)表格、圖形與圖標(biāo)、菜單、對(duì)話框及窗口等。每一種類型都有不同的特點(diǎn)和性能。用戶界面的基本形式舉例菜單程序中功能的選擇、數(shù)據(jù)的選擇圖象將數(shù)據(jù)可視化地展示圖表顯示統(tǒng)計(jì)數(shù)據(jù)、對(duì)比的數(shù)據(jù)儀表盤動(dòng)態(tài)變化的數(shù)據(jù)、仿真的數(shù)據(jù)對(duì)話框初始數(shù)據(jù)、任意數(shù)據(jù)的輸入窗口綜合界面,可包含數(shù)據(jù)輸入、信息顯示、功能選擇操作等。菜單(menu)圖3.54 混合菜單圖3.55 固定及下拉菜單固定菜單下拉菜單按照顯示方式正文菜單、圖標(biāo)菜單、正文和圖標(biāo)混合菜單,如:開始菜單按屏幕位置和操作風(fēng)格固定位置、浮動(dòng)位置(彈出)、下拉式、嵌入式在用戶界面中,加入豐富多彩的畫面,將能夠更加行象地為用戶提供有用的信息,以

10、達(dá)到可視化的目的。主要的處理操作有:圖象的隱蔽和再現(xiàn)、屏幕滾動(dòng)和圖案顯示、動(dòng)畫等。圖象圖表圖表主要形式:折線圖、直方圖、餅圖等圖表的用途:顯示時(shí)間變化數(shù)據(jù)、統(tǒng)計(jì)數(shù)據(jù)、對(duì)比數(shù)據(jù)等儀表盤仿真儀表面板,直觀、動(dòng)態(tài)地顯示數(shù)據(jù)適合于動(dòng)態(tài)數(shù)據(jù)、性能參數(shù)、比較數(shù)據(jù)的顯示對(duì)話框是在需要時(shí),顯示在屏幕上一個(gè)矩形區(qū)域內(nèi)的圖形和正文信息。通過(guò)對(duì)話,實(shí)現(xiàn)系統(tǒng)和用戶之間的通信。對(duì)話框顯示的方式與彈出式菜單類似,即瞬時(shí)彈出。同時(shí),系統(tǒng)還應(yīng)將對(duì)話框所覆蓋的原圖象進(jìn)行保存,以便在對(duì)話結(jié)束后能立即恢復(fù)。有三種對(duì)話形式:必須回答式如圖3.58所示無(wú)需回答式 如圖3.59所示警告式 如圖4.58所示圖3.58 必須回答式對(duì)話框圖3

11、.59 無(wú)需回答式對(duì)話框圖3.60 警告式對(duì)話框?qū)υ捒蚣匆晥D區(qū)(Viewport),視為虛擬屏幕。一個(gè)實(shí)用窗口,可包含部件: 菜單區(qū)(menu bar) 圖標(biāo)區(qū)(icon bar) 標(biāo)題區(qū)(title bar) 移動(dòng)區(qū)(move bar) 大小區(qū)(size bar) 退出區(qū)(quit bar) 用戶工作區(qū)(users work bar) 橫向滾動(dòng)區(qū)(horizontal scroll bar) 縱向滾動(dòng)區(qū)(vertical scroll bar)圖3.61 窗口窗口(window)用戶界面實(shí)例系統(tǒng)信息管理儀表盤界面設(shè)計(jì) 系統(tǒng)實(shí)時(shí)動(dòng)態(tài)運(yùn)行界面設(shè)計(jì) 6.3 過(guò)程設(shè)計(jì)的工具6.3.1 程序流程圖6.

12、3.2 盒圖(N-S圖)6.3.3 問(wèn)題分析圖(PAD圖)6.3.4 判定表6.3.5 判定樹6.3.6 過(guò)程設(shè)計(jì)語(yǔ)言(PDL)6.3.1 程序流程圖程序流程圖的作用程序流程圖(Progran flowchart)作為一種算法表達(dá)工具, 是人們對(duì)解決問(wèn)題的方法、思路或算法的一種描述。國(guó)家標(biāo)準(zhǔn)GB1525-89:信息處理-數(shù)據(jù)流程圖,程序流程圖,系統(tǒng)流程圖,程序網(wǎng)絡(luò)圖和系統(tǒng)資源圖的文件編制符號(hào)及約定國(guó)際標(biāo)準(zhǔn)化組織標(biāo)準(zhǔn)ISO5807-85 :Information processing-Documentation symbols and comventions for data,program a

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

14、理(帶有雙縱邊線的矩形)表示已命名的特定處理.該處理為在另外地方已得到詳細(xì)說(shuō)明,如子例行程序。(d)多重選擇 (多出口菱形)只有一個(gè)入口,但可以有多個(gè)可供選擇的出口。在出口流線上注明滿足選擇條件的值。(e)端點(diǎn)符(扁圓形)表示轉(zhuǎn)向外部環(huán)境或從外部環(huán)境轉(zhuǎn)入. 如程序流程的起始或結(jié)束,數(shù)據(jù)的外部使用起點(diǎn)或終點(diǎn).(f)準(zhǔn)備(六邊形符號(hào))它表示修改一條指令或一組指令以影響隨后的活動(dòng).例如,設(shè)置開關(guān),初始化例行程序.(g-h)循環(huán)界限(去角矩形)表示循環(huán)的開始和循環(huán)的結(jié)束. 一對(duì)符號(hào)內(nèi)應(yīng)注明同一循環(huán)標(biāo)識(shí)符。程序流程圖的符號(hào)(續(xù))(i)虛線用于表明被注解的范圍或連接被注解部分與注解正文。.(j)省略符(三

15、點(diǎn)構(gòu)成)若流程圖中有些部分無(wú)需給出符號(hào)的具體形式和數(shù)量,可用省略符。(k)并行方式(一對(duì)平行線)表示同步進(jìn)行兩個(gè)或兩個(gè)以上并行方式的操作.。(l)處理(矩形)表示各種處理功能.例如,執(zhí)行一個(gè)或一組特定的操作, 矩形內(nèi)可注明處理名。(m)數(shù)據(jù)(平行四邊形)表示數(shù)據(jù),其中可注明數(shù)據(jù)名,來(lái)源,用途或其它的文字說(shuō)明。(n)連接符(圓形)用以表明轉(zhuǎn)向流程圖的它處,或從流程圖它處轉(zhuǎn)入.它是流線的斷點(diǎn),在圓形內(nèi)注明斷編號(hào)(符號(hào))。(o)連接符(錐形)用以表明轉(zhuǎn)向另一流程圖,或從另一流程圖轉(zhuǎn)入.它是流線圖的斷點(diǎn),在錐形內(nèi)注明流程圖編號(hào)(名稱)。(p).流線(箭頭直線)表示控制流的流向. abX1X2X7X6X

16、4X3X5higfedcjFTFFFTTT多分支選擇結(jié)構(gòu)先判定型循環(huán)結(jié)構(gòu)選擇結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)程序流程圖例6.3.2 盒圖(N-S圖)盒圖盒圖(N-S圖)是一種符合結(jié)構(gòu)化程序設(shè)計(jì)(SP)的圖形工具。其結(jié)構(gòu)化具有強(qiáng)制性。N-S圖的基本結(jié)構(gòu)N-S圖僅含有圖6.4的5種基本成分,它們分別表示SP方法的幾種標(biāo)準(zhǔn)控制結(jié)構(gòu)。N-S圖的數(shù)據(jù)盒和模塊盒用NS圖作為詳細(xì)設(shè)計(jì)的描述手段時(shí),常需用兩個(gè)盒子:數(shù)據(jù)盒和模塊盒。前者描述有關(guān)的數(shù)據(jù),包括全程數(shù)據(jù)、局部數(shù)據(jù)和模塊界面上的參數(shù)等,后者描述執(zhí)行過(guò)程。N-S圖的主要特點(diǎn):每種結(jié)構(gòu)的功能域明確不可能任意轉(zhuǎn)移(go to)控制很容易確定局部和全局?jǐn)?shù)據(jù)作用域很容易表現(xiàn)

17、結(jié)構(gòu)的嵌套關(guān)系和模塊的層次結(jié)構(gòu)簡(jiǎn)單、易學(xué)易用NS圖的缺點(diǎn)手工修改比較麻煩,這是有些人不用它的主要原因。ab條 件 1TF Case Xi, i=2,3,4X2X3X4當(dāng)條件3成立條 件 2直到條件4成立直 到 條 件 成立cdefghijFTTF盒圖NS圖基本結(jié)構(gòu)圖6.4 盒圖的基本符號(hào)順序選擇多重選擇前置/后置條件循環(huán)調(diào)用子程序ab條 件 1TF Case Xi, i=2,3,4X2X3X4當(dāng)條件3成立條 件 2直到條件4成立直 到 條 件 成立cdefghij順序結(jié)構(gòu)選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)先判定型循環(huán)結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)FTTFNS圖舉例N-S圖舉例模塊的數(shù)據(jù)盒和過(guò)程盒6.3.3 問(wèn)題分析

18、圖(PAD圖)PADPAD(Problem Analysis Diagram,問(wèn)題分析圖)是日立公司創(chuàng)立的一種采用二維(平面)、樹形結(jié)構(gòu)表示程序的控制結(jié)構(gòu)的結(jié)構(gòu)化設(shè)計(jì)方法。PAD為多種高級(jí)程序設(shè)計(jì)語(yǔ)言(Fortran、Cobol、Pascal等)根據(jù)其語(yǔ)言結(jié)構(gòu)特點(diǎn)都設(shè)計(jì)了一套符號(hào)。PAD的優(yōu)點(diǎn)結(jié)構(gòu)化:采用結(jié)構(gòu)化的PAD設(shè)計(jì)出的程序必定是結(jié)構(gòu)化的。程序結(jié)構(gòu)清晰:垂直(豎線)方向表明了結(jié)構(gòu)的順序,水平方向(結(jié)構(gòu))表明了結(jié)構(gòu)嵌套的層次及深度(豎線的數(shù)目)。程序邏輯清晰:很好地表現(xiàn)程序邏輯,易讀、易懂、易記。自上而下、從左向右執(zhí)行,可遍歷程序的所有節(jié)點(diǎn)(圖論中的“廣度優(yōu)先”遍歷)。易于轉(zhuǎn)換成高級(jí)程序設(shè)

19、計(jì)語(yǔ)言的源程序:PAD規(guī)范,易于自動(dòng)轉(zhuǎn)換,有利于提高軟件可靠性和生產(chǎn)率。表達(dá)能力強(qiáng):既可容易地表達(dá)程序邏輯,也可表達(dá)數(shù)據(jù)結(jié)構(gòu)。支持“自頂向下、逐步求精”的設(shè)計(jì)方法:在上層進(jìn)行抽象,使用“def”符號(hào)在下層逐步細(xì)化。PAD的不足水平嵌套層次太深時(shí),表達(dá)顯得有點(diǎn)凌亂。PAD圖的基本控制結(jié)構(gòu)(a)順序結(jié)構(gòu)(b)選擇結(jié)構(gòu)(c)多分枝選族結(jié)構(gòu)(d)前置條件循環(huán)結(jié)構(gòu)(e)后置條件循環(huán)結(jié)構(gòu)(f)語(yǔ)句標(biāo)號(hào)(g)定義圖6.5 PAD圖的基本符號(hào)PAD使用“def”逐步求精示例圖6.6 使用PAD圖提供的定義功能來(lái)逐步求精的例子PAD示例while-do x3bfgx1ado-while x6jx4do-whil

20、e x5hicdex2=1=2=3BEGIN FIRST:=K1; SECOND:=0; FOR I:=2 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=KIPASCAL源程序段對(duì)應(yīng)PAD圖PAD應(yīng)用示例算法功能:在數(shù)組K1.N中(所有元素不小于0),找出最大(FIRST)和次

21、大(SECOND)的數(shù)。6.3.4 判定表判定表表達(dá)復(fù)雜的條件組合與需執(zhí)行的動(dòng)作之間的對(duì)應(yīng)關(guān)系的一種關(guān)系表。判定表由四部分組成:基本條件條件組合矩陣 (規(guī)則,或條件表達(dá)式)基本動(dòng)作動(dòng)作組合矩陣(條件組合對(duì)應(yīng)要執(zhí)行的動(dòng)作)判定表特點(diǎn)可準(zhǔn)確地表達(dá)“規(guī)則-操作”條件表達(dá)式(規(guī)則)可簡(jiǎn)化只適用于此,作為其他設(shè)計(jì)工具的補(bǔ)充C1C2CmA1A2Am規(guī)則動(dòng)作判定表:示例1假設(shè)某航空公司規(guī)定,乘客可以免費(fèi)托運(yùn)重量不超過(guò)30kg的行李。當(dāng)行李重量超過(guò)30kg時(shí), 對(duì)頭等艙的國(guó)內(nèi)乘客超重部分每公斤收費(fèi)4元, 對(duì)其他艙的國(guó)內(nèi)乘客超重部分每公斤收費(fèi)6元,對(duì)外國(guó)乘客超重部分每公斤收費(fèi)比國(guó)內(nèi)乘客多一倍, 對(duì)殘疾乘客超重部

22、分每公斤收費(fèi)比正常乘客少一半。 判定表:示例2假設(shè)某大學(xué)要從學(xué)生中挑選男子籃球隊(duì)隊(duì)員,基本條件是: 各門課程的平均分在70分以上, 身高超過(guò)180米,體重超過(guò)75千克。 需要從學(xué)生登記表中挑選出符合上述條件的男同學(xué),并列出他們的姓名和住址,以便進(jìn)一步選拔。 6.3.5 判定樹判定樹用樹型結(jié)構(gòu)表示條件組合與應(yīng)做的動(dòng)作之間的關(guān)系。是判定表的變種。判定樹的特點(diǎn)與判定表相比,能更清晰地表達(dá)復(fù)雜的條件組合關(guān)系。形式簡(jiǎn)單,易于使用,易于理解所表達(dá)的條件-動(dòng)作關(guān)系的含義。判定樹例圖6.6 用判定樹表示計(jì)算行李費(fèi)的算法6.3.6 過(guò)程設(shè)計(jì)語(yǔ)言(PDL)PDL(Procedure Design Language

23、)過(guò)程設(shè)計(jì)語(yǔ)言PDL也稱為“偽碼”或“偽語(yǔ)言”,是一種介于自然語(yǔ)言和程序設(shè)計(jì)語(yǔ)言之間的軟件設(shè)計(jì)語(yǔ)言。 PDL是非形式化比較靈活結(jié)構(gòu)化的語(yǔ)言,用于描述模塊內(nèi)部過(guò)程的具體算法,以便在開發(fā)人員之間比較精確的進(jìn)行交流。PDL的語(yǔ)法PDL的語(yǔ)法是開放式的,其外層語(yǔ)法是確定的,采用類似于一般程序設(shè)計(jì)語(yǔ)言控制結(jié)構(gòu)和關(guān)鍵字。為了區(qū)別關(guān)鍵字,關(guān)鍵字一律大寫,其它單詞一律小寫。而內(nèi)層語(yǔ)法則不確定,一般使用自然語(yǔ)言(或半形式化語(yǔ)言)來(lái)描述處理特性。內(nèi)語(yǔ)法比較靈活,只要寫清楚就可以,不必考慮語(yǔ)法錯(cuò),以利于人們可把主要精力放在描述算法的邏輯上。這種語(yǔ)法一般稱為“類-程序設(shè)計(jì)語(yǔ)言”,如Like-C,Like-JAVA,L

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

25、L控制結(jié)構(gòu)語(yǔ)法例 順序結(jié)構(gòu)p1; P2; pn多分支選擇結(jié)構(gòu)DO CASE OF c c1: p1 c2: p2 cn: pn otherewise: pn+1ENDCASE前置循環(huán)結(jié)構(gòu)WHILE c DO pENDDO 選擇結(jié)構(gòu)IF c THEN p1; ELSE p2;ENDIF后置循環(huán)結(jié)構(gòu)REPEAT p UNTIL c示例: 拼詞檢查程序PROCEDURE spellcheckBEGIN -* split document into single words LOOP get next word add word to word list in sortorder EXIT WHEN

26、all words processed END LOOP -* look up words in dictionary LOOP get word from word list IF word not in dictionary THEN -* display words not in dictionary display word prompt on user terminal IF user response says word OK THEN add word to good word list ELSE add word to bad word list ENDIF ENDIF EXI

27、T WHEN all words processedEND LOOP-* create a new words dictionary dictionary :merge dictionary and good word listEND spellcheck6.4 HIPO法HIPO HIPO法(Hierarchy plus Input-Process-Output) 即按功能層次的結(jié)構(gòu)分析法,是1976年由 IBM 公司推出的軟件分析及設(shè)計(jì)方法,又稱HIPO圖。基本思想結(jié)構(gòu)化方法是以數(shù)據(jù)流,數(shù)據(jù)封閉性準(zhǔn)則來(lái)分解的,HIPO法則是以功能、功能完備性準(zhǔn)則逐層分解的。層次圖 (H圖)層次圖 (H圖)

28、 表明各個(gè)功能的隸屬關(guān)系。它是自頂向下逐層分解得到的。最高一層是整個(gè)系統(tǒng)的名稱和系統(tǒng)的概括功能說(shuō)明;第二層把系統(tǒng)功能展開,分成幾個(gè)框;第二層功能進(jìn)一步分解,就得到了第三層、第四層,直到最后一層。每個(gè)框內(nèi)都應(yīng)有一個(gè)名字,用以標(biāo)識(shí)它的功能。還應(yīng)有一個(gè)編號(hào),以記錄它所在的層次及在該層次的位置。軟件工程IPO圖IPO圖為層次圖中每一功能框詳細(xì)地指明輸入(I)、處理(P)及輸出(O)。通常,IPO圖有固定格式,處理操作部分總是列在中間,輸入和輸出部分分別在其左邊和右邊。由于某些細(xì)節(jié)很難在一張IPO圖中表達(dá)清楚,常常把IPO圖又分為兩部分:概括的稱為概要圖(overview diagram)具體的稱為詳細(xì)

29、圖(detail diagram)。概要IPO圖 vs 詳細(xì)IPO 圖概要IPO圖用于表達(dá)對(duì)一個(gè)系統(tǒng),或?qū)ζ渲心骋蛔酉到y(tǒng)功能的概略表達(dá),指明完成某一功能框規(guī)定的功能時(shí)需要哪些輸入,哪些操作和哪些輸出。概要IPO在總體設(shè)計(jì)中處理。詳細(xì)IPO 圖詳細(xì)表明輸入、處理、輸出三者之間的關(guān)系。輸入和輸出應(yīng)是確定的文件和記錄,或是文件和記錄中的字段,以及具體介質(zhì)和設(shè)備類型,處理框中的操作也應(yīng)是具體的而不是含糊的,調(diào)用子程序時(shí)應(yīng)標(biāo)明子程序名。 詳細(xì)IPO在詳細(xì)設(shè)計(jì)中處理。層次圖 (H圖)層次圖 (H圖) 表明各個(gè)功能的隸屬關(guān)系。它是自頂向下逐層分解得到的。最高一層是整個(gè)系統(tǒng)的名稱和系統(tǒng)的概括功能說(shuō)明;第二層把

30、系統(tǒng)功能展開,分成幾個(gè)框;第二層功能進(jìn)一步分解,就得到了第三層、第四層,直到最后一層。每個(gè)框內(nèi)都應(yīng)有一個(gè)名字,用以標(biāo)識(shí)它的功能。還應(yīng)有一個(gè)編號(hào),以記錄它所在的層次及在該層次的位置。盤存/銷售系統(tǒng)1.0.0銷售處理 1.1.0盤存處理1.2.0計(jì)算銷售記錄1.1.1產(chǎn)生銷售報(bào)表1.1.2核對(duì)顧客賒欠的金額1.1.3檢查庫(kù)存數(shù)量1.2.1產(chǎn)生發(fā)貨單、裝運(yùn)單1.2.2顧客付款收據(jù)1.2.3產(chǎn)生盤存報(bào)表1.2.3例:盤存/銷售系統(tǒng)的層次圖根據(jù)需求分析,系統(tǒng)應(yīng)具備有以下功能:1)計(jì)算買主訂單 2)準(zhǔn)備銷售報(bào)表 3)產(chǎn)生買主文件和應(yīng)收帳發(fā)票4)運(yùn)行更新的盤存文件 5)產(chǎn)生托運(yùn)單和包裝單 6)保證庫(kù)存及時(shí)訂

31、貨編號(hào)說(shuō) 明 1.0.0銷售/盤存處理框圖1.1.0顧客訂單檢查, 核對(duì)顧客賒欠金額, 產(chǎn)生銷售報(bào)表1.1.1用工作文件的盤存項(xiàng)目號(hào), 對(duì)顧客訂單進(jìn)行核對(duì)和排序1.1.2以地區(qū)和人員為單位, 編制銷售報(bào)表, 計(jì)算銷售傭金1.1.3檢驗(yàn)顧客賒欠金額, 計(jì)算折扣, 確定支付項(xiàng)目1.2.0處理顧客盤存管理報(bào)表, 顧客付款收帳, 處理發(fā)貨、包裝、托運(yùn)例:盤存/銷售系統(tǒng)的層次圖說(shuō)明對(duì)應(yīng)H圖上1.1.0框的概要IPO圖 銷售事務(wù)記錄顧客賒欠金額文件退回訂單文件后備訂單文件退回訂單無(wú)效訂單特殊處理訂單工作文件銷售報(bào)表計(jì)算銷售事務(wù)記錄,產(chǎn)生排序的工作文件 1.1.1按地區(qū)及銷售人員,產(chǎn)生銷售報(bào)表,計(jì)算銷售手續(xù)

32、費(fèi) 1.1.2核對(duì)顧客賒欠金額,計(jì)算應(yīng)付款項(xiàng)1.1.31.1.0輸入 Input輸出 Output處理 Process1.1.2銷售報(bào)表1. 以銷售地區(qū)和銷售 人員的銷售額排序2. 準(zhǔn)備銷售報(bào)表 地區(qū)銷售總計(jì) 人員銷售總計(jì) 計(jì)算傭金交易文件SORT系統(tǒng)提供的子例程銷售數(shù)據(jù)排序文件從1.1.1框來(lái)到 1.1.3框去對(duì)應(yīng)于H圖1.1.2框的詳細(xì)IPO圖HIPO法的特點(diǎn)優(yōu)點(diǎn):簡(jiǎn)單易行,資料易于查找,不僅適于信息軟件的開發(fā),也可用于邏輯關(guān)系較復(fù)雜的應(yīng)用軟件缺點(diǎn):無(wú)驗(yàn)證功能,功能完備性很難驗(yàn)證。未能反映系統(tǒng)性能要求。資料量大,不宜規(guī)模大的系統(tǒng)。6.4 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法(Jackson方法)6.4.

33、1 Jackson圖6.4.2 改進(jìn)的Jackson圖6.4.3 Jackson方法JSD系統(tǒng)方法簡(jiǎn)介Jackson系統(tǒng)開發(fā)(JSD)方法是一種典型的面向數(shù)據(jù)結(jié)構(gòu)的分析與設(shè)計(jì)方法。其分析的重點(diǎn)放在構(gòu)造與系統(tǒng)相關(guān)的現(xiàn)實(shí)世界,并建立現(xiàn)實(shí)世界的信息域的模型上。其最終目標(biāo)是生產(chǎn)軟件的過(guò)程性描述。前面介紹的結(jié)構(gòu)化開發(fā)方法是一種面向數(shù)據(jù)流的開發(fā)方法,而Jackson系統(tǒng)開發(fā)方法則是面向數(shù)據(jù)結(jié)構(gòu)的開發(fā)方法。其基本思想實(shí)現(xiàn)建立輸入輸出的數(shù)據(jù)結(jié)構(gòu),再將其轉(zhuǎn)換為軟件結(jié)構(gòu)。Jackson方法由英國(guó)的M. Jackson提出,該方法特別適合于數(shù)據(jù)處理類問(wèn)題。如企事業(yè)管理一類的軟件系統(tǒng)。6.4.1 Jackson圖數(shù)據(jù)

34、元素彼此間的基本邏輯關(guān)系只有順序、選擇和重復(fù)3類,因此,邏輯數(shù)據(jù)結(jié)構(gòu)也只有這3類。1. 順序結(jié)構(gòu)順序結(jié)構(gòu)的數(shù)據(jù):由一個(gè)或多個(gè)數(shù)據(jù)元素組成,每個(gè)元素按確定次序出現(xiàn)一次。2. 選擇結(jié)構(gòu)選擇結(jié)構(gòu)的數(shù)據(jù):包含兩個(gè)或多個(gè)數(shù)據(jù)元素,每次使用這個(gè)數(shù)據(jù)時(shí)按一定條件從這些數(shù)據(jù)元素中選擇一個(gè)。 3. 重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu)的數(shù)據(jù):根據(jù)使用時(shí)的條件由一個(gè)數(shù)據(jù)元素出現(xiàn)零次或多次構(gòu)成。 Jackson圖的三種結(jié)構(gòu)圖6.8 順序結(jié)構(gòu)A由B、C、D 3個(gè)元素順序組成圖6.9 選擇結(jié)構(gòu)根據(jù)條件A是B或C或D中的某一個(gè)圖6.10 重復(fù)結(jié)構(gòu)A由B出現(xiàn)N次(N0)組成6.4.2 改進(jìn)的Jackson圖上一小節(jié)介紹的Jackson圖的缺點(diǎn)

35、是: 表示選擇或重復(fù)結(jié)構(gòu)時(shí),選擇條件或循環(huán)結(jié)束條件不能直接在圖上表示出來(lái);框間連線為斜線,層次結(jié)構(gòu)不嚴(yán)謹(jǐn)。(舊理由:不易在行式打印機(jī)上輸出。) 改進(jìn)Jackson圖 上、下層之間的連線改成組織結(jié)構(gòu)層次連線。在重復(fù)結(jié)構(gòu)的連線上標(biāo)注循環(huán)條件。在選擇結(jié)構(gòu)的連線上標(biāo)注選擇條件。增加單分支選擇結(jié)構(gòu),即在無(wú)操作的選擇臂上使用“無(wú)關(guān)”結(jié)點(diǎn)框。6.4.2 改進(jìn)的Jackson圖(a)順序結(jié)構(gòu)(b)多重選擇結(jié)構(gòu),帶選擇條件(c)單臂選擇結(jié)構(gòu),帶選擇條件(d)重復(fù)結(jié)構(gòu),帶重復(fù)選擇條件圖6.11 改進(jìn)的Jackson圖Jackson圖和軟件結(jié)構(gòu)層次圖不同Jackson圖和描繪軟件結(jié)構(gòu)的層次圖形式類似,但是含義卻很不

36、相同。方框中內(nèi)容不同層次圖中的一個(gè)方框通常代表一個(gè)模塊; Jackson圖的一個(gè)方框只代表幾個(gè)語(yǔ)句。 上下方框之間的關(guān)系不同 層次圖表現(xiàn)的是調(diào)用關(guān)系,通常一個(gè)模塊除了調(diào)用下級(jí)模塊外,還完成其他操作;Jackson圖表現(xiàn)的是組成關(guān)系,一個(gè)方框中包括的操作僅僅由它下層框中的那些操作組成。6.4.3 Jackson方法JACKSON方法SD法是一種面向數(shù)據(jù)流的設(shè)計(jì)方法,JACKSON方法是一種面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法。強(qiáng)調(diào)程序結(jié)構(gòu)與問(wèn)題結(jié)構(gòu)相對(duì)應(yīng)。JACKSON方法的構(gòu)成JACKSON方法由JSP(Jackson Structured Programming)和JSD(Jackson System D

37、evelopment)方法構(gòu)成。JSP法主要體現(xiàn)程序結(jié)構(gòu)的設(shè)計(jì),不嚴(yán)格區(qū)分軟件概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。可以根據(jù)JSP的規(guī)則直接導(dǎo)出程序結(jié)構(gòu)。一般用于規(guī)模不大的數(shù)據(jù)處理系統(tǒng),而且I/O數(shù)據(jù)結(jié)構(gòu)容易描述的情況。JSD法是對(duì)JSP法的擴(kuò)充,針對(duì)JSP法的缺陷而提出的解決方案。其主要特點(diǎn)是:用“分而治之”的策略控制系統(tǒng)的復(fù)雜性,解決I/O結(jié)構(gòu)的沖突問(wèn)題。JSD方法的步驟如下1、實(shí)體動(dòng)作分析2、實(shí)體結(jié)構(gòu)分析3、定義初始模型4、功能描述:詳細(xì)說(shuō)明與已定義的動(dòng)作相對(duì)應(yīng)的功能。5、絕對(duì)系統(tǒng)時(shí)間特性:對(duì)進(jìn)程調(diào)度特性進(jìn)行評(píng)價(jià)和說(shuō)明。6、實(shí)現(xiàn):設(shè)計(jì)組成系統(tǒng)的硬件和軟件。JSD方法的前三步屬于需求分析階段,后三步屬于軟件

38、設(shè)計(jì)階段。 例:文本輸入輸出數(shù)據(jù)結(jié)構(gòu)的Jackson圖圖6.12 表示輸入輸出數(shù)據(jù)結(jié)構(gòu)的Jackson圖例:描繪統(tǒng)計(jì)空格程序結(jié)構(gòu)的Jackson圖圖6.13 描繪統(tǒng)計(jì)空格程序結(jié)構(gòu)的Jackson圖把操作和條件分配到程序結(jié)構(gòu)圖的適當(dāng)位置圖6.14 把操作和條件分配到程序結(jié)構(gòu)圖的適當(dāng)位置實(shí)體結(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ǔ),建立相應(yīng)的程序結(jié)構(gòu)圖,也稱為JACKSON圖。當(dāng)沒(méi)有結(jié)構(gòu)沖突時(shí),轉(zhuǎn)換過(guò)程是簡(jiǎn)單的。JACKSON方法的設(shè)計(jì)過(guò)程例:合并文件考慮輸入和輸出之間的對(duì)應(yīng)關(guān)系:輸入、輸出數(shù)據(jù)結(jié)構(gòu)在內(nèi)容、數(shù)量、次序

39、上是對(duì)應(yīng)的。1、數(shù)據(jù)結(jié)構(gòu)2、設(shè)計(jì)程序圖Jackson方法的技術(shù)構(gòu)成根據(jù)報(bào)文的中間結(jié)構(gòu),將輸入數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為與輸入的數(shù)據(jù)結(jié)構(gòu)相對(duì)應(yīng),消除了結(jié)構(gòu)沖突,圖中將報(bào)文分析的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為結(jié)構(gòu)圖。顯然,中間結(jié)構(gòu)的選取依賴于設(shè)計(jì)者對(duì)問(wèn)題的理解及其設(shè)計(jì)者的設(shè)計(jì)風(fēng)格。回溯結(jié)構(gòu)設(shè)計(jì) 以上回溯結(jié)構(gòu)由三種構(gòu)件組成:、Posit(假定):用于表示條件成立時(shí)的處理過(guò)程,進(jìn)入Posit構(gòu)件時(shí)程序狀態(tài)就被保存起來(lái)。2、Quit(退出):當(dāng)假定調(diào)解不成立,控制轉(zhuǎn)向另一認(rèn)可。3、Admit (認(rèn)可):Admit構(gòu)件提供了另一條處理路徑,在Admit的入口處程序無(wú)條件恢復(fù)到原有狀態(tài)。JACKSON方法的優(yōu)點(diǎn)和缺點(diǎn)優(yōu)點(diǎn):結(jié)構(gòu)清晰、易

40、理解、易修改。不會(huì)過(guò)多依賴于設(shè)計(jì)者的經(jīng)驗(yàn)。缺點(diǎn):當(dāng)系統(tǒng)規(guī)模及復(fù)雜度大時(shí),確定數(shù)據(jù)結(jié)構(gòu)困難。6.4 程序復(fù)雜程度的定量度量程序的復(fù)雜程度定量度量的意義:把程序的復(fù)雜程度乘以適當(dāng)常數(shù)即可估算出軟件中錯(cuò)誤的數(shù)量以及軟件開發(fā)需要用的工作量,定量度量的結(jié)果可以用來(lái)比較兩個(gè)不同的設(shè)計(jì)或兩個(gè)不同算法的優(yōu)劣;程序的定量的復(fù)雜程度可以作為模塊規(guī)模的精確限度。 介紹定量度量的二個(gè)著名方法6.4.1 McCabe方法6.4.2 Halstead方法McCabe和Halstead在70年代中期提出的度量方法是非常著名的度量方法,直到今天還被激烈討論。McCabe根據(jù)圖論定義了 “循環(huán)數(shù)”來(lái)得到一種軟件復(fù)雜性度量方法,

41、即著名的McCabe循環(huán)復(fù)雜度(Cyclomatic Complexity )。Halstead度是基于程序源代碼。Halstead指出估計(jì)工作量,或者程序員工作時(shí)間,可以用運(yùn)算符,運(yùn)算元或語(yǔ)法數(shù)的函數(shù)來(lái)表示。6.4.1 McCabe方法McCabe方法概要McCabe方法根據(jù)程序控制流的復(fù)雜程度定量地度量程序的復(fù)雜程度,這樣度量出的結(jié)果稱為程序的“環(huán)形復(fù)雜度”。主要內(nèi)容流圖概念及變換計(jì)算環(huán)形復(fù)雜度的方法環(huán)形復(fù)雜度的用途1.流圖流圖“流圖”是McCabe方法所基于的表示程序控制流的一種圖,也稱為“程序圖”。 流圖是退化的程度流程圖,僅僅描述了程序的“控制流”,完全不表示程序中的具體操作和分支或

42、循環(huán)的具體判定條件。流圖的構(gòu)成結(jié)點(diǎn):流圖中的圓點(diǎn),表示一個(gè)元判定(最簡(jiǎn)單的條件),程序中連續(xù)的操作和接著的一個(gè)判定可映射成一個(gè)結(jié)點(diǎn)。邊:流圖中的箭頭線,表示控制流,每條比邊必須終止于某個(gè)結(jié)點(diǎn)。區(qū)域:由流圖的邊所圍成的封閉區(qū)域,所有區(qū)域以外的開區(qū)域(這樣的區(qū)域只有一個(gè))也是流圖的一個(gè)區(qū)域。程序流程圖映射成流圖圖6.15 把程序流程圖映射成流圖從程序(或程序段)的入口開始,按程序流程順序處理;每個(gè)判定設(shè)置一個(gè)結(jié)點(diǎn)(如圖1、3、6);將兩個(gè)判定之間的所有連續(xù)操作忽略不計(jì),或合并到后續(xù)的第一個(gè)判定結(jié)點(diǎn)(如圖2&3);后續(xù)沒(méi)有判定的操作(或連續(xù)操作合并)各設(shè)置一個(gè)結(jié)點(diǎn)(如圖7、8、4&5);每個(gè)結(jié)構(gòu)的出

43、口匯合點(diǎn)各設(shè)置一個(gè)結(jié)點(diǎn)(如圖9、10);按照程序流程圖的邏輯關(guān)系用邊(箭頭線)連接起來(lái)。PDL翻譯成流圖圖6.16 由PDL翻譯成的流圖包含復(fù)合條件的的流圖復(fù)合條件指含有布爾運(yùn)算符的條件:and、or、nand、nor等復(fù)合條件的變換當(dāng)程序中包含復(fù)合條件時(shí),將其拆分成若干個(gè)簡(jiǎn)單條件(元條件),每個(gè)簡(jiǎn)單條件對(duì)應(yīng)一個(gè)結(jié)點(diǎn)(如圖a、b)。同一個(gè)復(fù)合條件中簡(jiǎn)單條件結(jié)點(diǎn)串聯(lián)起來(lái),且連接到同一操作結(jié)點(diǎn)。圖6.17 由包含復(fù)合條件的PDL映射成的流圖2.計(jì)算環(huán)形復(fù)雜度的方法可采用下面任何一種方法“流圖G的環(huán)形復(fù)雜度”:使用區(qū)域數(shù)計(jì)算V(G) = D 其中D為區(qū)域數(shù)使用邊與結(jié)點(diǎn)數(shù)計(jì)算:V(G)=E-N+2其中

44、:E為邊數(shù),N為結(jié)點(diǎn)數(shù)使用判定結(jié)點(diǎn)數(shù)計(jì)算:V(G)=P+1其中:p為判定結(jié)點(diǎn)數(shù)例:如圖4個(gè)區(qū)域:R1,R2,R3,R4V(G)=E-N+2=11-9+2=4V(G)=P+1=3+1=43.環(huán)形復(fù)雜度的用途預(yù)測(cè)程序的復(fù)雜度程序的“環(huán)形復(fù)雜度”取決于程序控制流的復(fù)雜程度,即反映了程序控制結(jié)構(gòu)(選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu))的復(fù)雜程度(選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)多少和條件的復(fù)雜程度) 。因此,環(huán)形復(fù)雜度可用于預(yù)測(cè)程序的測(cè)試難度和預(yù)測(cè)軟件可靠性。幫助控制程序模塊的規(guī)模V(G)高的程序結(jié)構(gòu)復(fù)雜,難于實(shí)現(xiàn),容易出錯(cuò)。因此,環(huán)形復(fù)雜度V(G)可用于幫組控制模塊規(guī)模,參考的模塊規(guī)模為V(G)10 。6.4.2 Halstead

45、方法Halstead方法概要根據(jù)程序中運(yùn)算符和操作數(shù)的總數(shù)來(lái)度量程序的復(fù)雜程度。程序的總長(zhǎng)度N的定義令N1程序中運(yùn)算符出現(xiàn)的總次數(shù)N2程序中操作數(shù)出現(xiàn)的總次數(shù)則程序的總長(zhǎng)度N定義為N=N1+N2程序的總長(zhǎng)度H的預(yù)測(cè)令n1 程序中不同運(yùn)算符(包括關(guān)鍵字)出現(xiàn)的總次數(shù)n2 程序中不同操作數(shù)(包括變量和常量)出現(xiàn)的總次數(shù)則程序的預(yù)測(cè)總長(zhǎng)度H為H=n1 log2 n1 + n2 long2 n2程序中錯(cuò)誤數(shù)E的預(yù)測(cè)E=N log2(n1 + n2 )/ 3000Halstead方法的評(píng)價(jià)可操作性強(qiáng)Halstead度量方法以程序中出現(xiàn)的操作符(Operator)和操作數(shù)(Operand)為計(jì)數(shù)對(duì)象,以它們的出現(xiàn)次數(shù)作為計(jì)數(shù)目標(biāo)來(lái)測(cè)算程序容量和工作量。 該方法可操作性強(qiáng),易于使用、易于計(jì)算。應(yīng)用性強(qiáng)(軟件規(guī)模、開發(fā)、測(cè)試、錯(cuò)誤度量)Halstead度量方法不僅僅度量了程序長(zhǎng)度,還描述了程序的最小實(shí)現(xiàn)和實(shí)際實(shí)現(xiàn)之間的關(guān)系,并據(jù)此闡釋程序語(yǔ)言的等級(jí)高低。還可預(yù)測(cè)程序中的錯(cuò)誤數(shù)。計(jì)算結(jié)果與實(shí)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論