zoukankan      html  css  js  c++  java
  • 软考(二)

    http://blog.csdn.net/t_1007/article/details/53034408

    软考软件设计师McCabe环路复杂度,09年的两个题,为什么不一样?

    为什么上半年的答案是8-7+2=3 弧数为8,节点为7,没问题; 
    下半年的却是9-7+2=4 下半年的弧为什么不是10呢 ?谢谢!

    这里写图片描述 
    这个啊,我也困惑了好久,后来找资料看了下,计算方法其实有3种: 
    环形复杂度定量度量程序的逻辑复杂度。描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度。 
    (1)流图中的区域数等于环形复杂度。 
    (2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。 
    (3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。 
    自己是这样理解的: 
    这种环路度量法,计算的思路是这样的:它是考虑控制的复杂程度,即条件选择的分支繁杂程度。 
    这个可能比较抽象,还是用例题来说吧。看图: 
    这里写图片描述 
    分别用三种方法来计算2道题 
    第一题图到了c开始条件判断形成分支D,E;E这里又按条件来判断是否继续到F还是按一个自环做循环然后再到F,然后再回到B 
    (1)流图中的区域数等于环形复杂度。 
    注意区域块可以看作是按不同条件形成的数据操作分支块,比如橙色块就可以看做满足Z < t那条分支(下面那个图还要满足cond==true)处理的数据操作块,注意了,下面那个图G节点不是有个自环的循环吗?为什么那个循环不自成一块,而节点E的自环就要自成一块呢?你要这样理解:下图的G点不错是有自环,但是这个自环按MCCABE的理解对整个系统的复杂度没影响,其实就是没有形成分支,即数据到了G节点都要做循环,也就是说下图的G节点搞个自环是来干扰大家的,完全可以把它简化成上面图的G点。而E节点的自环注意有个条件P<=5,也就是说这个自环是条件判断的结果,也就是说对复杂度有影响所以不能忽略,假如这里把条件P<=5去掉,也就是说到了E节点先不管三七二十一先来做个循环再去判断然后再去到F的话那E点的自环也应该忽略。 
    所以按区域划分:上图3块,下图4块。复杂度分别是:3,4 
    (2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。 
    有了前面的分析,现在就好做了: 
    上图:8-7+2=3 
    下图:9-7+2=4(注意E不是10,因为G节点的自环弧线要忽略掉) 
    (3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。 
    判断节点: 
    上图:C,E,2个点,复杂度2+1=3 
    下图:CED,3个点,复杂度3+1=4

    McCabe度量方法计算程序复杂度

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

     
    2
  • 相关阅读:
    解析Jquery取得iframe中元素的几种方法
    jquery 金额转换成大写
    MVC 后台管理框架 FineUIMvc 在线示例
    7个高性能JavaScript代码高亮插件
    layer弹出信息框API
    【Bootstrap-插件使用】Jcrop+fileinput组合实现头像上传功能
    一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统
    ASP.NET MVC 3 技术(九) 301永久重定向不带www域名到带www的域名
    ASP.NET MVC 3 网站优化总结(三)Specify Vary: Accept-Encoding header
    ASP.NET MVC 3 网站优化总结(一) 使用 Gzip 压缩
  • 原文地址:https://www.cnblogs.com/elenz/p/6817406.html
Copyright © 2011-2022 走看看