国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于目標轉(zhuǎn)換的用例建模方法

2014-07-03 08:15林郁峰陳中育駱正平吳星同
計算機與現(xiàn)代化 2014年7期
關(guān)鍵詞:關(guān)注點用例文檔

林郁峰,陳中育,駱正平,吳星同

(浙江師范大學數(shù)理與信息工程學院,浙江 金華 321004)

0 引言

對于軟件需求,研究人員提出了許多捕獲手段和建模方法,其中用例(Use Case)[1-2]作為重要需求建模工具被廣泛使用。用例驅(qū)動的需求建模方法優(yōu)點在于:開發(fā)者站在用戶視角觀察將要開發(fā)的系統(tǒng)[3],抽象出系統(tǒng)中的參與者(Actor),將一系列場景抽象成用例。在實際應用中,用例建模也暴露出一些缺點,如:用例建模對參與者及其場景挖掘沒有一套系統(tǒng)方法;用例之間存在相互交錯情況,其粒度難以把握。文獻[4]提出將“纏繞”需求模塊化,有效改善了用例之間的交錯行為。文獻[5]提出了面向目標的需求分析法,將目標看作是需求來源,以目標作為需求獲取的基本線索,采用文本、采訪等手段誘導需求提供者按照目標的分解、精化和抽象關(guān)系逐步構(gòu)建系統(tǒng),從而保證需求的完整性。文獻[6]將目標和場景與用例結(jié)合,以目標作為起點,場景加以誘導,配合需求分析員進行用例建模。

然而,文獻[4-5]只是針對用例的單個方面問題給出解決方案,文獻[6]雖然對用例的2個缺陷都有所改進,但其需求從獲取到建模的整個過程過度依賴自然語言,通過討論分析的方法最終由需求分析員進行需求建模,識別與分析的過程耗費時間,且不同人討論得出的結(jié)論不盡相同。為此,本文基于目標轉(zhuǎn)換的用例建模方法,在目標基礎上,將面向方面[7]的思想融入到用例驅(qū)動的需求建模中,采用可擴展標記語言XML存儲目標模型、識別關(guān)注點來構(gòu)建用例模型,該方法不僅解決了用例來源不明、用例間相互交錯等問題,且在用例需求建模過程中,將分析方法總結(jié)成轉(zhuǎn)換算法,避免過度依賴自然語言的情形。

1 相關(guān)技術(shù)

1.1 目標模型

目標模型是1個樹形圖[8-10],高層目標是指系統(tǒng)目標,表示最粗粒度目標。例如,1個圖書管理系統(tǒng),它的高層目標可以是提供便捷的圖書服務。目標是可以逐層分解的,圖書管理系統(tǒng)可以分解出借書、還書、付費等子目標,且各個子目標能夠繼續(xù)被分解。參照文獻[6],本文采用的4層目標模型如下:

1)業(yè)務目標層(Business Goal)。識別待開發(fā)系統(tǒng)的整體目標,描述為什么開發(fā)系統(tǒng)。

2)服務目標層(Service Goal)。描述系統(tǒng)提供的不同服務,它們共同實現(xiàn)業(yè)務目標。

3)交互目標層(Interaction Goal)。服務目標的進一步細分,描述服務中特定的情節(jié)。

4)內(nèi)部目標層(Inner Goal)。完成交互所需的動作或動作序列。

1.2 可擴展標記語言

XML是1種元標記語言[11],通過標記語言將文檔切分,并對每個部分加以標識。本文選用XML語言存儲目標模型的原因是:1)XML標簽按照順序進行嵌套,從標記的最外層到最內(nèi)層能夠很好地對應目標模型的高層到低層,且XML標簽能夠?qū)繕嗣Q;2)XML作為1種存儲數(shù)據(jù)的工具,能夠通過查詢語言實現(xiàn)簡單的數(shù)據(jù)索引、查找、排序等功能,為目標模型的轉(zhuǎn)化提供支持;3)XML可擴展性好,其簡單性使其極易在任何程序中讀寫數(shù)據(jù),為需求建模工具的開發(fā)提供了便利。

2 用例建模方法

2.1 基于目標轉(zhuǎn)換的用例建模方法

