软件源码复杂度度量方法
软件源码复杂度度量方法主要有三种:代码行、Helstead方法、McCabe方法(环形复杂度)
- 代码行:
代码行方法度量是一种最简单的方法,该方法认为,代码行越多,软件越容易产生漏洞。程序复杂性随着程序规模的增加不均衡的增长,以及控制程序规模的方法最好是采用分而治之的办法。代码行度量法只是一个简单的、估计得很粗糙的方法。
- Helstead方法:
思路是根据程序中可执行代码行的操作符和操作数的数量来计算程序的复杂性。操作符和操作数的量
越大,程序结构就越复杂。两种基本的元素组成操作数(变量、常量、地址、空间)和操作符编程语言中定义的操作。它统计程序中出现的不重复的操作符数量μ1和操作数数量μ2及总共的操作符数N1和操作数数N2。
程序的单词量vocabulary:μ=μ1+μ2
程序的长度为总共出现的操作符数和操作数数:N=N1+N2
程序预计长度:N^=μ1log2μ1+μ2log2μ2
程序容量:V=Nlog2μ=Nlog2(μ1+μ2)。Halstead方法认为V是编写长度为N的程序所需要的思维比较次数。V通常用来测量软件复杂度。
潜在容量V*:是一个算法任意表达的最小容量。假设只有一个操作符一个操作符,只引用一次。V*=(2+μ2*)log2(2+μ2*) 程序等级L:是一个算法的具体实现的抽象级别。L=V*/V
智力内容I:测量程序里表述了“多少”。I=L^*V
困难度:D=1/L
程序中的错误数预测值:B=N log2(n1+n2)/3000。
- McCabe方法(环形复杂度)
强连通的程序控制结构图中线性无关的有向环的个数。
V(G)=E-N+2
E:程序控制流图的边数 N:控制流图的节点数
模块的圈数,即模块复杂度,与模块中所存在的软件错误数或缺陷数,以及为了发现并改正它们所需的时间之间存在着明显的联系。McCabe曾经指出:根据以往的经验,当一个模块的v超过10时,这个模块可能就会出问题。
软件源码复杂度度量方法相关推荐
- Linux下软件源码包安装问题解决方法
从源码包安装软件最重要的就是仔细阅读README INSTALL等说明文件 通常从源码包安装软件的步骤是: tar jxvf gtk+-2.4.13.tar.bz2 解开源码包 cd gtk+-2.4 ...
- 论文阅读笔记——基于CNN-GAP可解释性模型的软件源码漏洞检测方法
本论文相关内容 论文下载地址--Engineering Village 论文阅读笔记--基于CNN-GAP可解释性模型的软件源码漏洞检测方法 文章目录 本论文相关内容 前言 基于CNN-GAP可解释性 ...
- 视频直播软件开发关于亚马逊s3接入方式,视频直播源码创建存储桶方法
一.登录亚马逊账户,进入S3 建立新的存储桶,用于视频直播源码的文件存储. 注册 Amazon S3 后,您就可以开始使用 AWS 管理控制台 创建存储桶.Amazon S3 中的每个对象都存储在存储 ...
- 读书软件源码,实现书籍阅读的其他功能
基本原理 NSLayoutManager 会根据加入的 NSTextContainer 不断分走文字, 直到分完为止, 这时候读书软件源码可以使用 layoutManager.glyphRange(f ...
- H5类似易企秀/编辑器/页面制作/开发/生成工具/软件/源码/授权
代码地址如下: http://www.demodashi.com/demo/14960.html 项目简介 H5DS (HTML5 Design software) 这是一款基于WEB的 H5制作工具 ...
- 顾客信息表mysql_Qt5.5.0使用mysql编撰小软件源码讲解-顾客信息登记表_mysql
Qt5.5.0使用mysql编写小软件源码讲解---顾客信息登记表 Qt5.5.0使用mysql编写小软件源码讲解---顾客信息登记表 一个个人觉得比较简单小巧的软件. 下面就如何编写如何发布打包来介 ...
- 【STM32F429的DSP教程】第6章 ARM DSP源码和库移植方法(MDK5的AC5和AC6)
完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第6章 ARM DSP源码和库移植方法(MDK5的AC5 ...
- 直播软件源码如何在Android端实现多人视频通话
本篇主要讨论直播软件源码如何在Android端实现多人视频通话.主要需要实现以下功能: 随着加入人数和他们的手机摄像头分辨率的变化,显示不同的UI,即所谓的"分屏" 点击分屏中的小 ...
- 实现简单的直播互动功能,直播软件源码是如何做的
近两年,很多电商平台开始关注起直播互动电商,希望在直播中,也可以增加互动,例如在直播过程中,抛出限量优惠商品,实时发送抢购的消息给观众.于是我们做了一个简单的直播软件源码Demo. Demo大致的整体 ...
最新文章
- 算法设计:双相机高斯建模算法优化
- P3879 [TJOI2010]阅读理解 [STL]
- 【小项目关键技术四】液晶显示屏
- pythonseleniumAPI
- react --- Hook的使用
- DCTDAO将于3月27日在TrustSwap发行代币DCTD
- 《CCNA安全640-554认证考试指南》——第6章在Cisco IOS设备上保护管理层
- ORACLE SQL - UPDATE、DELETE、INSERT优化和使用技巧
- Codeforces 437D The Child and Zoo(贪心+并查集)
- 多层感知机从零开始实现
- 网络安全基础相关概念
- 验证服务器支持ipv6,支持IPv6的Radius服务器的配置过程
- m7405d粉盒清零方法_联想m7605d清零方法
- opencart seo优化_opencart seo 优化技巧有哪一些
- 一个js写的爱心表白神器
- Unity Mesh网格编程(三) Shader实现水面或旗帜飘扬效果
- sequence与sequencer
- beetl 获取html属性值,Beetl2.7.16中文文档(2)之高级功能
- git 修改历史信息
- 歌尔2718硅咪 超小体积 S15OB383-058 S15OB381-055 S15OT421-001