复杂度与SourceMonit.ppt
《复杂度与SourceMonit.ppt》由会员分享,可在线阅读,更多相关《复杂度与SourceMonit.ppt(45页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第2页汇汇报报内内容容一、软件复杂度概述一、软件复杂度概述二、圈复杂度介绍二、圈复杂度介绍 三、三、SourceMonitor汇汇报报内内容容一、软件复杂度概述一、软件复杂度概述二、圈复杂度介绍二、圈复杂度介绍 三、三、SourceMonitor1、起源与应用l成立于1976的McCabe&Associates公司开发出了McCabe CyclomaticComplexityMetric(McCabe圈复杂度)技术对软件进行结构测试。lMcCabe复杂度是对软件结构进行严格的算术分析得来的,实质上是对程序拓扑结构复杂性的度量,明确指出了任务复杂部分。lMcCabe复杂度能帮助工程师识别难于测试
2、和维护的模块,已经成为评估软件质量的一个重要标准。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
3、(ev(G))l概念基本复杂度用来衡量程序非结构化程度;基本复杂度高意味着程序非结构化程度高,难以理解和模块化,软件质量和可维护性低。l计算方法将圈复杂度图中的结构化部分简化成一个点,计算简化以后流程图的圈复杂度就是基本复杂度。l应用当基本复杂度为1,这个模块是充分结构化的;当基本复杂度大于1而小于圈复杂度,这个模块是部分结构化的;当基本复杂度等于圈复杂度,这个模块是完全非结构化的。(3)模块设计复杂度(ModuleDesignComplexity(iv(G))l概念模块设计复杂度用来衡量模块和其他模块的调用关系。软件模块设计复杂度高意味模块耦合度高,这将导致模块难于隔离、维护和复用。l计算方
4、法模块设计复杂度是从模块流程图中移去那些不包含调用子模块的判定和循环结构后得出的圈复杂度模块设计复杂度不能大于圈复杂度,通常是远小于圈复杂度。l应用衡量模块对其下层模块的支配作用;衡量一个模块到其子模块进行集成测试的最小数量;定位可能多余的代码;是设计复杂度(S0)和集成复杂度(S1)计算的基础。(4)设计复杂度(DesignComplexity(S0))l概念设计复杂度以数量来衡量程序模块之间的相互作用关系高设计复杂度的系统意味着系统各部分之间有着复杂的相互关系,这样系统将难以维护。l计算方法S0是程序中所有模块设计复杂度之和,计算公式如下:l应用提供了系统级模块设计复杂度的概况,不反映独立
5、模块的内部情况;指出一个模块整体的复杂度,反映了每个模块和其内部模块的控制关系;有助于集成复杂度的计算。(5)集成复杂度(IntegrationComplexity(S1))l概念集成复杂度是为了防止错误所必须进行的集成测试的数量表示,另一种说法是程序中独立线性子树的数目,一棵子树是一个有返回的调用序列。l计算方法S1的计算公式:S1=S0-N+1,N是程序中模块的数目l应用有助于集成测试的实施;量化集成测试工作且反映了系统设计复杂度;有助于从整体上隔离系统复杂度。(6)行数(NumberofLines(nl))l概念行数是模块中总的行数,包括代码和注释。l优点计算简单;与所用的高级程序设计语
6、言类型无关;指出了模块的行数(即模块的规模),规模小的模块易于理解和维护。(7)规范化复杂度(NormalizedComplexity(nv))l概念规范化复杂度是圈复杂度除以行数。l计算方法nv=v(G)/nll应用定义那些有着显著判定逻辑密度的模块,这些模块相对于其他常见规范模块需要做更多的维护工作。(8)全局数据复杂度(GlobalDataComplexity(gdv(G))l概念及应用全局数据复杂度量化了模块结构和全局数据变量的关系说明了模块对外部数据的依赖程度度量了全局数据的测试工作描述了模块之间的耦合关系反映潜在的维护问题需要有McCabeData(9)局部数据复杂度(Specif
7、iedDataComplexity(sdv(G))l概念及应用局部数据复杂度量化了模块结构和用户局部数据变量的关系度量了局部数据的测试工作量化了每个模块中相应数据对模块控制结构的影响需有McCabeData(10)病态数据复杂度(PathologicalComplexity(pv(G))l概念病态数据复杂度衡量一个模块包含的完全非结构化成份的程度,标出向循环内部跳入的问题代码,而这些部分具有最大的风险度,通常需要重新设计。l计算方法所有的非结构部分除去向循环内跳入的结构,转化为线结构,病态复杂度就等于简化以后流程图的圈复杂度。l优点与所用的高级程序设计语言类型无关;指出了可靠性的问题,降低了维
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 复杂度 SourceMonit
限制150内