- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
软件复杂度与SourceMonitor
汇报内容汇报内容一、软件复杂度概述二、圈复杂度介绍三、SourceMonitor
汇报内容汇报内容一、软件复杂度概述二、圈复杂度介绍三、SourceMonitor
成立于1976的McCabeAssociates公司开发出了McCabeCyclomaticComplexityMetric(McCabe圈复杂度)技术对软件进行结构测试。010203041、起源与应用McCabe复杂度是对软件结构进行严格的算术分析得来的,实质上是对程序拓扑结构复杂性的度量,明确指出了任务复杂部分。McCabe复杂度能帮助工程师识别难于测试和维护的模块,已经成为评估软件质量的一个重要标准。McCabe复杂度可以为软件开发过程中平衡成本、进度和性能提供指导。一、软件复杂度概述
McCabe复杂度分类01McCabe复杂度02圈复杂度03基本复杂度04模块设计复杂度05设计复杂度06集成复杂度07行数08全局数据复杂度09局部数据复杂度10病态数据复杂度11规范化复杂度12一、软件复杂度概述
圈复杂度(CyclomaticComplexity(v(G)))概念圈复杂度是用来衡量一个模块判定结构的复杂程度,数量上表现为独立路径的条数。计算方法如果一个模块流程图有e条边n个节点,它的圈复杂度v(G)=e-n+2。v(G)=6-6+2=2一、软件复杂度概述
一、软件复杂度概述(2)基本复杂度(EssentialComplexity(ev(G)))概念基本复杂度用来衡量程序非结构化程度;基本复杂度高意味着程序非结构化程度高,难以理解和模块化,软件质量和可维护性低。计算方法将圈复杂度图中的结构化部分简化成一个点,计算简化以后流程图的圈复杂度就是基本复杂度。应用当基本复杂度为1,这个模块是充分结构化的;当基本复杂度大于1而小于圈复杂度,这个模块是部分结构化的;当基本复杂度等于圈复杂度,这个模块是完全非结构化的。
一、软件复杂度概述(3)模块设计复杂度(ModuleDesignComplexity(iv(G)))概念模块设计复杂度用来衡量模块和其他模块的调用关系。软件模块设计复杂度高意味模块耦合度高,这将导致模块难于隔离、维护和复用。计算方法模块设计复杂度是从模块流程图中移去那些不包含调用子模块的判定和循环结构后得出的圈复杂度模块设计复杂度不能大于圈复杂度,通常是远小于圈复杂度。应用衡量模块对其下层模块的支配作用;衡量一个模块到其子模块进行集成测试的最小数量;定位可能多余的代码;是设计复杂度(S0)和集成复杂度(S1)计算的基础。
一、软件复杂度概述(4)设计复杂度(DesignComplexity(S0))(4)设计复杂度(DesignComplexity(S0))概念设计复杂度以数量来衡量程序模块之间的相互作用关系高设计复杂度的系统意味着系统各部分之间有着复杂的相互关系,这样系统将难以维护。计算方法S0是程序中所有模块设计复杂度之和,计算公式如下:应用提供了系统级模块设计复杂度的概况,不反映独立模块的内部情况;指出一个模块整体的复杂度,反映了每个模块和其内部模块的控制关系;有助于集成复杂度的计算。
一、软件复杂度概述(5)集成复杂度(IntegrationComplexity(S1))概念集成复杂度是为了防止错误所必须进行的集成测试的数量表示,另一种说法是程序中独立线性子树的数目,一棵子树是一个有返回的调用序列。计算方法S1的计算公式:S1=S0-N+1,N是程序中模块的数目应用有助于集成测试的实施;量化集成测试工作且反映了系统设计复杂度;有助于从整体上隔离系统复杂度。
一、软件复杂度概述(6)行数(NumberofLines(nl))概念行数是模块中总的行数,包括代码和注释。优点计算简单;与所用的高级程序设计语言类型无关;指出了模块的行数(即模块的规模),规模小的模块易于理解和维护。
一、软件复杂度概述规范化复杂度(NormalizedComplexity(nv))概念规范化复杂度是圈复杂度除以行数。计算方法nv=v(G)/nl应用定义那些有着显著判定逻辑密度的模块,这些模块相对于其他常见规范模块需要做更多的维护工作。
一、软件复杂度概述全局数据复杂度(GlobalDataComplexity(gdv(G)))概念及应用全局数据复杂度量化了模块结构和全局数据变量的关系说明了模块对外部数据的依赖程度度量了全局数据的测试工作描述了模块之间的耦合关系反映潜在的维护问题需要有McCabeData
一、软件复杂度概述局部数据复杂度(SpecifiedDataComplexity(sdv(G)))概念及应用局部数据复杂度量化了模块结
原创力文档


文档评论(0)