第5章 詳細設計課件_第1頁
第5章 詳細設計課件_第2頁
第5章 詳細設計課件_第3頁
第5章 詳細設計課件_第4頁
第5章 詳細設計課件_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章詳細設計5.1結構程序設計5.2人機界面設計5.3過程設計的工具5.4面向數(shù)據(jù)結構的設計方法5.5程序復雜程度的定量度量5.6小結習題詳細設計的任務

(1)確定每個模塊的具體算法;

(2)確定每個模塊的內(nèi)部數(shù)據(jù)結構及數(shù)據(jù)庫的物理結構;

(3)確定模塊接口的具體細節(jié);

(4)為每個模塊設計一組測試用例;

(5)編寫文檔,參加復審。

程序流程圖又稱為程序框圖,它是歷史最悠久、使用最廣泛的描述過程設計的方法,然而它也是用得最混亂的一種方法。5.3過程設計的工具

5.3.1程序流程圖圖5.1程序流程圖中的基本符號(a)一般處理框;(b)輸入/輸出框;(c)判斷框;(d)流程線;(e)起止框開始輸入10個整數(shù)到a結束j=i+1i<9YN輸出:aj++i=0j<10a[i]a[j]a[i]>a[j]YYNNi++N開始輸入m,na=m;b=na<b?結束b=b-aYa<>b?Ya=a-bN輸出:a“輾轉相截(減)法”原理:

XX=YGCD(X,Y)=GCD(X–Y,Y)X>YGCD(X,Y–X)X<Y示例:

GCD(27,18)=GCD(9,18)=GCD(9,9)

=9

開始輸入mfound=1i=2i<m結束found=0Yi=i+1m能被i整除?NNfound==1?輸出:是輸出:不是NYY入口A>15ANDB=3返回X=X/ATA=30ORX>5FX=X+1TF開始輸入mfound=1i=2i<=(m+1)/2結束found=0Yi=i+1m能被i整除?NNfound==1?輸出:是輸出:不是NYY開始輸入mfound=1i=2i<=sqrt(m+1)結束found=0Yi=i+1m能被i整除?NNfound==1?輸出:是輸出:不是NYY按鈕指示燈電梯按鈕樓層按鈕電梯控制器m2m-211通信通信電梯門n1控制開始輸入mfound=1i=2(i<=sqrt(m+1))and(found==1)結束found=0Yi=i+1m能被i整除?NNfound==1?輸出:是輸出:不是NYY開始輸入mi=2i<=sqrt(m+1)結束Yi=i+1m能被i整除?NNi>sqrt(m+1)輸出:是輸出:不是NYY程序流程圖的主要缺點如下:(1)程序流程圖本質上不是逐步求精的好工具,它誘使程序員過早地考慮程序的控制流程,而不去考慮程序的全局結構;(2)程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結構程序設計的精神,隨意轉移控制;(3)程序流程圖不易表示數(shù)據(jù)結構。

盒圖是一種不允許違背結構程序設計精神的圖形工具,又稱為N-S圖,它有下述特點:(1)功能域(即,一個特定控制結構的作用域)明確,可以從盒圖上一眼就看出來;(2)不可能任意轉移控制;(3)很容易確定局部和全程數(shù)據(jù)的作用域;(4)很容易表現(xiàn)嵌套關系,也可以表示模塊的層次結構。5.3.2盒圖(N-S圖)圖5.2盒圖的基本符號

優(yōu)點:表達出的程序結構必然符合結構化程序設計的思想,有利于培養(yǎng)軟件設計人員的良好設計風格。

