基于COM原理的UML模型信息提取技术的探讨
2011-05-11苏茁
苏 茁
(内蒙古电力勘测设计院,呼和浩特 010020 )
基于COM原理的UML模型信息提取技术的探讨
苏 茁
(内蒙古电力勘测设计院,呼和浩特 010020 )
当今世界经济的发展已经步入知识经济时代,普遍认为软件产业已经成为突出体现技术和产品高附加值的产业,信息产业已经成为国民经济的基础产业、支柱产业和先导产业,投资回报率最高的产业之一,都是未来最具活力和前景的产业,其发展水平成为衡量一个国家现代水平与综合国力的重要标志。软件产业是信息产业的基础和核心,它对推动国民经济发展具有重大意义。在当今软件开发产业中,统一建模语言(UML,Un fi red Modeling Language) 是一种功能强大的、面向对象的可视化系统分析的建模语言,在建模中发挥着重要作用。它规范了软件开发过程,不少采用RUP开发模式的软件企业将UML作为分析和设计建模的首选工具。统一建模语言UML严格了软件开发流程,统一了开发方法,是面向对象软件测试的重要依据。使得大规模的软件开发效率成倍提高,质量有了很大的飞跃。
目前在建模工具中以Rational公司开发的Rose是基于UML的建模工具的功能最为完善,具有强大的功能和良好的可扩展性,它把UML和谐地集成进面向对象的软件开发过程中。因此,可以选择Rose作为软件开发和软件测试的工具,不论是在系统需求阶段,为了实现软件测试的自动化,还是在对象的分析与设计、软件的实现与测试阶段,使用一些成熟的算法进行测试,它都提供了清晰的表达方法和完善的工具,通过一定的方法将该文件中的UML信息提取出来,方便建立起相应的软件模型。
1 UML模型信息提取分析
常规的提取UML模型信息为UML设计了一个词法语法分析器,通过对UML文档的词法语法分析,是检索系统的一个非常重要的性能指标。对于不同版本的Rose,实现了从UML文档中自动提取用于软件测试的信息。这种方法优点是:即使操作者的电脑上未安装Rose工具,由于语法分析器设计时只针对特定版本,可以通过更加方便的方法实现模型信息的提取,只要有mdl文件就可以对文件中的模型信息进行提取。因此,需要制作不同的语法分析器。那就是利用Rose的可扩展性。
2 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模型框架
3 UML模型信息提取器实现
Rational Rose Scirpt和Rational Rose Automation都可以访问REI,Rational Rose Automation的功能更强大。使用RoseScirpt可以生成图表和类,它还可以读取UML模型的信息。除了前面提到的Rose Scirpt可以实现的操作外,可以更新模型,也可以生成文档。
转换表示对象将在第一个状态中执行一定的动作,状态图是展示状态与状态转换的图。通常,一个状态图表示一个状态机,在某个特定事件发生而某个特定的条件满足时进入第二个状态。一个转换由5部分组成,状态机由状态、转换、事件、活动和动作组成。状态是指在对象的生命期中满足某些条件,分别是源状态、事件、监护条件、动作和目标状态。在通信领域,执行某些活动或等待某些事件时的一个条件或状况,状态图通常用来描述一个协议。
这个状态图一共包括7个状态和l7条迁移,使用Rational Rose Automation访问REI类的时候,先得到状态机中所有的状态对象,得到所有与这个状态有关的迁移对象,接着对这些迁移进行分析,然后对每个状态对象进行分析,得到每个迁移的信息。另外一种方法是基于迁移的,先得到状态机中所有的迁移对象,然后对每个迁移对象进行分析,得到每个迁移的信息。通过比较可以发现,选择第二种方法提取信息的效率更高。伪代码描述如下:
4 UML模型信息提取器仿真
考虑到Visual C++可以很好的支持COM,Rose提供的类库rationalrose.tlb包含了所有的REI类,因此选择Visual C++实现来UML模型的提取。必须先调用AfxOlelnit函数对COM对象进行初始化,每个类必须添加Rose这个前缀,载入rationalrose.tlb后,MFC环境提供的Class Wizard可以自动实现添加前缀的功能,然后创建一个Rose自动化对象。
5 结束语
本文主要介绍了一种自动提取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