软件质量度量维度

简介: 软件质量度量维度

大家好,我是阿萨。 前几期学习了Dod 和技术债务相关内容。今天学习一个质量相关内容,如何度量软件质量好坏。每个人都希望拥有更好质量的东西。没有人喜欢质量差的东西。那如何知道哪个软件质量好,哪个软件质量差呢? 我们先看看软件对我们的影响。一般软件公司里,生产的软件的质量可以决定一些很重要的事情:

  • 公司的收入,质量好,公司收入增加,反之,亦然。
  • 项目或产品的优先级,质量好的软件,相对优先级都会更高一些。
  • 研发团队的升迁,质量好,更容易升迁。
  • 研发团队薪资, 质量好的,工资更高一些。


每个人都知道质量很重要,但是什么是软件质量呢?在本文中,我们将描述软件质量的几个度量维度。我们讨论的前四个方面——可靠性、效率、安全性和可维护性——来自著名的CISQ软件质量模型。我们还将介绍在更现代、敏捷的软件开发环境中涉及的更多质量度量维度。


一、可靠性


可靠性指的是软件产品固有的风险水平,以及它失败的可能性。它还处理了ISO所定义的“稳定性”:当进行更改时,软件中存在回归的可能性有多大。

近年来出现的一个相关术语是“弹性”。这从一个不同的方向看问题,问软件处理不可避免发生的故障的能力是什么。例如,基于容器化微服务的现代应用程序在出现故障时可以轻松自动地重新部署,从而使它们具有很强的弹性。

为什么要测量可靠性?减少和防止可能影响用户和降低用户满意度的严重故障或中断以及错误。如果软件不经常发生故障,那么它就更好,并且在发生故障时很容易从故障中恢复。

如何衡量可靠性?


生产事故——衡量系统可靠性的一个很好的方法是在生产中识别出的高优先级错误的数量。

可靠性测试——常见的可靠性测试类型有负载测试和回归测试,前者检查软件在高负载下的功能,后者检查软件发生更改时引入了多少新缺陷。随着时间的推移,这些测试的汇总结果可以用来衡量软件的弹性。

可靠性评估——由专家进行的深入测试,他们构建一个操作环境,模拟软件将在其中运行的真实环境。在这个模拟环境中,他们测试软件如何在稳定状态下工作,并具有一定的预期增长(例如更多的用户或更高的吞吐量)。

平均故障率——测量每个部署单元或软件用户在每个时间段内的平均故障数。


平均故障间隔时间(MTBF)——用于测量正常运行时间,或软件在下一次重大故障发生之前正常工作的时间。


性能


在CISQ软件质量模型中,也被称为“效率”。通常,影响应用程序性能的最重要的因素是它的源代码是如何编写的,它的软件架构以及该架构中的组件:数据库、web服务器等。可伸缩性也是性能的关键:能够向上和向下扩展的系统可以适应不同级别的所需性能。


性能在算法或事务处理等领域尤其重要,在这些领域中需要非常快速地处理大量数据,即使很小的延迟也可能导致严重的问题。但是今天,性能变得普遍重要,因为web和移动应用程序的用户要求高性能,如果系统不能快速响应,他们很快就会感到沮丧。


为什么要衡量绩效?了解用户体验到的性能水平,以及它如何影响他们对软件的使用。如果软件达到或超过用户期望的性能水平,那么它就是更好的软件。


如何衡量软件性能?


负载测试——用于理解系统在特定负载下的行为,例如,有1,000个并发用户。

压力测试——了解系统容量的上限。

耐力测试-检查系统是否可以在较长时间内处理一定的负载,以及性能何时开始下降。

应用程序性能监视(APM)——这是一种新的软件类别,可以从用户的角度提供详细的性能度量。


安全


在软件质量的上下文中,安全性反映了攻击者由于糟糕的编码实践和架构而破坏软件、中断其活动或获取敏感信息的可能性有多大。安全中的一个核心概念是“漏洞”——可能导致安全问题或漏洞的已知问题。在系统中发现的漏洞的数量和严重程度是其安全级别的重要指标。

为什么要衡量安全性?用户越来越依赖软件来执行与个人生活和业务相关的敏感操作。如果软件不容易受到安全漏洞的影响,那么它就更好。

如何衡量软件安全性?


漏洞数量——可以扫描软件应用程序来识别已知的漏洞。发现的漏洞数量是安全性的一个很好的(消极的)衡量标准。


从时间到解决——从软件中引入漏洞到发布修复或补丁需要多长时间?安全更新的部署——对于部署在用户设备上的软件,有多少用户实际安装了补丁或安全更新?实际安全事件,严重程度和总攻击时间——系统实际被破坏了多少次,破坏对用户的影响有多严重,持续了多长时间?


可维护性和代码质量


软件可维护性是指软件适应其他用途的难易程度,它在不同环境之间的可移植性,以及它是否可以从一个开发团队或从一个产品转移到另一个产品。可维护性与代码质量密切相关。如果代码是高质量的,软件可能更容易维护。

