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

下載本文檔

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

文檔簡介

2024/10/9第六章詳細(xì)(xiángxì)設(shè)計(jì)共九十九頁詳細(xì)(xiángxì)設(shè)計(jì)的目標(biāo)確定怎樣具體地實(shí)現(xiàn)所要求的系統(tǒng)

經(jīng)過這個(gè)階段的設(shè)計(jì)工作,應(yīng)該得出對目標(biāo)系統(tǒng)的精確描述,從而在編碼階段可以把這個(gè)描述直接翻譯成用某種程序設(shè)計(jì)語言(yǔyán)書寫的程序。2共九十九頁在詳細(xì)設(shè)計(jì)過程中,需要完成的工作是:

(1)確定軟件各個(gè)組成部分內(nèi)的算法以及內(nèi)部數(shù)據(jù)組織。

(2)選定某種過程的表達(dá)形式來描述各種算法。可選用的過程表達(dá)形式有:流程圖、盒圖、PAD圖、Jackson圖等。

(3)編寫詳細(xì)設(shè)計(jì)說明書。

(4)制定(zhìdìng)單元測試計(jì)劃。

(5)進(jìn)行詳細(xì)設(shè)計(jì)評審。詳細(xì)(xiángxì)設(shè)計(jì)的目標(biāo)3共九十九頁本章(běnzhānɡ)綱要6.1結(jié)構(gòu)程序設(shè)計(jì)6.2人機(jī)界面(rénjījièmiàn)設(shè)計(jì)6.3過程設(shè)計(jì)的工具6.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法6.5程序復(fù)雜度的定量度量4共九十九頁6.1結(jié)構(gòu)(jiégòu)程序設(shè)計(jì)結(jié)構(gòu)程序設(shè)計(jì)的概念最早由E.W.Dijkstra提出。

1965年,他在一次會(huì)議上指出:“可以從高級語言中取消GOTO語句”,“程序的質(zhì)量與程序中所包含的GOTO語句的數(shù)量成反比”。1966年Bohm和Jacopini證明了,只用三種基本的控制結(jié)構(gòu)就能實(shí)現(xiàn)任何單入口單出口的程序。

這三種基本的控制結(jié)構(gòu)是“順序”、“選擇”和“循環(huán)(xúnhuán)”。1972年IBM公司的Mills進(jìn)一步提出,程序應(yīng)該只有一個(gè)入口和一個(gè)出口,從而補(bǔ)充了結(jié)構(gòu)程序設(shè)計(jì)的規(guī)則。

5共九十九頁6.1結(jié)構(gòu)程序設(shè)計(jì)(chénɡxùshèjì)——三種基本的控制結(jié)構(gòu)(a)順序結(jié)構(gòu)(jiégòu) 先執(zhí)行A再執(zhí)行B(b)IF_THEN_ELSE型選擇(分支)結(jié)構(gòu)(c)DO_WHILE型循環(huán)結(jié)構(gòu) 在循環(huán)控制條件成立時(shí),重復(fù)執(zhí)行特定的加工

6理論上,最基本的控制結(jié)構(gòu)只有兩種:順序、循環(huán)結(jié)構(gòu)(選擇結(jié)構(gòu)可由其兩者構(gòu)造)。共九十九頁6.1結(jié)構(gòu)程序設(shè)計(jì)——目的(mùdì)和定義目的:使程序易于理解和閱讀經(jīng)典定義:由3種基本控制結(jié)構(gòu)連接且只有一個(gè)入口和出口的程序是結(jié)構(gòu)化的。(無goto語句)

1971年,IBM率先(shuàixiān)成功運(yùn)用結(jié)構(gòu)程序設(shè)計(jì)技術(shù)。針對goto語句的使用問題,修正對結(jié)構(gòu)程序設(shè)計(jì)的定義:盡可能少用goto語句(最好僅在檢測出錯(cuò)時(shí)才使用)7共九十九頁6.1結(jié)構(gòu)(jiégòu)程序設(shè)計(jì)——定義結(jié)構(gòu)程序設(shè)計(jì)是一種設(shè)計(jì)程序的技術(shù),它采用自頂向下逐步求精的設(shè)計(jì)方法和單入口(rùkǒu)單出口的控制結(jié)構(gòu)總體設(shè)計(jì)階段采用自頂向下逐步求精的方法: 把一個(gè)復(fù)雜問題的解法分解和細(xì)化成一個(gè)由許多模塊組成的層次結(jié)構(gòu)的軟件系統(tǒng)。詳細(xì)設(shè)計(jì)或編碼階段采用自頂向下逐步求精的方法: 可以把一個(gè)模塊的功能逐步分解細(xì)化為一系列具體的處理步驟或某種高級語言的語句。

8共九十九頁6.1結(jié)構(gòu)程序設(shè)計(jì)(chénɡxùshèjì)——優(yōu)點(diǎn)

可以顯著提高軟件開發(fā)工程的成功率和生產(chǎn)率。程序有清晰的層次結(jié)構(gòu),因此容易閱讀和理解。開發(fā)時(shí)比較容易保證程序的正確性,即使出現(xiàn)錯(cuò)誤也比較容易診斷和糾正。源程序清晰流暢,易讀易懂而且容易測試。程序清晰和模塊化使得在修改和重新設(shè)計(jì)一個(gè)軟件時(shí)可以重用(zhòngyòng)的代碼量最大。程序的邏輯結(jié)構(gòu)清晰,有利于程序正確性證明。

