7月QCon广州站2022,关注Web 3.0、数据架构选型、数字化转型等热门话题,点击了解 了解详情
写点什么

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

  • 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:221953

评论

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

两届获奖选手 手把手教你如何征战华为软件精英挑战赛

科技热闻

Java开发规范(一)

DC.夜猫

开发 规范 开发规范 java

基于信息检索和深度学习结合的单元测试用例断言自动生成

华为云开发者联盟

深度学习 单元测试 信息检索

十年架构师经验,写下这篇Java高并发总结,堪称教科书级

不想秃头

Java 程序员 高并发 并发

一个轻量的数据库数据告警器

山河已无恙

Java 数据监控

漫画 | 新一代软件架构会影响到谁?

阿里巴巴云原生

阿里云 云原生 事件总线 EventBridge

Python图像处理丨图像缩放、旋转、翻转与图像平移

华为云开发者联盟

Python 图像平移 图像缩放

实践GoF的设计模式:工厂方法模式

华为云开发者联盟

设计模式 工厂方法模式

JVM 线上问题定位实战(CPU 飙升)

Ayue、

JVM

第二章 启航

Geek_古藤模根

图数据库实战 gremlin 入门 Gremlin

相较国外代码托管平台 gitlab,咱们中国自己的代码托管平台有哪些优势?

阿里云云效

云计算 阿里云 代码管理 代码托管 代码安全

企业智能化转型meetup回顾|开源BI & AI助力企业转型之旅三阶段!

第四范式开发者社区

人工智能 开源 企业 大数据平台 智能化转型

一、KVM虚拟化的功能特性

穿过生命散发芬芳

kvm 5月月更

如何实现文档协作共享?

小炮

喜报|海泰方圆成功入选中国档案学会单位会员

电子信息发烧客

平行云CEO 李岩:CloudXR ,开启通往元宇宙的通道

阿里云弹性计算

XR 元宇宙

vue番茄钟&electron打包

空城机

Electron vue cli 5月月更

Hoo联合SwapAll发布赏金活动 用户可体验“救援任务”瓜分赏金奖池

区块链前沿News

SAP Hoo

2022Gartner容器预测:2025年85%的企业将使用容器管理服务

York

容器 云原生 数字化转型

netty系列之:在netty中使用UDP协议请求DNS服务器

程序那些事

Java Netty 程序那些事 5月月更

【C 题集】of Ⅲ

泽En

5月月更

英特尔以“整合论”谋篇布局,加码数据中心

科技之家

【直播回顾】参与文档贡献,开启OpenHarmony社区贡献

OpenHarmony开发者社区

OpenHarmony

这道静态变量题,我居然考了0分

华为云开发者联盟

Java 静态变量 Java static

图分析的22种算法与图形理解

情报分析师

数据分析 知识图谱 图算法 图论 知识结构

OpenClusterManagement 开源之夏 2022 来了

阿里巴巴云原生

阿里云 云原生 开源之夏

中兴通讯加入龙蜥社区,共建ICT全场景开源生态

OpenAnolis小助手

开源 生态 龙蜥社区 CLA 中兴通讯

明源云天际PaaS平台,构建零代码、低代码在线协同开发实践

科技热闻

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