面向數(shù)據(jù)設(shè)計(jì)的概念Jackson系統(tǒng)開發(fā)方法教學(xué)目的_第1頁
面向數(shù)據(jù)設(shè)計(jì)的概念Jackson系統(tǒng)開發(fā)方法教學(xué)目的_第2頁
面向數(shù)據(jù)設(shè)計(jì)的概念Jackson系統(tǒng)開發(fā)方法教學(xué)目的_第3頁
面向數(shù)據(jù)設(shè)計(jì)的概念Jackson系統(tǒng)開發(fā)方法教學(xué)目的_第4頁
面向數(shù)據(jù)設(shè)計(jì)的概念Jackson系統(tǒng)開發(fā)方法教學(xué)目的_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、11.1 面向數(shù)據(jù)設(shè)計(jì)的概念11.2 Jackson系統(tǒng)開發(fā)方法教學(xué)目的:了解概念,掌握J(rèn)ackson系統(tǒng)開發(fā)方教學(xué)重點(diǎn):JSP技術(shù)。教學(xué)難點(diǎn):JSP技術(shù)。教 具:多媒體教室、電子教案作 業(yè):第11章 面向數(shù)據(jù)的設(shè)計(jì)方法 第11章 面向數(shù)據(jù)的設(shè)計(jì)方法面向數(shù)據(jù)的設(shè)計(jì)(data structured-oriented design)方法就是根據(jù)問題的數(shù)據(jù)結(jié)構(gòu)定義一組映射,把問題的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為問題解的程序結(jié)構(gòu)。 面向數(shù)據(jù)流的設(shè)計(jì)來源于程序的模塊化和功能分解的概念; 而面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì),則側(cè)重于問題的數(shù)據(jù)結(jié)構(gòu),把程序結(jié)構(gòu)設(shè)計(jì)成與問題的數(shù)據(jù)結(jié)構(gòu)一致,不強(qiáng)調(diào)模塊定義。模塊只是設(shè)計(jì)過程的副產(chǎn)品,對(duì)于模塊

2、獨(dú)立性原則也未過分強(qiáng)調(diào)。這種程序結(jié)構(gòu)容易理解,也易于修改。11.1 面向數(shù)據(jù)設(shè)計(jì)的概念在許多應(yīng)用領(lǐng)域中,信息有著清晰的層次結(jié)構(gòu),輸入數(shù)據(jù)、存儲(chǔ)信息(即數(shù)據(jù)庫)及輸出數(shù)據(jù)都有各自的組織形式。一般說來,順序出現(xiàn)的數(shù)據(jù)可以用順序控制結(jié)構(gòu)的程序處理;選擇出現(xiàn)的數(shù)據(jù)用分支控制結(jié)構(gòu)的程序處理;重復(fù)出現(xiàn)的數(shù)據(jù)用循環(huán)控制結(jié)構(gòu)的程序處理。因此可以根據(jù)數(shù)據(jù)的組織形式確定使用和處理這些數(shù)據(jù)的程序的組織形式。11.1 面向數(shù)據(jù)設(shè)計(jì)的概念面向數(shù)據(jù)的設(shè)計(jì)就是根據(jù)數(shù)據(jù)結(jié)構(gòu)的表示獲得軟件表示。本章重點(diǎn)討論:1. Jackson系統(tǒng)開發(fā)方法 Jackson System Development,簡稱JSD2. 基于結(jié)構(gòu)化數(shù)據(jù)的

3、系統(tǒng)開發(fā)方法 Data Structured System Development,簡稱DSSD11.1 面向數(shù)據(jù)設(shè)計(jì)的概念JSD方法是Jackson 于1989年對(duì)軟件設(shè)計(jì)中廣為使用的Jackson結(jié)構(gòu)程序設(shè)計(jì)(Jackson Structured Programming,簡稱JSP)方法的擴(kuò)展。DSSD方法,也稱為WarnierOrr方法,是對(duì)Warnier程序邏輯構(gòu)造(Logical Construction of Program,簡稱LCP)方法的擴(kuò)充,除了設(shè)計(jì)能力以外,還加強(qiáng)了分析能力。11.1 面向數(shù)據(jù)設(shè)計(jì)的概念 面向數(shù)據(jù)設(shè)計(jì)方法一般都包括下列任務(wù): 1確定數(shù)據(jù)結(jié)構(gòu)特征; 2用順序

