計算機軟件與應用D第四章詳細設計_第1頁
計算機軟件與應用D第四章詳細設計_第2頁
計算機軟件與應用D第四章詳細設計_第3頁
計算機軟件與應用D第四章詳細設計_第4頁
計算機軟件與應用D第四章詳細設計_第5頁
已閱讀5頁,還剩42頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

計算機軟件與應用D第四章詳細設計概述概要設計完成了程序的總體結構設計,規定了各個模塊的功能及各模塊之間的相互聯系,再進一步,要考慮每個模塊內部的算法問題。從軟件開發的工程化觀點來看,在使用程序設計語言編寫程序以前,需要對算法的邏輯關系進行分析,并給出清晰的表達,使之成為編碼的依據。這一步工作不僅編碼工作容易多了,而且給軟件的維護帶來了很多的方便。在理想的情況下,詳細設計步驟需要的過程描述應當用自然語言來表達。但是,詳細設計必須是無歧義地描述過程的細節,而自然語言卻不具有單一性。必須使用更有約束性的方式來表示過程細節。在概要設計期間,每個模塊被定義為軟件總體結構的組成部分,用自然語言編寫結構圖和接口說明、模塊的處理說明和性能說明。為了把這些簡明的、無歧義的一般處理步驟的描述轉換為準確的、結構過程的描述,就需要使用設計描述工具。??????

結構化構造過程規格說明的工具稱之為詳細設計工具,可分為:圖形工具:把過程的細節表示成一個“圖”的組成部分,在這個圖上,邏輯構造用具體的圖形來表示。列表工具:用一個表來表示過程的細節,表列出了各種操作及相應的條件。語言工具:用類語言來表示過程的細節,類語言很接近編程語言。不管屬于哪一類,一種設計工具應表現出控制的流程、處理功能、數據的組織及實現的細節。詳細設計的基礎在60年代初期開始奠定和充實的。60年代后期,提出了一組邏輯構造,利用這組邏輯構造可以構成任何程序。這組構造強調“維持一定的功能域”。也就是說,每個構造有一個預定的邏輯結構,每個構造都從頂部進入并從底部離去。順序構造是實現任何一個算法的基本處理步驟。條件構造根據某種邏輯條件的出現而選擇相應的處理步驟。重復構造則是為循環而設置的。這三種構造是結構程序設計——軟件工程領域中的一種重要方法——的基礎。提出這些結構化構造的目的是限制軟件的過程設計,只允許采用幾種預定的操作。采用這些結構化構造將減少程序的復雜性,從而提高軟件的可讀性、可測試性和可維護性。使用有限的幾種邏輯構造還有助于人們用“成塊識別”的方式去理解進程。任何一個程序,不管它的應用領域或技術復雜性如何,都可以僅僅用這3種結構化構造來設計和實現。詳細設計中的圖形工具有:流程圖方塊圖(N-S圖)HIPO圖PAD圖等這些圖形工具提供了極好的圖形樣式,通過它們,可以方便地描述過程的細節。

圖形設計工具流程圖獨立于各種程序設計語言,比較直觀、清晰,易于學習掌握。然而,它也是經常被誤用的一種方法。為使流程圖能描述結構化程序,限制流程圖只能由幾種基本控制結構組成,或者說任一程序流程圖都應能由幾種基本控制結構嵌套而成。ISO5807《信息處理——數據流程圖、程序流程圖、系統流程圖、程序網絡圖和系統資源圖的文件編制符號及約定》中對程序流程圖的符號做出了規定。AB順序結構選擇結構PABFT當型循環PSTFS直到型循環PTFP1S1TFP2S2T…P3FFSn多情況選擇結構T【例】畫出實現符號函數的流程圖。X=0Y=0Y=-1Y=1X<0輸入X輸出Y通常,當需要從一組嵌套的循環構造或者嵌套的條件構造中離去時,只簡單地采用結構化構造有可能使效率降低,甚至沿著離去路徑使所有邏輯測試復雜化,從而使軟件的控制流程變得模糊不清,增加了出錯的可能性,并且對可讀性和可維護性也有不良影響。這時,可以有兩種選擇:重新設計程序流程,使得在控制流程的嵌套部位不需要出現離去分支。有控制地采用非結構化的構造;也就是說,設計成有限制地從嵌套流程中往外分支。方塊圖是一種強制使用結構化構造的圖示工具,具有下列特點:明確規定功能域

(即某一具體構造的功能范圍),并且很直觀地從圖形表示中看出來。不可能隨意分支或轉移。可以很容易地確定局部數據和

