在软件开发中,软件质量是衡量软件是否符合需求、标准的重要体现。除了 代码质量外,影响软件整体质量的因素还有很多。因此,要确保软件的整体质量,就需要在各个环节严格控制。

本文列出了衡量软件质量的5个最常用的指标。

1.  SLOC(Source Lines of Code,源代码行)

计算代码行数可能是最简单的衡量指标,主要体现了软件的规模,并为项目增长和规划提供了相关数据。例如,如果每月统计一次代码的行数,就可以绘制一个项目发展概览图。当然,由于存在项目重构或是设计阶段等因素,这种方式并不太可靠,但是可以为项目的发展提供一个视角。

可以只统计逻辑代码行(Source Logical Line of Code,SLLOC),这样可以获得稍准确的信息。逻辑代码行不包含空行、单个括号行和注释行。可以使用 Metrics工具来统计。

代码行数不应该用来评估开发者的效率,否则,可能会产生重复、不可维护的或不专业的代码。

2.  每个代码段/模块/时间段中的bug数

要想实现更好的测试以及更高的可维护性,bug跟踪是必不可少的。每个代码段、模块或时间段(天、周、月等)内的bug可以很容易通过工具统计出来(如 Mantis)。这样,可以及早发现并及时修复。

Bug数可以作为评估开发者效率的指标之一,但必须注意,如果过分强调这种评估方法,软件开发者和测试者可能会成为敌人。在生产企业中,要保证员工彼此之间的凝聚力。

为了更好的实现评估,可以根据重要性和解决成本将bug划分为低、中、高三个级别。

3.  代码覆盖率

在单元测试阶段,代码覆盖率常常被拿来作为衡量测试好坏的指标,也用来考核测试任务完成情况。可以使用的工具也有很多,如 Cobertura等。

代码覆盖率并不能代表单元测试的整体质量,但可以提供一些测试覆盖率相关的信息,可以和其他一些测试指标一起来使用。

此外,在查看代码覆盖率时,还需注意单元测试代码、集成测试场景和结果等。

4.  设计/开发约束

软件开发中有很多设计约束和原则,其中包括:

  • 类/方法的长度
  • 一个类中方法/属性的个数
  • 方法/构造函数参数的个数
  • 代码文件中魔术数字、字符串的使用(魔术数字指直接写在代码中的具体数值,其他人难以理解数字的意义)
  • 注释行比例等

代码的可维护性和可读性是很重要的,开发团队可以选择以上这些原则中的一个或全部,并通过一些自动化工具(如 maven pmd插件)来遵循这些原则,这将大大提高软件产品的质量。

5.  圈复杂度(Cyclomatic Complexity)

圈复杂度是用来衡量一个模块判定结构的复杂程度,已经成为评估软件质量的一个重要标准,能帮助开发者识别难于测试和维护的模块,在成本、进度和性能之间寻求平衡。圈复杂度可以使用 pmd工具来自动化计算。

圈复杂度数量上表现为独立路径的条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护。

计算公式为:Cyclomatic Complexity = E - N + 2P

E:边,代表节点间的程序流;
N:节点,程序中代码的最小单元
P:出口节点

