老李分享: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个衡量软件质量的标准相关推荐

  1. 老李分享:系统可用性评估

    老李分享:系统可用性评估 移动互联网时代,似乎大家都在强调架构或服务的高可用,那什么是高可用性呢? 首先,我们来了解下什么是系统的可用性(System Usability),即系统服务不中断运行时间占 ...

  2. 老李分享:Web Services 组件 1

    老李分享:Web Services 组件 在过去的几年里,三大主流技术已经成为构成当今 web service 技术的全球标准.接下来我们来讨论一下这些技术. XML-RPC XML-RPC 是在计算 ...

  3. 老李分享:https协议

    老李分享:https协议 最近我们看到很多站点使用 HTTPS 协议提供网页服务.通常情况下我们都是在一些包含机密信息的站点像银行看到 HTTPS 协议. 如果你访问 google,查看一下地址栏,你 ...

  4. 老李分享:android手机测试之适配(1)

    老李分享:android手机测试之适配(1) Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念 ...

  5. 老李分享:HTTP协议之协议头

    老李分享:HTTP协议之协议头 当我们打开一个网页时,浏览器要向网站服务器发送一个HTTP请求头,然后网站服务器根据HTTP请求头的内容生成当次请求的内容发送给浏览器.你明白HTTP请求头的具体含意吗 ...

  6. 百度竞价新项目;关键词该怎么出价呢?有没有一个能衡量出价的标准?出价多少算高?

    大家好这里是阿八个人博客发布的,这是我一位朋友的经验总结:我发出来给大家也一起学习一下 首先我们描绘一个场景,当你刚进入到一家公司或是自己的新项目,要做竞价推广,账户是新开的,这时需要你拓展一些关键词 ...

  7. 老李分享:HTTP协议之请求和响应

    老李分享:HTTP协议之请求和响应 HTTP请求头详解: GET http://www.foo.com/ HTTP/1.1 GET是请求方式,请求方式有GET/POST http://www.foo. ...

  8. 老李分享:jvm垃圾回收

    老李分享:jvm垃圾回收 1.垃圾收集算法核心思想 java语言建立了垃圾回收机制,用于跟踪正在被使用(引用)的对象和没有被使用(引用)的对象,该机制可以有效防范动态内存分配中可能发生的两个危险:因垃 ...

  9. 老李分享:Mac快捷键

    老李分享:Mac快捷键 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询 ...

最新文章

  1. zabbix二次开发之从mysql取值在运维平台js图表展现
  2. 背口诀14天精通c语言pdf下载,C语言必背18个经典程序
  3. Office的Word设置指定页码
  4. IPV4 VS IPV6 谈谈省级ipv6的必要性
  5. java 手机号码归属地_【原创】Java实现手机号码归属地查询
  6. CNN: TensorFlow 1.14.0 更新
  7. 网站为什么 JS 调用尽量放到网页底部?
  8. 十面阿里Java程序员终拿下阿里P6offer
  9. 从获得字符串中获取数字
  10. Kettle (1) - 读取 CSV 文件
  11. php两段音频合成一个,使用PHP合并MP3文件的类,兼容php4、php5
  12. npm ERR! nested aliases not supported 报错原因
  13. AVB之镜像的签名及验证签名详解
  14. WindowsServer2019下使用Docker搭建内网GitLab
  15. 【NFS共享存储服务】
  16. FCoin重启调查:近2亿美元债务何去何从 |链捕手
  17. office出现错误无法安装的解决办法
  18. 2019中科院力学所研究生学术论坛随笔
  19. VM安装VMTool工具
  20. 公司某应用服务器被挂挖矿病毒处理流程

热门文章

  1. 扫描识别工具Dynamic Web TWAIN使用教程:单独添加/删除对象
  2. codevs——1044 拦截导弹(序列DP)
  3. PHP童鞋改JAVA代码怎么处理
  4. 子div撑不开父div的几种解决方法
  5. Linux进程学习(孤儿进程和守护进程)
  6. 多线程的处理 handler   handlerTread Intentservice
  7. GNUstep 运行gui程序
  8. 虚拟化架构下虚拟交换机和分布式虚拟交换机解析
  9. 计算机没考好的检讨书300百以上,考试没考好的万能检讨书300字(精选5篇)
  10. 高度固定 宽度裁剪_六一童装系列:女童汉服连衣服裁剪图分享及缝制工艺解说...