McCabe度量法是由托马斯·麦克凯提出的一种基于程序控制流的复杂性度量方法。McCabe复杂性度量又称环路度量。它认为程序的复杂性很大程度上取决于程序图的复杂性。单一的顺序结构最为简单,循环和选择所构成的环路越多,程序就越复杂。这种方法以图论为工具,先画出程序图,然后用该图的环路数作为程序复杂性的度量值。程序图是退化的程序流程图。也就是说,把程序流程图的每一个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连接不同结点的有向弧,这样得到的有向图就叫做程序图。

程序图仅描述程序内部的控制流程,完全不表现对数据的具体操作分支和循环的具体条件。因此,它往往把一个简单的IF语句与循环语句的复杂性看成是一样的,把嵌套的IF语句与CASE的复杂性看成是一样的。

根据图论,在一个强连通的有向图G中,环的个数V(G)由以下公式给出:

V(G)=m-n+2p其中,V(G)是有向图G中环路数,m是图G中弧数,n是图G中结点数,p是图G中强连通分量个数。在一个程序中,从程序图的入口点总能到达图中任何一个结点,因此,程序总是连通的,但不是强连通的。为了使图成为强连通图,从图的出口点到入口点加一条用虚线表示的有向边,使图成为强连通图。这样就可以使用上式计算环路复杂性了。

例1:

(2016年上半年试题)对下图所示流程图采用白盒测试方法进行测试,若要满足路径覆盖,则至少需要___个测试用例。采用McCabe度量法计算该程序对环路复杂性为___

路径覆盖是指设计若干个测试用例,覆盖程序中的所有路径。
上图中一共有6条路径:12345678,1234568,1235678,123568,12678,1268。
根据McCabe度量法环路复杂性公式V(g)=m-n+2p,图中m=10,n=8,p=1,V(g)=10-8+2=4。
那么答案应是:6个用例,环路复杂度为4。

【红色虚线为强连通】

例2:

(2015年上半年试题)若采用白盒测试方法测试以下代码,并满足条件覆盖,则至少需要___个测试用例。采用McCabe度量法算出该程序的环路复杂性为___

int find_max(int i, int j, int k){int max;if(i > j) {if(i > k){max = i;} else {max = k;}} else {if(j > k) {max = j;} else {max = k;}}return max;
}

一开始我随手画的流程图:(貌似缺了很多东西。。。)

改良之后:

上图中一共有4条路径,测试需要4个用例。
根据McCabe度量法环路复杂性公式V(g)=m-n+2p,图中弧数m=9,节点数n=7,p=1,V(g)=9-7+2=4。
那么答案应是:4个用例,环路复杂度为4。

参考文章1:软考必考题型之McCabe度量法

参考文章2:McCabe度量方法计算程序复杂度