4、、選擇和重復(fù)三種基本形式表示 數(shù)據(jù); 3把數(shù)據(jù)結(jié)構(gòu)表示映射為軟件的控制結(jié)構(gòu); 4用與具體方法配套的設(shè)計(jì)指南進(jìn)一步精 化控制結(jié)構(gòu); 5開發(fā)軟件的過程性描述。11.1 面向數(shù)據(jù)設(shè)計(jì)的概念JSD和DSSD方法的軟件總體結(jié)構(gòu)設(shè)計(jì)與軟件過程性設(shè)計(jì)的分界并不明顯,都能很快地過渡到過程性描述。這也是易于理解和易于維護(hù)的重要表現(xiàn)之一。 JSD和DSSD也是分析與設(shè)計(jì)一體化的 ,本章側(cè)重于討論與設(shè)計(jì)有關(guān)的技術(shù)。面向數(shù)據(jù)的設(shè)計(jì)方法,要求信息結(jié)構(gòu)用層次圖表示,在軟件需求規(guī)格說明中與信息域的描述相對(duì)應(yīng)。11.1 面向數(shù)據(jù)設(shè)計(jì)的概念面向數(shù)據(jù)的設(shè)計(jì)方法的適用場(chǎng)合 具有明顯的層次信息結(jié)構(gòu)的應(yīng)用: 企事業(yè)的信息管理系統(tǒng); 系

5、統(tǒng)軟件(如操作系統(tǒng)); 科學(xué)與工程計(jì)算; 計(jì)算機(jī)輔助教學(xué); 組合問題求解等領(lǐng)域。例如:CAD/CAE/CIM類應(yīng)用軟件。11.2 Jackson系統(tǒng)開發(fā)方法用JSD方法開發(fā)一個(gè)軟件的步驟: 1)標(biāo)識(shí)實(shí)體與動(dòng)作:用與面向?qū)ο蠓椒愃频姆治黾夹g(shù)識(shí)別出系統(tǒng)中的實(shí)體(包括人、對(duì)象、產(chǎn)生或使用信息的組織)和動(dòng)作(客觀世界中影響系統(tǒng)實(shí)體的那些事件); 2)生成實(shí)體結(jié)構(gòu)圖:針對(duì)每一實(shí)體,將影響它的所有動(dòng)作按發(fā)生的時(shí)間順序用Jackson結(jié)構(gòu)圖(Jackson diagrams)表示出來。為了描述時(shí)間約束,同一動(dòng)作必須出現(xiàn)在多張結(jié)構(gòu)圖中;用JSD方法開發(fā)一個(gè)軟件的步驟: 3)初建系統(tǒng)模型:將實(shí)體和動(dòng)作統(tǒng)一用一

6、個(gè)過程模型表示,并定義該模型中的過程與客觀世界中的過程之間的聯(lián)系。所用描述工具為系統(tǒng)規(guī)格說明圖(System Specification Diagram,簡稱SSD);4)擴(kuò)充功能性過程:在過程模型中擴(kuò)充交互型功能和信息型功能,分別產(chǎn)生內(nèi)部輸入信息和系統(tǒng)輸出信息;5)系統(tǒng)定時(shí):確定實(shí)現(xiàn)必須滿足的時(shí)間約束;6)實(shí)現(xiàn):確定系統(tǒng)中所有軟硬件成分,形成一個(gè)完整設(shè)計(jì)方案。 前三個(gè)步驟主要在需求分析階段完成,后三步是軟件設(shè)計(jì)的任務(wù)。11.2.1 JSD分析技術(shù)回顧我們?cè)源髮W(xué)校園內(nèi)直達(dá)交通車系統(tǒng)USS為例進(jìn)行需求分析,結(jié)果得出“交通車”和“按鈕”兩實(shí)體及其動(dòng)作對(duì)應(yīng)的實(shí)體結(jié)構(gòu)圖如下圖所示。ShuttleSh