(或)全程數據的作用域。容易表示出遞歸結構。S1S3S2順序結構TPFS1S2選擇結構WHILE條件S當型循環結構SUNTIL條件直到型循環結構NS圖是一種不允許破壞結構化的圖形算法描述工具。在NS圖中去掉了流程圖中易引起麻煩的流程線,全部算法都寫在一個框內,每一種結構也是一個框。SN……….S2S1情況n………情況2情況1條件多路分支選擇結構【例】畫出實現符號函數的NS圖。輸入XTX=0FY=0TX<0FY=-1Y=1輸出Y對應與一個結構化流程圖的方塊圖HIPO(層次加輸入-處理-輸出)是根據IBM公司研制的軟件設計與文件編制技術發展而來的一種圖示工具。在概要設計、詳細設計、設計評審、測試和維護的不同階段,都可以使用HIPO圖對設計進行描述。HIPO圖的最重要的特征是它能夠表示輸入/輸出數據(外部數據和內部數據流程)與軟件的過程之間的關系。完整的一組HIPO圖由下列各部分組成:層次圖

(H圖):以層次方框形式表達程序主功能模塊與次功能模塊的關系。高層IPO圖:針對H圖中的主功能模塊和次功能模塊,描述其輸入,處理功及輸出等。低層IPO圖:給出H圖中最低層次的具體設計。1.0訂單處理子系統2.0每月發票處理3.0事務處理4.0報表生成處理2.1數據輸入模塊2.2數據編輯模塊3.1開票數據模塊3.2開票

模塊3.3發票登記模塊4.1事務報表模塊4.2顧客報表模塊4.3余額報表模塊3.1.1進貨3.1.22付款3.1.3貨調整3.1.4借調整在畫H圖時要注意幾個問題:根據經驗,一般每層畫3-10個功能模塊為宜。對于畫到第幾層為止則無統一標準,視具體情況而定。畫高層IPO時,從H層第一層開始畫,按自上而下,從左到右的順序畫出H圖中每個方框(除最底層外)的IPO圖。在IPO圖上給出哪些是輸入,處理的功能是什么,輸出什么。為了避免規模和維護上的復雜性問題,大多數項目的HIPO圖只深入到某一層。

購貨支付當前差額事務日期為顧客處理的事務如下:準備臨時變量建立事務區確定事務類型

購貨付款貸方調整借方調整=>每月的事務文件顧客差額文件發票發票登記輸入處理輸出3.1.43.1.33.1.23.1.1PAD(問題分析圖)是一種用于軟件詳細設計的表達形式:綜合流程圖、Warnier圖(類似判定樹)、方塊圖和偽碼等技術的一些特點;以二維樹的形式描述程序的邏輯;主要優點是程序結構清晰,能夠直接導出程序代碼,并對其一致性進行檢查;可應用于BASIC、FORTRAN、COBOL、PASCAL等高級語言;支持軟件需求分析和概要設計階段。PAD圖采用自頂向下、逐步求精和結構化設計的原則:力求將模糊的問題解的概念逐步轉換成確定的、詳盡的過程。最終可采用計算機進行處理。PAD為軟件設計提供了3種基本控制結構(順序、循環和選擇)描述,首先要從系統設計的一種模糊的概念出發,將過程描述為:過程順序部分的表示過程重復部分的表示

過程選擇部分的表示重復上述步驟,直到過程完全確定和詳盡為止。粗略的問題概念(1)順序過程的細化(2)循環過程的細化(3)選擇過程的細化模糊模糊模糊模糊循環條件模糊循環處理前處理模糊模糊選擇條件模糊模糊模糊前處理后處理選擇處理(2)(1)(3)框內寫出定義名定義框8框內寫出子程序名子程序框7可一、二或多路選擇,框內寫出選擇條件選擇框6先執行,后判斷循環,框內寫出重復條件重復框5先判斷,再循環,框內寫出重復條件重復框4框內寫出處理或語句名處理框3框內寫出輸出變量名輸出框2框內寫出輸入變量名輸入框1注釋名稱符號PAD圖對應的程序執行的步驟:PAD的執行順序是從最左主干線的上端結點,自上而下依次執行。當遇到判斷或循環時,就自左而右進入下一層從表示下一層的縱線上端開始執行,直到該縱線下端,再返回上一層的縱線的轉入處。如此繼續,直到執行到主干線的下端為止。BA順序結構選擇結構BAPAPA2PA1An=2=1=n多分支選擇結構當型循環結構WHILEPS直到型循環結構UNTILPS【例】畫出實現符號函數的PAD圖。輸入XY=-1Y=0X=0X<0Y=1輸出Y偽碼是控制結構和某些編程語言元素的簡寫符號,可以任意插入注釋,實質上是“文字流程圖”。熟悉某種程序設計語言的設計人員所用的偽碼可能就是該語言的簡化版本。實際使用時,設計人員可以隨意增加偽碼的詳細程度,特別是針對可能產生二義性的地方。偽碼的缺點是不標準,而且只有控制結構,對數據描述能力很差。

