环形复杂度_环形复杂度判定节点怎么找 - CSDN
精华内容
参与话题
  • (3) 计算 McCabe 环形复杂度; (4) 找出程序的一个独立路径集合。 1. 画出相应的程序控制流图 2. 给出控制流图的邻接矩阵 1 2 3 4 5 6 7 1 1 1 1 0 0 0 0 2 0 1 1 1 0 0 0 3 0 0 1 1 0 0 0 4 ...

    题目

    根据程序流程图,完成:
    (1) 画出相应的程序控制流图;
    (2) 给出控制流图的邻接矩阵;
    (3) 计算 McCabe 环形复杂度;
    (4) 找出程序的一个独立路径集合。
    在这里插入图片描述

    1. 画出相应的程序控制流图

    在这里插入图片描述

    2. 给出控制流图的邻接矩阵

    1 2 3 4 5 6 7
    1 1 1 1 0 0 0 0
    2 0 1 1 1 0 0 0
    3 0 0 1 1 0 0 0
    4 0 0 0 1 1 0 1
    5 0 0 0 0 1 1 1
    6 0 0 0 0 0 1 1
    7 0 0 0 0 0 0 1

    3. 计算 McCabe 环形复杂度

    一个程序模块的环路复杂度用来衡量模块中判定结构的复杂程度,数量上可以表现为程序控制流图中从开始点到终结点的独立路径条数,相当于合理预防错误所
    需测试的最少路径条数。

    计算方法:

    • 单入单出程序控制流图 G 的 McCabe 环路复杂度计算公式:
      V(G) = m - n + 2p
      ◌ m 是 G 的边数目
      ◌ n 是 G 的顶点数目
      ◌ p 是 G 的连通分支数
    • 简单程序控制流图是连通图,p = 1,此时:
      V(G) = m - n + 2
    • G 是平面图时,由欧拉公式,V(G) = R。其中 R 是平面被控制流图划分成的区域数目 (包括外部面)。
    • 对于简单的单入单出结构化模块,V(G) 值等于程序控制流图中的单条件判断节点的个数 +1。多条件判断条件可以先转化为单条件复合结构再应用本结论。

    计算:

    • 解1:图中 m = 10,n = 7,故
      V(G) = m - n + 2
      = 10 – 7 + 2
      = 5
    • 解2:图是平面的且有5个面,故
      V(G) = 5
    • 解3:图中有4个单条件判定节点1, 2, 4, 5, 故
      V(G) = 4 + 1 = 5

    4. 找出程序的一个独立路径集合

    独立路径:至少沿一条新的边移动的路径。对所有独立路径的遍历使得程序
    中的所有语句至少被执行一次。

    5条独立的基本路径:

    • 1-2-3-4-5-6-7
    • 1-3-4-5-6-7
    • 1-2-4-5-6-7
    • 1-2-3-4-7
    • 1-2-3-4-5-7
    展开全文
  • mccabe计算环路复杂度

    万次阅读 2016-05-05 15:56:26
    描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度。 (1)流图中的区域数等于环形复杂度。 (2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。 (3)流图G的环形...



    下图所示的程序流程图中有()条不同的简单路径。采用McCabe度量法计算该程序图的环路复杂性为()。


    环形复杂度定量度量程序的逻辑复杂度。描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度。
    (1)流图中的区域数等于环形复杂度。
    (2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
    (3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。
    这种环路度量法,计算的思路是这样的:它是考虑控制的复杂程度,即条件选择的分支繁杂程度。
    图中有3次简单的判断。故3条简单路径,形成3块环形区域,区域复杂度为3。

    3块环形区域是

                  

    所以环路复杂度是3

    简单路径是指顶点序列中不重复出现的路径,图中在y=n-1处有个判断,Y的情况的时候是一条简单路径,N情况下在A[i]>A[i+1]时Y和N
    有两条路,循环回y=n-1,此时若取Y则多出两条简单路径,取N则顶点重复了不再是简单路径,故图中有3条简单路径


    3条简单路径是




    展开全文
  • 软件测试——程序控制流图,McCabe环形复杂度 根据下边的程序流程图,完成: 1.画出相应的程序控制流图; 根据上述的程序流程图画出程序控制流图 由于一个条件判断语句中有复合条件表达式,故需拆开表示 2.给出...

    软件测试——程序控制流图,McCabe环形复杂度

    根据下边的程序流程图,完成:

    1

    1.画出相应的程序控制流图;

    根据上述的程序流程图画出程序控制流图

    由于一个条件判断语句中有复合条件表达式,故需拆开表示

    3

    2.给出控制流图的邻接矩阵;

    1 2 3 4 5 6 7
    1 1 1 1 0 0 0 0
    2 0 1 1 1 0 0 0
    3 0 0 1 1 0 0 0
    4 0 0 0 1 1 0 1
    5 0 0 0 0 1 1 1
    6 0 0 0 0 0 1 1
    7 0 0 0 0 0 0 1

    3.计算 McCabe 环形复杂度;

    McCabe 环路复杂度为程序逻辑复杂性提供定量测度。该度量用于计算程序的基本独立路径数目,也即是确保所有语句至少执行一次的起码测试数量。

    程序控制流图中有7个结点,10条边。

    故V(G) = m - n + 2 = 10 -7 + 2 = 5

    程序控制流图中有4个单判定结点

    故V(G)= d + 1 = 4 + 1 = 5

    4.找出程序的一个独立路径集合。

    一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G) 值正好等于该程序的独立路径的条数。

    • 路径1:1-2-4-7
    • 路径2:1-2-4-5-7
    • 路径3:1-2-4-5-6-7
    • 路径4:1-3-4-7
    • 路径5:1-2-3-4-7
    展开全文
  • 控制流图,环形复杂度,矩阵,独立的路径集合
  • 如何判断环形复杂度(软件工程)

    万次阅读 2019-04-26 16:43:20
    一个有e条边和n个节点的流程图F,可以用下述3种方法中的任何一种来计算环形复杂度。 (1)流图中的区域数等于环形复杂度。 (2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。 (3)流图G的环...

    ** McCabe环路复杂度计算**

    环路复杂度用来定量度量程序的逻辑复杂度。以McCabe方法来表示。

    在程序控制流程图中,节点是程序中代码的最小单元,边代表节点间的程序流。一个有e条边和n个节点的流程图F,可以用下述3种方法中的任何一种来计算环形复杂度。
    (1)流图中的区域数等于环形复杂度。
    (2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
    (3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。

    (最好使用第二种方法进行计算)

    环路复杂度越高,程序中的控制路径越复杂。

    下面以09年试题为例:
    在这里插入图片描述
    使用第1种方法:

    上图:共有判断节点2个,把整个平面分成3块,即C节点将区域分为2,而E节点再将C的右区域分为2,C的左区域1加上右区域2,因此复杂度为3;

    下图:共有判断节点3个,把整个平面分为4块,即C节点将区域分为2,而D节点再将C的左区域分为2,E节点再将C的右区域分为2,C的左区域加上右区域,因此复杂度为4

    使用第2种方法:

    流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。

    上图:8-7+2=3

    下图:9-7+2=4(此处E为9非10,因为环路度量法,它是考虑控制的复杂程度,即条件选择的分支繁杂程度,而G节点并没有涉及到程序控制分支,G节点的自环弧线要忽略掉)

    使用第3种方法计算:

    流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。

    上图:C,E,2个点,复杂度2+1=3

    下图:CED,3个点,复杂度3+1=4

    在这里插入图片描述
    在这里插入图片描述

    环形复杂度定量度量程序的逻辑复杂度。描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度。
    (1)流图中的区域数等于环形复杂度。
    (2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
    (3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。
    这种环路度量法,计算的思路是这样的:它是考虑控制的复杂程度,即条件选择的分支繁杂程度。
    图中有3次简单的判断。故3条简单路径,形成3块环形区域,区域复杂度为3。

    http://blog.csdn.net/aerchi/article/details/52983673

    展开全文
  • 环形复杂度

    千次阅读 2018-06-24 22:51:14
    环形复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测度数量的上界。 计算方法 环形复杂度的计算方法 可以用下列任何一种方法...
  • 流图:McCabc方法根据程序控制流的复杂程度定量度量程度的复杂程度,这样度量出的结果称为程序的环形复杂度环形复杂度:定量度量程序的逻辑复杂度 计算复杂度方法: (1)流图中线性无关的区域数等于环形...
  • 软考学习之关于McCabe环路复杂度的计算

    万次阅读 多人点赞 2019-05-22 10:37:26
    一个有e条边和n个节点的流程图F,可以用下述3种方法中的任何一种来计算环形复杂度。 (1)流图中的区域数等于环形复杂度。 (2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。 (3)流图G的...
  • McCabe环路复杂度计算方法

    万次阅读 2017-11-26 10:47:10
    软考的McCabe这种题型来说几乎每次都考,那么我来讲讲如何计算以及题型的分类: 形复杂度定量度量程序的逻辑复杂度:描绘程序控制流的流图之后, ...(3)流图G的环形复杂度V(G)=P+1,其中,P是
  • 软考软件设计师McCabe环路复杂度计算方法
  • McCabe度量方法计算程序复杂度

    万次阅读 多人点赞 2018-01-18 16:14:37
    软考软件设计师McCabe环路复杂度,09年的两个题,为什么不一样?—from 百度知道 为什么上半年的答案是8-...环形复杂度定量度量程序的逻辑复杂度。描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形
  • 计算公式:V(G)=E-N+2E为流程图的边数,N为流程图的节点数例如(2016年下半年软考中级试题):
  • 一个有e条边和n个节点的流程图F,可以用下述3种方法中的任何一种来计算环形复杂度。 (1)流图中的区域数等于环形复杂度。 (2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
  • 控制流图、圈复杂度

    万次阅读 多人点赞 2017-04-27 19:40:54
    继续上次的测试作业,学习完程序插装的概念,今天学习测试的静态分析方法:绘制控制流图与计算圈复杂度。 一、控制流图: 一个过程或程序的抽象表现,常以数据结构链的形式表示。   二、圈复杂度复杂度越高,...
  • McCabe环路复杂度计算

    千次阅读 2017-08-19 09:48:32
    一个有e条边和n个节点的流程图F,可以用下述3种方法中的任何一种来计算环形复杂度。 (1)流图中的区域数等于环形复杂度。 (2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。 (3)流
  • Int IsLeap(int year) (1) { (2) if (year % 4 == 0) (3) { (4) if (year % 100 == 0) (5) { (6) if ( year % 400 == 0) (7) leap = 1; (8) else (9) leap = 0; (10
  • 函数圈复杂度介绍

    千次阅读 2017-09-03 19:53:09
    软件复杂度衡量方法有许多种: 对于软件复杂度最著名的可能就是Tom McCabe的方法了。该方法通过计算子程序中的“决策点(decision points)”的数量来衡量复杂度。 圈复杂度用来评价代码复杂度,以函数为单位...
  • 关于队列和时间复杂度的问题

    千次阅读 2018-05-09 23:20:48
    用循环单链表表示的队列长度为n,若只设头指针,则出队和入队的时间复杂度分别是( 含头结点时为O(1)、不含头结点时为 O(n) )和(O(n));若只设尾指针,则出队和入队的时间复杂度分别是(O(1))和( O(1))。 为...
  • 控制流图|圈复杂度|基本复杂度

    千次阅读 2015-02-02 23:43:16
    McCabe复杂度包括圈复杂度(Cyclomatic complexity)、基本复杂度、模块涉及复杂度、设计复杂度和集成复杂度等。控制流程图分析是一个静态的分析过程,它提供静态的度量标准技术,一般主要运用在白盒测试的方法中。
  • 软件设计的复杂度

    千次阅读 2015-04-30 09:05:44
    什么是软件设计的复杂度软件技术发展的使命之一就是控制复杂度(Complexity)。从高级语言的产生,到结构化编程,再到面向对象编程、组件化编程等等。本文介绍通过分解、改善依赖关系,以及抽象的方式来降低复杂度
1 2 3 4 5 ... 20
收藏数 9,417
精华内容 3,766
关键字:

环形复杂度