9共九十九頁6.1結(jié)構(gòu)程序設(shè)計(jì)(chénɡxùshèjì)——擴(kuò)充的控制結(jié)構(gòu)10經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì)(chénɡxùshèjì):只允許使用順序、IF_THEN_ELSE選擇和DO_WHILE循環(huán);擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì):除了三種基本控制結(jié)構(gòu),還使用DO_CASE和DO_UNTIL循環(huán);修正的結(jié)構(gòu)程序設(shè)計(jì):除了三種基本控制結(jié)構(gòu)和兩種擴(kuò)充結(jié)構(gòu),還使用BREAK等結(jié)構(gòu)。共九十九頁6.1結(jié)構(gòu)程序設(shè)計(jì)(chénɡxùshèjì)——擴(kuò)充的控制結(jié)構(gòu)11共九十九頁6.2人機(jī)界面(rénjījièmiàn)設(shè)計(jì)人機(jī)界面設(shè)計(jì)是接口設(shè)計(jì)的一個(gè)(yīɡè)重要的組成部分。人機(jī)界面的設(shè)計(jì)質(zhì)量,直接影響用戶對軟件產(chǎn)品的評價(jià),從而影響軟件產(chǎn)品的競爭力和壽命。因此,必須對人機(jī)界面設(shè)計(jì)給予足夠重視。12共九十九頁6.2.1設(shè)計(jì)(shèjì)問題在設(shè)計(jì)人機(jī)界面的過程中,常遇到以下4個(gè)問題:系統(tǒng)響應(yīng)時(shí)間用戶幫助設(shè)施出錯(cuò)信息處理命令交互

許多設(shè)計(jì)者直到設(shè)計(jì)過程后期才開始考慮這些問題,這樣做往往導(dǎo)致出現(xiàn)不必要的設(shè)計(jì)反復(fù)(fǎnfù)、項(xiàng)目延期和用戶產(chǎn)生挫折感。最好在設(shè)計(jì)初期就把這些問題作為重要的設(shè)計(jì)問題來考慮,這時(shí)修改比較容易,代價(jià)也低。13共九十九頁6.2.1設(shè)計(jì)問題——系統(tǒng)響應(yīng)(xiǎngyìng)時(shí)間定義:系統(tǒng)響應(yīng)時(shí)間指從用戶完成某個(gè)控制動(dòng)作(例如(lìrú),按回車鍵或點(diǎn)擊鼠標(biāo)),到軟件給出預(yù)期的響應(yīng)(輸出信息或做動(dòng)作)之間的這段時(shí)間。

兩個(gè)重要屬性:長度和易變性長度:系統(tǒng)響應(yīng)時(shí)間過長,用戶就會(huì)感到緊張和沮喪;

系統(tǒng)響應(yīng)時(shí)間過短,迫使用戶加快操作節(jié)奏,從而可能會(huì)犯錯(cuò)誤。

易變性:指系統(tǒng)響應(yīng)時(shí)間相對于平均響應(yīng)時(shí)間的偏差。即使系統(tǒng)響應(yīng)時(shí)間較長,響應(yīng)時(shí)間易變性低也有助于用戶建立起穩(wěn)定的工作節(jié)奏。14共九十九頁6.2.1設(shè)計(jì)問題——用戶幫助(bāngzhù)設(shè)施常見的幫助設(shè)施可分為集成的和附加的兩類。集成的幫助設(shè)施從一開始(kāishǐ)就設(shè)計(jì)在軟件里面,通常,它對用戶工作內(nèi)容是敏感的,因此用戶可以從與剛剛完成的操作有關(guān)的主題中選擇一個(gè)請求幫助。顯然,這可以縮短用戶獲得幫助的時(shí)間,增加界面的友好性。

如:office的幫助附加的幫助設(shè)施是在系統(tǒng)建成后再添加到軟件中的,在多數(shù)情況下它實(shí)際上是一種查詢能力有限的聯(lián)機(jī)用戶手冊。

如:MSDN15共九十九頁具體設(shè)計(jì)幫助設(shè)施時(shí),必須解決下述的一系列問題在用戶與系統(tǒng)交互期間,是否在任何(rènhé)時(shí)候都能獲得關(guān)于系統(tǒng)任何(rènhé)功能的幫助信息?有兩種選擇;提供部分功能的幫助信息和提供全部功能的幫助信息。用戶怎樣請求幫助?有3種選擇:幫助菜單,特殊功能鍵和HELP命令。6.2.1設(shè)計(jì)問題(wèntí)——用戶幫助設(shè)施16共九十九頁怎樣顯示幫助信息?有3種選擇,在獨(dú)立的窗口中,指出參考某個(gè)(mǒuɡè)文檔(不理想)和在屏幕固定位置顯示簡短提示。用戶怎樣返回到正常的交互方式中?有兩種選擇:屏幕上的返回按鈕和功能鍵。怎樣組織幫助信息?有3種選擇:平面結(jié)構(gòu)(所有信息都通過關(guān)鍵字訪問),信息的層次結(jié)構(gòu)(用戶可在該結(jié)構(gòu)中查到更詳細(xì)的信息)和超文本結(jié)構(gòu)。

6.2.1設(shè)計(jì)問題——用戶幫助(bāngzhù)設(shè)施17共九十九頁6.2.1設(shè)計(jì)問題(wèntí)——出錯(cuò)信息處理出錯(cuò)信息和警告信息,是出現(xiàn)問題時(shí)交互式系統(tǒng)給出的“壞消息”。出錯(cuò)信息設(shè)計(jì)得不好,將向用戶提供無用的甚至誤導(dǎo)的信息,反而會(huì)加重用戶的挫折感。

