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

下載本文檔

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

文檔簡介

第6章詳細(xì)設(shè)計目標(biāo)設(shè)計人機(jī)交互界面利用結(jié)構(gòu)化程序設(shè)計工具設(shè)計程序藍(lán)圖計算程序藍(lán)圖復(fù)雜程度軟件生存周期第6章詳細(xì)設(shè)計詳細(xì)設(shè)計階段的根本目標(biāo)是確定應(yīng)該怎樣具體地實現(xiàn)所要求的系統(tǒng)。詳細(xì)設(shè)計階段的任務(wù)還不是具體地編寫程序,而是要設(shè)計出程序的“藍(lán)圖”,以后程序員將根據(jù)這個藍(lán)圖寫出實際的程序代碼。詳細(xì)設(shè)計的結(jié)果基本上決定了最終的程序代碼的質(zhì)量。衡量程序的質(zhì)量的因素有:邏輯是否正確性能是否滿足要求是否容易閱讀和理解6.1結(jié)構(gòu)程序設(shè)計3種基本的控制結(jié)構(gòu)是“順序”、“選擇”和“循環(huán)”。6.13種基本的控制結(jié)構(gòu)6.1結(jié)構(gòu)程序設(shè)計結(jié)構(gòu)程序設(shè)計的經(jīng)典定義如下所述:“如果一個程序的代碼塊僅僅通過順序、選擇和循環(huán)這3種基本控制結(jié)構(gòu)進(jìn)行連接,并且每個代碼塊只有一個入口和一個出口,則稱這個程序是結(jié)構(gòu)化的?!鄙鲜鼋?jīng)典定義過于狹隘了,結(jié)構(gòu)程序設(shè)計本質(zhì)上并不是無GOTO語句的編程方法,而是一種使程序代碼容易閱讀、容易理解的編程方法。更全面的結(jié)構(gòu)程序設(shè)計的定義是:“結(jié)構(gòu)程序設(shè)計是盡可能少用GOTO語句的程序設(shè)計方法。最好僅在檢測出錯誤時才使用GOTO語句,而且應(yīng)該總是使用前向GOTO語句。”6.1結(jié)構(gòu)程序設(shè)計為了實際使用方便起見,常常還允許使用DO-UNTIL和DO-CASE兩種控制結(jié)構(gòu)。有時需要立即從循環(huán)(甚至嵌套的循環(huán))中轉(zhuǎn)移出來,如果允許使用LEAVE(或BREAK)結(jié)構(gòu),則不僅方便而且會使效率提高很多。圖6.2其他常用的控制結(jié)構(gòu)6.1結(jié)構(gòu)程序設(shè)計如需要立即跳出當(dāng)前循環(huán),可使用LEAVE或BREAK結(jié)構(gòu)。經(jīng)典的結(jié)構(gòu)程序設(shè)計:只允許使用順序、IF_THEN_ELSE型分支和DO_WHILE型循環(huán)這三種基本控制結(jié)構(gòu)。擴(kuò)展的結(jié)構(gòu)程序設(shè)計:還允許使用DO_CASE型多分支結(jié)構(gòu)和DO_UNTIL型循環(huán)結(jié)構(gòu)。修正的結(jié)構(gòu)程序設(shè)計:再加上允許使用LEAVE(或BREAK)結(jié)構(gòu)。6.2人機(jī)界面設(shè)計人機(jī)界面設(shè)計是接口設(shè)計的一個重要的組成部分。對于交互式系統(tǒng)來說,人機(jī)界面設(shè)計和數(shù)據(jù)設(shè)計、體系結(jié)構(gòu)設(shè)計及過程設(shè)計一樣重要。近年來,人機(jī)界面在系統(tǒng)中所占的比例越來越大,在個別系統(tǒng)中人機(jī)界面的設(shè)計工作量甚至占總設(shè)計量的一半以上。人機(jī)界面的設(shè)計質(zhì)量,直接影響用戶對軟件產(chǎn)品的評價,從而影響軟件產(chǎn)品的競爭力和壽命,因此,必須對人機(jī)界面設(shè)計給予足夠重視。6.2.1設(shè)計問題在設(shè)計人機(jī)界面的過程中,幾乎總會遇到下述4個設(shè)計問題:系統(tǒng)響應(yīng)時間用戶幫助設(shè)施出錯信息處理命令交互許多設(shè)計者直到設(shè)計過程后期才開始考慮這些問題,這樣做往往導(dǎo)致出現(xiàn)不必要的設(shè)計反復(fù)、項目延期和用戶產(chǎn)生挫折感。最好在設(shè)計初期給予重視,此時修改容易、代價也低。6.2.1設(shè)計問題1.系統(tǒng)響應(yīng)時間系統(tǒng)響應(yīng)時間指從用戶完成某個控制動作(如點擊鼠標(biāo)),到軟件給出預(yù)期的響應(yīng)之間的這段時間。系統(tǒng)響應(yīng)時間有兩個重要屬性,分別是長度和易變性。系統(tǒng)響應(yīng)時間過長或過短都不好。易變性指系統(tǒng)響應(yīng)時間相對于平均響應(yīng)時間的偏差。即使系統(tǒng)響應(yīng)時間較長,響應(yīng)時間易變性低也有助于用戶建立起穩(wěn)定的工作節(jié)奏。6.2.1設(shè)計問題2.用戶幫助設(shè)施幾乎交互式系統(tǒng)的每個用戶都需要幫助,當(dāng)遇到復(fù)雜問題時甚至需要查看用戶手冊以尋找答案。常見的幫助設(shè)施可分為集成的和附加的兩類。集成的幫助設(shè)施從一開始就設(shè)計在軟件里面,可以縮短用戶獲得幫助的時間,增加界面的友好性。附加的幫助設(shè)施是在系統(tǒng)建成后再添加到軟件中的,在多數(shù)情況下它實際上是一種查詢能力有限的聯(lián)機(jī)用戶手冊。普遍認(rèn)為,集成的幫助設(shè)施優(yōu)于附加的幫助設(shè)施。6.2.1設(shè)計問題具體設(shè)計幫助設(shè)施時,必須解決下述的一系列問題:(1)在用戶與系統(tǒng)交互期間,是否在任何時候都能獲得關(guān)于系統(tǒng)任何功能的幫助信息?有兩種選擇:提供部分功能的幫助信息和提供全部功能的幫助信息。(2)用戶怎樣請求幫助?有3種選擇:幫助菜單,特殊功能鍵和HELP命令。(3)怎樣顯示幫助信息?有3種選擇:在獨立的窗口中,指出參考某個文檔(不理想)和在屏幕固定位置顯示簡短提示。(4)用戶怎樣返回到正常的交互方式中?有兩種選擇:屏幕上的返回按鈕和功能鍵。(5)怎樣組織幫助信息?有3種選擇:平面結(jié)構(gòu),信息的層次結(jié)構(gòu)和超文本結(jié)構(gòu)。6.2.1設(shè)計問題3.出錯信息處理出錯信息和警告信息,是出現(xiàn)問題時交互式系統(tǒng)給出的“壞消息”。出錯信息設(shè)計得不好,將向用戶提供無用的甚至誤導(dǎo)的信息,反而會加重用戶的挫折感。一般說來,交互式系統(tǒng)給出的出錯信息或警告信息,應(yīng)該具有下述屬性。(1)信息應(yīng)該用用戶可以理解的術(shù)語描述問題。(2)信息應(yīng)該提供有助于從錯誤中恢復(fù)的建設(shè)性意見。6.2.1設(shè)計問題(3)信息應(yīng)該指出錯誤可能導(dǎo)致哪些負(fù)面后果(例如,破壞數(shù)據(jù)文件),以便用戶檢查是否出現(xiàn)了這些問題,并在確實出現(xiàn)問題時及時解決。(4)信息應(yīng)該伴隨著聽覺上或視覺上的提示,例如,在顯示信息時同時發(fā)出警告鈴聲,或者信息用閃爍方式顯示,或者信息用明顯表示出錯的顏色顯示。(5)信息不能帶有指責(zé)色彩,也就是說,不能責(zé)怪用戶。當(dāng)確實出現(xiàn)了問題的時候,有效的出錯信息能提高交互式系統(tǒng)的質(zhì)量,減輕用戶的挫折感。6.2.1設(shè)計問題4.命令交互命令行曾經(jīng)是用戶和系統(tǒng)軟件交互的最常用的方式,并且也曾經(jīng)廣泛地用于各種應(yīng)用軟件中?,F(xiàn)在,面向窗口的、點擊和拾取方式的界面已經(jīng)減少了用戶對命令行的依賴,但是,許多高級用戶仍然偏愛面向命令行的交互方式。在多數(shù)情況下,用戶既可以從菜單中選擇軟件功能,也可以通過鍵盤命令序列調(diào)用軟件功能。6.2.1設(shè)計問題在提供命令交互方式時,必須考慮下列設(shè)計問題。(1)是否每個菜單選項都有對應(yīng)的命令?(2)采用何種命令形式?有3種選擇:控制序列(例如,Ctrl+P),功能鍵和鍵入命令。(3)學(xué)習(xí)和記憶命令的難度有多大?忘記了命令怎么辦?(4)用戶是否可以定制或縮寫命令?6.2.2設(shè)計過程用戶界面設(shè)計是一個迭代的過程。通常先利用用戶界面工具或用戶界面開發(fā)系統(tǒng)建立起用戶界面的原型由用戶試用和評估,以確定其是否滿足用戶的需求然后根據(jù)用戶意見進(jìn)行修改,直到用戶感到滿意,不需要再修改界面設(shè)計時為止6.2.3人機(jī)界面設(shè)計指南用戶界面設(shè)計主要依靠設(shè)計者的經(jīng)驗??偨Y(jié)眾多設(shè)計者的經(jīng)驗得出的設(shè)計指南,有助于設(shè)計者設(shè)計出友好、高效的人機(jī)界面。1.一般交互指南2.信息顯示指南3.數(shù)據(jù)輸入指南6.2.3人機(jī)界面設(shè)計指南1.一般交互指南(1)保持一致性。(2)提供有意義的反饋。(3)在執(zhí)行有較大破壞性的動作之前要求用戶確認(rèn)。(4)允許取消絕大多數(shù)操作。(5)減少在兩次操作之間必須記憶的信息量。6.2.3人機(jī)界面設(shè)計指南2.信息顯示指南(1)只顯示與當(dāng)前內(nèi)容有關(guān)的信息。(2)窗口顯示的一致性。(3)產(chǎn)生有意義的出錯信息。(4)必要時,用圖形化的方式顯示信息。6.2.3人機(jī)界面設(shè)計指南3.數(shù)據(jù)輸入指南(1)盡量減少用戶的輸入動作,下拉框就是一個很好的選擇。(2)允許編輯。(3)重要操作提示確認(rèn)。(4)交互的方式應(yīng)該靈活,允許用戶選擇喜歡的輸入方式。(5)提示輸入的格式和范圍。6.3過程設(shè)計的工具描述程序處理過程的工具稱為過程設(shè)計的工具,有三種:圖形、表格和語言。圖形工具:如程序流程圖、盒圖(N-S圖)和PAD圖表格工具:如判定表過程設(shè)計語言:是一種用于描述模塊算法設(shè)計和處理細(xì)節(jié)的語言工具。任何一種過程設(shè)計工具都必須提供對設(shè)計的無歧義的描述,即應(yīng)該能指明控制流程、處理功能、數(shù)據(jù)組織以及其它方面的實現(xiàn)細(xì)節(jié),從而在編碼階段能把對設(shè)計的描述直接翻譯成程序代碼。6.3.1程序流程圖(程序框圖)程序流程圖是歷史最悠久、使用最廣泛的描述過程設(shè)計的方法,也是用得最混亂的一種方法。程序流程圖中使用的各種符號:6.3.1程序流程圖例如:計算1-100的和.#include

