【中级软考】什么是McCabe测量法(McCabe复杂性度量、环路度量。计算有向弧数、结点数、强连通分量个数)
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.哈夫曼数 构造哈夫曼树,左小右大,左0右1.下图反了. 哈夫曼树是个没有度为1的二叉树,即n=n0+n2.对于任意树,有n0=n2+1.所以,对于哈夫曼树,n=2n2+1=2n0-1. ...
- 中级软考有没有必要考?
最近有 训练营 的同学来问我软考应该如何准备,毕竟两个科目还是花了一百多报考的,不好好准备就对不起这些钱了,也有问我要不要去报考软考的,因为班级里好多人都报了,问我软考这玩意可以给简历加分吗? 今天, ...
- 想考中级软考,一般需要多少复习时间?
每个人的基础不同,接受能力也不同,这一篇是针对软考小白和基础不太好的考友,建议至少准备3个月是最好的,当然不包括有些大佬们啦,估计一个月两个月的时间就可以了,如果没有基础,没有接触过软考这一块的,至少 ...
- 【中级软考—软件设计师】2操作系统2.7磁盘管理【**】:2.7.1磁盘管理01
考点: 存储时间计算 双,单缓冲区的区别处理 优化存储的形式[了解] 磁盘调度算法的掌握 磁盘管理01 软考中当存储来处理 存储管理--磁盘管理 坑坑洼洼的磁道记录了一些信息 从外向内磁道编号递增 磁 ...
- 【中级软考—软件设计师】2操作系统2.2进程的概念【三态模型的变化】:2.2.2进程的状态
考察: 掌握三态模型状态变迁,相应的条件位置 掌握五态模型状态变迁,相应的条件位置[软考考的是有挂起的五态] 进程的概念 考点二:线程的状态 有多种模型,我们掌握两种 三态模型的变化 等待,某个事件, ...
- 【中级软考—软件设计师】2操作系统2.2进程的概念【】:2.2.1进程的概念
考察:软考中并不高频 线程会考到:共享的一些数据内容 进程:状态的变迁 考点一:线程的概念 线程中共享的有哪些,不能共享的有哪些 进程的概念 考点一:线程的概念 进程管理:进程的概念 进程管理:进程与 ...
- 软考-架构师-第五章-系统性能评价 第二节 性能计算(读书笔记)
版权声明 主要针对希赛出版的架构师考试教程<系统架构设计师教程(第4版)>,作者"希赛教育软考学院".完成相关的读书笔记以便后期自查,仅供个人学习使用,不得用于任何商业 ...
- 【中级软考】什么是“敏捷过程的开发方法(敏捷方法agile)“(极限编程XP、特征驱动开发FDD、并列争球法Scrum、水晶法Crystal、开放源码法、自适应软件开发 ASD方法)
文章目录 敏捷方法 1 极限编程 XP 1.四大价值观 2.十二个最佳实践 2 特征驱动开发 FDD 1.FDD 角色定义 2.核心过程 3.最佳实践 3 并列争球法 Scrum 1.Scrum 的五 ...
最新文章
- 2015 Multi-University Training Contest 1 - 1002 Assignment
- 按需生产 ,我们准备好了吗?
- 【网络】HTTP2.0新特性
- 一次有趣的XSS漏洞挖掘分析(1)
- LiveVideoStack线上分享第三季(七):AVS3关键技术介绍、性能和复杂度分析
- Android 蓝牙开发(五)OPP接收文件
- Node.js:使用blueimp-md5进行MD5加密
- CSDN markdown 数学公式指导手册
- 内存管理单元(MMU)与内存控制器
- 渗透之——网站入侵思路
- 觅风易语言教程全集(完整超清版+源码)
- 这48条人际关系准则,会真正提升你的社交情商
- 树莓派4B连接显示器 黑屏、左上角有光标问题
- curl 命令的使用
- 2017NOIp模拟赛08.20
- action = “store_true
- 云服务器分割成虚拟主机销售,IDC行业为何兴起云虚拟主机业务
- css三实现ui,纯CSS实现常见的UI效果
- python 自动化获取博科光纤交换机端口信息
- 这几个动图告诉你科学的神奇,看完瞬间觉得智商都提高了