摘 要:通過(guò)對(duì)具體實(shí)例的剖析,揭示DFD與UML之間的對(duì)應(yīng)關(guān)系,從而提出結(jié)構(gòu)化軟件分析方法與面向?qū)ο筌浖治龇椒ù嬖诘膶?duì)應(yīng)關(guān)系,在軟件需求分析方法上實(shí)現(xiàn)了二者的相互轉(zhuǎn)換,這種對(duì)應(yīng)與轉(zhuǎn)換關(guān)系對(duì)現(xiàn)有結(jié)構(gòu)化軟件的維護(hù)及再工程具有指導(dǎo)意義。
關(guān)鍵詞:結(jié)構(gòu)化開(kāi)發(fā)方法;面向?qū)ο箝_(kāi)發(fā)方法;UML;DFD;E-R圖
中圖分類(lèi)號(hào):TP311.5文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2009)20-137-03
Research of Corresponding Relation between Structured Analysis and Object-oriented Analysis
BAI Guimei
(Luoyang Institute of Science and Technology,Luoyang,471023,China)
Abstract:With studying of an example,the relation between DFD and UML diagram is discovered.So the corresponding relation between structured analysis and object-oriented analysis is raised.The analysis transforming from one to another is realized.This relation has directing signification of structured software′s maintenance or reengineering.
Keywords:structured development method;object-oriented development method;UML;DFD;E-R diagram
0 引 言
對(duì)傳統(tǒng)的結(jié)構(gòu)化軟件開(kāi)發(fā)方法,在需求分析階段要對(duì)系統(tǒng)中數(shù)據(jù)的加工過(guò)程(即從開(kāi)始的數(shù)據(jù)輸入到最終系統(tǒng)輸出數(shù)據(jù)的加工處理過(guò)程)用數(shù)據(jù)流圖(DFD)加以描述,對(duì)系統(tǒng)所涉及的永久性數(shù)據(jù)的存儲(chǔ)與組織用實(shí)體關(guān)系(E-R)圖來(lái)描述。進(jìn)入軟件設(shè)計(jì)階段后,DFD將轉(zhuǎn)換為系統(tǒng)結(jié)構(gòu)(SC)圖,E-R圖則被轉(zhuǎn)換為數(shù)據(jù)庫(kù)中的表[1]。
面向?qū)ο蟮姆治龇椒?需求分析階段首先要給出UML圖中的用例圖與類(lèi)圖[2]。用例圖是由系統(tǒng)之外的執(zhí)行者(稱(chēng)為主角或角色)與執(zhí)行者感受到的一系列動(dòng)作(稱(chēng)為用例)所構(gòu)成,用例圖包括主角、用例以及主角與用例之間的聯(lián)系[3]。類(lèi)圖則要從問(wèn)題域的研究、描述中抽象提取。在初步的用例圖與類(lèi)圖的基礎(chǔ)上可根據(jù)需要分析給出UML的其他圖,比如狀態(tài)圖、順序圖、活動(dòng)圖、協(xié)作圖等[4]。進(jìn)入設(shè)計(jì)階段后需進(jìn)一步規(guī)劃、設(shè)計(jì)類(lèi)的屬性與方法,給出方法體的實(shí)現(xiàn)流程。
1 結(jié)構(gòu)化分析方法與面向?qū)ο蠓治龇椒ǖ膶?duì)應(yīng)關(guān)系
以實(shí)例說(shuō)明系統(tǒng)結(jié)構(gòu)化分析方法與面向?qū)ο蠓治龇椒ǖ膶?duì)應(yīng)關(guān)系。在超市型書(shū)店中,顧客可以從書(shū)架上自由選書(shū),然后到收款臺(tái)付款和打印單據(jù)。為方便顧客,書(shū)店還向顧客提供查詢(xún)服務(wù),可以依據(jù)顧客提供的信息,如書(shū)號(hào)、書(shū)名、作者或出版社,查詢(xún)書(shū)店中有無(wú)相應(yīng)的圖書(shū)。書(shū)店管理人員日常需要詳細(xì)記錄進(jìn)書(shū)與售書(shū)情況,需要經(jīng)常查詢(xún)庫(kù)存書(shū)和銷(xiāo)售情況,還要統(tǒng)計(jì)銷(xiāo)售量、銷(xiāo)售利潤(rùn)最大的圖書(shū)(比如10種)信息,為書(shū)店進(jìn)書(shū)提供依據(jù)[5]。書(shū)店只設(shè)一個(gè)收款臺(tái),用一臺(tái)微機(jī)即可實(shí)現(xiàn)經(jīng)營(yíng)管理。
從系統(tǒng)功能的角度分析,該系統(tǒng)應(yīng)包括以下四個(gè)部分。
(1) 進(jìn)書(shū)登記。登記本店購(gòu)進(jìn)圖書(shū)的書(shū)名、書(shū)號(hào)、作者、出版社、進(jìn)價(jià)、定價(jià)、庫(kù)存數(shù)等信息;
(2) 售書(shū)登記。登記售書(shū)日期、書(shū)號(hào)、售出數(shù)量、單據(jù)號(hào)、開(kāi)單人等消息,打印銷(xiāo)售單據(jù);
(3) 查詢(xún)統(tǒng)計(jì)與報(bào)表。隨時(shí)顯示和打印給定時(shí)間段內(nèi)的售書(shū)情況,并結(jié)算銷(xiāo)售金額與利潤(rùn);統(tǒng)計(jì)銷(xiāo)售量、銷(xiāo)售利潤(rùn)最大的10種圖書(shū);隨時(shí)顯示和打印庫(kù)存書(shū)清單;
(4) 購(gòu)書(shū)查詢(xún)??刹樵?xún)有無(wú)某書(shū)號(hào)、書(shū)名、作者、出版社的書(shū)。
1.1 系統(tǒng)E-R圖
系統(tǒng)所包含的實(shí)體有庫(kù)存書(shū)、單據(jù),二者之間具有售書(shū)關(guān)系,所對(duì)應(yīng)的E-R圖如圖1所示。
圖1 系統(tǒng)E-R圖
1.2 系統(tǒng)的DFD
DFD是自頂向下逐步細(xì)化的層次圖,其中包含四種元素,即用矩形框表示的起點(diǎn)與終點(diǎn);有向線(xiàn)表示的數(shù)據(jù)流;圓角框表示的加工;以及雙橫線(xiàn)表示的文件。該系統(tǒng)所對(duì)應(yīng)的DFD如圖2~圖5所示[2,4]。
圖2 頂層DFD
圖3 一層DFD
圖4 二層DFD
圖5 三層DFD
數(shù)據(jù)字典的內(nèi)容如下:
(1) 文件條目
庫(kù)存表=0{入庫(kù)書(shū)目+進(jìn)書(shū)日期+庫(kù)存數(shù)+封面+備注}m
售書(shū)表=0{書(shū)號(hào)+單據(jù)號(hào)+數(shù)量}m
單據(jù)表=0{單據(jù)號(hào)+開(kāi)單日期+開(kāi)單人+購(gòu)書(shū)單位+總金額}m
(2) 數(shù)據(jù)流條目
書(shū)目=書(shū)號(hào)+書(shū)名+作者+出版社
入庫(kù)書(shū)目=書(shū)目+進(jìn)價(jià)+定價(jià)
售書(shū)輸入=1{書(shū)號(hào)+數(shù)量}m
購(gòu)書(shū)單=單據(jù)號(hào)+1{書(shū)名+定價(jià)+數(shù)量}m+總金額+付款金額+找零+開(kāi)單日期
查詢(xún)選擇=[客戶(hù)查詢(xún)輸入|管理員查詢(xún)選擇]
客戶(hù)查詢(xún)輸入=[書(shū)號(hào)|書(shū)名|作者|出版社|書(shū)名+作者|書(shū)名+出版社|作者+出版社]
客戶(hù)查詢(xún)結(jié)果=書(shū)目+庫(kù)存數(shù)+封面
起止日期=起始日期+終止日期
管理員查詢(xún)選擇=[銷(xiāo)售額選擇|銷(xiāo)售量最大選擇|銷(xiāo)售利潤(rùn)最大選擇]+ 起止日期
管理員查詢(xún)結(jié)果=銷(xiāo)售額查詢(xún)結(jié)果+銷(xiāo)售量最大查詢(xún)結(jié)果+銷(xiāo)售利潤(rùn)最大查詢(xún)結(jié)果
報(bào)表選擇=庫(kù)存清單選擇+售書(shū)選擇+單據(jù)選擇
報(bào)表輸出結(jié)果=庫(kù)存清單+售書(shū)報(bào)表+單據(jù)報(bào)表
庫(kù)存清單=1{序號(hào)+入庫(kù)書(shū)目+進(jìn)書(shū)日期+庫(kù)存數(shù)}m+書(shū)種數(shù)+總數(shù)量+總金額+報(bào)表生成日期
售書(shū)報(bào)表=1{書(shū)號(hào)+書(shū)名+1{單據(jù)號(hào)+數(shù)量+開(kāi)單日期+開(kāi)單人+購(gòu)書(shū)單位}n+售出數(shù)}m+銷(xiāo)售書(shū)種數(shù)+總金額+利潤(rùn)總計(jì)+起止日期
單據(jù)報(bào)表=1{單據(jù)號(hào)+開(kāi)單日期+開(kāi)單人+購(gòu)書(shū)單位+1{書(shū)號(hào)+書(shū)名+數(shù)量+定價(jià)}n+合計(jì)金額}m+銷(xiāo)售書(shū)種數(shù)+總金額+利潤(rùn)總計(jì)+起止日期
客戶(hù)查詢(xún)輸入|=[書(shū)號(hào)|書(shū)名|作者|出版社|書(shū)名+作者|書(shū)名+出版社|作者+出版社]
管理員查詢(xún)選擇=[銷(xiāo)售額選擇|銷(xiāo)售量最大選擇|銷(xiāo)售利潤(rùn)最大選擇]+起止日期
銷(xiāo)售額查詢(xún)結(jié)果=0{書(shū)目+銷(xiāo)售數(shù)量+銷(xiāo)售金額}m+起止日期
銷(xiāo)售量最大查詢(xún)結(jié)果=0{書(shū)目+銷(xiāo)售數(shù)量}10+起止日期
銷(xiāo)售利潤(rùn)最大查詢(xún)結(jié)果=0{書(shū)目+銷(xiāo)售利潤(rùn)}10+起止日期
(3) 加工條目
基于數(shù)據(jù)流圖中所標(biāo)加工的清晰性,加工條目不再列出。
1.3 系統(tǒng)用例圖與DFD的對(duì)應(yīng)關(guān)系
DFD與UML的用例圖有直接的對(duì)應(yīng)關(guān)系,即DFD中的起點(diǎn)、終點(diǎn)就是用例圖中的主角,DFD中的加工是用例圖中的用例,下層對(duì)上層加工的細(xì)化對(duì)應(yīng)用例圖中用例的包含關(guān)系(《include》)[6],該系統(tǒng)的用例圖如圖6所示。
圖6 用例圖
DFD中判斷加工對(duì)應(yīng)用例圖中的擴(kuò)展關(guān)系(《extend》),如圖7所示的部分DFD,其對(duì)應(yīng)的部分用例圖如圖8所示[7]。
圖7 部分DFD
圖8 部分用例圖
1.4 系統(tǒng)類(lèi)圖
從系統(tǒng)的DFD,E-R圖及對(duì)問(wèn)題域的描述,使用名詞、動(dòng)詞分析法先找出候選類(lèi)及其屬性與操作[8],再通過(guò)CRC(Class Responsibility Collaborator)分析與RUP(Rational Unified Process)構(gòu)造型進(jìn)一步確定類(lèi)(及其屬性與操作)[9],可提取出如圖9所示的系統(tǒng)類(lèi)圖。由圖9可知,類(lèi)圖與DFD,E-R圖也緊密相關(guān)。
圖9 系統(tǒng)類(lèi)圖
2 結(jié) 語(yǔ)
以上通過(guò)具體實(shí)例說(shuō)明了DFD,E-R圖與UML的用例圖、類(lèi)圖的對(duì)應(yīng)關(guān)系,亦即傳統(tǒng)的結(jié)構(gòu)化分析方法與面向?qū)ο蠓治龇椒ㄖg的對(duì)應(yīng)關(guān)系。需要強(qiáng)調(diào)的是不管是傳統(tǒng)的結(jié)構(gòu)化軟件開(kāi)發(fā)方法,還是面向?qū)ο蟮能浖_(kāi)發(fā)方法,各階段都是循環(huán)往復(fù)的迭代過(guò)程[10],需求分析階段也不例外,它也是一個(gè)不斷修正、完善的過(guò)程。
參考文獻(xiàn)
[1]孫家廣,劉強(qiáng).軟件工程理論、方法與實(shí)踐[M].北京:高等教育出版社,2005.
[2]齊治昌,譚慶平,寧洪.軟件工程[M].2版.北京:高等教育出版社,2004.
[3]國(guó)剛.UML與Rational Rose 2003軟件工程統(tǒng)一建模原理與實(shí)踐教程[M].北京:電子工業(yè)出版社,2007.
[4]Bernd Oestereich.軟件開(kāi)發(fā)方式——UML 面向?qū)ο蠓治雠c設(shè)計(jì)[M].2版.姜南,譯.北京:電子工業(yè)出版社,2004.
[5]高春玲,張文學(xué),白桂梅.數(shù)據(jù)庫(kù)原理及應(yīng)用Visual FoxPro[M].2版.北京:電子工業(yè)出版社,2005.
[6]王強(qiáng),張曉鵬.用UML活動(dòng)圖集成用例的研究[J].計(jì)算機(jī)工程,2004,30(3):80-81.
[7]鄧安遠(yuǎn),王道乾,文俊浩.基于UML的期貨公司管理平臺(tái)的分析與建模[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(1):259-261.
[8]Leon Starr.How to Build Articulate Class Models[EB/OL].http://www.modelint.com/,August 6,2008.
[9]Andrew Watson.UMLsR vs.DSLs:A False Dichotomy[EB/OL].http://www.omg.org/docs/omg/08-09-03.pdf,2008.
[10]Roger S Pressman.軟件工程:實(shí)踐者之路[M].5版.北京:清華大學(xué)出版社,2005.