"stdio.h"

void

main()

{

int

i,Sum;Sum=0;for(i=1;i<=100;i++)

Sum+=i;

printf("總和為%d\n",Sum);

}6.3.1程序流程圖程序流程圖的主要缺點如下:(1)程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu)。(2)程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計的精神,隨意轉(zhuǎn)移控制。(3)程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu)。6.3.1程序流程圖例:畫出下列偽程序的程序流程圖。STARTIFpTHENWHILEqDOfENDDOELSEgnENDIFSTOP6.3.1盒圖(N-S圖)N-S圖特點:(1)功能域(即,一個特定控制結(jié)構(gòu)的作用域)明確,可以從盒圖上一眼就看出來。(2)沒有箭頭,不可能任意轉(zhuǎn)移控制。(3)很容易確定局部和全程數(shù)據(jù)的作用域。(4)很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。6.3.1盒圖(N-S圖)圖6.4盒圖的基本符號6.3.1程序流程圖例:畫出下列偽程序的盒圖。STARTIFpTHENWHILEqDOfENDDOELSEgnENDIFSTOP6.3.1程序流程圖例:畫出下列偽程序的盒圖。gnWhilepdoifqthena1a2elsewhilerdob1b2enddoendifenddo6.3.3PAD圖(問題分析圖)PAD圖用二維樹形結(jié)構(gòu)的圖來表示程序的控制流,將這種圖翻譯成程序代碼比較容易。圖中最左邊的豎線是程序的主線,即第一層結(jié)構(gòu)隨著程序?qū)哟蔚脑黾?,PAD圖逐漸向右延伸,每增加一個層次,圖形向右擴(kuò)展一條豎線PAD圖中豎線的總條數(shù)就是程序的層次數(shù)6.3.3PAD圖(問題分析圖)PAD圖的基本符號有:6.3.3PAD圖(問題分析圖)PAD圖的主要優(yōu)點:使用PAD符號設(shè)計出來的程序必然是結(jié)構(gòu)化程序。PAD圖所描繪的程序結(jié)構(gòu)十分清晰。用PAD圖表現(xiàn)程序邏輯,易讀、易懂、易記。程序從圖中最左邊豎線上端的結(jié)點開始執(zhí)行,自上而下,從左向右順序執(zhí)行,遍歷所有結(jié)點PAD圖易于向高級語言轉(zhuǎn)換。PAD圖的符號支持自頂向下、逐步求精方法的使用。開始設(shè)計者可以定義一個抽象的程序,隨著設(shè)計工作的深入而使用def符號逐步增加細(xì)節(jié),直至完成詳細(xì)設(shè)計。

