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