出錯(cuò)信息處理應(yīng)該具有下述屬性(1)信息應(yīng)該使用用戶可以理解的術(shù)語(shùyǔ)描述問題。(2)信息應(yīng)該提供有助于從錯(cuò)誤中恢復(fù)的建設(shè)性意見。

18共九十九頁(3)信息應(yīng)該指出錯(cuò)誤可能導(dǎo)致哪些負(fù)面后果(例如,破壞數(shù)據(jù)文件),以便用戶檢查是否出現(xiàn)了這些問題,并在確實(shí)(quèshí)出現(xiàn)問題時(shí)及時(shí)解決。(4)信息應(yīng)該伴隨著聽覺上或視覺上的提示。例如,在顯示信息時(shí)同時(shí)發(fā)出警告鈴聲,或者信息用閃爍方式顯示,或者信息用明顯表示出錯(cuò)的顏色顯示。(5)信息不能帶有指責(zé)色彩,也就是說,不能責(zé)怪用戶。

6.2.1設(shè)計(jì)問題(wèntí)——出錯(cuò)信息處理19共九十九頁6.2.1設(shè)計(jì)(shèjì)問題——命令交互命令行曾經(jīng)是用戶和系統(tǒng)軟件交互的最常用的方式,并且也曾經(jīng)廣泛地用于各種應(yīng)用軟件中?,F(xiàn)在,面向窗口的、點(diǎn)擊和拾取方式的界面已經(jīng)減少了用戶對命令行的依賴,但是,許多高級用戶仍然偏愛面向命令行的交互方式。在多數(shù)情況下,用戶既可以從菜單中選擇軟件功能,也可以通過(tōngguò)鍵盤命令序列調(diào)用軟件功能。20共九十九頁必須考慮下列設(shè)計(jì)問題(1)是否每個(gè)菜單選項(xiàng)都有對應(yīng)的命令?(2)采用何種命令形式?有3種選擇(xuǎnzé):控制序列(例如,Ctrl十P),功能鍵和鍵入命令。(3)學(xué)習(xí)和記憶命令的難度有多大?忘記了命令怎么辦?(4)用戶是否可以定制或縮寫命令?在越來越多的應(yīng)用軟件中,人機(jī)界面設(shè)計(jì)者都提供了“命令宏機(jī)制”

在理想的情況下,所有應(yīng)用軟件都有一致的命令使用方法。6.2.1設(shè)計(jì)(shèjì)問題——命令交互21共九十九頁6.2.2設(shè)計(jì)(shèjì)過程用戶界面設(shè)計(jì)是一個(gè)迭代的過程,也就是說,通常先創(chuàng)建設(shè)計(jì)模型,再用原型實(shí)現(xiàn)這個(gè)(zhège)設(shè)計(jì)模型,并由用戶試用和評估,然后根據(jù)用戶意見進(jìn)行修改。

運(yùn)用下述評估標(biāo)準(zhǔn)對界面設(shè)計(jì)進(jìn)行早期復(fù)審(1)系統(tǒng)及其界面的規(guī)格說明書的長度和復(fù)雜程度。(2)命令或動(dòng)作的數(shù)量、命令的平均參數(shù)個(gè)數(shù)或動(dòng)作中單個(gè)操作的個(gè)數(shù)。(3)設(shè)計(jì)模型中包含的動(dòng)作、命令和系統(tǒng)狀態(tài)的數(shù)量。(4)界面風(fēng)格、幫助設(shè)施和出錯(cuò)處理協(xié)議。

22共九十九頁6.2.3人機(jī)界面設(shè)計(jì)(shèjì)指南用戶界面設(shè)計(jì)主要依靠設(shè)計(jì)者的經(jīng)驗(yàn)介紹3類人機(jī)界面(rénjījièmiàn)設(shè)計(jì)指南。1.一般交互指南2.信息顯示指南3.?dāng)?shù)據(jù)輸入指南23共九十九頁6.2.3人機(jī)界面設(shè)計(jì)指南(zhǐnán)——一般交互指南一般交互指南涉及信息顯示、數(shù)據(jù)輸入和系統(tǒng)整體控制

(1)保持一致性。

應(yīng)該為人機(jī)界面中的菜單選擇、命令輸入、數(shù)據(jù)顯示以及眾多的其他功能,使用一致的格式。(2)提供有意義的反饋。

應(yīng)向用戶提供視覺的和聽覺的反饋,以保證在用戶和系統(tǒng)之間建立雙向通信。(3)在執(zhí)行(zhíxíng)有較大破壞性的動(dòng)作之前要求用戶確認(rèn)。

如果用戶要?jiǎng)h除一個(gè)文件,或覆蓋一些重要信息,或終止一個(gè)程序的運(yùn)行,應(yīng)該給出“您是否確實(shí)要……”的信息,以請求用戶確認(rèn)他的命令。24共九十九頁(4)允許取消絕大多數(shù)操作。

UNDO或REVERSE功能曾經(jīng)使眾多終端用戶避免了大量時(shí)間浪費(fèi)。每個(gè)交互式系統(tǒng)都應(yīng)該能方便地取消已完成的操作。(5)減少在兩次操作之間必須記憶的信息量。

不應(yīng)該期望用戶能記住(jìzhù)在下一步操作中需使用的一大串?dāng)?shù)字或標(biāo)識符。應(yīng)該盡量減少記憶量。(6)提高對話、移動(dòng)和思考的效率。

