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

下載本文檔

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

文檔簡介

2023/2/4第1頁詳細設計工具Jackson程序設計方法第五章詳細設計

結構程序設計基本任務

回答的關鍵問題:“怎樣具體地實現(xiàn)這個系統(tǒng)”

主要任務是設計出程序的“藍圖”,供程序員日后根據(jù)這個藍圖編寫出實際的程序代碼。

注意:設計程序的藍圖,不是具體地編寫程序。

主要采用結構化的程序設計方法。軟件工程2023/2/4第2頁5.1詳細設計概述

1、什么是詳細設計?詳細設計為軟件結構圖(SC:StructChart)圖或系統(tǒng)層次圖(HC:HierarchyChart)中的每一個模塊確定采用的算法和定義模塊內數(shù)據(jù)結構,并用某種選定的表達工具給出清晰的描述。假如在總體設計階段,定義A模塊的作用是對一個表進行排序,那么詳細設計就要指明采用哪一種排序算法并描述此算法的處理過程。2、詳細設計的目標:(1)能在邏輯上正確地實現(xiàn)每個模塊的功能;(2)使設計出的處理過程清晰易讀、好理解。軟件工程2023/2/4第3頁3、詳細設計應完成的任務:

①確定軟件各個組成部分內所采用的算法和各部分的內部數(shù)據(jù)組織形式;②對數(shù)據(jù)結構進行物理設計,如確定數(shù)據(jù)庫的物理結構。物理結構主要指數(shù)據(jù)的存儲記錄格式、存儲記錄安排和存儲方法等。

③確定模塊接口的細節(jié),包括對系統(tǒng)外部的接口和用戶界面。對系統(tǒng)內部其他模塊的接口,以及模塊輸入數(shù)據(jù)、輸出數(shù)據(jù)和局部數(shù)據(jù)的全部細節(jié)。軟件工程2023/2/4軟件工程(工程碩士)第4頁3、詳細設計應完成的任務:

④選用某種圖形、表格和語言等工具將每個模塊處理過程的詳細算法描述表達出來,編寫詳細設計說明書。⑤為每一個模塊設計出一組測試用例,以便在編碼階段對模塊代碼(即程序)進行預定的測試,模塊的測試用例是軟件測試計劃的重要組成部分,通常包括測試輸入數(shù)據(jù)、期望輸出結果等內容。⑥在詳細設計結束時,進行詳細設計的評審。把上述結果寫入詳細設計說明書(程序規(guī)格說明書),并通過復審形成正式文檔,作為下一階段(編碼)的工作依據(jù)。返回2023/2/4第5頁4、詳細設計的其它任務(1)少量的代碼設計。雖然編碼工作有待下一階段進行,但為了提高數(shù)據(jù)的輸入、分類、存儲和檢索等操作的效率,并節(jié)約內存空間,對數(shù)據(jù)庫中某些數(shù)據(jù)項的值須進行專項代碼設計,如數(shù)據(jù)庫的觸發(fā)器代碼、存儲過程的代碼設計等。(2)輸入/輸出格式設計。對于涉及眾多不同類型設備或具有網絡交換功能的系統(tǒng),需要特別詳細地設計數(shù)據(jù)的輸入/輸出以及交換格式。(3)人機對話(界面)設計。實時系統(tǒng)中用戶與計算機需要頻繁對話,因此有必要進行對話方式、內容、格式和界面的具體設計。

軟件工程2023/2/4第6頁5.2結構化程序設計1、什么是結構化程序?

