版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章詳細(xì)設(shè)計(jì)目標(biāo)設(shè)計(jì)人機(jī)交互界面利用結(jié)構(gòu)化程序設(shè)計(jì)工具設(shè)計(jì)程序藍(lán)圖計(jì)算程序藍(lán)圖復(fù)雜程度軟件生存周期第6章詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)階段的根本目標(biāo)是確定應(yīng)該怎樣具體地實(shí)現(xiàn)所要求的系統(tǒng)。詳細(xì)設(shè)計(jì)階段的任務(wù)還不是具體地編寫(xiě)程序,而是要設(shè)計(jì)出程序的“藍(lán)圖”,以后程序員將根據(jù)這個(gè)藍(lán)圖寫(xiě)出實(shí)際的程序代碼。詳細(xì)設(shè)計(jì)的結(jié)果基本上決定了最終的程序代碼的質(zhì)量。衡量程序的質(zhì)量的因素有:邏輯是否正確性能是否滿足要求是否容易閱讀和理解6.1結(jié)構(gòu)程序設(shè)計(jì)3種基本的控制結(jié)構(gòu)是“順序”、“選擇”和“循環(huán)”。6.13種基本的控制結(jié)構(gòu)6.1結(jié)構(gòu)程序設(shè)計(jì)結(jié)構(gòu)程序設(shè)計(jì)的經(jīng)典定義如下所述:“如果一個(gè)程序的代碼塊僅僅通過(guò)順序、選擇和循環(huán)這3種基本控制結(jié)構(gòu)進(jìn)行連接,并且每個(gè)代碼塊只有一個(gè)入口和一個(gè)出口,則稱這個(gè)程序是結(jié)構(gòu)化的?!鄙鲜鼋?jīng)典定義過(guò)于狹隘了,結(jié)構(gòu)程序設(shè)計(jì)本質(zhì)上并不是無(wú)GOTO語(yǔ)句的編程方法,而是一種使程序代碼容易閱讀、容易理解的編程方法。更全面的結(jié)構(gòu)程序設(shè)計(jì)的定義是:“結(jié)構(gòu)程序設(shè)計(jì)是盡可能少用GOTO語(yǔ)句的程序設(shè)計(jì)方法。最好僅在檢測(cè)出錯(cuò)誤時(shí)才使用GOTO語(yǔ)句,而且應(yīng)該總是使用前向GOTO語(yǔ)句?!?.1結(jié)構(gòu)程序設(shè)計(jì)為了實(shí)際使用方便起見(jiàn),常常還允許使用DO-UNTIL和DO-CASE兩種控制結(jié)構(gòu)。有時(shí)需要立即從循環(huán)(甚至嵌套的循環(huán))中轉(zhuǎn)移出來(lái),如果允許使用LEAVE(或BREAK)結(jié)構(gòu),則不僅方便而且會(huì)使效率提高很多。圖6.2其他常用的控制結(jié)構(gòu)6.1結(jié)構(gòu)程序設(shè)計(jì)如需要立即跳出當(dāng)前循環(huán),可使用LEAVE或BREAK結(jié)構(gòu)。經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì):只允許使用順序、IF_THEN_ELSE型分支和DO_WHILE型循環(huán)這三種基本控制結(jié)構(gòu)。擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì):還允許使用DO_CASE型多分支結(jié)構(gòu)和DO_UNTIL型循環(huán)結(jié)構(gòu)。修正的結(jié)構(gòu)程序設(shè)計(jì):再加上允許使用LEAVE(或BREAK)結(jié)構(gòu)。6.2人機(jī)界面設(shè)計(jì)人機(jī)界面設(shè)計(jì)是接口設(shè)計(jì)的一個(gè)重要的組成部分。對(duì)于交互式系統(tǒng)來(lái)說(shuō),人機(jī)界面設(shè)計(jì)和數(shù)據(jù)設(shè)計(jì)、體系結(jié)構(gòu)設(shè)計(jì)及過(guò)程設(shè)計(jì)一樣重要。近年來(lái),人機(jī)界面在系統(tǒng)中所占的比例越來(lái)越大,在個(gè)別系統(tǒng)中人機(jī)界面的設(shè)計(jì)工作量甚至占總設(shè)計(jì)量的一半以上。人機(jī)界面的設(shè)計(jì)質(zhì)量,直接影響用戶對(duì)軟件產(chǎn)品的評(píng)價(jià),從而影響軟件產(chǎn)品的競(jìng)爭(zhēng)力和壽命,因此,必須對(duì)人機(jī)界面設(shè)計(jì)給予足夠重視。6.2.1設(shè)計(jì)問(wèn)題在設(shè)計(jì)人機(jī)界面的過(guò)程中,幾乎總會(huì)遇到下述4個(gè)設(shè)計(jì)問(wèn)題:系統(tǒng)響應(yīng)時(shí)間用戶幫助設(shè)施出錯(cuò)信息處理命令交互許多設(shè)計(jì)者直到設(shè)計(jì)過(guò)程后期才開(kāi)始考慮這些問(wèn)題,這樣做往往導(dǎo)致出現(xiàn)不必要的設(shè)計(jì)反復(fù)、項(xiàng)目延期和用戶產(chǎn)生挫折感。最好在設(shè)計(jì)初期給予重視,此時(shí)修改容易、代價(jià)也低。6.2.1設(shè)計(jì)問(wèn)題1.系統(tǒng)響應(yīng)時(shí)間系統(tǒng)響應(yīng)時(shí)間指從用戶完成某個(gè)控制動(dòng)作(如點(diǎn)擊鼠標(biāo)),到軟件給出預(yù)期的響應(yīng)之間的這段時(shí)間。系統(tǒng)響應(yīng)時(shí)間有兩個(gè)重要屬性,分別是長(zhǎng)度和易變性。系統(tǒng)響應(yīng)時(shí)間過(guò)長(zhǎng)或過(guò)短都不好。易變性指系統(tǒng)響應(yīng)時(shí)間相對(duì)于平均響應(yīng)時(shí)間的偏差。即使系統(tǒng)響應(yīng)時(shí)間較長(zhǎng),響應(yīng)時(shí)間易變性低也有助于用戶建立起穩(wěn)定的工作節(jié)奏。6.2.1設(shè)計(jì)問(wèn)題2.用戶幫助設(shè)施幾乎交互式系統(tǒng)的每個(gè)用戶都需要幫助,當(dāng)遇到復(fù)雜問(wèn)題時(shí)甚至需要查看用戶手冊(cè)以尋找答案。常見(jiàn)的幫助設(shè)施可分為集成的和附加的兩類(lèi)。集成的幫助設(shè)施從一開(kāi)始就設(shè)計(jì)在軟件里面,可以縮短用戶獲得幫助的時(shí)間,增加界面的友好性。附加的幫助設(shè)施是在系統(tǒng)建成后再添加到軟件中的,在多數(shù)情況下它實(shí)際上是一種查詢能力有限的聯(lián)機(jī)用戶手冊(cè)。普遍認(rèn)為,集成的幫助設(shè)施優(yōu)于附加的幫助設(shè)施。6.2.1設(shè)計(jì)問(wèn)題具體設(shè)計(jì)幫助設(shè)施時(shí),必須解決下述的一系列問(wèn)題:(1)在用戶與系統(tǒng)交互期間,是否在任何時(shí)候都能獲得關(guān)于系統(tǒng)任何功能的幫助信息?有兩種選擇:提供部分功能的幫助信息和提供全部功能的幫助信息。(2)用戶怎樣請(qǐng)求幫助?有3種選擇:幫助菜單,特殊功能鍵和HELP命令。(3)怎樣顯示幫助信息?有3種選擇:在獨(dú)立的窗口中,指出參考某個(gè)文檔(不理想)和在屏幕固定位置顯示簡(jiǎn)短提示。(4)用戶怎樣返回到正常的交互方式中?有兩種選擇:屏幕上的返回按鈕和功能鍵。(5)怎樣組織幫助信息?有3種選擇:平面結(jié)構(gòu),信息的層次結(jié)構(gòu)和超文本結(jié)構(gòu)。6.2.1設(shè)計(jì)問(wèn)題3.出錯(cuò)信息處理出錯(cuò)信息和警告信息,是出現(xiàn)問(wèn)題時(shí)交互式系統(tǒng)給出的“壞消息”。出錯(cuò)信息設(shè)計(jì)得不好,將向用戶提供無(wú)用的甚至誤導(dǎo)的信息,反而會(huì)加重用戶的挫折感。一般說(shuō)來(lái),交互式系統(tǒng)給出的出錯(cuò)信息或警告信息,應(yīng)該具有下述屬性。(1)信息應(yīng)該用用戶可以理解的術(shù)語(yǔ)描述問(wèn)題。(2)信息應(yīng)該提供有助于從錯(cuò)誤中恢復(fù)的建設(shè)性意見(jiàn)。6.2.1設(shè)計(jì)問(wèn)題(3)信息應(yīng)該指出錯(cuò)誤可能導(dǎo)致哪些負(fù)面后果(例如,破壞數(shù)據(jù)文件),以便用戶檢查是否出現(xiàn)了這些問(wèn)題,并在確實(shí)出現(xiàn)問(wèn)題時(shí)及時(shí)解決。(4)信息應(yīng)該伴隨著聽(tīng)覺(jué)上或視覺(jué)上的提示,例如,在顯示信息時(shí)同時(shí)發(fā)出警告鈴聲,或者信息用閃爍方式顯示,或者信息用明顯表示出錯(cuò)的顏色顯示。(5)信息不能帶有指責(zé)色彩,也就是說(shuō),不能責(zé)怪用戶。當(dāng)確實(shí)出現(xiàn)了問(wèn)題的時(shí)候,有效的出錯(cuò)信息能提高交互式系統(tǒng)的質(zhì)量,減輕用戶的挫折感。6.2.1設(shè)計(jì)問(wèn)題4.命令交互命令行曾經(jīng)是用戶和系統(tǒng)軟件交互的最常用的方式,并且也曾經(jīng)廣泛地用于各種應(yīng)用軟件中。現(xiàn)在,面向窗口的、點(diǎn)擊和拾取方式的界面已經(jīng)減少了用戶對(duì)命令行的依賴,但是,許多高級(jí)用戶仍然偏愛(ài)面向命令行的交互方式。在多數(shù)情況下,用戶既可以從菜單中選擇軟件功能,也可以通過(guò)鍵盤(pán)命令序列調(diào)用軟件功能。6.2.1設(shè)計(jì)問(wèn)題在提供命令交互方式時(shí),必須考慮下列設(shè)計(jì)問(wèn)題。(1)是否每個(gè)菜單選項(xiàng)都有對(duì)應(yīng)的命令?(2)采用何種命令形式?有3種選擇:控制序列(例如,Ctrl+P),功能鍵和鍵入命令。(3)學(xué)習(xí)和記憶命令的難度有多大?忘記了命令怎么辦?(4)用戶是否可以定制或縮寫(xiě)命令?6.2.2設(shè)計(jì)過(guò)程用戶界面設(shè)計(jì)是一個(gè)迭代的過(guò)程。通常先利用用戶界面工具或用戶界面開(kāi)發(fā)系統(tǒng)建立起用戶界面的原型由用戶試用和評(píng)估,以確定其是否滿足用戶的需求然后根據(jù)用戶意見(jiàn)進(jìn)行修改,直到用戶感到滿意,不需要再修改界面設(shè)計(jì)時(shí)為止6.2.3人機(jī)界面設(shè)計(jì)指南用戶界面設(shè)計(jì)主要依靠設(shè)計(jì)者的經(jīng)驗(yàn)??偨Y(jié)眾多設(shè)計(jì)者的經(jīng)驗(yàn)得出的設(shè)計(jì)指南,有助于設(shè)計(jì)者設(shè)計(jì)出友好、高效的人機(jī)界面。1.一般交互指南2.信息顯示指南3.數(shù)據(jù)輸入指南6.2.3人機(jī)界面設(shè)計(jì)指南1.一般交互指南(1)保持一致性。(2)提供有意義的反饋。(3)在執(zhí)行有較大破壞性的動(dòng)作之前要求用戶確認(rèn)。(4)允許取消絕大多數(shù)操作。(5)減少在兩次操作之間必須記憶的信息量。6.2.3人機(jī)界面設(shè)計(jì)指南2.信息顯示指南(1)只顯示與當(dāng)前內(nèi)容有關(guān)的信息。(2)窗口顯示的一致性。(3)產(chǎn)生有意義的出錯(cuò)信息。(4)必要時(shí),用圖形化的方式顯示信息。6.2.3人機(jī)界面設(shè)計(jì)指南3.數(shù)據(jù)輸入指南(1)盡量減少用戶的輸入動(dòng)作,下拉框就是一個(gè)很好的選擇。(2)允許編輯。(3)重要操作提示確認(rèn)。(4)交互的方式應(yīng)該靈活,允許用戶選擇喜歡的輸入方式。(5)提示輸入的格式和范圍。6.3過(guò)程設(shè)計(jì)的工具描述程序處理過(guò)程的工具稱為過(guò)程設(shè)計(jì)的工具,有三種:圖形、表格和語(yǔ)言。圖形工具:如程序流程圖、盒圖(N-S圖)和PAD圖表格工具:如判定表過(guò)程設(shè)計(jì)語(yǔ)言:是一種用于描述模塊算法設(shè)計(jì)和處理細(xì)節(jié)的語(yǔ)言工具。任何一種過(guò)程設(shè)計(jì)工具都必須提供對(duì)設(shè)計(jì)的無(wú)歧義的描述,即應(yīng)該能指明控制流程、處理功能、數(shù)據(jù)組織以及其它方面的實(shí)現(xiàn)細(xì)節(jié),從而在編碼階段能把對(duì)設(shè)計(jì)的描述直接翻譯成程序代碼。6.3.1程序流程圖(程序框圖)程序流程圖是歷史最悠久、使用最廣泛的描述過(guò)程設(shè)計(jì)的方法,也是用得最混亂的一種方法。程序流程圖中使用的各種符號(hào):6.3.1程序流程圖例如:計(jì)算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程序流程圖程序流程圖的主要缺點(diǎn)如下:(1)程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過(guò)早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu)。(2)程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制。(3)程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu)。6.3.1程序流程圖例:畫(huà)出下列偽程序的程序流程圖。STARTIFpTHENWHILEqDOfENDDOELSEgnENDIFSTOP6.3.1盒圖(N-S圖)N-S圖特點(diǎn):(1)功能域(即,一個(gè)特定控制結(jié)構(gòu)的作用域)明確,可以從盒圖上一眼就看出來(lái)。(2)沒(méi)有箭頭,不可能任意轉(zhuǎn)移控制。(3)很容易確定局部和全程數(shù)據(jù)的作用域。(4)很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。6.3.1盒圖(N-S圖)圖6.4盒圖的基本符號(hào)6.3.1程序流程圖例:畫(huà)出下列偽程序的盒圖。STARTIFpTHENWHILEqDOfENDDOELSEgnENDIFSTOP6.3.1程序流程圖例:畫(huà)出下列偽程序的盒圖。gnWhilepdoifqthena1a2elsewhilerdob1b2enddoendifenddo6.3.3PAD圖(問(wèn)題分析圖)PAD圖用二維樹(shù)形結(jié)構(gòu)的圖來(lái)表示程序的控制流,將這種圖翻譯成程序代碼比較容易。圖中最左邊的豎線是程序的主線,即第一層結(jié)構(gòu)隨著程序?qū)哟蔚脑黾樱琍AD圖逐漸向右延伸,每增加一個(gè)層次,圖形向右擴(kuò)展一條豎線PAD圖中豎線的總條數(shù)就是程序的層次數(shù)6.3.3PAD圖(問(wèn)題分析圖)PAD圖的基本符號(hào)有:6.3.3PAD圖(問(wèn)題分析圖)PAD圖的主要優(yōu)點(diǎn):使用PAD符號(hào)設(shè)計(jì)出來(lái)的程序必然是結(jié)構(gòu)化程序。PAD圖所描繪的程序結(jié)構(gòu)十分清晰。用PAD圖表現(xiàn)程序邏輯,易讀、易懂、易記。程序從圖中最左邊豎線上端的結(jié)點(diǎn)開(kāi)始執(zhí)行,自上而下,從左向右順序執(zhí)行,遍歷所有結(jié)點(diǎn)PAD圖易于向高級(jí)語(yǔ)言轉(zhuǎn)換。PAD圖的符號(hào)支持自頂向下、逐步求精方法的使用。開(kāi)始設(shè)計(jì)者可以定義一個(gè)抽象的程序,隨著設(shè)計(jì)工作的深入而使用def符號(hào)逐步增加細(xì)節(jié),直至完成詳細(xì)設(shè)計(jì)。
6.3.3PAD圖(問(wèn)題分析圖)圖6.6使用PAD圖提供的定義功能來(lái)逐步求精的例子6.3.3PAD圖(問(wèn)題分析圖)例:畫(huà)出下列偽程序的PAD圖。STARTIFpTHENWHILEqDOfENDDOELSEgnENDIFSTOP6.3.3PAD圖(問(wèn)題分析圖)例:畫(huà)出下列偽程序的PAD圖。gnWhilepdoifqthena1a2elsewhilerdob1b2enddoendifenddo6.3.4判定表當(dāng)算法中包含多重嵌套的條件選擇時(shí),用程序流程圖、盒圖、PAD圖、PDL都不易清楚地描述。然而判定表卻能夠清晰地表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對(duì)應(yīng)關(guān)系。一張判定表由4部分組成:左上部列出所有條件左下部是所有可能做的動(dòng)作右上部是表示各種條件組合的一個(gè)矩陣右下部是和每種條件組合相對(duì)應(yīng)的動(dòng)作6.3.4判定表假設(shè)某航空公司規(guī)定,乘客可以免費(fèi)托運(yùn)重量不超過(guò)30公斤的行李。當(dāng)行李重量超過(guò)30公斤時(shí):對(duì)頭等艙的國(guó)內(nèi)乘客超重部分每公斤收費(fèi)4元;對(duì)其他艙的國(guó)內(nèi)乘客超重部分每公斤收費(fèi)6元;對(duì)外國(guó)乘客超重部分每公斤收費(fèi)比國(guó)內(nèi)乘客多一倍;對(duì)殘疾乘客超重部分每公斤收費(fèi)比正常乘客少一半。6.3.4判定表6.3.4判定表優(yōu)點(diǎn):判定表能夠簡(jiǎn)潔而又無(wú)歧義地描述處理規(guī)則。缺點(diǎn):判定表并不適于作為一種通用的設(shè)計(jì)工具,沒(méi)有一種簡(jiǎn)單的方法使它能同時(shí)清晰地表示順序和重復(fù)等處理特性。6.3.5判定樹(shù)判定表雖然能清晰地表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對(duì)應(yīng)關(guān)系,但其含義卻不是一眼就能看出來(lái)的,初次接觸這種工具的人理解它需要有一個(gè)簡(jiǎn)短的學(xué)習(xí)過(guò)程。判定樹(shù)是判定表的變種,它能清晰地表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對(duì)應(yīng)關(guān)系。優(yōu)點(diǎn):它的形式簡(jiǎn)單到不需任何說(shuō)明,一眼就可以看出其含義,因此易于掌握和使用。6.3.5判定樹(shù)6.3.6過(guò)程設(shè)計(jì)語(yǔ)言(偽碼)過(guò)程設(shè)計(jì)語(yǔ)言(PDL)是用正文形式表示數(shù)據(jù)和處理過(guò)程的設(shè)計(jì)工具。PDL具有嚴(yán)格的關(guān)鍵字外部語(yǔ)法,用于定義控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)PDL表示實(shí)際操作和條件的內(nèi)部語(yǔ)法通常又是靈活自由的,可以適應(yīng)各種工程項(xiàng)目的需要。一般說(shuō)來(lái),PDL是一種“混雜”語(yǔ)言,它使用一種語(yǔ)言的詞匯,同時(shí)卻使用另一種語(yǔ)言(某種結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言)的語(yǔ)法。6.3.6過(guò)程設(shè)計(jì)語(yǔ)言(偽碼)PROCEDURESumBeginLetthevalueofSumbe0Letthevalueofibe1REPEATEwhilei<=100s=s+ii=i+1ENDREPENDSum6.3.6過(guò)程設(shè)計(jì)語(yǔ)言(偽碼)PDL作為一種設(shè)計(jì)工具有如下一些優(yōu)點(diǎn):(1)可以作為注釋直接插在源程序中間。這樣做能促使維護(hù)人員在修改程序代碼的同時(shí)也相應(yīng)地修改PDL注釋?zhuān)虼擞兄诒3治臋n和程序的一致性,提高了文檔的質(zhì)量。(2)可以使用普通的正文編輯程序或文字處理系統(tǒng),很方便地完成PDL的書(shū)寫(xiě)和編輯工作。(3)已經(jīng)有自動(dòng)處理程序存在,而且可以自動(dòng)由PDL生成程序代碼。PDL的缺點(diǎn)是不如圖形工具形象直觀,描述復(fù)雜的條件組合與動(dòng)作間的對(duì)應(yīng)關(guān)系時(shí),不如判定表清晰簡(jiǎn)單。6.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法,根據(jù)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)程序處理過(guò)程的方法。數(shù)據(jù)結(jié)構(gòu)既影響程序的結(jié)構(gòu)又影響程序的處理過(guò)程,重復(fù)出現(xiàn)的數(shù)據(jù)通常由具有循環(huán)控制結(jié)構(gòu)的程序來(lái)處理,選擇數(shù)據(jù)要用帶有分支控制結(jié)構(gòu)的程序來(lái)處理。6.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法的最終目標(biāo)是得出對(duì)程序處理過(guò)程的描述。此方法最適合于詳細(xì)設(shè)計(jì)階段使用。在完成了軟件結(jié)構(gòu)設(shè)計(jì)之后,可以使用面向數(shù)據(jù)結(jié)構(gòu)的方法來(lái)設(shè)計(jì)每個(gè)模塊的處理過(guò)程。Jackson方法是最著名的面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法。使用面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法,首先需要分析確定數(shù)據(jù)結(jié)構(gòu),并且用適當(dāng)?shù)墓ぞ撸↗ackson圖)清晰地描繪數(shù)據(jù)結(jié)構(gòu)。6.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法6.4.1Jackson圖程序中數(shù)據(jù)元素彼此間的邏輯關(guān)系卻只有順序、選擇和重復(fù)3類(lèi),對(duì)應(yīng)的邏輯數(shù)據(jù)結(jié)構(gòu)也有3類(lèi)。1.順序結(jié)構(gòu)順序結(jié)構(gòu)的數(shù)據(jù)由一個(gè)或多個(gè)數(shù)據(jù)元素組成,每個(gè)元素按確定次序出現(xiàn)一次。圖6.8
A由B、C、D3個(gè)元素順序組成6.4.1Jackson圖2.選擇結(jié)構(gòu)選擇結(jié)構(gòu)的數(shù)據(jù)包含兩個(gè)或多個(gè)數(shù)據(jù)元素,每次使用這個(gè)數(shù)據(jù)時(shí)按一定條件從這些數(shù)據(jù)元素中選擇一個(gè)。圖6.9根據(jù)條件A是B或C或D中的某一個(gè)6.4.1Jackson圖3.重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu)的數(shù)據(jù),根據(jù)使用時(shí)的條件由一個(gè)數(shù)據(jù)元素出現(xiàn)零次或多次構(gòu)成。圖6.10A由B出現(xiàn)N次(N≥0)組成注意:B的右上角有星號(hào)標(biāo)記6.4.1Jackson圖Jackson圖有下述優(yōu)點(diǎn):便于表示層次結(jié)構(gòu),而且是對(duì)結(jié)構(gòu)進(jìn)行自頂向下分解的有力工具;形象直觀可讀性好;既能表示數(shù)據(jù)結(jié)構(gòu)也能表示程序結(jié)構(gòu)(因?yàn)榻Y(jié)構(gòu)程序設(shè)計(jì)也只使用上述3種基本控制結(jié)構(gòu))。Jackson圖的缺點(diǎn):選擇/循環(huán)條件不能直接在圖上表示出來(lái),影響圖的表達(dá)能力不易直接把圖翻譯成程序不易在打印機(jī)上輸出6.4.2改進(jìn)的Jackson圖順序結(jié)構(gòu)選擇結(jié)構(gòu),i為分支條件編號(hào)可選結(jié)構(gòu)重復(fù)結(jié)構(gòu),結(jié)束條件編號(hào)為i6.4.2改進(jìn)的Jackson圖Jackson圖實(shí)質(zhì)上是對(duì)層次方框圖(是描繪數(shù)據(jù)結(jié)構(gòu)的形式化工具)的一種精化。Jackson圖和描繪軟件結(jié)構(gòu)的層次圖形式相當(dāng)類(lèi)似,但是含義卻很不相同。層次圖中一個(gè)方框代表一個(gè)模塊;而Jackson圖中一個(gè)方框只代表幾個(gè)語(yǔ)句;層次圖表現(xiàn)的是調(diào)用關(guān)系;而Jackson圖表現(xiàn)的是組成關(guān)系。6.4.3Jackson方法
Jackson方法是面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法。Jackson方法定義了一組以數(shù)據(jù)結(jié)構(gòu)為指導(dǎo)的映射過(guò)程,它根據(jù)輸入、輸出的數(shù)據(jù)結(jié)構(gòu),按一定的規(guī)則映射成軟件的過(guò)程描述,即程序結(jié)構(gòu)。Jackson結(jié)構(gòu)程序設(shè)計(jì)方法基本上由下述5個(gè)步驟組成:第一步分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描繪這兩組數(shù)據(jù)結(jié)構(gòu)。第二步找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元。6.4.3Jackson方法所謂有對(duì)應(yīng)關(guān)系是指有直接的因果關(guān)系,在程序中可以同時(shí)處理的數(shù)據(jù)單元(對(duì)于重復(fù)出現(xiàn)的數(shù)據(jù)單元必須重復(fù)的次序和次數(shù)都相同才可能有對(duì)應(yīng)關(guān)系)。輸出數(shù)據(jù)總是通過(guò)對(duì)輸入數(shù)據(jù)的處理而得到的,因此在輸入輸出數(shù)據(jù)結(jié)構(gòu)最高層次的兩個(gè)單元總是有對(duì)應(yīng)關(guān)系的。6.4.3Jackson方法第三步用下述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)層次畫(huà)一個(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)層次分別為它們畫(huà)上對(duì)應(yīng)的處理框;6.4.3Jackson方法第三,根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫(huà)上對(duì)應(yīng)的處理框。在導(dǎo)出程序結(jié)構(gòu)圖的過(guò)程中,由于改進(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圖是完全對(duì)應(yīng)的,下面是和3種基本結(jié)構(gòu)對(duì)應(yīng)的偽碼。和圖6.11(a)所示的順序結(jié)構(gòu)對(duì)應(yīng)的偽碼,其中‘seq’和‘end’是關(guān)鍵字: A seq B C D A end6.4.3Jackson方法和圖6.11(b)所示的選擇結(jié)構(gòu)對(duì)應(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)對(duì)應(yīng)的偽碼,其中‘iter’、‘until’、‘while’和‘end’是關(guān)鍵字,cond是條件: A iteruntil(或while)cond B A end6.4.3Jackson方法下面結(jié)合一個(gè)例子說(shuō)明Jackson結(jié)構(gòu)程序設(shè)計(jì)方法一個(gè)正文文件由若干個(gè)記錄組成,每個(gè)記錄是一個(gè)字符串。要求統(tǒng)計(jì)每個(gè)記錄中空格字符的個(gè)數(shù),以及文件中空格字符的總個(gè)數(shù)。要求的輸出數(shù)據(jù)格式是,每復(fù)制一行輸入字符串之后,另起一行印出這個(gè)字符串中的空格數(shù),最后印出文件中空格的總個(gè)數(shù)。6.4.3Jackson方法第一步分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描繪這兩組數(shù)據(jù)結(jié)構(gòu)。
對(duì)于統(tǒng)計(jì)空格這個(gè)簡(jiǎn)單例子而言,其輸入和輸出數(shù)據(jù)的結(jié)構(gòu)分別為:6.4.3Jackson方法6.4.3Jackson方法第二步找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元。上圖中用一對(duì)虛線箭頭把有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元連接起來(lái)6.4.3Jackson方法第三步用3條規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的Jackson圖對(duì)于統(tǒng)計(jì)空格的例子,得到的程序結(jié)構(gòu)圖如下:6.4.3Jackson方法第四步列出所有操作和條件(包括分支條件和循環(huán)結(jié)束條件),并且把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。對(duì)于統(tǒng)計(jì)空格的例子,需要的全部操作和條件如下:(1)停止(2)打開(kāi)文件(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方法第五步用偽碼表示程序。因?yàn)镴ackson使用的偽碼和Jackson圖之間存在簡(jiǎn)單的對(duì)應(yīng)關(guān)系,所以從圖6.14很容易得出下面的偽碼:6.4.3Jackson方法統(tǒng)計(jì)空格seq 打開(kāi)文件 讀入字符串 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)計(jì)空格end6.5程序復(fù)雜程度的定量度量定量度量程序復(fù)雜程度的方法很有價(jià)值把程序的復(fù)雜程度乘以適當(dāng)常數(shù)即可估算出軟件中錯(cuò)誤的數(shù)量以及軟件開(kāi)發(fā)需要用的工作量,定量度量的結(jié)果可以用來(lái)比較兩個(gè)不同的設(shè)計(jì)或兩個(gè)不同算法的優(yōu)劣程序的定量的復(fù)雜程度可以作為模塊規(guī)模的精確限度。6.5.1McCabe方法McCabe方法根據(jù)程序控制流的復(fù)雜程度定量度量程序的復(fù)雜程度,這樣度量出的結(jié)果稱為程序的環(huán)形復(fù)雜度。1.流圖所謂流圖實(shí)質(zhì)上是“退化了的”程序流程圖,它僅僅描繪程序的控制流程,完全不表現(xiàn)對(duì)數(shù)據(jù)的具體操作以及分支或循環(huán)的具體條件。流圖中用圓表示結(jié)點(diǎn),一個(gè)圓代表一條或多條語(yǔ)句。程序流程圖
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度餐飲廚房能源消耗分析與節(jié)能減排承包合同3篇
- 2025年度區(qū)塊鏈技術(shù)研究人員保密協(xié)議及項(xiàng)目合作條款3篇
- 2025年度時(shí)尚服飾品牌代理供貨合作協(xié)議4篇
- 2025年度二零二五年度生態(tài)旅游區(qū)場(chǎng)攤位租賃管理協(xié)議4篇
- 2025年度企業(yè)年會(huì)策劃與演出服務(wù)合同4篇
- 2025年度服裝服飾貨款抵押銷(xiāo)售合同范本4篇
- 2024石材石材石材運(yùn)輸保險(xiǎn)服務(wù)合作協(xié)議3篇
- 2025年度柴油發(fā)動(dòng)機(jī)技術(shù)培訓(xùn)合同4篇
- 2025年度體育賽事場(chǎng)地冠名權(quán)及推廣合作合同4篇
- 二零二五年度防盜門(mén)行業(yè)展會(huì)贊助合作合同3篇
- 意識(shí)障礙患者的護(hù)理診斷及措施
- 2024版《53天天練單元?dú)w類(lèi)復(fù)習(xí)》3年級(jí)語(yǔ)文下冊(cè)(統(tǒng)編RJ)附參考答案
- 2025企業(yè)年會(huì)盛典
- 215kWh工商業(yè)液冷儲(chǔ)能電池一體柜用戶手冊(cè)
- 場(chǎng)地平整施工組織設(shè)計(jì)-(3)模板
- 交通設(shè)施設(shè)備供貨及技術(shù)支持方案
- 美容美發(fā)店火災(zāi)應(yīng)急預(yù)案
- 餐車(chē)移動(dòng)食材配送方案
- 項(xiàng)目工程師年終總結(jié)課件
- 一年級(jí)口算練習(xí)題大全(可直接打印A4)
- 電動(dòng)車(chē)棚消防應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論