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