欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    复杂度与SourceMonit.ppt

    • 资源ID:75109605       资源大小:3.47MB        全文页数:45页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    复杂度与SourceMonit.ppt

    第2页汇汇报报内内容容一、软件复杂度概述一、软件复杂度概述二、圈复杂度介绍二、圈复杂度介绍 三、三、SourceMonitor汇汇报报内内容容一、软件复杂度概述一、软件复杂度概述二、圈复杂度介绍二、圈复杂度介绍 三、三、SourceMonitor1、起源与应用l成立于1976的McCabe&Associates公司开发出了McCabe CyclomaticComplexityMetric(McCabe圈复杂度)技术对软件进行结构测试。lMcCabe复杂度是对软件结构进行严格的算术分析得来的,实质上是对程序拓扑结构复杂性的度量,明确指出了任务复杂部分。lMcCabe复杂度能帮助工程师识别难于测试和维护的模块,已经成为评估软件质量的一个重要标准。lMcCabe复杂度可以为软件开发过程中平衡成本、进度和性能提供指导。2、McCabe复杂度分类McCabe复杂度复杂度圈复杂度基本复杂度模块设计复杂度设计复杂度集成复杂度行数全局数据复杂度局部数据复杂度病态数据复杂度规范化复杂度(1)圈复杂度(CyclomaticComplexity(v(G))l概念圈复杂度是用来衡量一个模块判定结构的复杂程度,数量上表现为独立路径的条数。l计算方法如果一个模块流程图有e条边n个节点,它的圈复杂度v(G)=e-n+2。v(G)=6-6+2=2123456(2)基本复杂度(EssentialComplexity(ev(G))l概念基本复杂度用来衡量程序非结构化程度;基本复杂度高意味着程序非结构化程度高,难以理解和模块化,软件质量和可维护性低。l计算方法将圈复杂度图中的结构化部分简化成一个点,计算简化以后流程图的圈复杂度就是基本复杂度。l应用当基本复杂度为1,这个模块是充分结构化的;当基本复杂度大于1而小于圈复杂度,这个模块是部分结构化的;当基本复杂度等于圈复杂度,这个模块是完全非结构化的。(3)模块设计复杂度(ModuleDesignComplexity(iv(G))l概念模块设计复杂度用来衡量模块和其他模块的调用关系。软件模块设计复杂度高意味模块耦合度高,这将导致模块难于隔离、维护和复用。l计算方法模块设计复杂度是从模块流程图中移去那些不包含调用子模块的判定和循环结构后得出的圈复杂度模块设计复杂度不能大于圈复杂度,通常是远小于圈复杂度。l应用衡量模块对其下层模块的支配作用;衡量一个模块到其子模块进行集成测试的最小数量;定位可能多余的代码;是设计复杂度(S0)和集成复杂度(S1)计算的基础。(4)设计复杂度(DesignComplexity(S0))l概念设计复杂度以数量来衡量程序模块之间的相互作用关系高设计复杂度的系统意味着系统各部分之间有着复杂的相互关系,这样系统将难以维护。l计算方法S0是程序中所有模块设计复杂度之和,计算公式如下:l应用提供了系统级模块设计复杂度的概况,不反映独立模块的内部情况;指出一个模块整体的复杂度,反映了每个模块和其内部模块的控制关系;有助于集成复杂度的计算。(5)集成复杂度(IntegrationComplexity(S1))l概念集成复杂度是为了防止错误所必须进行的集成测试的数量表示,另一种说法是程序中独立线性子树的数目,一棵子树是一个有返回的调用序列。l计算方法S1的计算公式:S1=S0-N+1,N是程序中模块的数目l应用有助于集成测试的实施;量化集成测试工作且反映了系统设计复杂度;有助于从整体上隔离系统复杂度。(6)行数(NumberofLines(nl))l概念行数是模块中总的行数,包括代码和注释。l优点计算简单;与所用的高级程序设计语言类型无关;指出了模块的行数(即模块的规模),规模小的模块易于理解和维护。(7)规范化复杂度(NormalizedComplexity(nv))l概念规范化复杂度是圈复杂度除以行数。l计算方法nv=v(G)/nll应用定义那些有着显著判定逻辑密度的模块,这些模块相对于其他常见规范模块需要做更多的维护工作。(8)全局数据复杂度(GlobalDataComplexity(gdv(G))l概念及应用全局数据复杂度量化了模块结构和全局数据变量的关系说明了模块对外部数据的依赖程度度量了全局数据的测试工作描述了模块之间的耦合关系反映潜在的维护问题需要有McCabeData(9)局部数据复杂度(SpecifiedDataComplexity(sdv(G))l概念及应用局部数据复杂度量化了模块结构和用户局部数据变量的关系度量了局部数据的测试工作量化了每个模块中相应数据对模块控制结构的影响需有McCabeData(10)病态数据复杂度(PathologicalComplexity(pv(G))l概念病态数据复杂度衡量一个模块包含的完全非结构化成份的程度,标出向循环内部跳入的问题代码,而这些部分具有最大的风险度,通常需要重新设计。l计算方法所有的非结构部分除去向循环内跳入的结构,转化为线结构,病态复杂度就等于简化以后流程图的圈复杂度。l优点与所用的高级程序设计语言类型无关;指出了可靠性的问题,降低了维护风险;帮助识别极不可靠的软件。3、McCabe复杂度用途l(1)作为测试的辅助工具McCabe复杂性度量的结果等于完整覆盖测试的测试用例个数。l(2)作为程序设计和管理指南在软件开发过程中,提供一种简单的方式指出可能出问题的子程序。注意,McCabe度量数大的程序,不见得结构化就不好。l(3)作为网络复杂性度量的一种方法Hall和Preiser提出了一种组合网络复杂性度量方法,用于度量由多个程序按模块化原理建立的大型软件系统的复杂性。公式如下:式中C1,.,Ck是各个模块的复杂性;CN是网络复杂性;W1和W2为权值汇汇报报内内容容二、圈复杂度介绍二、圈复杂度介绍 一、软件复杂度概述一、软件复杂度概述 三、三、SourceMonitor1、概念l圈复杂度(CyclomaticComplexity(v(G))是用来衡量一个模块判定结构的复杂程度,数量上表现为独立路径的条数,即合理的预防错误所需测试的最少路径条数。l圈复杂度度量以软件的控制流图为基础。l经验表明,程序的可能错误和高的圈复杂度有着很大关系,McCabe&Associates建议圈复杂度到10。l过于复杂的模块容易出错,难于理解、测试、更正,所以应当在软件开发的各个阶段有意识地限制复杂度。2、计算方法一l圈复杂度计算公式1:v(G)=e-n+2。l其中,e为控制流图的边数,n为控制流图的节点数。v(G)=10-10+2=2123456798103、计算方法二l圈复杂度计算公式2:v(G)=判定节点数+1。l对于多分支的CASE结构或IF-ELSEIF-ELSE结构,要求必须统计全部实际的判定节点数,也即每个ELSEIF语句,以及每个CASE语句,都应该算为一个判定节点。v(G)=1+1=24、计算方法三l圈复杂度计算公式3:v(G)=R。l其中,R代表平面被控制流图划分成的区域数。12345v(G)=R=512345678910v(G)=10-7+2=55、计算方法总结l针对程序的控制流图计算圈复杂度V(G)时,最好还是采用公式v(G)=e-n+2;l针对模块的控制流图时,可以直接统计判定节点数,这样更为简单;l针对复杂的控制流图时,使用区域计算公式v(G)=R更为简单。6、示例intfoo(boolisOK)constintZERO=0;int*pInt=NULL;if(isOk)pInt=&ZERO;return*pInt;l如果仅仅测试一种情况:foo(true);结果是,测试通过,并具有100%的代码覆盖率。但我们知道foo(false);就会失败。l以上foo()的v(G)为2,所以至少需要2个单元测试路径。12124357、优点l指出极复杂模块,这样的模块也许可以进一步细化;l在开发过程中通过限制程序逻辑,降低出错几率;l帮助测试人员确定测试和维护对象;l度量测试计划,确定测试重点和测试区域;l与所用的高级程序设计语言类型无关。8、降低圈复杂度的方法重构l概念重构(Refactoring)就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。l重构方法重复代码或者相似代码提取为一个新的方法将过长的方法按功能拆分成小的方法将过大类的功能拆分成多个功能单一的小类l推荐书籍重构改善既有代码的设计作者:MartinFowler书中列出了长达70条的重构名录,提供了具体重构的方法和重构的技巧。将帮助开发人员一次一小步地修改代码,减少了开发过程中的风险。汇汇报报内内容容三、三、SourceMonitor 一、软件复杂度概述一、软件复杂度概述 二、圈复杂度介绍二、圈复杂度介绍 1、基本介绍l软件大小:3.86MBl软件语言:英文l软件类别:国外软件/编程工具l应用平台:Win2003/XP/2000/9Xl技术支持:l功能简介:利用SourceMonitor可以为C+、C、C#、Java、Delphi、VisualBasic和HTML的源代码文件测试代码数量和性能,最终结果可以描绘成图、输出打印2、主界面3、功能介绍l度量、记录和显示代码质量指标(metrics)metrics:代码行数、注释行数、分支比例、注释比例、类定义个数、方法个数/类、平均语句数/方法、最大复杂度、最大调用深度、平均复杂度、函数个数显示形式:数据、KiviatGraph、BlockHistograml提取代码复杂度信息,为代码重构提供指导l提示代码安全隐患,将问题解决在开发阶段l提高程序员代码质量和工作效率4、软件使用l(1)新建工程选择语言4、软件使用l(2)新建工程选择代码4、软件使用l(3)新建工程工程命名4、软件使用l(4)新建工程选择工程目录4、软件使用l(5)新建工程检查点命名4、软件使用l(6)新建工程新建工程完成4、软件使用l(7)导入代码4、软件使用l(8)检查代码工程视图4、软件使用l(9)检查代码检查点视图4、软件使用l(10)检查代码方法视图4、软件使用l(11)检查代码细节视图检查点细节视图4、软件使用l(12)检查代码细节视图文件细节视图4、软件使用l(13)检查代码图表视图工程历史图表4、软件使用l(14)检查代码图表视图频率图4、软件使用l(15)检查代码图表视图Kiviat图5、工程示例l以NC源程序为例,介绍SourceMonitor软件的使用。

    注意事项

    本文(复杂度与SourceMonit.ppt)为本站会员(wuy****n92)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开