缺點:程序嵌套層次較多時,N-S圖的內(nèi)層方框會越畫越小,不僅影響可讀性而且不易修改。PAD是問題分析圖(problemanalysisdiagram)的英文縮寫,它用二維樹形結構的圖來表示程序的控制流,將這種圖翻譯成程序代碼比較容易。PAD圖的主要優(yōu)點如下:(1)使用表示結構化控制結構的PAD符號所設計出來的程序必然是結構化程序。5.3.3PAD圖圖5.3PAD圖的基本符號主要優(yōu)點如下:(1)使用表示結構化控制結構的PAD符號所設計出來的程序必然是結構化程序。(2)PAD圖所描繪的程序結構十分清晰。圖中最左面的豎線是程序的主線,即第一層結構。隨著程序層次的增加,PAD圖逐漸向右延伸,每增加一個層次,圖形向右擴展一條豎線。PAD圖中豎線的總條數(shù)就是程序的層次數(shù)。(3)用PAD圖表現(xiàn)程序邏輯,易讀、易懂、易記。PAD圖是二維樹形結構的圖形,程序從圖中最左豎線上端的結點開始執(zhí)行,自上而下,從左向右順序執(zhí)行,遍歷所有結點。(4)容易將PAD圖轉換成高級語言源程序,這種轉換可用軟件工具自動完成,從而可省去人工編碼的工作,有利于提高軟件可靠性和軟件生產(chǎn)率。(5)即可用于表示程序邏輯,也可用于描繪數(shù)據(jù)結構。(6)PAD圖的符號支持自頂向下、逐步求精方法的使用。開始時設計者可以定義一個抽象的程序,隨著設計工作的深入而使用def符號逐步增加細節(jié),直至完成詳細設計。圖5.4使用PAD圖提供的定義功能來逐步求精的例子

本節(jié)先介紹Jackson方法的工具——Jackson圖,然后介紹Jackson程序設計方法的基本步驟。5.4面向數(shù)據(jù)結構的設計方法(1)順序結構順序結構的數(shù)據(jù)由一個或多個數(shù)據(jù)元素組成,每個元素按確定次序出現(xiàn)一次。圖5.5是表示順序結構的Jackson圖的一個例子。5.4.1Jackson圖圖5.5A由B、C、D3個元素順序組成(2)選擇結構選擇結構的數(shù)據(jù)包含兩個或多個數(shù)據(jù)元素,每次使用這個數(shù)據(jù)時按一定條件從這些數(shù)據(jù)元素中選擇一個。圖5.6根據(jù)條件A是B或C或D中的某一個(3)重復結構重復結構的數(shù)據(jù),根據(jù)使用時的條件由一個數(shù)據(jù)元素出現(xiàn)零次或多次構成。圖5.7是表示重復結構的Jackson圖。圖5.7A由B出現(xiàn)N次(N≥0)組成圖5.8改進的Jackson圖5.4.2改進的Jackson圖Jackson結構程序設計方法基本上由下述5個步驟組成:(1)分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結構,并用Jackson圖描繪這些數(shù)據(jù)結構。(2)找出輸入數(shù)據(jù)結構和輸出數(shù)據(jù)結構中有對應關系的數(shù)據(jù)單元。(3)用下述3條規(guī)則從描繪數(shù)據(jù)結構的Jackson圖導出描繪程序結構的Jackson圖:5.4.3Jackson方法

第一,為每對有對應關系的數(shù)據(jù)單元,按照它們在數(shù)據(jù)結構圖中的層次在程序結構圖的相應層次畫一個處理框(如果這對數(shù)據(jù)單元在輸入數(shù)據(jù)結構和輸出數(shù)據(jù)結構中所處的層次不同,則和它們對應的處理框在程序結構圖中所處的層次與它們之中的在數(shù)據(jù)結構圖中層次低的那個對應);第二,根據(jù)輸入數(shù)據(jù)結構中剩余的每個數(shù)據(jù)單元所處的層次,在程序結構圖的相應層次分別為它們畫上對應的處理框;第三,根據(jù)輸出數(shù)據(jù)結構中剩余的每個數(shù)據(jù)單元所處的層次,在程序結構圖的相應層次分別為它們畫上對應的處理框。(4)列出所有操作和條件(包括分支條件和循環(huán)結束條件),并且把它們分配到程序結構圖的適當位置。(5)用偽碼表示程序。Jackson方法中使用的偽碼和Jackson圖是完全對應的,下面是和3種基本結構對應的偽碼。和圖5.8(a)所示的順序結構對應的偽碼,其中‘seq’和‘end’是關鍵字:

