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

下載本文檔

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

文檔簡介

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

2、復(fù)雜程度的定量度量程序復(fù)雜程度的定量度量6.1 6.1 結(jié)構(gòu)程序設(shè)計(jì)結(jié)構(gòu)程序設(shè)計(jì)-結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)-“結(jié)構(gòu)程序設(shè)計(jì)是盡可能少用go to語句的程序設(shè)計(jì)方法。最好僅在檢測出錯誤時(shí)才使用go to語句,而且應(yīng)該總是使用前向go to語句”,“程序的質(zhì)量與程序中所包含的go to 語句的數(shù)量成反比” 。e.w.dijkstra,1965。-基本的程序控制結(jié)構(gòu)基本的程序控制結(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)三種基本的控制結(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)多項(xiàng)選擇結(jié)構(gòu)多項(xiàng)選擇結(jié)構(gòu)后置循環(huán)結(jié)構(gòu)后置循環(huán)結(jié)構(gòu)結(jié)構(gòu)程序設(shè)計(jì)指導(dǎo)準(zhǔn)則結(jié)構(gòu)程序設(shè)計(jì)指導(dǎo)準(zhǔn)則經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì):經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì):只允許使用順序、if-then-else型分支和do-while型循環(huán)這3種基本控制結(jié)構(gòu); 擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì):擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì):除了上述3種基本控制結(jié)構(gòu)之外,還允許使用do-case型多分支結(jié)構(gòu)和do-until型循環(huán)結(jié)構(gòu); 修正的結(jié)構(gòu)程序設(shè)計(jì):修正的結(jié)構(gòu)程序設(shè)計(jì):除上述結(jié)構(gòu)以外,還允許使用leave(或b

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

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

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

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

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

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

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

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

12、化的目的。主要的處理操作有:圖象的隱蔽和再現(xiàn)、屏幕滾動和圖案顯示、動畫等。顯示、動畫等。圖象圖象圖表圖表圖表主要形式:折線圖、直方圖、餅圖等圖表主要形式:折線圖、直方圖、餅圖等圖表的用途:顯示時(shí)間變化數(shù)據(jù)、統(tǒng)計(jì)數(shù)據(jù)、對比數(shù)據(jù)等圖表的用途:顯示時(shí)間變化數(shù)據(jù)、統(tǒng)計(jì)數(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ù)的顯示對話框是在需要時(shí),顯示在屏幕上一個(gè)矩形區(qū)域內(nèi)的圖形和正文信息。通過對對話框是在需要時(shí),顯示在屏幕上一個(gè)矩形區(qū)域內(nèi)的圖形和正文信息。通過對話,實(shí)現(xiàn)系統(tǒng)和用戶之間的通信

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

14、用窗口,可包含部件:),視為虛擬屏幕。一個(gè)實(shí)用窗口,可包含部件: 菜單區(qū)(菜單區(qū)(menu barmenu bar) 圖標(biāo)區(qū)(圖標(biāo)區(qū)(icon baricon bar) 標(biāo)題區(qū)(標(biāo)題區(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)用戶界面實(shí)例用戶界面實(shí)例系統(tǒng)信息管理儀表盤界面設(shè)計(jì)系統(tǒng)信息管理儀表盤界面設(shè)計(jì) 系統(tǒng)實(shí)時(shí)動態(tài)運(yùn)行界面設(shè)計(jì)系統(tǒng)實(shí)時(shí)動態(tài)運(yùn)行界面設(shè)計(jì) 6.3 6.3 過程設(shè)計(jì)的工具過程設(shè)計(jì)的工具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è)計(jì)語言(過程設(shè)計(jì)語言(p

16、dlpdl)6.3.1 6.3.1 程序流程圖程序流程圖程序流程圖的作用程序流程圖的作用程序流程圖(progran flowchart)作為一種算法表達(dá)工具, 是人們對解決問題的方法、思路或算法的一種描述。國家標(biāo)準(zhǔn)gb1525-89:信息處理-數(shù)據(jù)流程圖,程序流程圖,系統(tǒng)流程圖,程序網(wǎng)絡(luò)圖和系統(tǒng)資源圖的文件編制符號及約定國際標(biāo)準(zhǔn)化組織標(biāo)準(zhǔn)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)點(diǎn)優(yōu)點(diǎn)采用簡單規(guī)范的符號,畫法簡單;結(jié)構(gòu)清晰,邏輯性強(qiáng);便于描述,容易理解。 缺點(diǎn)缺點(diǎn)本質(zhì)上不是“自頂向下、逐步求精”的設(shè)計(jì)工具(容易引導(dǎo)過早關(guān)注細(xì)節(jié))不是結(jié)構(gòu)化設(shè)計(jì)工具(流向線可以隨意連)程序流程圖的基本符號程序流程圖的基本符號起始框起始框終止框終止框執(zhí)行框執(zhí)行框判別框判別框流線流線程序流程圖的符號程序流程圖的符號圖圖6.3 程序流程圖中使用的符號程序流程圖中使用的符號程序流程圖的符號(續(xù))程序流程圖的符號(續(xù))(a)(a)判斷(菱形)判斷(菱形)只有一個(gè)入口,但可以有一個(gè)或二個(gè)出口,在出口流線上注明判斷的條件(真、假)(b)

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

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

20、行四邊形)表示數(shù)據(jù),其中可注明數(shù)據(jù)名,來源,用途或其它的文字說明。(n)(n)連接符(圓形)連接符(圓形)用以表明轉(zhuǎn)向流程圖的它處,或從流程圖它處轉(zhuǎn)入.它是流線的斷點(diǎn),在圓形內(nèi)注明斷編號(符號)。(o)(o)連接符(錐形)連接符(錐形)用以表明轉(zhuǎn)向另一流程圖,或從另一流程圖轉(zhuǎn)入.它是流線圖的斷點(diǎ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è)計(jì)(sp)的圖形工具。其結(jié)構(gòu)化具有強(qiáng)制性。n-sn-s圖的基本結(jié)構(gòu)圖的基本結(jié)構(gòu)n-s圖僅含有圖6.4的5種基本成分,它們分別表示sp方法的幾種標(biāo)準(zhǔn)控制結(jié)構(gòu)。n-sn-s圖的數(shù)據(jù)盒和模塊盒圖的數(shù)據(jù)盒和模塊盒用ns圖作為詳細(xì)設(shè)計(jì)的描述手段時(shí),常需用兩個(gè)盒子:數(shù)據(jù)盒和模塊盒。前者描述有關(guān)的數(shù)據(jù),包括全程數(shù)據(jù)、局部數(shù)據(jù)和模塊界面上的參數(shù)等,后者描述執(zhí)行過程。n-sn-s圖的主要特點(diǎn):圖的主要特點(diǎn):每種結(jié)構(gòu)的功能域明確不可能任意轉(zhuǎn)移(go to)控制很容易確定局部和全局?jǐn)?shù)據(jù)作用域很容易表現(xiàn)結(jié)構(gòu)的嵌套關(guān)系和模塊