結構化程序可由若干個基本結構組成,雖然每一個基本結構可以包含一條或若干條語句,但任何程序都由順序、選擇、重復三種基本結構構造。這三種基本結構具有以下特點:①有一個入口,有一個出口;②結構中每一部分都有被執(zhí)行到的機會,也就是說,每一部分都應當有一條從入口到出口的路徑通過它(至少通過一次);③沒有死循環(huán)(無終止的循環(huán))。軟件工程2023/2/4第7頁2、什么是結構化程序設計結構程序設計是一種設計程序的技術,它采用自頂向下逐步求精的設計方法和單入口單出口的控制結構。逐步求精的含義(1)詳細設計階段逐步求精的含義:把一個模塊的功能逐步分解細化為一系列具體的處理步驟或某種高級語言的語句。(2)總體設計階段逐步求精的含義:把一個復雜問題的解法分解和細化成一個由許多模塊組成的層次結構的軟件系統(tǒng)。軟件工程2023/2/4第8頁3、結構程序設計技術的優(yōu)越性(1)自頂向下逐步求精的方法符合人類解決復雜問題的普遍規(guī)律,因此可以顯著提高軟件開發(fā)工程的成功率和生產率。(2)用先全局后局部、先整體后細節(jié)、先抽象后具體的逐步求精過程開發(fā)出的程序有清晰的層次結構,因此容易閱讀和理解。(3)不使用GOTO語句僅使用單入口單出口的控制結構,使得程序的靜態(tài)結構和它的動態(tài)執(zhí)行情況比較一致,易于閱讀和理解。軟件工程2023/2/4第9頁(4)控制結構有確定的邏輯模式,編寫程序代碼只限于很少幾種直截了當?shù)姆绞?,因此源程序清晰流暢。?)程序清晰和模塊化使得在修改和重新設計一個軟件時可以重用的代碼量最大。(6)有利于程序正確性證明。軟件工程2023/2/4第10頁4、判斷一個程序是不是結構化程序的方法(1)看是不是單入口單出口的控制結構;(2)能不能用NS圖或PAD圖表示。軟件工程2023/2/4第11頁5、非結構程序轉化為結構化程序兩種辦法:(1)重新組合判定條件;講究技藝(2)結構化定理(使用FLAG標置位)最可靠的方法,但比較繁鎖參閱熊前興,《結構化程序設計》軟件工程2023/2/4第12頁5.3詳細設計工具什么是詳細設計工具?

用于表達過程規(guī)格說明的工具叫做詳細設計工具,它可以分為以下三類:(1)圖形工具──利用圖形工具可以把過程的細節(jié)用圖形描述出來。程序流程圖、N-S圖、PAD圖、IPO圖。(2)表格工具──用表格方式描述過程的細節(jié),在中列出各種可能的操作和相應的條件。判定樹、判定表。(3)語言工具──用某種高級語言(稱之為偽碼)來描述過程的細節(jié)。程序設計語言PDL。

從三個方面學習:1、符號2、實例3、特點軟件工程2023/2/4第13頁5.3.1程序流程圖1、符號軟件工程2023/2/4第14頁2、實例:求頭100個奇數(shù)平方和C語言源程序main(){ints,i;s=0;for(i=1;i<=100;i++)s=s+(2*i-1)*(2*i-1);printf(“Thesumis\n”,s);}s=0i=1i<=100s=s+(2*i-1)*(2*i-1)i=i+1開始結束軟件工程2023/2/4第15頁3、特點:優(yōu)點:對控制流程的描繪很直觀,便于初學者掌握。缺點:(1)程序流程圖本質上不是逐步求精的好工具,它誘使程序員過早地考慮程序的控制流程,而不去考慮程序的全局結構。(2)程序流程圖中用箭頭代表控制流,因此程序員不受約束,可以完全不顧結構程序設計的精神,隨意轉移控制。(3)程序流程圖不易表示數(shù)據(jù)結構。軟件工程2023/2/4第16頁5.2.2盒圖(N_S圖)N-S圖即盒狀圖或Chapin圖,是由Nassi和Shneiderman提出的一種符合結構化程序設計原則的圖形描述工具,其目標是開發(fā)一種不破壞結構化構成元素的過程設計表示。

