




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第9章 面向數(shù)據(jù)的設計方法面向數(shù)據(jù)的設計(datastructured-orienteddesign)方法就是根據(jù)問題的數(shù)據(jù)結構定義一組映射,把問題的數(shù)據(jù)結構轉換為問題解的程序結構。面向數(shù)據(jù)流的設計來源于程序的模塊化和功能分解的概念;而面向數(shù)據(jù)結構的設計,則側重于問題的數(shù)據(jù)結構,把程序結構設計成與問題的數(shù)據(jù)結構一致,不強調模塊定義。模塊只是設計過程的副產(chǎn)品,對于模塊獨立性原則也未過分強調。這種程序結構容易理解,也易于修改。第9章 面向數(shù)據(jù)的設計方法面向數(shù)據(jù)的設計(datastru19.1面向數(shù)據(jù)設計的概念在許多應用領域中,信息有著清晰的層次結構,輸入數(shù)據(jù)、存儲信息(即數(shù)據(jù)庫)及輸出數(shù)據(jù)都有各自的組織形式。一般說來,順序出現(xiàn)的數(shù)據(jù)可以用順序控制結構的程序處理;選擇出現(xiàn)的數(shù)據(jù)用分支控制結構的程序處理;重復出現(xiàn)的數(shù)據(jù)用循環(huán)控制結構的程序處理。因此可以根據(jù)數(shù)據(jù)的組織形式確定使用和處理這些數(shù)據(jù)的程序的組織形式。9.1面向數(shù)據(jù)設計的概念在許多應用領域中,信息有著清晰的29.1面向數(shù)據(jù)設計的概念面向數(shù)據(jù)的設計就是根據(jù)數(shù)據(jù)結構的表示獲得軟件表示。本章重點討論:1.Jackson系統(tǒng)開發(fā)方法JacksonSystemDevelopment,簡稱JSD2.基于結構化數(shù)據(jù)的系統(tǒng)開發(fā)方法DataStructuredSystemDevelopment,簡稱DSSD9.1面向數(shù)據(jù)設計的概念面向數(shù)據(jù)的設計就是根據(jù)數(shù)據(jù)結構的39.1面向數(shù)據(jù)設計的概念JSD方法是Jackson于1989年對軟件設計中廣為使用的Jackson結構程序設計(JacksonStructuredProgramming,簡稱JSP)方法的擴展。DSSD方法,也稱為Warnier?Orr方法,是對Warnier程序邏輯構造(LogicalConstructionofProgram,簡稱LCP)方法的擴充,除了設計能力以外,還加強了分析能力。9.1面向數(shù)據(jù)設計的概念JSD方法是Jackson于149.1面向數(shù)據(jù)設計的概念面向數(shù)據(jù)設計方法一般都包括下列任務:1.確定數(shù)據(jù)結構特征;2.用順序、選擇和重復三種基本形式表示數(shù)據(jù);3.把數(shù)據(jù)結構表示映射為軟件的控制結構;4.用與具體方法配套的設計指南進一步精化控制結構;5.開發(fā)軟件的過程性描述。9.1面向數(shù)據(jù)設計的概念面向數(shù)據(jù)設計方法一般都包括下列任59.1面向數(shù)據(jù)設計的概念JSD和DSSD方法的軟件總體結構設計與軟件過程性設計的分界并不明顯,都能很快地過渡到過程性描述。這也是易于理解和易于維護的重要表現(xiàn)之一。JSD和DSSD也是分析與設計一體化的,本章側重于討論與設計有關的技術。面向數(shù)據(jù)的設計方法,要求信息結構用層次圖表示,在軟件需求規(guī)格說明中與信息域的描述相對應。9.1面向數(shù)據(jù)設計的概念JSD和DSSD方法的軟件總體結69.1面向數(shù)據(jù)設計的概念面向數(shù)據(jù)的設計方法的適用場合具有明顯的層次信息結構的應用:企事業(yè)的信息管理系統(tǒng);系統(tǒng)軟件(如操作系統(tǒng));科學與工程計算;計算機輔助教學;組合問題求解等領域。例如:CAD/CAE/CIM類應用軟件。9.1面向數(shù)據(jù)設計的概念面向數(shù)據(jù)的設計方法的適用場合79.2Jackson系統(tǒng)開發(fā)方法用JSD方法開發(fā)一個軟件的步驟:
1)標識實體與動作:用與面向對象方法類似的分析技術識別出系統(tǒng)中的實體(包括人、對象、產(chǎn)生或使用信息的組織)和動作(客觀世界中影響系統(tǒng)實體的那些事件);2)生成實體結構圖:針對每一實體,將影響它的所有動作按發(fā)生的時間順序用Jackson結構圖(Jacksondiagrams)表示出來。為了描述時間約束,同一動作必須出現(xiàn)在多張結構圖中;9.2Jackson系統(tǒng)開發(fā)方法用JSD方法開發(fā)一個軟件8用JSD方法開發(fā)一個軟件的步驟:3)初建系統(tǒng)模型:將實體和動作統(tǒng)一用一個過程模型表示,并定義該模型中的過程與客觀世界中的過程之間的聯(lián)系。所用描述工具為系統(tǒng)規(guī)格說明圖(SystemSpecificationDiagram,簡稱SSD);4)擴充功能性過程:在過程模型中擴充交互型功能和信息型功能,分別產(chǎn)生內部輸入信息和系統(tǒng)輸出信息;5)系統(tǒng)定時:確定實現(xiàn)必須滿足的時間約束;6)實現(xiàn):確定系統(tǒng)中所有軟硬件成分,形成一個完整設計方案。前三個步驟主要在需求分析階段完成,后三步是軟件設計的任務。用JSD方法開發(fā)一個軟件的步驟:3)初建系統(tǒng)模型:將實體和99.2.1JSD分析技術回顧我們曾以大學校園內直達交通車系統(tǒng)USS為例進行需求分析,結果得出“交通車”和“按鈕”兩實體及其動作對應的實體結構圖如下圖所示。ShuttleShuttle*bodyStation(i)Arrive(i)°Leave(i)°Arrive(1)ButtonPush*Leave(1)9.2.1JSD分析技術回顧我們曾以大學校園內直達交通車109.2.1JSD分析技術回顧初建系統(tǒng)模型后,得到USS的系統(tǒng)規(guī)格說明圖(圖7?2?4)。其中后綴為“_0”的過程表示客觀世界中的過程(或外部過程),后綴為“_1”的過程表示系統(tǒng)模型內的過程(或模型過程)。圖7-2-4USS的系統(tǒng)規(guī)格說明圖Button?1DSShuttle?0Shuttle?1SV數(shù)據(jù)流聯(lián)系Button?0狀態(tài)向量聯(lián)系9.2.1JSD分析技術回顧初建系統(tǒng)模型后,得到USS的119.2.1JSD分析技術回顧將實體結構圖與初建系統(tǒng)模型(系統(tǒng)規(guī)格說明圖)綜合起來,可導出目標軟件系統(tǒng)中每個過程內部細節(jié)的結構正文表示,如6.2.3節(jié)過程BUTTON_1和SHUTTLE_1所描述。上述結構正文也可對應地用Jackson結構圖表示。圖6?2?5是與模型過程SHUTTLE_1的結構正文對應的Jackson結構圖。9.2.1JSD分析技術回顧將實體結構圖與初建系統(tǒng)模型(12圖6?2?5對應于結構正文的結構圖Shuttle?1Station(i)*Arrive(1)Leave(1)Shuttle?body1TRANSit?body1wait?body1Transit(i)*Transit(1)*Arrive(i)Leave(i)Wait(1)*TRANSit?bodywait?bodyWait(i)*圖6?2?5對應于結構正文的結構圖Shuttle?1S139.2.2擴充功能性過程這一步驟以初建系統(tǒng)模型為基礎,通過數(shù)據(jù)流和狀態(tài)向量兩種方式將新定義的功能性過程與原有的模型過程聯(lián)系起來。具體考慮兩類功能:1.信息型功能(informationfunction):從模型過程產(chǎn)生的數(shù)據(jù)流和狀態(tài)向量中提取信息并生成輸出信息。嵌入型功能只需在原有模型過程的結構正文中插入一些操作;2.交互型功能(interactivefunction):監(jiān)視模型過程的狀態(tài)向量,在輸出結果的同時產(chǎn)生內部輸入信息,反過來影響模型化過程的動作。9.2.2擴充功能性過程這一步驟以初建系統(tǒng)模型為基礎,通14圖10?2?1兩類功能性過程與系統(tǒng)模型的關系外部過程系統(tǒng)模型信息型功能過程交互型功能過程客觀世界系統(tǒng)圖10?2?1兩類功能性過程與系統(tǒng)模型的關系外部過程系統(tǒng)159.2.2擴充功能性過程假設在交通車上有一塊發(fā)光板,專門顯示車到站的信息,發(fā)光板“亮”說明車到站,“暗”說明車離開。此板或亮或暗受LON(i)、LOFF(i)兩命令的控制。在過程SHUTTLE_1中可嵌入一個新功能:當交通車到達站(i)時,發(fā)出命令LON(i);離開站(i)時,發(fā)出命令LOFF(i)。交通車在兩站之間往返運行過程中,輸出“開關發(fā)光板”的命令數(shù)據(jù)流,圖10?2?2為增加這一功能后的SSD,結構正文修改為:9.2.2擴充功能性過程假設在交通車上有一塊發(fā)光板,專門169.2.2擴充功能性過程圖10?2?2修改后的SSDLAMPCMDS—LampcommandsButton?0BDSVButton?1Shuttle?0Shuttle?1LAMPCMDS9.2.2擴充功能性過程圖10?2?2修改后的SSD17SHUTTLE_1seqLON(1)/*控制發(fā)光板“亮”,說明交通車正停在站1上*/read狀態(tài)向量WAIT_BODY1itrwhileWait(1)read狀態(tài)向量WAIT_BODY1endLOFF(1)/*交通車即將離站;控制發(fā)光板“暗”*/LEAVE(1)TRANSIT_BODY1itrwhileTransit(1)read狀態(tài)向量TRANSIT_BODY1endSHUTTLE_1seq18SHUTTLE_BODY1itrSTATIONseqARRIVE(i)LON(i)/*交通車已??空荆╥)*/WAIT_BODYitrwhileWait(i)read狀態(tài)向量WAIT_BODYendLOFF(i)/*交通車將離開站(i)*/LEAVE(i)TRANSIT_BODYitrwhileTransit(i)read狀態(tài)向量TRANSIT_BODYendSTATIONendSHUTTL_BODY1endARRIVE(1)SHUTTL_1endSHUTTLE_BODY1itr199.2.2擴充功能性過程第二個功能是產(chǎn)生關于啟動(START)和關閉(STOP)發(fā)動機的命令,以此控制交通車的運行。下達STOP命令的條件是,傳感器顯示車已到站,而下達START命令的條件是乘客壓下按鈕招呼交通車并恰好交通車在某個站上等待。為此引入一個功能性過程mcontrol,它從SHUTTLE_1和BUTTON_2兩過程接收數(shù)據(jù),適時地發(fā)出START和STOP兩種命令。過程SHUTTLE_1與過程mcontrol之間用數(shù)據(jù)流“S1D”連接。因此SHUTTLE_1的結構正文進一步修改為:9.2.2擴充功能性過程第二個功能是產(chǎn)生關于啟動(STA20SHUTTLE_1seqLON(1)read狀態(tài)向量WAIT_BODY1itrwhileWait(1)read狀態(tài)向量WAIT_BODY1endLOFF(1)LEAVE(1)TRANSIT_BODY1itrwhileTransit(1)read狀態(tài)向量TRANSIT_BODY1endSHUTTLE_1seq21SHUTTLE_BODY1itrSTATIONseqARRIVE(i)
writearrivetoS1D/*向mcontrol發(fā)送數(shù)據(jù)流,說明車已到站(i)*/LON(i)WAIT_BODYitrwhileWait(i)read狀態(tài)向量WAIT_BODYendLOFF(i)LEAVE(i)TRANSIT_BODYitrwhileTransit(i)read狀態(tài)向量TRANSIT_BODYendSTATIONendSHUTTLE_BODY1endARRIVE(1)
writearrivetoS1D/*發(fā)送數(shù)據(jù)流,說明車已到站1*/SHUTTLE_1endSHUTTLE_BODY1itr229.2.2擴充功能性過程過程SHUTTLE_1執(zhí)行“read狀態(tài)向量”操作和過程mcontrol對“S1D”的訪問都必須有足夠快的頻率,否則交通車將不能及時停下來。為完成USS實例,還需進一步考慮實體BUTTON模型。過程BUTTON_1是對按鈕動作的精確描述(即每次壓下都對應過程push的一次調用),實際上系統(tǒng)應把第一次壓下按鈕招呼交通車的動作與一次運行未開始之前乘客壓下按鈕招呼交通車的請求區(qū)分開來。用已有實體無法描述和區(qū)分動作之間的時間約束,常常引入額外的實體——為此設計過程BUTTON_2,結構圖如圖10?2?3所示9.2.2擴充功能性過程過程SHUTTLE_1執(zhí)行“re23圖10?2?3button?2的結構圖Button?2Pushgroup*ExtraArrivalbodyExtrapushbodyRequestpushArrivalExtraArrival*Extrapush*圖10?2?3button?2的結構圖Button?2P249.2.2擴充功能性過程功能性過程mcontrol既負責檢查BUTTON_2的狀態(tài)向量“B2V”,確定是否有未滿足的請求,又負責把從SHUTTLE_1處(S1D)獲取的信息(即交通車已到達發(fā)出請求的車站)傳遞給BUTTON_2(MBD流)。在此定義了一個交互型功能。BUTTON_2的結構正文描述如下:9.2.2擴充功能性過程功能性過程mcontrol既負責25BUTTON_2seq
request:=no/*置初值*/readMBDandB1D/*檢查是否有未滿足請求和交通車是否停在站上*/BUTTON_BODYitrPUSH_GROUPseqEXTRA_AR_BODYitrwhile(ARRIVAL)/*交通車已靠站但尚無請求,或既無請求交通車也未靠站*/readMBDandB1DEXTRA_AR_BODYendRQ_PUSHseq/*首次請求到達,置請求標志*/
request:=yes
readMBDandB1DRQ_PUSHendBUTTON_2seq26EXTRA_RQ_PUSHitrwhile(REQUEST)/*因交通車尚未靠站,請求暫不滿足,循環(huán)等待*/readMBDandB1DEXTRA_RQ_PUSHendARRIVALseq/*請求滿足,清請求標志*/
request:=noreadMBDandB1DARRIVALendPUSHGROUPendBUTTON_BODYendBUTTON_2endEXTRA_RQ_PUSHitrwhile(REQUE279.2.2擴充功能性過程圖10?2?4給出的系統(tǒng)規(guī)格說明圖反映了在此步驟完成的所有工作。我們在SHUTTLE_1中嵌入了一個功能,產(chǎn)生開、關發(fā)光板的命令,增加了一個功能性過程mcontrol,它除了負責完成BUTTON_2上的交互型功能外,還產(chǎn)生啟動、關閉發(fā)動機的命令。至于mcontrol過程的內部結構可采用傳統(tǒng)的JSP技術導出,關于JSP技術我們將在9.2.4和9.2.5節(jié)討論。9.2.2擴充功能性過程圖10?2?4給出的系統(tǒng)規(guī)格說明28圖10?2?4擴充功能1和2后的系統(tǒng)規(guī)格說明圖Button?0BDSVButton?1Shuttle?0Shuttle?1LAMPCMDSB1DButton?2S1DMBDMcontrolB2VMOTORCMDS圖10?2?4擴充功能1和2后的系統(tǒng)規(guī)格說明圖Button?299.2.3施加時間約束經(jīng)過前幾個步驟,獲得一個由若干順序過程組成的系統(tǒng),它們通過數(shù)據(jù)流或狀態(tài)向量進行通信,但對這些處理過程的執(zhí)行速度尚未考慮。所以,對于輸出流,定義輸出速度和更新頻率;對于輸入流,要求子系統(tǒng)保證及時收集所有輸入信息并保持它們的到達順序不變。在USS實例中,關于時間方面的約束包括:1.停車命令允許的最大延遲時間;2.開、關發(fā)光板命令的響應時間。目前在JSD方法中,時間約束的描述仍采用非形式化的方式。一種解決辦法是引入時間標志流(timemarkerstream)作為模型過程的輸入,時間標志流由特定的時鐘過程產(chǎn)生。9.2.3施加時間約束經(jīng)過前幾個步驟,獲得一個由若干順序309.2.4實現(xiàn)與JSP技術實現(xiàn)是JSD方法的最后一個步驟,它將系統(tǒng)功能說明配置到給定的軟硬件環(huán)境上,并滿足性能方面的約束。這一步驟主要考慮:過程在多處理機上的調度(scheduling)、根據(jù)SSD和Jackson結構圖進行過程變換(transformation)、過程狀態(tài)向量的存儲和訪問(storageandaccessofstatevectors)以及借助JSP技術描述功能性過程。因篇幅所限,本節(jié)及下節(jié)僅討論最后一個問題。9.2.4實現(xiàn)與JSP技術實現(xiàn)是JSD方法的最后一個步驟319.2.4實現(xiàn)與JSP技術JSP技術是一種詳細設計技術,它由問題所固有的數(shù)據(jù)結構導出過程的內部結構。所用的基本工具稱為數(shù)據(jù)結構圖,是Jackson結構圖的變種,專門用于描述數(shù)據(jù)元素之間的邏輯關系。例如在圖10?2?5中,數(shù)據(jù)集合A由若干個B結構(“*”表示重復)組成,而每個B由若干個C結構后跟一個D結構組成(同級分叉表示順序),D結構或為數(shù)據(jù)項E或為F(“°”表示選擇),這種層次信息結構的表示方法同樣適用于輸入、輸出和數(shù)據(jù)庫中的數(shù)據(jù)。9.2.4實現(xiàn)與JSP技術JSP技術是一種詳細設計技術,32圖10?2?5數(shù)據(jù)結構圖AB*C*DE°F°圖10?2?5數(shù)據(jù)結構圖AB*C*DE°F°33圖10?2?6信用卡記帳系統(tǒng)OutstandingbalCNO主文件YYYY1749.30CNODATEAMTXXXX9.1725.30XXXX9.27108.20XXXX9.3065.40YYYY9.13158.00YYYY9.28307.90………支付文件支付記錄*CNO分組*CNOCNO主文件顧客記錄*余款額支付文件XXXX2373.50……圖10?2?6信用卡記帳系統(tǒng)Outstandingba34簡化的信用卡付帳系統(tǒng)如圖10?2?6所示。系統(tǒng)的輸入是支付文件和顧客主文件。支付文件的每個記錄由顧客號(CNO)、支付日期(DATE)和支付金額(AMT)三個數(shù)據(jù)項組成,并假定已按顧客號預先分組。顧客主文件由顧客號(CNO)和余款額(Outstandingbal)兩項組成。兩個文件分別對應圖10-2-6中所示數(shù)據(jù)結構圖。簡化的信用卡付帳系統(tǒng)如圖10?2?6所示。系統(tǒng)的輸入是支付文35假設該系統(tǒng)輸出報表如下圖所示。AccountingReport
CNODateAmtOldbalNewbal
XXXX
YYYY
Grandtot假設該系統(tǒng)輸出報表如下圖所示。AccountingRep36圖10?2?7系統(tǒng)輸出報表所對應的數(shù)據(jù)結構圖記帳報表情況匯總顧客數(shù)據(jù)總付款額總余額CNO組*CNO支付記錄*付款總數(shù)平帳數(shù)據(jù)原余額現(xiàn)余額圖10?2?7系統(tǒng)輸出報表所對應的數(shù)據(jù)結構圖記帳報表情況379.2.5產(chǎn)生過程表示JSP方法通過綜合、對照過程的輸入/輸出數(shù)據(jù)結構的層次關系導出對應的過程性表示——程序。具體步驟如下:1.找出輸入與輸出數(shù)據(jù)結構中有對應關系的數(shù)據(jù)元素,即有直接因果關系者,它們在程序中可一并處理。2.依據(jù)下述三條規(guī)則從數(shù)據(jù)結構圖導出Jackson結構圖。1)在Jackson結構圖中,為有對應關系的每對數(shù)據(jù)元素畫一個處理框,該框所處層次取這兩個數(shù)據(jù)元素在各自數(shù)據(jù)結構圖中層次較低者。2)參照輸入數(shù)據(jù)結構圖中剩余的每個數(shù)據(jù)元素所處層次,在Jackson結構圖的相應層次上畫一個處理框。3)參照輸出數(shù)據(jù)結構圖中剩余的每個數(shù)據(jù)元素所處層次,在Jackson結構圖的相應層次上畫一個處理框。9.2.5產(chǎn)生過程表示JSP方法通過綜合、對照過程的輸入389.2.5產(chǎn)生過程表示3.列出所有操作和條件(包括分支和循環(huán)條件),并把它們分配到Jackson結構圖中。4.根據(jù)Jackson結構圖,產(chǎn)生結構正文描述。將上述第1步驟用于信用卡付帳系統(tǒng)發(fā)現(xiàn),輸入數(shù)據(jù)結構“支付文件”中的“CNO組”、“支付記錄”分別與輸出數(shù)據(jù)結構中的“CNO組”、“支付記錄”對應,輸入數(shù)據(jù)結構“顧客主文件”中的“顧客記錄”與輸出數(shù)據(jù)結構中的“CNO組”對應。參照上述第2步驟得到該系統(tǒng)的結構圖(圖10?2?8)。9.2.5產(chǎn)生過程表示3.列出所有操作和條件(包括分支和39圖10?2?8導出Jackson結構圖(程序結構)信用卡付帳系統(tǒng)情況匯總處理顧客數(shù)據(jù)總付款額總余額處理CNO組*處理CNO處理支付記錄*計算顧客支付總額平帳數(shù)據(jù)原余額現(xiàn)余額圖10?2?8導出Jackson結構圖(程序結構)信用卡40執(zhí)行完3、4兩步驟后,該結構圖中
“處理顧客數(shù)據(jù)”一框對應的結構正文應為:PROCESS_CUST_DATAseqopenPAY_FILE;openCNO_MASTER_FILE;PROCESSCNO_GROUPitruntileof:PAY_FILE;readPAY_FILE;PROCESS_CNO;/*讀顧客總文件,找出原余額*/執(zhí)行完3、4兩步驟后,該結構圖中
“處理顧客數(shù)據(jù)”一框對應的41PROCESS_PAY_RECitruntilend:CNO_GROUP;writereportline;computertotalpayments;readPAY_FILE;endPROCESS_PAY_RECCOMPUTE_CUST_TOTAL;COMPUTE_BALANCEseqPROCESS_OLD_BAL;COMPUTE_NEW_BAL;writereportline;endCOMPUTE_BALANCEendPROCESS_CNO_GROUPendPROCESS_CUST_DATAPROCESS_PAY_RECitruntilend:42課程名稱:軟件工程第18講班級:日期:教室:教學題目:9.3DSSD方法教學目的:掌握DSSD方法,了解復雜過程邏輯的描述。教學重點:DSSD方法。教學難點:DSSD方法。教具:多媒體教室、電子教案作業(yè):習題4課程名稱:軟件工程第18講439.3基于結構化數(shù)據(jù)的系統(tǒng)開發(fā)(DSSD)方法DSSD需求分析階段產(chǎn)生的需求規(guī)格說明,將作為設計過程的輸入信息。設計過程的輸出為設計規(guī)格說明,具體包括輸出數(shù)據(jù)結構、過程描述和設計約束三方面內容。DSSD設計分為邏輯設計和物理設計兩個步驟,邏輯設計著重考慮軟件的輸出、界面及過程性表示,物理設計則在邏輯設計的基礎上考慮如何滿足性能、可維護性和其他一些設計約束。基本工具:Warnier?Orr圖,既可描述程序結構,又可描述數(shù)據(jù)結構。這里介紹一種簡化的DSSD方法。9.3基于結構化數(shù)據(jù)的系統(tǒng)開發(fā)(DSSD)方法DSSD需449.3.1DSSD設計步驟DSSD的邏輯設計步驟主要有兩個:1.推導輸出數(shù)據(jù)的邏輯結構(LogicalOutputStructure,簡稱LOS);2.由LOS導出處理過程的邏輯結構(LogicalProcessStructure,簡稱LPS)。9.3.1DSSD設計步驟DSSD的邏輯設計步驟主要有兩459.3.1DSSD設計步驟按下述簡化方法,LOS可分四步導出:1)從問題描述本身或其他相關需求信息中找出所有不同的原子數(shù)據(jù)項(即不可再分的數(shù)據(jù)項);2)說明每個原子數(shù)據(jù)項的出現(xiàn)頻率;3)找出那些可再分的一般數(shù)據(jù)項;4)用Warnier-Orr圖表示LOS。9.3.1DSSD設計步驟按下述簡化方法,LOS可分四步46【例9.1】產(chǎn)生如圖10-3-1所示的“機器使
用情況日報表”系統(tǒng)。Daily_Machine_Tool_Usage_ReportDate:DATE
ToolcategoryToolIDstatusNO.partsproducedTool_CATTIDSNO_PARTS
CATEGORYTOTALPARTS:CAT_TOT_PARTS
CATEGORYTOTALPARTS:TOTALPARTSPRODUCEDTHISDATE:MANUF_TOTAL【例9.1】產(chǎn)生如圖10-3-1所示的“機器使
用情479.3.2推導輸出數(shù)據(jù)的邏輯結構輸出數(shù)據(jù)結構表現(xiàn)為數(shù)據(jù)項的一種層次結構。按照LOS推導步驟:1)首先從問題描述(例9.1所給報表原型)中找出原子數(shù)據(jù)項;2)確定每個原子數(shù)據(jù)項出現(xiàn)的頻率(圖10?3?2)。9.3.2推導輸出數(shù)據(jù)的邏輯結構輸出數(shù)據(jù)結構表現(xiàn)為數(shù)據(jù)項48圖10?3?2原子數(shù)據(jù)項及出現(xiàn)頻率原子數(shù)據(jù)項頻率細節(jié)HEADING(標題)DATE(日期)COLUME_HEAD(列標題)TOOL_CAT(工具類名稱)TID(工具標志)S(狀態(tài))NO_PARTS(產(chǎn)品件數(shù))SUB_TOTAL_HEAD(按類匯總小標題)CAT_TOT_PARTS(按類匯總)TOTAL_HEAD(按目匯總標題)MANUF_TOTAL(每日產(chǎn)品總計)1/報表1/報表1/報表1/工具類1/工具1/工具1/工具1/工具類1/工具類1/報表1/報表每日機器使用情況報表若干類,每類有若干項按類匯總按日匯總圖10?3?2原子數(shù)據(jù)項及出現(xiàn)頻率原子數(shù)據(jù)項頻率細節(jié)HE499.3.2推導輸出數(shù)據(jù)的邏輯結構3)找出一般數(shù)據(jù)項,有:報表(出現(xiàn)一次)、工具類(每報表出現(xiàn)t次)、工具(每類出現(xiàn)s次)。4)用Warnier-Orr圖表示LOS9.3.2推導輸出數(shù)據(jù)的邏輯結構3)找出一般數(shù)據(jù)項,有:509.3.2推導輸出數(shù)據(jù)的邏輯結構圖10?3?3LOS的Warnier?Orr圖示標題日期標題日期工具類名稱工具標識列標題工具狀態(tài)工具類(1,s)產(chǎn)品件數(shù)(1,t)按類匯總小標題每日匯總標題按類匯總每日產(chǎn)品總計生產(chǎn)日報表9.3.2推導輸出數(shù)據(jù)的邏輯結構圖10?3?3LOS519.3.3推導處理過程的邏輯結構(LPS)LPS是軟件的過程性表示,推導步驟如下:1)從LOS的Warnier?Orr圖示中去掉所有原子數(shù)據(jù)項;生產(chǎn)日報表圖10?3?4去掉所有原子數(shù)據(jù)項
工具工具類(1,s)(1,t)9.3.3推導處理過程的邏輯結構(LPS)LPS是軟件522)對每個一般數(shù)據(jù)項加上“.BEGIN、.END”分隔符;.BEGIN
.BEGIN工具工具類(1,s)(1,t)
.END.END生產(chǎn)日報表2)對每個一般數(shù)據(jù)項加上“.BEGIN、.END”分隔符;.533)定義所有初始、終止的指令或過程;
4)說明所有數(shù)值計算和非數(shù)值處理;.BEGIN置MANUF_TOTAL為0.BEGIN
置CAT_TOTALPARTS為0
工具類工具(1,t)(1,s)把NO_PARTS加到CAT_TOTAL_PARTS上
.END.END生產(chǎn)日報表把CAT_TOTAL_PARTS加到MANUF_TOTAL上3)定義所有初始、終止的指令或過程;
4)說明所有數(shù)值計算和545)說明所有輸出指令或過程;
6)說明所有輸入指令或過程。圖10?3?6完整的LPS生產(chǎn)日報表.BEGIN工具類(1,t).END輸出標題、日期標題、日期、列標題置MANUF_TOTAL為0取一條邏輯記錄.BEGIN工具(1,s).END輸出TOOL_CAT置CAT_TOTAL_PARTS為0輸出TID,S,NO_PARTS把NO_PARTS加到CAT_TOTAL_CAT上取一條邏輯記錄輸出SUB_TOTAL_HEAD把CAT_TOTAL_PARTS加到MANUF_TOTAL上輸出CAT_TOTAL_PARTS輸出TOTAL_HEAD輸出MANUF_TOTAL5)說明所有輸出指令或過程;
6)說明所有輸入指令或過程。55圖10?3?6完整的LPS生產(chǎn)日報表.BEGIN工具類(1,t).END輸出標題、日期標題、日期、列標題置MANUF_TOTAL為0取一邏輯記錄.BEGIN工具(1,s).END輸出TOOL_CAT置CAT_TOTAL_PARTS為0輸出TID,S,NO_PARTS把NO_PARTS加到CAT_TOTAL_CAT上取一條邏輯記錄輸出SUB_TOTAL_HEAD把CAT_TOTAL_PARTS加到MANUF_TOTAL上輸出CAT_TOTAL_PARTS輸出TOTAL_HEAD輸出MANUF_TOTAL圖10?3?6完整的LPS生.BEGIN輸出標題、日期標569.3.4復雜過程邏輯的描述DSSD提供了一種復雜過程邏輯(ComplexProcessLogic,簡稱CPL)的工具?!纠?1.2】假設某郵購系統(tǒng)按下面算法計算顧客購物的總費用,即貨物本身的價格加上運費減去折頭。按表10-1計算運費,按表10-2計算折頭:9.3.4復雜過程邏輯的描述DSSD提供了一種復雜過程邏57表10-1表10-1距離(英里)重量(磅)收費<=100<=100>100>100<=50>50<=50>500.01×距離×重量1.10×重量0.02×距離×重量2.35×重量貨款總額(美元)折頭率(%)<100<500且≥100≥500012表10-1表10-1距離(英里)重量(磅)收費<=100<=58購物總費用貨款總額+運費–折頭每種物品的費用+(1,i)單價×數(shù)量本地/?1遠程/?2輕/?3重/?40.01×距離×重量1.10×重量輕/?3重/?40.02×距離×重量2.35×重量貨款總額×折頭率0%(/?5)1%(/?6)2%(/?7)購貨款總額每種物品的費用單價本地輕0.01×距離×重量1.599.3.4復雜過程邏輯的描述其中:/?i——分支條件或循環(huán)條件;+、–、×——算術運算符;
——表示不可兼具的選擇關系。本例中:/?1→距離<=100英里;/?2→距離>100英里;/?3→重量<=50磅;/?4→重量>50磅;/?5→貨款總額<100美元;/?6→100美元<=貨款總額<500美元;/?7→貨款總額>=500美元;9.3.4復雜過程邏輯的描述其中:/?i——分支條件或循60習題9.4用Jackson數(shù)據(jù)結構圖表示Pascal文件結構:typepersons=recordage:integer;sex:(male,female);casetof1:factory;2:office;3:administrationend;end;varthefile:fileofpersons;習題9.4用Jackson數(shù)據(jù)結構圖表示Pasc61解:office°record*agesextthefileAdministration°Factory°female°male°解:office°record*agesext62第9章 面向數(shù)據(jù)的設計方法面向數(shù)據(jù)的設計(datastructured-orienteddesign)方法就是根據(jù)問題的數(shù)據(jù)結構定義一組映射,把問題的數(shù)據(jù)結構轉換為問題解的程序結構。面向數(shù)據(jù)流的設計來源于程序的模塊化和功能分解的概念;而面向數(shù)據(jù)結構的設計,則側重于問題的數(shù)據(jù)結構,把程序結構設計成與問題的數(shù)據(jù)結構一致,不強調模塊定義。模塊只是設計過程的副產(chǎn)品,對于模塊獨立性原則也未過分強調。這種程序結構容易理解,也易于修改。第9章 面向數(shù)據(jù)的設計方法面向數(shù)據(jù)的設計(datastru639.1面向數(shù)據(jù)設計的概念在許多應用領域中,信息有著清晰的層次結構,輸入數(shù)據(jù)、存儲信息(即數(shù)據(jù)庫)及輸出數(shù)據(jù)都有各自的組織形式。一般說來,順序出現(xiàn)的數(shù)據(jù)可以用順序控制結構的程序處理;選擇出現(xiàn)的數(shù)據(jù)用分支控制結構的程序處理;重復出現(xiàn)的數(shù)據(jù)用循環(huán)控制結構的程序處理。因此可以根據(jù)數(shù)據(jù)的組織形式確定使用和處理這些數(shù)據(jù)的程序的組織形式。9.1面向數(shù)據(jù)設計的概念在許多應用領域中,信息有著清晰的649.1面向數(shù)據(jù)設計的概念面向數(shù)據(jù)的設計就是根據(jù)數(shù)據(jù)結構的表示獲得軟件表示。本章重點討論:1.Jackson系統(tǒng)開發(fā)方法JacksonSystemDevelopment,簡稱JSD2.基于結構化數(shù)據(jù)的系統(tǒng)開發(fā)方法DataStructuredSystemDevelopment,簡稱DSSD9.1面向數(shù)據(jù)設計的概念面向數(shù)據(jù)的設計就是根據(jù)數(shù)據(jù)結構的659.1面向數(shù)據(jù)設計的概念JSD方法是Jackson于1989年對軟件設計中廣為使用的Jackson結構程序設計(JacksonStructuredProgramming,簡稱JSP)方法的擴展。DSSD方法,也稱為Warnier?Orr方法,是對Warnier程序邏輯構造(LogicalConstructionofProgram,簡稱LCP)方法的擴充,除了設計能力以外,還加強了分析能力。9.1面向數(shù)據(jù)設計的概念JSD方法是Jackson于1669.1面向數(shù)據(jù)設計的概念面向數(shù)據(jù)設計方法一般都包括下列任務:1.確定數(shù)據(jù)結構特征;2.用順序、選擇和重復三種基本形式表示數(shù)據(jù);3.把數(shù)據(jù)結構表示映射為軟件的控制結構;4.用與具體方法配套的設計指南進一步精化控制結構;5.開發(fā)軟件的過程性描述。9.1面向數(shù)據(jù)設計的概念面向數(shù)據(jù)設計方法一般都包括下列任679.1面向數(shù)據(jù)設計的概念JSD和DSSD方法的軟件總體結構設計與軟件過程性設計的分界并不明顯,都能很快地過渡到過程性描述。這也是易于理解和易于維護的重要表現(xiàn)之一。JSD和DSSD也是分析與設計一體化的,本章側重于討論與設計有關的技術。面向數(shù)據(jù)的設計方法,要求信息結構用層次圖表示,在軟件需求規(guī)格說明中與信息域的描述相對應。9.1面向數(shù)據(jù)設計的概念JSD和DSSD方法的軟件總體結689.1面向數(shù)據(jù)設計的概念面向數(shù)據(jù)的設計方法的適用場合具有明顯的層次信息結構的應用:企事業(yè)的信息管理系統(tǒng);系統(tǒng)軟件(如操作系統(tǒng));科學與工程計算;計算機輔助教學;組合問題求解等領域。例如:CAD/CAE/CIM類應用軟件。9.1面向數(shù)據(jù)設計的概念面向數(shù)據(jù)的設計方法的適用場合699.2Jackson系統(tǒng)開發(fā)方法用JSD方法開發(fā)一個軟件的步驟:
1)標識實體與動作:用與面向對象方法類似的分析技術識別出系統(tǒng)中的實體(包括人、對象、產(chǎn)生或使用信息的組織)和動作(客觀世界中影響系統(tǒng)實體的那些事件);2)生成實體結構圖:針對每一實體,將影響它的所有動作按發(fā)生的時間順序用Jackson結構圖(Jacksondiagrams)表示出來。為了描述時間約束,同一動作必須出現(xiàn)在多張結構圖中;9.2Jackson系統(tǒng)開發(fā)方法用JSD方法開發(fā)一個軟件70用JSD方法開發(fā)一個軟件的步驟:3)初建系統(tǒng)模型:將實體和動作統(tǒng)一用一個過程模型表示,并定義該模型中的過程與客觀世界中的過程之間的聯(lián)系。所用描述工具為系統(tǒng)規(guī)格說明圖(SystemSpecificationDiagram,簡稱SSD);4)擴充功能性過程:在過程模型中擴充交互型功能和信息型功能,分別產(chǎn)生內部輸入信息和系統(tǒng)輸出信息;5)系統(tǒng)定時:確定實現(xiàn)必須滿足的時間約束;6)實現(xiàn):確定系統(tǒng)中所有軟硬件成分,形成一個完整設計方案。前三個步驟主要在需求分析階段完成,后三步是軟件設計的任務。用JSD方法開發(fā)一個軟件的步驟:3)初建系統(tǒng)模型:將實體和719.2.1JSD分析技術回顧我們曾以大學校園內直達交通車系統(tǒng)USS為例進行需求分析,結果得出“交通車”和“按鈕”兩實體及其動作對應的實體結構圖如下圖所示。ShuttleShuttle*bodyStation(i)Arrive(i)°Leave(i)°Arrive(1)ButtonPush*Leave(1)9.2.1JSD分析技術回顧我們曾以大學校園內直達交通車729.2.1JSD分析技術回顧初建系統(tǒng)模型后,得到USS的系統(tǒng)規(guī)格說明圖(圖7?2?4)。其中后綴為“_0”的過程表示客觀世界中的過程(或外部過程),后綴為“_1”的過程表示系統(tǒng)模型內的過程(或模型過程)。圖7-2-4USS的系統(tǒng)規(guī)格說明圖Button?1DSShuttle?0Shuttle?1SV數(shù)據(jù)流聯(lián)系Button?0狀態(tài)向量聯(lián)系9.2.1JSD分析技術回顧初建系統(tǒng)模型后,得到USS的739.2.1JSD分析技術回顧將實體結構圖與初建系統(tǒng)模型(系統(tǒng)規(guī)格說明圖)綜合起來,可導出目標軟件系統(tǒng)中每個過程內部細節(jié)的結構正文表示,如6.2.3節(jié)過程BUTTON_1和SHUTTLE_1所描述。上述結構正文也可對應地用Jackson結構圖表示。圖6?2?5是與模型過程SHUTTLE_1的結構正文對應的Jackson結構圖。9.2.1JSD分析技術回顧將實體結構圖與初建系統(tǒng)模型(74圖6?2?5對應于結構正文的結構圖Shuttle?1Station(i)*Arrive(1)Leave(1)Shuttle?body1TRANSit?body1wait?body1Transit(i)*Transit(1)*Arrive(i)Leave(i)Wait(1)*TRANSit?bodywait?bodyWait(i)*圖6?2?5對應于結構正文的結構圖Shuttle?1S759.2.2擴充功能性過程這一步驟以初建系統(tǒng)模型為基礎,通過數(shù)據(jù)流和狀態(tài)向量兩種方式將新定義的功能性過程與原有的模型過程聯(lián)系起來。具體考慮兩類功能:1.信息型功能(informationfunction):從模型過程產(chǎn)生的數(shù)據(jù)流和狀態(tài)向量中提取信息并生成輸出信息。嵌入型功能只需在原有模型過程的結構正文中插入一些操作;2.交互型功能(interactivefunction):監(jiān)視模型過程的狀態(tài)向量,在輸出結果的同時產(chǎn)生內部輸入信息,反過來影響模型化過程的動作。9.2.2擴充功能性過程這一步驟以初建系統(tǒng)模型為基礎,通76圖10?2?1兩類功能性過程與系統(tǒng)模型的關系外部過程系統(tǒng)模型信息型功能過程交互型功能過程客觀世界系統(tǒng)圖10?2?1兩類功能性過程與系統(tǒng)模型的關系外部過程系統(tǒng)779.2.2擴充功能性過程假設在交通車上有一塊發(fā)光板,專門顯示車到站的信息,發(fā)光板“亮”說明車到站,“暗”說明車離開。此板或亮或暗受LON(i)、LOFF(i)兩命令的控制。在過程SHUTTLE_1中可嵌入一個新功能:當交通車到達站(i)時,發(fā)出命令LON(i);離開站(i)時,發(fā)出命令LOFF(i)。交通車在兩站之間往返運行過程中,輸出“開關發(fā)光板”的命令數(shù)據(jù)流,圖10?2?2為增加這一功能后的SSD,結構正文修改為:9.2.2擴充功能性過程假設在交通車上有一塊發(fā)光板,專門789.2.2擴充功能性過程圖10?2?2修改后的SSDLAMPCMDS—LampcommandsButton?0BDSVButton?1Shuttle?0Shuttle?1LAMPCMDS9.2.2擴充功能性過程圖10?2?2修改后的SSD79SHUTTLE_1seqLON(1)/*控制發(fā)光板“亮”,說明交通車正停在站1上*/read狀態(tài)向量WAIT_BODY1itrwhileWait(1)read狀態(tài)向量WAIT_BODY1endLOFF(1)/*交通車即將離站;控制發(fā)光板“暗”*/LEAVE(1)TRANSIT_BODY1itrwhileTransit(1)read狀態(tài)向量TRANSIT_BODY1endSHUTTLE_1seq80SHUTTLE_BODY1itrSTATIONseqARRIVE(i)LON(i)/*交通車已??空荆╥)*/WAIT_BODYitrwhileWait(i)read狀態(tài)向量WAIT_BODYendLOFF(i)/*交通車將離開站(i)*/LEAVE(i)TRANSIT_BODYitrwhileTransit(i)read狀態(tài)向量TRANSIT_BODYendSTATIONendSHUTTL_BODY1endARRIVE(1)SHUTTL_1endSHUTTLE_BODY1itr819.2.2擴充功能性過程第二個功能是產(chǎn)生關于啟動(START)和關閉(STOP)發(fā)動機的命令,以此控制交通車的運行。下達STOP命令的條件是,傳感器顯示車已到站,而下達START命令的條件是乘客壓下按鈕招呼交通車并恰好交通車在某個站上等待。為此引入一個功能性過程mcontrol,它從SHUTTLE_1和BUTTON_2兩過程接收數(shù)據(jù),適時地發(fā)出START和STOP兩種命令。過程SHUTTLE_1與過程mcontrol之間用數(shù)據(jù)流“S1D”連接。因此SHUTTLE_1的結構正文進一步修改為:9.2.2擴充功能性過程第二個功能是產(chǎn)生關于啟動(STA82SHUTTLE_1seqLON(1)read狀態(tài)向量WAIT_BODY1itrwhileWait(1)read狀態(tài)向量WAIT_BODY1endLOFF(1)LEAVE(1)TRANSIT_BODY1itrwhileTransit(1)read狀態(tài)向量TRANSIT_BODY1endSHUTTLE_1seq83SHUTTLE_BODY1itrSTATIONseqARRIVE(i)
writearrivetoS1D/*向mcontrol發(fā)送數(shù)據(jù)流,說明車已到站(i)*/LON(i)WAIT_BODYitrwhileWait(i)read狀態(tài)向量WAIT_BODYendLOFF(i)LEAVE(i)TRANSIT_BODYitrwhileTransit(i)read狀態(tài)向量TRANSIT_BODYendSTATIONendSHUTTLE_BODY1endARRIVE(1)
writearrivetoS1D/*發(fā)送數(shù)據(jù)流,說明車已到站1*/SHUTTLE_1endSHUTTLE_BODY1itr849.2.2擴充功能性過程過程SHUTTLE_1執(zhí)行“read狀態(tài)向量”操作和過程mcontrol對“S1D”的訪問都必須有足夠快的頻率,否則交通車將不能及時停下來。為完成USS實例,還需進一步考慮實體BUTTON模型。過程BUTTON_1是對按鈕動作的精確描述(即每次壓下都對應過程push的一次調用),實際上系統(tǒng)應把第一次壓下按鈕招呼交通車的動作與一次運行未開始之前乘客壓下按鈕招呼交通車的請求區(qū)分開來。用已有實體無法描述和區(qū)分動作之間的時間約束,常常引入額外的實體——為此設計過程BUTTON_2,結構圖如圖10?2?3所示9.2.2擴充功能性過程過程SHUTTLE_1執(zhí)行“re85圖10?2?3button?2的結構圖Button?2Pushgroup*ExtraArrivalbodyExtrapushbodyRequestpushArrivalExtraArrival*Extrapush*圖10?2?3button?2的結構圖Button?2P869.2.2擴充功能性過程功能性過程mcontrol既負責檢查BUTTON_2的狀態(tài)向量“B2V”,確定是否有未滿足的請求,又負責把從SHUTTLE_1處(S1D)獲取的信息(即交通車已到達發(fā)出請求的車站)傳遞給BUTTON_2(MBD流)。在此定義了一個交互型功能。BUTTON_2的結構正文描述如下:9.2.2擴充功能性過程功能性過程mcontrol既負責87BUTTON_2seq
request:=no/*置初值*/readMBDandB1D/*檢查是否有未滿足請求和交通車是否停在站上*/BUTTON_BODYitrPUSH_GROUPseqEXTRA_AR_BODYitrwhile(ARRIVAL)/*交通車已靠站但尚無請求,或既無請求交通車也未靠站*/readMBDandB1DEXTRA_AR_BODYendRQ_PUSHseq/*首次請求到達,置請求標志*/
request:=yes
readMBDandB1DRQ_PUSHendBUTTON_2seq88EXTRA_RQ_PUSHitrwhile(REQUEST)/*因交通車尚未靠站,請求暫不滿足,循環(huán)等待*/readMBDandB1DEXTRA_RQ_PUSHendARRIVALseq/*請求滿足,清請求標志*/
request:=noreadMBDandB1DARRIVALendPUSHGROUPendBUTTON_BODYendBUTTON_2endEXTRA_RQ_PUSHitrwhile(REQUE899.2.2擴充功能性過程圖10?2?4給出的系統(tǒng)規(guī)格說明圖反映了在此步驟完成的所有工作。我們在SHUTTLE_1中嵌入了一個功能,產(chǎn)生開、關發(fā)光板的命令,增加了一個功能性過程mcontrol,它除了負責完成BUTTON_2上的交互型功能外,還產(chǎn)生啟動、關閉發(fā)動機的命令。至于mcontrol過程的內部結構可采用傳統(tǒng)的JSP技術導出,關于JSP技術我們將在9.2.4和9.2.5節(jié)討論。9.2.2擴充功能性過程圖10?2?4給出的系統(tǒng)規(guī)格說明90圖10?2?4擴充功能1和2后的系統(tǒng)規(guī)格說明圖Button?0BDSVButton?1Shuttle?0Shuttle?1LAMPCMDSB1DButton?2S1DMBDMcontrolB2VMOTORCMDS圖10?2?4擴充功能1和2后的系統(tǒng)規(guī)格說明圖Button?919.2.3施加時間約束經(jīng)過前幾個步驟,獲得一個由若干順序過程組成的系統(tǒng),它們通過數(shù)據(jù)流或狀態(tài)向量進行通信,但對這些處理過程的執(zhí)行速度尚未考慮。所以,對于輸出流,定義輸出速度和更新頻率;對于輸入流,要求子系統(tǒng)保證及時收集所有輸入信息并保持它們的到達順序不變。在USS實例中,關于時間方面的約束包括:1.停車命令允許的最大延遲時間;2.開、關發(fā)光板命令的響應時間。目前在JSD方法中,時間約束的描述仍采用非形式化的方式。一種解決辦法是引入時間標志流(timemarkerstream)作為模型過程的輸入,時間標志流由特定的時鐘過程產(chǎn)生。9.2.3施加時間約束經(jīng)過前幾個步驟,獲得一個由若干順序929.2.4實現(xiàn)與JSP技術實現(xiàn)是JSD方法的最后一個步驟,它將系統(tǒng)功能說明配置到給定的軟硬件環(huán)境上,并滿足性能方面的約束。這一步驟主要考慮:過程在多處理機上的調度(scheduling)、根據(jù)SSD和Jackson結構圖進行過程變換(transformation)、過程狀態(tài)向量的存儲和訪問(storageandaccessofstatevectors)以及借助JSP技術描述功能性過程。因篇幅所限,本節(jié)及下節(jié)僅討論最后一個問題。9.2.4實現(xiàn)與JSP技術實現(xiàn)是JSD方法的最后一個步驟939.2.4實現(xiàn)與JSP技術JSP技術是一種詳細設計技術,它由問題所固有的數(shù)據(jù)結構導出過程的內部結構。所用的基本工具稱為數(shù)據(jù)結構圖,是Jackson結構圖的變種,專門用于描述數(shù)據(jù)元素之間的邏輯關系。例如在圖10?2?5中,數(shù)據(jù)集合A由若干個B結構(“*”表示重復)組成,而每個B由若干個C結構后跟一個D結構組成(同級分叉表示順序),D結構或為數(shù)據(jù)項E或為F(“°”表示選擇),這種層次信息結構的表示方法同樣適用于輸入、輸出和數(shù)據(jù)庫中的數(shù)據(jù)。9.2.4實現(xiàn)與JSP技術JSP技術是一種詳細設計技術,94圖10?2?5數(shù)據(jù)結構圖AB*C*DE°F°圖10?2?5數(shù)據(jù)結構圖AB*C*DE°F°95圖10?2?6信用卡記帳系統(tǒng)OutstandingbalCNO主文件YYYY1749.30CNODATEAMTXXXX9.1725.30XXXX9.27108.20XXXX9.3065.40YYYY9.13158.00YYYY9.28307.90………支付文件支付記錄*CNO分組*CNOCNO主文件顧客記錄*余款額支付文件XXXX2373.50……圖10?2?6信用卡記帳系統(tǒng)Outstandingba96簡化的信用卡付帳系統(tǒng)如圖10?2?6所示。系統(tǒng)的輸入是支付文件和顧客主文件。支付文件的每個記錄由顧客號(CNO)、支付日期(DATE)和支付金額(AMT)三個數(shù)據(jù)項組成,并假定已按顧客號預先分組。顧客主文件由顧客號(CNO)和余款額(Outstandingbal)兩項組成。兩個文件分別對應圖10-2-6中所示數(shù)據(jù)結構圖。簡化的信用卡付帳系統(tǒng)如圖10?2?6所示。系統(tǒng)的輸入是支付文97假設該系統(tǒng)輸出報表如下圖所示。AccountingReport
CNODateAmtOldbalNewbal
XXXX
YYYY
Grandtot假設該系統(tǒng)輸出報表如下圖所示。AccountingRep98圖10?2?7系統(tǒng)輸出報表所對應的數(shù)據(jù)結構圖記帳報表情況匯總顧客數(shù)據(jù)總付款額總余額CNO組*CNO支付記錄*付款總數(shù)平帳數(shù)據(jù)原余額現(xiàn)余額圖10?2?7系統(tǒng)輸出報表所對應的數(shù)據(jù)結構圖記帳報表情況999.2.5產(chǎn)生過程表示JSP方法通過綜合、對照過程的輸入/輸出數(shù)據(jù)結構的層次關系導出對應的過程性表示——程序。具體步驟如下:1.找出輸入與輸出數(shù)據(jù)結構中有對應關系的數(shù)據(jù)元素,即有直接因果關系者,它們在程序中可一并處理。2.依據(jù)下述三條規(guī)則從數(shù)據(jù)結構圖導出Jackson結構圖。1)在Jackson結構圖中,為有對應關系的每對數(shù)據(jù)元素畫一個處理框,該框所處層次取這兩個數(shù)據(jù)元素在各自數(shù)據(jù)結構圖中層次較低者。2)參照輸入數(shù)據(jù)結構圖中剩余的每個數(shù)據(jù)元素所處層次,在Jackson結構圖的相應層次上畫一個處理框。3)參照輸出數(shù)據(jù)結構圖中剩余的每個數(shù)據(jù)元素所處層次,在Jackson結構圖的相應層次上畫一個處理框。9.2.5產(chǎn)生過程表示JSP方法通過綜合、對照過程的輸入1009.2.5產(chǎn)生過程表示3.列出所有操作和條件(包括分支和循環(huán)條件),并把它們分配到Jackson結構圖中。4.根據(jù)Jackson結構圖,產(chǎn)生結構正文描述。將上述第1步驟用于信用卡付帳系統(tǒng)發(fā)現(xiàn),輸入數(shù)據(jù)結構“支付文件”中的“CNO組”、“支付記錄”分別與輸出數(shù)據(jù)結構中的“CNO組”、“支付記錄”對應,輸入數(shù)據(jù)結構“顧客主文件”中的“顧客記錄”與輸出數(shù)據(jù)結構中的“CNO組”對應。參照上述第2步驟得到該系統(tǒng)的結構圖(圖10?2?8)。9.2.5產(chǎn)生過程表示3.列出所有操作和條件(包括分支和101圖10?2?8導出Jackson結構圖(程序結構)信用卡付帳系統(tǒng)情況匯總處理顧客數(shù)據(jù)總付款額總余額處理CNO組*處理CNO處理支付記錄*計算顧客支付總額平帳數(shù)據(jù)原余額現(xiàn)余額圖10?2?8導出Jack
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度解除雙方影視制作合作合同
- 2025年度科幻電影總導演專業(yè)聘用合同
- 二零二五年度電子商務平臺軟件使用及推廣許可協(xié)議
- 2025年度生態(tài)果園產(chǎn)權及種植技術引進合同
- 2025年度紡織品普通采購合同書
- 二零二五年度醫(yī)療健康行業(yè)業(yè)務員委托合同
- 二零二五年度手農機售后服務與技術支持合同
- 2025年度環(huán)保項目投資欠款付款協(xié)商協(xié)議書
- 二零二五年度民間借貸合同-跨境電商供應鏈融資
- 二零二五年度員工股權激勵與股權鎖定期協(xié)議
- GA/T 761-2024停車庫(場)安全管理系統(tǒng)技術要求
- 《設施節(jié)水灌溉技術》課件
- 2023年涼山州西昌市人民醫(yī)院招聘衛(wèi)生專業(yè)技術人員考試真題
- 《中國傳統(tǒng)文化儒家》課件
- 小學三年級每日英語單選題100道及答案解析
- 咨詢公司顧問崗位聘用協(xié)議
- 2024年糖尿病指南解讀
- 環(huán)衛(wèi)應急預案8篇
- 《與顧客溝通的技巧》課件
- 2024年大學生創(chuàng)業(yè)投資意向書
- 【蘇寧易購建設財務共享服務中心的現(xiàn)存問題及優(yōu)化建議探析(論文)13000字】
評論
0/150
提交評論