【中级软考】什么是McCabe测量法(McCabe复杂性度量、环路度量。计算有向弧数、结点数、强连通分量个数)相关推荐

  1. 计算机软考网络中级题目,计算机软考中级软考网络工程师上午试题答题技巧

    原标题:计算机软考中级软考网络工程师上午试题答题技巧 计算机软考中级网络工程师考试的内容有以下几点:下面盛泰鼎盛小编就给大家分下下考试中答题应对技巧​.​ 科目包括: 1. 计算机与网络知识,考试时间 ...

  2. 中级软考-软件设计师(四)

    数据结构 1.哈夫曼数 构造哈夫曼树,左小右大,左0右1.下图反了. 哈夫曼树是个没有度为1的二叉树,即n=n0+n2.对于任意树,有n0=n2+1.所以,对于哈夫曼树,n=2n2+1=2n0-1. ...

  3. 中级软考有没有必要考?

    最近有 训练营 的同学来问我软考应该如何准备,毕竟两个科目还是花了一百多报考的,不好好准备就对不起这些钱了,也有问我要不要去报考软考的,因为班级里好多人都报了,问我软考这玩意可以给简历加分吗? 今天, ...

  4. 想考中级软考,一般需要多少复习时间?

    每个人的基础不同,接受能力也不同,这一篇是针对软考小白和基础不太好的考友,建议至少准备3个月是最好的,当然不包括有些大佬们啦,估计一个月两个月的时间就可以了,如果没有基础,没有接触过软考这一块的,至少 ...

  5. 【中级软考—软件设计师】2操作系统2.7磁盘管理【**】:2.7.1磁盘管理01

    考点: 存储时间计算 双,单缓冲区的区别处理 优化存储的形式[了解] 磁盘调度算法的掌握 磁盘管理01 软考中当存储来处理 存储管理--磁盘管理 坑坑洼洼的磁道记录了一些信息 从外向内磁道编号递增 磁 ...

  6. 【中级软考—软件设计师】2操作系统2.2进程的概念【三态模型的变化】:2.2.2进程的状态

    考察: 掌握三态模型状态变迁,相应的条件位置 掌握五态模型状态变迁,相应的条件位置[软考考的是有挂起的五态] 进程的概念 考点二:线程的状态 有多种模型,我们掌握两种 三态模型的变化 等待,某个事件, ...

  7. 【中级软考—软件设计师】2操作系统2.2进程的概念【】:2.2.1进程的概念

    考察:软考中并不高频 线程会考到:共享的一些数据内容 进程:状态的变迁 考点一:线程的概念 线程中共享的有哪些,不能共享的有哪些 进程的概念 考点一:线程的概念 进程管理:进程的概念 进程管理:进程与 ...

  8. 软考-架构师-第五章-系统性能评价 第二节 性能计算(读书笔记)

    版权声明 主要针对希赛出版的架构师考试教程<系统架构设计师教程(第4版)>,作者"希赛教育软考学院".完成相关的读书笔记以便后期自查,仅供个人学习使用,不得用于任何商业 ...

  9. 【中级软考】什么是“敏捷过程的开发方法(敏捷方法agile)“(极限编程XP、特征驱动开发FDD、并列争球法Scrum、水晶法Crystal、开放源码法、自适应软件开发 ASD方法)

    文章目录 敏捷方法 1 极限编程 XP 1.四大价值观 2.十二个最佳实践 2 特征驱动开发 FDD 1.FDD 角色定义 2.核心过程 3.最佳实践 3 并列争球法 Scrum 1.Scrum 的五 ...

最新文章

  1. 2015 Multi-University Training Contest 1 - 1002 Assignment
  2. 按需生产 ,我们准备好了吗?
  3. 【网络】HTTP2.0新特性
  4. 一次有趣的XSS漏洞挖掘分析(1)
  5. LiveVideoStack线上分享第三季(七):AVS3关键技术介绍、性能和复杂度分析
  6. Android 蓝牙开发(五)OPP接收文件
  7. Node.js:使用blueimp-md5进行MD5加密
  8. CSDN markdown 数学公式指导手册
  9. 内存管理单元(MMU)与内存控制器
  10. 渗透之——网站入侵思路
  11. 觅风易语言教程全集(完整超清版+源码)
  12. 这48条人际关系准则,会真正提升你的社交情商
  13. 树莓派4B连接显示器 黑屏、左上角有光标问题
  14. curl 命令的使用
  15. 2017NOIp模拟赛08.20
  16. action = “store_true
  17. 云服务器分割成虚拟主机销售,IDC行业为何兴起云虚拟主机业务
  18. css三实现ui,纯CSS实现常见的UI效果
  19. python 自动化获取博科光纤交换机端口信息
  20. 这几个动图告诉你科学的神奇,看完瞬间觉得智商都提高了

热门文章

  1. 【ABAP增强】基于函数的出口CMOD
  2. SAP修改消息内容和报错类型(SE91和OBA5)
  3. SAP HANA会代替BW吗?
  4. ABAP 直接上传图片的函数
  5. ERP中的合并会计报表
  6. Leave List-Processing 新解
  7. ABAP [div '/'] 的区别与妙用
  8. SAP-CO.创建成本中心,作业类型,内部订单
  9. 货拉拉周胜馥,这次赌“输”了?
  10. 时代天使点燃口腔赛道,瑞尔集团离下一只“牙茅”还有多远?