第三章軟件相關(guān)設(shè)計(jì)_第1頁(yè)
第三章軟件相關(guān)設(shè)計(jì)_第2頁(yè)
第三章軟件相關(guān)設(shè)計(jì)_第3頁(yè)
第三章軟件相關(guān)設(shè)計(jì)_第4頁(yè)
第三章軟件相關(guān)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩94頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第三章軟件設(shè)計(jì)

§3.1軟件設(shè)計(jì)的基本任務(wù)

§3.2總體設(shè)計(jì)(SD)

§3.3詳細(xì)設(shè)計(jì)(SD) §3.4面向?qū)ο蟮脑O(shè)計(jì)

§3.5用戶界面設(shè)計(jì)

§3.6設(shè)計(jì)質(zhì)量的度量

§3.7軟件設(shè)計(jì)CASE工具第三章軟件相關(guān)設(shè)計(jì)§3.1軟件設(shè)計(jì)的基本任務(wù)-總體設(shè)計(jì)總體設(shè)計(jì)的基本任務(wù)概要地回答系統(tǒng)應(yīng)該如何實(shí)現(xiàn)總體設(shè)計(jì)的兩項(xiàng)任務(wù):劃分出組成系統(tǒng)的物理元素----程序、文件、數(shù)據(jù)庫(kù)、人工過(guò)程和文檔設(shè)計(jì)軟件的結(jié)構(gòu)----確定每個(gè)程序的模塊組成及模塊之間的相互關(guān)系??傮w設(shè)計(jì)的過(guò)程:系統(tǒng)設(shè)計(jì):確定系統(tǒng)的具體實(shí)現(xiàn)方案。結(jié)構(gòu)設(shè)計(jì):確定軟件結(jié)構(gòu)。第三章軟件相關(guān)設(shè)計(jì)§3.1軟件設(shè)計(jì)的基本任務(wù)-總體設(shè)計(jì)(續(xù))設(shè)想供選擇的方案數(shù)據(jù)流圖選取合理的方案

系統(tǒng)流程圖組成系統(tǒng)的物理元素清單成本/效益分析實(shí)現(xiàn)系統(tǒng)的進(jìn)度計(jì)劃

功能分解設(shè)計(jì)軟件結(jié)構(gòu)制訂測(cè)試計(jì)劃數(shù)據(jù)庫(kù)設(shè)計(jì)書寫文檔

系統(tǒng)說(shuō)明用戶手冊(cè)測(cè)試計(jì)劃詳細(xì)的實(shí)現(xiàn)計(jì)劃數(shù)據(jù)庫(kù)設(shè)計(jì)結(jié)果審查和復(fù)審?fù)扑]最佳方案第三章軟件相關(guān)設(shè)計(jì)§3.1軟件設(shè)計(jì)的基本任務(wù)(續(xù))詳細(xì)設(shè)計(jì)的基本任務(wù)詳細(xì)設(shè)計(jì)是總體設(shè)計(jì)的進(jìn)一步具體化,主要確定每個(gè)模塊的具體執(zhí)行過(guò)程具體任務(wù)如下:1)為每個(gè)模塊進(jìn)行詳細(xì)的算法設(shè)計(jì)2)為模塊內(nèi)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計(jì)3)對(duì)數(shù)據(jù)庫(kù)進(jìn)行物理設(shè)計(jì)4)界面設(shè)計(jì)5)其他設(shè)計(jì)6)編寫文檔7)評(píng)審第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)在軟件設(shè)計(jì)中,要遵循一些基本的軟件設(shè)計(jì)原理。1模塊化把程序劃分成若干個(gè)模塊,每個(gè)模塊完成一個(gè)子功能,把這些模塊集總起來(lái)組成一個(gè)整體,可以完成指定的功能,滿足問(wèn)題的求解。模塊是由邊界元素限定的相鄰程序元素(例如數(shù)據(jù)說(shuō)明,可執(zhí)行的語(yǔ)句)的序列,而且有個(gè)總體標(biāo)識(shí)符代表它。C(P1+P2)>C(P1)+C(P2)E(P1+P2)>E(P1)+E(P2)成本模塊數(shù)目成本/模塊接口成本最小成本區(qū)模塊化和軟件成本第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)2模塊獨(dú)立性每個(gè)模塊完成一個(gè)相對(duì)獨(dú)立的子功能,并且和其他模塊之間的關(guān)系很簡(jiǎn)單耦合和內(nèi)聚兩個(gè)定性標(biāo)準(zhǔn)度量耦合:一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。數(shù)據(jù)耦合:模塊之間通過(guò)參數(shù)交換數(shù)據(jù)信息。控制耦合:模塊之間傳遞的參數(shù)含有控制信息。公共環(huán)境耦合:兩個(gè)或多個(gè)模塊通過(guò)一個(gè)公共數(shù)據(jù)環(huán)境相互作用。內(nèi)容耦合:。。。。。。設(shè)計(jì)原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共環(huán)境耦合,完全不用內(nèi)容耦合。數(shù)據(jù)耦合控制耦合公共環(huán)境耦合內(nèi)容耦合低高第三章軟件相關(guān)設(shè)計(jì)耦合非直接耦合數(shù)據(jù)耦合特征耦合控制耦合5。公共環(huán)境耦合6。內(nèi)容耦合弱耦合中耦合較強(qiáng)耦合強(qiáng)耦合模塊1模塊2模塊3模塊4數(shù)據(jù)耦合通過(guò)簡(jiǎn)單變量交換數(shù)據(jù)特征耦合通過(guò)數(shù)據(jù)結(jié)構(gòu)交換數(shù)據(jù)非直接耦合模塊之間沒(méi)有信息傳遞模塊A模塊B模塊C模塊D模塊L模塊NFlag=1?S1S2模塊1控制耦合模塊之間傳遞的是控制信息TF模塊A

模塊B內(nèi)容耦合

訪問(wèn)其它模塊的內(nèi)部數(shù)據(jù)直接跳到其他模塊內(nèi)部執(zhí)行公共環(huán)境耦合通過(guò)公共數(shù)據(jù)環(huán)境相互作用第三章軟件相關(guān)設(shè)計(jì)內(nèi)聚:一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度。