應(yīng)該盡量減少用戶擊鍵的次數(shù),設(shè)計(jì)屏幕布局時(shí)應(yīng)該考慮盡量減少鼠標(biāo)移動(dòng)的距離,應(yīng)該盡量避免出現(xiàn)用戶問“這是什么意思?”的情況。6.2.3人機(jī)界面設(shè)計(jì)指南——一般(yībān)交互指南25共九十九頁(7)允許犯錯(cuò)誤。

系統(tǒng)應(yīng)該能保護(hù)自己不受嚴(yán)重錯(cuò)誤的破壞。(8)按功能對動(dòng)作分類,并據(jù)此設(shè)計(jì)屏幕布局。

下拉菜單的一個(gè)主要優(yōu)點(diǎn)就是能按動(dòng)作類型組織命令。實(shí)際上,設(shè)計(jì)者應(yīng)該盡力提高命令和動(dòng)作組織的“內(nèi)聚性”。(9)提供對用戶工作內(nèi)容敏感的幫助設(shè)施(shèshī)

(參見6.2.1節(jié))。(10)用簡單動(dòng)詞或動(dòng)詞短語作為命令名。

過長的命令名難于識別和記憶,也會(huì)占用過多的菜單空間。6.2.3人機(jī)界面設(shè)計(jì)(shèjì)指南——一般交互指南26共九十九頁6.2.3人機(jī)界面設(shè)計(jì)(shèjì)指南——信息顯示指南如果人機(jī)界面顯示的信息是不完整的、含糊的或難于理解的,可以用多種不同方式“顯示”信息:用文字、圖形和聲音;按位置、移動(dòng)和大小(dàxiǎo);使用顏色、分辨率和省略。

關(guān)于信息顯示的設(shè)計(jì)指南(1)只顯示與當(dāng)前工作內(nèi)容有關(guān)的信息。(2)不要用數(shù)據(jù)淹沒用戶,應(yīng)該用便于用戶迅速吸取信息的方式來表示數(shù)據(jù)。27共九十九頁(3)使用(shǐyòng)一致的標(biāo)記、標(biāo)準(zhǔn)的縮寫和可預(yù)知的顏色。顯示的含義應(yīng)該非常明確,用戶無須參照其他信息源就能理解。(4)允許用戶保持可視化的語境。(5)產(chǎn)生有意義的出錯(cuò)信息(參見6.2.1節(jié))。(6)使用大小寫、縮進(jìn)和文本分組以幫助理解。(7)使用窗口分隔不同類型的信息。6.2.3人機(jī)界面設(shè)計(jì)指南——信息(xìnxī)顯示指南28共九十九頁(8)使用“模擬”顯示方式表示信息,以使信息更容易被用戶提取。

例如,顯示煉油廠儲(chǔ)油罐的壓力時(shí),如果簡單地用數(shù)字表示壓力,則不易引起用戶注意。但是,如果用類似溫度計(jì)的形式來表示壓力,用垂直移動(dòng)和顏色變化來指示危險(xiǎn)的壓力狀況,就容易引起用戶的警覺,因?yàn)檫@樣做為用戶提供了絕對和相對兩方面的信息。(9)高效率地使用顯示屏。

