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

下載本文檔

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

文檔簡(jiǎn)介

軟件工程教學(xué)課件第5章詳細(xì)設(shè)計(jì)5.1.1詳細(xì)設(shè)計(jì)的任務(wù)詳細(xì)設(shè)計(jì)的任務(wù)是為每一個(gè)構(gòu)件確定使用的算法和數(shù)據(jù)結(jié)構(gòu)。

構(gòu)件(模塊)描述。它描述構(gòu)件(模塊)的功能,以及需要解決的問題,這個(gè)構(gòu)件(模塊)在什么時(shí)候可以被調(diào)用,為什么需要這個(gè)構(gòu)件(模塊)。

算法描述。確定構(gòu)件(模塊)存在的必要性之后,就要確定實(shí)現(xiàn)這個(gè)構(gòu)件(模塊)的算法,描述構(gòu)件(模塊)中的每個(gè)算法,包括公式、邊界和特殊條件,甚至包括參考資料、引用的出入等。

數(shù)據(jù)描述。詳細(xì)設(shè)計(jì)應(yīng)該描述構(gòu)件(模塊)內(nèi)部的數(shù)據(jù)流。對(duì)于面向?qū)ο蟮臉?gòu)件(模塊),主要描述對(duì)象之間的關(guān)系。具體地講包括:1、算法設(shè)計(jì)。用圖像、表格、語言等工具將每個(gè)模塊處理過程的詳細(xì)算法描述出來,確定為實(shí)現(xiàn)系統(tǒng)每個(gè)模塊功能需求所使用的算法和模塊間的控制方式(性能設(shè)計(jì))。算法的性能設(shè)計(jì)評(píng)測(cè)主要指標(biāo)包括周轉(zhuǎn)時(shí)間、響應(yīng)時(shí)間、吞吐量和精度四個(gè)方面。2、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。結(jié)合算法設(shè)計(jì),確定詳細(xì)的數(shù)據(jù)結(jié)構(gòu)。對(duì)需求分析、概要設(shè)計(jì)確定的概念性的數(shù)據(jù)類型進(jìn)行確切的定義。3、物理設(shè)計(jì)。對(duì)數(shù)據(jù)庫進(jìn)行物理設(shè)計(jì),確定數(shù)據(jù)庫的物理結(jié)構(gòu)。分析軟件各部分之間的聯(lián)系,確認(rèn)接口,復(fù)審詳細(xì)說明書。4、其他設(shè)計(jì)。根據(jù)軟件系統(tǒng)的類型,有可能進(jìn)行為提高數(shù)據(jù)的輸入、分類、存儲(chǔ)及檢索等操作效率,節(jié)省內(nèi)存空間、對(duì)數(shù)據(jù)庫中某些數(shù)據(jù)項(xiàng)值進(jìn)行的代碼設(shè)計(jì);輸入/輸出格式設(shè)計(jì);實(shí)時(shí)系統(tǒng)人機(jī)對(duì)話設(shè)計(jì)上的方式、內(nèi)容及格式的具體設(shè)計(jì)等。5.1.1詳細(xì)設(shè)計(jì)的任務(wù)5.1.1詳細(xì)設(shè)計(jì)的任務(wù)5、編寫詳細(xì)的說明書。詳細(xì)設(shè)計(jì)說明書主要有下列主要內(nèi)容:(1)引言:包括編寫目的、背景、定義、參考資料。(2)程序系統(tǒng)的組織結(jié)構(gòu)。(3)程序1(標(biāo)識(shí)符)——程序n(標(biāo)識(shí)符)設(shè)計(jì)說明:包括功能、性能、輸入、輸出、算法、流程邏輯、接口等。6、評(píng)審。對(duì)處理過程的算法和數(shù)據(jù)庫的物理結(jié)構(gòu)進(jìn)行評(píng)審,為編碼階段做準(zhǔn)備。5.1.2詳細(xì)設(shè)計(jì)的步驟第一步,設(shè)計(jì)領(lǐng)域類和結(jié)構(gòu)類中相關(guān)的類和模式。第二步,細(xì)化模型以確保擁有一個(gè)完整的設(shè)計(jì),并為每個(gè)類指定必需的屬性類型和操作。第三步,使用詳細(xì)設(shè)計(jì)描述工具(如程序流圖、N-S圖和PAD圖等)為每個(gè)類的每一個(gè)需求指定一個(gè)最優(yōu)的方法。第四步,擬定單元測(cè)試計(jì)劃,確定單元測(cè)試的范圍和優(yōu)先級(jí)。第五步,評(píng)審類、方法的屬性(名稱、返回值和參數(shù)類型)以及多個(gè)模型之間的類和方法的關(guān)系,記錄數(shù)據(jù)錯(cuò)誤的類型及嚴(yán)重性。5.1.3結(jié)構(gòu)化的詳細(xì)設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)定義:結(jié)構(gòu)程序設(shè)計(jì)是一種設(shè)計(jì)程序的技術(shù),它采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu)。5.1.3結(jié)構(gòu)化的詳細(xì)設(shè)計(jì)方法使用結(jié)構(gòu)程序設(shè)計(jì)技術(shù)主要有下述一些好處:(1)自頂向下逐步求精的方法符合人類解決復(fù)雜問題的普遍規(guī)律,因此可以顯著提高軟件開發(fā)工程的成功率和生產(chǎn)率。(2)用先全局后局部、先整體后細(xì)節(jié)、先抽象后具體的逐步求精過程開發(fā)出的程序有清晰的層次結(jié)構(gòu),因此容易閱讀和理解。(3)不使用GOTO語句僅使用單入口單出口的控制結(jié)構(gòu),使得程序的靜態(tài)結(jié)構(gòu)和它的動(dòng)態(tài)執(zhí)行情況比較一致。因此,程序容易閱讀和理解,開發(fā)時(shí)也比較容易保證程序的正確性,即使出現(xiàn)錯(cuò)誤也比較容易診斷和糾正。(4)控制結(jié)構(gòu)有確定的邏輯模式,編寫程序代碼只限于使用很少幾種直截了當(dāng)?shù)姆绞?,因此源程序清晰流暢,易讀易懂而且容易測(cè)試。(5)程序清晰和模塊化使得在修改和重新設(shè)計(jì)一個(gè)軟件時(shí)可以重用的代碼量最大。(6)程序的邏輯結(jié)構(gòu)清晰,有利于程序正確性證明。5.2詳細(xì)設(shè)計(jì)工具圖形描述工具又稱為詳細(xì)設(shè)計(jì)工具,目前流行的工具可以分為三類: 圖形工具:如程序流程圖、盒圖、PAD圖、序列圖、數(shù)據(jù)流圖。 表格工具:如判定表及判定樹。 語言工具:如程序設(shè)計(jì)語言PDL。5.2.1程序流程圖經(jīng)過改進(jìn)的程序流程圖標(biāo)記符號(hào):5.2.1程序流程圖【例5.1】對(duì)某課程成績(jī)統(tǒng)計(jì)各分?jǐn)?shù)段人數(shù),請(qǐng)用流程圖表示。5.2.1程序流程圖 基本控制結(jié)構(gòu)有順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)又包括先判定型循環(huán)和后判定型循環(huán);選擇結(jié)構(gòu)中的case語句可實(shí)現(xiàn)多情況的選擇。5.2.2盒圖(Nassi-Shneiderman圖) 盒圖也稱為N-S圖,它是為了滿足結(jié)構(gòu)化程序設(shè)計(jì)對(duì)算法設(shè)計(jì)工具的需要,克服傳統(tǒng)設(shè)計(jì)工具的缺點(diǎn),特別是為取消流程圖的隨意轉(zhuǎn)向功能.N-S圖表示基本控制結(jié)構(gòu)5.2.3PAD圖PAD是問題分析圖(ProblemAnalysisDiagram)基于Pascal的控制結(jié)構(gòu),用二維樹圖的形式描述程序的邏輯。