文獻[6]提出的基于目標-場景的需求分析方法中,采用表格模板作為驅(qū)動,通過分析人員的引導將用戶需求轉(zhuǎn)化為目標和場景樹。目標和場景被用戶認可后,分析人員根據(jù)現(xiàn)有目標場景總結(jié)出1套用例描述規(guī)則。根據(jù)描述規(guī)則,用戶協(xié)助需求分析員將每個用例的相關(guān)信息(名字、參與者、前置條件、后置條件、相關(guān)用例)及事件流填入用例表格。通過“目標與場景關(guān)系圖”導出“目標-場景到用例的轉(zhuǎn)化規(guī)則”,其工作流程如圖1所示。

圖1 目標-場景需求分析法的工作流程

雖然這種方法指出了用例建模的不足并分別對它們進行了改進,但是其用例模型轉(zhuǎn)化過程過分依賴于自然語言,自然語言存在二義性。本文提出基于目標轉(zhuǎn)換的用例建模方法,希望改進上述方法中過分依賴自然語言的情形,提高模型轉(zhuǎn)化效率和準確度。將目標作為用例建模的先決條件,主要研究從目標模型到用例模型之間的轉(zhuǎn)換,在目標和用例之間構(gòu)造1個轉(zhuǎn)換器,其輸入是目標模型,輸出為用例模型。該方法的工作流程和轉(zhuǎn)換器結(jié)構(gòu)(虛線框)如圖2所示。

圖2 基于目標的用例建模方法

本文方法的工作原理如下:

1)根據(jù)目標模型和XML的相似性,制定映射表。

2)給出關(guān)注點識別規(guī)則,根據(jù)規(guī)則總結(jié)出XML轉(zhuǎn)換算法。

3)根據(jù)映射表,將目標映射為XML文檔。

4)根據(jù)XML轉(zhuǎn)換算法,用XQuery編寫程序,在XML文檔中識別出關(guān)注點。

5)將核心關(guān)注點和橫切關(guān)注點轉(zhuǎn)化為用例和包含用例,并明確其關(guān)聯(lián)性,得到用例模型。

2.2 XML 轉(zhuǎn)換算法

本文的4層目標模型如圖3所示。

圖3 4層目標模型

按照業(yè)務目標層到內(nèi)部目標層的順序,其對應的映射表(表1)中給出了4個XML元標簽的定義,即:<BusinessGoal>作為根元素,其對應的業(yè)務目標層在4層目標模型中是最高層;<InnerGoal>對應于內(nèi)部目標層,是最底層的元素。每個元素標簽及其關(guān)閉標簽之間包含了諸如<ServiceGoalName>、<InnerG-oalName>的名稱標簽,這類標簽包含的文本內(nèi)容就是當前目標名稱。例如<ServiceGoal>標簽及其關(guān)閉標簽 <ServiceGoal/>之間包含了4對 <Service-GoalName>標簽,表示服務目標層中有4個目標存在。根據(jù)映射表,目標模型樹形圖能夠映射成XML,以文檔的形式存儲下來。

表1 XML映射表

在4層目標模型中,業(yè)務目標是系統(tǒng)的最高目標,服務目標層表示系統(tǒng)所提供的不同服務,交互目標層描述的是提供服務的場景序列,而內(nèi)部目標則是場景的一些事件流。由于需求分析階段相同的事件流可能分布在不同的需求模塊中,本文借鑒面向方面編碼(AOP)[12-14]的思想,把這類需求模塊叫做橫切關(guān)注點,而那些相對獨立的、能表示業(yè)務流程的需求模塊,稱之為核心關(guān)注點[15]。在1個用例中,橫切關(guān)注點和核心關(guān)注點分別對應包含(或擴展)用例和對等用例。包含用例往往分布在各個對等用例中,在用例建模過程中反復出現(xiàn)使得用例變得復雜而冗長。如果能夠識別XML文檔中的橫切關(guān)注點和核心關(guān)注點并對橫切關(guān)注點進行建模,就能識別包含用例,使對等用例保持分離,控制用例粒度,改善用例交錯的問題。根據(jù)文獻[6]中的用例轉(zhuǎn)化規(guī)則,將識別層次鎖定在目標模型的第3、4層,根據(jù)XML映射表,給出相應的XML轉(zhuǎn)換規(guī)則和算法。

