软件复杂度与SourceMonitor课件.pptVIP

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

文档评论(0)

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

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

1亿VIP精品文档

相关文档