逆向工程的在类图拆分方法-精品·公开课件.pptVIP

逆向工程的在类图拆分方法-精品·公开课件.ppt

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
谢 谢!! 逆向工程中的大类拆分方法 胡海亮 目 录 1. 研究背景 2. 大类图的拆分方法 3. 实验验证 4. 相关工作 5. 进一步工作 1. 研究背景 软件模型是软件开发与维护中的核心制品,但是, 许多软件系统并没有提供软件模型,缺少软件模型都将使软件维护更加困难.解决缺乏分析设计模型的主要方法之一是通过逆向工程(reverse engineering)从代码生成软件模型,目前, 逆向工程得到的模型多半限于系统的静态模型,其中类图(class diagram) 的使用是逆向工程中最常见的, 也是最有用的模型之一,构成类图的主要成分包括类、属性、操作以及类之间的关系( 继承、聚合、关联、依赖等),虽然类图在逆向工程中获得了较好的支持, 但是目前主流的逆向工具所生成的类图往往过于庞大, 影响类图的阅读和理解,所以, 我们需要某种方法将逆向工程生成的大类图拆分为多个大小合适的小类图, 以提高类图的可读性和可理解性。为了解决逆向工程生成的类图难以阅读和理解的问题, 本文提出了一种将大类图拆分为多个大小合适的紧凑类图的方法. 将紧耦合的类目划分到同一个类图, 而松耦合的类目之间实现分离, 从而控制类图的大小。 2. 大类图的拆分方法 本节首先介绍类目(classifier, 包括类和接口等) 之间的耦合关系. 基于类目间的耦合关系, 本文提出了一种拆分大类图的方法。 2.1 逆向工程生成类图 类图是展现系统静态结构的主要视图. 主要元素包括类目( 类和接口) 以及类目间的关系( 关联、依赖、继承、组合、聚合),其中逆向工程工具通常不区分组合和聚合这两种关系, 统一表示为聚合关系, 所以本文也将聚合和组合统一表示为聚合。基于以上分析, 可以将逆向工程生成的类图表示为 : 2.2 耦合 耦合是软件度量中的一个重要概念,定义为“ 模块间关联强度的度量”为了度量面向对象系统的耦合关系, 人们已经提出了大量的度量指标及度量框架, 比如对象间耦合(coupling between objects,简称CBO)、消息传递耦合(message passing coupling, 简称MPC)、数据抽象耦(data abstraction coupling, 简称DAC)等。 CBO的定义为“ 类的CBO是与该类具有耦合关系的类的个数”, CBO 越大, 该类与周围环境的关系就越紧密。 CBO的形式定义为 : MPC 用于表征某个类的实现对其他类的方法的依赖程度。考虑类图中各种关系的受关注程度, 类目间的关系( 继承、聚合、关联和依赖) 在划分类图中的影响力从高到低依次为继承、聚合( 组合) 、关联、依赖为便于类图的拆分, 定义类目间耦合如下: 这里将继承、聚合、关联和依赖对类图拆分的影响因子进行量化, 其因子依次递减. 以8,4,2,1。 2.3 类图的拆分算法 拆分算法基于第2.2节的耦合关系, 将强耦合的类放入同一个类图, 同时分离耦合度较低的类. 这种拆分方法符合面向对象设计中的高内聚、低耦合的设计原则。 拆分算法的流程如图1所示. 其中, 迭代部分的详细流程描述如图2 所示, 类图中的每个类目均需要一次迭代过程. 最后零散类目的处理流程如图3所示。 图 1 拆分算法流程示意图 具体的算法过程详细解释如下: 首先计算每对类目之间的耦合强度. 现有的软件度量工具可以自动收集并统计类及接口之间的耦合强度.同时统计每个类及接口的CBO以便作为后续迭代的排序依据。 按照CBO从高到低对待拆分类图中的类和接口进行排序.CBO 度量某个类与周围环境的耦合广度.CBO越高, 表示有越多的类目与该类具有耦合关系, 所以, 以该类为起点, 根据耦合度选出合适子类图的可能性就 越大。 将类图中的所有类目的“ 已分配” 标志位标记为“ false ”.“已分配”标志用于指明类目是否已经出现在某个新创建的小类图中. 在开始拆分大类图之前, 所有类目的标记位都应该为“ false ”。 图 2 迭代处理流程示意图 依照CBO从大到小的顺序依次对每个类目( 类或接口) vur 进行如下迭代处理( 迭代流程如图2 所示): (1) 创建新类图. 创建新类图S ={},{} 表示S 为不包含任何元素的空类图. (2) 放入当前类目. 将当前处理的类( 或接口) vcur 加入类图S , S ={vcur}. (3) 扩展类图. 选出与类图S 耦合关系最强

文档评论(0)

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

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

1亿VIP精品文档

相关文档