6.3.3PAD圖(問題分析圖)圖6.6使用PAD圖提供的定義功能來逐步求精的例子6.3.3PAD圖(問題分析圖)例:畫出下列偽程序的PAD圖。STARTIFpTHENWHILEqDOfENDDOELSEgnENDIFSTOP6.3.3PAD圖(問題分析圖)例:畫出下列偽程序的PAD圖。gnWhilepdoifqthena1a2elsewhilerdob1b2enddoendifenddo6.3.4判定表當(dāng)算法中包含多重嵌套的條件選擇時,用程序流程圖、盒圖、PAD圖、PDL都不易清楚地描述。然而判定表卻能夠清晰地表示復(fù)雜的條件組合與應(yīng)做的動作之間的對應(yīng)關(guān)系。一張判定表由4部分組成:左上部列出所有條件左下部是所有可能做的動作右上部是表示各種條件組合的一個矩陣右下部是和每種條件組合相對應(yīng)的動作6.3.4判定表假設(shè)某航空公司規(guī)定,乘客可以免費托運(yùn)重量不超過30公斤的行李。當(dāng)行李重量超過30公斤時:對頭等艙的國內(nèi)乘客超重部分每公斤收費4元;對其他艙的國內(nèi)乘客超重部分每公斤收費6元;對外國乘客超重部分每公斤收費比國內(nèi)乘客多一倍;對殘疾乘客超重部分每公斤收費比正常乘客少一半。6.3.4判定表6.3.4判定表優(yōu)點:判定表能夠簡潔而又無歧義地描述處理規(guī)則。缺點:判定表并不適于作為一種通用的設(shè)計工具,沒有一種簡單的方法使它能同時清晰地表示順序和重復(fù)等處理特性。6.3.5判定樹判定表雖然能清晰地表示復(fù)雜的條件組合與應(yīng)做的動作之間的對應(yīng)關(guān)系,但其含義卻不是一眼就能看出來的,初次接觸這種工具的人理解它需要有一個簡短的學(xué)習(xí)過程。判定樹是判定表的變種,它能清晰地表示復(fù)雜的條件組合與應(yīng)做的動作之間的對應(yīng)關(guān)系。優(yōu)點:它的形式簡單到不需任何說明,一眼就可以看出其含義,因此易于掌握和使用。6.3.5判定樹6.3.6過程設(shè)計語言(偽碼)過程設(shè)計語言(PDL)是用正文形式表示數(shù)據(jù)和處理過程的設(shè)計工具。PDL具有嚴(yán)格的關(guān)鍵字外部語法,用于定義控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)PDL表示實際操作和條件的內(nèi)部語法通常又是靈活自由的,可以適應(yīng)各種工程項目的需要。一般說來,PDL是一種“混雜”語言,它使用一種語言的詞匯,同時卻使用另一種語言(某種結(jié)構(gòu)化的程序設(shè)計語言)的語法。6.3.6過程設(shè)計語言(偽碼)PROCEDURESumBeginLetthevalueofSumbe0Letthevalueofibe1REPEATEwhilei<=100s=s+ii=i+1ENDREPENDSum6.3.6過程設(shè)計語言(偽碼)PDL作為一種設(shè)計工具有如下一些優(yōu)點:(1)可以作為注釋直接插在源程序中間。這樣做能促使維護(hù)人員在修改程序代碼的同時也相應(yīng)地修改PDL注釋,因此有助于保持文檔和程序的一致性,提高了文檔的質(zhì)量。(2)可以使用普通的正文編輯程序或文字處理系統(tǒng),很方便地完成PDL的書寫和編輯工作。(3)已經(jīng)有自動處理程序存在,而且可以自動由PDL生成程序代碼。PDL的缺點是不如圖形工具形象直觀,描述復(fù)雜的條件組合與動作間的對應(yīng)關(guān)系時,不如判定表清晰簡單。6.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法,根據(jù)數(shù)據(jù)結(jié)構(gòu)設(shè)計程序處理過程的方法。數(shù)據(jù)結(jié)構(gòu)既影響程序的結(jié)構(gòu)又影響程序的處理過程,重復(fù)出現(xiàn)的數(shù)據(jù)通常由具有循環(huán)控制結(jié)構(gòu)的程序來處理,選擇數(shù)據(jù)要用帶有分支控制結(jié)構(gòu)的程序來處理。6.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法的最終目標(biāo)是得出對程序處理過程的描述。此方法最適合于詳細(xì)設(shè)計階段使用。在完成了軟件結(jié)構(gòu)設(shè)計之后,可以使用面向數(shù)據(jù)結(jié)構(gòu)的方法來設(shè)計每個模塊的處理過程。Jackson方法是最著名的面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法。使用面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法,首先需要分析確定數(shù)據(jù)結(jié)構(gòu),并且用適當(dāng)?shù)墓ぞ撸↗ackson圖)清晰地描繪數(shù)據(jù)結(jié)構(gòu)。6.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法6.4.1Jackson圖程序中數(shù)據(jù)元素彼此間的邏輯關(guān)系卻只有順序、選擇和重復(fù)3類,對應(yīng)的邏輯數(shù)據(jù)結(jié)構(gòu)也有3類。1.順序結(jié)構(gòu)順序結(jié)構(gòu)的數(shù)據(jù)由一個或多個數(shù)據(jù)元素組成,每個元素按確定次序出現(xiàn)一次。圖6.8

