面向源代码软件设计模式自动抽取技术研究.docVIP

面向源代码软件设计模式自动抽取技术研究.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向源代码软件设计模式自动抽取技术研究

面向源代码软件设计模式自动抽取技术研究   【摘要】本文主要研究如何从源代码中自动抽取出设计模式,并研究了相关的技术。论文阐述了自动抽取技术的过程,首先是结构分析,通过分析XMI文档,提取出类的结构特征,接着是动态分析。运用结构分析阶段后将产生一些模式候选项,这些模式候选项是一些由类和方法组成的结构,将作为动态分析的输入,动态分析监控模式候选项的动态执行的情况,得出进一步的结果。论文的结论就是作为抽取设计模式的目的是可以自动(或半自动)抽取任何JAVA程序中的设计模式。   【关键词】设计模式;结构分析;行为分析;XMI   一、引言   设计模式是面向对象设计的一个高级抽象,从程序理解和软件维护的观点出发,一个设计模式提供了模式结构中每个类的角色信息和模式各组成元素的关系以及模式组成元素和系统其余部分关系的信息。因此,源码中设计模式的抽取是逆向工程中的一个关键问题。对于缺少分析和设计文档的软件系统来说,从它的源码中抽取设计模式有助于软件系统的理解和文档化,增强软件系统的可维护性。进一步,能识别软件系统中引入设计模式后可以改进的地方并进行相应的修改,提高了源码质量,从而达到软件重构的目的。   二、技术现状   设计模式比源代码更高层次地描述了软件系统,设计模式也是描述部分设计的一种方式。设计模式是一种表示设计结构的技术,通过掌握设计的思路设计模式保存了设计的关键信息,设计模式定义了类、实例、角色、关系和责任分配,一个好的软件结构可以被快速应用解决问题而不用重新设计,设计模式就是被定义好的常见问题解决方案的抽象设计。当一些情形经常出现时,可以选择设计模式解决相应问题而不用每次都分析问题再想办法解决,例如调停者模式被选择来解决一个特定的设计问题而不用重新设计。选择了设计模式无论做文档还是解释说明都显得更容易,在面向对象开发过程中设计模式起了很多作用[1]:   本文所涉及的设计模式是指Gamma等人在文献[1]中提出的23个通用的设计模式。Gamma等从动机、目的、参与者、协作、应用效果、解决方案几个方面描述设计??式。为了便于软件工程师在实际应用过程中理解、选择和实现设计模式,除解决方案部分外,设计模式的动机、目的、参与者、协作、应用效果等项内容通常以非形式化的方式描述。解决方案部分使用OMT图描述一个通用的设计结构。从源码中抽取设计模式必然要求对其进行描述,采用某种表示方法如PROLOG规则、抽象语法树,约束可满足问题(CSP)的变量和约束条件等,对设计模式所表达的对象结构和行为进行抽象,并将这些设计模式表示存储在便于修改和维护的设计知识库中。   计模式抽取在理论和自动化工具的开发方面的研究都取得了进展,但还存在一些困难和问题,如基于设计模式解法部分的设计模式识别规则的定义多种多样,实现方式各异,没有广泛适用的规范;实际可用的设计模式抽取工具较少,成型的工具大都作为庞大的逆向工程环境的一部分,模块化程度不高;设计模式抽取的结果因设计模式特点、抽取的目标语言和目标系统而差别很大,实际应用困难等。   三、一般基于源代码的设计模式抽取方法的步骤   一般而言,从Java软件中抽取设计模式的过程分解成以下三个步骤:   (1)对设计模式建模和描述,生成设计模式的中间表示模型;   (2)以查找设计模式为目的,分析软件系统的Java代码,抽取源码信息模型;   (3)比较中间模型和信息模型的相似性,从而识别Java代码中的设计模式实例。   四、基于XMI的方法   XML元数据交换(XML Metadata Interchange,XMI)是一种标准,这种标准能够使用可扩展标记语言(Extensible Markup Language,XML)来表达对象,XML也是万维网上表示数据的普遍格式。XMI不仅仅是一套有序的规则,它还与建模标准密切相关,这使得用户可以在XML应用中有效地进行建模操作。XMI2.0详细说明了如何从模型中创建XML模式(schema),而以前的XMI版本则详细说明了如何从模型中创建XML的文档类型定义(Document Type Definition,DTD)。模式与DTD都定义了XML文档的内容。[2]   XMI是创建应用程序所需要的,由于XML不是面向对象的,因此需要将对象映射到XML。由于XML的灵活性,因此可以有多种映射方式。尽管如此,在交换XML文档的时候,这种灵活性也会带来一定问题。如果一个工具利用了一种方法将对象映射到XML,而另一个工具将对象映射到XML却使用了另外一种方法,那么这两种工具就不可能正确地解释对方的XML文档。XMI使用模型来确认对象是共享的。一个使用了XMI的工具能够与使用XMI的其他工具交换对象。   XMI使用了两个相关的标准:可扩展

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档