偶然內(nèi)聚:一個(gè)模塊完成一組任務(wù),任務(wù)之間的關(guān)系很松散。公共語(yǔ)句。邏輯內(nèi)聚:若干個(gè)邏輯功能類似的任務(wù)組成一個(gè)模塊。時(shí)間內(nèi)聚:若干個(gè)任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行。如初始化工作。低內(nèi)聚中內(nèi)聚高內(nèi)聚過(guò)程內(nèi)聚:模塊內(nèi)的處理元素是相關(guān)的,且必須以特定次序執(zhí)行。通信內(nèi)聚:模塊中所有元素都使用同一個(gè)輸入數(shù)據(jù),和/或產(chǎn)生同一個(gè)輸出數(shù)據(jù)。順序內(nèi)聚:模塊中所有處理元素和同一個(gè)功能密切相關(guān),且這些處理必須順序執(zhí)行,通常上一個(gè)任務(wù)的輸出是下一個(gè)任務(wù)的輸入。功能內(nèi)聚:所有處理元素屬于一個(gè)整體,完成一個(gè)單一的功能。ABCS1;S2;ABC模塊D模塊ABC第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)3抽象與細(xì)化在抽象的最高層次使用問(wèn)題環(huán)境語(yǔ)言,以概括的方式敘述問(wèn)題的解法在較低抽象層次采用更過(guò)程化的方法,把面向問(wèn)題的術(shù)語(yǔ)和面向?qū)崿F(xiàn)的術(shù)語(yǔ)結(jié)合起來(lái)敘述問(wèn)題的解法在最低的抽象層次用可以直接實(shí)現(xiàn)的方式敘述問(wèn)題的解法細(xì)化與抽象是緊密相關(guān)的,在軟件過(guò)程的每一步都是對(duì)軟件解法的抽象層次的一次細(xì)化第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)3信息隱蔽在設(shè)計(jì)和確定模塊時(shí),使一個(gè)模塊包含的信息(過(guò)程和數(shù)據(jù))對(duì)于不需要這些信息的模塊來(lái)說(shuō),是不能訪問(wèn)的。在面向?qū)ο蠓椒ㄖ?,?duì)象的封裝性很自然地支持了信息隱蔽地思想。在結(jié)構(gòu)化方法中,要求模塊內(nèi)地信息要局部化4可重用性同一事物不做修改或稍加修改就能夠多次重復(fù)使用——重用(再生復(fù)用)軟件復(fù)用:數(shù)據(jù)復(fù)用、模塊復(fù)用、結(jié)構(gòu)復(fù)用、設(shè)計(jì)復(fù)用和規(guī)格說(shuō)明書復(fù)用第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)啟發(fā)式規(guī)則人們?cè)陂_發(fā)計(jì)算機(jī)軟件的長(zhǎng)期實(shí)踐中積累了豐富的經(jīng)驗(yàn),總結(jié)這些經(jīng)驗(yàn)得出了一些啟發(fā)式規(guī)則。這些啟發(fā)式規(guī)則雖然不像上一節(jié)講述的基本原理和概念那樣普遍適用,但是在許多場(chǎng)合仍然能給軟件工程師以有益的啟示,往往能幫助他們找到改進(jìn)軟件設(shè)計(jì)提高軟件質(zhì)量的途徑。下面介紹幾條啟發(fā)式規(guī)則改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性模塊規(guī)模應(yīng)該適中深度、寬度、扇入、扇出都應(yīng)適當(dāng)模塊的作用域應(yīng)該在控制域之內(nèi)力爭(zhēng)降低模塊接口的復(fù)雜程度設(shè)計(jì)單入口單出口的模塊模塊的功能應(yīng)該可以預(yù)測(cè)第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)1.改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性設(shè)計(jì)出軟件的初步結(jié)構(gòu)以后,應(yīng)該審查分析這個(gè)結(jié)構(gòu),通過(guò)模塊分解或合并,力求降低耦合提高內(nèi)聚。例如,多個(gè)模塊公有的一個(gè)子功能可以獨(dú)立成一個(gè)模塊,由這些模塊調(diào)用;有時(shí)可以通過(guò)分解或合并模塊以減少控制信息的傳遞及對(duì)全程數(shù)據(jù)的引用,并且降低接口的復(fù)雜程度。2.模塊規(guī)模應(yīng)該適中經(jīng)驗(yàn)表明,一個(gè)模塊的規(guī)模不應(yīng)過(guò)大,最好能寫在一頁(yè)紙內(nèi)(通常不超過(guò)60行語(yǔ)句)。有人從心理學(xué)角度研究得知,當(dāng)一個(gè)模塊包含的語(yǔ)句數(shù)超過(guò)30以后,模塊的可理解程度迅速下降。過(guò)大的模塊往往是由于分解不充分,但是進(jìn)一步分解必須符合問(wèn)題結(jié)構(gòu),一般說(shuō)來(lái),分解后不應(yīng)該降低模塊獨(dú)立性。過(guò)小的模塊開銷大于有效操作,而且模塊數(shù)目過(guò)多將使系統(tǒng)接口復(fù)雜。因此過(guò)小的模塊有時(shí)不值得單獨(dú)存在,特別是只有一個(gè)模塊調(diào)用它時(shí),通常可以把它合并到上級(jí)模塊中去而不必單獨(dú)存在。第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)3.深度、寬度、扇出和扇入都應(yīng)適當(dāng)深度:表示軟件結(jié)構(gòu)中控制的層數(shù)。它往往能粗略地標(biāo)志一個(gè)系統(tǒng)的大小和復(fù)雜程度。深度和程序長(zhǎng)度之間應(yīng)該有粗略的對(duì)應(yīng)關(guān)系,當(dāng)然這個(gè)對(duì)應(yīng)關(guān)系是在一定范圍內(nèi)變化的。如果層數(shù)過(guò)多則應(yīng)該考慮是否有許多管理模塊過(guò)分簡(jiǎn)單了,能否適當(dāng)合并。寬度:軟件結(jié)構(gòu)內(nèi)同一個(gè)層次上的模塊總數(shù)的最大值。一般說(shuō)來(lái),寬度越大系統(tǒng)越復(fù)雜。對(duì)寬度影響最大的因素是模塊的扇出。第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)扇出:一個(gè)模塊直接控制(調(diào)用)的模塊數(shù)目,扇出過(guò)大意味著模塊過(guò)分復(fù)雜,需要控制和協(xié)調(diào)過(guò)多的下級(jí)模塊;扇出過(guò)小(例如總是1)也不好。經(jīng)驗(yàn)表明,一個(gè)設(shè)計(jì)得好的典型系統(tǒng)的平均扇出通常是3或4(扇出的上限通常是5~9)。扇出太大一般是因?yàn)槿狈χ虚g層次,應(yīng)該適當(dāng)增加中間層次的控制模塊。扇出太小時(shí)可以把下級(jí)模塊進(jìn)一步分解成若干個(gè)子功能模塊,或者合并到它的上級(jí)模塊中去。當(dāng)然分解模塊或合并模塊必須符合問(wèn)題結(jié)構(gòu),不能違背模塊獨(dú)立原理。扇入:表示被多少個(gè)上級(jí)模塊調(diào)用它扇入越大則共享該模塊地上級(jí)模塊數(shù)目越多,這是有好處的,但不能違背模塊獨(dú)立性原理。第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)4.模塊的作用域應(yīng)該在控制域之內(nèi)模塊的作用域定義為受該模塊內(nèi)一個(gè)判定影響的所有模塊的集合。模塊的控制域是這個(gè)模塊本身以及所有直接或間接從屬于它的模塊的集合。例如,在圖中模塊A的控制域是A、B、C、D、E、F等模塊的集合。在一個(gè)設(shè)計(jì)得很好的系統(tǒng)中,所有受判定影響的模塊應(yīng)該都從屬于做出判定的那個(gè)模塊,最好局限于做出判定的那個(gè)模塊本身及它的直屬下級(jí)模塊第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)5.力爭(zhēng)降低模塊接口的復(fù)雜程度模塊接口復(fù)雜是軟件發(fā)生錯(cuò)誤的一個(gè)主要原因。應(yīng)該仔細(xì)設(shè)計(jì)模塊接口,使得信息傳遞簡(jiǎn)單并且和模塊的功能一致。接口復(fù)雜或不一致(即看起來(lái)傳遞的數(shù)據(jù)之間沒(méi)有聯(lián)系),是緊耦合或低內(nèi)聚的征兆,應(yīng)該重新分析這個(gè)模塊的獨(dú)立性。6.設(shè)計(jì)單入口單出口的模塊這條啟發(fā)式規(guī)則警告軟件工程師不要使模塊間出現(xiàn)內(nèi)容耦合。當(dāng)從頂部進(jìn)入模塊并且從底部退出來(lái)時(shí),軟件是比較容易理解的,因此也是比較容易維護(hù)的。第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)7.模塊功能應(yīng)該可以預(yù)測(cè)模塊的功能應(yīng)該能夠預(yù)測(cè),但也要防止模塊功能過(guò)分局限。如果一個(gè)模塊可以當(dāng)做一個(gè)黑盒子,也就是說(shuō),只要輸入的數(shù)據(jù)相同就產(chǎn)生同樣的輸出,這個(gè)模塊的功能就是可以預(yù)測(cè)的。帶有內(nèi)部“存儲(chǔ)器”的模塊的功能可能是不可預(yù)測(cè)的,因?yàn)樗妮敵隹赡苋Q于內(nèi)部存儲(chǔ)器(例如某個(gè)標(biāo)記)的狀態(tài)。由于內(nèi)部存儲(chǔ)器對(duì)于上級(jí)模塊而言是不可見的,所以這樣的模塊既不易理解又難于測(cè)試和維護(hù)。第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)描繪軟件結(jié)構(gòu)的圖形工具層次圖和HIPO圖層次圖用來(lái)描繪軟件的層次結(jié)構(gòu)。層次圖中的一個(gè)矩形框代表一個(gè)模塊,方框間的連線表示調(diào)用關(guān)系。層次圖很適于在自頂向下設(shè)計(jì)軟件的過(guò)程中使用。第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)HIPO圖是美國(guó)IBM公司發(fā)明的“層次圖加輸入/處理/輸出圖”的英文縮寫。為了能使HIPO圖具有可追蹤性,在H圖(層次圖)里除了最頂層的方框之外,每個(gè)方框都加了編號(hào)。和H圖中每個(gè)方框相對(duì)應(yīng),應(yīng)該有一張IPO圖描繪這個(gè)方框代表的模塊的處理過(guò)程。HIPO圖中的每張IPO圖內(nèi)都應(yīng)該明顯地標(biāo)出它所描繪的模塊在H圖中的編號(hào),以便追蹤了解這個(gè)模塊在軟件結(jié)構(gòu)中的位置。第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)結(jié)構(gòu)圖Yourdon提出的結(jié)構(gòu)圖是進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)的另一個(gè)有力工具。結(jié)構(gòu)圖和層次圖類似,也是描繪軟件結(jié)構(gòu)的圖形工具,圖中一個(gè)方框代表一個(gè)模塊,框內(nèi)注明模塊的名字或主要功能;方框之間的箭頭(或直線)表示模塊的調(diào)用關(guān)系。因?yàn)榘凑諔T例總是圖中位于上方的方框代表的模塊調(diào)用下方的模塊,即使不用箭頭也不會(huì)產(chǎn)生二義性,為了簡(jiǎn)單起見,可以只用直線而不用箭頭表示模塊間的調(diào)用關(guān)系。在結(jié)構(gòu)圖中通常還用帶注釋的箭頭表示模塊調(diào)用過(guò)程中來(lái)回傳遞的信息。如果希望進(jìn)一步標(biāo)明傳遞的信息是數(shù)據(jù)還是控制信息,則可以利用注釋箭頭尾部的形狀來(lái)區(qū)分:尾部是空心圓表示傳遞的是數(shù)據(jù),實(shí)心圓表示傳遞的是控制信息。第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)以上介紹的是結(jié)構(gòu)圖的基本符號(hào),也就是最經(jīng)常使用的符號(hào)。此外還有一些附加的符號(hào),可以表示模塊的選擇調(diào)用或循環(huán)調(diào)用。圖5.6表示當(dāng)模塊M中某個(gè)判定為真時(shí)調(diào)用模塊A,為假時(shí)調(diào)用模塊B。第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)判定為真時(shí)調(diào)用A,為假時(shí)調(diào)用B模塊M循環(huán)調(diào)用模塊A、B、C第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)注意,層次圖和結(jié)構(gòu)圖并不嚴(yán)格表示模塊的調(diào)用次序。雖然多數(shù)人習(xí)慣于按調(diào)用次序從左到右畫模塊,但并沒(méi)有這種規(guī)定,出于其他方面的考慮(例如為了減少交叉線),也完全可以不按這種次序畫。此外,層次圖和結(jié)構(gòu)圖并不指明什么時(shí)候調(diào)用下層模塊。通常上層模塊中除了調(diào)用下層模塊的語(yǔ)句之外還有其他語(yǔ)句,究竟是先執(zhí)行調(diào)用下層模塊的語(yǔ)句還是先執(zhí)行其他語(yǔ)句,在圖中絲毫沒(méi)有指明。事實(shí)上,層次圖和結(jié)構(gòu)圖只表明一個(gè)模塊調(diào)用那些模塊,至于模塊內(nèi)還有沒(méi)有其他成分則完全沒(méi)有表示。第三章軟件相關(guān)設(shè)計(jì)§3.2總體設(shè)計(jì)(SD)