A由B、C、D3個元素順序組成6.4.1Jackson圖2.選擇結(jié)構(gòu)選擇結(jié)構(gòu)的數(shù)據(jù)包含兩個或多個數(shù)據(jù)元素,每次使用這個數(shù)據(jù)時按一定條件從這些數(shù)據(jù)元素中選擇一個。圖6.9根據(jù)條件A是B或C或D中的某一個6.4.1Jackson圖3.重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu)的數(shù)據(jù),根據(jù)使用時的條件由一個數(shù)據(jù)元素出現(xiàn)零次或多次構(gòu)成。圖6.10A由B出現(xiàn)N次(N≥0)組成注意:B的右上角有星號標(biāo)記6.4.1Jackson圖Jackson圖有下述優(yōu)點:便于表示層次結(jié)構(gòu),而且是對結(jié)構(gòu)進(jìn)行自頂向下分解的有力工具;形象直觀可讀性好;既能表示數(shù)據(jù)結(jié)構(gòu)也能表示程序結(jié)構(gòu)(因為結(jié)構(gòu)程序設(shè)計也只使用上述3種基本控制結(jié)構(gòu))。Jackson圖的缺點:選擇/循環(huán)條件不能直接在圖上表示出來,影響圖的表達(dá)能力不易直接把圖翻譯成程序不易在打印機(jī)上輸出6.4.2改進(jìn)的Jackson圖順序結(jié)構(gòu)選擇結(jié)構(gòu),i為分支條件編號可選結(jié)構(gòu)重復(fù)結(jié)構(gòu),結(jié)束條件編號為i6.4.2改進(jìn)的Jackson圖Jackson圖實質(zhì)上是對層次方框圖(是描繪數(shù)據(jù)結(jié)構(gòu)的形式化工具)的一種精化。Jackson圖和描繪軟件結(jié)構(gòu)的層次圖形式相當(dāng)類似,但是含義卻很不相同。層次圖中一個方框代表一個模塊;而Jackson圖中一個方框只代表幾個語句;層次圖表現(xiàn)的是調(diào)用關(guān)系;而Jackson圖表現(xiàn)的是組成關(guān)系。6.4.3Jackson方法