2.2.1 XML 轉(zhuǎn)換規(guī)則

1)識別核心關(guān)注點:識別交互目標,它們是核心關(guān)注點。

2)識別橫切關(guān)注點:根據(jù)父節(jié)點個數(shù),篩選內(nèi)部目標。

由于目標模型中父目標下不會包含相同的子目標,其對應的XML文檔中,同一父元素下也不會出現(xiàn)重復子元素。所以只需判斷內(nèi)部目標出現(xiàn)次數(shù)即可篩選出橫切關(guān)注點,這里把內(nèi)部目標中橫切關(guān)注點以外的識別為原子關(guān)注點,它們是核心關(guān)注點中無交錯的部分。

2.2.2 XML 轉(zhuǎn)換算法

1)遍歷 XML文檔,找到 <InteractionGoalName>,將其標注為<CoreConcerns>并返回。

2)判斷所有<InnerGoalName>標簽下的文本內(nèi)容。

a)將擴散度(出現(xiàn)次數(shù))大于1的標簽標記為<CrossCuttingConcerns>并返回。

b)將擴散度等于1的標簽標記為 <AtomConcerns>并返回。

通過XML轉(zhuǎn)換算法,識別出了XML文檔中的核心關(guān)注點、橫切關(guān)注點以及原子關(guān)注點,并分別以<CoreConcerns>、<CrossCuttingConcerns>和<Atom-Concerns>標簽標記。

核心關(guān)注點在用例模型中表示對等用例,橫切關(guān)注點在被識別前分布在多個對等用例中,破壞了對等用例的獨立性。這里將橫切關(guān)注點從核心關(guān)注點中抽離,組成包含用例,降低了對等用例的耦合度,使對等用例保持分離。而原子關(guān)注點則是組成每個對等用例的事件流,不出現(xiàn)在用例模型中。表2反映了元標記、關(guān)注點、用例之間的映射關(guān)系。

表2 元標記-關(guān)注點-用例的映射關(guān)系

雖然包含用例和對等用例已經(jīng)被識別,但它們之間的關(guān)系并未明確,所以還不能得到完整的用例模型。為了得到它們之間的關(guān)系,可以根據(jù)橫切點識別結(jié)果,對原XML文檔再做1次識別,識別方法為:為每個包含用例,也就是帶<CrossCuttingConcerns>標簽的內(nèi)容,假設內(nèi)容是“Cname”,在Goal.xml中尋找其父節(jié)點,在<InteractionGoal>下遍歷<InnerGoalName>內(nèi)容,若與“Cname”相同,返回<InteractionGoalName>。

運算結(jié)果確定了包含用例及與其相連的對等用例。根據(jù)UML標準,對等用例和包含用例用橢圓表示,它們之間的聯(lián)系用帶箭頭的虛線表示,虛線上用“include”表示包含關(guān)系。

3 實例分析

本節(jié)以客運服務系統(tǒng)為例,采用XML轉(zhuǎn)換算法對目標模型進行用例建模。該系統(tǒng)是針對客運乘客和管理人員開發(fā)的,目的是提供信息查詢、票務管理、信息管理等功能,而票務管理功能為乘客提供訂票、取票、退票等服務。其4層目標模型如圖4所示。

圖4 客運服務系統(tǒng)目標模型

3.1 用XML存儲目標模型

根據(jù)系統(tǒng)的目標模型,通過XML映射表,將4層目標模型轉(zhuǎn)化成帶有<BusinessGoal>、<ServiceGoal>、<InteractionGoal>和 <InnerGoal>4層標簽的kyfw.xmlXML文檔,如圖5所示。

圖5 客運服務系統(tǒng)的XML模型

圖5中第7、14、20行的<InteractionGoal>中分別存儲了訂票服務、取票服務、退票服務3個交互目標。

3.2 識別關(guān)注點

本文以Oxygen XML Editor為實驗平臺,將XML轉(zhuǎn)換算法編寫成kyfw.xquery文件,對kyfw.xml文檔進行篩選,結(jié)合實例給出分析如下:

該文件以XQuery 1.0為語言,以文獻[16-17]為技術(shù)參考,以oxy為命名空間編寫。在第3行中,申明了kyfw.xml,也就是存放著客運服務目標模型的XML文件的路徑。第5到8行是識別核心關(guān)注點的函數(shù)。而區(qū)分橫切關(guān)注點和原子關(guān)注點的函數(shù)則出現(xiàn)在第9到16行。最后帶有<Concerns>標簽的是主函數(shù),調(diào)用之前申明的2個函數(shù)。識別結(jié)果如圖6所示。

圖6中帶有 <CoreConcerns>標簽的“訂票服務”、“取票服務”以及“退票服務”被識別為核心關(guān)注點。而“計算賬單”和“核對訂單”因為帶有<Cross-CuttingConcerns>標簽,為橫切關(guān)注點,而剩下的“檢查車次信息”等則是原子關(guān)注點。所以“訂票服務”、“取票服務”及“退票服務”在用例模型中作為對等用例出現(xiàn),用橢圓表示。而“計算賬單”和“核對訂單”因為橫切了多個核心關(guān)注點而作為橫切關(guān)注點,在用例模型中以包含用例的形式出現(xiàn),用帶箭頭的虛線連接對等用例。

圖6 XML識別結(jié)果

3.3 用例模型

確定了對等用例和包含用例之后,需要明確其關(guān)系。根據(jù)3.2節(jié)中提出的識別方法編寫 relation.xquery,對關(guān)注點識別結(jié)果進一步處理。以下是核心的relation函數(shù):

relation函數(shù)的第2、3行分別遍歷了kyfw.xml文件中的所有InteractionGoal元素以及橫切關(guān)注點名稱集合,第4行限制了返回的條件,也就是當InteractionGoalName的文本字段與橫切關(guān)注點名中字段相等時才返回。最終結(jié)果以橫切關(guān)注點字段順序排列,格式為“對等用例”includes“包含用例”。識別結(jié)果如圖7所示。

圖7 對等用例和包含用例關(guān)系識別結(jié)果

在圖7中“核對訂單”和“計算賬單”分別與2個對等用例形成聯(lián)系,這樣,“訂票服務”、“取票服務”、“退票服務”作為3個對等用例出現(xiàn)在用例模型中,同時“取票服務”、“退票服務”有共同的包含用例“核對訂單”,“訂票服務”、“退票服務”則都包含了“計算賬單”。根據(jù)UML規(guī)范,可以得到用例模型如圖8所示。

圖8 最終的用例模型

3.4 分析比較

對傳統(tǒng)的面向?qū)ο蠓椒╗2]、基于目標的方法[4]、AOSD 方法[5]、目標-場景方法[6]以及本文方法,在需求的獲取手段、識別手段、識別效率、需求模型精度和向設計階段過渡的能力5個方面進行比較發(fā)現(xiàn),基于目標的方法提供了1種很好的需求捕獲手段,面向?qū)ο笮枨蠓治鲋械挠美P湍軌蜃屝枨罅己玫剡^渡到設計階段,本文方法較好地結(jié)合了兩者的長處。同時,相比自然語言,更為形式化的算法提高了需求傳達和需求建模過程的穩(wěn)定性和魯棒性。如遇到新的需求或原先的需求產(chǎn)生了變更,只需更新目標模型并重新映射,算法的實現(xiàn)無需變更,使建模過程效率更高。表3給出了上述幾種建模方法在5個方面的比較結(jié)果。

表3 方法比較結(jié)果

4 結(jié)束語

針對用例建模過程中存在的問題,本文提出采用XML轉(zhuǎn)換算法進行用例建模,并以客運服務系統(tǒng)為例,驗證了該方法的可行性。結(jié)果表明,當需求存在交織的問題時,算法能夠清晰地識別和篩選關(guān)注點,避免了人工分析可能產(chǎn)生的偏差,為用例建模提供了重要判斷依據(jù)。尤其遇到龐大、復雜的系統(tǒng)時,這種方法能夠為用例識別節(jié)省大量時間,將共用的事件流從對等用例中抽離形成包含用例則能減少用例模型的冗余,使其保持低耦合的狀態(tài)。當然,該方法也存在一定的不足,比如從需求到用例的過程中,需要對XML文檔進行2次操作。下一步的研究工作將是,借助XML適用于多平臺的特性,為用例模型設計形式化的開發(fā)工具。

