摘 要:通過對具體實例的剖析,揭示DFD與UML之間的對應關系,從而提出結構化軟件分析方法與面向?qū)ο筌浖治龇椒ù嬖诘膶P系,在軟件需求分析方法上實現(xiàn)了二者的相互轉(zhuǎn)換,這種對應與轉(zhuǎn)換關系對現(xiàn)有結構化軟件的維護及再工程具有指導意義。
關鍵詞:結構化開發(fā)方法;面向?qū)ο箝_發(fā)方法;UML;DFD;E-R圖
中圖分類號:TP311.5文獻標識碼:A
文章編號: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 引 言
對傳統(tǒng)的結構化軟件開發(fā)方法,在需求分析階段要對系統(tǒng)中數(shù)據(jù)的加工過程(即從開始的數(shù)據(jù)輸入到最終系統(tǒng)輸出數(shù)據(jù)的加工處理過程)用數(shù)據(jù)流圖(DFD)加以描述,對系統(tǒng)所涉及的永久性數(shù)據(jù)的存儲與組織用實體關系(E-R)圖來描述。進入軟件設計階段后,DFD將轉(zhuǎn)換為系統(tǒng)結構(SC)圖,E-R圖則被轉(zhuǎn)換為數(shù)據(jù)庫中的表[1]。
面向?qū)ο蟮姆治龇椒?需求分析階段首先要給出UML圖中的用例圖與類圖[2]。用例圖是由系統(tǒng)之外的執(zhí)行者(稱為主角或角色)與執(zhí)行者感受到的一系列動作(稱為用例)所構成,用例圖包括主角、用例以及主角與用例之間的聯(lián)系[3]。類圖則要從問題域的研究、描述中抽象提取。在初步的用例圖與類圖的基礎上可根據(jù)需要分析給出UML的其他圖,比如狀態(tài)圖、順序圖、活動圖、協(xié)作圖等[4]。進入設計階段后需進一步規(guī)劃、設計類的屬性與方法,給出方法體的實現(xiàn)流程。
1 結構化分析方法與面向?qū)ο蠓治龇椒ǖ膶P系
以實例說明系統(tǒng)結構化分析方法與面向?qū)ο蠓治龇椒ǖ膶P系。在超市型書店中,顧客可以從書架上自由選書,然后到收款臺付款和打印單據(jù)。為方便顧客,書店還向顧客提供查詢服務,可以依據(jù)顧客提供的信息,如書號、書名、作者或出版社,查詢書店中有無相應的圖書。書店管理人員日常需要詳細記錄進書與售書情況,需要經(jīng)常查詢庫存書和銷售情況,還要統(tǒng)計銷售量、銷售利潤最大的圖書(比如10種)信息,為書店進書提供依據(jù)[5]。書店只設一個收款臺,用一臺微機即可實現(xiàn)經(jīng)營管理。
從系統(tǒng)功能的角度分析,該系統(tǒng)應包括以下四個部分。
(1) 進書登記。登記本店購進圖書的書名、書號、作者、出版社、進價、定價、庫存數(shù)等信息;
(2) 售書登記。登記售書日期、書號、售出數(shù)量、單據(jù)號、開單人等消息,打印銷售單據(jù);
(3) 查詢統(tǒng)計與報表。隨時顯示和打印給定時間段內(nèi)的售書情況,并結算銷售金額與利潤;統(tǒng)計銷售量、銷售利潤最大的10種圖書;隨時顯示和打印庫存書清單;
(4) 購書查詢。可查詢有無某書號、書名、作者、出版社的書。
1.1 系統(tǒng)E-R圖
系統(tǒng)所包含的實體有庫存書、單據(jù),二者之間具有售書關系,所對應的E-R圖如圖1所示。
圖1 系統(tǒng)E-R圖
1.2 系統(tǒng)的DFD
DFD是自頂向下逐步細化的層次圖,其中包含四種元素,即用矩形框表示的起點與終點;有向線表示的數(shù)據(jù)流;圓角框表示的加工;以及雙橫線表示的文件。該系統(tǒng)所對應的DFD如圖2~圖5所示[2,4]。
圖2 頂層DFD
圖3 一層DFD
圖4 二層DFD
圖5 三層DFD
數(shù)據(jù)字典的內(nèi)容如下:
(1) 文件條目
庫存表=0{入庫書目+進書日期+庫存數(shù)+封面+備注}m
售書表=0{書號+單據(jù)號+數(shù)量}m
單據(jù)表=0{單據(jù)號+開單日期+開單人+購書單位+總金額}m
(2) 數(shù)據(jù)流條目
書目=書號+書名+作者+出版社
入庫書目=書目+進價+定價
售書輸入=1{書號+數(shù)量}m
購書單=單據(jù)號+1{書名+定價+數(shù)量}m+總金額+付款金額+找零+開單日期
查詢選擇=[客戶查詢輸入|管理員查詢選擇]
客戶查詢輸入=[書號|書名|作者|出版社|書名+作者|書名+出版社|作者+出版社]
客戶查詢結果=書目+庫存數(shù)+封面
起止日期=起始日期+終止日期
管理員查詢選擇=[銷售額選擇|銷售量最大選擇|銷售利潤最大選擇]+ 起止日期
管理員查詢結果=銷售額查詢結果+銷售量最大查詢結果+銷售利潤最大查詢結果
報表選擇=庫存清單選擇+售書選擇+單據(jù)選擇
報表輸出結果=庫存清單+售書報表+單據(jù)報表
庫存清單=1{序號+入庫書目+進書日期+庫存數(shù)}m+書種數(shù)+總數(shù)量+總金額+報表生成日期
售書報表=1{書號+書名+1{單據(jù)號+數(shù)量+開單日期+開單人+購書單位}n+售出數(shù)}m+銷售書種數(shù)+總金額+利潤總計+起止日期
單據(jù)報表=1{單據(jù)號+開單日期+開單人+購書單位+1{書號+書名+數(shù)量+定價}n+合計金額}m+銷售書種數(shù)+總金額+利潤總計+起止日期
客戶查詢輸入|=[書號|書名|作者|出版社|書名+作者|書名+出版社|作者+出版社]
管理員查詢選擇=[銷售額選擇|銷售量最大選擇|銷售利潤最大選擇]+起止日期
銷售額查詢結果=0{書目+銷售數(shù)量+銷售金額}m+起止日期
銷售量最大查詢結果=0{書目+銷售數(shù)量}10+起止日期
銷售利潤最大查詢結果=0{書目+銷售利潤}10+起止日期
(3) 加工條目
基于數(shù)據(jù)流圖中所標加工的清晰性,加工條目不再列出。
1.3 系統(tǒng)用例圖與DFD的對應關系
DFD與UML的用例圖有直接的對應關系,即DFD中的起點、終點就是用例圖中的主角,DFD中的加工是用例圖中的用例,下層對上層加工的細化對應用例圖中用例的包含關系(《include》)[6],該系統(tǒng)的用例圖如圖6所示。
圖6 用例圖
DFD中判斷加工對應用例圖中的擴展關系(《extend》),如圖7所示的部分DFD,其對應的部分用例圖如圖8所示[7]。
圖7 部分DFD
圖8 部分用例圖
1.4 系統(tǒng)類圖
從系統(tǒng)的DFD,E-R圖及對問題域的描述,使用名詞、動詞分析法先找出候選類及其屬性與操作[8],再通過CRC(Class Responsibility Collaborator)分析與RUP(Rational Unified Process)構造型進一步確定類(及其屬性與操作)[9],可提取出如圖9所示的系統(tǒng)類圖。由圖9可知,類圖與DFD,E-R圖也緊密相關。
圖9 系統(tǒng)類圖
2 結 語
以上通過具體實例說明了DFD,E-R圖與UML的用例圖、類圖的對應關系,亦即傳統(tǒng)的結構化分析方法與面向?qū)ο蠓治龇椒ㄖg的對應關系。需要強調(diào)的是不管是傳統(tǒng)的結構化軟件開發(fā)方法,還是面向?qū)ο蟮能浖_發(fā)方法,各階段都是循環(huán)往復的迭代過程[10],需求分析階段也不例外,它也是一個不斷修正、完善的過程。
參考文獻
[1]孫家廣,劉強.軟件工程理論、方法與實踐[M].北京:高等教育出版社,2005.
[2]齊治昌,譚慶平,寧洪.軟件工程[M].2版.北京:高等教育出版社,2004.
[3]國剛.UML與Rational Rose 2003軟件工程統(tǒng)一建模原理與實踐教程[M].北京:電子工業(yè)出版社,2007.
[4]Bernd Oestereich.軟件開發(fā)方式——UML 面向?qū)ο蠓治雠c設計[M].2版.姜南,譯.北京:電子工業(yè)出版社,2004.
[5]高春玲,張文學,白桂梅.數(shù)據(jù)庫原理及應用Visual FoxPro[M].2版.北京:電子工業(yè)出版社,2005.
[6]王強,張曉鵬.用UML活動圖集成用例的研究[J].計算機工程,2004,30(3):80-81.
[7]鄧安遠,王道乾,文俊浩.基于UML的期貨公司管理平臺的分析與建模[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.軟件工程:實踐者之路[M].5版.北京:清華大學出版社,2005.