軟件工程2023/2/4第17頁1、符號:軟件工程2023/2/4第18頁2、實例S=0i=1i<=100s=s+(2*i-1)*(2*i-1)i=i+1輸出s軟件工程2023/2/4第19頁3、特點:(1)功能域(即一個特定控制結構的作用域)明確,很容易從盒圖上看出。(2)盒圖沒有箭頭,不可能任意轉移控制。(3)很容易確定局部和全程數(shù)據(jù)的作用域。(4)很容易表現(xiàn)嵌套關系,也可以表示模塊的層次結構軟件工程2023/2/4第20頁5.3.3PAD圖PAD圖(ProblemAnalysisDiagram)由日本日立公司在1979年發(fā)明,它用二維樹型結構的圖來表示程序的控制流,比較容易翻譯成程序代碼。1、符號:軟件工程2023/2/4第21頁2、實例:s=0i=1s=s+(2*i-1)*(2*i-1)i=i+1whilei<=100輸出s軟件工程2023/2/4第22頁3、特點:(1)使用PAD圖設計的程序必然是結構化程序(2)PAD圖描繪的程序結構十分清晰。(3)用PAD圖表現(xiàn)程序邏輯,易讀、易懂、易記。(4)容易將PAD圖轉換成高級語言源程序(5)PAD圖既可用于表示程序邏輯,也可用于描繪數(shù)據(jù)結構。(6)PAD圖的符號支持自頂向下、逐步求精方法的使用。(7)PAD圖面向高級語言。軟件工程2023/2/4第23頁5.3.4判定表

判定表能夠清晰地表示復雜的條件組合與應做的動作之間的對應關系,而其它的工具不易表示。1、表現(xiàn)形式:條件茬(cha)條件組合動作茬動作軟件工程2023/2/4第24頁2、實例:假設某航空公司規(guī)定,乘客可以免費托運重量不超過30公斤的行李。當行李重量超過30公斤時,對頭等艙的國內乘客超重部分每公斤收費4元,對其它艙的國內乘客超重部分每公斤收費6元,對外國乘客超重部分每公斤收費比國內乘客多一倍,對殘疾乘客超重部分每公斤收費比正常乘客少一半。試用判定樹判定表表示上述每種組合相對應的動作。所有需要考慮的條件:(1)重量是否超過30公斤;(2)是否頭等艙;(3)是否國內乘客;(4)是否殘疾人??赡懿扇√幚韯幼鳎海?)免費;(2)超出部分每公斤收費2元;(3)超出部分每公斤收費3元;(4)超出部分每公斤收費4元;(5)超出部分每公斤收費6元;(6)超出部分每公斤收費8元;(7)超出部分每公斤收費12元;軟件工程2023/2/4第25頁軟件工程2023/2/4第26頁實例:輸出si=i+1s=s+(2*i-1)*(2*i-1)i=1s=0FTi<=100軟件工程2023/2/4第27頁3、特點:(1)容易表示條件組合;(2)不容易表示順序和重復等處理;(3)不適合作通用程序設計工具,軟件工程2023/2/4第28頁

判定樹是判定表的變種,也能清晰地表示復雜的條件組合與應做的動作之間的對應關系。

1、實例軟件工程2023/2/4第29頁2、特點:優(yōu)點:形式簡單,不需任何說明,易看出含義,易于掌握和使用。缺點:簡潔性不如判定表,相同的數(shù)據(jù)元素往往要重復寫多遍,而且越接近樹的葉端重復次數(shù)越多。軟件工程2023/2/4第30頁5.3.6過程設計語言PDL

PDL也稱為偽碼,是用正文形式表示數(shù)據(jù)和處理過程的設計工具。1、表現(xiàn)形式:(1)關鍵字外部語法(固定),用于定義結構化控制結構和數(shù)據(jù)說明;(2)自然語言內部語法(自由),表示處理特點。軟件工程2023/2/4第31頁2、實例Procedurespellcheckis

BEGINsplitdocumentintosinglewordslookupwordsindictionarydisplaybad_spelledwordscreateanewdictionary

