- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
UML模型到代码的转换
UML模型到代码的转换
Sean
2003/09/04
概述
UML在软件系统中的建模能力和在业界的认可程度是不用怀疑的。我们可以看到,越来越多的软件项目采用UML作为项目的分析设计的表述手段。然而,UML模型作为系统的模型描述最终是要变为各种可以编译运行的代码的。从UML模型到代码的过程,在过去是通过人工来进行翻译的。而现在,这个模型到代码的转换过程都是通过软件工具自动化的完成的。因为在UML的设计之初,就考虑到了模型到代码转化的自动化的问题,所以UML模型本身就是适合自动化过程的。如今,已经有很多UML工具实现了UML模型到代码的转化过程,如Rose, Together,Argo等等。这里给出了一个通用的模型到代码的转换方法,可以实现对UML模型到代码转化的定制。可定制的意义在于,可以为UML模型提供到不同编程语言的代码转换引擎。通常工具提供的有c/c++, Java等常用语言的转换模块。这里以实时嵌入式系统应用的SystemC为例,来定制自己的UML到代码的转换工具。当然可以利用这个转换引擎,实现UML模型到各种语言的转换。
定制化的UML模型到代码的转换工具的意义,不但是可以生成自己的编程语言源码,而且这个转换模块还可以作为UML模型到其它模型描述形式的转换桥梁,比如UML模型的报表,模型审计等。如下图。
图表 1 模型转换引擎所处的位置
转换实现
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开发环境有观的API
com.togethersoft.openapi.rwi 负责处理与UML模型有关的API
com.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代码转换模块集成到T
您可能关注的文档
最近下载
- 规范汉字书写 标点符号用法举例 标点符号用法举例.pptx VIP
- 职业院校技能大赛--Z-30“工程测量”赛项理论考试题库.doc VIP
- 安全员C证考试题库(精练).docx VIP
- 2018年四川省职业院校技能大赛工程测量赛项中职组理论考试题库.docx VIP
- 2020年山东省职业院校技能大赛中职组工程测量赛项理论试题.doc VIP
- 第十六届山东省职业院校技能大赛中职工程测量赛(教师组)理论试题.docx VIP
- 中央八项规定精神专题党课讲座PPT模板.pptx VIP
- 第十六届山东省职业院校技能大赛中职工程测量赛项(学生组)理论试题.docx VIP
- 全频带阻塞干扰刘慈欣小说读书分享PPT.pptx VIP
- 作子女生命的教练.PPT
文档评论(0)