當(dāng)使用多窗口時(shí),應(yīng)該有足夠的空間(kōngjiān)使得每個(gè)窗口至少都能顯示出一部分。此外,屏幕大小應(yīng)該選得和應(yīng)用系統(tǒng)的類型相配套(這實(shí)際上是一個(gè)系統(tǒng)工程問題)。6.2.3人機(jī)界面(rénjījièmiàn)設(shè)計(jì)指南——信息顯示指南29共九十九頁6.2.3人機(jī)界面設(shè)計(jì)(shèjì)指南——數(shù)據(jù)輸入指南(1)盡量減少用戶的輸入動(dòng)作。(2)保持信息顯示(xiǎnshì)和數(shù)據(jù)輸入之間的一致性。(3)允許用戶自定義輸入。(4)交互應(yīng)該是靈活的,并且可調(diào)整成用戶最喜歡的輸入方式。(5)使在當(dāng)前動(dòng)作語境中不適用的命令不起作用。(6)讓用戶控制交互流。(7)對所有輸入動(dòng)作都提供幫助(8)消除冗余的輸入。30共九十九頁6.3詳細(xì)(xiángxì)設(shè)計(jì)的工具程序流程圖盒圖(N-S圖)PAD圖判定表判定樹過程設(shè)計(jì)(shèjì)語言(PDL)31共九十九頁6.3.1程序(chéngxù)流程圖程序(chéngxù)流程圖又稱為程序(chéngxù)框圖,它是歷史最悠久使用最廣泛的描述軟件設(shè)計(jì)的方法,然而它也是用得最混亂的一種方法。從20世紀(jì)40年代末到70年代中期,程序流程圖一直是軟件設(shè)計(jì)的主要工具。32共九十九頁例子(lìzi)33共九十九頁6.3.1程序(chéngxù)流程圖——優(yōu)缺點(diǎn)主要優(yōu)點(diǎn):對控制流程的描繪很直觀,便于初學(xué)者掌握。主要缺點(diǎn):程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu)。程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制。程序流程圖不易(bùyì)表示數(shù)據(jù)結(jié)構(gòu)。34共九十九頁6.3.2盒圖(N_S圖)出于要有一種不允許違背(wéibèi)結(jié)構(gòu)程序設(shè)計(jì)精神的圖形工具的考慮,Nassi和Shneider-man提出了盒圖,又稱為N_S圖。35共九十九頁6.3.2盒圖(N_S圖)——順序(shùnxù)結(jié)構(gòu)36共九十九頁6.3.2盒圖——IF_THEN_ELSE型分支(fēnzhī)37共九十九頁6.3.2盒圖——CASE型多分支(fēnzhī)結(jié)構(gòu)38共九十九頁6.3.2盒圖——循環(huán)(xúnhuán)結(jié)構(gòu)39共九十九頁6.3.2盒圖——調(diào)用(diàoyòng)子程序40共九十九頁6.3.2盒圖——例子(lìzi)41共九十九頁6.3.2盒圖——特點(diǎn)(tèdiǎn)功能域(即,一個(gè)特定(tèdìng)控制結(jié)構(gòu)的作用域)明確,可以從盒圖上一眼就看出來。不可能任意轉(zhuǎn)移控制。很容易確定局部和全程數(shù)據(jù)的作用域。很容易表示嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。盒圖沒有箭頭,因此不允許隨意轉(zhuǎn)移控制。42共九十九頁6.3.3PAD圖PAD是問題分析圖(ProblemAnalysisDiagram)的英文縮寫,自1973年由日本日立公司發(fā)明以后,已得到一定程度的推廣(tuīguǎng)。它用二維樹形結(jié)構(gòu)的圖來表示程序的控制流,將這種圖翻譯成程序代碼比較容易。43共九十九頁6.3.3PAD圖——基本(jīběn)控制結(jié)構(gòu)44共九十九頁6.3.3PAD圖——基本(jīběn)控制結(jié)構(gòu)45共九十九頁6.3.3PAD圖——基本(jīběn)控制結(jié)構(gòu)46共九十九頁6.3.3PAD圖——例子(lìzi)47共九十九頁6.3.3PAD圖——主要(zhǔyào)優(yōu)點(diǎn)(1)使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的PAD符號所設(shè)計(jì)出來的程序必然是結(jié)構(gòu)化程序。PAD圖所描繪的程序結(jié)構(gòu)十分清晰。圖中最左面的豎線是程序的主線,即第一層結(jié)構(gòu)。隨著程序?qū)哟蔚脑黾?,PAD圖逐漸向右延伸(yánshēn),每增加一個(gè)層次,圖形向右擴(kuò)展一條豎線。PAD圖中豎線的總條數(shù)就是程序的層次數(shù)。48共九十九頁6.3.3PAD圖——主要(zhǔyào)優(yōu)點(diǎn)(2)用PAD圖表現(xiàn)程序邏輯,易讀、易懂、易記。PAD圖是二維樹形結(jié)構(gòu)的圖形,程序從圖中最左豎線上端的結(jié)點(diǎn)開始執(zhí)行,自上而下,從左向右順序執(zhí)行,遍歷(biànlì)所有結(jié)點(diǎn)。容易將PAD圖轉(zhuǎn)換成高級語言源程序。這種轉(zhuǎn)換可用軟件工具自動(dòng)完成,從而可省去人工編碼的工作,有利于提高軟件可靠性和軟件生產(chǎn)率。49共九十九頁6.3.3PAD圖——主要(zhǔyào)優(yōu)點(diǎn)(3)既可用于表示程序邏輯,也可用于描繪數(shù)據(jù)結(jié)構(gòu)。PAD圖的符號支持自頂向下、逐步求精方法的使用。開始設(shè)計(jì)者可以定義一個(gè)抽象的程序,隨著設(shè)計(jì)工作的深入而使用def符號逐步增加細(xì)節(jié)(xìjié),直至完成詳細(xì)設(shè)計(jì)。50共九十九頁6.3.3PAD圖——例子(lìzi):畫出下面(xiàmian)由偽碼寫出的程序的PAD圖51AWhileaDOBIfb>0thenC1elseC2EndifCaseofCased1thenD1Cased2thenD2elseD3ENDCaseEEndWhileFPDLABFEdefWhileaC1C2D1D2D3Td1b>0CaseofFd2else共九十九頁6.3.4判定(pàndìng)表當(dāng)算法中包含多重嵌套的條件(tiáojiàn)選擇時(shí),用程序流程圖、盒圖、PAD圖或后面即將介紹的過程設(shè)計(jì)語言(PDL)都不易清楚地描述。然而判定表卻能夠清晰地表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對應(yīng)關(guān)系。52共九十九頁6.3.4判定(pàndìng)表——組成一張判定表由4部分組成。左上部列出所有條件,左下部是所有可能的動(dòng)作。右上部是表示各種條件組合的一個(gè)矩陣(jǔzhèn),右下部是和每種條件組合相對應(yīng)的動(dòng)作。判定表右半部的每一列實(shí)質(zhì)上是一條規(guī)則,規(guī)定了與特定的條件組合相對應(yīng)的操作。53共九十九頁6.3.4判定表——例子(計(jì)算(jìsuàn)行李費(fèi))假設(shè)某航空公司規(guī)定,乘客可以免費(fèi)托運(yùn)重量不超過30公斤的行李。當(dāng)行李重量超過30公斤時(shí):對頭等艙的國內(nèi)乘客超重部分每公斤收費(fèi)4元;對其他(qítā)艙的國內(nèi)乘客超重部分每公斤收費(fèi)6元;對外國乘客超重部分每公斤收費(fèi)比國內(nèi)乘客多一倍;對殘疾乘客超重部分每公斤收費(fèi)比正常乘客少一半。54共九十九頁用判定表表示(biǎoshì)計(jì)算行李費(fèi)算法55共九十九頁6.3.5判定(pàndìng)樹判定樹是判定表的變種,也能清晰地表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對應(yīng)關(guān)系。判定樹的優(yōu)點(diǎn)在于,它的形式簡單到不需任何說明,一眼就可以看出其含義,因此易于掌握和使用。多年來判定樹一直受到人們的重視,是一種比較常用(chánɡyònɡ)的系統(tǒng)分析和設(shè)計(jì)的工具。56共九十九頁用判定樹表示計(jì)算(jìsuàn)行李費(fèi)算法57共九十九頁提問(tíwèn)?如何畫判定樹,使得行李(xíngli)計(jì)算費(fèi)問題有16片樹葉?58共九十九頁6.3.6過程(guòchéng)設(shè)計(jì)語言(PDL)PDL也稱為偽碼,這是一個(gè)籠統(tǒng)的名稱,它是用正文形式表示數(shù)據(jù)和處理過程的設(shè)計(jì)(shèjì)工具。一般說來PDL是一種“混雜”語言,它使用一種語言(通常是某種自然語言)的詞匯,同時(shí)卻使用另一種語言(某種結(jié)構(gòu)化的程序設(shè)計(jì)語言)的語法。59共九十九頁6.3.6過程設(shè)計(jì)語言(PDL)——應(yīng)有(yīnɡyǒu)特點(diǎn)關(guān)鍵字的固定語法,它提供了結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說明和模塊化的特點(diǎn)。為了使結(jié)構(gòu)清晰和可讀性好,通常(tōngcháng)在所有可能嵌套使用的控制結(jié)構(gòu)的頭和尾都有關(guān)鍵字。自然語言的自由語法,它描述處理特點(diǎn)。數(shù)據(jù)說明的手段。應(yīng)該既包括簡單的數(shù)據(jù)結(jié)構(gòu),又包括復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。模塊定義和調(diào)用的技術(shù),應(yīng)該提供各種接口描述模式。60共九十九頁6.3.6過程設(shè)計(jì)(shèjì)語言(PDL)——優(yōu)點(diǎn)可以作為注釋直接插在源程序中間。

