軟件工程導論課件Ch
,Click to edit Master title style,Click to edit Master text styles,Second level,*,Click to edit Master title style,Click to edit Master text styles,Second level,*,軟件工程,原理、方法和工具,Ch.5,軟件詳細設計,王會青,第,5,章 軟件詳細設計,5.1,詳細設計的目的與任務,5.2,結(jié)構(gòu)化程序設計,5.3,詳細設計工具,5.1,詳細設計的目的與任務,詳細設計的根本目的:確定應該怎樣具體實現(xiàn)所要求的系統(tǒng)。經(jīng)過這個階段的設計工作,應該得出對目標系統(tǒng)的精確描述,從而在編碼階段可以把這個描述直接翻譯成用某種程序設計語言書寫的程序,結(jié)構(gòu)化程序設計是實現(xiàn)上述目標的關鍵技術,因此是詳細設計的邏輯基礎。,5.2,結(jié)構(gòu)化程序設計,結(jié)構(gòu)化程序設計所使用的結(jié)構(gòu)有順序、條件和重復三種,。,結(jié)構(gòu)化程序設計采用自頂向下,逐步求精的設計方法和單入口單出口的控制結(jié)構(gòu),。,5.3,詳細設計工具,描述程序處理過程的工具稱為詳細設計工具,可以分為圖形、表格和語言三類,。,1.,程序流程圖,2.N-S,圖,3.PAD,圖,4.,過程設計語言,5.3.1,程序流程圖,程序流程圖又稱為程序框圖,它是歷史最悠久、使用最廣泛的描述過程設計的方法。,主要優(yōu)點是對控制流程的描繪很直觀,便于初學者掌握。,缺點:,程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu)。,程序流程圖用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設計的精神,隨意轉(zhuǎn)移控制。,程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu)。,5.3.1,程序流程圖,程序流程圖的三種基本控制結(jié)構(gòu),N-S,圖又稱為盒圖,具有以下優(yōu)點:,功能域明確。,不可能任意轉(zhuǎn)移控制。,很容易確定局部和全局數(shù)據(jù)的作用域。,很容易表達模塊的層次結(jié)構(gòu),并列和嵌套關系。,使得程序設計人員遵守結(jié)構(gòu)化程序設計的規(guī)定,自然地養(yǎng)成良好的程序設計風格。,5.3.2 N-S,圖,5.3.2 N-S,圖,PAD,圖是問題分析圖(,problem analysis diagram,)的英文縮寫,自,1973,年由日本日立公司發(fā)明以后,已得到一定程度的推廣。,它用二維樹形結(jié)構(gòu)的圖來表示程序的控制流,將這種圖翻譯成程序代碼比較容易。,5.3.3 PAD,圖,5.3.3 PAD,圖,PAD,圖描述的三種基本控制結(jié)構(gòu),PAD,圖具有以下優(yōu)點:,用,PAD,圖設計出來的程序必然是結(jié)構(gòu)化程序。,PAD,圖所描繪的程序結(jié)構(gòu)十分清晰。,PAD,圖的符號支持自頂向下,逐步求精的方法。,用,PAD,圖表示的程序邏輯易讀、易懂、易記,使用方便。,既可表示程序邏輯,也可用于描繪數(shù)據(jù)結(jié)構(gòu)。,可自動生成程序。,5.3.3 PAD,圖,5.3.3 PAD,圖示例,5.3.3 PAD,圖示例,過程設計語言(,Process Design Language,,,PDL,),也稱為偽碼,是一種用于描述模塊算法設計和處理細節(jié)的語言。,PDL,具有嚴格的關鍵字外部語法,用于定義控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu);另一方面,,PDL,表示實際操作和條件的內(nèi)層語法通常又是靈活自由的,可以適應各種項目的需要。,PDL,是一種“混雜”語言,它使用一種語言的詞匯,同時卻使用另一種語言的語法。,5.3.4,過程設計語言,過程設計語言的基本控制結(jié)構(gòu):,簡單陳數(shù)據(jù)結(jié)構(gòu):避免復合語句。,判定結(jié)構(gòu):,IF_THEN_ELSE,或,CASE_OF,結(jié)構(gòu)。,循環(huán)結(jié)構(gòu):,WHILE_DO,或,REPEAT_UNTIL,結(jié)構(gòu)。,5.3.4,過程設計語言,過程設計語言的特點:,關鍵字的固定語法,它提供了結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說明和模塊化的特點。,描述處理過程的說明性語言,沒有嚴格的語法限制。,具有數(shù)據(jù)說明機制,應該既包括簡單的數(shù)據(jù)結(jié)構(gòu),又包括復雜的數(shù)據(jù)結(jié)構(gòu)。,具有模塊定義和調(diào)用機制。,5.3.4,過程設計語言,5.3.4,過程設計語言示例,現(xiàn)以某系統(tǒng)主控模塊的詳細設計為例,說明如何用,PDL,描述處理過程:,PROCEDURE,模塊名(形式參數(shù));,清屏;,顯示某系統(tǒng)用戶界面;,PUT,(“請輸入用戶口令:”);,GET,(,Password,),;,IF Password,系統(tǒng)口令,提示警告信息;,退出運行,ENDIF,;,顯示本系統(tǒng)主菜單;,WHILE,(,true,),接受用戶選擇,BD,;,IF BD=“,退出”,Break,;,ENDIF,;,使用相應下層模塊完成用戶選擇功能;,ENDWHILE,;,清屏;,RETURN,END,過程設計語言的優(yōu)點:,可以作為注釋直接插在源程序中間,有助于保持文檔和程序的一致性,提高了文檔的質(zhì)量。,提供的機制比圖形全面,有利于保證軟件詳細設計與編碼的質(zhì)量。,可自動生成程序代碼,提高軟件生產(chǎn)率。,5.3.4,過程設計語言,習題,軟件詳細設計的基本任務是什么?有哪幾種描述方法?,結(jié)構(gòu)化程序設計的基本要點是什么?,使用流程圖、,PAD,圖、,N-S,圖和,PDL,語言描述下列程序的算法:,(,1,)在數(shù)據(jù),A(1)A(10),式中求最小數(shù)和次小數(shù)。,(,2,)輸入三個正整數(shù)作為邊長,判斷由這三條邊構(gòu)成的三角形是直角、等腰或一般三角形。,4.,任選一種排序(從大到小)算法,分別用流程圖、,N-S,圖和,PPL,語言描述其詳細過程。,5.,程序流程圖、,N-S,圖、,PAD,圖和,PDL,語言的特點各是什么?你認為這四種詳細設計工具哪一種最好?為什么?,6.,畫出下列程序的,PAD,圖,REPEAT,IF x,O,THEN x1,ELSE x2,ENDIF,;,S1,;,IF y,O,THEN y1,IF z,O,THEN z1,ELSE z2,ENDIF,;,S2,;,ELSE y2,;,ENDIF,;,UNTIL L,;,Q&A,