蘇 茁
(內(nèi)蒙古電力勘測(cè)設(shè)計(jì)院,呼和浩特 010020 )
基于COM原理的UML模型信息提取技術(shù)的探討
蘇 茁
(內(nèi)蒙古電力勘測(cè)設(shè)計(jì)院,呼和浩特 010020 )
當(dāng)今世界經(jīng)濟(jì)的發(fā)展已經(jīng)步入知識(shí)經(jīng)濟(jì)時(shí)代,普遍認(rèn)為軟件產(chǎn)業(yè)已經(jīng)成為突出體現(xiàn)技術(shù)和產(chǎn)品高附加值的產(chǎn)業(yè),信息產(chǎn)業(yè)已經(jīng)成為國(guó)民經(jīng)濟(jì)的基礎(chǔ)產(chǎn)業(yè)、支柱產(chǎn)業(yè)和先導(dǎo)產(chǎn)業(yè),投資回報(bào)率最高的產(chǎn)業(yè)之一,都是未來最具活力和前景的產(chǎn)業(yè),其發(fā)展水平成為衡量一個(gè)國(guó)家現(xiàn)代水平與綜合國(guó)力的重要標(biāo)志。軟件產(chǎn)業(yè)是信息產(chǎn)業(yè)的基礎(chǔ)和核心,它對(duì)推動(dòng)國(guó)民經(jīng)濟(jì)發(fā)展具有重大意義。在當(dāng)今軟件開發(fā)產(chǎn)業(yè)中,統(tǒng)一建模語言(UML,Un fi red Modeling Language) 是一種功能強(qiáng)大的、面向?qū)ο蟮目梢暬到y(tǒng)分析的建模語言,在建模中發(fā)揮著重要作用。它規(guī)范了軟件開發(fā)過程,不少采用RUP開發(fā)模式的軟件企業(yè)將UML作為分析和設(shè)計(jì)建模的首選工具。統(tǒng)一建模語言UML嚴(yán)格了軟件開發(fā)流程,統(tǒng)一了開發(fā)方法,是面向?qū)ο筌浖y(cè)試的重要依據(jù)。使得大規(guī)模的軟件開發(fā)效率成倍提高,質(zhì)量有了很大的飛躍。
目前在建模工具中以Rational公司開發(fā)的Rose是基于UML的建模工具的功能最為完善,具有強(qiáng)大的功能和良好的可擴(kuò)展性,它把UML和諧地集成進(jìn)面向?qū)ο蟮能浖_發(fā)過程中。因此,可以選擇Rose作為軟件開發(fā)和軟件測(cè)試的工具,不論是在系統(tǒng)需求階段,為了實(shí)現(xiàn)軟件測(cè)試的自動(dòng)化,還是在對(duì)象的分析與設(shè)計(jì)、軟件的實(shí)現(xiàn)與測(cè)試階段,使用一些成熟的算法進(jìn)行測(cè)試,它都提供了清晰的表達(dá)方法和完善的工具,通過一定的方法將該文件中的UML信息提取出來,方便建立起相應(yīng)的軟件模型。
常規(guī)的提取UML模型信息為UML設(shè)計(jì)了一個(gè)詞法語法分析器,通過對(duì)UML文檔的詞法語法分析,是檢索系統(tǒng)的一個(gè)非常重要的性能指標(biāo)。對(duì)于不同版本的Rose,實(shí)現(xiàn)了從UML文檔中自動(dòng)提取用于軟件測(cè)試的信息。這種方法優(yōu)點(diǎn)是:即使操作者的電腦上未安裝Rose工具,由于語法分析器設(shè)計(jì)時(shí)只針對(duì)特定版本,可以通過更加方便的方法實(shí)現(xiàn)模型信息的提取,只要有mdl文件就可以對(duì)文件中的模型信息進(jìn)行提取。因此,需要制作不同的語法分析器。那就是利用Rose的可擴(kuò)展性。
從建模工具的可擴(kuò)展性方面來看,在Rose的擴(kuò)充環(huán)境中,可把Rose看作是一個(gè)UML開發(fā)平臺(tái)。簡(jiǎn)單地說COM 是一個(gè)通信機(jī)制,如果把UML看作是獨(dú)立于開發(fā)過程、用于軟件開發(fā)周期中模型描述的一種建模語言,應(yīng)用程序通過它可以獲得對(duì)另一個(gè)應(yīng)用程序中的對(duì)象的訪問,那么也可以認(rèn)為Rose是獨(dú)立于處理過程的,獲得對(duì)可重用組件的訪問。特定于工程的開發(fā)工具集合中的一個(gè)簡(jiǎn)單工具,COM對(duì)象是一個(gè)應(yīng)用程序暴露出來的可以被其他應(yīng)用程序共享的對(duì)象。事實(shí)上,為了支持用戶選擇的開發(fā)過程,Rose是以COM組件技術(shù)為基礎(chǔ),或者為了支持與其它開發(fā)工具之間的數(shù)據(jù)交換,其核心是一組基于COM對(duì)象的元模型。Rose自然應(yīng)該具有可擴(kuò)展性和可適應(yīng)性,Rose暴露出來的REI對(duì)象都是C0M對(duì)象。為了支持用戶選擇的開發(fā)過程,Rose的擴(kuò)充接口是按照COM 的標(biāo)準(zhǔn)制定的接口,或者為了支持與其它開發(fā)工具之間的數(shù)據(jù)交換,所以本質(zhì)上可以將Rose REI看作為Rose中提供訪問模型信息的一個(gè)COM服務(wù)器,Rose自然應(yīng)該具有可擴(kuò)展性和可適應(yīng)性。圖l表示REI和Rose其它核心組件的關(guān)系。Rose REI模型本質(zhì)上是Rose模型的元模型,通過訪問REI模型類,得到Rational Rose創(chuàng)建的UML模型信息。繼承Rose Object類比較多,如圖2所示。
圖l REI體系結(jié)構(gòu)
圖2 REI模型框架
Rational Rose Scirpt和Rational Rose Automation都可以訪問REI,Rational Rose Automation的功能更強(qiáng)大。使用RoseScirpt可以生成圖表和類,它還可以讀取UML模型的信息。除了前面提到的Rose Scirpt可以實(shí)現(xiàn)的操作外,可以更新模型,也可以生成文檔。
轉(zhuǎn)換表示對(duì)象將在第一個(gè)狀態(tài)中執(zhí)行一定的動(dòng)作,狀態(tài)圖是展示狀態(tài)與狀態(tài)轉(zhuǎn)換的圖。通常,一個(gè)狀態(tài)圖表示一個(gè)狀態(tài)機(jī),在某個(gè)特定事件發(fā)生而某個(gè)特定的條件滿足時(shí)進(jìn)入第二個(gè)狀態(tài)。一個(gè)轉(zhuǎn)換由5部分組成,狀態(tài)機(jī)由狀態(tài)、轉(zhuǎn)換、事件、活動(dòng)和動(dòng)作組成。狀態(tài)是指在對(duì)象的生命期中滿足某些條件,分別是源狀態(tài)、事件、監(jiān)護(hù)條件、動(dòng)作和目標(biāo)狀態(tài)。在通信領(lǐng)域,執(zhí)行某些活動(dòng)或等待某些事件時(shí)的一個(gè)條件或狀況,狀態(tài)圖通常用來描述一個(gè)協(xié)議。
這個(gè)狀態(tài)圖一共包括7個(gè)狀態(tài)和l7條遷移,使用Rational Rose Automation訪問REI類的時(shí)候,先得到狀態(tài)機(jī)中所有的狀態(tài)對(duì)象,得到所有與這個(gè)狀態(tài)有關(guān)的遷移對(duì)象,接著對(duì)這些遷移進(jìn)行分析,然后對(duì)每個(gè)狀態(tài)對(duì)象進(jìn)行分析,得到每個(gè)遷移的信息。另外一種方法是基于遷移的,先得到狀態(tài)機(jī)中所有的遷移對(duì)象,然后對(duì)每個(gè)遷移對(duì)象進(jìn)行分析,得到每個(gè)遷移的信息。通過比較可以發(fā)現(xiàn),選擇第二種方法提取信息的效率更高。偽代碼描述如下:
考慮到Visual C++可以很好的支持COM,Rose提供的類庫(kù)rationalrose.tlb包含了所有的REI類,因此選擇Visual C++實(shí)現(xiàn)來UML模型的提取。必須先調(diào)用AfxOlelnit函數(shù)對(duì)COM對(duì)象進(jìn)行初始化,每個(gè)類必須添加Rose這個(gè)前綴,載入rationalrose.tlb后,MFC環(huán)境提供的Class Wizard可以自動(dòng)實(shí)現(xiàn)添加前綴的功能,然后創(chuàng)建一個(gè)Rose自動(dòng)化對(duì)象。
本文主要介紹了一種自動(dòng)提取UML模型信息的方法,與常規(guī)的提取UML模型的方法相比,使用該方法對(duì)INRES協(xié)議進(jìn)行了測(cè)試,這種方法的優(yōu)點(diǎn)是是工具自身提供的,因此不會(huì)受到版本影響。進(jìn)一步的工作可以考慮提取由其它建模工具生成的UML模型信息,也可以考慮實(shí)現(xiàn)各種建模工具之間的模型信息轉(zhuǎn)換。
[1]G Booch, J Rumbaugh, I Jacobson. The Uni fi ed Modeling Language User Guide [M]. Addison Wesley, 1999: 101-103.
[2]Adames Wang. Rational Unified Process: Best Practices For Software De5velopment Teams[M]. 北京: 機(jī)械工業(yè)出版社, 2002: 33-34.
[3]盧冰原, 李龍褚. UML建模技術(shù)在智能軟件開發(fā)中的應(yīng)用[J]. 計(jì)算機(jī)應(yīng)用研究, 2001, 10(11): 33-34.
[4]Jacobson I, Booch G, Rumbaugh J. The Uni fi ed Software Development Process [M]. Massachusetts:Addison Wesley, 1999. 245-247.
[5]邵維忠, 蔣嚴(yán)冰, 麻志毅. UML現(xiàn)存的問題和發(fā)展道路[J]. 計(jì)算機(jī)研究與發(fā)展, 2003, 40(4): 13-15.
UML model based on COM principle of information extraction technology
SU Zhuo
項(xiàng)目工程的復(fù)雜性使得建模工具必須應(yīng)對(duì)可能出現(xiàn)的各種新情況,提出了一種提取UML模型信息的方法。為了保持開發(fā)過程的完整性,建模工具必須能適應(yīng)工程環(huán)境的變化,即建模工具必須具有可擴(kuò)充性以滿足用戶和工程的需要。UML是一種優(yōu)秀的建模語言,使用UML可以為軟件模型的建立帶來很多方便。在充分分析Rose擴(kuò)充技術(shù)的原理的前提下,論述Rose的擴(kuò)充方式,同時(shí),為了驗(yàn)證模型的一致性,有必要將模型信息提取出來,通過一些成熟的算法進(jìn)行測(cè)試。利用Rose提供的基于COM技術(shù)的REI,實(shí)現(xiàn)了從UML文檔中自動(dòng)提取用于軟件測(cè)試的模型信息。
統(tǒng)一建模語言;組件對(duì)象模型;協(xié)議
蘇茁(1970-),女,吉林人,副高級(jí)工程師,本科,研究方向?yàn)樾畔㈦娏こ獭?/p>
TG502
B
1009-0134(2011)1(上)-0210-03
10.3969/j.issn.1009-0134.2011.1(上).67
2010-11-30