通常用層次圖作為描繪軟件結(jié)構(gòu)的文檔。結(jié)構(gòu)圖作為文檔并不很合適,因?yàn)閳D上包含的信息太多有時(shí)反而降低了清晰程度。但是,利用IPO圖或數(shù)據(jù)字典中的信息得到模塊調(diào)用時(shí)傳遞的信息,從而由層次圖導(dǎo)出結(jié)構(gòu)圖的過(guò)程,卻可以作為檢查設(shè)計(jì)正確性和評(píng)價(jià)模塊獨(dú)立性的好方法。傳送的每個(gè)數(shù)據(jù)元素都是完成模塊功能所必須的嗎?反之,完成模塊功能必須的每個(gè)數(shù)據(jù)元素都傳送來(lái)了嗎?所有數(shù)據(jù)元素都只和單一的功能有關(guān)嗎?如果發(fā)現(xiàn)結(jié)構(gòu)圖上模塊間的聯(lián)系不容易解釋,則應(yīng)該考慮是否設(shè)計(jì)上有問(wèn)題。第三章軟件相關(guān)設(shè)計(jì)面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法的目標(biāo)是給出設(shè)計(jì)軟件結(jié)構(gòu)的一個(gè)系統(tǒng)化的途徑在軟件工程的需求分析階段,信息流是一個(gè)關(guān)鍵考慮,通常用數(shù)據(jù)流圖描繪信息在系統(tǒng)中加工和流動(dòng)的情況。面向數(shù)據(jù)流的設(shè)計(jì)方法定義了一些不同的“映射”,利用這些映射可以把數(shù)據(jù)流圖變換成軟件結(jié)構(gòu)。因?yàn)槿魏诬浖到y(tǒng)都可以用數(shù)據(jù)流圖表示,所以面向數(shù)據(jù)流的設(shè)計(jì)方法理論上可以設(shè)計(jì)任何軟件的結(jié)構(gòu)。通常所說(shuō)的結(jié)構(gòu)化設(shè)計(jì)方法(簡(jiǎn)稱SD方法),也就是基于數(shù)據(jù)流的設(shè)計(jì)方法?!?.2總體設(shè)計(jì)(SD)第三章軟件相關(guān)設(shè)計(jì)相關(guān)概念面向數(shù)據(jù)流的設(shè)計(jì)方法把信息流映射成軟件結(jié)構(gòu),信息流的類型決定了映射的方法。信息流有下述兩種類型。1.變換流參看圖,信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過(guò)變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。當(dāng)數(shù)據(jù)流圖具有這些特征時(shí),這種信息流就叫作變換流?!?.2總體設(shè)計(jì)(SD)第三章軟件相關(guān)設(shè)計(jì)2.事務(wù)流基本系統(tǒng)模型意味著變換流,因此,原則上所有信息流都可以歸結(jié)為這一類。但是,當(dāng)數(shù)據(jù)流圖具有和下圖類似的形狀時(shí),這種數(shù)據(jù)流是“以事務(wù)為中心的”,也就是說(shuō),數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理T,這個(gè)處理根據(jù)輸入數(shù)據(jù)的類型在若干個(gè)動(dòng)作序列中選出一個(gè)來(lái)執(zhí)行。這類數(shù)據(jù)流應(yīng)該劃為一類特殊的數(shù)據(jù)流,稱為事務(wù)流。圖5.9中的處理T稱為事務(wù)中心,它完成下述任務(wù):(1)接收輸入數(shù)據(jù)(輸入數(shù)據(jù)又稱為事務(wù));(2)分析每個(gè)事務(wù)以確定它的類型;(3)根據(jù)事務(wù)類型選取一條活動(dòng)通路?!?.2總體設(shè)計(jì)(SD)第三章軟件相關(guān)設(shè)計(jì)面向數(shù)據(jù)流的設(shè)計(jì)方法時(shí)間輸入流輸出流變換流事務(wù)外部表示內(nèi)部表示信息T事務(wù)中心活動(dòng)通路事務(wù)中心T完成下述任務(wù):接受輸入數(shù)據(jù)(事務(wù))分析每個(gè)事務(wù)以確定它的類型根據(jù)事務(wù)類型選取一條活動(dòng)通路第三章軟件相關(guān)設(shè)計(jì)精化數(shù)據(jù)流圖區(qū)分事務(wù)中心和數(shù)據(jù)接收通路映射成事務(wù)結(jié)構(gòu)區(qū)分輸入和輸出分支映射成變換結(jié)構(gòu)用啟發(fā)式設(shè)計(jì)規(guī)則精化軟件結(jié)構(gòu)導(dǎo)出接口描述和全程數(shù)據(jù)結(jié)構(gòu)復(fù)查詳細(xì)設(shè)計(jì)事務(wù)分析變換分析流類型?第三章軟件相關(guān)設(shè)計(jì)

變換分析:汽車數(shù)字儀表板功能:

1)通過(guò)A/D轉(zhuǎn)換實(shí)現(xiàn)傳感器和微處理器接口,

2)在發(fā)光二極管面板上顯示數(shù)據(jù),

3)指示每小時(shí)英里數(shù)(mph),行駛的里程,每加倫油行駛的英里數(shù)(mpg)等等。

4)指示加速或減速;