7、uttle* bodyStation(i)Arrive(i)Leave(i)Arrive(1)ButtonPush*Leave(1)11.2.1 JSD分析技術(shù)回顧初建系統(tǒng)模型后,得到USS的系統(tǒng)規(guī)格說明圖(圖724)。其中后綴為“_0”的過程表示客觀世界中的過程(或外部過程),后綴為“_1”的過程表示系統(tǒng)模型內(nèi)的過程(或模型過程)。 Button1DSShuttle0Shuttle1SV數(shù)據(jù)流聯(lián)系Button0狀態(tài)向量聯(lián)系圖7-2-4 USS的系統(tǒng)規(guī)格說明圖Button1DSShuttle0Shuttle1SV數(shù)據(jù)流聯(lián)系Button0狀態(tài)向量聯(lián)系11.2.1 JSD分析技術(shù)回顧將實(shí)體結(jié)構(gòu)圖與

8、初建系統(tǒng)模型(系統(tǒng)規(guī)格說明圖)綜合起來,可導(dǎo)出目標(biāo)軟件系統(tǒng)中每個(gè)過程內(nèi)部細(xì)節(jié)的結(jié)構(gòu)正文表示,如6.2.3節(jié)過程BUTTON_1和SHUTTLE_1所描述。上述結(jié)構(gòu)正文也可對(duì)應(yīng)地用Jackson結(jié)構(gòu)圖表示。圖625是與模型過程SHUTTLE_1的結(jié)構(gòu)正文對(duì)應(yīng)的Jackson結(jié)構(gòu)圖。圖625 對(duì)應(yīng)于結(jié)構(gòu)正文的結(jié)構(gòu)圖Shuttle 1Station(i)*Arrive(1)Leave(1)Shuttle body1TRANSit body1wait body1Transit(i)*Transit(1)*Arrive(i)Leave(i)Wait(1)*TRANSit bodywait bodyWai

9、t(i)*11.2.2 擴(kuò)充功能性過程這一步驟以初建系統(tǒng)模型為基礎(chǔ),通過數(shù)據(jù)流和狀態(tài)向量兩種方式將新定義的功能性過程與原有的模型過程聯(lián)系起來。具體考慮兩類功能: 1信息型功能(information function):從模型過程產(chǎn)生的數(shù)據(jù)流和狀態(tài)向量中提取信息并生成輸出信息。嵌入型功能只需在原有模型過程的結(jié)構(gòu)正文中插入一些操作; 2交互型功能(interactive function):監(jiān)視模型過程的狀態(tài)向量,在輸出結(jié)果的同時(shí)產(chǎn)生內(nèi)部輸入信息,反過來影響模型化過程的動(dòng)作。圖1021 兩類功能性過程與系統(tǒng)模型的關(guān)系外部過程系統(tǒng)模型信息型功能過程交互型功能過程客觀世界系統(tǒng)11.2.2 擴(kuò)充功能性

10、過程假設(shè)在交通車上有一塊發(fā)光板,專門顯示車到站的信息,發(fā)光板“亮”說明車到站,“暗”說明車離開。此板或亮或暗受LON(i)、LOFF(i)兩命令的控制。在過程SHUTTLE_1中可嵌入一個(gè)新功能:當(dāng)交通車到達(dá)站(i)時(shí),發(fā)出命令LON(i);離開站(i)時(shí),發(fā)出命令LOFF(i)。交通車在兩站之間往返運(yùn)行過程中,輸出“開關(guān)發(fā)光板”的命令數(shù)據(jù)流,圖1022為增加這一功能后的SSD,結(jié)構(gòu)正文修改為:11.2.2 擴(kuò)充功能性過程圖1022 修改后的SSD LAMPCMDSLamp commandsButton0BDSVButton1Shuttle0Shuttle1LAMPCMDSSHUTTLE_1

11、seq LON(1) /* 控制發(fā)光板“亮”,說 明交通車正停在站1上 */ read 狀態(tài)向量 WAIT_BODY1 itr while Wait(1) read 狀態(tài)向量 WAIT_BODY1 end LOFF(1) /* 交通車即將離站;控 制發(fā)光板“暗” */ LEAVE(1) TRANSIT_BODY1 itr while Transit(1) read 狀態(tài)向量 TRANSIT_BODY1 endSHUTTLE_BODY1 itr STATION seq ARRIVE(i) LON(i) /* 交通車已停靠站(i) */ WAIT_BODY itr while Wait(i) re