[1] 盧梅,李明樹.軟件需求工程——方法及工具評述[J].計算機研究與發(fā)展,1999,36(11):1289-1300.

[2] Jacobson I.Object Oriented Software Engineering:A Use Case Driven Approach[M].New York:Addison Wesley,1992.

[3] Larman C.Applying UML and Patterns:An Introduction to Object-oriented Analysis and Design and Iterative Development[M].Prentice Hall,2006.

[4] Jacobson I,Ng P W.Aspect-oriented Software Development with Use Cases[M].New York:Addison Wesley,2005.

[5] Dardenne A,Van Lamsweerde A,F(xiàn)ickas S.Goal-directed requirements acquisition[J].Science of Computer Programming,1993,20(1-2):3-50.

[6] 戴娟.基于目標與場景的用例驅(qū)動需求分析技術(shù)研究[D].西安:西安電子科技大學,2012.

[7] 莫倩,劉曉.面向方面的軟件工程指南[J].計算機工程,2007,33(14):62-65.

[8] Van Lamsweerde A.Goal-oriented requirements engineering:A guided tour[C]//Proceedings of the 5th IEEE InternationalSymposium on Requirements Engineering.2001:249-262.

[9] Yue K.What does it mean to say that a specification is complete?[C]//Proceedings of the 4th International Workshop on Software Specification and Design.1987.

[10] Anton A I.Goal-based requirements analysis[C]//Proceedings of the 2nd International Conference on Requirements Engineering.1996:136-144.

[11] 李辛.基于語義相關(guān)性的XML關(guān)鍵字查詢的研究與實現(xiàn)[D].北京:北京交通大學,2009.

[12] Kiczales G,Lamping J,Mendhekar A,et al.Aspect-oriented programming[C]//Proceedings of the 11th European Conference on Object-oriented Programming.1997:220-242.

[13] 金英,劉華虓,張鵬.一種面向方面需求模型的分析與驗證方法[J].計算機學報,2013,36(1):63-73.

[14] 韓曉英,虞慧群.一種基于UML的面向方面模塊動態(tài)特性編織方法[J].華東理工大學學報(自然科學版),2007,33(3):394-399.

[15] 何明昕.關(guān)注點分離在計算思維和軟件工程中的方法論意義[J].計算機科學,2009,36(4):60-63.

[16] Holzner S.XML:A Beginner’s Guide:Go Beyond the Basics with Ajax,XHTML,XPath 2.0,XSLT 2.0 and XQuery[M].Osborne/McGraw-Hill,2009.

[17] Walmsley P.XQuery權(quán)威指南[M].王銀輝,譯.北京:電子工業(yè)出版社,2009.

猜你喜歡
關(guān)注點用例文檔
淺談Matlab與Word文檔的應用接口
冬奧關(guān)注點
UML用例間包含關(guān)系與泛化關(guān)系的比較與分析
UML用例模型中依賴關(guān)系的比較與分析
有人一聲不吭向你扔了個文檔
尋找關(guān)注點 提高復習效率——以初中教學中“0”為關(guān)注點為例
下半年尿素市場四大關(guān)注點
如何分析一組數(shù)據(jù)的集中和分散——數(shù)據(jù)分析的兩個關(guān)注點
聯(lián)鎖軟件詳細設計的測試需求分析和用例編寫
從出土文獻用例看王氏父子校讀古書的得失
城固县| 新蔡县| 西丰县| 高唐县| 延川县| 金塔县| 阳城县| 承德市| 青铜峡市| 夹江县| 灌南县| 子洲县| 宁乡县| 房山区| 工布江达县| 辛集市| 乐安县| 青海省| 太和县| 荆州市| 屏山县| 阳山县| 黄陵县| 和静县| 伊通| 房山区| 扎鲁特旗| 广东省| 揭西县| 资兴市| 安化县| 巨野县| 武冈市| 贵港市| 海宁市| 宜兰市| 陕西省| 永城市| 墨脱县| 宁安市| 庆城县|