代码质量很难定义,但大多数专家认为高质量的代码使用编码约定,可读性强,文档记录良好,可重用并避免重复,勤奋地处理错误,有效地使用资源,包括单元测试,并符合安全最佳实践。

为什么要度量可维护性和代码质量?这是软件质量的一个方面,对开发软件的组织更重要,但它也间接影响用户。如果软件是可维护的,那么它就更好,因为它将花费更少的时间和成本来适应用户不断变化的需求。具有高质量代码的可维护软件也更有可能提高可靠性、性能和安全性。

如何衡量可维护性和代码质量?


代码行数——对系统的可维护性有影响的一个非常简单的度量。拥有更多代码行的软件往往更难维护,也更容易出现代码质量问题。


静态代码分析——自动检查代码,以识别问题并确保代码符合行业标准。静态分析直接在代码上完成,而不实际执行软件。


软件复杂度度量——有几种方法可以度量软件的复杂程度,比如圈复杂度和n节点复杂度。更复杂的代码可能更难以维护。


发布频率


在敏捷开发环境中,软件的新迭代可以快速交付给用户。今天,许多组织每周、每天、甚至一天几次发布他们的软件的新版本。这被称为持续交付,或其极端形式的持续部署,其中对软件的每个更改都立即交付到生产环境。

软件交付的速度与质量有关,因为软件系统的新版本通常包含可能影响用户的改进。从理论上讲,向用户发布版本的频率越高,用户就能更快地得到更好的软件。
如何衡量软件交付率?


软件发布的数量——这是衡量新软件交付给用户的频率的基本指标。在特定时间段内“完成”的敏捷故事——计算实际交付给用户的“故事”或用户需求的数量,提供了更细粒度的交付速度度量。
使用软件的用户数量——例如,衡量下载或安装新补丁或软件更新的用户数量。


、总结


在成熟的组织中,软件质量的各个方面都有自动和手动测试。定期测试软件的可靠性、性能、安全性和代码质量。这些测试的结果通常是软件质量的一个很好的度量:如果通过所有这些类别的测试的比例更大,那么软件的质量可能更高。



相关文章
|
数据采集 运维 监控
|
存储 SQL 缓存
Hadoop入门(一篇就够了)
Hadoop入门(一篇就够了)
28182 4
Hadoop入门(一篇就够了)
|
SQL 算法 安全
『软件工程5』详解软件项目管理之软件的度量
该文章深入讲解了软件项目管理中软件度量的重要性,包括如何进行有效的度量、度量的目的以及如何利用度量结果来改进软件质量和开发过程。
『软件工程5』详解软件项目管理之软件的度量
|
移动开发 前端开发 Android开发
【Uniapp 专栏】Uniapp 相较于其他跨平台框架的优势
【5月更文挑战第15天】Uniapp 是一款高效率的跨平台框架,一套代码可生成 iOS、Android、H5 等应用,减少重复工作。它具有强大兼容性,保证各平台稳定运行,提供一致体验。Uniapp 社区活跃,资源丰富,学习曲线平缓,适合新手。性能优化出色,可扩展性强,全面支持前端技术,降低开发和维护成本。因此,Uniapp 成为跨平台开发的热门选择。
451 0
【Uniapp 专栏】Uniapp 相较于其他跨平台框架的优势
|
敏捷开发 数据可视化 安全
测试度量指标
测试度量指标
328 0
|
开发者
如何画业务架构图
如何快速上手画业务架构图
10813 2
|
Java 项目管理 Maven
Java一分钟之-Maven profiles与dependencyManagement
【6月更文挑战第5天】本文探讨了Maven的profiles和dependencyManagement特性在Java项目管理中的应用,包括基本概念和常见问题。Profiles用于根据不同环境激活配置,易错点在于忘记激活,应通过命令行或设置默认profile来避免。dependencyManagement集中管理依赖版本,过度依赖会导致子模块灵活性降低,应合理使用。结合两者,可在不同环境中控制依赖版本,提高项目配置效率。
407 8
|
运维 监控 安全
【阿里云云原生专栏】云原生时代的 DevSecOps:阿里云的安全开发流程实践
【5月更文挑战第28天】在云原生时代,面对安全新挑战,阿里云践行DevSecOps理念,将安全贯穿于开发运维全过程。通过安全需求分析、设计、代码审查、测试及持续监控,确保云原生应用安全。例如,Kubernetes配置中加入安全设置。阿里云还提供多种安全服务和工具,如身份认证、云防火墙等,助力用户构建安全可靠的云应用,为数字化转型保驾护航。
349 4
|
存储 安全 大数据
蚂蚁数科MAPPIC密态计算云平台入驻阿里云计算巢,打造云上密态计算服务
蚂蚁数科MAPPIC密态计算云平台入驻阿里云计算巢,打造云上密态计算服务
|
安全 网络协议 算法
电脑病毒木马的清除和防范方法
电脑病毒木马的清除和防范方法
2615 0
电脑病毒木马的清除和防范方法
下一篇
开通oss服务