【软考-软件设计师-历年真题-2013年上半年上午基础知识】

软件的复杂性主要体现在程序的复杂性。(30)是度量软件复杂性的一个主要参数。若采用McCabe度量法计算环路复杂性,则对于下图所示的程序图,其环路复杂度为(31)

(30)A.代码行数 B.常量的数量 C.变量的数量    D.调用的库函数的数量

(31)A.2         B.3         C.4            D.5

【答案】A  C

【解析】本题考查软件复杂性方面的基础知识。


软件复杂性度量是软件度量的一个重要分支。对于软件复杂性度量的主要参数有:

•规模,即总共的指令数,或源程序行数。

•难度,通常由程序中出现的操作数的数目所决定的量来表示。

•结构,通常用与程序结构有关的度量来表示。

•智能度,即算法的难易程度。

软件复杂性主要表现在程序的复杂性。程序的复杂性主要指模块内程序的复杂性。

McCabe度量法是一种基于程序控制流的复杂性度量方法。McCabe复杂性度量又称为环路度量,它认为程序的复杂性很大程度上取决于控制的复杂性。

单一的顺序程序结构最为简单,循环和选择所构成的环路越多,程序就越复杂。

这种方法以图论为工具,先画出程序图,然后用该图的环路数作为程序复杂性的度量值。

程序图是退化的程序流程图,也就是说,把程序流程图中每个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连接不同点的有向弧,这样得到的有向图就叫做程序图。

程序图仅描述程序内部的控制流程,完全不表现对数据的具体操作以及分支和循环的具体条件。

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

V(G) = m - n + 2p

其中,V(G)是有向图G中的环路数,m是图G中弧的个数,n是图G中的结点数, P是G中的强连通分量个数。

在一个程序中,从程序图的入口点总能到达图中的任何一个结点,因此,程序总是连通的,但不是强连通的。为了使程序图成为强连通图,从图的入口点到出口点加一条用虚线表示的有向边,使图成为强连通图,这样就可以使用上式计算环路复杂性了。

对于题目中的程序图,其中结点数n = 9,弧数m=ll, p=l,则有:

V(G) = m-n+2p =11-9+2 = 4

即McCabe环路复杂的度量值为4。

P12- 软件复杂性 之度量、程序图、强连通图、McCabe度量法相关推荐

  1. 流图(程序图)表示程序的控制流——McCabe方法度量程序空间复杂度

    McCabe方法 McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度. 为了突出表现程序的控制流,人们通常使用流图(也称程序图). 1.流图 所谓流图 ...

  2. Portal(博图)软件的应用及程序简介

    实验二,Portal(博图)软件的应用及程序简介 实验目的:熟识西门子s7-1200的指令系统,掌握TIA portal的使用方法 实验设备:西门子s7-1200PLC:信号板:按钮及开关:TIA博途 ...

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

    McCabe度量法是由托马斯·麦克凯提出的一种基于程序控制流的复杂性度量方法.McCabe复杂性度量又称环路度量.它认为程序的复杂性很大程度上取决于程序图的复杂性.单一的顺序结构最为简单,循环和选择所 ...

  4. 降低软件复杂性一般原则和方法

    一.前言 斯坦福教授.Tcl语言发明者John Ousterhout 的著作<A Philosophy of Software Design>[1],自出版以来,好评如潮.按照IT图书出版 ...

  5. 美团技术:降低软件复杂性的原则和方法!

    本文是作者阅读John Ousterhout的<A Philosophy of Software Design>之后,结合自己的工作经验,对"降低复杂性"做了详细总结, ...

  6. 【转】降低软件复杂性的一般原则和方法

    写在最前 本文转载自美团技术团队文章,个人阅读后有些感触,且认为值得再读,决定转载,转载已获得授权.后面再次阅读及查阅相关材料后再做一遍总结. 一.前言 斯坦福教授.Tcl语言发明者John Oust ...

  7. 【华为云技术分享】探索软件复杂性简洁之道

    摘要:软件的复杂性是我们程序员在日常开发中所必须面对的东西,学会如何 "弄清楚什么是软件复杂性,找到导致软件复杂的原因,并利用各种手法去战胜软件的复杂性" 是一门必备的能力. 前言 ...

  8. endnote大客户版_Endnote软件的使用,有图有干货!

    点击上方蓝色字体,关注我们吧 Endnote软件的使用,有图有干货!此文价值¥99 ¥299 全文摘要: 本文主要内容包括:Endnote软件下载安装与功能介绍,数据库的建立和文献管理,最后是文章写作 ...

  9. A_A03_007 CH32串口软件安装与CH32程序串口下载

    A_A03_007 CH32串口软件安装与CH32程序串口下载 一. 软件下载 二.相关链接 三.交流学习 四. 软件安装 五. 软件使用 六.注意事项 一. 软件下载 网盘链接 提取码:1bfv 二 ...

最新文章

  1. Pytorch源码与运行原理浅析--网络篇(一)
  2. python输入文字如何定义文字_python如何实现手动输入文字
  3. 对网络体系变革的思考
  4. NYOJ 289 苹果
  5. 下列选项中 采用边界值平滑_使用Illustrator中的混合工具创建很有个性的蛋宝宝...
  6. Swoole的全双工、半双工和单工
  7. Spring4基础 学习笔记(5) ---- Spring与Dao
  8. 学习jvm,关于MAT an internal error occurred during:Parsing heap dump from问题
  9. C#元组类型System.ValueTuple
  10. background 与backgroundcolor区别
  11. java 设置头错误信息,错误:在node.js中发送标头后无法设置标头
  12. redis 获取所有的key_在微博微信场景下学习Redis数据结构
  13. C程序设计语言现代方法11:指针
  14. 【软考】操作系统计算机网络复习指南
  15. Bzoj3894文理分科
  16. Android学习开发之路~~系列教程
  17. 通过SCP命令将文件复制到服务器或从服务器复制文件
  18. 全球最强的女孩保养秘方大全
  19. 人生感悟:欲望适度则为利,欲望过度则为害,高级java开发工程师简历
  20. Greenplum 临时表年龄问题

热门文章

  1. Linux 常用命令及详细使用方法
  2. 胃疼拉肚子 警惕急性肠胃炎
  3. 汇编实验:DEBUG命令调试
  4. 我们需要什么样的课程观
  5. Linux系统搭建钓鱼WIFI教程,Kali linux创建钓鱼wifi热点
  6. python 获取硬盘信息失败请谨慎操作_大白菜U盘装系统提示获取硬盘信息失败怎么办?...
  7. 全基因组关联分析(GWAS)简介
  8. 小旋风蜘蛛池pro2.5(主程序)官方原版
  9. cxfreeze使用记录
  10. [解决方案] 'cxfreeze' 不是内部或外部命令