PAD基本控制結(jié)構(gòu)圖5.2.3PAD圖 PAD的執(zhí)行順序是從上到下,從左到右,即從最左主干線的上端的節(jié)點(diǎn)開始,自上而下依次執(zhí)行。沒遇到判斷或循環(huán),就自左而右進(jìn)入下一層,從表示下一層的縱線上端開始執(zhí)行,指導(dǎo)該縱線下端,再返回上一層的縱線的轉(zhuǎn)入處。5.2.3PAD圖【例5.3】:根據(jù)圖5-5所示流程圖畫出相應(yīng)的PAD圖。如圖5-11所示。5.2.4判定表 判定表是算法設(shè)計(jì)輔助工具,專門用于對(duì)復(fù)雜的條件組合關(guān)系及其對(duì)應(yīng)的動(dòng)作行為等給出更加清晰的說明,能夠簡(jiǎn)潔而又無歧義地描述涉及條件判斷的處理規(guī)則,并能夠配合程序流程圖、N-S圖、PAD圖或PDL偽碼等進(jìn)行程序算法描述。 判定表一般由四個(gè)部分組成。其中,表的左上部分列出所有條件,表的左下部分是所有可能出現(xiàn)的動(dòng)作,表的右上部分用于表示各種可能的條件組合,表的右下部分則是和每種條件組合相對(duì)應(yīng)的動(dòng)作。這樣一來,判定表的右半部分的每一列實(shí)質(zhì)上就構(gòu)成了一條規(guī)則,它規(guī)定了與特定的條件組合相對(duì)應(yīng)的動(dòng)作。圖5-12判定表結(jié)構(gòu)示意圖5.2.4判定表列出該過程執(zhí)行時(shí)的縮影條件(可判定方式)。把特定的條件組合與特定的動(dòng)作聯(lián)系起來,去掉不可能的條件組合,開發(fā)每一個(gè)可能的條件組合。根據(jù)第2步表明每個(gè)條件發(fā)生的動(dòng)作,定義處理規(guī)則。5.2.4判定表【例5.4】某“訂貨單處理程序”的處理邏輯描述為:“如果訂貨金額不足500元且未過期,則向客戶發(fā)出批準(zhǔn)單和提貨單,已過期的,什么也不發(fā);如果訂貨金額超過500元但不足1000元,則發(fā)出批準(zhǔn)的和提貨單,對(duì)已過期的,還要發(fā)過期通知單;如果訂貨金額超過1000元,不論是否過期,都要發(fā)出批準(zhǔn)單和提貨單?!笔褂门卸ū肀硎境鲈撨壿?。如表5-1所示.5.2.5判定樹判定樹時(shí)值上是判定表的一種變形,他們只有形式上的差別,本質(zhì)上是一樣的。判定樹的優(yōu)點(diǎn)是形式簡(jiǎn)單、直觀,易于掌握和使用;主要缺點(diǎn)是容易遺漏判斷條件。這個(gè)缺點(diǎn)可以通過判定表驗(yàn)證來克服。判定表的缺點(diǎn)是簡(jiǎn)潔性差于判定樹,重復(fù)多。另外,在組合條件很復(fù)雜的情況下,判定樹的節(jié)點(diǎn)會(huì)有較多的分支,從而使判定樹的直觀性和易讀性有所下降。用戶可根據(jù)自己的習(xí)慣選擇使用判定表或判定樹。他們并不適合作為一種通用的設(shè)計(jì)工具,通常將之用于輔助測(cè)試。5.2.5判定樹【例5.5】用判定樹表示例5.4的方法。5.2.6過程設(shè)計(jì)語言PDL PDL(ProcessDesignLanguage)語言也稱為偽碼,或過程設(shè)計(jì)語言,它一般是某種高級(jí)語言稍加改造后的產(chǎn)物。PDL有如下特點(diǎn):使用一些固定關(guān)鍵詞的語法結(jié)構(gòu)表達(dá)了結(jié)構(gòu)化構(gòu)造、數(shù)據(jù)描述、模塊的特征。自然語言的自由語法描述了處理過程。數(shù)據(jù)聲明包括簡(jiǎn)單的和復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。使用支持各種模式的接口描述的子程序定義或者調(diào)用技術(shù)。5.2.6過程設(shè)計(jì)語言PDL【例5.6】文章中單詞拼寫檢查的使用PROCEDURESPELLCHECKISBEGINSplitdocumentintosinglewords——把整個(gè)文檔分離成單詞Lookupwordsindictionary——把字典中查這些單詞Displaywordswhicharenotindictionary——顯示字典中查不到的單詞ENDSPELLCHECK5.2.7詳細(xì)設(shè)計(jì)工具的選擇 衡量一個(gè)設(shè)計(jì)工具好壞的一般準(zhǔn)則是看其所產(chǎn)生的過程描述是否易于理解、復(fù)審和維護(hù),過程描述能否自然的轉(zhuǎn)換為代碼,并保證設(shè)計(jì)與代碼完全一致。(1)模塊化。支持模塊化軟件的開發(fā),并提供描述接口的機(jī)制(例如直接表示小程序和塊結(jié)構(gòu))。(2)整體簡(jiǎn)潔性:設(shè)計(jì)表示相對(duì)易學(xué)、易用、易讀。(3)便于編輯:支持后續(xù)設(shè)計(jì)、測(cè)試乃至維護(hù)階段對(duì)設(shè)計(jì)進(jìn)行的修改。(4)機(jī)器可讀性:計(jì)算機(jī)輔助軟件工程(CASE)環(huán)境已經(jīng)被廣泛接受,一種設(shè)計(jì)表示法,若能直接輸入并被CASE工具識(shí)別將帶來極大便利。(5)可維護(hù)性:過程設(shè)計(jì)表示應(yīng)支持各種軟件配置項(xiàng)的維護(hù)。5.2.7詳細(xì)設(shè)計(jì)工具的選擇(6)強(qiáng)制結(jié)構(gòu)化:過程設(shè)計(jì)工具應(yīng)能強(qiáng)制設(shè)計(jì)人員采用結(jié)構(gòu)化構(gòu)建,有助于產(chǎn)生好的設(shè)計(jì)。(7)自動(dòng)產(chǎn)生報(bào)告:設(shè)計(jì)人員通過分析詳細(xì)設(shè)計(jì)的結(jié)果往往能突發(fā)靈感,改進(jìn)設(shè)計(jì)。若存在自動(dòng)處理器,能產(chǎn)生有關(guān)設(shè)計(jì)的分析報(bào)告,必將增強(qiáng)設(shè)計(jì)人員在這方面的能力。(8)數(shù)據(jù)表示:詳細(xì)設(shè)計(jì)應(yīng)具備表示局部與全局?jǐn)?shù)據(jù)的能力。(9)邏輯驗(yàn)證:能自動(dòng)驗(yàn)證設(shè)計(jì)邏輯的正確性是軟件測(cè)試追求的最高目標(biāo),設(shè)計(jì)表示愈易于邏輯驗(yàn)證,其可測(cè)試性越強(qiáng)。(10)可編碼能力:一種設(shè)計(jì)表示,若能自然的轉(zhuǎn)換為代碼,則能減少開發(fā)費(fèi)用,降低出錯(cuò)率。5.2.8詳細(xì)設(shè)計(jì)規(guī)格說明1.引言1.1編寫目的闡明編寫本詳細(xì)設(shè)計(jì)說明書的目的,指出讀者對(duì)象。1.2項(xiàng)目背景列出本項(xiàng)目的委托單位、開發(fā)單位和主管部門,說明該軟件系統(tǒng)與其他系統(tǒng)的關(guān)系。1.3定義列出本文檔中所用到的專門術(shù)語的定義和縮寫詞的原意。1.4參考資料列出有關(guān)資料的作者、標(biāo)題、編號(hào)、發(fā)表日期、出版單位或資料來源。包括本項(xiàng)目經(jīng)核準(zhǔn)的計(jì)劃任務(wù)書、合同或上級(jí)機(jī)關(guān)的批文,項(xiàng)目開發(fā)計(jì)劃,需求規(guī)格說明書,概要設(shè)計(jì)說明書,數(shù)據(jù)庫設(shè)計(jì)說明書,本文檔中所引用的資料、采用的標(biāo)準(zhǔn)和規(guī)范。5.2.8詳細(xì)設(shè)計(jì)規(guī)格說明2.總體設(shè)計(jì)概述2.1需求概述給出關(guān)于系統(tǒng)需求方面的必要說明。2.2軟件結(jié)構(gòu)可使用軟件結(jié)構(gòu)圖形式給出系統(tǒng)概要設(shè)計(jì)中關(guān)于軟件模塊結(jié)構(gòu)及相互關(guān)系的說明。3.程序描述需要逐個(gè)模塊給出以下說明。3.1功能說明該模塊的功能設(shè)計(jì)。3.2性能說明該模塊的性能設(shè)計(jì)。