ENDspellcheck軟件工程2023/2/4第32頁Procedurespellcheckis

BEGIN*splitdocumentintosinglewords

LOOPgetnextwordaddwordtowordlistinsortedorderEXITwhenallwordsprocessed

ENDLOOP

軟件工程2023/2/4第33頁*lookupwordsindictionary

LOOPgetawordfromwordlist

IFwordnotindictionaryTHENdisplaytheword,promptonuser’sterminal

IFuserresponsesayword‘ok’THENaddwordtogoodwordlist

ELSEaddwordtobadwordlist

ENDIF

ENDIFEXITwhenallwordsprocessed

ENDLOOP軟件工程2023/2/4第34頁*displaybad_spelledwords

LOOPfetchwordsfrombadwordlistdisplayEXITwhenallbad_spelledwordsprocessed

ENDLOOP*createanewdictionarydictionary:=dictionary+goodwordlist

ENDspellcheck軟件工程2023/2/4第35頁3、特點:1.關鍵字的固定語法,它提供了結構化控制結構、數(shù)據(jù)說明和模塊化的特點。2.自然語言的自由語法,它描述處理特點。3.數(shù)據(jù)說明的手段既包括簡單的數(shù)據(jù)結構,又包括復雜的數(shù)據(jù)結構。4.模塊定義和調用的技術,應該提供各種接口描述模式。優(yōu)點:

1.可以作為注釋直接插在源程序中間。

2.可以使用普通的正文編輯程序或文字處理系統(tǒng),很方便地完成PDL的書寫和編輯工作。

3.已經有自動處理程序存在,而且可以自動由PDL生成程序代碼。軟件工程2023/2/4第36頁5.2Jackson程序設計方法

思想:出發(fā)點是數(shù)據(jù)結構用JACKSON圖表示用JACKSON圖表示用JACKSON偽碼表示數(shù)據(jù)結構過程描述程序結構映射詳細組織問題環(huán)境可執(zhí)行的操作需完成的任務軟件工程2023/2/4第37頁(1)順序結構順序結構的數(shù)據(jù)由一個或多個數(shù)據(jù)元素組成,每個元素按確定次序依次出現(xiàn)。軟件工程5.2.1Jackson圖2023/2/4第38頁(2)選擇結構選擇結構的數(shù)據(jù)包含兩個或多個數(shù)據(jù)元素,每次使用這個數(shù)據(jù)時按一定條件從這些數(shù)據(jù)元素中選擇一個。軟件工程2023/2/4第39頁(3)重復結構重復結構的數(shù)據(jù),根據(jù)使用時的條件由一個數(shù)據(jù)元素出現(xiàn)零次或多次構成。Jackson圖的優(yōu)點。便于表示層次結構,而且是對結構進行自頂向下分解的有力工具。。形象直觀可讀性好。既能表示數(shù)據(jù)結構,也能表示程序結構軟件工程2023/2/4第40頁5.3.2改進的Jackson圖

上面介紹的Jackson圖的缺點:(1)不能直接在圖上表示選擇條件或循環(huán)結束條件,影響了圖的表達能力,也不易直接把圖翻譯成程序;(2)框間連線為斜線,不易在行式打印機上輸出。軟件工程2023/2/4第41頁Jackson偽碼。