Jackson方法是面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法。Jackson方法定義了一組以數(shù)據(jù)結(jié)構(gòu)為指導(dǎo)的映射過程,它根據(jù)輸入、輸出的數(shù)據(jù)結(jié)構(gòu),按一定的規(guī)則映射成軟件的過程描述,即程序結(jié)構(gòu)。Jackson結(jié)構(gòu)程序設(shè)計方法基本上由下述5個步驟組成:第一步分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描繪這兩組數(shù)據(jù)結(jié)構(gòu)。第二步找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的數(shù)據(jù)單元。6.4.3Jackson方法所謂有對應(yīng)關(guān)系是指有直接的因果關(guān)系,在程序中可以同時處理的數(shù)據(jù)單元(對于重復(fù)出現(xiàn)的數(shù)據(jù)單元必須重復(fù)的次序和次數(shù)都相同才可能有對應(yīng)關(guān)系)。輸出數(shù)據(jù)總是通過對輸入數(shù)據(jù)的處理而得到的,因此在輸入輸出數(shù)據(jù)結(jié)構(gòu)最高層次的兩個單元總是有對應(yīng)關(guān)系的。6.4.3Jackson方法第三步用下述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)層次畫一個處理框(注意,如果這對數(shù)據(jù)單元在輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中所處的層次不同,則和它們對應(yīng)的處理框在程序結(jié)構(gòu)圖中所處的層次與它們之中在數(shù)據(jù)結(jié)構(gòu)圖中層次低的那個對應(yīng));第二,根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框;6.4.3Jackson方法第三,根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框。在導(dǎo)出程序結(jié)構(gòu)圖的過程中,由于改進(jìn)的Jackson圖規(guī)定在構(gòu)成順序結(jié)構(gòu)的元素中不能有重復(fù)出現(xiàn)或選擇出現(xiàn)的元素,因此可能需要增加中間層次的處理框。第四步列出所有操作和條件(包括分支條件和循環(huán)結(jié)束條件),并且把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。第五步用偽碼表示程序。6.4.3Jackson方法Jackson方法中使用的偽碼和Jackson圖是完全對應(yīng)的,下面是和3種基本結(jié)構(gòu)對應(yīng)的偽碼。和圖6.11(a)所示的順序結(jié)構(gòu)對應(yīng)的偽碼,其中‘seq’和‘end’是關(guān)鍵字: A seq B C D A end6.4.3Jackson方法和圖6.11(b)所示的選擇結(jié)構(gòu)對應(yīng)的偽碼,其中‘select’、‘or’和‘end’是關(guān)鍵字,cond1、cond2和cond3分別是執(zhí)行B、C或D的條件: A select cond1 B A or cond2 C A or cond3 D A end6.4.3Jackson方法和圖6.11(d)所示重復(fù)結(jié)構(gòu)對應(yīng)的偽碼,其中‘iter’、‘until’、‘while’和‘end’是關(guān)鍵字,cond是條件: A iteruntil(或while)cond B A end6.4.3Jackson方法下面結(jié)合一個例子說明Jackson結(jié)構(gòu)程序設(shè)計方法一個正文文件由若干個記錄組成,每個記錄是一個字符串。要求統(tǒng)計每個記錄中空格字符的個數(shù),以及文件中空格字符的總個數(shù)。要求的輸出數(shù)據(jù)格式是,每復(fù)制一行輸入字符串之后,另起一行印出這個字符串中的空格數(shù),最后印出文件中空格的總個數(shù)。6.4.3Jackson方法第一步分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描繪這兩組數(shù)據(jù)結(jié)構(gòu)。