這樣做能促使維護(hù)人員在修改程序代碼的同時(shí)也相應(yīng)地修改PDL注釋,因此有助于保持文檔和程序的一致性,提高了文檔的質(zhì)量??梢允褂?shǐyòng)普通的正文編輯程序或文字處理系統(tǒng),很方便地完成PDL的書寫和編輯工作。已經(jīng)有自動(dòng)處理程序存在,而且可以自動(dòng)由PDL生成程序代碼。61共九十九頁6.3.6過程設(shè)計(jì)(shèjì)語言(PDL)——缺點(diǎn)不如圖形工具形象直觀;描述復(fù)雜的條件組合與動(dòng)作間的對應(yīng)關(guān)系時(shí),不如判定表清晰(qīngxī)簡單。62共九十九頁6.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)(shèjì)方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法就是用數(shù)據(jù)結(jié)構(gòu)作為程序設(shè)計(jì)的基礎(chǔ)(jīchǔ)。這種方法的最終目標(biāo)是得出對程序處理過程的描述,最適合于在詳細(xì)設(shè)計(jì)階段使用。

也就是說,在完成了軟件結(jié)構(gòu)設(shè)計(jì)之后,可以使用面向數(shù)據(jù)結(jié)構(gòu)的方法來設(shè)計(jì)每個(gè)模塊的處理過程。使用面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法,當(dāng)然首先需要分析確定數(shù)據(jù)結(jié)構(gòu),并且用適當(dāng)?shù)墓ぞ咔逦孛枋鰯?shù)據(jù)結(jié)構(gòu)。63共九十九頁6.4.1Jackson程序設(shè)計(jì)(chénɡxùshèjì)方法Jackson圖、改進(jìn)(gǎijìn)的Jackson圖——描述Jackson方法的工具Jackson方法64共九十九頁6.4.1Jackson圖——邏輯(luójí)數(shù)據(jù)結(jié)構(gòu)雖然程序中實(shí)際(shíjì)使用的數(shù)據(jù)結(jié)構(gòu)種類繁多,但是它們的數(shù)據(jù)元素彼此間的邏輯關(guān)系卻只有三類:順序結(jié)構(gòu)選擇結(jié)構(gòu)重復(fù)結(jié)構(gòu)可選結(jié)構(gòu)65共九十九頁6.4.1Jackson圖——順序(shùnxù)結(jié)構(gòu)順序(shùnxù)結(jié)構(gòu)的數(shù)據(jù)由一個(gè)或多個(gè)數(shù)據(jù)元素組成,每個(gè)元素按確定次序出現(xiàn)一次。A由B、C、D三個(gè)元素順序組成。66共九十九頁6.4.1Jackson圖——順序(shùnxù)結(jié)構(gòu)順序結(jié)構(gòu)(jiégòu)對應(yīng)的偽碼,其中‘seq’和‘end’是關(guān)鍵字:AseqBCDAend67共九十九頁6.4.1Jackson圖——選擇(xuǎnzé)結(jié)構(gòu)選擇結(jié)構(gòu)的數(shù)據(jù)包含兩個(gè)或多個(gè)數(shù)據(jù)元素,每次使用(shǐyòng)這個(gè)數(shù)據(jù)時(shí)按一定條件從這些數(shù)據(jù)元素中選擇一個(gè)。根據(jù)條件A是B或C或D中的某一個(gè)。68共九十九頁6.4.1Jackson圖——選擇(xuǎnzé)結(jié)構(gòu)選擇結(jié)構(gòu)對應(yīng)(duìyìng)的偽碼,其中‘select’、‘or’和‘end’是關(guān)鍵字,cond1、cond2和cond3分別是執(zhí)行B、C或D的條件:

