一个面向对象软件质量缺陷辅助检测工具的设计与实现.ppt_第1页
一个面向对象软件质量缺陷辅助检测工具的设计与实现.ppt_第2页
一个面向对象软件质量缺陷辅助检测工具的设计与实现.ppt_第3页
一个面向对象软件质量缺陷辅助检测工具的设计与实现.ppt_第4页
一个面向对象软件质量缺陷辅助检测工具的设计与实现.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

答辩报告,一个面向对象软件质量缺陷辅助检测工具的设计与实现,目录,问题提出本文的解决方案系统的设计与实现实例分析结束语,预防性维护的困难,现有软件的维护可能占一个开发组织所有工作量的60%以上。预防性维护是其中的重点和难点,包括码结构调整、代码优化和文档更新。预防性维护的困难:适应性维护、完善性维护和纠正性维护都会带来预防性维护。代码经过多次修改维护,复杂性高,程序难以理解。软件在设计时对将来的软件修改都没有考虑或考虑不多,特别是模块独立性等。,设计模式和经验规则,设计实践中总结出了一些设计模式、经验规则等实践经验的总结。首先是Gamma等四人在95年提出了设计模式的概念,他们从一些好的设计中提炼出了好的程序需要满足的设计模式。第二年,Riel从他多年的工作中,总结了60条面向对象设计中的指导原则。1999年Fowler在对现有代码进行改善的设计中,他提出了根据“代码中的坏味道”(BadSmellinCode)来发现代码中的问题,并针对这些问题提出了代码重构的方法。2003年又有人提出反模式(Dudney),反模式是采用与设计模式相同的形式来描述不恰当的实践做法。它为查找实践中的不良设计提供了更好的依据。,质量缺陷,如果设计实体背离了从良好设计实践中总结出的设计准则集,则称这些实体存在质量缺陷。“设计实体”。指要所分析的软件系统,包括软件系统中的方法、类、包等,也指互相影响的多个不同类型的、相互关联的实体,称为设计实体“簇”。“从良好设计实践中抽象出来的准则集”。这个界定将类似bugs这样的错误排除在质量检测之外。“背离了给定的准则集”。为我们使用度量的方法来进行缺陷检测提供依据。每个准则都要反映在具体的、特定范例的设计规则和指南中;这些具体的规则也可以进行量化处理,用度量进行缺陷检测。,度量工具的现状,有许多工作将度量应用于面向对象系统的设计质量的改进和评价,如一些度量指标。仍然存在一些问题:度量的目标不同。面向对象的度量(Shimba,Chidamber等的工具)对类属性、继承的体系结构、类之间的交互等属性进行度量;在逆向工程过程的初始阶段理解软件系统的结构、发现问题(CodeCrawler);仅仅提供各种面向对象的度量结果(UnderstandJava)以便用户使用;预测可能存在的缺陷跟哪些度量属性相关,例如OODMS。度量的对象不同。OODMS针对软件设计视图。度量结果的解释。度量值本身很难提高软件产品的质量,即使能够说明程序中可能存在问题(例如,复杂性的系数过高),也不能提供直接的方法来改进。,我们的工作,辅助预防性维护工作。软件质量缺陷跟度量结合在一起。具体方法是,针对要检测的具体缺陷,制订出检测规则,利用度量工具,找出系统中可能存在缺陷的地方,再对可能的缺陷进行检验,然后对现有的面向对象系统进行改进。设计并实现了质量缺陷辅助检测工具。基本面向对象度量。缺陷检测。检测规则的调整以及用户定义检测规则。,目录,问题提出本文的解决方案系统的设计与实现实例分析结束语,OO程序质量缺陷检测过程,抽取(或预处理)。根据度量活动,从源代码中抽取相关的数据。定义计算。根据目标,定义度量和相关的度量计算方式。,解释(预测可能存在缺陷的实体)。这个解释是基于特定度量解释模型。质量缺陷检测引擎。这个是质量检测的一个核心,它将经验规则解释为我们的检测规则,下面仔细介绍。结果的验证。对于度量检测出的可能存在质量缺陷的实体,必须在开始的源代码中手工确认。,缺陷检测引擎,如何解释单个度量结果?不同的数据过滤方法,具体的选择过滤的方法。如何将多个度量结果关联起来解释?合成。如何将具体的研究目标转化为检测规则,即检测规则的描述?从现有的经验规则和设计模式中总结可以量化的度量属性并进行评价。,使用自顶向下的质量缺陷检测引擎。它要写出规则的表达,根据这个规则可以检测出源代码中有质量缺陷的设计片断。主要完成下面几个工作:,数据过滤,数据过滤是根据特定的度量目标,从原始的度量结果集中抽取出数据子集的方法(一组操作)。选择数据过滤的规则规则1:明确提到实现的阈值时,使用绝对语义过滤。规则2:当设计规则根据模糊的边界值来定义时,例如“最高/最低值”或者“较高/较低值”时,使用相对语义过滤。规则3:大型系统,使用百分率值来参数化相对语义过滤;小系统,相对语义绝对参数。规则4:在设计经验规则说需要极值,而没有说明任何特殊的阈值时,选择使用统计过滤。,合成,合成:支持多个结果集之间的相关性解释,不同的度量结合在一起的一系列操作。我们使用3个合成:and、or和butnot。例:数据类(考虑公共属性和私有属性数量),缺陷检测规则的制订,检测规则就是要对设计相关的规则进行描述,然后要用量化的方法进行表达,写出可以用于检测的规则。上面是万能类的例子。根据这个方法,我们识别出其他的一些质量缺陷。,目录,问题提出本文的解决方案系统的设计与实现实例分析结束语,面向对象质量缺陷检测工具的体系结构,度量计算,检测规则定义质量缺陷检测引擎,预处理利用元模型进行信息抽取,缺陷验证、缺陷修改、度量显示,源文件,相关数据数据库,度量定义,度量计算,度量信息库,度量分析器,度量检测,检验候选项,检测目标,有缺陷的实体,改进措施,预处理,从Java程序模型中抽取出度量活动相关的设计信息,并将这些信息存储到数据库中。元模型使用关系数据库来表示。,利用eclipse的JDT读取程序信息,工具做成eclipse上的插件,因此可以利用eclipse提供的一些功能(JDT)直接抽取程序信息,将工作集中在度量上。下面是利用JDT来抽取相关信息的代码片断,例如抽取类中导入外部包的代码片断,缺陷检测模块,计算统计基本度量属性,转化为数据库查询。缺陷检测转化为基本度量属性的查询。例如前面的对万能类的检测就可以转化为查询。剩下的工作就是数据库的读写部分。,用户交互和检测结果的显示,系统功能度量选择菜单,用户交互和检测结果的显示,显示基本的度量属性结果显示可能存在缺陷的实体,系统功能(续),用户可以修改度量过滤的阈值用户构造缺陷检测(结果中继续查询),问题提出本文的解决方案系统的设计与实现实例分析结束语,目录,实例分析,针对本工具进行分析。进行了各项质量缺陷度量。发现一个万能类:JavaClass.java可能存在其他缺陷。,目录,问题提出本文的解决方案系统的设计与实现实例分析结束语,结束语,工作总结面向对象质量缺陷检测引擎。针对每个具体的质量缺陷,根据经验规则将它们量化为检测目标,过滤和合成,找出可能存在缺陷的设计片断。并提供对质量缺陷的解释以及维护的方法。工具:基于eclipse平台的插件,与平台上的其他插件一起使用,帮助检测软件质量缺陷。未来工作展望这只是一个原型系统。阈值的设定、度量属性研究、缺陷规则的制订。虽然有四条参照准则,但是还需进一步精确;类的复杂性,类中方法数量McCabe圈法;使用反模式。用户自定义检测的实现。识别更多的质量缺陷,制订更多的缺陷检测规则。加强图形化显示。缺陷检测工具与其他工具的集成,即与小组的其他工具结合起来,例如,类的继承关系图、类图等。,谢谢!,我们识别的常见质量缺陷,返回,例万能类的缺陷识别,OOD中的设计规则:功能应该均衡地分配在顶层的类中。缺陷:某些类集中了系统的大部分功能,只是将一些小细节交给一些不重要的类,大量使用其他类的数据。缺点:管理复杂性的原则、缺乏内聚性、对复用和理解都有极大的影响。具体设计参考了Fowler的大类bad-smell策略:读写了许多“轻量”类(直接地或者通过accessor方法)中的许多数据;有许多非通讯行为。,下一页,例万能类的缺陷识别,度量外部数据的读写(ATFD):给定类直接或者通过accessor方法间接地读写外外部类的属性,这些外部类的数量。类的ATFD值越高,类是万能类的可能性越高。但是Inner类和super类不能计算在内。带权的方法数(WMC):类的所有方法的静态复杂度总和。如果这个复杂度是1,那么WMC就是方法数(NOM)。推荐用McCabe圈度量来量化方法复杂

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论