老李分享:5个衡量软件质量的标准
老李分享:5个衡量软件质量的标准
1. Sourc Lines of Code (SLOC)
统计代码行数可能是最简单的方法。它能体现软件的规模,为项目的发展和计划提供一些数据支撑。例如,我们每个月统计一次代码的行数,我们就能大体知道项目的发展情况。当然,这不是一个值得信赖的标准,因为有重构以及设计的因素。
SLOC 最好是统计 Source Logical Line of Code (SLLOC) 以获得更准确的信息。Logical code lines 不包含空行,单个括号行以及注释行。你可以通过 Metrics 这样的工具很容易的统计 SLLOC。
代码行数不应该被用来衡量开发效率。否则容易造成重复的,不易维护的和不专业的代码。
2. Bugs per code_section/module/time_period
问题跟踪是保证测试和可维护性的关键步骤。假如所有的问题(bug)都是有跟踪的话,每个代码单元,每个模块或者某个特定时间(day, week, month...)的问题就很容易被统计(例如 Mantis 工具)。当我们有了这些数据以后,问题的根源就可以被尽早发现并处理。
问题数量可以作为衡量开发质量的一个标准,但必须用的很小心。假如过分强调 bug 数量,那么开发和测试的关键就会很紧张。在一个有效率的公司,所有的员工都应该融洽的相处。
为了更好的对代码质量进行评估。Bug 可以分为 low, medium, high 三种级别,因为它们的重要性和修复的成本是不一样的。
3. Code Coverage
Code coverage 表明了代码被测试的程度。有很多工具可以自动统计这个数据,例如 Cobertura 。
Code coverage 不能说明单元测试的整体质量,但是能说明测试的覆盖面。它可以和其他一些指标一起用来衡量软件的质量。当然,我们也需要经常回顾单元测试代码和集成测试的用例。
4. Design/Development Contraints
软件开发中有很多设计规则,例如:
- 类/方法的长度
- 方法/属性的数量
- 方法的参数数量
- 特殊数值以及字符串的使用量
- 注释的比例
这些规则都是保证代码可读性和可维护性的重要指标。开发团队应该选择一些或者全部的规则来实施(例如 maven pmd plugin )。这将帮助提高软件产品的质量。
5. Cyclomatic Complexity(环路复杂度)
把环路复杂度单独列出来讲是因为它和其他的设计准侧不太一样。环路复杂度是关于代码实现和执行。它也可以通过工具自动计算,例如 pmd 。
这个数值是独立的代码执行路径数量。例如:
Cyclomatic Complexity = E(edges) - N(nodes) + 2P (exit nodes)
So, Cyc.Cmp. = 8 - 7 + 2*1 = 3
你也可以看到,从起点到终点,有三条不同的路径。这个值往往是针对方法来计算。根据不同的项目类型,我们可以设定这个值的上限,例如6,8,或者10。
一个指标不能说明整个项目的质量。使用更多的指标,会让你对项目的质量有更全面的了解。
转载于:https://blog.51cto.com/10988776/1722922
老李分享:5个衡量软件质量的标准相关推荐
- 老李分享:系统可用性评估
老李分享:系统可用性评估 移动互联网时代,似乎大家都在强调架构或服务的高可用,那什么是高可用性呢? 首先,我们来了解下什么是系统的可用性(System Usability),即系统服务不中断运行时间占 ...
- 老李分享:Web Services 组件 1
老李分享:Web Services 组件 在过去的几年里,三大主流技术已经成为构成当今 web service 技术的全球标准.接下来我们来讨论一下这些技术. XML-RPC XML-RPC 是在计算 ...
- 老李分享:https协议
老李分享:https协议 最近我们看到很多站点使用 HTTPS 协议提供网页服务.通常情况下我们都是在一些包含机密信息的站点像银行看到 HTTPS 协议. 如果你访问 google,查看一下地址栏,你 ...
- 老李分享:android手机测试之适配(1)
老李分享:android手机测试之适配(1) Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念 ...
- 老李分享:HTTP协议之协议头
老李分享:HTTP协议之协议头 当我们打开一个网页时,浏览器要向网站服务器发送一个HTTP请求头,然后网站服务器根据HTTP请求头的内容生成当次请求的内容发送给浏览器.你明白HTTP请求头的具体含意吗 ...
- 百度竞价新项目;关键词该怎么出价呢?有没有一个能衡量出价的标准?出价多少算高?
大家好这里是阿八个人博客发布的,这是我一位朋友的经验总结:我发出来给大家也一起学习一下 首先我们描绘一个场景,当你刚进入到一家公司或是自己的新项目,要做竞价推广,账户是新开的,这时需要你拓展一些关键词 ...
- 老李分享:HTTP协议之请求和响应
老李分享:HTTP协议之请求和响应 HTTP请求头详解: GET http://www.foo.com/ HTTP/1.1 GET是请求方式,请求方式有GET/POST http://www.foo. ...
- 老李分享:jvm垃圾回收
老李分享:jvm垃圾回收 1.垃圾收集算法核心思想 java语言建立了垃圾回收机制,用于跟踪正在被使用(引用)的对象和没有被使用(引用)的对象,该机制可以有效防范动态内存分配中可能发生的两个危险:因垃 ...
- 老李分享:Mac快捷键
老李分享:Mac快捷键 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询 ...
最新文章
- zabbix二次开发之从mysql取值在运维平台js图表展现
- 背口诀14天精通c语言pdf下载,C语言必背18个经典程序
- Office的Word设置指定页码
- IPV4 VS IPV6 谈谈省级ipv6的必要性
- java 手机号码归属地_【原创】Java实现手机号码归属地查询
- CNN: TensorFlow 1.14.0 更新
- 网站为什么 JS 调用尽量放到网页底部?
- 十面阿里Java程序员终拿下阿里P6offer
- 从获得字符串中获取数字
- Kettle (1) - 读取 CSV 文件
- php两段音频合成一个,使用PHP合并MP3文件的类,兼容php4、php5
- npm ERR! nested aliases not supported 报错原因
- AVB之镜像的签名及验证签名详解
- WindowsServer2019下使用Docker搭建内网GitLab
- 【NFS共享存储服务】
- FCoin重启调查:近2亿美元债务何去何从 |链捕手
- office出现错误无法安装的解决办法
- 2019中科院力学所研究生学术论坛随笔
- VM安装VMTool工具
- 公司某应用服务器被挂挖矿病毒处理流程
热门文章
- 扫描识别工具Dynamic Web TWAIN使用教程:单独添加/删除对象
- codevs——1044 拦截导弹(序列DP)
- PHP童鞋改JAVA代码怎么处理
- 子div撑不开父div的几种解决方法
- Linux进程学习(孤儿进程和守护进程)
- 多线程的处理 handler handlerTread Intentservice
- GNUstep 运行gui程序
- 虚拟化架构下虚拟交换机和分布式虚拟交换机解析
- 计算机没考好的检讨书300百以上,考试没考好的万能检讨书300字(精选5篇)
- 高度固定 宽度裁剪_六一童装系列:女童汉服连衣服裁剪图分享及缝制工艺解说...