5)超速警告:如果車速超過(guò)55英里/小時(shí),則發(fā)出超速警告鈴聲。A/D轉(zhuǎn)數(shù)計(jì)數(shù)器流量傳感器微處理機(jī)里程表車速表油效表油管系統(tǒng)加速/減速指示超速報(bào)警第三章軟件相關(guān)設(shè)計(jì)讀旋轉(zhuǎn)信號(hào)收集和求平均轉(zhuǎn)換成轉(zhuǎn)/分(rpm)計(jì)算里程確定加速/減速產(chǎn)生加速/減速顯示產(chǎn)生里程顯示計(jì)算mph和超速值計(jì)算燃料消耗發(fā)出鈴聲產(chǎn)生mph顯示產(chǎn)生mpg顯示讀和校核計(jì)算gph旋轉(zhuǎn)信號(hào)信號(hào)/秒SPS△SPSSPSrpmrpm箭頭指示上箭頭⊕⊕水平線下箭頭英里超速值顯示鈴聲mphmphmpggph燃料流燃料流傳感器信號(hào)Mpg顯示設(shè)計(jì)步驟:1復(fù)查基本系統(tǒng)模型2復(fù)查并精化數(shù)據(jù)流圖3確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性第三章軟件相關(guān)設(shè)計(jì)讀旋轉(zhuǎn)信號(hào)收集和求平均轉(zhuǎn)換成轉(zhuǎn)/分(rpm)計(jì)算里程確定加速/減速產(chǎn)生加速/減速顯示產(chǎn)生里程顯示計(jì)算mph和超速值計(jì)算燃料消耗發(fā)出鈴聲產(chǎn)生mph顯示產(chǎn)生mpg顯示讀和校核計(jì)算gph旋轉(zhuǎn)信號(hào)信號(hào)/秒SPS△SPSSPSrpmrpm箭頭指示上箭頭⊕⊕水平線下箭頭英里超速值顯示鈴聲mphmphmpggph燃料流燃料流傳感器信號(hào)Mpg顯示4確定輸入流和輸出流的邊界,劃分變換或事務(wù)中心第三章軟件相關(guān)設(shè)計(jì)CmCaCtCe5完成“第一級(jí)分解”第三章軟件相關(guān)設(shè)計(jì)數(shù)字儀表板控制接受傳感器信號(hào)數(shù)據(jù)轉(zhuǎn)換控制驅(qū)動(dòng)儀表板輸入控制變換控制輸入控制第三章軟件相關(guān)設(shè)計(jì)設(shè)計(jì)步驟:復(fù)查基本系統(tǒng)模型復(fù)查并精化數(shù)據(jù)流圖確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性確定輸入流和輸出流的邊界,劃分變換或事務(wù)中心完成“第一級(jí)分解”CmCaCtCe第一級(jí)分解的方法第三章軟件相關(guān)設(shè)計(jì)ADBCCmCaCBDA接受傳感器信號(hào)轉(zhuǎn)換成rpm收集SPS讀旋轉(zhuǎn)信號(hào)計(jì)算gph讀燃料流數(shù)字儀表板控制確定加/減速計(jì)算mph計(jì)算gpg計(jì)算里程驅(qū)動(dòng)儀表板加速/減速顯示顯示mpg顯示mph顯示里程發(fā)出鈴聲發(fā)光二極管顯示6進(jìn)行“第二級(jí)”分解第三章軟件相關(guān)設(shè)計(jì)數(shù)字儀表板控制接受傳感器信號(hào)轉(zhuǎn)換成rpm讀旋轉(zhuǎn)信號(hào)計(jì)算gph讀燃料流數(shù)字儀表板控制確定加/減速計(jì)算mph計(jì)算gpg計(jì)算里程驅(qū)動(dòng)儀表板加速/減速顯示顯示mpg顯示mph顯示里程發(fā)出鈴聲發(fā)光二極管顯示數(shù)字儀表板軟件系統(tǒng)經(jīng)過(guò)調(diào)整后的結(jié)構(gòu)圖注意:紅色模塊的位置有所調(diào)整7對(duì)軟件結(jié)構(gòu)進(jìn)一步精化第三章軟件相關(guān)設(shè)計(jì)

事務(wù)分析432總控接收通路C通路B通路A通路調(diào)度A_CTL142+1321B_CTLC_CTL

設(shè)計(jì)優(yōu)化先使系統(tǒng)工作起來(lái),然后使它快起來(lái)。數(shù)據(jù)流圖軟件結(jié)構(gòu)第三章軟件相關(guān)設(shè)計(jì)§3.3詳細(xì)設(shè)計(jì)(SD)目標(biāo):確定應(yīng)該怎樣具體地實(shí)現(xiàn)所要求的系統(tǒng)。作用:在總體設(shè)計(jì)階段采用自頂向下逐步求精的方法,可以把一個(gè)復(fù)雜問(wèn)題的解法分解和細(xì)化成一個(gè)由多個(gè)模塊組成的層次結(jié)構(gòu)的軟件系統(tǒng)。而在詳細(xì)設(shè)計(jì)或編碼階段可采用自頂向下逐步求精的方法,可以把一個(gè)模塊的功能逐步分解、細(xì)化為一系列的具體處理描述,從而在編碼階段可以把這個(gè)描述直接翻譯成用某種程序設(shè)計(jì)語(yǔ)言書寫的程序第三章軟件相關(guān)設(shè)計(jì)§3.3詳細(xì)設(shè)計(jì)(SD)結(jié)構(gòu)程序設(shè)計(jì)

E.W.Dijstra與Goto語(yǔ)句,1966,Bohm和Jacobini證明了只要順序、選擇、循環(huán)這三種基本結(jié)構(gòu)就能實(shí)現(xiàn)任何單入口單出口的程序。

結(jié)構(gòu)程序設(shè)計(jì):一種程序設(shè)計(jì)技術(shù),它采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu)。并且盡可能少用GOTO語(yǔ)句的程序設(shè)計(jì)方法。第三章軟件相關(guān)設(shè)計(jì)第三章軟件相關(guān)設(shè)計(jì)使用結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)的好處:1.可以顯著提高軟件開發(fā)工程的成功率和生產(chǎn)率2.層次結(jié)構(gòu)清晰,容易閱讀和理解3.容易保證程序的正確性和糾正錯(cuò)誤(單入口、單出口)4.源程序代碼精晰流暢,易讀易懂易測(cè)試5.可重用代碼量大(在修改或重新設(shè)計(jì)時(shí))6.程序的邏輯結(jié)構(gòu)清晰,有利于程序正確性證明7.不足之處:存儲(chǔ)容量和運(yùn)行時(shí)間有所增加(增10%~20%)第三章軟件相關(guān)設(shè)計(jì)1、程序流程圖(程序框圖)開始或停止準(zhǔn)備選擇多分支選擇注釋預(yù)先定義的處理,子程序循環(huán)下界循環(huán)上界處理控制流§3.3詳細(xì)設(shè)計(jì)(SD)第三章軟件相關(guān)設(shè)計(jì)§3.3詳細(xì)設(shè)計(jì)(SD)1、程序流程圖(程序框圖)循環(huán)的標(biāo)準(zhǔn)符號(hào)注解的使用第三章軟件相關(guān)設(shè)計(jì)2盒圖(N_S圖)S1S2S3條件FTElse部分Then部分Case條件值1值2。。。值nCase1部分Case2部分Casen部分循環(huán)條件Do-While

部分循環(huán)條件Do-Until

部分A特點(diǎn):1)功能域(既一個(gè)特定控制結(jié)構(gòu)的作用域)明確

2)不可能任意轉(zhuǎn)移控制

3)很容易確定局部和全程數(shù)據(jù)的作用域

4)很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)第三章軟件相關(guān)設(shè)計(jì)3PAD圖P1P2P1P2條件CPnP2P1WHILECPUNTILCPdef順序選擇Case型多分支選擇當(dāng)型循環(huán)直到型循環(huán)語(yǔ)句標(biāo)號(hào)定義第三章軟件相關(guān)設(shè)計(jì)3PAD圖P1P2P3P4CP5P2defP6P3P8CUntilC3UNTILC2P9P10PAD圖的主要優(yōu)點(diǎn):使用PAD符號(hào)設(shè)計(jì)的程序必然是結(jié)構(gòu)化的程序.PAD圖所描繪的程序結(jié)構(gòu)十分清晰.用PAD圖表現(xiàn)程序邏輯,易讀,易記,易懂.容易將PAD圖轉(zhuǎn)換成高級(jí)語(yǔ)言源程序.可用軟件工具實(shí)現(xiàn)自動(dòng)轉(zhuǎn)換.即可以表示程序邏輯,也可以描繪數(shù)據(jù)結(jié)構(gòu).支持自頂向下,逐步求精方法的使用.第三章軟件相關(guān)設(shè)計(jì)x4TFDo-Untilx5ighfkx1TFbDo-Untilx6ajx21cDo-Whilex323dek:例:N-S圖與PAD的轉(zhuǎn)換第三章軟件相關(guān)設(shè)計(jì)開始結(jié)束aj

Until

x5i

Until

x6bx1kfx4ghdefkx2de123

While

x3c第三章軟件相關(guān)設(shè)計(jì)4、判定表程序流程圖、N-S圖、PAD圖或過(guò)程設(shè)計(jì)語(yǔ)言(PDL)都不易清楚的描述含有多重嵌套的條件選擇。判定表可以清晰的表示復(fù)雜的條件組合與其對(duì)應(yīng)的處理之間的關(guān)系。例子假設(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)比正常乘客少一半。用判定表來(lái)表示與上述每種條件組合相對(duì)應(yīng)的動(dòng)作。所有條件條件組合矩陣與每種條件組合所對(duì)應(yīng)的動(dòng)作表所有可能的動(dòng)作列表國(guó)內(nèi)乘客頭等艙殘疾乘客行李≤30kg免費(fèi)(W-30)*2(W-30)*3(W-30)*4(W-30)*6(W-30)*8(W-30)*2TTTFTTTTTTTTTTFFFFFFFFFFFFFFFFFFF×××××××××第三章軟件相關(guān)設(shè)計(jì)5、判定樹行李費(fèi)算法行李重量