A seq B C D A end和圖5.8(b)所示的選擇結構對應的偽碼,其中‘select’、‘or’和‘end’是關鍵字,cond1、cond2和cond3分別是執(zhí)行B、C或D的條件: A select cond1 B A or cond2 C A or cond3 D A end和圖5.8(d)所示重復結構對應的偽碼,其中‘iter’、‘until’、‘while’和‘end’是關鍵字,cond是條件: A iteruntil(或while)cond B A end[例]一個正文文件由若干個記錄組成,每個記錄是一個字符串。要求統(tǒng)計每個記錄中空格字符的個數(shù),以及文件中空格字符的總個數(shù)。要求的輸出數(shù)據(jù)格式是,每復制一行輸入字符串之后,另起一行印出這個字符串中的空格數(shù),最后印出文件中空格的總個數(shù)。圖5.9表示輸入輸出數(shù)據(jù)結構的Jackson圖圖5.10描繪統(tǒng)計空格程序結構的Jackson圖基本操作:

(1)停止;(2)打開文件;(3)關閉文件;

(4)打印字符串;(5)打印行空格數(shù);(6)打印空格總數(shù);(7)sum:=sum+1;

(8)totalsum=totalsum+sum;

(9)讀入字符串(10)sum:=0;

(11)totalsum=0;(12)pointer=1;

(13)pointer=pointer+1。

條件:I(1)文件結束;I(2)字符串結束;

S(3)字符是空格。圖5.11把操作和條件分配到程序結構圖的適當位置統(tǒng)計空格seq 打開文件 讀入字符串 totalsum∶=0 程序體iteruntil文件結束 處理字符串seq 印字符串seq 印出字符串 印字符串end sum∶=0 pointer∶=1 分析字符串iteruntil字符串結束 分析字符select字符是空格 處理空格seq sum∶=sum+1 pointer∶=pointer+1 處理空格end 分析字符or字符不是空格 處理非空格seq pointer∶=pointer+1 處理非空格end 分析字符end 分析字符串end 印空格數(shù)seq 印出空格數(shù)目 印空格數(shù)end

totalsum∶=totalsum+sum 讀入字符串 處理字符串end 程序體end 印總數(shù)seq 印出空格總數(shù) 印總數(shù)end 關閉文件 停止統(tǒng)計空格end

著重介紹使用得比較廣泛的McCabe方法和Halstead方法。5.5程序復雜程度的定量度量(1)流圖McCabe方法根據(jù)程序控制流的復雜程度定量度量程序的復雜程度,這樣度量出的結果稱為程序的環(huán)形復雜度。為了突出表示程序的控制流,人們通常使用流圖(也稱為程序圖)。所謂流圖實質上是“退化了的”程序流程圖,它僅僅描繪程序的控制流程,完全不表現(xiàn)對數(shù)據(jù)的具體操作以及分支或循環(huán)的具體條件。5.5.1McCabe方法圖5.16由PDL翻譯成的流圖(2)計算環(huán)形復雜度的方法①流圖中的區(qū)域數(shù)等于環(huán)形復雜度。②流圖G的環(huán)形復雜度V(G)=E-N+2,其中,E是流圖中邊的條數(shù),N是結點數(shù)。③流圖G的環(huán)形復雜度V(G)=P+1,其中,P是流圖中判定結點的數(shù)目。Halstead方法是另一個著名的方法,它根據(jù)程序中運算符和操作數(shù)的總數(shù)來度量程序的復雜程度。令N1為程序中運算符出現(xiàn)的總次數(shù),N2為操作數(shù)出現(xiàn)的總次數(shù),程序長度N定義為:N=N1+N2詳細設計完成之后,可以

溫馨提示

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

評論

0/150

提交評論