對于統(tǒng)計空格這個簡單例子而言,其輸入和輸出數(shù)據(jù)的結(jié)構(gòu)分別為:6.4.3Jackson方法6.4.3Jackson方法第二步找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的數(shù)據(jù)單元。上圖中用一對虛線箭頭把有對應(yīng)關(guān)系的數(shù)據(jù)單元連接起來6.4.3Jackson方法第三步用3條規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的Jackson圖對于統(tǒng)計空格的例子,得到的程序結(jié)構(gòu)圖如下:6.4.3Jackson方法第四步列出所有操作和條件(包括分支條件和循環(huán)結(jié)束條件),并且把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。對于統(tǒng)計空格的例子,需要的全部操作和條件如下:(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)字符是空格6.4.3Jackson方法把這些操作和條件分配到程序結(jié)構(gòu)圖的適當(dāng)位置,結(jié)果如下圖:6.4.3Jackson方法第五步用偽碼表示程序。因為Jackson使用的偽碼和Jackson圖之間存在簡單的對應(yīng)關(guān)系,所以從圖6.14很容易得出下面的偽碼:6.4.3Jackson方法統(tǒng)計空格seq 打開文件 讀入字符串 totalsum∶=0 程序體iteruntil文件結(jié)束 處理字符串seq 印字符串seq 印出字符串 印字符串end sum∶=0 pointer∶=1 分析字符串iteruntil字符串結(jié)束 分析字符select字符是空格6.4.3Jackson方法 處理空格seq sum∶=sum+1 pointer∶=pointer+1 處理空格end 分析字符or字符不是空格 處理非空格seq pointer∶=pointer+1 處理非空格end分析字符end 分析字符串end 印空格數(shù)seq 印出空格數(shù)目 印空格數(shù)end6.4.3Jackson方法

totalsum∶=totalsum+sum 讀入字符串 處理字符串end程序體end印總數(shù)seq印出空格總數(shù)印總數(shù)end關(guān)閉文件停止統(tǒng)計空格end6.5程序復(fù)雜程度的定量度量定量度量程序復(fù)雜程度的方法很有價值把程序的復(fù)雜程度乘以適當(dāng)常數(shù)即可估算出軟件中錯誤的數(shù)量以及軟件開發(fā)需要用的工作量,定量度量的結(jié)果可以用來比較兩個不同的設(shè)計或兩個不同算法的優(yōu)劣程序的定量的復(fù)雜程度可以作為模塊規(guī)模的精確限度。6.5.1McCabe方法McCabe方法根據(jù)程序控制流的復(fù)雜程度定量度量程序的復(fù)雜程度,這樣度量出的結(jié)果稱為程序的環(huán)形復(fù)雜度。1.流圖所謂流圖實質(zhì)上是“退化了的”程序流程圖,它僅僅描繪程序的控制流程,完全不表現(xiàn)對數(shù)據(jù)的具體操作以及分支或循環(huán)的具體條件。流圖中用圓表示結(jié)點,一個圓代表一條或多條語句。程序流程圖

溫馨提示

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

評論

0/150

提交評論