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。

一个指标不能说明整个项目的质量。使用更多的指标,会让你对项目的质量有更全面的了解。

原文链接,OSChina.NET 编译

5个衡量软件质量的标准(可自动化)相关推荐

  1. 老李分享:5个衡量软件质量的标准

    老李分享:5个衡量软件质量的标准 1. Sourc Lines of Code (SLOC)  统计代码行数可能是最简单的方法.它能体现软件的规模,为项目的发展和计划提供一些数据支撑.例如,我们每个月 ...

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

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

  3. 如何衡量软件质量好坏?

    作为测试人员肯定会被问如何评价一个软件质量的好坏.一般同学都会回答说,上线没 bug.但是一款软件如果没人用,那肯定没 Bug.所以没 bug 绝对不是一个好的评判标准. 那什么样的标准是好的标准? ...

  4. 计算机二级java判卷标准_计算机二级考试的有什么衡量的评分标准?

    他是按照评分点给分的.每个题目有不同的评分点.有多有少.有时候做出来效果看着一样,但是总没分. 不同科目有不同的评分标准.其中office是最复杂的.C语言相对简单. 本人上C语言课和office 课 ...

  5. 【软件质量与软件测试】

    文章目录 第一章 软件质量和测试的背景 1.1 软件特征与软件工程 软件的定义(IEEE) 计算机硬件vs计算机软件 软件具有与硬件完全不同的特征 硬件.软件失效曲线图 1.1.1 软件分类 当前的计 ...

  6. 【软件测试基础理论知识】软件质量、软件质量管理体系、软件质量特性

    1.软件质量 质量:质量是一个实体的所有特性,基于这些特性可以满足明显或者隐含的需求,而质量就是实体基于这些特征满足需求的程度. 软件质量的三个层次 1)从用户角度出发,质量即符合需求又能满足需求. ...

  7. 什么是软件质量?(解决你的迷茫)

    软件质量:反应一个实体满足明确的和隐含的需求能力的特性总和(满足用户明确的或隐含需求的程度) 根据软件定义就会发现软件质量是一个多层次的概念: 用户角度角度:质量既符合需求又满足用户需求 软件产品角度 ...

  8. 说好的团队为质量负责呢?

    现在回头看2016.2017年会发现那时候很多人热衷于写各种各样的技术文章(包括我关注的测试技术文章),写的也确实挺好,另外许多优秀的开源项目也是源至于那个时候,我是2016年进入现在的公司,现在细细 ...

  9. 学测试必看!测试理论知识之测试基础

    软件测试质量 1.1什么是质量 美国著名的质量管理专家朱兰(J.M.Juran)博士从顾客的角度出发,提出了产品 质量就是产品的适用性 质量:反映实体满足明确或隐含需要能力的特性总和. 1.2软件质量 ...

  10. 简要描述内部连接和外部连接之间的区别_创新性的M12推拉式连接器推拉标准—跨制造商自动化技术的里程碑...

    "八家知名制造商¬ – 菲尼克斯,浩亭,莫仕,穆尔电子,宾德,康耐,艾查和魏德米勒因建立M12推拉式连接器的推拉锁紧机制而在市场上确立了地位.我们共同追求一个目标,即确保各个制造商之间的兼容 ...

最新文章

  1. 使用TensorFlow跟踪千年猎鹰
  2. win8数据源设置mysql_Win8系统ODBC数据源有何重要功能?
  3. 清华成立“脑与智能”和“未来”两大实验室,跨学科AI深度融合
  4. QT5实践:如何应用窗口菜单
  5. WebAPI(part6)--自定义属性操作
  6. 上架相关——appstore 更新app版本
  7. [转]定了!2020年,6种将死的编程语言!
  8. Java环境搭建若干问题
  9. 【原创】利用腾讯和百度的AI接口识别验证码
  10. web-java-Java Concurrency Utilities
  11. 浏览器根对象window之caches
  12. 【物联网】全球SIM连接解决IoT设备换卡难问题
  13. MacBook 右键查询英文查词无法翻译成中文
  14. ubuntu20.04安装成功SecureCRT 9.0.1,全网首发!!
  15. 强大的健身软件——Keep
  16. MATLAB曲线绘制
  17. DevTools 无法加载源映射:无法加载chrome-extension://ncennffkjdiamlpmcbajkmaiiiddgioo/js/xl-content.js.map 的内容
  18. 用C语言实现my_strncat
  19. 别让自己“墙”了自己(2019.12.1)
  20. Mixamo:在线3D动漫角色生成平台

热门文章

  1. DiskGenius无损调整分区大小
  2. linux压缩和备份工具
  3. 分析匿名页(anonymous_page)映射
  4. xdp-ebpf 简介
  5. OpenCV读取UsbCam的图像
  6. UCOS II怎么查找当前就绪表中,优先级最高的任务
  7. 参数模型 非参数模型 生成模型 判别模型
  8. Java 程序员都该懂的 volatile 关键字
  9. 深度学习里的损失函数与交叉熵
  10. 信息熵 条件熵 信息增益 信息增益比 GINI系数