全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UML模型到代码的转换Sean2003/09/041 概述UML在软件系统中的建模能力和在业界的认可程度是不用怀疑的。我们可以看到,越来越多的软件项目采用UML作为项目的分析设计的表述手段。然而,UML模型作为系统的模型描述最终是要变为各种可以编译运行的代码的。从UML模型到代码的过程,在过去是通过人工来进行翻译的。而现在,这个模型到代码的转换过程都是通过软件工具自动化的完成的。因为在UML的设计之初,就考虑到了模型到代码转化的自动化的问题,所以UML模型本身就是适合自动化过程的。如今,已经有很多UML工具实现了UML模型到代码的转化过程,如Rose, Together,Argo等等。这里给出了一个通用的模型到代码的转换方法,可以实现对UML模型到代码转化的定制。可定制的意义在于,可以为UML模型提供到不同编程语言的代码转换引擎。通常工具提供的有c/c+, Java等常用语言的转换模块。这里以实时嵌入式系统应用的SystemC为例,来定制自己的UML到代码的转换工具。当然可以利用这个转换引擎,实现UML模型到各种语言的转换。定制化的UML模型到代码的转换工具的意义,不但是可以生成自己的编程语言源码,而且这个转换模块还可以作为UML模型到其它模型描述形式的转换桥梁,比如UML模型的报表,模型审计等。如下图。图表 1 模型转换引擎所处的位置2 转换实现2.1 工具的选择作为UML模型的描述标准有OMG标准化组织的XMI。各种UML建模开发工具也都支持从UML内部元模型到XMI的转换工作。比如Rose通过插件的形式支持XMI格式的输出,Together也支持XMI格式的数据,Argo本身就是以XMI的格式为模型的保存格式的。XMI是一种XML的描述形式,虽然XML形式的表述在JDOM等XML解析器的支持下已经提供了方便的可编程性,但是由于JDOM等XML解析器只是通用的XML处理软件包,对于XMI的处理是有一定的差距的,在编程上比较麻烦。为此俄国人做了一个XMI的java版本的处理软件包,为UML的模型处理提供了方便。在sourceforge上也可以看到基于这个开发包的XMI生成代码的开源项目。利用XMI是一个好的未来方向,但是现有的阶段各个UML开发工具对XMI的格式显现各有不同,比如togeher导出的XMI文档到Rose中以后模型描述会有所不同。这样就阻碍了实用性。当然随着XMI的发展和各个工具厂商的支持,从XMI来处理模型的方式是一个完美的解决。如果可以作到XMI的标准化,那么代码转换引擎就可以真正做到与UML绘制工具的无关性。先有阶段选择Together作为UML的绘制工具,通过Together的开放API来操作Together中的UML模型,最为模型转换的数据元。由于Together的API是java语言的接口,所以转换引擎选用Java作为开发语言,这样可以更好的与Together实现无缝的集成。模型到代码的转换完全可以通过手工编码的方式来完成这个转换的工作。为了提高转换模块的灵活性和通用性。有几种技术方案可以选择。一个是jsp技术,一个是模板技术。这两中方式都是动态文本文件的产生技术,他们各有个的优势。从方便性上来说更倾向模板的方式。因为jsp要有jsp/servlet的执行容器才可以工作。这里选择Apache的Velocity模板引擎。2.2 模块实现2.2.1 UML模型的获得Together为我们提供了开放API,可以用来操作整个Together的开发环境包括其中的模型。以下是开放API的开发包:com.togethersoft.openapi.ide负责处理与Together开发环境有观的APIcom.togethersoft.openapi.rwi负责处理与UML模型有关的APIcom.togethersoft.openapi.sci 负责处理与代码编辑器有关的API通过正三方面的API开发包,可以完成对Together的全面控制,当然包括模型。Together自己也是通过相同的模块插件方式来实现功能扩张的。下面是代码实现。图表 2 获得UML模型代码样例2.2.2 SystemC模板编写详细的Velocity可以参考Velocity的开发手册。Velocity为动态生成文本文件提供了一个工作引擎。在Velocity模板中可以访问传入模板的java对象。这个转换模块就是接受模型对象scModle把模型数据传递给Velocity,再通过Velocity引擎把模型展开为SystemC代码。下面是SystemC的模板代码实例。图表 3 SystemC模板2.2.3 集成利用Together的开放API把SystemC代码转换模块集成到Together的开发环境。成为Together中的一个服务插件。图表 4把转换模块集成到Together环境2.2.4 转换模块模型转换模块模型如下图。Uml2SysC是转换引擎工作类,负责提取模型,收集模型数据,生成ScModule对象表现的模型数据,在把ScModule对象传递给Velocity模板引擎。图表 5 转换模块模型3 总结通过这个UML到代码的转换引擎,成功的实现了把Together中的UML模型转换为SystemC的工作。通过这个转换模块的工作原理,可以实现各种UML模型的自动化的转换工作。可以提供各种通用工具没有提供的编程语言转换能力,可以提供自定义UML模板的转换工作,等等与UML模型到其它表现形式的自动转换工作。参考文献http:/jaka
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025宁波宁海县总工会公开招聘工会社会工作者3人备考题库含答案详解(培优b卷)
- 2025广西百色靖西市消防救援大队政府专职消防员招聘10人备考题库附答案详解(典型题)
- 2026福建省面向北京大学选调生选拔工作备考题库含答案详解(轻巧夺冠)
- 2025广西北海市产业园区改革发展办公室招录公益性岗位人员1人参考笔试试题及答案解析
- 2025辽宁沈阳市大东区招聘社区工作者63人备考题库及答案详解1套
- 2025年甘肃省张掖市高台县招聘社区工作者备考题库参考答案详解
- 陕西省2026年事业编考试笔试考试参考试题及答案解析
- 2025河北廊坊香河县公安局招聘警务辅助人员80人备考题库及参考答案详解1套
- 中共广安市广安区肖溪镇纪律检查委员会选用2名片区纪检监督员的备考题库附答案详解(a卷)
- 中共南充市委社会工作部关于公开招聘南充市新兴领域党建工作专员的备考题库(6人)及答案详解(夺冠)
- 自然拼读qu组合课件
- 2025年考研法硕(非法学)真题含答案解析
- 森林保护期末复习题
- 文物复仿制合同协议
- 2025年人工智能伦理道德知识考试试题及答案
- 2025年CNC技能考核表表格
- 灵巧手的历史、技术路线、典型代表和设计
- 2025年营养师营养指导员专业技能及理论知识考试题库附含答案
- 第十单元快乐每一天第20课把握情绪主旋律【我的情绪我做主:玩转情绪主旋律】课件+2025-2026学年北师大版(2015)心理健康七年级全一册
- 安全系统工程课程设计
- 践行社会主义核心价值观主题班会教案
评论
0/150
提交评论