W>30國(guó)內(nèi)乘客外國(guó)乘客頭等艙其它艙殘疾乘客----(W-30)*2正常乘客----(W-30)*4殘疾乘客----(W-30)*3正常乘客----(W-30)*6頭等艙其它艙殘疾乘客----(W-30)*4正常乘客----(W-30)*8殘疾乘客----(W-30)*6正常乘客----(W-30)*12行李重量

W≤30免費(fèi)第三章軟件相關(guān)設(shè)計(jì)

12345教授

TFFF副教授

FTFF講師

FFTF助教

FFFT講座TFFFF50×

30

×

25

×

20

×

15

×例:某校制定了教師的講課課時(shí)津貼標(biāo)準(zhǔn)。對(duì)于各種性質(zhì)的講座,無(wú)論教師是什么職稱,每課時(shí)津貼費(fèi)一律是50元;而對(duì)于一般的授課,則根據(jù)教師的職稱來(lái)決定每課時(shí)津貼費(fèi):教授30元,副教授25元,講師20元,助教15元。第三章軟件相關(guān)設(shè)計(jì)教師課時(shí)津貼判定樹

課時(shí)津貼

一般授課

講座

教授

副教授

講師

助教

30

25

20

15

50

第三章軟件相關(guān)設(shè)計(jì)6.過(guò)程設(shè)計(jì)語(yǔ)言PDL

過(guò)程設(shè)計(jì)語(yǔ)言PDL也稱為偽碼PC(PseudoCode),它是用正文形式表示數(shù)據(jù)數(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)目的需要。因此,一般來(lái)說(shuō),PDL是一種“混雜”的語(yǔ)言,它使用一種語(yǔ)言(如自然語(yǔ)言)的詞匯,同時(shí)卻使用另一種語(yǔ)言(結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言)的語(yǔ)法例:求最大數(shù)的算法用PDL或偽碼描述如下:

ateravectorSetMaximumtothevalueofThefirstelementinthevectorDoforeachelementFromthesecondonetothelastIfvalueoftheelemantisgreaterThantheMaximumvalueSetMaximomtovalueoftheelemeatENDIFENDDOPrinttheMaximumvalue也可簡(jiǎn)寫為:InputarrayADOforI=2toNIfMAX<A(I)SetMAX=A(I)ENDIFENDDOPrintMAX第三章軟件相關(guān)設(shè)計(jì)

一、Jackson程序設(shè)計(jì)方法前面介紹了面向數(shù)據(jù)流的設(shè)計(jì)方法,即概括數(shù)據(jù)流確定是軟件結(jié)的方法。下面要介紹一種面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法,即用數(shù)據(jù)結(jié)構(gòu)作為程序設(shè)計(jì)的基礎(chǔ)。面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法的最終目標(biāo)是得出對(duì)程序處理過(guò)程的描述。這種設(shè)計(jì)方法最適合在詳細(xì)設(shè)計(jì)階段使用,也就是說(shuō),在完成了軟件結(jié)構(gòu)的總體設(shè)計(jì)之后,可以使用面向數(shù)據(jù)結(jié)構(gòu)的方法來(lái)設(shè)計(jì)每個(gè)模塊的處理過(guò)程。

Jackon程序設(shè)計(jì)方法是由英國(guó)人M.Jackon提出的結(jié)構(gòu)程序設(shè)計(jì)方法。這個(gè)方法在設(shè)計(jì)較簡(jiǎn)單的數(shù)據(jù)處理系統(tǒng)時(shí)特別方便?!?.3詳細(xì)設(shè)計(jì)(SD)第三章軟件相關(guān)設(shè)計(jì)一.Jackon圖

數(shù)據(jù)結(jié)構(gòu)種類繁多,但是它們的數(shù)據(jù)元素之間的邏輯關(guān)系只有順序、選擇和重復(fù)三類。因此,邏輯數(shù)據(jù)結(jié)構(gòu)也只有這三類。1.順序結(jié)構(gòu)順序結(jié)構(gòu)的數(shù)據(jù)由一個(gè)或多個(gè)數(shù)據(jù)元素組成,每個(gè)元素按確定次序出現(xiàn)一次ABCD例圖:A由B、C、D三個(gè)元素順序組成

第三章軟件相關(guān)設(shè)計(jì)2.選擇結(jié)構(gòu)選擇結(jié)構(gòu)的數(shù)據(jù)包含兩個(gè)或多個(gè)數(shù)據(jù)元素,每次使用該數(shù)據(jù)時(shí)按一定條件從這些數(shù)據(jù)元素中選擇一個(gè)。3.重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu)的數(shù)據(jù),根據(jù)使用時(shí)的條件,由一個(gè)數(shù)據(jù)元素出現(xiàn)零次或多次構(gòu)成AB0

C0

D0

根據(jù)條件,A是B或C或D中的某一個(gè)。AB*A由B出現(xiàn)N次(N≥0)組成(注意:B的右上角有*)第三章軟件相關(guān)設(shè)計(jì)二.改進(jìn)的Jackon圖上面的后兩個(gè)圖中,選擇條件和循環(huán)結(jié)束條件無(wú)法標(biāo)出,影響了圖的表達(dá)能力,不易譯成程序。建議使用改進(jìn)的Jackon圖。

(a)順序結(jié)構(gòu)(b)選擇結(jié)構(gòu)s(i)為(c)可選結(jié)構(gòu)為(b)的(d)重復(fù)結(jié)構(gòu)i是循環(huán)結(jié)BCD中任一都條件,i是分支條件特殊情形束條件的編號(hào)不能是選擇和重復(fù)的數(shù)據(jù)元素ABCDABoCoDoABoAB*_oS(i)S(i)第三章軟件相關(guān)設(shè)計(jì)順序結(jié)構(gòu)AseqBCDAend選擇結(jié)構(gòu)Aselectcond1BAorcond2CAorcond3DAend重復(fù)結(jié)構(gòu)AiteruntilcondBAend第三章軟件相關(guān)設(shè)計(jì)三.Jackson方法Jackson結(jié)構(gòu)程序設(shè)計(jì)方法由下列五步組成:1.分析、確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用jackson圖描繪這些數(shù)據(jù)結(jié)構(gòu)。2.找出輸入數(shù)據(jù)和輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元:3.由描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的Jackson圖:(1)為每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們?cè)跀?shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個(gè)處理框;(2)根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中乘余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分列為它們畫對(duì)應(yīng)的處理框。(3)根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中乘余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次為它們畫出對(duì)應(yīng)的處理框。4.列出所有的操作和條件,將它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。5.用偽碼表示程序。(有下劃

的為關(guān)鍵字)第三章軟件相關(guān)設(shè)計(jì)用偽碼表示程序處理過(guò)程確定輸入輸出數(shù)據(jù)結(jié)構(gòu)確定數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元從數(shù)據(jù)結(jié)構(gòu)圖導(dǎo)出程序結(jié)構(gòu)圖列出所有操作和條件并分配到程序結(jié)構(gòu)圖中適當(dāng)?shù)奈恢迷O(shè)計(jì)步驟第三章軟件相關(guān)設(shè)計(jì)正文文件字符串*字符*非空格0空格0IIS輸出表格表格體空格總數(shù)串信息*字符串空格數(shù)I應(yīng)用舉例:

一個(gè)正文文件由若干個(gè)記錄組成,每個(gè)記錄是一個(gè)字符串。要求統(tǒng)計(jì)每個(gè)記錄中空格字符的個(gè)數(shù)以及文件中空格字符的總個(gè)數(shù)。要求的輸出數(shù)據(jù)格式是,每復(fù)制一行輸入字符串之后,另起一行印出這個(gè)字符串中的空格數(shù),最后印出文件中空格總個(gè)數(shù)。第三章軟件相關(guān)設(shè)計(jì)統(tǒng)計(jì)表格程序體印總數(shù)處理字符串*印字符串分析字符串I印空格數(shù)分析字串*I處理空格*處理非空格*S第三章軟件相關(guān)設(shè)計(jì)統(tǒng)計(jì)表格程序體印總數(shù)處理字符串*印字符串分析字符串I(1)印空格數(shù)分析字串*I(2)處理空格*處理非空格*S(3)2911316471313停止關(guān)閉文件印出空格總數(shù)打開文件讀入字符串Totalsum:=0文件結(jié)束印出字符串字符串結(jié)束字符是空格Sum:=sum+1Pointer:=pointer+1101289Sum:=0Pointer:=1Totalsum:=totalsum+sum讀入字符串第三章軟件相關(guān)設(shè)計(jì)統(tǒng)計(jì)空格seq