上图中共8条边,7个节点,因此圈复杂度为8 - 7 + 2*1=3。可以看出,从最左边的节点到最右边的节点有3条不同的路径。在项目开发中,可以根据项目类型,来定义上限数((6、8或10等)。

以上是最常用的5种软件质量度量指标,当然,还可以结合其他的指标,对项目有一个更清晰的认识。

5 个常用的软件质量指标相关推荐

  1. 计算机办公实用技能项目实践教程,计算机常用办公软件应用/21世纪计算机科学与技术实践型教程...

    本教材根据多年的教学经验和学生的特点,循序渐进地介绍办公软件Office2007的操作与使用方法,内容全面,文字阐述清楚,注重理论与实践操作的紧密结合. 全书分为4章,第1章介绍Word2007字处理 ...

  2. qq空间网页版电脑_常用QQ软件,电脑C盘快满了,占用太多空间,如何快速清理?...

    常用QQ软件,电脑C盘快满了,占用太多空间,如何快速清理? 如果你的QQ软件经常使用,并且加入的群比较多! QQ群内的图片和消息会非常地多! 如果QQ软件是采用默认安装到C盘的方式, 那么C盘将很快点 ...

  3. 编程用的记事本软件_数控常用编程软件那么多,你用哪一种?

    数控编程同计算机编程一样也有自己的 "语言",不同的是 ,现在计算机市场以微软的 Windows 为绝对优势 .数控系统还没有哪一家占据绝对优势,也就是说 数控系统一时还不能达到相 ...

  4. [转]常用OCR软件介绍

    转载出处:http://blog.csdn.net/zhulinu/article/details/9095585 常用OCR软件介绍 1.ABBYY ***ABBYY FineReader 简介:驰 ...

  5. 计算机工具软件应用考试,《计算机常用工具软件》期中考试题

    <计算机常用工具软件>期中考试题 一.单选题 1.使用PartitionMagic创建新分区时,默认的文件系统类型是() A.FAT16 B.FAT32 C.NTFS D.Linux Ex ...

  6. 日常使用计算机工具软件,计算机常用工具软件的使用.doc

    计算机常用工具软件的使用.doc 计算机常用工具软件的使用 摘要:本文初略的介绍了几种计算机常用工具软件的使用,并由此宣扬熟练,灵活的把计算机当作日常生活中处理问题,解决问题的一种重要工具的理念. 关 ...

  7. 大学计算机基础英语翻译,大学计算机基础 教学课件 978 7 302 21247 8 第7章 常用工具软件.pdf...

    第7章 常用工具软件 7.1 文件压缩工具--WinRAR 7.2 图片浏览工具--ACDSee 7.3 常用杀毒工具--RISING 7.4 硬盘备份工具--Ghost 7.5 翻译工具--金山词霸 ...

  8. android测光代码,常用测光表软件:Android篇

    <常用测光表软件:Android篇>由会员分享,可在线阅读,更多相关<常用测光表软件:Android篇(5页珍藏版)>请在人人文库网上搜索. 1.常用测光表软件:Android ...

  9. 如何将常用的软件上传到ESXi本地存储中管理

    一.如何将常用的软件上传到ESXi本地存储中管理 在使用虚拟机时,我们可能需要多个软件.比如部署操作系统需要CentOS或者Windows的镜像,再基于操作系统安装数据库可能有需要SQLServer. ...

最新文章

  1. 美团语音交互部招聘NLP/知识图谱/语音识别等算法职位(可实习)
  2. [原创]使用ajaxFileUpload.js上传文件时附带额外参数。
  3. CSS基础必备知识点05
  4. HTML5 address元素
  5. 利用递归遍历文件夹和文件存入TreeView
  6. MySQL Innodb_flush_method
  7. log4j.dtd_Eclipse log4j.xml –无法将log4j.dtd验证为XML定义
  8. NS各种常用资料(转)
  9. Jmeter学习笔记ONE
  10. LA 2218 Triathlon(半平面交)
  11. php数据多层关联,php – 我们如何进行laravel多级关联
  12. 阿里云服务器无法远程连接mysql数据库_关于远程连接MySQL数据库的问题解决
  13. Linux中fasttext安装
  14. 前端学习——Js(JavaScript)入门
  15. handsome优化 - AMP/MIP阅读
  16. 关于PoE供电,你想知道的这里都有
  17. Spanning-tree fast features配置案例
  18. Python的简单代码:两天肝出画函数图像(散点图)的程序(不用matplotlib)(含白菜也能看懂的超超超详细讲解和源代码哦)
  19. Hadoop 笔记(五)配置历史服务器
  20. 【文件格式_XML_HTML_】XML、HTML文件

热门文章

  1. 【转】ABP源码分析三十四:ABP.Web.Mvc
  2. 【转】C# 数据流详解(FileStream、MemoryStream、NetworkStream等类)
  3. 【转】wpf从我炫系列1----布局控件的使用(上)
  4. 什么是RPA 现在都有哪些产品
  5. [你必须知道的.NET]第二十回:学习方法论
  6. WSS 数据库表中的 UserInfo 表中的 tp_SystemId 字段的使用
  7. linux make怎么运行,Linux Make 命令教程
  8. hive或mysql报错Too many connections
  9. REVERSE-PRACTICE-BUUCTF-6
  10. 【牛客 - 303B第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Fibonacci and Counting(Fib数性质,gcd辗转相除法性质)