22、的層次結(jié)構(gòu)簡單、易學(xué)易用nsns圖的缺點(diǎn)圖的缺點(diǎn)手工修改比較麻煩,這是有些人不用它的主要原因。ab條條 件件 1tf case xi, i=2,3,4x2x3x4當(dāng)條件當(dāng)條件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當(dāng)條件當(dāng)條件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è)計(jì)方法。pad為多種高級程序設(shè)計(jì)語言(fortran、cobol、pascal等)根據(jù)其語言結(jié)構(gòu)特點(diǎn)都設(shè)計(jì)了一套符號。padpad的優(yōu)點(diǎn)的優(yōu)點(diǎn)結(jié)構(gòu)化:采用結(jié)構(gòu)化的pad設(shè)計(jì)出的程序必定是結(jié)構(gòu)化的。程

24、序結(jié)構(gòu)清晰:垂直(豎線)方向表明了結(jié)構(gòu)的順序,水平方向(結(jié)構(gòu))表明了結(jié)構(gòu)嵌套的層次及深度(豎線的數(shù)目)。程序邏輯清晰:很好地表現(xiàn)程序邏輯,易讀、易懂、易記。自上而下、從左向右執(zhí)行,可遍歷程序的所有節(jié)點(diǎn)(圖論中的“廣度優(yōu)先”遍歷)。易于轉(zhuǎn)換成高級程序設(shè)計(jì)語言的源程序:pad規(guī)范,易于自動轉(zhuǎn)換,有利于提高軟件可靠性和生產(chǎn)率。表達(dá)能力強(qiáng):既可容易地表達(dá)程序邏輯,也可表達(dá)數(shù)據(jù)結(jié)構(gòu)。支持“自頂向下、逐步求精”的設(shè)計(jì)方法:在上層進(jìn)行抽象,使用“def”符號在下層逐步細(xì)化。padpad的不足的不足水平嵌套層次太深時(shí),表達(dá)顯得有點(diǎn)凌亂。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)語句標(biāo)號語句標(biāo)號(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應(yīng)用示例應(yīng)用示例算法功能:在數(shù)組算法功能:在數(shù)組k1.nk1.n中(所有中(所有元素不小于元素不小于0 0),找出最大(),找出最大(firstfirst)和次大()和次大(secondsecond)的數(shù)。)的數(shù)。6

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

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

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

30、活結(jié)構(gòu)化的語言,用于描述模塊內(nèi)部過程的具體算法,以便在開發(fā)人員之間比較精確的進(jìn)行交流。pdlpdl的語法的語法pdl的語法是開放式的,其外層語法是確定的,采用類似于一般程序設(shè)計(jì)語言控制結(jié)構(gòu)和關(guān)鍵字。為了區(qū)別關(guān)鍵字,關(guān)鍵字一律大寫,其它單詞一律小寫。而內(nèi)層語法則不確定,一般使用自然語言(或半形式化語言)來描述處理特性。內(nèi)語法比較靈活,只要寫清楚就可以,不必考慮語法錯,以利于人們可把主要精力放在描述算法的邏輯上。這種語法一般稱為“類-程序設(shè)計(jì)語言”,如like-c,like-java,like-pascal等。pdlpdl特點(diǎn)、優(yōu)點(diǎn)和缺點(diǎn)特點(diǎn)、優(yōu)點(diǎn)和缺點(diǎn)pdlpdl特點(diǎn)特點(diǎn)結(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)(如標(biāo)量、數(shù)組)和復(fù)雜數(shù)據(jù)結(jié)構(gòu)的定義(如記錄、鏈表)。pdlpdl優(yōu)點(diǎn)優(yōu)點(diǎn)pdl程序易于編寫和編輯,使設(shè)計(jì)人員關(guān)注程序的邏輯而不是程序的語法。pdl程序轉(zhuǎn)化成程序設(shè)計(jì)語言程序時(shí),可用作很好的注釋,提高了程序的可讀性、可維護(hù)性。存在將pdl轉(zhuǎn)化成程序代碼的自動化工具。pdlpdl缺點(diǎn)缺點(diǎn)描述有些算法不如圖形化工具形象直觀。 描述復(fù)雜的條件組合與動作間的對應(yīng)關(guān)系時(shí),不如判定表清晰簡單。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è)計(jì)方法,又稱及設(shè)計(jì)方法,又稱hipo

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

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

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

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

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

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

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

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