偽碼設計語言程序設計語言(PDL,又稱詳細設計語言DDL)彌補了偽碼的缺點,它是一種“混雜式語言”。它采用某種語言(例如英語)的詞匯但卻采用另一種語言(即一種結構化編程語言)的全部語法,它用文本格式提供一種描述數據和處理的方法。PDL有正規的句法,指出數據和處理結構,并用自然語言說明細節。雖然程序設計語言是不可執行的,但可以對之開發出評價設計和轉換為源程序的自動化技術。為了實現從詳細設計到編碼的自動轉換,各種程序設計語言都開發了相應的PDL,如PDL/PASCAL,PDL/C,以及PDL/Ada等,它們利用程序設計語言的語法結構,用自然語言表示某些控制信息,使面向設計的部分減少,面向實現的部分增加,從而使程序設計語言更件接近可執行代碼。程序設計語言可分為三個部分:數據說明處理說明I/O對特殊的應用,如多任務語句或實時應用等,可以提供專用的結構和語句。PROCEDUREspellcheckIS查找錯拼單詞BEGINsplitdocumentintosinglewords將整個文檔分解成單詞lookupwordsindictionary在字典中查找這些單詞displaywordswhicharenotindictionary顯示找不到單詞createanewdictionary造一個新字典ENDspellcheck在總體結構上它和高級語言程序的相似之處主要在于:關鍵字起到了骨架作用。按程序結構縮格書寫。主要差別表現在:除去特定的若干關鍵字外,所描述的內容也使用了簡單的自然語言,沒有高級語言那樣嚴格的語法限制。程序設計語言是用于詳細設計階段的工具,這個階段的任務顯然與用高級語言編寫程序的任務完全不同。程序設計語言把敘述性說明文直接插入到PDL語句中。由于混合使用敘述性說明文和形式化的過程形式,故一般無法對其進行編譯。PDL可以是一種稍作變動的編程語言,或者是為程序設計而專門研制的語言。作為一種程序設計語言,PDL應當具有以下特征:其關鍵字有固定語法,以便提供全部結構化構造、數據說明和模塊化特性。一種自然語言的自由文法,用來描述處理性能。有數據說明機制,包括簡單的(標量與數組)與復雜的數據結構(鏈表或層次結構)。有子程序定義與調用方法,用來表達各種方式的接口說明。一個用程序設計語言描述的軟件設計應當可以轉換成匯編語言、FORTRAN或者Pascal,只是難易程度有所不同而已。任何一種詳細設計工具如果使用得當,對設計有很大幫助;如果使用不當,則即便是最好的工具也不會有什么幫助。一個詳細設計工具應:可以用來得到便于理解和復審的過程表示。應增強編程的能力,以便使程序事實上成為設計的一個自然的產物。得到的設計表達還必須便于維護,以使設計總是能夠正確地表達程序。

根據上面介紹的一般特性,設計工具應具有:模塊性:支持模塊化軟件的開發。簡明性:應易學、易用、易讀。便于編輯:在設計、測試和維護階段便于修改。機器可讀性:應能直接輸入到計算機內處理。可維護性:軟件配置的維護意味對詳細設計的維護。強行結構化:會使人們養成良好的設計習慣。自動處理:使設計人員對軟件的正確性與質量有新的深入了解。數據表示:應具有直接地表示局部和全程數據的能力。邏輯驗證:要達到設計邏輯的自動驗證這個首要目標。編程能力:所表示的設計可以很容易轉換成源程序。不好尚好不好不好不好數據表示低中等低低高使用頻率不能適用好好很好不好結構化好好尚好不好不好可修改性很好很好尚好不好不好可讀性好很好好好尚好易編碼很好尚好尚好尚好不好邏輯驗證很好好好好尚好邏輯表示尚好很好好不好好易使用性判定表PDL圖PAD圖方塊圖流程圖設計工具的選擇更大程度上取決于人的因素,而不是取決于技術特性。詳細設計完畢,應交付的文件有:詳細設計說明書初步的模塊開發卷宗。詳細設計文件與復審詳細設計說明書又稱程序設計說明書。編制本說明書的目的是說明一個軟件系統各個層次中的每一個程序(每個模塊或子程序)的設計考慮,如實現算法、邏輯流程等。軟件的詳細設計完成以后,必須從正確性和可維護性兩個方面,對它的邏輯、數據結構和界面等進行檢查。詳細設計的復審可用下列形式之一完成:設計者和設計組的另一個成員一起進行靜態檢查。由一個檢查小組進行的較正式的“結構設計檢查”。由檢查小組進行的正式的“設計檢查”,對軟件設計質量給出嚴肅的評價。軟件開發的實踐表明,正式的詳細設計復審在發現某些類型的設計錯誤方面和測試一樣有效。正確的態度是:在詳細設計復審中,不為設計辯護,而是揭短,揭露出設計中的缺點錯誤。任何一個程序,都可以僅僅用順序、條件和重復三種結構化構造來設計和實現,并且將減少程序的復雜性,提高可讀性、可測試性和可維護性。用來表示詳細設計的工具分成三個大類——圖形、列表和語言。詳細設計中的設計工具主要有程序流程圖、方塊圖、HIPO圖和PAD圖、程序設計語言PDL以及判定表等。詳細設計產生的主要文件是詳細設計說明書,它為編寫源代碼提供了必要的說明。小結思考與習題5-1舉例說明你對概要設計與詳細設計的理解。有不需要概要設計的情況嗎?5-2請為一個程序進行詳細設計,該程序接收一串任意長度的字符串文本作為輸入,并列表輸出文本中出現的字和每

溫馨提示

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

評論

0/150

提交評論