12、ad 狀態(tài)向量 WAIT_BODY end LOFF(i) /* 交通車將離開站(i) */ LEAVE(i) TRANSIT_BODY itr while Transit(i) read 狀態(tài)向量 TRANSIT_BODY end STATION end SHUTTL_BODY1 end ARRIVE(1)SHUTTL_1 end11.2.2 擴(kuò)充功能性過程第二個(gè)功能是產(chǎn)生關(guān)于啟動(dòng)(START)和關(guān)閉(STOP)發(fā)動(dòng)機(jī)的命令,以此控制交通車的運(yùn)行。下達(dá)STOP命令的條件是,傳感器顯示車已到站,而下達(dá)START 命令的條件是乘客壓下按鈕招呼交通車并恰好交通車在某個(gè)站上等待。為此引入一個(gè)功能性過

13、程mcontrol,它從SHUTTLE_1和BUTTON_2兩過程接收數(shù)據(jù),適時(shí)地發(fā)出START和STOP兩種命令。過程SHUTTLE_1與過程mcontrol之間用數(shù)據(jù)流“S1D”連接。因此SHUTTLE_1的結(jié)構(gòu)正文進(jìn)一步修改為:SHUTTLE_1 seq LON(1) read 狀態(tài)向量 WAIT_BODY1 itr while Wait(1) read 狀態(tài)向量 WAIT_BODY1 end LOFF(1) LEAVE(1) TRANSIT_BODY1 itr while Transit(1) read 狀態(tài)向量 TRANSIT_BODY1 end SHUTTLE_BODY1 itr

14、STATION seq ARRIVE(i) write arrive to S1D /* 向mcontrol發(fā)送數(shù)據(jù)流, 說明車已到站(i)*/ LON(i) WAIT_BODY itr while Wait(i) read 狀態(tài)向量 WAIT_BODY end LOFF(i) LEAVE(i) TRANSIT_BODY itr while Transit(i) read 狀態(tài)向量 TRANSIT_BODY end STATION end SHUTTLE_BODY1 end ARRIVE(1) write arrive to S1D /* 發(fā)送數(shù)據(jù)流,說明車已到站1 */ SHUTTLE_1

15、end11.2.2 擴(kuò)充功能性過程過程SHUTTLE_1執(zhí)行“read狀態(tài)向量”操作和過程mcontrol對(duì)“S1D”的訪問都必須有足夠快的頻率,否則交通車將不能及時(shí)停下來。 為完成USS實(shí)例,還需進(jìn)一步考慮實(shí)體BUTTON模型。過程BUTTON_1是對(duì)按鈕動(dòng)作的精確描述(即每次壓下都對(duì)應(yīng)過程push的一次調(diào)用),實(shí)際上系統(tǒng)應(yīng)把第一次壓下按鈕招呼交通車的動(dòng)作與一次運(yùn)行未開始之前乘客壓下按鈕招呼交通車的請(qǐng)求區(qū)分開來。用已有實(shí)體無法描述和區(qū)分動(dòng)作之間的時(shí)間約束,常常引入額外的實(shí)體為此設(shè)計(jì)過程BUTTON_2,結(jié)構(gòu)圖如圖1023所示圖1023 button2的結(jié)構(gòu)圖Button2Push group

16、*ExtraArrival bodyExtrapush bodyRequestpushArrival Extra Arrival*Extra push*11.2.2 擴(kuò)充功能性過程功能性過程mcontrol既負(fù)責(zé)檢查BUTTON_2的狀態(tài)向量“B2V”,確定是否有未滿足的請(qǐng)求,又負(fù)責(zé)把從SHUTTLE_1處(S1D)獲取的信息(即交通車已到達(dá)發(fā)出請(qǐng)求的車站)傳遞給BUTTON_2(MBD流)。在此定義了一個(gè)交互型功能。 BUTTON_2的結(jié)構(gòu)正文描述如下:BUTTON_2 seq request:=no /* 置初值 */ read MBD and B1D /* 檢查是否有未滿足請(qǐng)求和交 通車

17、是否停在站上 */ BUTTON_BODY itr PUSH_GROUP seq EXTRA_AR_BODY itr while (ARRIVAL) /* 交通車已靠站但尚無請(qǐng)求, 或既無請(qǐng)求交通車也未靠站 */ read MBD and B1D EXTRA_AR_BODY end RQ_PUSH seq /* 首次請(qǐng)求到達(dá),置請(qǐng)求標(biāo)志 */ request:=yes read MBD and B1D RQ_PUSH endEXTRA_RQ_PUSH itr while (REQUEST) /* 因交通車尚未靠站,請(qǐng)求 暫不滿足,循環(huán)等待 */ read MBD and B1D EXTRA_R

18、Q_PUSH end ARRIVAL seq/* 請(qǐng)求滿足,清請(qǐng)求標(biāo)志 */ request:=no read MBD and B1D ARRIVAL end PUSH GROUP end BUTTON_BODY end BUTTON_2 end11.2.2 擴(kuò)充功能性過程圖1024給出的系統(tǒng)規(guī)格說明圖反映了在此步驟完成的所有工作。我們?cè)赟HUTTLE_1中嵌入了一個(gè)功能,產(chǎn)生開、關(guān)發(fā)光板的命令,增加了一個(gè)功能性過程mcontrol,它除了負(fù)責(zé)完成BUTTON_2上的交互型功能外,還產(chǎn)生啟動(dòng)、關(guān)閉發(fā)動(dòng)機(jī)的命令。至于mcontrol過程的內(nèi)部結(jié)構(gòu)可采用傳統(tǒng)的JSP技術(shù)導(dǎo)出,關(guān)于JSP技術(shù)我們將在

19、10.2.4和10.2.5節(jié)討論。圖1024擴(kuò)充功能1和2后的系統(tǒng)規(guī)格說明圖Button0BDSVButton1Shuttle0Shuttle1LAMPCMDSB1DButton2S1DMBDMcontrolB2VMOTORCMDS11.2.3 施加時(shí)間約束經(jīng)過前幾個(gè)步驟,獲得一個(gè)由若干順序過程組成的系統(tǒng),它們通過數(shù)據(jù)流或狀態(tài)向量進(jìn)行通信,但對(duì)這些處理過程的執(zhí)行速度尚未考慮。所以,對(duì)于輸出流,定義輸出速度和更新頻率;對(duì)于輸入流,要求子系統(tǒng)保證及時(shí)收集所有輸入信息并保持它們的到達(dá)順序不變。 在USS實(shí)例中,關(guān)于時(shí)間方面的約束包括: 1停車命令允許的最大延遲時(shí)間; 2開、關(guān)發(fā)光板命令的響應(yīng)時(shí)間。目

20、前在JSD方法中,時(shí)間約束的描述仍采用非形式化的方式。一種解決辦法是引入時(shí)間標(biāo)志流(time marker stream)作為模型過程的輸入,時(shí)間標(biāo)志流由特定的時(shí)鐘過程產(chǎn)生。11.2.4 實(shí)現(xiàn)與JSP技術(shù)實(shí)現(xiàn)是JSD方法的最后一個(gè)步驟,它將系統(tǒng)功能說明配置到給定的軟硬件環(huán)境上,并滿足性能方面的約束。這一步驟主要考慮:過程在多處理機(jī)上的調(diào)度(scheduling)、根據(jù)SSD和Jackson結(jié)構(gòu)圖進(jìn)行過程變換(transformation)、過程狀態(tài)向量的存儲(chǔ)和訪問(storage and access of state vectors)以及借助JSP技術(shù)描述功能性過程。因篇幅所限,本節(jié)及下節(jié)僅

21、討論最后一個(gè)問題。11.2.4 實(shí)現(xiàn)與JSP技術(shù)JSP技術(shù)是一種詳細(xì)設(shè)計(jì)技術(shù),它由問題所固有的數(shù)據(jù)結(jié)構(gòu)導(dǎo)出過程的內(nèi)部結(jié)構(gòu)。所用的基本工具稱為數(shù)據(jù)結(jié)構(gòu)圖,是Jackson結(jié)構(gòu)圖的變種,專門用于描述數(shù)據(jù)元素之間的邏輯關(guān)系。例如在圖1025中,數(shù)據(jù)集合A由若干個(gè)B結(jié)構(gòu)(“*”表示重復(fù))組成,而每個(gè)B由若干個(gè)C結(jié)構(gòu)后跟一個(gè)D結(jié)構(gòu)組成(同級(jí)分叉表示順序),D結(jié)構(gòu)或?yàn)閿?shù)據(jù)項(xiàng)E或?yàn)镕(“”表示選擇),這種層次信息結(jié)構(gòu)的表示方法同樣適用于輸入、輸出和數(shù)據(jù)庫中的數(shù)據(jù)。圖1025 數(shù)據(jù)結(jié)構(gòu)圖AB*C*DEF圖1026 信用卡記帳系統(tǒng)Outstanding balCNO主文件YYYY 1749.30CNODATEA

22、MTXXXX 10.17 25.30XXXX 10.27 108.20XXXX 10.30 65.40YYYY 10.13 158.00YYYY 10.28 307.90 支付文件支付記錄*CNO分組*CNOCNO主文件顧客記錄*余款額支付文件XXXX 2373.50 簡化的信用卡付帳系統(tǒng)如圖1026所示。系統(tǒng)的輸入是支付文件和顧客主文件。支付文件的每個(gè)記錄由顧客號(hào)(CNO)、支付日期(DATE)和支付金額(AMT)三個(gè)數(shù)據(jù)項(xiàng)組成,并假定已按顧客號(hào)預(yù)先分組。顧客主文件由顧客號(hào)(CNO)和余款額(Outstanding bal)兩項(xiàng)組成。兩個(gè)文件分別對(duì)應(yīng)圖10-2-6中所示數(shù)據(jù)結(jié)構(gòu)圖。假設(shè)該系統(tǒng)

23、輸出報(bào)表如下圖所示 Accounting Report CNO Date Amt Old bal New bal XXXX YYYY Grand tot圖1027 系統(tǒng)輸出報(bào)表所對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)圖記帳報(bào)表情況匯總顧客數(shù)據(jù)總付款額總余額CNO組*CNO支付記錄*付款總數(shù)平帳數(shù)據(jù)原余額現(xiàn)余額11.2.5 產(chǎn)生過程表示JSP方法通過綜合、對(duì)照過程的輸入/輸出數(shù)據(jù)結(jié)構(gòu)的層次關(guān)系導(dǎo)出對(duì)應(yīng)的過程性表示程序。具體步驟如下:1找出輸入與輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)元素,即有直接因果關(guān)系者,它們?cè)诔绦蛑锌梢徊⑻幚怼?依據(jù)下述三條規(guī)則從數(shù)據(jù)結(jié)構(gòu)圖導(dǎo)出Jackson結(jié)構(gòu)圖。 1)在Jackson結(jié)構(gòu)圖中,為有對(duì)應(yīng)關(guān)

24、系的每對(duì)數(shù)據(jù)元素 畫一個(gè)處理框,該框所處層次取這兩個(gè)數(shù)據(jù)元素在 各自數(shù)據(jù)結(jié)構(gòu)圖中層次較低者。 2)參照輸入數(shù)據(jù)結(jié)構(gòu)圖中剩余的每個(gè)數(shù)據(jù)元素所處層 次,在Jackson結(jié)構(gòu)圖的相應(yīng)層次上畫一個(gè)處理框。 3)參照輸出數(shù)據(jù)結(jié)構(gòu)圖中剩余的每個(gè)數(shù)據(jù)元素所處層 次,在Jackson結(jié)構(gòu)圖的相應(yīng)層次上畫一個(gè)處理框。11.2.5 產(chǎn)生過程表示3列出所有操作和條件(包括分支和循環(huán)條件),并把它們分配到Jackson結(jié)構(gòu)圖中。4根據(jù)Jackson結(jié)構(gòu)圖,產(chǎn)生結(jié)構(gòu)正文描述。 將上述第1步驟用于信用卡付帳系統(tǒng)發(fā)現(xiàn),輸入數(shù)據(jù)結(jié)構(gòu)“支付文件”中的“CNO組”、“支付記錄”分別與輸出數(shù)據(jù)結(jié)構(gòu)中的“CNO組”、“支付記錄”對(duì)應(yīng)

25、,輸入數(shù)據(jù)結(jié)構(gòu)“顧客主文件”中的“顧客記錄”與輸出數(shù)據(jù)結(jié)構(gòu)中的“CNO組”對(duì)應(yīng)。參照上述第2步驟得到該系統(tǒng)的結(jié)構(gòu)圖(圖1028)。圖1028 導(dǎo)出Jackson結(jié)構(gòu)圖(程序結(jié)構(gòu))信用卡付帳系統(tǒng)情況匯總處理顧客數(shù)據(jù)總付款額總余額處理CNO組*處理CNO處理支付記錄*計(jì)算顧客支付總額平帳數(shù)據(jù)原余額現(xiàn)余額執(zhí)行完3、4兩步驟后,該結(jié)構(gòu)圖中“處理顧客數(shù)據(jù)”一框?qū)?yīng)的結(jié)構(gòu)正文應(yīng)為:PROCESS_CUST_DATA seq open PAY_FILE; open CNO_MASTER_FILE; PROCESS CNO_GROUP itr until eof:PAY_FILE; read PAY_FILE

26、; PROCESS_CNO; /* 讀顧客總文件,找出原余額 */PROCESS_PAY_REC itr until end:CNO_GROUP; write report line; computer total payments; read PAY_FILE; end PROCESS_PAY_REC COMPUTE_CUST_TOTAL; COMPUTE_BALANCE seq PROCESS_OLD_BAL; COMPUTE_NEW_BAL; write report line; end COMPUTE_BALANCE end PROCESS_CNO_GROUPend PROCESS_C

27、UST_DATA教學(xué)目的:掌握DSSD方法,了解復(fù)雜過程邏輯的描述。教學(xué)重點(diǎn): DSSD方法。教學(xué)難點(diǎn): DSSD方法。教 具:多媒體教室、電子教案作 業(yè):習(xí)題411.3 DSSD方法11.3 基于結(jié)構(gòu)化數(shù)據(jù)的系統(tǒng)開發(fā)(DSSD)方法DSSD需求分析階段產(chǎn)生的需求規(guī)格說明,將作為設(shè)計(jì)過程的輸入信息。設(shè)計(jì)過程的輸出為設(shè)計(jì)規(guī)格說明,具體包括輸出數(shù)據(jù)結(jié)構(gòu)、過程描述和設(shè)計(jì)約束三方面內(nèi)容。DSSD設(shè)計(jì)分為邏輯設(shè)計(jì)和物理設(shè)計(jì)兩個(gè)步驟,邏輯設(shè)計(jì)著重考慮軟件的輸出、界面及過程性表示,物理設(shè)計(jì)則在邏輯設(shè)計(jì)的基礎(chǔ)上考慮如何滿足性能、可維護(hù)性和其他一些設(shè)計(jì)約束。基本工具:WarnierOrr圖,既可描述程序結(jié)構(gòu),又

28、可描述數(shù)據(jù)結(jié)構(gòu)。這里介紹一種簡化的DSSD方法。11.3.1 DSSD設(shè)計(jì)步驟DSSD的邏輯設(shè)計(jì)步驟主要有兩個(gè): 1推導(dǎo)輸出數(shù)據(jù)的邏輯結(jié)構(gòu)(Logical Output Structure,簡稱LOS); 2由LOS導(dǎo)出處理過程的邏輯結(jié)構(gòu) (Logical Process Structure,簡稱LPS)。11.3.1 DSSD設(shè)計(jì)步驟按下述簡化方法,LOS可分四步導(dǎo)出: 1)從問題描述本身或其他相關(guān)需求信息 中找出所有不同的原子數(shù)據(jù)項(xiàng)(即不 可再分的數(shù)據(jù)項(xiàng)); 2)說明每個(gè)原子數(shù)據(jù)項(xiàng)的出現(xiàn)頻率; 3)找出那些可再分的一般數(shù)據(jù)項(xiàng); 4)用Warnier-Orr圖表示LOS?!纠?1.1】產(chǎn)生如

29、圖11-3-1所示的“機(jī)器使用情況日?qǐng)?bào)表”系統(tǒng) Daily_Machine_Tool_Usage_Report Date:DATE Tool category Tool ID status NO.parts produced Tool_CAT TID S NO_PARTS CATEGORY TOTAL PARTS: CAT_TOT_PARTS CATEGORY TOTAL PARTS: TOTAL PARTS PRODUCED THIS DATE: MANUF_TOTAL11.3.2 推導(dǎo)輸出數(shù)據(jù)的邏輯結(jié)構(gòu)輸出數(shù)據(jù)結(jié)構(gòu)表現(xiàn)為數(shù)據(jù)項(xiàng)的一種層次結(jié)構(gòu)。按照LOS推導(dǎo)步驟:1)首先從問題描述(例11.

30、1所給報(bào)表原型)中找出原子數(shù)據(jù)項(xiàng);2)確定每個(gè)原子數(shù)據(jù)項(xiàng)出現(xiàn)的頻率(圖1132)。圖1132 原子數(shù)據(jù)項(xiàng)及出現(xiàn)頻率原子數(shù)據(jù)項(xiàng)頻率細(xì)節(jié)HEADING(標(biāo)題)DATE(日期)COLUME_HEAD(列標(biāo)題)TOOL_CAT(工具類名稱)TID(工具標(biāo)志)S(狀態(tài))NO_PARTS(產(chǎn)品件數(shù))SUB_TOTAL_HEAD(按類匯總小標(biāo)題)CAT_TOT_PARTS(按類匯總)TOTAL_HEAD(按目匯總標(biāo)題)MANUF_TOTAL(每日產(chǎn)品總計(jì))1/報(bào)表 1/報(bào)表 1/報(bào)表 1/工具類 1/工具1/工具1/工具1/工具類 1/工具類 1/報(bào)表 1/報(bào)表每日機(jī)器使用情況報(bào)表 若干類,每類有若干項(xiàng) 按

31、類匯總 按日匯總11.3.2 推導(dǎo)輸出數(shù)據(jù)的邏輯結(jié)構(gòu)3)找出一般數(shù)據(jù)項(xiàng),有: 報(bào)表(出現(xiàn)一次)、 工具類(每報(bào)表出現(xiàn)t次)、 工具(每類出現(xiàn)s次)。4)用Warnier-Orr圖表示LOS11.3.2 推導(dǎo)輸出數(shù)據(jù)的邏輯結(jié)構(gòu)圖1133 LOS的WarnierOrr圖示標(biāo)題日期標(biāo)題日期 工具類名稱 工具標(biāo)識(shí)列標(biāo)題 工具 狀態(tài)工具類 (1,s) 產(chǎn)品件數(shù) (1,t) 按類匯總小標(biāo)題每日匯總標(biāo)題 按類匯總每日產(chǎn)品總計(jì)生產(chǎn)日?qǐng)?bào)表11.3.3 推導(dǎo)處理過程的邏輯結(jié)構(gòu) (LPS)LPS是軟件的過程性表示,推導(dǎo)步驟如下:1)從LOS的WarnierOrr圖示中去掉所有原子數(shù)據(jù)項(xiàng);生產(chǎn)日?qǐng)?bào)表圖1134 去掉所

32、有原子數(shù)據(jù)項(xiàng) 工具 工具類 (1,s) (1,t) 2)對(duì)每個(gè)一般數(shù)據(jù)項(xiàng)加上“.BEGIN、.END”分隔符;.BEGIN .BEGIN 工具 工具類 (1,s) (1,t) .END.END生產(chǎn)日?qǐng)?bào)表3)定義所有初始、終止的指令或過程;4)說明所有數(shù)值計(jì)算和非數(shù)值處理;.BEGIN 置MANUF_TOTAL為0 .BEGIN 置CAT_TOTALPARTS為0 工具類 工具 (1,t) (1,s) 把NO_PARTS加到 CAT_TOTAL_PARTS上 .END.END生產(chǎn)日?qǐng)?bào)表把CAT_TOTAL_PARTS加到MANUF_TOTAL上5)說明所有輸出指令或過程; 6)說明所有輸入指令或過程。圖1136 完整的LPS生產(chǎn)日?qǐng)?bào)表.BEGIN工具類(1,t).END輸出標(biāo)題、日期標(biāo)題、日期、列標(biāo)題置MANUF_TOTAL為0取一條邏輯記錄.BEGIN工具(1,s).END輸出TOOL_CAT置CAT_TOTAL_PARTS為0輸出TID,S,NO_PARTS把NO_P

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論