本文主要是介绍【软考】软件复杂性度量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 一、说明
- 二、程序复杂性度量原则
- 2.1 说明
- 2.2 描述程序复杂性
- 2.3 基本原则
- 三、McCabe度量法
- 3.1 说明
- 3.2 环路复杂度
- 3.3 简化公式
一、说明
- 1.软件复杂性度量是指理解和处理软件的难易程度
- 2.软件复杂性度量的参数很多,主要有规模、难度、结构、智能度
- 3.规模:即总共的指令数,或源程序行数
- 4.难度:通常由程序中出现的操作数的数目所决定的量来表示
- 5.结构:通常用与程序结构有关的度量来表示
- 6.智能度:即算法的难易程度
- 7.软件复杂性包括程序复杂性和文档复杂性,软件复杂性主要体现在程序的复杂性中
二、程序复杂性度量原则
2.1 说明
- 1.程序复杂性度量是软件度量的重要组成部分。开发规模相同、复杂性不同的程序花费的时间和成本会有很大差异
2.2 描述程序复杂性
- 1.程序理解的难度
- 2.纠错、维护程序的难度
- 3.向他人解释程序的难度
- 4.根据设计文件编写程序的工作量
- 5.执行程序时需要资源的程度
2.3 基本原则
- 1.程序复杂性与程序大小的关系不是线性的
- 2.控制结构复杂的程序较复杂
- 3.数据结构复杂的程序较复杂
- 4.转向语句使用不当的程序较复杂
- 5.循环结构比选择结构复杂,选择结构比顺序结构复杂
- 6.语句、数据、子程序和模块在程序中的次序对复杂性有影响
- 7.全局变量、非全局变量较多时程序较复杂
- 8.函数的隐式副作用相对于显示参数传递而言更加难以理解
- 9.具有不同作用的变量共用一个名字时较难理解
- 10.模块间、过程间联系密切的程序比较复杂
- 11.嵌套程度越深,程序越复杂
三、McCabe度量法
3.1 说明
- 1.由Thomas McCabe提出的一种基于程序控制流的复杂性度量方法
- 2.McCabe复杂性度量又称为环路度量,它认为程序的复杂性在很大程度上取决于控制的复杂性
- 3.单一的顺序程序结构最为简单,循环和选择构成的环路越多,程序就越复杂
- 4.以图论为工具,先画出程序图,然后用该图的环路数作为程序复杂性的度量值
- 5.程序图是退化的程序流程图,把程序流程图中的每个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连接不同点的有向弧,这样的有向图称为程序图
- 6.程序图仅描述程序内部的控制流程,完全不表现对数据的具体操作以及分支和循环的具体条件
3.2 环路复杂度
- 1.根据图论,在一个强连通的有向图G中,环的个数V(G)由以下公式给出:V(G)=m-n+2p
- 2.V(G)是有向图G中的环路数,m是图G中弧的个数,n是图G中的节点数,p是G中强连通分量个数
- 3.在一个程序中,从程序图的入口点总能到达图中的任何一个结点,因此程序总是连通的,但不是强连通的
- 4.为了使程序图成为强连通图,从图的入口点到出口点加一条用虚线表示的有向边,使图成为强连通图,就可以使用公式计算环路复杂性
- 5.环路复杂性度量反映了程序(或模块)的控制结构的复杂性
3.3 简化公式
- 1.McCabe度量法的计算简化公式为:环路复杂度=环路数+1
这篇关于【软考】软件复杂性度量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!