版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1結(jié)構(gòu)化設(shè)計(jì)模型結(jié)構(gòu)化設(shè)計(jì)方法過程設(shè)計(jì)Jackson方法2本章內(nèi)容介紹了傳統(tǒng)的設(shè)計(jì)模型,以及從分析模型導(dǎo)出設(shè)計(jì)模型的一般方法。重點(diǎn)講述了面向數(shù)據(jù)流設(shè)計(jì)的結(jié)構(gòu)化設(shè)計(jì)方法(包括結(jié)構(gòu)設(shè)計(jì)和過程設(shè)計(jì))和面向數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)的Jackson設(shè)計(jì)方法。重點(diǎn)掌握結(jié)構(gòu)化設(shè)計(jì)模型,結(jié)構(gòu)化設(shè)計(jì)方法。
35.1概述面向數(shù)據(jù)流設(shè)計(jì)和面向數(shù)據(jù)設(shè)計(jì)從分析模型導(dǎo)出設(shè)計(jì)模型45.1.1面向數(shù)據(jù)流設(shè)計(jì)和面向數(shù)據(jù)設(shè)計(jì)面向數(shù)據(jù)流設(shè)計(jì)將信息流映射成軟件結(jié)構(gòu)數(shù)據(jù)流是考慮一切問題的出發(fā)點(diǎn)最終目的給出設(shè)計(jì)軟件結(jié)構(gòu)的一個(gè)系統(tǒng)化的途徑數(shù)據(jù)流的類型決定映射方法變換流事務(wù)流該方法適用于概要設(shè)計(jì)階段常稱為結(jié)構(gòu)化設(shè)計(jì)(SD)方法5面向數(shù)據(jù)設(shè)計(jì)該方法不明顯的使用軟件結(jié)構(gòu)的概念,模塊是設(shè)計(jì)過程的副產(chǎn)品。對(duì)于模塊獨(dú)立性也沒有給予應(yīng)有的重視。以數(shù)據(jù)結(jié)構(gòu)作為分析和設(shè)計(jì)的基礎(chǔ)最終目標(biāo)得出程序的過程性描述該方法適用于過程設(shè)計(jì)/詳細(xì)設(shè)計(jì)階段主要設(shè)計(jì)方法Jackson方法Warnier方法6結(jié)構(gòu)化設(shè)計(jì)與結(jié)構(gòu)化分析的關(guān)系軟件設(shè)計(jì)必須依據(jù)對(duì)軟件的需求來進(jìn)行,結(jié)構(gòu)化分析的結(jié)果為結(jié)構(gòu)化設(shè)計(jì)提供了最基本的輸入信息。分析模型的每個(gè)元素都提供了創(chuàng)建設(shè)計(jì)模型時(shí)所需要的信息。5.1.2從分析模型導(dǎo)出設(shè)計(jì)模型7圖5.1將分析模型轉(zhuǎn)換為軟件的設(shè)計(jì)模型8
數(shù)據(jù)設(shè)計(jì)把分析階段創(chuàng)建的信息域模型轉(zhuǎn)變成實(shí)現(xiàn)軟件所需要的數(shù)據(jù)結(jié)構(gòu)。體系結(jié)構(gòu)設(shè)計(jì)確定了程序的主要結(jié)構(gòu)元素(即程序構(gòu)件)之間的關(guān)系。接口設(shè)計(jì)的結(jié)果描述了軟件內(nèi)部、軟件與協(xié)作系統(tǒng)之間以及軟件與使用者之間的通信方式。過程設(shè)計(jì)把程序體系結(jié)構(gòu)中的結(jié)構(gòu)元素,變換成對(duì)軟件構(gòu)件的過程性描述。在軟件設(shè)計(jì)期間我們所做出的決策,將最終決定軟件開發(fā)能否成功,更重要的是,這些設(shè)計(jì)決策將決定軟件維護(hù)的難易程度。95.2結(jié)構(gòu)化設(shè)計(jì)方法(SD方法)SD方法的中心任務(wù)把用DFD圖表示的系統(tǒng)分析模型方便地轉(zhuǎn)換為軟件結(jié)構(gòu)的設(shè)計(jì)模型。軟件結(jié)構(gòu)的描述工具H圖(層次圖)SC圖(軟件結(jié)構(gòu)圖)10層次圖
通常使用層次圖描繪軟件的層次結(jié)構(gòu)。在層次圖中一個(gè)矩形框代表一個(gè)模塊,框間的連線表示調(diào)用關(guān)系。11HIPO圖HIPO圖是美國(guó)IBM公司發(fā)明的“層次圖+輸入/處理/輸出圖”的英文縮寫。為了使HIPO圖具有可追蹤性,在H圖(即層次圖)里除了頂層的方框之外,每個(gè)方框都加編號(hào)。12基本的IPO圖13表格式的IPO圖(IPO表)145.2.1SC圖
(StructureChart)SC圖的組成符號(hào)矩形框來表示模塊
帶箭頭的連線表示模塊間的調(diào)用關(guān)系在調(diào)用線的兩旁標(biāo)出傳入和傳出模塊的數(shù)據(jù)流
SC圖中的模塊符號(hào)傳入傳出變換源漏控制P88實(shí)物投影解釋用于表達(dá)軟件的組成模塊及其調(diào)用關(guān)系。15SC圖中的模塊調(diào)用簡(jiǎn)單調(diào)用:調(diào)用線的箭頭指向被調(diào)用模塊選擇調(diào)用:圖中用菱形符號(hào)表示選擇循環(huán)調(diào)用:用疊加在調(diào)用線始端的環(huán)形箭頭表示循環(huán)ABCDABCACBX,YZZ簡(jiǎn)單調(diào)用選擇調(diào)用循環(huán)調(diào)用16在結(jié)構(gòu)圖中通常還用帶注釋的箭頭表示模塊調(diào)用過程中來回傳遞的信息。如果希望進(jìn)一步標(biāo)明傳遞的信息是數(shù)據(jù)還是控制信息,則可以利用注釋箭頭尾部的形狀來區(qū)分:尾部是空心圓表示傳遞的是數(shù)據(jù),實(shí)心圓表示傳遞的是控制信息17注意:
層次圖和結(jié)構(gòu)圖并不嚴(yán)格表示模塊的調(diào)用次序。層次圖和結(jié)構(gòu)圖并不指明什么時(shí)候調(diào)用下層模塊。
通常用層次圖作為描繪軟件結(jié)構(gòu)的文檔。結(jié)構(gòu)圖作為文檔并不合適。但是,利用IPO圖和數(shù)據(jù)字典中的信息得到模塊調(diào)用時(shí)傳遞的信息,從而由層次圖導(dǎo)出結(jié)構(gòu)圖的過程,卻可以作為檢察設(shè)計(jì)正確性和評(píng)價(jià)模塊獨(dú)立性的好方法。
185.2.2數(shù)據(jù)流圖的類型與SD方法的步驟數(shù)據(jù)流圖的類型變換型結(jié)構(gòu)事務(wù)型結(jié)構(gòu)19變換型結(jié)構(gòu)
組成傳入路徑變換中心傳出路徑
數(shù)據(jù)流傳入流變換流傳出流變換中心:通過計(jì)算或處理,將系統(tǒng)的傳入流變?yōu)閭鞒隽?。又稱加工中心。傳入流:離輸入始端最遠(yuǎn)但仍可被看作系統(tǒng)輸入的那些數(shù)據(jù)流。傳出流:離輸出末端最遠(yuǎn)但仍可被看作系統(tǒng)輸出的那些數(shù)據(jù)流。變換中心傳入傳出信息傳入流傳出流
變換流時(shí)間基本模型數(shù)據(jù)流20事務(wù)型組成一條接受路徑一個(gè)事務(wù)中心若干條動(dòng)作路徑特征具有在多種事務(wù)中執(zhí)行某類事務(wù)的能力。
事務(wù)中心接受路徑動(dòng)作路徑基本模型21從DFD圖到SC圖的映射
復(fù)審DFD圖,必要時(shí)可再次進(jìn)行修改或細(xì)化鑒別DFD圖的結(jié)構(gòu)特征:事務(wù)?變換?按照規(guī)則,把DFD圖為初始的SC圖改進(jìn)初始的SC圖,獲得最終SC圖。22兩種映射方法變換映射事務(wù)映射變換型DFD圖事務(wù)型DFD圖初始SC圖初始SC圖變換映射事務(wù)映射23
適用于將變換型結(jié)構(gòu)的DFD圖轉(zhuǎn)換為初始軟件結(jié)構(gòu)圖。步驟如下:1、區(qū)分傳入、傳出和變換中心三個(gè)部分,在DFD圖上標(biāo)明它們的分界線(1)變換中心的任務(wù):通過計(jì)算或處理,把系統(tǒng)的邏輯輸入變換(或加工)為系統(tǒng)的邏輯輸出。(2)邏輯輸入(傳入數(shù)據(jù)項(xiàng)):離物理輸入端(輸入始端)最遠(yuǎn),但仍可以被看作系統(tǒng)輸入的那些數(shù)據(jù)流。5.2.3變換映射24(3)邏輯輸出(傳出數(shù)據(jù)項(xiàng)):離物理輸出端(輸出末端)最遠(yuǎn),但仍可以被看作系統(tǒng)輸出的那些數(shù)據(jù)流。(4)數(shù)據(jù)在系統(tǒng)中流動(dòng)時(shí),不僅在通過變換中心時(shí)要被變換,在傳入路徑和傳出路徑上,其內(nèi)容和形式也可能發(fā)生變化。故變換中心又稱為“中心加工”,以區(qū)別于數(shù)據(jù)在傳入傳出過程中的其它加工。(5)劃分的結(jié)果可能會(huì)受經(jīng)驗(yàn)的影響,但必須從實(shí)際情況出發(fā),對(duì)DFD圖作認(rèn)真和細(xì)致的分析(6)幾種可能遇到的情況及其處理方法25有些系統(tǒng)沒有中心加工,系統(tǒng)的邏輯輸入和邏輯輸出是完全相同的數(shù)據(jù)流,應(yīng)將DFD劃分為傳入和傳出兩部分,不要強(qiáng)求一律硬分成三個(gè)部分。除傳入部分外,在變換中心甚至傳出部分也可能從系統(tǒng)外接受某些輸入數(shù)據(jù)流,稱為二次傳入數(shù)據(jù)。該數(shù)據(jù)不應(yīng)當(dāng)作傳入部分的一部分。有些DFD圖可能失之太粗,缺少應(yīng)有的細(xì)節(jié),可考慮對(duì)自己用于分析的DFD進(jìn)行補(bǔ)充。26272、完成“第一級(jí)分解”,建立初始SC圖的框架。包括頂層控制模塊和第一層模塊。兩種畫法:a.頂層控制模塊+傳入、傳出和中心變換3個(gè)一層模塊b.頂層控制模塊+按照傳入、傳出實(shí)際數(shù)據(jù)流數(shù)和中心變換模塊數(shù)確定數(shù)量的模塊28McMTMAMEc,ew,uc,ew,uMcPcRME1ME2MA1MA2Qeepc,prrw,uwu293、完成“第二級(jí)分解/分支分解”,分解SC圖的各個(gè)分支。對(duì)初始SC圖的框架繼續(xù)進(jìn)行由頂向下的分解,直至畫出每個(gè)分支所需要的全部模塊。
傳入路徑的處理:由變換中心外移,把傳入路徑中每個(gè)處理映射成軟件結(jié)構(gòu)中輸入處理的低一層模塊
傳出路徑的處理:由變換中心外移,通路中各處理直接映射成輸出處理的低一層模塊30MAc,eCBAEDedcbaMAc,eGetCGetBReadAGetEAtoBecbaBtoCabbcReadDdDtoEde為了顯式的表示在傳入/傳出路徑上的數(shù)據(jù)變換,在分支分解中可考慮增加變換模塊,功能為
Read/Get和Write/Put。傳入路徑處理31MEWUVuvwu,wMEWriteWuvwu,wPutUUtoVuWriteVv傳出路徑處理32MTPRQepc,prrw,u變換中心的處理33McMAc,eGetCGetBReadAGetEAtoBecbaBtoCabbcReadDdDtoEdeMEWriteWuvwu,wPutUUtoVuWriteVvMTc,ew,u合成34
雖然在任何情況下都可以使用變換分析方法設(shè)計(jì)軟件結(jié)構(gòu),但是在數(shù)據(jù)流具有明顯的事務(wù)特點(diǎn)時(shí),也就是有一個(gè)明顯的“發(fā)射中心”(事務(wù)中心)時(shí),還是以采用事務(wù)分析方法為宜。事務(wù):引發(fā)、觸發(fā)或啟動(dòng)某一動(dòng)作或一串動(dòng)作的任何數(shù)據(jù)、控制、信號(hào)、事件或狀態(tài)變化5.2.4事務(wù)映射35事務(wù)分析步驟:
1、在DFD圖上確定事務(wù)中心、接受部分(包括接受路徑)和發(fā)送部分(包含全部動(dòng)作路徑)事務(wù)中心通常位于DFD圖中多條動(dòng)作路徑的起點(diǎn);向事務(wù)中心提供信息的路徑,是系統(tǒng)的接受路徑;動(dòng)作路徑通常不止一條,切每條均具有自己的結(jié)構(gòu)特性(變換或事務(wù)型)。36372、畫出SC圖框架,把DFD圖的三個(gè)部分分別映射為事務(wù)控制模塊、接受模塊和動(dòng)作發(fā)送模塊事務(wù)控制接收發(fā)送…事務(wù)控制事務(wù)分析發(fā)送…383、分解和細(xì)化接受和發(fā)送分支,完成初始的SC圖接受分支一般具有變換特性,可對(duì)其進(jìn)行變換分析;動(dòng)作分支典型的可映射為4層:P-處理層、T-事務(wù)層、A-操作層、D-細(xì)節(jié)層。A、D??杀籔、T共享。PT1T2A2A1AjA3TiD2D1Dk39
在大型系統(tǒng)的DFD中,變換型和事務(wù)型兩類結(jié)構(gòu)往往同時(shí)存在。對(duì)于一個(gè)大系統(tǒng),常常把變換分析和事務(wù)分析應(yīng)用到同一個(gè)數(shù)據(jù)流圖的不同部分,由此得到的子結(jié)構(gòu)形成“構(gòu)件”,可以利用它們構(gòu)造完整的軟件結(jié)構(gòu)。40混合結(jié)構(gòu)一例C1AC3BC2DLFGEKJabb1b2b3c1c2c3defghjklm總體為變換型結(jié)構(gòu)傳入路徑為事務(wù)型結(jié)構(gòu)41面向數(shù)據(jù)流方法的設(shè)計(jì)過程42
軟件工程師們?cè)陂_發(fā)計(jì)算機(jī)軟件的長(zhǎng)期實(shí)踐中積累了豐富的經(jīng)驗(yàn),總結(jié)這些經(jīng)驗(yàn)得出了一些啟發(fā)規(guī)則。這些啟發(fā)規(guī)則在許多場(chǎng)合能給軟件工程師有益的啟示,往往能幫助他們找到改進(jìn)軟件設(shè)計(jì)提高軟件質(zhì)量的途徑,因此有助于實(shí)現(xiàn)有效的模塊化。下面介紹幾條常用的啟發(fā)規(guī)則。5.2.5結(jié)構(gòu)化設(shè)計(jì)的優(yōu)化規(guī)則43一、改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性通過模塊分解或合并,力求降低耦合提高內(nèi)聚。二、模塊規(guī)模應(yīng)該適中一頁(yè)紙內(nèi)(≤60行)。過大,可考慮繼續(xù)分解模塊功能;過小,可考慮合并到上層模塊。44三、深度、寬度、扇出和扇入都應(yīng)適當(dāng)1、概念深度:軟件結(jié)構(gòu)中控制的層數(shù),往往粗略的標(biāo)志一個(gè)系統(tǒng)的大小和復(fù)雜程度。越大,意味著模塊功能可能過分簡(jiǎn)單,軟件的程序控制復(fù)雜。寬度:軟件結(jié)構(gòu)內(nèi)同一個(gè)層次上的模塊總數(shù)的最大值。寬度越大系統(tǒng)越復(fù)雜。(主要受扇出影響)扇出:模塊直接調(diào)用的下級(jí)模塊數(shù)目,也稱模塊的控制寬度。扇入:直接調(diào)用它的上級(jí)模塊數(shù)。452、高扇出結(jié)構(gòu)扇出數(shù)應(yīng)保持在:<7。太高:調(diào)用的控制困難;太低:應(yīng)考慮向上合并功能。(1)高扇出結(jié)構(gòu):稱為“煎餅”結(jié)構(gòu)計(jì)算實(shí)發(fā)工資取得工資數(shù)據(jù)計(jì)時(shí)制工資額薪金制工資額編外人員工資稅收扣款編外人員稅款常規(guī)扣款編外人員扣款46(2)改進(jìn)方法:增加中間層,形成塔形結(jié)構(gòu)計(jì)算實(shí)發(fā)工資取得工資數(shù)據(jù)計(jì)時(shí)制工資額薪金制工資額編外人員工資稅收扣款編外人員稅款常規(guī)扣款編外人員扣款計(jì)時(shí)工人實(shí)發(fā)工資計(jì)薪工人實(shí)發(fā)工資編外人員實(shí)發(fā)工資473、高扇入結(jié)構(gòu)(1)一個(gè)模塊的扇入越高,則共享這一模塊的上級(jí)模塊數(shù)目越多,消除重復(fù)代碼的效果就越明顯。(2)底層高扇入結(jié)構(gòu):可共享的底層功能多,形成“甕形”或“清真寺”結(jié)構(gòu)。(3)高扇入結(jié)構(gòu)的畫法:調(diào)用線太多,交叉,亂??紤]用編號(hào)代替功能方框,直接畫在調(diào)用模塊下。48四、模塊的作用域應(yīng)該在控制域之內(nèi)1、兩個(gè)范圍的含義控制范圍:包括模塊本身及其下屬模塊,不論這些模塊系由該模塊直接調(diào)用,還是間接調(diào)用。作用范圍:是一個(gè)與條件判定相聯(lián)系的概念,指模塊內(nèi)的某條件判定涉及的直接調(diào)用和間接調(diào)用模塊。一般情況,一個(gè)判定作用范圍內(nèi)的模塊可能會(huì)有3種情況:整個(gè)模塊是否執(zhí)行,依賴于判定的結(jié)果;上述模塊的下屬模塊;模塊內(nèi)有部分功能的執(zhí)行依賴于這一判定。492、作用范圍/控制范圍原則(1)把一個(gè)判定的作用范圍限制在判定所在模塊的控制范圍之內(nèi),是改進(jìn)模塊結(jié)構(gòu)的基本原則。(2)理想情況,是使判定的作用范圍和判定所在模塊的控制范圍盡可能的吻合。3、把系統(tǒng)中有較大影響的判定放在層次結(jié)構(gòu)中較低的位置,可能是導(dǎo)致違反作用范圍/控制范圍原則的主要原因。因此,要么把這類重要的判定從低層次上移到足夠高的上層模塊中,要么把受這些判定影響的模塊調(diào)整并下移到控制范圍之內(nèi)。50MAGBCDEF51五、力爭(zhēng)降低模塊接口的復(fù)雜程度模塊接口復(fù)雜是軟件發(fā)生錯(cuò)誤的一個(gè)主要原因。設(shè)計(jì)接口時(shí),應(yīng)使得信息傳遞簡(jiǎn)單并且和模塊的功能一致。接口復(fù)雜或不一致(即看起來傳遞的數(shù)據(jù)之間沒有聯(lián)系),是緊耦合或低內(nèi)聚的征兆,應(yīng)該重新分析這個(gè)模塊的獨(dú)立性。如:一元二次方程求根的兩種接口設(shè)計(jì):quad_root(TBL,X),其中TBL和X均為數(shù)組quad_root(A,B,C,ROOT1,ROOT2)52六、設(shè)計(jì)單入口單出口的模塊不要設(shè)計(jì)內(nèi)容耦合模塊。七、模塊功能應(yīng)該可以預(yù)測(cè)模塊的功能應(yīng)該能夠預(yù)測(cè),但也要防止模塊功能過分局限。53書例P100545.3過程設(shè)計(jì)(詳細(xì)設(shè)計(jì))目的與任務(wù)原則與方法常用表達(dá)工具流程圖與N-S圖偽代碼和PDL語(yǔ)言555.3.1目的與任務(wù)目的為軟件結(jié)構(gòu)圖中的每一個(gè)模塊確定采用的算法和塊內(nèi)數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具給出更清晰地描述。任務(wù)編寫軟件的“過程設(shè)計(jì)說明書”為每個(gè)模塊確定采用的算法
確定每一模塊使用的數(shù)據(jù)結(jié)構(gòu)
確定模塊接口的細(xì)節(jié)
為每個(gè)模塊設(shè)計(jì)出一組測(cè)試用例。565.3.2過程設(shè)計(jì)的原則與方法清晰第一的設(shè)計(jì)風(fēng)格結(jié)構(gòu)化的控制結(jié)構(gòu)任何程序的邏輯均可用順序、選擇和循環(huán)3種控制結(jié)構(gòu)或它們的組合來實(shí)現(xiàn);每個(gè)控制結(jié)構(gòu)只該有一個(gè)入口和一個(gè)出口。逐步細(xì)化的實(shí)現(xiàn)方法過程設(shè)計(jì)的結(jié)果基本上決定了最終的程序代碼的質(zhì)量571.清晰第一的設(shè)計(jì)風(fēng)格在大多數(shù)情況下,應(yīng)該優(yōu)先考慮程序的清晰度,把效率的考慮放在第二位。58
在軟件的生命周期中,設(shè)計(jì)測(cè)試方案,診斷程序錯(cuò)誤,修改和改進(jìn)程序等都必須首先讀懂程序。實(shí)際上對(duì)于長(zhǎng)期使用的軟件系統(tǒng)而言,人讀程序的時(shí)間可能比寫程序的時(shí)間還要長(zhǎng)得多。因此,衡量程序的質(zhì)量不僅要看它的邏輯是否正確,性能是否滿足要求,更主要的是要看它是否容易閱讀和理解。
過程設(shè)計(jì)的目標(biāo)不僅僅是邏輯上正確地實(shí)現(xiàn)每個(gè)模塊的功能,更重要的是設(shè)計(jì)出的處理過程應(yīng)該盡可能簡(jiǎn)明易懂。結(jié)構(gòu)程序設(shè)計(jì)技術(shù)是實(shí)現(xiàn)上述目標(biāo)的關(guān)鍵技術(shù),因此是過程設(shè)計(jì)的邏輯基礎(chǔ)。59結(jié)構(gòu)化程序設(shè)計(jì)
(StructuredProgramming,SP)任何程序的邏輯均可用順序、選擇和循環(huán)3種控制結(jié)構(gòu)或它們的組合來實(shí)現(xiàn);每個(gè)控制結(jié)構(gòu)只該有一個(gè)入口和一個(gè)出口。如果在詳細(xì)設(shè)計(jì)中,所有的模塊都只使用單入口、單出口的3種基本控制結(jié)構(gòu),則整個(gè)程序?qū)⒈3忠粭l清晰的線索。結(jié)構(gòu)化程序設(shè)計(jì)的經(jīng)典定義如果一個(gè)程序的代碼塊僅僅通過順序、選擇和循環(huán)這三種控制結(jié)構(gòu)進(jìn)行連接,并且每個(gè)代碼塊只有一個(gè)入口和一個(gè)出口,則稱這個(gè)程序是結(jié)構(gòu)化的。60對(duì)經(jīng)典結(jié)構(gòu)程序設(shè)計(jì)的補(bǔ)充完善增加兩種控制結(jié)構(gòu)DO-UNTILDO-CASE允許多個(gè)出口使程序可以立即從循環(huán)中轉(zhuǎn)移出來;GOTO語(yǔ)句不應(yīng)濫用,但也不必完全禁止最好僅在錯(cuò)誤處理時(shí)才使用GOTO語(yǔ)句應(yīng)該總是使用前向GOTO語(yǔ)句應(yīng)限制在一個(gè)模塊內(nèi)跳轉(zhuǎn)613.逐步細(xì)化的實(shí)現(xiàn)方法由粗到細(xì)的逐步描述程序需從算法(處理過程)和數(shù)據(jù)結(jié)構(gòu)兩個(gè)方面同時(shí)逐步細(xì)化逐步細(xì)化的優(yōu)點(diǎn)每一步只優(yōu)先處理當(dāng)前最需要細(xì)化的部分,其余部分推遲到適當(dāng)?shù)臅r(shí)機(jī)再考慮;易于驗(yàn)證程序正確性,比形式化的程序正確性證明更易為非專業(yè)人員接受,因而也更加實(shí)用。結(jié)論模塊的邏輯設(shè)計(jì)必須用結(jié)構(gòu)程序設(shè)計(jì)的原理來指導(dǎo)。625.3.3常用表達(dá)工具流程圖與N-S圖偽代碼和PDL語(yǔ)言631.流程圖與N-S圖流程圖最古老的設(shè)計(jì)表達(dá)工具具有能隨意表達(dá)任何程序邏輯的優(yōu)點(diǎn)部分圖例64缺點(diǎn):
本質(zhì)上不是逐步求精的好工具,過早考慮太多細(xì)節(jié),而忽視全局結(jié)構(gòu)流程圖中的箭頭代表控制流,使得程序員可以隨意轉(zhuǎn)移控制,不符合結(jié)構(gòu)化程序設(shè)計(jì)思想。程序流程圖難以表示數(shù)據(jù)結(jié)構(gòu)65N-S圖是完全遵循結(jié)構(gòu)化程序的流程圖技術(shù)俗稱“方框圖”只能描述結(jié)構(gòu)化程序所允許的標(biāo)準(zhǔn)結(jié)構(gòu)66N-S圖圖例(a)順序(b)IF-THEN-ELSE型分支(c)CASE型多分支(d)循環(huán)(e)調(diào)用子程序A67優(yōu)缺點(diǎn):一個(gè)特定控制結(jié)構(gòu)的作用域明確,不能隨意轉(zhuǎn)移很容易確定局部和全局?jǐn)?shù)據(jù)的作用域很容易表現(xiàn)嵌套關(guān)系,也可表示模塊的層次結(jié)構(gòu)但區(qū)域狹窄,難以適用于大的程序設(shè)計(jì)682.偽代碼和PDL語(yǔ)言偽代碼屬于文字形式的表達(dá)工具工作量小,且較易轉(zhuǎn)換為真正的代碼PDL語(yǔ)言(ProgramDesignLanguage)一種軟件設(shè)計(jì)工具具有很強(qiáng)的描述功能,是一種十分靈活和有用的過程設(shè)計(jì)表達(dá)工具69小結(jié)以上四種工具都可用來描述模塊的邏輯過程;一般用PDL進(jìn)行過程設(shè)計(jì);設(shè)計(jì)完成后用流程圖或N-S圖表示所設(shè)計(jì)的程序,以便復(fù)審或進(jìn)行交流。70補(bǔ)充:改進(jìn)的IPO圖輸入數(shù)據(jù)存儲(chǔ)處理輸出711、面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法的基本思想:算法+數(shù)據(jù)結(jié)構(gòu)=程序,算法的結(jié)構(gòu)常常依賴于要處理的數(shù)據(jù)結(jié)構(gòu)。只要事先知道一個(gè)問題的數(shù)據(jù)結(jié)構(gòu),就可由此導(dǎo)出它的程序結(jié)構(gòu)。2、面向數(shù)據(jù)流的設(shè)計(jì)方法SD與面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法的比較SD方法的目標(biāo)是得出軟件的最終SC圖,注意力集中在模塊的合理劃分;面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)則要求在最終得出程序的過程性描述,并不明確地提出軟件應(yīng)該先分成模塊等概念。不同5.4Jackson方法72相同:都遵循結(jié)構(gòu)程序設(shè)計(jì)、由頂向下逐步細(xì)化策略;都服從“程序結(jié)構(gòu)服從問題結(jié)構(gòu)”的基本原則;都擁有從問題結(jié)構(gòu)(包括數(shù)據(jù)結(jié)構(gòu))導(dǎo)出程序結(jié)構(gòu)的一組映射規(guī)則。兩種方法的應(yīng)用:一般用SD方法確定軟件結(jié)構(gòu),在詳細(xì)設(shè)計(jì)階段用面向數(shù)據(jù)結(jié)構(gòu)的方法確定部分或全部模塊的邏輯過程。73一、Jackson圖
1975年,M.A.Jackson提出了一類至今仍廣泛使用的軟件開發(fā)方法。這一方法從目標(biāo)系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)入手,導(dǎo)出程序框架結(jié)構(gòu),再補(bǔ)充其它細(xì)節(jié),就可得到完整的程序結(jié)構(gòu)圖。這一方法對(duì)輸入、輸出數(shù)據(jù)結(jié)構(gòu)明確的中小型系統(tǒng)特別有效,如商業(yè)應(yīng)用中的文件表格處理。該方法也可與其它方法結(jié)合,用于模塊的詳細(xì)設(shè)計(jì)。在實(shí)際應(yīng)用中,許多報(bào)表程序的設(shè)計(jì)可按照這種方法。該方法的特點(diǎn):程序模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)相對(duì)應(yīng)741.Jackson方法設(shè)計(jì)結(jié)果的表示結(jié)構(gòu)圖解:表示數(shù)據(jù)結(jié)構(gòu)、程序結(jié)構(gòu)的類型圖解邏輯:使用類似PDL語(yǔ)言的工具補(bǔ)充結(jié)構(gòu)圖解2.Jackson圖的組成由方框、連線和一些附加的標(biāo)記組成。0代表選擇,*代表重復(fù),連線表示“包含”或“由……組成”(不一定是調(diào)用);連線上可標(biāo)記Sn、In表示是第幾個(gè)選擇或循環(huán)。753.三種基本程序結(jié)構(gòu)的表示圖例(1)順序結(jié)構(gòu)順序結(jié)構(gòu)的數(shù)據(jù)由一個(gè)或多個(gè)數(shù)據(jù)元素組成,每個(gè)元素按確定次序出現(xiàn)一次A由B、C、D三個(gè)元素順序組成(每個(gè)元素只出現(xiàn)一次,出現(xiàn)的次序依次是B、C和D)763.三種基本程序結(jié)構(gòu)的表示圖例(2)選擇結(jié)構(gòu)選擇結(jié)構(gòu)的數(shù)據(jù)包含兩個(gè)或多個(gè)數(shù)據(jù)元素,每次使用這個(gè)數(shù)據(jù)時(shí)按一定條件從這些數(shù)據(jù)元素中選擇一個(gè)。根據(jù)條件,A是B或C或D中的某一個(gè)(注意:在B、C和D的右上角有小圓圈做標(biāo)記)773.三種基本程序結(jié)構(gòu)的表示圖例(3)重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu)的數(shù)據(jù),根據(jù)使用時(shí)的條件由一個(gè)數(shù)據(jù)元素出現(xiàn)零次或多次構(gòu)成。A由B出現(xiàn)N次(N≥0)組成(注意:在B的右上角有星號(hào)標(biāo)記)78(a)順序結(jié)構(gòu),B、C、D中任一個(gè)都不能是選擇出現(xiàn)或重復(fù)出現(xiàn)的數(shù)據(jù)元素;(b)選擇結(jié)構(gòu),S右面括號(hào)中的數(shù)字i是分支條件的編號(hào);(c)可選結(jié)構(gòu),A或者是元素B或者不出現(xiàn)(可選結(jié)構(gòu)是選擇結(jié)構(gòu)的一種常見的特殊形式);(d)重復(fù)結(jié)構(gòu),循環(huán)結(jié)束條件的編號(hào)為i。改進(jìn)的Jackson圖79數(shù)據(jù)結(jié)構(gòu)與問題結(jié)構(gòu)相對(duì)應(yīng)姓名類別津貼教職工名冊(cè)表頭表體名冊(cè)表體表頭欄名行表名行行*類別姓名津貼教齡津貼0工齡津貼0例:表格的計(jì)算機(jī)處理80程序模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)相對(duì)應(yīng)名冊(cè)表體表頭欄名行表名行行*類別姓名津貼教齡津貼0工齡津貼0產(chǎn)生名冊(cè)文件產(chǎn)生表體產(chǎn)生表頭產(chǎn)生欄名行產(chǎn)生表名行產(chǎn)生行*產(chǎn)生類別產(chǎn)生姓名產(chǎn)生津貼產(chǎn)生教齡津貼0產(chǎn)生工齡津貼04.Jackson偽代碼:seq代表順序結(jié)構(gòu);select代表選擇結(jié)構(gòu);iter[until|while]代表循環(huán)結(jié)構(gòu);end代表一個(gè)結(jié)構(gòu)的結(jié)束。順序結(jié)構(gòu)AseqBCDendA選擇結(jié)構(gòu)Aselectcond1Borcond2Cend
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《GRP時(shí)間管理RevB》課件
- 2025年長(zhǎng)沙貨運(yùn)從業(yè)資格證考試模擬考試題庫(kù)答案
- 2025年內(nèi)蒙古貨物運(yùn)輸從業(yè)資格證考試題
- 2025年廣安貨運(yùn)資格證考試題
- 2025年石家莊貨運(yùn)從業(yè)考試試題答案解析
- 粵教版八年級(jí)下冊(cè)地理-第八章-珠江三角洲-單元檢測(cè)
- 社區(qū)用電安全規(guī)定
- 四川省城市排水工程招標(biāo)文件
- 文化產(chǎn)業(yè)園硅PU施工合同
- 裝卸作業(yè)應(yīng)急預(yù)案
- 南水北調(diào)江蘇水源公司2024年校園招聘高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 幼兒園小班健康《打針吃藥我不怕》課件
- 廣州英語(yǔ)小學(xué)六年級(jí)英語(yǔ)六上冊(cè)作文范文1-6單元
- 2025屆上海市寶山區(qū)行知實(shí)驗(yàn)生物高一上期末教學(xué)質(zhì)量檢測(cè)模擬試題含解析
- 中國(guó)戲曲 昆曲學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 農(nóng)村飲水安全動(dòng)態(tài)監(jiān)測(cè)工作方案
- 《司馬光》公開課一等獎(jiǎng)創(chuàng)新教案
- 中醫(yī)藥創(chuàng)新團(tuán)隊(duì)及人才支持計(jì)劃實(shí)施方案、申報(bào)書
- 農(nóng)場(chǎng)場(chǎng)長(zhǎng)、副場(chǎng)長(zhǎng)崗位責(zé)任制
- 2024年山東省青島中德生態(tài)園(青島國(guó)際經(jīng)濟(jì)合作區(qū))管委會(huì)選聘52人歷年高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- “數(shù)字城市”公共智慧底座項(xiàng)目解決方案
評(píng)論
0/150
提交評(píng)論