5.2.8詳細(xì)設(shè)計(jì)規(guī)格說明3.3輸入項(xiàng)目說明該模塊的輸入?yún)?shù)的名稱、數(shù)據(jù)類型、數(shù)目、先后順序。3.4輸出項(xiàng)目說明該模塊的輸出參數(shù)的名稱、數(shù)據(jù)類型、數(shù)目、先后順序。3.5算法說明該模塊所選用的算法和流程。3.6程序邏輯詳細(xì)描述模塊實(shí)現(xiàn)的算法,可采用標(biāo)準(zhǔn)流程圖、PDL語言、NS圖、PAD圖、判定表等描述算法。5.2.8詳細(xì)設(shè)計(jì)規(guī)格說明3.7接口使用圖表反映本模塊的上級(jí)模塊、下級(jí)模塊,說明模塊之間的調(diào)用關(guān)系、參數(shù)賦值,以及與本模塊有關(guān)的外部數(shù)據(jù)源等。3.8存儲(chǔ)分配說明該模塊在設(shè)計(jì)時(shí)和運(yùn)行時(shí)的物理的和邏輯的絕對(duì)位置和相對(duì)位置。3.9限制條件說明該模塊正常工作的必需條件以及該模塊功能的適用范圍。3.10測(cè)試要點(diǎn)給出測(cè)試本模塊的主要測(cè)試要求,如對(duì)測(cè)試技術(shù)、輸入數(shù)據(jù)、預(yù)期結(jié)果的規(guī)定。5.3面向數(shù)據(jù)結(jié)構(gòu)的程序設(shè)計(jì)方法 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)(datastructured-orinteddesign)是根據(jù)問題的數(shù)據(jù)結(jié)構(gòu)定義一組映射,把問題的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為問題解的程序結(jié)構(gòu)。面向數(shù)據(jù)流的設(shè)計(jì)來源于程序的模塊化和功能分解的概念,而面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì),則著重于問題的數(shù)據(jù)結(jié)構(gòu),把程序結(jié)構(gòu)設(shè)計(jì)成語問題的數(shù)據(jù)結(jié)構(gòu)一樣,不強(qiáng)調(diào)模塊定義。這種程序結(jié)構(gòu)容易理解,也容易修改。5.3面向數(shù)據(jù)結(jié)構(gòu)的程序設(shè)計(jì)方法Jackson結(jié)構(gòu)化編程(JacksonStructuredProgramming,JSP)是一種廣泛應(yīng)用于軟件設(shè)計(jì)的方法。Jackson認(rèn)為,類似于輸入數(shù)據(jù)和輸出數(shù)據(jù)的結(jié)構(gòu)將能保證設(shè)計(jì)質(zhì)量。1989年,Jackson又在這種JSP的基礎(chǔ)上擴(kuò)展了一種Jackson系統(tǒng)開發(fā)方法(JacksonSystemDevelopment,JSD)這種方法集中確定信息實(shí)體及其活動(dòng)。在某些方面,它與面向?qū)ο笤O(shè)計(jì)方法十分相似。Jackson強(qiáng)調(diào)實(shí)用性,并開發(fā)了一些吧數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為程序結(jié)構(gòu)的實(shí)用技術(shù)。程序邏輯構(gòu)造(LogicalConstructionofPrograms,LCP)由Warnier于1974年開發(fā),是一種更加嚴(yán)格的軟件設(shè)計(jì)方法。這種方法是建立在數(shù)據(jù)結(jié)構(gòu)和過程結(jié)構(gòu)關(guān)系上的,Warnier開發(fā)了一組技術(shù),用來把I/O數(shù)據(jù)結(jié)構(gòu)映射為軟件的詳細(xì)過程表達(dá)式。數(shù)據(jù)結(jié)構(gòu)化系統(tǒng)開發(fā)(DataStructuredSystemDevelopment,DSSD)也叫做Warnier-Orr方法(1981年,1983年),是一種LCP的擴(kuò)展,除了設(shè)計(jì)能力以外,還加強(qiáng)了分析能力。這種方法由Warnier所進(jìn)行的早期信息域分析工作發(fā)展而來。Warnier開發(fā)了用三種結(jié)構(gòu)表示信息層次的符號(hào)表示,并用實(shí)例說沒了軟件結(jié)構(gòu)可以由數(shù)據(jù)結(jié)構(gòu)直接導(dǎo)出。Orr擴(kuò)展了Warnier的工作,該工作包含了在多種意義上更加廣泛的信息領(lǐng)域,并已發(fā)展成數(shù)據(jù)結(jié)構(gòu)化系統(tǒng)開發(fā)(DSSD)。DSSD研究信息流、功能特征和數(shù)據(jù)分層等。還有一種技術(shù)叫做軟件邏輯構(gòu)造(LogicalConstructionofSoftware,LCS)這種技術(shù)室一種數(shù)據(jù)流和面向?qū)ο髷?shù)據(jù)結(jié)構(gòu)綜合的設(shè)計(jì)方法。該方法的開發(fā)者認(rèn)為,如果把軟件看做是一個(gè)數(shù)據(jù)集合和數(shù)據(jù)變換系統(tǒng),就可以明確地描述軟件的邏輯設(shè)計(jì)。5.3.1Jackson程序設(shè)計(jì)方法Jackson程序設(shè)計(jì)方法的基本設(shè)計(jì)途徑是通過分析輸入數(shù)據(jù)與輸出數(shù)據(jù)的層次結(jié)構(gòu),由此對(duì)程序算法的層次結(jié)構(gòu)進(jìn)行推論。圖5-14Jackson基本控制結(jié)構(gòu)圖5.3.1Jackson程序設(shè)計(jì)方法Jackson程序設(shè)計(jì)步驟:(1)分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson數(shù)據(jù)結(jié)構(gòu)圖描繪這些數(shù)據(jù)。(2)找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有直接對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元。這其中的數(shù)據(jù)直接對(duì)應(yīng)關(guān)系是指輸出數(shù)據(jù)與輸入數(shù)據(jù)有直接的因果關(guān)系,在程序中可以同時(shí)處理的數(shù)據(jù)單元(對(duì)于重復(fù)出現(xiàn)的數(shù)據(jù)單元必須重復(fù)的次序和次數(shù)都相同才可能有對(duì)應(yīng)關(guān)系)。5.3.1Jackson程序設(shè)計(jì)方法(3)用下述三條規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖中導(dǎo)出描繪程序結(jié)構(gòu)的Jackson圖:第一,為每對(duì)有直接對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們?cè)跀?shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次上畫一個(gè)處理框。其中,如果這對(duì)數(shù)據(jù)單元在輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中所處的層次不同,則和它們對(duì)應(yīng)的處理框在程序結(jié)構(gòu)圖中所處的層次與它們之中在數(shù)據(jù)結(jié)構(gòu)圖中層次低的那個(gè)對(duì)應(yīng)。第二,根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對(duì)應(yīng)的處理框;第三,根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對(duì)應(yīng)的處理框。5.3.1Jackson程序設(shè)計(jì)方法(4)列出所有操作和條件,包括分支條件和循環(huán)結(jié)束條件,并且把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置上去。(5)用偽碼表示程序。其使用的偽碼和Jackson圖是完全對(duì)應(yīng)的,下面是和三種基本結(jié)構(gòu)對(duì)應(yīng)的偽碼。(a)順序結(jié)構(gòu)AseqBCDAend(b)選擇結(jié)構(gòu)AselectcondlBAorcond2CAorcond3DAend(c)重復(fù)結(jié)構(gòu)Aiteruntil(或while)condBAend5.3.1Jackson程序設(shè)計(jì)方法【例5.7】一個(gè)正文文件由若干記錄組成,每個(gè)記錄是一個(gè)字符串。如:Record1:Howmanystagesarethereinthetraditionalsoftwaredevelopmentmodel?Record2:Afterenteringtheroom,walktothepersonsittingnearesttoyouandgreethim/herwitha“highfive”.Record3:Whatareencapsulatedintoanobject?Record4:Whatdiagramisthefollowingdiagram?Simplydescribethemeaningofit.要求: 1)設(shè)計(jì)程序統(tǒng)計(jì)每個(gè)記錄中空格字符的個(gè)數(shù),輸出數(shù)據(jù)的格式是,每讀入一個(gè)記錄(字符串)之后,另起一行打印出這個(gè)字符串及其空格數(shù); 2)最后打印出文件中空格的總個(gè)數(shù)。5.3.1Jackson程序設(shè)計(jì)方法解:對(duì)于這個(gè)簡(jiǎn)單例子而言,輸入和輸出數(shù)據(jù)的結(jié)構(gòu)很容易確定。圖5-15是用Jackson圖描繪的輸入/輸出數(shù)據(jù)結(jié)構(gòu)。5.3.1Jackson程序設(shè)計(jì)方法描繪統(tǒng)計(jì)空格程序結(jié)構(gòu)的Jackson圖5.3.1Jackson程序設(shè)計(jì)方法 Jackson程序設(shè)計(jì)方法的第四步是列出所有操作和條件,并且把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。首先,列出統(tǒng)計(jì)空格個(gè)數(shù)需要的全部操作和條件如下:(1)停止(2)打開文件(3)關(guān)閉文件(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+1I(1)文件結(jié)束I(2)字符串結(jié)束S(3)字符是空格 在上面的操作表中,sum是保存空格個(gè)數(shù)的變量,totalsum是保存空格總數(shù)的變量,而pointer是用來指示當(dāng)前分析的字符在字符串中的位置的變量。5.3.1Jackson程序設(shè)計(jì)方法把這些操作和條件分配到程序結(jié)構(gòu)圖的適當(dāng)位置5.3.1Jackson程序設(shè)計(jì)方法Jackson方法的最后一步是用偽碼表示程序處理過程。因?yàn)镴ackson使用的偽碼和Jackson圖之間存在簡(jiǎn)單的對(duì)應(yīng)關(guān)系。5.3.2Warnier程序設(shè)計(jì)方法Warnier圖,先由法國(guó)Jean-DominiqueWarnier發(fā)明,后經(jīng)Kenneth-Orr把它用在結(jié)構(gòu)化設(shè)計(jì)方法中,所以也叫Warnier-Orr圖。Warnier圖也定義了三種基本結(jié)構(gòu):5.3.2Warnier程序設(shè)計(jì)方法Orr對(duì)Warnier圖進(jìn)行了擴(kuò)充,除了能表示三種基本結(jié)構(gòu)外,還用如圖5-19所示形式表示并發(fā)和遞歸。5.3.2Warnier程序設(shè)計(jì)方法Warnier程序設(shè)計(jì)方法的最終目標(biāo)同樣是得出對(duì)程序處理過程的詳細(xì)描述。第一步,分析和確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Warnier圖描繪這些數(shù)據(jù)結(jié)構(gòu);第二步,主要依據(jù)輸入數(shù)據(jù)結(jié)構(gòu)導(dǎo)出程序結(jié)構(gòu),并用Warnier圖描繪程序的處理層次;第三步,畫出程序流程圖并自上而下依次給每個(gè)處理框編序號(hào);第四步,分類寫出偽碼指令,Warnier定義了下列五類指令: (1)輸入和輸入準(zhǔn)備。(2)分支和分支準(zhǔn)備。 (3)計(jì)算。(4)輸出和輸出準(zhǔn)備。 (5)子程序調(diào)用。第五步,把前一步中分類寫出的指令按序號(hào)排序,從而得出描述處理過程的偽碼。5.3.2Warnier程序設(shè)計(jì)方法【例5.8】假設(shè)需要設(shè)計(jì)一個(gè)系統(tǒng)用來定期產(chǎn)生有關(guān)顧客賬目的報(bào)表。已知的輸入文件中每個(gè)顧客有一個(gè)頭記錄,后接若干個(gè)活動(dòng)(即,事務(wù))記錄,也就是說,每個(gè)顧客可能有0個(gè)、1個(gè)或多個(gè)活動(dòng)(事務(wù))。輸出報(bào)表和輸入記錄的格式5.3.2Warnier程序設(shè)計(jì)方法 根據(jù)輸出報(bào)表和輸入記錄的格式不難得出輸出數(shù)據(jù)和輸入數(shù)據(jù)的邏輯結(jié)構(gòu),圖5-21用Warnier圖表示這些數(shù)據(jù)的結(jié)構(gòu)。圖中第4層和笫5層在一定條件下才出現(xiàn),也就是說,僅當(dāng)一個(gè)顧客有事務(wù)活動(dòng)時(shí)(支出或存入時(shí))才出現(xiàn)第4層和第5層。輸入數(shù)據(jù)和輸出數(shù)據(jù)的結(jié)構(gòu)5.3.2Warnier程序設(shè)計(jì)方法處理層次5.3.2Warnier程序設(shè)計(jì)方法 Warnier方法的第四步是分類寫出偽碼指令??紤]圖5-23中每個(gè)處理框應(yīng)該做的各類動(dòng)作并用偽碼描述這些動(dòng)作,結(jié)果得到下面的分類指令表。程序流程圖5.3.2Warnier程序設(shè)計(jì)方法分支指令表:(轉(zhuǎn)至)010-若文件沒結(jié)束()030020-140040-若讀出的顧客號(hào)=訪問的顧客號(hào)060050-120070-若有支出代碼090080-100100-若讀出的顧客號(hào)=訪問的顧客號(hào)070120-若文件沒結(jié)束()040分支準(zhǔn)備:040-顧客號(hào)送到訪問顧客號(hào)5.3.2Warnier程序設(shè)計(jì)方法計(jì)算:040-舊余額送到工作區(qū)060-清除支出總數(shù)060-清除存入總數(shù)080-把存人數(shù)加到存入總數(shù)中090-把支出數(shù)加到支出總數(shù)中110-從工作區(qū)中減去支出總數(shù)110-把存入總數(shù)加到工作區(qū)中輸入:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論