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

2、總是使用前向GO TO語句”,“程序的質(zhì)量與程序中所包含的GO TO 語句的數(shù)量成反比” 。E.W.Dijkstra,1965。基本的程序控制結(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)圖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)多項選擇結(jié)構(gòu)后置循環(huán)結(jié)構(gòu)結(jié)構(gòu)程序設(shè)計指導(dǎo)準則經(jīng)典的結(jié)構(gòu)程序設(shè)計:只允許使用順序、IF-THEN-ELSE型分支和DO-WHILE型循環(huán)這3種基本控制結(jié)構(gòu); 擴展的結(jié)構(gòu)程序設(shè)計:除了

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

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

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

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

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

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

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

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

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

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

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

15、點構(gòu)成)若流程圖中有些部分無需給出符號的具體形式和數(shù)量,可用省略符。(k)并行方式(一對平行線)表示同步進行兩個或兩個以上并行方式的操作.。(l)處理(矩形)表示各種處理功能.例如,執(zhí)行一個或一組特定的操作, 矩形內(nèi)可注明處理名。(m)數(shù)據(jù)(平行四邊形)表示數(shù)據(jù),其中可注明數(shù)據(jù)名,來源,用途或其它的文字說明。(n)連接符(圓形)用以表明轉(zhuǎn)向流程圖的它處,或從流程圖它處轉(zhuǎn)入.它是流線的斷點,在圓形內(nèi)注明斷編號(符號)。(o)連接符(錐形)用以表明轉(zhuǎn)向另一流程圖,或從另一流程圖轉(zhuǎn)入.它是流線圖的斷點,在錐形內(nèi)注明流程圖編號(名稱)。(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è)計(SP)的圖形工具。其結(jié)構(gòu)化具有強制性。N-S圖的基本結(jié)構(gòu)N-S圖僅含有圖6.4的5種基本成分,它們分別表示SP方法的幾種標準控制結(jié)構(gòu)。N-S圖的數(shù)據(jù)盒和模塊盒用NS圖作為詳細設(shè)計的描述手段時,常需用兩個盒子:數(shù)據(jù)盒和模塊盒。前者描述有關(guān)的數(shù)據(jù),包括全程數(shù)據(jù)、局部數(shù)據(jù)和模塊界面上的參數(shù)等,后者描述執(zhí)行過程。N-S圖的主要特點:每種結(jié)構(gòu)的功能域明確不可能任意轉(zhuǎn)移(go to)控制很容易確定局部和全局數(shù)據(jù)作用域很容易表現(xiàn)

17、結(jié)構(gòu)的嵌套關(guān)系和模塊的層次結(jié)構(gòu)簡單、易學(xué)易用NS圖的缺點手工修改比較麻煩,這是有些人不用它的主要原因。ab條 件 1TF Case Xi, i=2,3,4X2X3X4當條件3成立條 件 2直到條件4成立直 到 條 件 成立cdefghijFTTF盒圖NS圖基本結(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)先判定型循環(huán)結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)FTTFNS圖舉例N-S圖舉例模塊的數(shù)據(jù)盒和過程盒6.3.3 問題分析

18、圖(PAD圖)PADPAD(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è)計了一套符號。PAD的優(yōu)點結(jié)構(gòu)化:采用結(jié)構(gòu)化的PAD設(shè)計出的程序必定是結(jié)構(gòu)化的。程序結(jié)構(gòu)清晰:垂直(豎線)方向表明了結(jié)構(gòu)的順序,水平方向(結(jié)構(gòu))表明了結(jié)構(gòu)嵌套的層次及深度(豎線的數(shù)目)。程序邏輯清晰:很好地表現(xiàn)程序邏輯,易讀、易懂、易記。自上而下、從左向右執(zhí)行,可遍歷程序的所有節(jié)點(圖論中的“廣度優(yōu)先”遍歷)。易于轉(zhuǎn)換成高級程序設(shè)

19、計語言的源程序:PAD規(guī)范,易于自動轉(zhuǎn)換,有利于提高軟件可靠性和生產(chǎn)率。表達能力強:既可容易地表達程序邏輯,也可表達數(shù)據(jù)結(jié)構(gòu)。支持“自頂向下、逐步求精”的設(shè)計方法:在上層進行抽象,使用“def”符號在下層逐步細化。PAD的不足水平嵌套層次太深時,表達顯得有點凌亂。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)語句標號(g)定義圖6.5 PAD圖的基本符號PAD使用“def”逐步求精示例圖6.6 使用PAD圖提供的定義功能來逐步求精的例子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源程序段對應(yīng)PAD圖PAD應(yīng)用示例算法功能:在數(shù)組K1.N中(所有元素不小于0),找出最大(FIRST)和次

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

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

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

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