打開文件讀入字符串

totalsum=0

程序體iteruntil文件結(jié)束處理字符串seq

印字符串seq

印出字符串印出字符串endsumt=0pointert=1……第三章軟件相關(guān)設(shè)計(jì)例:高考后將考生的基本情況文件(簡(jiǎn)稱考生基本情況文件)和考生高考成績(jī)文件(簡(jiǎn)稱考分文件)合并成一個(gè)新文件(簡(jiǎn)稱考生新文件)??忌厩闆r文件和考分文件都是由考生記錄組成的。為簡(jiǎn)便起見,考生基本情況文件中的考生記錄的內(nèi)容包括:準(zhǔn)考證號(hào)、姓名、通訊地址??挤治募械目忌涗浀膬?nèi)容包括:準(zhǔn)考證號(hào)和各門考分。合并后的考生新文件自然也是由考生記錄組成,內(nèi)容包括:準(zhǔn)考證號(hào)、姓名、通訊地址和各門考分。Jackson程序設(shè)計(jì)方法由五個(gè)步驟組成:第三章軟件相關(guān)設(shè)計(jì)第一步數(shù)據(jù)結(jié)構(gòu)表示對(duì)要求解的問(wèn)題進(jìn)行分析,確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描述這些數(shù)據(jù)結(jié)構(gòu)。

考生新文件

考生記錄*

準(zhǔn)考證號(hào)

姓名

通訊地址

考分

考生情況文件

考生記錄*

準(zhǔn)考證號(hào)

姓名

通訊地址

考分文件

考生記錄*

準(zhǔn)考證號(hào)

考分

I

I

(a)輸入數(shù)據(jù)結(jié)構(gòu)

(b)輸出數(shù)據(jù)結(jié)構(gòu)

I

第三章軟件相關(guān)設(shè)計(jì)第二步找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)的對(duì)應(yīng)關(guān)系找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,即有直接因果關(guān)系、在程序中可以同時(shí)處理的數(shù)據(jù)單元。需要注意的是,對(duì)于重復(fù)的數(shù)據(jù)單元,必須是重復(fù)的次序、次數(shù)都相同才有可能有對(duì)應(yīng)關(guān)系。第三章軟件相關(guān)設(shè)計(jì)第三步確定程序結(jié)構(gòu)圖根據(jù)下述三規(guī)則,由Jackson圖導(dǎo)出相應(yīng)的程序結(jié)構(gòu)圖:(1)為每對(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)圖中所處的層次不同,那么應(yīng)以它們?cè)谳斎霐?shù)據(jù)結(jié)構(gòu)圖和輸出數(shù)據(jù)結(jié)構(gòu)圖中層次較低的那個(gè)層次作為它們?cè)诔绦蚪Y(jié)構(gòu)圖中的處理框所處的層次;(2)對(duì)于輸入數(shù)據(jù)結(jié)構(gòu)中剩余的數(shù)據(jù)單元,根據(jù)它們所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次為每個(gè)數(shù)據(jù)單元畫上相應(yīng)的處理框;(3)對(duì)于輸出數(shù)據(jù)結(jié)構(gòu)中剩余的數(shù)據(jù)單元,根據(jù)它們所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次為每個(gè)數(shù)據(jù)單元畫上相應(yīng)的處理框。第三章軟件相關(guān)設(shè)計(jì)實(shí)際上,這一步是一個(gè)綜合的過(guò)程:每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元合畫一個(gè)處理框,沒(méi)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元?jiǎng)t各畫一個(gè)處理框。第三章軟件相關(guān)設(shè)計(jì)第四步列出并分配所有操作和條件列出所有操作和條件(包括分支條件和循環(huán)結(jié)束條件),并把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。操作:(1)停止;(2)打開兩個(gè)輸入文件;(3)建立輸出文件。(4)從輸入文件中各讀一條記錄。(5)生成一條新記錄。(6)將新記錄寫入輸出文件。(7)關(guān)閉全部文件。條件:I(1)文件結(jié)束。第三章軟件相關(guān)設(shè)計(jì)把操作和條件分配到程序結(jié)構(gòu)圖的適當(dāng)位置第三章軟件相關(guān)設(shè)計(jì)第五步用偽碼表示程序Jackson方法中使用的偽碼與Jackson圖是完全對(duì)應(yīng)的。針對(duì)三種基本程序結(jié)構(gòu),有相對(duì)應(yīng)的Jackson偽碼。(1)順序結(jié)構(gòu)AseqBCDAend第三章軟件相關(guān)設(shè)計(jì)(2)選擇結(jié)構(gòu)(3)重復(fù)結(jié)構(gòu)Aselectcondition1BAorcondition2CAorcondition3DAendAiteruntil(或while)conditionBAend第三章軟件相關(guān)設(shè)計(jì)用Jackson偽碼描述的程序:產(chǎn)生新文件seq打開兩個(gè)輸入文件從輸入文件中各讀一條記錄分析考生記錄iteruntil文件結(jié)束處理考生記錄seq產(chǎn)生準(zhǔn)考證號(hào)產(chǎn)生姓名產(chǎn)生通訊地址產(chǎn)生考分生成一條新記錄將新記錄寫入輸出文件從輸入文件中各讀一條記錄處理考生記錄end關(guān)閉全部文件停止產(chǎn)生新文件end第三章軟件相關(guān)設(shè)計(jì)3.4面向?qū)ο蟮脑O(shè)計(jì)3.4.1面向?qū)ο蟮脑O(shè)計(jì)概述

面向?qū)ο蟮脑O(shè)計(jì)(簡(jiǎn)稱OOD)與結(jié)構(gòu)化設(shè)計(jì)有很大的不同,面向?qū)ο蟮脑O(shè)計(jì)是在面向?qū)ο蟮姆治?簡(jiǎn)稱OOA)的基礎(chǔ)上,對(duì)OOA模型逐漸擴(kuò)充的過(guò)程。OOD和OOA采用相同的符號(hào)表示,OOD和OOA沒(méi)有明顯的分界線,它們往往反復(fù)迭代地進(jìn)行。在OOD時(shí),主要解決系統(tǒng)如何做,因此需要在OOA的模型中為系統(tǒng)的實(shí)現(xiàn)補(bǔ)充一些新的類,或在原有類中補(bǔ)充一些屬性和操作。OOD時(shí)應(yīng)能從類中導(dǎo)出對(duì)象,以及這些對(duì)象如何互相關(guān)聯(lián),還要描述對(duì)象間的關(guān)系、行為以及對(duì)象間的通信如何實(shí)現(xiàn)。

第三章軟件相關(guān)設(shè)計(jì)3.4.1面向?qū)ο蟮脑O(shè)計(jì)概述

可把面向?qū)ο蟮脑O(shè)計(jì)分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段。在總體設(shè)計(jì)階段主要重點(diǎn)放在解決系統(tǒng)高層次問(wèn)題上,如將OOA模型如何劃分成子系統(tǒng)、選擇構(gòu)造系統(tǒng)的策略等等,通常在面向?qū)ο蟮脑O(shè)計(jì)中把它稱為系統(tǒng)設(shè)計(jì)階段。在詳細(xì)設(shè)計(jì)階段主要解決系統(tǒng)的一些細(xì)節(jié)問(wèn)題,如類、關(guān)聯(lián)、接口形式及實(shí)現(xiàn)服務(wù)的算法等,通常在面向?qū)ο蟮脑O(shè)計(jì)中把它稱為對(duì)象設(shè)計(jì)階段。目前有許多種面向?qū)ο蟮脑O(shè)計(jì)方法,其中典型的有:Coad&Yourdon方法(即著名的OOA/OOD方法)、OMT(ObjectModelingTechnique)方法、Booch方法、OOSE(Object—OrientedSoftwareEngineering)方法及RUP(RationalUnifiedProcess)方法等。

第三章軟件相關(guān)設(shè)計(jì)3.4.2系統(tǒng)設(shè)計(jì)