AseqBCDAendAselectcond1BAorcond2CAorcond3DAendAiteruntil(或while)condBAend軟件工程2023/2/4第42頁(1)分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結構,并用Jackson圖描繪這些數(shù)據(jù)結構。(2)找出輸入數(shù)據(jù)結構和輸出數(shù)據(jù)結構中有對應關系的數(shù)據(jù)單元。所謂有對應關系是指有直接的因果關系,在程序中可以同時處理的數(shù)據(jù)單元。(3)用下述三條規(guī)則從描繪數(shù)據(jù)結構的Jackson圖導出描述程序結構的Jackson圖(4)列出所有操作和條件(包括分支條件和循環(huán)結束條件),并且把它們分配到程序結構圖的適當位置。(5)用偽碼表示程序。軟件工程5.3.3Jackson方法2023/2/4第43頁例子:一個正文文件由若干個記錄組成,每個記錄是一個字符串。要求統(tǒng)計每個記錄中空格字符的個數(shù),以及文件中空格字符的總個數(shù)。要求的輸出數(shù)據(jù)格式是,每復制一行輸入字符串之后,另起一行印出這個字符串中的空格數(shù),最后印出文件中空格的總個數(shù)。輸出格式:原樣輸出字符串1,字符串1空格數(shù)原樣輸出字符串2,字符串2空格數(shù)……原樣輸出字符串n,字符串n空格數(shù)輸出空格總數(shù)軟件工程2023/2/4第44頁第一步:繪出輸入數(shù)據(jù)和輸出數(shù)據(jù)的數(shù)據(jù)結構輸出文件串信息*字符串空格數(shù)表格體空格總數(shù)正文文件字符*空格○非空格○字符串*IISI輸入數(shù)據(jù)結構輸出數(shù)據(jù)結構軟件工程2023/2/4第45頁第二步:分析確定在輸入數(shù)據(jù)結構和輸出數(shù)據(jù)結構中有對應關系的數(shù)據(jù)單元。輸出文件串信息*字符串空格數(shù)表格體空格總數(shù)正文文件字符*空格○非空格○字符串*IISI輸入數(shù)據(jù)結構輸出數(shù)據(jù)結構軟件工程2023/2/4第46頁第三步:從數(shù)據(jù)結構圖導出程序結構圖。(1)為每對有對應關系的數(shù)據(jù)單元,按照它們在數(shù)據(jù)結構圖中的層次在程序結構圖的相應層次畫一個處理框。注意:如果這對數(shù)據(jù)單元在輸入數(shù)據(jù)結構和輸出數(shù)據(jù)結構中所處的層次不同,則和它們對應的處理框在程序結構圖中所處的層次與它們之中在數(shù)據(jù)結構圖中層次低的那個對應。

(2)根據(jù)輸入數(shù)據(jù)結構中剩余的每個數(shù)據(jù)單元所處的層次,在程序結構圖的相應層次分別為它們畫上對應的處理框。(3)根據(jù)輸出數(shù)據(jù)結構中剩余的每個數(shù)據(jù)單元所處的層次,在程序結構圖的相應層次分別為它們畫上對應的處理框。

程序結構圖統(tǒng)計空格處理字符串*處理空格○處理非空格○處理字符串表格體印總數(shù)I印字符串印空格數(shù)分析字符串分析字符*IS軟件工程2023/2/4第47頁第四步:列出所有操作和條件,并且把它們分配到程序結構圖的適當位置。最后的程序結構圖統(tǒng)計空格處理字符串*處理空格○處理非空格○程序體印總數(shù)I(文件結束)印字符串印空格數(shù)分析字符串分析字符*打開文件讀入字符串Totalsum:=0關閉文件停止印出空格總數(shù)印出字符串sum:=0pointer:=1Totalsum:=Totalsum+sum讀入字符串I(字符串結束)印出空格數(shù)目sum:=sum+1pointer:=pointer+1pointer:=pointer+1S(字符是空格)Sum:保存空格個數(shù)的變量;Totalsum:保存空格總數(shù)的變量;Pointer:當前分析的字符在字符串中的位置;軟件工程2023/2/4第48頁第五步:用偽碼表示程序處理過程。從圖5.14可以得出下列代碼:統(tǒng)計空格seq

打開文件

讀入字符串

totalsum:=0

程序體iteruntil文件結束處理字符串seq

印字符串seq

印出字符串印字符串end

sum:=0pointer:=1

分析字符串iteruntil字符串結束分析字符select字符是空格處理空格seq

sum:=sum+1pointer:=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軟件工

溫馨提示

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

最新文檔

評論

0/150

提交評論