发现和修复缺陷的成本如何随着时间的推移而增加。
作者 | Sanket
译者 | 姜松浩
责编 | 屠敏
出品 | CSDN(ID:CSDNNews)
以下为译文:
在软件开发工作流程中,检测和修复软件中缺陷的成本随着时间呈指数增长。修复现场的错误是非常昂贵的,而且风险很大-通常是一两个数量级。成本不仅在于当前浪费的时间和资源,而且还在于未来可能失去的情况。
大多数缺陷的成本高于防止它们的成本。缺陷在发生时很昂贵,花费的成本包括修复缺陷的直接成本和由于关系受损,业务损失以及开发时间损失导致的间接成本。 ——Kent Beck,, Extreme Programming Explained
以下图表由NIST提供,有助于可视化随着软件在软件开发的五个广泛阶段中的发展,在检测和修复缺陷方面的努力是如何增加的。
为了理解成本以这种方式增加的原因,让我们考虑以下几点:
-
当开发人员仍在编写代码时,更容易检测代码中的问题。由于代码在脑海中仍然很新鲜,因此即使解决很复杂的问题也会很容易。随着时间的推移,代码转移到后期阶段,开发人员需要记住所有内容并在问题解决之前找到问题。如果自动化系统(例如CQ集成)在开发人员仍在编写代码时突出显示代码中的问题,则出于同样的原因,他们更容易一并修复程序。
-
一旦软件处于测试阶段,在开发人员的本地环境中复制缺陷,这样就成为另一项耗时的任务了。另外,虽然很容易根据要求捕获明显损坏的或者不满足要求的东西,但是发现更基础的缺陷则是非常困难的,需要考虑内存泄漏、竞争条件等等。不幸的是,如果这些问题摆脱了编码阶段,它们通常在生产阶才会出现。
-
软件发布并投入使用后,不仅很难找到缺陷,而且风险也非常高。除了需要实时防止用户受到问题的影响外,还需要确保服务的可用性对业务至关重要。与早期修复这些缺陷的情况相比,这些影响的混合将导致成本将高达30倍。
减轻
上面的论点可以证明,让开发人员及早发现并经常检测的过程是很有价值的。本质上,开发工作流程应确保尽早检测到缺陷,最好是在代码由开发人员编写期间,或者在合并到主开发分支之前处于代码审查阶段的时候。
像CI这样的过程有助于确保对代码的更改很小,并且易于管理,因此这样更容易检测问题。跟踪代码覆盖率并确保某个阈值是有用的,并能促进对代码的迭代以解决这些问题。
从本质上讲,流程和约定,应该在工作流的早期围绕移动缺陷检测进行来设计,并且尽可能的接近开发人员的编码环境。这样,相同的复合效果却会增加后期有利于提高软件质量和弹性的缺陷检测工作的负面影响。
全面学python的时代,作为程序员你怎么看?
原文:https://deepsource.io/blog/exponential-cost-of-fixing-bugs/
本文为 CSDN 翻译,如需转载,请注明来源出处。作者独立观点,不代表 CSDN 立场。
热 文 推 荐
势逼 React Native,跨平台开发框架 Flutter 很凶猛 | 码书
黑客少年手机编 10 万行代码,恶意篡改 App 只为了 “炫技”?
☞在线公开课 | 从理论走向实践,多角度详解Cloud Native
☞中国区块链职业发展现状: 30岁前不做开发; 平均薪资仅38.4万; 跳槽薪资涨三成 (附完整报告下载资源)
System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在看吧!"
点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。
你点的每个“在看”,我都认真当成了喜欢


评论记录:
回复评论: