《軟件工程》課件第09章_第1頁
《軟件工程》課件第09章_第2頁
《軟件工程》課件第09章_第3頁
《軟件工程》課件第09章_第4頁
《軟件工程》課件第09章_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

ZLLBeiHua9.1面向數(shù)據(jù)設(shè)計(jì)的概念9.2Jackson系統(tǒng)開發(fā)方法9.3基于結(jié)構(gòu)化數(shù)據(jù)的系統(tǒng)開發(fā)(DSSD)方法第9章面向數(shù)據(jù)的分析方法ZLLBeiHua9.1面向數(shù)據(jù)設(shè)計(jì)的概念JSD方法是Jackson于1989年對(duì)軟件設(shè)計(jì)中廣為使用的Jackson結(jié)構(gòu)程序設(shè)計(jì)(JacksonStructuredProgramming,JSP)方法的擴(kuò)展,并且在某些方面與面向?qū)ο蠓椒ㄓ行╊愃啤SSD方法也稱為Warnier?Orr方法,是對(duì)Warnier程序邏輯構(gòu)造(LogicalConstructionofProgram,LCP)方法的擴(kuò)充,除了設(shè)計(jì)能力以外,還加強(qiáng)了分析能力。盡管不同的面向數(shù)據(jù)設(shè)計(jì)方法有不同的規(guī)則,但一般都包括下列任務(wù):(1)確定數(shù)據(jù)結(jié)構(gòu)特征。(2)用順序、選擇和重復(fù)三種基本形式表示數(shù)據(jù)。(3)把數(shù)據(jù)結(jié)構(gòu)表示映射為軟件的控制結(jié)構(gòu)。(4)用與具體方法配套的設(shè)計(jì)指南進(jìn)一步精化控制結(jié)構(gòu)。(5)開發(fā)軟件的過程性描述。ZLLBeiHua9.1Jackson系統(tǒng)開發(fā)方法SP技術(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)系。JSP方法通過綜合、對(duì)照過程的輸入/輸出數(shù)據(jù)結(jié)構(gòu)的層次關(guān)系導(dǎo)出對(duì)應(yīng)的過程性表示,即程序。具體步驟如下:

ZLLBeiHua(1)分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描繪這些數(shù)據(jù)結(jié)構(gòu)。(2)找出輸入數(shù)據(jù)結(jié)構(gòu)與輸出數(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)圖。①在Jackson結(jié)構(gòu)圖中,為有對(duì)應(yīng)關(guān)系的每對(duì)數(shù)據(jù)元素畫一個(gè)處理框,該框所處層次取這兩個(gè)數(shù)據(jù)元素在各自數(shù)據(jù)結(jié)構(gòu)圖中層次較低者。②參照輸入數(shù)據(jù)結(jié)構(gòu)圖中剩余的每個(gè)數(shù)據(jù)元素所處層次,在Jackson結(jié)構(gòu)圖的相應(yīng)層次上畫一個(gè)處理框。③參照輸出數(shù)據(jù)結(jié)構(gòu)圖中剩余的每個(gè)數(shù)據(jù)元素所處層次,在Jackson結(jié)構(gòu)圖的相應(yīng)層次上畫一個(gè)處理框。(4)列出所有操作和條件(包括分支和循環(huán)條件),并把它們分配到Jackson結(jié)構(gòu)圖中。(5)根據(jù)Jackson結(jié)構(gòu)圖,產(chǎn)生結(jié)構(gòu)正文描述。ZLLBeiHua9.2.2Jackson偽代碼邏輯結(jié)構(gòu)Jackson方法中使用的偽碼和Jackson圖是完全對(duì)應(yīng)的。圖9-1、圖9-2和9-3分別是圖6-7、圖6-8和圖6-9所示的順序結(jié)構(gòu)、選擇結(jié)構(gòu)和重復(fù)結(jié)構(gòu)及其對(duì)應(yīng)的偽碼。其中seq、select、iter、until、while和end是關(guān)鍵字,cond1、cond2和cond是條件。順序結(jié)構(gòu)*重復(fù)結(jié)構(gòu)°°選擇結(jié)構(gòu)AAABBBCCAseqBCAendAselectcond1BAorcond2CAendAiteruntil(或while)condBAendZLLBeiHua9.2.3確定輸入/輸出數(shù)據(jù)的邏輯結(jié)構(gòu)類似于面向?qū)ο蠓治鲋袑?duì)象的識(shí)別,Jackson方法針對(duì)初步需求分析形成的用戶需求描述進(jìn)行語法分析。名詞及名詞短語是潛在的實(shí)體。分析人員根據(jù)應(yīng)用問題的邊界及自己的理解,決定對(duì)潛在實(shí)體的取舍。通過分析形成邏輯結(jié)構(gòu)?!纠?.1】一個(gè)正文文件由若干個(gè)記錄所組成,每個(gè)記錄是一個(gè)字符串。要求統(tǒng)計(jì)每個(gè)記錄中空格字符的個(gè)數(shù),以及文件中空格字符的總數(shù)。要求的輸出數(shù)據(jù)格式是,每復(fù)制一行輸入字符串之后,另起一行印出這個(gè)字符串中的空格數(shù),最后印出文件中空格的總個(gè)數(shù)。ZLLBeiHua正文文件字符串*

字符*

空格°

非空格°°圖9-4表示輸入/輸出數(shù)據(jù)結(jié)構(gòu)的Jackson圖(左右側(cè)分別為輸入、輸出數(shù)據(jù)結(jié)構(gòu))空格總數(shù)輸出表格表格體串信息*字符串空格數(shù)ZLLBeiHua6.2.4找出輸入/輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元

確定了輸入/輸出數(shù)據(jù)結(jié)構(gòu)之后.下一步是分析確定在輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元。在這個(gè)例子中,輸出數(shù)據(jù)總是通過對(duì)輸入數(shù)據(jù)的處理而得到的,因此在輸入/輸出數(shù)據(jù)結(jié)構(gòu)最高層次的兩個(gè)單元(在這個(gè)例子中是“正文文件”和“輸出表格”)總是有對(duì)應(yīng)關(guān)系的。這一對(duì)單元將和程序結(jié)構(gòu)圖中最頂層的方框(代表程序)相對(duì)應(yīng),也就是說經(jīng)過程序的處理由正文文件得到輸出表格。因?yàn)槊刻幚磔斎霐?shù)據(jù)中一個(gè)“字符串”之后,就可以得到輸出數(shù)據(jù)中一個(gè)“串信息”,它們都是重復(fù)出現(xiàn)的數(shù)據(jù)單元,而且出現(xiàn)次序和重復(fù)次數(shù)都完全相同。因此,“字符串”和“串信息”也是一對(duì)有對(duì)應(yīng)關(guān)系的單元。下面我們依次考察輸入數(shù)據(jù)結(jié)構(gòu)中余下的每個(gè)數(shù)據(jù)單元看是否還有其他有對(duì)應(yīng)關(guān)系的單元?!白址辈豢赡芎投鄠€(gè)字符組成的“字符串”對(duì)應(yīng),也不能和輸出數(shù)據(jù)結(jié)構(gòu)中的其他數(shù)據(jù)單元對(duì)應(yīng)。單個(gè)空格并不能決定—個(gè)記錄中包含的空格個(gè)數(shù),因此也沒有對(duì)應(yīng)關(guān)系。通過類似的考察發(fā)現(xiàn),輸入數(shù)據(jù)結(jié)構(gòu)中余下的任何一個(gè)單元在輸出數(shù)據(jù)結(jié)構(gòu)中都找不到對(duì)應(yīng)的單元。也就是說,在這個(gè)例子中輸入/輸出數(shù)據(jù)結(jié)構(gòu)中只有上述兩對(duì)有對(duì)應(yīng)關(guān)系的單元。在圖9-5中用一對(duì)虛線箭頭把有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元連接起來,以突出表明這種對(duì)應(yīng)關(guān)系。ZLLBeiHua正文文件字符串*

字符*

空格°

非空格°°圖9-5表示輸入/輸出數(shù)據(jù)結(jié)構(gòu)的Jackson圖中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元空格總數(shù)輸出表格表格體串信息*字符串空格數(shù)ZLLBeiHua9.2.5產(chǎn)生過程表示Jackson程序設(shè)計(jì)方法的第三步是從數(shù)據(jù)結(jié)構(gòu)圖導(dǎo)出程序結(jié)構(gòu)圖。按照前面已經(jīng)講述過的規(guī)則,這個(gè)步驟的大致過程如下。首先,在描繪程序結(jié)構(gòu)的Jackson圖的最頂層畫一個(gè)處理框“統(tǒng)計(jì)空格”,它與“正文文件”和“輸出表格”這對(duì)最頂層的數(shù)據(jù)單元相對(duì)應(yīng)。但是接下來還不能立即畫與另一對(duì)數(shù)據(jù)單元(“字符串”和“串信息”)相對(duì)應(yīng)的處理框,因?yàn)樵谳敵鰯?shù)據(jù)結(jié)構(gòu)中“串信息”的上層還有“表格體”和“空格總數(shù)”兩個(gè)數(shù)據(jù)單元。在程序結(jié)構(gòu)圖的第二層應(yīng)該有與這兩個(gè)單元對(duì)應(yīng)的處理框——“程序體”和“印總數(shù)”。因此,在程序結(jié)構(gòu)圖的第三層才是與“字符串”和“串信息”相對(duì)應(yīng)的處理框——“處理字符串”。在程序結(jié)構(gòu)圖的第四層似乎應(yīng)該是和“字符串”、“字符”及“空格數(shù)”等數(shù)據(jù)單元對(duì)應(yīng)的處理框“印字符串”、“分析字符”及“印空格數(shù)”,這三個(gè)處理是順序執(zhí)行的。但是,“字符”是重復(fù)出現(xiàn)的數(shù)據(jù)單元,因此“分析字符”也應(yīng)該是重復(fù)執(zhí)行的處理。改進(jìn)的了Jackson圖規(guī)定順序執(zhí)行的處理中不允許混有重復(fù)執(zhí)行或選擇執(zhí)行的處理,所以在“分析字符”這個(gè)處理框上面又增加了一個(gè)處理框“分析字符串”。最后得到的程序結(jié)構(gòu)圖為圖9-6所示。ZLLBeiHuaSII統(tǒng)計(jì)空格程序體印總數(shù)處理字符串*印字符串分析字符串印空格數(shù)分析字符*

處理空格°

處理非空格°ZLLBeiHua9.2.6列出所有操作和條件,并分配到Jackson結(jié)構(gòu)圖中列出統(tǒng)計(jì)空格個(gè)數(shù)需要的全部操作和條件如下:(1)停止(2)打開文件(3)關(guān)閉文件(4)印出字符串(5)印出空格數(shù)目(6)印出空格總數(shù)(7)sum:=sum+1(8)totalsum:=totalsum+sum(9)讀入字符串(10)sum:=0(11)totalsum:=0(12)pointer:=1(13)pointer:=pointer+1I(1)文件結(jié)束I(2)字符串結(jié)束S(3)字符是空格在上面的操作表中,sum是保存空格個(gè)數(shù)的變量,totalsum是保存空格總數(shù)的變量,而pointer是用來指示當(dāng)前分析的字符在字符串中的位置的變量。ZLLBeiHua經(jīng)過簡(jiǎn)單分析不難把這些操作和條件分配到程序結(jié)構(gòu)圖的適當(dāng)位置,結(jié)果為圖9-7所示。S(3)I(2)I(1)統(tǒng)計(jì)空格程序體印總數(shù)處理字符串*印字符串分析字符串印空格數(shù)分析字符*

處理空格°

處理非空格°13101312291175986134ZLLBeiHua9.2.7根據(jù)Jackson結(jié)構(gòu)圖,產(chǎn)生結(jié)構(gòu)正文描述

Jackson方法的最后一步是用偽碼標(biāo)識(shí)程序處理過程。因?yàn)镴ackson使用的偽碼和Jackson圖之間存在著簡(jiǎn)單的對(duì)應(yīng)關(guān)系,所以從圖9-7很容易得出下面的偽碼:統(tǒng)計(jì)空格seq

打開文件讀入字符串

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

印字符串seq

印出字符串印字符串endsum:=0pointer:=1

分析字符串iteruntil字符串結(jié)束分析字符select字符是空格處理空格seqsum:=sum+1pointer:=pointer+1

處理空格end分析字符or字符不是空格處理非空格seqpointer:=pointer+1

處理非空格end

分析字符end

分析字符串end

印空格數(shù)seq

印出空格數(shù)目印空格數(shù)endtotalsum:=totalsum+sum

讀入字符串處理字符串end

程序體end

印總數(shù)seq

印出空格總數(shù)印總數(shù)end

關(guān)閉文件停止統(tǒng)計(jì)空格endZLLBeiHua提出了一種LCP(邏輯構(gòu)造程序)。利用順序、選擇、重復(fù)三種結(jié)構(gòu)表示信息的層次分解,并指出可以從信息層次結(jié)構(gòu)推導(dǎo)出程序結(jié)構(gòu)。對(duì)Warnier的工作進(jìn)行了擴(kuò)充,使其不僅包含了Warnier的信息層次結(jié)構(gòu),還引進(jìn)了數(shù)據(jù)流和處理功能,從而發(fā)展成為一種需求分析方法。1981KenOrr1974Warnier9.3面向數(shù)據(jù)結(jié)構(gòu)的系統(tǒng)開發(fā)方法DSSD也叫Warnier-Orr方法ZLLBeiHuaDSSD的邏輯設(shè)計(jì)步驟主要有兩個(gè):(1)推導(dǎo)輸出數(shù)據(jù)的邏輯結(jié)構(gòu)(LogicalOutputStructure,LOS)。(2)由LOS導(dǎo)出處理過程的邏輯結(jié)構(gòu)(LogicalProcessStructure,LPS)。按下述簡(jiǎn)化方法,LOS可以分四步導(dǎo)出:①從問題描述本身或其他相關(guān)需求信息中找出所有不同的原子數(shù)據(jù)項(xiàng)(即不可再分的數(shù)據(jù)項(xiàng))。②說明每個(gè)原子數(shù)據(jù)項(xiàng)的出現(xiàn)頻率。③找出那些可再分的一般數(shù)據(jù)項(xiàng)。④用Warnier-Orr圖表示LOS。ZLLBeiHua【例9.2】產(chǎn)生如圖9-8所示的“機(jī)器使用情況日?qǐng)?bào)表”系統(tǒng)Daily_Machine_Tool_Usage_ReportDate:

ToolcategoryToolIDstatusNO.partsproducedTool_CATTIDSNO_PARTS

CATEGORYTOTALPARTS:CAT_TOT_PARTS

CATEGORYTOTALPARTS:TOTALPARTSPRODUCEDTHISDATE:MANUF_TOTALZLLBeiHua9.3.2推導(dǎo)輸出數(shù)據(jù)的邏輯結(jié)構(gòu)原子數(shù)據(jù)項(xiàng)頻率細(xì)節(jié)HEADING(標(biāo)題)DATE_HEAD(日期標(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/報(bào)表1/工具類1/工具1/工具1/工具1/工具類1/工具類1/報(bào)表1/報(bào)表每日機(jī)器使用情況報(bào)表若干類,每類有若干種項(xiàng)按類匯總按目匯總ZLLBeiHua

下一步找出一般數(shù)據(jù)項(xiàng),例9.2中一般數(shù)據(jù)項(xiàng)有“報(bào)表”(出現(xiàn)一次),“工具類”(每份報(bào)表中出現(xiàn)t次)和“工具”(每類中出現(xiàn)s次)。綜上所述,得到如圖9-10所示的Warnier?Orr圖,即例9.2的LOS。生產(chǎn)報(bào)表(1,t)(1,s)圖9-10LOS的Warnier?Orr圖示?????????í每日產(chǎn)品總計(jì)每日匯總標(biāo)題工具類列標(biāo)題日期日期標(biāo)題???標(biāo)題ìZLLBeiHua9.3.3推導(dǎo)處理過程的邏輯結(jié)構(gòu)LPS是軟件的過程性表示,可以按下述步驟導(dǎo)出:(1)從LOS的Warnier?Orr圖示中去掉所有原子數(shù)據(jù)項(xiàng)。(2)對(duì)每個(gè)一般數(shù)據(jù)項(xiàng)加上“·BEGIN、·END”分隔符。對(duì)于例9.2,上述兩步完成后,得到圖9-11。繼續(xù)下面的步驟:(1,t)(1,s)ZLLBeiHua(3)定義所有初始、終止的指令或過程。(4)說明所有數(shù)值計(jì)算和非數(shù)值處理。至此,Warnier?Orr圖擴(kuò)展為圖9-12。生產(chǎn)報(bào)表置MANUF-TOTAL為0置CAT_TOTAL_PARTS為0把NO_PARTS加到CAT_TOTAL_PARTS上把CAT_TOTAL_PARTS加到MANUF_TOTAL上(1,t)(1,s)ZLLBeiHua9.3.3推導(dǎo)處理過程的邏輯

溫馨提示

  • 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)論