【软考】软件复杂性度量

2024-02-22 02:20
文章标签 软件 软考 度量 复杂性

本文主要是介绍【软考】软件复杂性度量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

        • 一、说明
        • 二、程序复杂性度量原则
          • 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

这篇关于【软考】软件复杂性度量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/733852

相关文章

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

免费也能高质量!2024年免费录屏软件深度对比评测

我公司因为客户覆盖面广的原因经常会开远程会议,有时候说的内容比较广需要引用多份的数据,我记录起来有一定难度,所以一般都用录屏工具来记录会议内容。这次我们来一起探索有什么免费录屏工具可以提高我们的工作效率吧。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  录屏软件录屏功能就是本职,这款录屏工具在录屏模式上提供了多种选项,可以选择屏幕录制、窗口

【软考】希尔排序算法分析

目录 1. c代码2. 运行截图3. 运行解析 1. c代码 #include <stdio.h>#include <stdlib.h> void shellSort(int data[], int n){// 划分的数组,例如8个数则为[4, 2, 1]int *delta;int k;// i控制delta的轮次int i;// 临时变量,换值int temp;in