网站大量收购独家精品文档,联系QQ:2885784924

03质量评审学习课件.pptxVIP

  1. 1、本文档共52页,可阅读全部内容。
  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文档。上传文档
查看更多

质量评审设计评审单元测试测试验证测试管理?代码评审质量评审

质量评审特点优点复杂度分析代码评价度量代码结构化化简LCSAJs质量模型

质量评审能力检查多个代码复杂性度量元圈复杂度结点度量LCSAJ控制流(测试路径)识别死代码和不可测试代码提供功能强大的结构化化简工具结构化程序验证将你的代码化简到基本复杂度使用工业标准或自定义质量模型提供边界检查产生定量评估将所有结果总结成顶层的度量指标清晰性/测试性/维护性提供直观的报告和代码可视化工具

复杂性通常检查多余的复杂性是非常困难的程序的复杂性并不可怕,但是多余的复杂性会引起软件出问题

度量元度量元是软件度量的基础,就象“米”是对长度的度量注意度量结果本身并不能直接就反应出质量好坏在质量评审中使用度量源元时,相互的关联是最重要的

质量评审–代码评价度量清晰性系统的可理解性如何可维护性软件的可维护性如何?可测试性对系统进行测试需要多少工作?

复杂度度量控制流结点圈复杂度基本结点和基本圈复杂度循环嵌套函数扇入和扇出不可达性

结点分类跳转分为下列几类:向上(向后)跳转向下(向前)跳转结点根据跳转类型可以分为:下-下结点上-下结点上-上结点153421534215342

引起结点的C结构下列编程结构会引起结点: for while switch可利用基本结点度量消除这些局限性

引起结点的Ada结构下列编程结构会引起结点: IFTHENELSE CASE GOTO Exceptions可利用基本结点度量消除这些局限性

圈复杂度从有向图G,计算圈复杂度V(G): V(G)=No.edges(边数)-No.nodes(节点数)+2这样也正确: V(G)=No.predicates(判定节点数)+1Case结构(有N种选择)是个例外,计算为N–1 V(G)=No.regions(区域数)假如G是个连接的平面图

圈复杂度例子12条边9个节点VG=12-9+2=5145236789123456789101112

圈复杂度例子3个判定结点计算为4case计算为2VG=4+1=53-111

圈复杂度例子5个区域VG=532451

结点和圈复杂度13245此有向图可表示为右边两种程序结构。1452315342V(G)=6-5+2=3V(G)=6-5+2=3Knots=4Knots=1

结点和圈复杂度圈复杂度和结点度量是互补的两个指标总之,程序结构化度量量化了软件的属性圈复杂度用于表明程序复杂性结点度量用于表明程序实施时附加的复杂性

循环的复杂性度量由流程图研究源代码的循环结构用于度量复杂性和代码优化识别循环结构不被源代码结构所影响函数度量:函数入口和出口(扇入扇出)循环总数循环最大深度

C++OO实现类的数目子类的数目每个类的方法继承深度数据成员的数据类外的函数调用其他Chidamber和Kemerer度量

程序结构化验证

程序结构化验证通过匹配程序结构模版执行结构化验证,模版使用源代码基本块的流程图表示使用检查工具自动运行检查下列结构:if-then-endifif-then-else-endifdo-whilewhileforcase可配置成识别其他结构

程序结构化确认由于使用非正确的结构形式,C语言非常容易产生错误:需要switch,case,default和break语句的case语句if-then语句也容易产生错误for循环结构也容易产生错误

SPV建议如果检测到非结构化的代码,这部分代码应该由程序员重新编写,这不包括为了解决某些特殊问题而有意使用的非结构化编程除了允许以修改非结构化程序会带来不必要的复杂为理由以外,建议管理者可以先怀疑任何非结构化编程的使用流程图看起来很混乱,并不总是意味着代码是非结构化的。绘制流程图的算法可能会误导程序是高度复杂的通常程序的非结构化是由于代码内部错误引起的

SPV流程图SPV流程图,图形化地显示设计良好的程序结构中节点的化简过程

代码评审流程图

基本结点度量将所有的结构化的程序结构进行化简后,计算剩余的节点数就得到基本结点度量对于一个结构化的程序:基本结点数=0基本结点是非结构化程序引起的复杂性的度量

基本圈复杂度某些结构化的编程结构会引起很高的圈复杂度这个局限性可用基本度量克服定义:EV(G)=V(G)-M 这里M是有唯一入口和出口节点的子图G的数目对于一个结构化的程序:EV(G)=1

SPV度量总结如果一个模块通过SPV化简之后是结构化的,它有:基本结点为0基本圈复杂度为1非结构化的程序含有很高的基本度量值这两个度量是对代码中存在的结构缺

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档