45、要求。資料量大,不宜規(guī)模大的系統(tǒng)。6.4 6.4 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法(jackson(jackson方法方法) )6.4.1 jackson6.4.1 jackson圖圖6.4.2 6.4.2 改進(jìn)的改進(jìn)的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è)計(jì)方法。其分析的重點(diǎn)放在構(gòu)造與系結(jié)構(gòu)的分析與設(shè)計(jì)方法。其分析的重點(diǎn)放在構(gòu)造與系統(tǒng)相關(guān)的現(xiàn)實(shí)世界,并建立現(xiàn)實(shí)世界的信

46、息域的模型統(tǒng)相關(guān)的現(xiàn)實(shí)世界,并建立現(xiàn)實(shí)世界的信息域的模型上。其最終目標(biāo)是生產(chǎn)軟件的過程性描述。上。其最終目標(biāo)是生產(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ā)方法。其基本思想實(shí)現(xiàn)建立輸入輸出的數(shù)據(jù)結(jié)構(gòu),發(fā)方法。其基本思想實(shí)現(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)系只有順序、選擇和重?cái)?shù)據(jù)元素彼此間的基本邏輯關(guān)系只有順序、選擇和重復(fù)復(fù)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ù):由一個(gè)或多個(gè)數(shù)據(jù)元素組成,每個(gè)元素按確定次序出現(xiàn)一次。2. 2. 選擇結(jié)構(gòu)選擇結(jié)構(gòu)選擇結(jié)構(gòu)的數(shù)據(jù):包含兩個(gè)或多個(gè)數(shù)據(jù)元素,每次使用這個(gè)數(shù)據(jù)時(shí)按一定條件從這些數(shù)據(jù)元素中選擇一個(gè)。 3. 3. 重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu)的數(shù)據(jù):根據(jù)使用時(shí)

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