1.系統(tǒng)設(shè)計(jì)概況系統(tǒng)設(shè)計(jì)是把分析模型轉(zhuǎn)變成系統(tǒng)設(shè)計(jì)模型。分析模型由功能模型、對(duì)象模型和動(dòng)態(tài)模型組成。在UML中,功能模型用用例圖表示,對(duì)象模型用類圖表示,動(dòng)態(tài)模型用狀態(tài)圖和順序圖表示。系統(tǒng)設(shè)計(jì)時(shí)將這些模型作為輸入,將這些輸入轉(zhuǎn)變成包含系統(tǒng)內(nèi)部結(jié)構(gòu)信息的系統(tǒng)設(shè)計(jì)模型,或者更一般地說(shuō),轉(zhuǎn)變成系統(tǒng)的硬件配置是如何實(shí)現(xiàn)的模型。

系統(tǒng)設(shè)計(jì)的結(jié)果是得到一個(gè)模型,包括各個(gè)策略的清晰描述、子系統(tǒng)分解的UML包圖以及表示系統(tǒng)硬件/軟件映射的UML配置圖。

第三章軟件相關(guān)設(shè)計(jì)1.系統(tǒng)設(shè)計(jì)概況

對(duì)于一個(gè)復(fù)雜的系統(tǒng)為了減少?gòu)?fù)雜性,開發(fā)人員把系統(tǒng)分解成若干較小的部分,這些較小部分通常稱為子系統(tǒng),這些子系統(tǒng)可以獨(dú)立實(shí)現(xiàn)。系統(tǒng)設(shè)計(jì)是一個(gè)圍繞定義子系統(tǒng)的多次反復(fù)的活動(dòng)。如何將一個(gè)復(fù)雜的系統(tǒng)分解,這需要面對(duì)整個(gè)系統(tǒng)范圍的問(wèn)題進(jìn)行考慮。特別需要解決以下問(wèn)題:軟/硬件映射。數(shù)據(jù)管理。訪問(wèn)控制??刂屏?。邊界條件。

第三章軟件相關(guān)設(shè)計(jì)2UML包圖和UML配置圖

UML包圖對(duì)于一個(gè)復(fù)雜的系統(tǒng),通常都是把它分解成若干較小的系統(tǒng)(或稱子系統(tǒng)),如果需要的話,每個(gè)較小的系統(tǒng)還可分解成更小的系統(tǒng),這是一種解決問(wèn)題復(fù)雜性的有效方法.在UML中使用了包的機(jī)制,一個(gè)包相當(dāng)于一個(gè)子系統(tǒng)。包是一種分組機(jī)制,包用于定義一個(gè)名字空間或容器(Container),它本身是UML的一種模型元素。它把一些模型元素組織成語(yǔ)義上相關(guān)的組,包中擁有的或涉及的所有模型元素叫做包的內(nèi)容。

第三章軟件相關(guān)設(shè)計(jì)(1)UML包圖

作為模型組織的分組機(jī)制,包的實(shí)例是沒(méi)有意義的.因此包僅在建模時(shí)有用,而不需要轉(zhuǎn)換成可執(zhí)行的系統(tǒng)。包的圖標(biāo)是一個(gè)大矩形(內(nèi)容框)的左上角帶一個(gè)小矩形(名字框)。包的名字可以用一個(gè)簡(jiǎn)單名(文字串)表示,或用路徑名表示。在包名之上可附加諸如《System》、《Subsystem》等符號(hào),表示該包是系統(tǒng)模型和子系統(tǒng)。在包名之后或之下,可以用括在花括號(hào)中的文字說(shuō)明包的性質(zhì)。包可以嵌套,包的嵌套可以清晰地表現(xiàn)系統(tǒng)模型元素間的相互關(guān)系,但包的嵌套不宜過(guò)深,包的嵌套層數(shù)一般以2~3層為宜。包之間可以有關(guān)系,主要有兩種:依賴和泛化。包的依賴是用一條虛箭線表示,虛箭線從依賴包(源)指向目標(biāo)包。包的依賴沒(méi)有傳遞性。包的泛化用一條帶空心三角箭頭的實(shí)線表示,箭尾連接特殊包,箭頭指向一般包,意指特殊包必須遵循一般包的接口。第三章軟件相關(guān)設(shè)計(jì)(1)UML包圖

包圖由包和包之間的聯(lián)系構(gòu)成。包圖的圖形節(jié)點(diǎn)是包,節(jié)點(diǎn)之間用弧(依賴或泛化)連接。

數(shù)據(jù)庫(kù)子系統(tǒng)財(cái)務(wù)子系統(tǒng)數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)接口Oracle接口Sybase接口包圖圖例第三章軟件相關(guān)設(shè)計(jì)(2)UML配置圖

UML配置圖用來(lái)描述運(yùn)行時(shí)組件和硬件節(jié)點(diǎn)間的關(guān)系。組件是為其他組件或執(zhí)行者提供服務(wù)的獨(dú)立實(shí)體。

UML配置圖的基本元素有結(jié)點(diǎn)、連接、組件、對(duì)象、依賴等。結(jié)點(diǎn)是某種計(jì)算資源的物理對(duì)象,包括計(jì)算機(jī)、設(shè)備(如打印機(jī)、讀卡機(jī)、通信設(shè)備)等。結(jié)點(diǎn)既可看作類型,也可看作實(shí)例。結(jié)點(diǎn)用三維立方體表示,中間寫上結(jié)點(diǎn)名,當(dāng)結(jié)點(diǎn)表示實(shí)例時(shí),名字應(yīng)加下劃線。結(jié)點(diǎn)上還可附加諸如《printer》、《Router》等符號(hào),表示特定的設(shè)備類型。

第三章軟件相關(guān)設(shè)計(jì)(2)UML配置圖

結(jié)點(diǎn)通過(guò)通信關(guān)聯(lián)相互連接,連接用一條直線表示,它指出結(jié)點(diǎn)之間存在著某種通信路徑,并指出通過(guò)哪條通信路徑可使這些結(jié)點(diǎn)間交換對(duì)象或發(fā)送消息。在連接上可附加諸如《TCP/IP》、《DecNet》等符號(hào),以指明通信協(xié)議或所使用的網(wǎng)絡(luò)??蓤?zhí)行組件實(shí)例可以包含在結(jié)點(diǎn)實(shí)例符號(hào)中,表示它們?cè)谠摻Y(jié)點(diǎn)實(shí)例上駐留并執(zhí)行。組件是用一個(gè)大矩形上帶兩個(gè)小矩形表示。組件間的依賴關(guān)系可以用一條虛箭線表示,虛箭線從依賴組件(源)指向被依賴組件。兩個(gè)構(gòu)件實(shí)例之間的依賴關(guān)系表示一個(gè)組件使用了另一個(gè)組件的服務(wù)。一個(gè)對(duì)象可以畫在一個(gè)構(gòu)件實(shí)例中,也可以畫在結(jié)點(diǎn)實(shí)例中,表示它駐留在該結(jié)點(diǎn)上,還可以用嵌套的方式把對(duì)象畫在另一個(gè)對(duì)象中。第三章軟件相關(guān)設(shè)計(jì)3系統(tǒng)分解

系統(tǒng)設(shè)計(jì)的首要任務(wù)通常要把系統(tǒng)劃分成小的子系統(tǒng)。每個(gè)子系統(tǒng)共享某些公共特性,并完成系統(tǒng)某個(gè)方面的功能,在相同的物理位置或同樣的硬件上運(yùn)行。一個(gè)子系統(tǒng)不是一個(gè)對(duì)象,也不是一個(gè)功能。它是類、關(guān)聯(lián)、操作、事件和約束的一個(gè)相關(guān)集合。通常一個(gè)子系統(tǒng)由它提供的服務(wù)來(lái)識(shí)別,所謂一個(gè)服務(wù)就是一組具有共同目標(biāo)的相關(guān)功能。將系統(tǒng)按照某種要求進(jìn)行劃分是系統(tǒng)設(shè)計(jì)中決定整個(gè)系統(tǒng)結(jié)構(gòu)的關(guān)鍵一步。在這一步中就是根據(jù)系統(tǒng)分析的三種模型,將系統(tǒng)分析中得到的類組成子系統(tǒng),用UML表示就是將系統(tǒng)分析中得到的類放入不同的包中,每一個(gè)包就是一個(gè)子系統(tǒng)。如何組織子系統(tǒng)或包,一般按照下列原則組織:

第三章軟件相關(guān)設(shè)計(jì)3系統(tǒng)分解

將提供通用服務(wù)(或者一組相關(guān)服務(wù)集)的類組織成一個(gè)子系統(tǒng)或包,這些類之間具有高耦合度和密切的協(xié)作關(guān)系。系統(tǒng)分解為子系統(tǒng)后可以組織成一系列的水平分層和垂直分塊。