Aselectcond1BAorcond2 CAorcond3DAend69共九十九頁6.4.1Jackson圖——重復(fù)(chóngfù)結(jié)構(gòu)重復(fù)結(jié)構(gòu)的數(shù)據(jù),根據(jù)使用時(shí)的條件由一個(gè)數(shù)據(jù)元素(yuánsù)出現(xiàn)零次或多次構(gòu)成。A由B出現(xiàn)N次(N≥0)組成或A由B循環(huán)組成,結(jié)束條件的編號是i。70共九十九頁6.4.1Jackson圖——重復(fù)(chóngfù)結(jié)構(gòu)重復(fù)結(jié)構(gòu)對應(yīng)的偽碼,其中(qízhōng)‘iter’、‘until’、‘while’和‘end’是關(guān)鍵字(重復(fù)結(jié)構(gòu)有until和while兩種形式),cond是條件:

Aiteruntil(或while)condBAend71共九十九頁6.4.1Jackson圖——可選結(jié)構(gòu)(jiégòu)A由元素(yuánsù)B或者出現(xiàn)或者不出現(xiàn)組成72共九十九頁6.4.1Jackson圖——優(yōu)點(diǎn)(yōudiǎn)

便于表示層次結(jié)構(gòu)(jiégòu),而且是對結(jié)構(gòu)(jiégòu)進(jìn)行自頂向下分解的有力工具;形象直觀可讀性好;既能表示數(shù)據(jù)結(jié)構(gòu)也能表示程序結(jié)構(gòu)。73共九十九頁6.4.1Jackson圖——與層次(céngcì)方框圖的比較Jackson圖實(shí)質(zhì)上是對層次方框圖(P92)的精化。但兩者含義很不相同:

層次圖中的一個(gè)方框通常代表一個(gè)模塊;Jackson圖即使在描繪程序結(jié)構(gòu)時(shí),一個(gè)方框也并不代表一個(gè)模塊,通常一個(gè)方框只代表幾個(gè)語句。

層次圖表現(xiàn)的是調(diào)用關(guān)系,通常一個(gè)模塊除了調(diào)用下級模塊外,還完成其他操作;Jackson圖表現(xiàn)的是組成(zǔchénɡ)關(guān)系,也就是說,一個(gè)方框中包括的操作僅僅由它下層框中的那些操作組成。74共九十九頁6.4.2Jackson方法(fāngfǎ)(1)Jackson結(jié)構(gòu)程序設(shè)計(jì)方法的五個(gè)步驟:(1)分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描繪這些數(shù)據(jù)結(jié)構(gòu)。(2)找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的數(shù)據(jù)單元。