49、輸出。) 改進(jìn)改進(jìn)jacksonjackson圖圖 上、下層之間的連線改成組織結(jié)構(gòu)層次連線。在重復(fù)結(jié)構(gòu)的連線上標(biāo)注循環(huán)條件。在選擇結(jié)構(gòu)的連線上標(biāo)注選擇條件。增加單分支選擇結(jié)構(gòu),即在無操作的選擇臂上使用“無關(guān)”結(jié)點(diǎn)框。6.4.2 6.4.2 改進(jìn)的改進(jìn)的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)重復(fù)結(jié)構(gòu),帶重復(fù)選擇條重復(fù)結(jié)構(gòu),帶重復(fù)選擇條件件圖圖6.11 改進(jìn)的改進(jìn)的jackson圖圖jacksonjackson圖和軟件結(jié)構(gòu)層次圖不同圖和軟件結(jié)構(gòu)層

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

51、n方法是一種面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法。強(qiáng)調(diào)程序結(jié)構(gòu)與問題結(jié)構(gòu)相對應(yīng)。jacksonjackson方法的構(gòu)成方法的構(gòu)成jackson方法由jsp(jackson structured programming)和jsd(jackson system development)方法構(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法是對jsp法的擴(kuò)充,針對jsp法的缺陷而提出的解決方案。其主要特點(diǎn)是:用“分而治之”的策略控制系統(tǒng)的復(fù)雜性,解決i/o結(jié)構(gòu)的沖突問題。jsdjs

52、d方法的步驟如下方法的步驟如下1 1、實(shí)體動作分析、實(shí)體動作分析2 2、實(shí)體結(jié)構(gòu)分析、實(shí)體結(jié)構(gòu)分析3 3、定義初始模型、定義初始模型4 4、功能描述:詳細(xì)說明與已定義的動作相對應(yīng)的功能。、功能描述:詳細(xì)說明與已定義的動作相對應(yīng)的功能。5 5、絕對系統(tǒng)時(shí)間特性:對進(jìn)程調(diào)度特性進(jìn)行評價(jià)和說明。、絕對系統(tǒng)時(shí)間特性:對進(jìn)程調(diào)度特性進(jìn)行評價(jià)和說明。6 6、實(shí)現(xiàn):設(shè)計(jì)組成系統(tǒng)的硬件和軟件。、實(shí)現(xiàn):設(shè)計(jì)組成系統(tǒng)的硬件和軟件。jsdjsd方法的前三步屬于需求分析階段,后三步屬于軟件設(shè)計(jì)方法的前三步屬于需求分析階段,后三步屬于軟件設(shè)計(jì)階段。階段。 例:文本輸入輸出數(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)計(jì)空格程序結(jié)構(gòu)的例:描繪統(tǒng)計(jì)空格程序結(jié)構(gòu)的jacksonjackson圖圖圖圖6.13 描繪統(tǒng)計(jì)空格程序結(jié)構(gòu)的描繪統(tǒng)計(jì)空格程序結(jié)構(gòu)的jackson圖圖把操作和條件分配到程序結(jié)構(gòu)圖的適當(dāng)把操作和條件分配到程序結(jié)構(gòu)圖的適當(dāng)位置位置圖圖6.14 把操作和條件分配到程序結(jié)構(gòu)圖的適當(dāng)位置把操作和條件分配到程序結(jié)構(gòu)圖的適當(dāng)位置實(shí)體結(jié)構(gòu)分析實(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)圖,也稱為jacks

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

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

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

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

58、的條件),程序中連續(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)(如圖每個(gè)判定設(shè)置一個(gè)結(jié)點(diǎn)(如圖1 1、3 3、6 6););將兩個(gè)判定之間的所有連續(xù)操作將兩個(gè)判定之間的所有連續(xù)操作忽略不計(jì),或合并到后續(xù)的第一忽略不計(jì),或合并到后

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

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

溫馨提示

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

最新文檔

評論

0/150

提交評論