(1)分層這種組織方式把軟件系統(tǒng)組織成一個(gè)層次系統(tǒng),每層是一個(gè)子系統(tǒng)。上層在下層的基礎(chǔ)上建立,下層為實(shí)現(xiàn)上層功能而提供必要的服務(wù)。每一層內(nèi)所包含的對(duì)象,彼此間相互獨(dú)立,而處于不同層次上的對(duì)象,彼此間往往有關(guān)聯(lián)。消息的流動(dòng)是單向的,一個(gè)子系統(tǒng)只知道它下層的存在。層次結(jié)構(gòu)又可進(jìn)一步劃分成兩種模式:封閉式和開放式。

第三章軟件相關(guān)設(shè)計(jì)3系統(tǒng)分解(2)分塊這種組織方案把軟件系統(tǒng)垂直地分解成若干個(gè)相對(duì)獨(dú)立的、弱耦合的子系統(tǒng),一個(gè)子系統(tǒng)相當(dāng)于一塊,每塊提供一種類型的服務(wù)。利用分層和分塊的各種組合,可以將多個(gè)子系統(tǒng)組織成一個(gè)完整的軟件系統(tǒng)。當(dāng)混合使用層次結(jié)構(gòu)和塊狀結(jié)構(gòu)時(shí),同一層次可以由若干塊組成,而同一塊也可以分為若干層。

第三章軟件相關(guān)設(shè)計(jì)3.4.3對(duì)象設(shè)計(jì)

對(duì)象設(shè)計(jì)是對(duì)分析和系統(tǒng)設(shè)計(jì)成果的進(jìn)一步細(xì)化,在需求分析中,我們獲得了系統(tǒng)的對(duì)象模型、動(dòng)態(tài)模型和功能模型。對(duì)象模型系統(tǒng)中的對(duì)象和類,包括它們的屬性和操作。對(duì)象模型中的信息必須以某種形式在設(shè)計(jì)中呈現(xiàn)出來(lái),通常最簡(jiǎn)單和最好的方法就是把分析得到的類直接帶到設(shè)計(jì)中。而對(duì)象設(shè)計(jì)僅僅是一個(gè)添加細(xì)節(jié)并做出實(shí)現(xiàn)決策的過(guò)程。功能模型描述系統(tǒng)中必須實(shí)現(xiàn)的操作。在對(duì)象設(shè)計(jì)過(guò)程中,我們必須確定如何實(shí)現(xiàn)每一個(gè)操作,選擇操作的算法,并把復(fù)雜的操作分解成簡(jiǎn)單的操作。這種分解是一個(gè)必須在相關(guān)低級(jí)抽象層次上反復(fù)迭代的過(guò)程。動(dòng)態(tài)模型描述了系統(tǒng)如何響應(yīng)外部事件,程序的控制結(jié)構(gòu)是從動(dòng)態(tài)模型中導(dǎo)出來(lái)的。第三章軟件相關(guān)設(shè)計(jì)3.4.3對(duì)象設(shè)計(jì)具體步驟大致如下:①組合三種模型(對(duì)象模型、動(dòng)態(tài)模型、功能模型)以獲得類中的操作。②實(shí)現(xiàn)操作的設(shè)計(jì)算法。③優(yōu)化數(shù)據(jù)的訪問(wèn)。④實(shí)現(xiàn)外部交互式地控制。⑤調(diào)整類結(jié)構(gòu)以提高繼承性。⑥設(shè)計(jì)關(guān)聯(lián)。⑦確定對(duì)象屬性的精確表示。⑧把類和關(guān)聯(lián)封裝成模塊。上述8個(gè)步驟用UML表達(dá)時(shí),就是對(duì)用例圖、狀態(tài)圖、順序圖、類圖及對(duì)象圖等的反復(fù)細(xì)化。從各個(gè)側(cè)面來(lái)不斷求精系統(tǒng),直至得到一個(gè)能夠?qū)崿F(xiàn)的、精確的系統(tǒng)描述。

第三章軟件相關(guān)設(shè)計(jì)3.4.4設(shè)計(jì)模式

有經(jīng)驗(yàn)的面向?qū)ο蟮拈_發(fā)人員(和其他一些軟件開發(fā)人員)建立了一套一般原則和常用解決方案的“指令集”,用來(lái)指導(dǎo)軟件設(shè)計(jì)。這些原則和慣用法如果用格式編纂成文,文中描述了所要解決的問(wèn)題和對(duì)應(yīng)的解決方案,并且被賦予名字,那么這些原則和慣用就被稱為模式(pattern)。一個(gè)設(shè)計(jì)模式通??捎盟膫€(gè)信息來(lái)描述:

1)模式名。

2)所解決的問(wèn)題。

3)解決方案。

4)應(yīng)用設(shè)計(jì)模式的效果。

第三章軟件相關(guān)設(shè)計(jì)面向?qū)ο笤O(shè)計(jì)中23種常用的設(shè)計(jì)模式

1)AbstractFactory。

2)Adapter。3)Bridge。

4)Builder。

5)Visitor。

6)Command。7)Composite。

8)Decorator。

9)FactoryMethod。

10)Facade。

11)Flyweight。

12)Interpreter。

13)Iterator。

14)Mediator。

15)Memento。

16)Observer。

17)Prototype。

18)Proxy。

19)Singleton。

20)State。

21)TemplateMethod。

22)Strategy。

23)ChainofResponsibility。第三章軟件相關(guān)設(shè)計(jì)3.5人機(jī)界面的設(shè)計(jì)研究的必要性人機(jī)界面設(shè)計(jì)是接口設(shè)計(jì)的一個(gè)重要組成部分,人機(jī)界面的設(shè)計(jì)質(zhì)量,直接影響了用戶對(duì)軟件產(chǎn)品的評(píng)價(jià),從而影響軟件產(chǎn)品的競(jìng)爭(zhēng)力和壽命。一、設(shè)計(jì)問(wèn)題系統(tǒng)響應(yīng)時(shí)間:從用戶完成某個(gè)控制動(dòng)作到軟件給出預(yù)期響應(yīng)之間的時(shí)間。重要屬性:長(zhǎng)度、易變性用戶幫助設(shè)施:集成的用戶幫助設(shè)施附件的用戶幫助設(shè)施 注意的問(wèn)題:幫助內(nèi)容,請(qǐng)求、顯示、返回方式等等出錯(cuò)處理:出錯(cuò)信息、警告信息應(yīng)具有以下屬性:可理解、建設(shè)性、警告性、顯著等等命令交互:

第三章軟件相關(guān)設(shè)計(jì)二、設(shè)計(jì)過(guò)程創(chuàng)建設(shè)計(jì)模型原型法實(shí)現(xiàn)用戶試用和評(píng)估用戶界面方案用戶評(píng)估及評(píng)估標(biāo)準(zhǔn):(1)系統(tǒng)及其界面的規(guī)格說(shuō)明書的長(zhǎng)度和復(fù)雜程度,預(yù)示了用戶學(xué)習(xí)使用該系統(tǒng)所需要的工作量。(2)命令或動(dòng)作的數(shù)量、命令的平均參數(shù)個(gè)數(shù)或動(dòng)作中單個(gè)操作的個(gè)數(shù),預(yù)示了系統(tǒng)的交互時(shí)間和總體效率。(3)設(shè)計(jì)模型中包含的動(dòng)作、命令和系統(tǒng)狀態(tài)的數(shù)量,預(yù)示了用戶學(xué)習(xí)使用該系統(tǒng)時(shí)需要記憶的內(nèi)容的多少。(4)界面風(fēng)格、幫助設(shè)施和出錯(cuò)處理協(xié)議,預(yù)示了界面的復(fù)雜程度及用戶接受該界面的程度。三、人機(jī)界面設(shè)計(jì)指南1一般交互指南 2信息顯示指南 3數(shù)據(jù)輸入指南第三章軟件相關(guān)設(shè)計(jì)

利用軟件設(shè)計(jì)的基本原理和概念可以定性的衡量軟件模塊的質(zhì)量。但定量的度量程序復(fù)雜程度的方法很有價(jià)值:估算程序中軟件故障的數(shù)量;估算軟件開發(fā)的工作量;比較兩個(gè)不同的設(shè)計(jì)或兩個(gè)不同算法的友劣;作為模塊規(guī)模的精確上限。程序定量度量方法是一個(gè)有待進(jìn)一步研究的重要領(lǐng)域。一、McCabe方法

程序圖–把程序流程圖中每個(gè)處理符號(hào)都退化成一個(gè)點(diǎn),原來(lái)連接不同處理符號(hào)的箭頭變成連接不同點(diǎn)的有向弧,這樣得到的有向圖就稱為程序圖。程序圖僅僅描述程序內(nèi)部的控制流程,完全不表現(xiàn)對(duì)數(shù)據(jù)的具體操作以及分支或循環(huán)的具體條件。入口點(diǎn):程序

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論