P12- 软件复杂性 之度量、程序图、强连通图、McCabe度量法
【软考-软件设计师-历年真题-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度量法相关推荐
- 流图(程序图)表示程序的控制流——McCabe方法度量程序空间复杂度
McCabe方法 McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度. 为了突出表现程序的控制流,人们通常使用流图(也称程序图). 1.流图 所谓流图 ...
- Portal(博图)软件的应用及程序简介
实验二,Portal(博图)软件的应用及程序简介 实验目的:熟识西门子s7-1200的指令系统,掌握TIA portal的使用方法 实验设备:西门子s7-1200PLC:信号板:按钮及开关:TIA博途 ...
- 【中级软考】什么是McCabe测量法(McCabe复杂性度量、环路度量。计算有向弧数、结点数、强连通分量个数)
McCabe度量法是由托马斯·麦克凯提出的一种基于程序控制流的复杂性度量方法.McCabe复杂性度量又称环路度量.它认为程序的复杂性很大程度上取决于程序图的复杂性.单一的顺序结构最为简单,循环和选择所 ...
- 降低软件复杂性一般原则和方法
一.前言 斯坦福教授.Tcl语言发明者John Ousterhout 的著作<A Philosophy of Software Design>[1],自出版以来,好评如潮.按照IT图书出版 ...
- 美团技术:降低软件复杂性的原则和方法!
本文是作者阅读John Ousterhout的<A Philosophy of Software Design>之后,结合自己的工作经验,对"降低复杂性"做了详细总结, ...
- 【转】降低软件复杂性的一般原则和方法
写在最前 本文转载自美团技术团队文章,个人阅读后有些感触,且认为值得再读,决定转载,转载已获得授权.后面再次阅读及查阅相关材料后再做一遍总结. 一.前言 斯坦福教授.Tcl语言发明者John Oust ...
- 【华为云技术分享】探索软件复杂性简洁之道
摘要:软件的复杂性是我们程序员在日常开发中所必须面对的东西,学会如何 "弄清楚什么是软件复杂性,找到导致软件复杂的原因,并利用各种手法去战胜软件的复杂性" 是一门必备的能力. 前言 ...
- endnote大客户版_Endnote软件的使用,有图有干货!
点击上方蓝色字体,关注我们吧 Endnote软件的使用,有图有干货!此文价值¥99 ¥299 全文摘要: 本文主要内容包括:Endnote软件下载安装与功能介绍,数据库的建立和文献管理,最后是文章写作 ...
- A_A03_007 CH32串口软件安装与CH32程序串口下载
A_A03_007 CH32串口软件安装与CH32程序串口下载 一. 软件下载 二.相关链接 三.交流学习 四. 软件安装 五. 软件使用 六.注意事项 一. 软件下载 网盘链接 提取码:1bfv 二 ...
最新文章
- Pytorch源码与运行原理浅析--网络篇(一)
- python输入文字如何定义文字_python如何实现手动输入文字
- 对网络体系变革的思考
- NYOJ 289 苹果
- 下列选项中 采用边界值平滑_使用Illustrator中的混合工具创建很有个性的蛋宝宝...
- Swoole的全双工、半双工和单工
- Spring4基础 学习笔记(5) ---- Spring与Dao
- 学习jvm,关于MAT an internal error occurred during:Parsing heap dump from问题
- C#元组类型System.ValueTuple
- background 与backgroundcolor区别
- java 设置头错误信息,错误:在node.js中发送标头后无法设置标头
- redis 获取所有的key_在微博微信场景下学习Redis数据结构
- C程序设计语言现代方法11:指针
- 【软考】操作系统计算机网络复习指南
- Bzoj3894文理分科
- Android学习开发之路~~系列教程
- 通过SCP命令将文件复制到服务器或从服务器复制文件
- 全球最强的女孩保养秘方大全
- 人生感悟:欲望适度则为利,欲望过度则为害,高级java开发工程师简历
- Greenplum 临时表年龄问题