所謂有對應(yīng)關(guān)系是指有直接的因果關(guān)系,在程序中可以同時(shí)處理的數(shù)據(jù)單元(對于重復(fù)出現(xiàn)的數(shù)據(jù)單元必須重復(fù)的次序和次數(shù)(cìshù)都相同才可能有對應(yīng)關(guān)系)。75共九十九頁6.4.2Jackson方法(fāngfǎ)(2)(3)用下述三條規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的Jackson圖:為每對有對應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們在數(shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個(gè)處理框(注意,如果(rúguǒ)這對數(shù)據(jù)單元在輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中所處的層次不同,則和它們對應(yīng)的處理框在程序結(jié)構(gòu)圖中所處的層次與它們之中在數(shù)據(jù)結(jié)構(gòu)圖中層次低的那個(gè)對應(yīng));根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框;根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框。

76共九十九頁6.4.2Jackson方法(fāngfǎ)(3)(4)列出所有操作和條件(包括分支條件和循環(huán)結(jié)束條件),并且把它們(tāmen)分配到程序結(jié)構(gòu)圖的適當(dāng)位置。(5)用偽碼表示程序。77共九十九頁6.4.2Jackson方法(fāngfǎ)——設(shè)計(jì)實(shí)例一個(gè)正文文件由若干個(gè)記錄組成,每個(gè)記錄是一個(gè)字符串。 要求統(tǒng)計(jì)每個(gè)記錄中空格字符的個(gè)數(shù),以及文件中空格字符的總個(gè)數(shù)。 要求的輸出(shūchū)數(shù)據(jù)格式是,每復(fù)制一行輸入字符串之后,另起一行印出這個(gè)字符串中的空格數(shù),最后印出文件中空格的總個(gè)數(shù)。78共九十九頁6.4.2Jackson方法(fāngfǎ)——設(shè)計(jì)實(shí)例用Jackson圖描繪的輸入/輸出(shūchū)數(shù)據(jù)結(jié)構(gòu)。79共九十九頁6.4.2Jackson方法——設(shè)計(jì)(shèjì)實(shí)例找有對應(yīng)關(guān)系的單元:經(jīng)過程序的處理由正文文件得到輸出表格。輸出數(shù)據(jù)(shùjù)總是通過對輸入數(shù)據(jù)(shùjù)的處理而得到的,因此在輸入/輸出數(shù)據(jù)(shùjù)結(jié)構(gòu)最高層次的兩個(gè)單元(在這個(gè)例子中是“正文文件”和“輸出表格”)總是有對應(yīng)關(guān)系的。這一對單元將和程序結(jié)構(gòu)圖中最頂層的方框(代表程序)相對應(yīng)。80共九十九頁6.4.2Jackson方法——設(shè)計(jì)(shèjì)實(shí)例找有對應(yīng)關(guān)系的單元:“字符串”和“串信息”。

每處理(chǔlǐ)輸入數(shù)據(jù)中一個(gè)“字符串”之后,就可以得到輸出數(shù)據(jù)中一個(gè)“串信息”,它們都是重復(fù)出現(xiàn)的數(shù)據(jù)單元,而且出現(xiàn)次序和重復(fù)次數(shù)都完全相同。 因此,“字符串”和“串信息”也是一對有對應(yīng)關(guān)系的單元

提問:圖6.12(a)中的“字符串”和(b)中的“字符串”名字相同,它們是不是對應(yīng)關(guān)系?81共九十九頁6.4.2Jackson方法——設(shè)計(jì)(shèjì)實(shí)例從數(shù)據(jù)結(jié)構(gòu)(shùjùjiéɡòu)圖導(dǎo)出程序結(jié)構(gòu)圖82共九十九頁6.4.2Jackson方法——設(shè)計(jì)(shèjì)實(shí)例從數(shù)據(jù)結(jié)構(gòu)圖導(dǎo)出程序結(jié)構(gòu)圖:在描繪程序結(jié)構(gòu)的Jackson圖的最頂層畫一個(gè)處理(chǔlǐ)框“統(tǒng)計(jì)空格”,它與“正文文件”和“輸出表格”這對最頂層的數(shù)據(jù)單元相對應(yīng)。83共九十九頁6.4.2Jackson方法(fāngfǎ)——設(shè)計(jì)實(shí)例 b.接下來還不能立即畫與另一對數(shù)據(jù)單元(“字符串”和“串信息”)相對應(yīng)的處理(chǔlǐ)框。

在輸出數(shù)據(jù)結(jié)構(gòu)中“串信息”的上層還有“表格體”和“空格總數(shù)”兩個(gè)數(shù)據(jù)單元,在程序結(jié)構(gòu)圖的第二層應(yīng)該有與這兩個(gè)單元對應(yīng)的處理框——“程序體”和“總數(shù)”。

在程序結(jié)構(gòu)圖的第三層才是與“字符串”和“串信息”相對應(yīng)的處理框——“處理字符串”。84共九十九頁6.4.2Jackson方法(fāngfǎ)——設(shè)計(jì)實(shí)例

在程序結(jié)構(gòu)圖的第四層似乎應(yīng)該是和“字符串”、“字符”及“空格數(shù)”等數(shù)據(jù)單元對應(yīng)的處理框“印字符串”、“分析字符”及“印空格數(shù)”,這三個(gè)處理是順序執(zhí)行的。

但是,“字符”是重復(fù)出現(xiàn)的數(shù)據(jù)單元,因此“分析字符”也應(yīng)該是重復(fù)執(zhí)行的處理。

改進(jìn)的Jackson圖規(guī)定順序執(zhí)行的處理中不允許混有重復(fù)執(zhí)行或選擇執(zhí)行的處理,所以在“分析字符”這個(gè)(zhège)處理框上面又增加了“分析字符串”處理框。85共九十九頁6.4.2Jackson方法(fāngfǎ)——設(shè)計(jì)實(shí)例列出所有操作和條件,并且把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。(1)停止 (2)打開文件(3)關(guān)閉文件 (4)印出字符串(5)印出空格數(shù)目 (6)印出空格總數(shù)(7)sum:=sum+1 //sum是保存空格個(gè)數(shù)的變量(8)totalsum:=totalsum+sum//totalsum保存空格總數(shù)(9)讀入字符串 (10)sum:=0(11)totalsum:=0 (12)pointer:=//指示當(dāng)前(dāngqián)分析的字符在字符串中的位置(13)pointer:=pointer+1I(1)文件結(jié)束、 I(2)字符串結(jié)束S(3)字符是空格86共九十九頁6.4.2Jackson方法(fāngfǎ)——設(shè)計(jì)實(shí)例經(jīng)過簡單分析(fēnxī)不難把這些操作和條件分配到程序結(jié)構(gòu)圖的適當(dāng)位置。87共九十九頁6.4.2Jackson方法——設(shè)計(jì)(shèjì)實(shí)例用偽碼表示程序處理過程。統(tǒng)計(jì)空格

seq打開(dǎkāi)文件讀入字符串totalsum:=0程序體

iteruntil

文件結(jié)束處理字符串

seq印字符串

seq印出字符串印字符串

endsum:=0...統(tǒng)計(jì)空格

seq88共九十九頁6.4.2Jackson方法(fāngfǎ)——例子高考后將考生的基本情況文件(簡稱(jiǎnchēng)考生基本情況文件)和考生高考成績文件(簡稱考分文件)合并成一個(gè)新文件(簡稱考生新文件)??忌厩闆r文件和考分文件都是由考生記錄組成的。為簡便起見,考生基本情況文件中的考生記錄內(nèi)容包括:準(zhǔn)考證號、姓名、通訊地址。考分文件中的考生記錄內(nèi)容包括:準(zhǔn)考證號和各門考分。合并后的考生新文件自然也是由考生記錄組成,內(nèi)容包括:準(zhǔn)考證號、姓名、通訊地址和各門考分。使用Jackson設(shè)計(jì)方法,把操作和條件分配到程序結(jié)構(gòu)圖的相應(yīng)位置。89共九十九頁90()共九十九頁91910111514

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論