蘇 茁
(內蒙古電力勘測設計院,呼和浩特 010020 )
基于COM原理的UML模型信息提取技術的探討
蘇 茁
(內蒙古電力勘測設計院,呼和浩特 010020 )
當今世界經濟的發展已經步入知識經濟時代,普遍認為軟件產業已經成為突出體現技術和產品高附加值的產業,信息產業已經成為國民經濟的基礎產業、支柱產業和先導產業,投資回報率最高的產業之一,都是未來最具活力和前景的產業,其發展水平成為衡量一個國家現代水平與綜合國力的重要標志。軟件產業是信息產業的基礎和核心,它對推動國民經濟發展具有重大意義。在當今軟件開發產業中,統一建模語言(UML,Un fi red Modeling Language) 是一種功能強大的、面向對象的可視化系統分析的建模語言,在建模中發揮著重要作用。它規范了軟件開發過程,不少采用RUP開發模式的軟件企業將UML作為分析和設計建模的首選工具。統一建模語言UML嚴格了軟件開發流程,統一了開發方法,是面向對象軟件測試的重要依據。使得大規模的軟件開發效率成倍提高,質量有了很大的飛躍。
目前在建模工具中以Rational公司開發的Rose是基于UML的建模工具的功能最為完善,具有強大的功能和良好的可擴展性,它把UML和諧地集成進面向對象的軟件開發過程中。因此,可以選擇Rose作為軟件開發和軟件測試的工具,不論是在系統需求階段,為了實現軟件測試的自動化,還是在對象的分析與設計、軟件的實現與測試階段,使用一些成熟的算法進行測試,它都提供了清晰的表達方法和完善的工具,通過一定的方法將該文件中的UML信息提取出來,方便建立起相應的軟件模型。
常規的提取UML模型信息為UML設計了一個詞法語法分析器,通過對UML文檔的詞法語法分析,是檢索系統的一個非常重要的性能指標。對于不同版本的Rose,實現了從UML文檔中自動提取用于軟件測試的信息。這種方法優點是:即使操作者的電腦上未安裝Rose工具,由于語法分析器設計時只針對特定版本,可以通過更加方便的方法實現模型信息的提取,只要有mdl文件就可以對文件中的模型信息進行提取。因此,需要制作不同的語法分析器。那就是利用Rose的可擴展性。
從建模工具的可擴展性方面來看,在Rose的擴充環境中,可把Rose看作是一個UML開發平臺。簡單地說COM 是一個通信機制,如果把UML看作是獨立于開發過程、用于軟件開發周期中模型描述的一種建模語言,應用程序通過它可以獲得對另一個應用程序中的對象的訪問,那么也可以認為Rose是獨立于處理過程的,獲得對可重用組件的訪問。特定于工程的開發工具集合中的一個簡單工具,COM對象是一個應用程序暴露出來的可以被其他應用程序共享的對象。事實上,為了支持用戶選擇的開發過程,Rose是以COM組件技術為基礎,或者為了支持與其它開發工具之間的數據交換,其核心是一組基于COM對象的元模型。Rose自然應該具有可擴展性和可適應性,Rose暴露出來的REI對象都是C0M對象。為了支持用戶選擇的開發過程,Rose的擴充接口是按照COM 的標準制定的接口,或者為了支持與其它開發工具之間的數據交換,所以本質上可以將Rose REI看作為Rose中提供訪問模型信息的一個COM服務器,Rose自然應該具有可擴展性和可適應性。圖l表示REI和Rose其它核心組件的關系。Rose REI模型本質上是Rose模型的元模型,通過訪問REI模型類,得到Rational Rose創建的UML模型信息。繼承Rose Object類比較多,如圖2所示。

圖l REI體系結構

圖2 REI模型框架
Rational Rose Scirpt和Rational Rose Automation都可以訪問REI,Rational Rose Automation的功能更強大。使用RoseScirpt可以生成圖表和類,它還可以讀取UML模型的信息。除了前面提到的Rose Scirpt可以實現的操作外,可以更新模型,也可以生成文檔。
轉換表示對象將在第一個狀態中執行一定的動作,狀態圖是展示狀態與狀態轉換的圖。通常,一個狀態圖表示一個狀態機,在某個特定事件發生而某個特定的條件滿足時進入第二個狀態。一個轉換由5部分組成,狀態機由狀態、轉換、事件、活動和動作組成。狀態是指在對象的生命期中滿足某些條件,分別是源狀態、事件、監護條件、動作和目標狀態。在通信領域,執行某些活動或等待某些事件時的一個條件或狀況,狀態圖通常用來描述一個協議。
這個狀態圖一共包括7個狀態和l7條遷移,使用Rational Rose Automation訪問REI類的時候,先得到狀態機中所有的狀態對象,得到所有與這個狀態有關的遷移對象,接著對這些遷移進行分析,然后對每個狀態對象進行分析,得到每個遷移的信息。另外一種方法是基于遷移的,先得到狀態機中所有的遷移對象,然后對每個遷移對象進行分析,得到每個遷移的信息。通過比較可以發現,選擇第二種方法提取信息的效率更高。偽代碼描述如下:


考慮到Visual C++可以很好的支持COM,Rose提供的類庫rationalrose.tlb包含了所有的REI類,因此選擇Visual C++實現來UML模型的提取。必須先調用AfxOlelnit函數對COM對象進行初始化,每個類必須添加Rose這個前綴,載入rationalrose.tlb后,MFC環境提供的Class Wizard可以自動實現添加前綴的功能,然后創建一個Rose自動化對象。
本文主要介紹了一種自動提取UML模型信息的方法,與常規的提取UML模型的方法相比,使用該方法對INRES協議進行了測試,這種方法的優點是是工具自身提供的,因此不會受到版本影響。進一步的工作可以考慮提取由其它建模工具生成的UML模型信息,也可以考慮實現各種建模工具之間的模型信息轉換。
[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]. 北京: 機械工業出版社, 2002: 33-34.
[3]盧冰原, 李龍褚. UML建模技術在智能軟件開發中的應用[J]. 計算機應用研究, 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]邵維忠, 蔣嚴冰, 麻志毅. UML現存的問題和發展道路[J]. 計算機研究與發展, 2003, 40(4): 13-15.
UML model based on COM principle of information extraction technology
SU Zhuo
項目工程的復雜性使得建模工具必須應對可能出現的各種新情況,提出了一種提取UML模型信息的方法。為了保持開發過程的完整性,建模工具必須能適應工程環境的變化,即建模工具必須具有可擴充性以滿足用戶和工程的需要。UML是一種優秀的建模語言,使用UML可以為軟件模型的建立帶來很多方便。在充分分析Rose擴充技術的原理的前提下,論述Rose的擴充方式,同時,為了驗證模型的一致性,有必要將模型信息提取出來,通過一些成熟的算法進行測試。利用Rose提供的基于COM技術的REI,實現了從UML文檔中自動提取用于軟件測試的模型信息。
統一建模語言;組件對象模型;協議
蘇茁(1970-),女,吉林人,副高級工程師,本科,研究方向為信息電力工程。
TG502
B
1009-0134(2011)1(上)-0210-03
10.3969/j.issn.1009-0134.2011.1(上).67
2010-11-30