写点什么

使用复杂度度量去改进软件质量

  • 2014-10-27
  • 本文字数:967 字

    阅读完需:约 3 分钟

复杂度度量可以用来评估开发和测试活动,决定应该对哪里进行重构以提升质量和预防问题。在 QA&Test 2014 conference 大会上,来自于英特尔的 Shashi Katiyar 就有效利用针对软件质量改进的复杂度度量提出了自己的见解。

复杂度是一种不同的软件元素间交互的度量。按照 Shashi 的说法,软件复杂度直接反映了软件的质量和成本:如果代码复杂度比较高,那么这段代码的质量就会比较低,而且它的维护成本也会比较高。

Shashi 提出,如果软件产品中有复杂的代码,那么组织会面临以下的问题:

  • 较高的缺陷风险
  • 难以增加新的功能
  • 难以理解或维护这段代码
  • 难以验证

你可以使用 McCabe 圈复杂度来度量复杂度。这种度量规定了代码中线性独立的路径条数,它反映了测试难度和软件的可靠性。它可以用来评估开发和维护工作量。

基于复杂度数据,你掌握要覆盖所有路径最少需要多少测试用例。复杂度数据可以帮助你去:

  • 集中力量搞好复杂的模块
  • 找到最有效的测试技术
  • 了解停止测试的时机
  • 增加软件的可测试性

Shashi 解释说,你在软件系统的管理中做到更具可预测性:

在任何软件产品开始工作之前,如果有人知道它是一个复杂的模块,那么就有可能在评估期为它赋予一些额外的时间。了解了复杂度能够预先帮助项目团队去进行评估,这种做法要胜过在开发和测试期去关注它,从而确保不会让产品的质量做出妥协。

英特尔收集了复杂度度量和模块变更数量的数据。这些复杂度数据结合了客户记录的缺陷。如果一个模块是复杂的,并且由于缺陷进行了大量的变更,那么就决定去重构它。在重构之前他们确保有覆盖这些代码的测试用例。这种工作方式增加了重构的投资收益率。

Shashi 探讨了他所看到的软件开发复杂度与质量相关的挑战:

在竞争激烈瞬息万变的环境中,公司通过为它的用户提供更多的特性来努力使它的服务有所不同。这就导致了大量的代码行和复杂度,这是个大挑战。如果未采用适当的预防措施去管理产品的复杂度,那么很快这些产品就将成为难以维护的产品。随着时间的推移,很多公司都不在使用老代码和老技术了,他们知道自己的系统太复杂了,把它们进行新技术的移植是一项极其复杂的任务。

“在高复杂度的环境中,创新和开发高质量软件是极其重要的”Shashi 说。“组织可以设定去减少所有高复杂度程序的复杂度,更加频繁地变更以改进他们软件的质量”。

查看英文原文: Using Complexity Measurements to Improve Software Quality

2014-10-27 08:222623

评论

发布
暂无评论
发现更多内容

领跑数字化转型:望繁信科技荣登「2024智能自动化技术商Top 15」榜单

望繁信科技

数据挖掘 流程挖掘 流程资产 流程智能

Appium控件互动攻略:提升自动化测试效率的必备方法大揭秘!

测试人

软件测试 自动化测试 测试开发

提示词优化的自动化探索:Automated Prompt Engineering

Baihai IDP

程序员 AI 企业号 4 月 PK 榜 Prompt Engineering 提示词工程

香港的云主机怎么样?为网站运行和响应有哪些帮助?

一只扑棱蛾子

云主机

4款值得推荐的AI辅助编程工具(支持C#语言)

EquatorCoco

人工智能 AI 开发语言

实践探讨Python如何进行异常处理与日志记录

华为云开发者联盟

Python 开发 华为云 华为云开发者联盟 企业号2024年4月PK榜

青椒云桌面玩转AIGC应用部署

青椒云云电脑

云桌面 AIGC

HCDG天津站精彩回顾 | AI高效开发, ModelArts技术动手工作坊

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号2024年4月PK榜 华为云HCDG

大模型,为什么非得和「弱智吧」过不去?

白洞计划

AI

大模型,为什么非得和「弱智吧」过不去?

脑极体

AI

IAM赋能数字化转型

芯盾时代

iam 统一身份认证 业务安全

Qualcomm QCN6224 vs MediaTek MT7915, challenging the limit of transmission speed

wifi6-yiyi

5G wifi

文本向量化模型新突破——acge_text_embedding 勇夺 C-MTEB 榜首

中杯可乐多加冰

rag 文本嵌入模型 文本向量化 文本嵌入

《2023年度快团团行业洞察报告》呱呱爆品重磅发布!

Geek_2d6073

揭露 FileSystem 引起的线上 JVM 内存溢出问题

vivo互联网技术

JVM 内存泄露 OOM 内存溢出

性能问题分析优化实践案例

老张

高可用 性能优化 性能测试 稳定性保障

火山引擎ByteHouse:OLAP如何支持超高QPS点查?

字节跳动数据平台

大数据 企业号2024年4月PK榜

淘宝/天猫商品评论API:实时追踪用户反馈,洞悉市场动态

技术冰糖葫芦

api 货币化 API 文档 pinduoduo API

Appium控件互动攻略:提升自动化测试效率的必备方法大揭秘!

测吧(北京)科技有限公司

测试

以算力深挖数据应用价值!和鲸助力北京市市场监管数据应用创新竞赛圆满收官!

ModelWhale

大数据 数据应用 数据大模型

大模型的现在进行时:走出对话框,走向产业端

Alter

观测云产品更新 | 管理、容器、异常追踪、场景图表、DQL等

观测云

监控

大模型区域落地再加速!百度“文心中国行”西部首站落地成都锦江

飞桨PaddlePaddle

百度 BAIDU 百度飞桨 文心一言 文心大模型

网站打开504,504网关超时可能是哪些原因导致

德迅云安全杨德俊

Pandabuy VS Wegobuy哪个代购系统强?类似软件哪家公司开发

tbapi

淘宝代购系统 Pandabuy wegobuy 代购系统

使用复杂度度量去改进软件质量_软件工程_Ben Linders_InfoQ精选文章