25、L控制結(jié)構(gòu)語法例 順序結(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è)計方法,又稱HIPO圖?;舅枷虢Y(jié)構(gòu)化方法是以數(shù)據(jù)流,數(shù)據(jù)封閉性準則來分解的,HIPO法則是以功能、功能完備性準則逐層分解的。層次圖 (H圖)層次圖 (H圖)

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

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

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

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

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

33、1 Jackson圖6.4.2 改進的Jackson圖6.4.3 Jackson方法JSD系統(tǒng)方法簡介Jackson系統(tǒng)開發(fā)(JSD)方法是一種典型的面向數(shù)據(jù)結(jié)構(gòu)的分析與設(shè)計方法。其分析的重點放在構(gòu)造與系統(tǒng)相關(guān)的現(xiàn)實世界,并建立現(xiàn)實世界的信息域的模型上。其最終目標是生產(chǎn)軟件的過程性描述。前面介紹的結(jié)構(gòu)化開發(fā)方法是一種面向數(shù)據(jù)流的開發(fā)方法,而Jackson系統(tǒng)開發(fā)方法則是面向數(shù)據(jù)結(jié)構(gòu)的開發(fā)方法。其基本思想實現(xiàn)建立輸入輸出的數(shù)據(jù)結(jié)構(gòu),再將其轉(zhuǎn)換為軟件結(jié)構(gòu)。Jackson方法由英國的M. Jackson提出,該方法特別適合于數(shù)據(jù)處理類問題。如企事業(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ù):由一個或多個數(shù)據(jù)元素組成,每個元素按確定次序出現(xiàn)一次。2. 選擇結(jié)構(gòu)選擇結(jié)構(gòu)的數(shù)據(jù):包含兩個或多個數(shù)據(jù)元素,每次使用這個數(shù)據(jù)時按一定條件從這些數(shù)據(jù)元素中選擇一個。 3. 重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu)的數(shù)據(jù):根據(jù)使用時的條件由一個數(shù)據(jù)元素出現(xiàn)零次或多次構(gòu)成。 Jackson圖的三種結(jié)構(gòu)圖6.8 順序結(jié)構(gòu)A由B、C、D 3個元素順序組成圖6.9 選擇結(jié)構(gòu)根據(jù)條件A是B或C或D中的某一個圖6.10 重復(fù)結(jié)構(gòu)A由B出現(xiàn)N次(N0)組成6.4.2 改進的Jackson圖上一小節(jié)介紹的Jackson圖的缺點

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

36、相同。方框中內(nèi)容不同層次圖中的一個方框通常代表一個模塊; Jackson圖的一個方框只代表幾個語句。 上下方框之間的關(guān)系不同 層次圖表現(xiàn)的是調(diào)用關(guān)系,通常一個模塊除了調(diào)用下級模塊外,還完成其他操作;Jackson圖表現(xiàn)的是組成關(guān)系,一個方框中包括的操作僅僅由它下層框中的那些操作組成。6.4.3 Jackson方法JACKSON方法SD法是一種面向數(shù)據(jù)流的設(shè)計方法,JACKSON方法是一種面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法。強調(diào)程序結(jié)構(gòu)與問題結(jié)構(gòu)相對應(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è)計,不嚴格區(qū)分軟件概要設(shè)計和詳細設(shè)計。可以根據(jù)JSP的規(guī)則直接導(dǎo)出程序結(jié)構(gòu)。一般用于規(guī)模不大的數(shù)據(jù)處理系統(tǒng),而且I/O數(shù)據(jù)結(jié)構(gòu)容易描述的情況。JSD法是對JSP法的擴充,針對JSP法的缺陷而提出的解決方案。其主要特點是:用“分而治之”的策略控制系統(tǒng)的復(fù)雜性,解決I/O結(jié)構(gòu)的沖突問題。JSD方法的步驟如下1、實體動作分析2、實體結(jié)構(gòu)分析3、定義初始模型4、功能描述:詳細說明與已定義的動作相對應(yīng)的功能。5、絕對系統(tǒng)時間特性:對進程調(diào)度特性進行評價和說明。6、實現(xiàn):設(shè)計組成系統(tǒng)的硬件和軟件。JSD方法的前三步屬于需求分析階段,后三步屬于軟件

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

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

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

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

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

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

44、:E為邊數(shù),N為結(jié)點數(shù)使用判定結(jié)點數(shù)計算:V(G)=P+1其中:p為判定結(jié)點數(shù)例:如圖4個區(qū)域:R1,R2,R3,R4V(G)=E-N+2=11-9+2=4V(G)=P+1=3+1=43.環(huán)形復(fù)雜度的用途預(yù)測程序的復(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ù)測程序的測試難度和預(yù)測軟件可靠性。幫助控制程序模塊的規(guī)模V(G)高的程序結(jié)構(gòu)復(fù)雜,難于實現(xiàn),容易出錯。因此,環(huán)形復(fù)雜度V(G)可用于幫組控制模塊規(guī)模,參考的模塊規(guī)模為V(G)10 。6.4.2 Halstead

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

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論