@程序员,你敢轻易地写 Bug 吗?

640?wx_fmt=gif

发现和修复缺陷的成本如何随着时间的推移而增加。

 

640?wx_fmt=jpeg

作者 | Sanket

译者 | 姜松浩

责编 | 屠敏

出品 | CSDN(ID:CSDNNews)

以下为译文:

在软件开发工作流程中,检测和修复软件中缺陷的成本随着时间呈指数增长。修复现场的错误是非常昂贵的,而且风险很大-通常是一两个数量级。成本不仅在于当前浪费的时间和资源,而且还在于未来可能失去的情况。

大多数缺陷的成本高于防止它们的成本。缺陷在发生时很昂贵,花费的成本包括修复缺陷的直接成本和由于关系受损,业务损失以及开发时间损失导致的间接成本。 ——Kent Beck,, Extreme Programming Explained

以下图表由NIST提供,有助于可视化随着软件在软件开发的五个广泛阶段中的发展,在检测和修复缺陷方面的努力是如何增加的。

640?wx_fmt=jpeg

为了理解成本以这种方式增加的原因,让我们考虑以下几点:

  • 当开发人员仍在编写代码时,更容易检测代码中的问题。由于代码在脑海中仍然很新鲜,因此即使解决很复杂的问题也会很容易。随着时间的推移,代码转移到后期阶段,开发人员需要记住所有内容并在问题解决之前找到问题。如果自动化系统(例如CQ集成)在开发人员仍在编写代码时突出显示代码中的问题,则出于同样的原因,他们更容易一并修复程序。

  • 一旦软件处于测试阶段,在开发人员的本地环境中复制缺陷,这样就成为另一项耗时的任务了。另外,虽然很容易根据要求捕获明显损坏的或者不满足要求的东西,但是发现更基础的缺陷则是非常困难的,需要考虑内存泄漏、竞争条件等等。不幸的是,如果这些问题摆脱了编码阶段,它们通常在生产阶才会出现。

  • 软件发布并投入使用后,不仅很难找到缺陷,而且风险也非常高。除了需要实时防止用户受到问题的影响外,还需要确保服务的可用性对业务至关重要。与早期修复这些缺陷的情况相比,这些影响的混合将导致成本将高达30倍。

 

640?wx_fmt=png

减轻

 

上面的论点可以证明,让开发人员及早发现并经常检测的过程是很有价值的。本质上,开发工作流程应确保尽早检测到缺陷,最好是在代码由开发人员编写期间,或者在合并到主开发分支之前处于代码审查阶段的时候。

像CI这样的过程有助于确保对代码的更改很小,并且易于管理,因此这样更容易检测问题。跟踪代码覆盖率并确保某个阈值是有用的,并能促进对代码的迭代以解决这些问题。

从本质上讲,流程和约定,应该在工作流的早期围绕移动缺陷检测进行来设计,并且尽可能的接近开发人员的编码环境。这样,相同的复合效果却会增加后期有利于提高软件质量和弹性的缺陷检测工作的负面影响。

全面学python的时代,作为程序员你怎么看?

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

原文:https://deepsource.io/blog/exponential-cost-of-fixing-bugs/

本文为 CSDN 翻译,如需转载,请注明来源出处。作者独立观点,不代表 CSDN 立场。

640?wx_fmt=jpeg

 热 文 推 荐 

让苹果“沦为配角”的华为都发布了什么?

势逼 React Native,跨平台开发框架 Flutter 很凶猛 | 码书

黑客少年手机编 10 万行代码,恶意篡改 App 只为了 “炫技”?

☞日本高中生开发酷炫“扔瓶子”机器人,想砸谁就砸谁

苹果春季发布会:库克绝不玩别人玩剩下的!

在线公开课 | 从理论走向实践,多角度详解Cloud Native

中国区块链职业发展现状: 30岁前不做开发; 平均薪资仅38.4万; 跳槽薪资涨三成 (附完整报告下载资源)

上海交大CV博导微信群辱骂学生,已停止教学

现实!程序员只有跳槽才能涨薪吗?


 

System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在看吧!"

640?wx_fmt=gif点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

640?wx_fmt=png你点的每个“在看”,我都认真当成了喜欢

展开阅读全文

你敢吗?抛砖引玉的问题,值得一看

07-13

路过的技术牛人,想请教一个问题。我想用fork产生3个子进程,分别执行不同的任务。并且给他们设定不同的优先级,让他们按照优先级执行。rn我的代码在下面。进程1,child1的优先级是14.child2的优先级是10.child3的优先级是-3.按道理应该是子进程child3先执行。rnrn#includern#includern#includern#includern#includern#includernrnrnvoid main()rnrn pid_t father,child1,child2,child3;rn int prio;rn father=getpid();rn setpriority(PRIO_PROCESS,0,20);rn //nice(10);rn printf("the father ID is : %d\n",father);rn prio=getpriority(PRIO_PROCESS,0);rn printf("the father priority is %d\n",prio);rn child1=fork();rn if(child1==0) rn setpriority(PRIO_PROCESS,0,14);rn prio=getpriority(PRIO_PROCESS,0);rn printf("the child one ID is : %d\n",getpid());rn printf("the child one priority is %d\n",prio);rn rn else if(child1>0)rn child2=fork();rn if(child2==0) rn setpriority(PRIO_PROCESS,0,10);rn prio=getpriority(PRIO_PROCESS,0);rn printf("the child two ID is : %d\n",getpid());rn printf("the child two priority is %d\n",prio);rn rn else if(child2>0)rn child3=fork();rn if(child3==0) rn setpriority(PRIO_PROCESS,0,-3);rn prio=getpriority(PRIO_PROCESS,0);rn printf("the child three ID is : %d\n",getpid());rn printf("the child three priority is %d\n",prio);rn rn else if(child3>0) rn printf("my ID is %d\n",getpid());rn printf("my prio is %d\n",getpriority(PRIO_PROCESS,0));rn rn rn rn rnrnrnrn执行结果是:rn先执行1,再 2,再3rn 论坛

程序员你有亚健康吗?

02-20

什么是亚健康?rn 按照医学界的说法,亚健康是“介于健康与疾病之间的一种生理功能低下的状态”。实际上就是我们常说的“慢性疲劳综合征”。因为其表现复杂多样,现在国际上还没有一个具体的标准化诊断参数。rn  亚健康就是指人体虽然没有发病,但身体或器官中已经有危害因子或危害因素的存在,这些危害因子或危害因素,就像是埋伏在人体中的定时炸弹,随时可能爆炸;或是潜伏在身体中的毒瘤,缓慢地侵害着肌体,如不及时清除,就可导致发病。rnrn什么人容易受亚健康困扰?rn  根据调查发现,处于亚健康状态的患者年龄多在18至45岁之间,其中城市白领、尤其是女性占多数。这个年龄段的人因为面临高考升学、商务应酬、企业经营、人际交往、职位竞争等社会活动,长期处于紧张的环境压力中,如果不能科学地自我调适和自我保护,就容易进入亚健康状态。你是不是处于亚健康状态? rn  亚健康现在还没有明确的医学指标来诊断,因此易被人们所忽视。一般来说,如果你没有什么明显的病症,但又长时间处于以下的一种或几种状态中,注意亚健康已向你发出警报了:失眠、乏力、无食欲、易疲劳、心悸,抵抗力差、易激怒、经常性感冒或口腔溃疡、便秘等等。处在高度紧张工作、学习状态的人应当特别注意这些症状。 rnrn【传统医学中的“亚健康”】rn1、精神紧张,焦虑不安 2、孤独自卑,忧郁苦闷 rn  3、注意分散,思考肤浅 4、容易激动,无事自烦rn  5、记忆闭塞,熟人忘名 6、兴趣变淡,欲望骤减rn  7、懒于交往,情绪低落 8、易感疲劳,眼易疲倦rn  9、精力下降,动作迟缓 10、头昏脑胀,不易复原rn  11、久站头晕,眼花目眩 12、肢体松软,力不从愿 rn  13、体重减轻,体虚力单 14、不易入眠,多梦易醒rn  15、晨不愿起,昼常打盹 16、局部麻木,手脚易冷rn  17、掌掖多汗,舌燥口干 18、目干低烧,夜常盗汗rn  19、腰酸背痛,此起彼安 20、舌生白苔,口臭自生rn  21、口舌溃疡,反复发生 22、味觉不灵,食欲不振 rn  23、反酸嗳气,消化不良 24、便稀便秘,腹部饱胀 rn  25、易患感冒,唇起疱疹 26、鼻塞流涕,咽喉肿痛 rn  27、憋气气急,呼吸紧迫 28、胸痛胸闷,心区压感 rn  29、心悸心慌,心律不整 30、耳鸣耳背,易晕车船 rn  rn  我们通常说患了疾病,但在古代“疾”与“病”含义不同。“疾”是指不易觉察的小病(疾),如果不采取有效的措施,就会发展到可见的程度,便称为“病”。这种患疾的状态,现代科学叫“亚健康”或“第三状态”,在中医学中称“未病”。 rn  “未病”不是无病,也不是可见的大病,按中医观点而论是身体已经出现了阴阳、气血、脏腑营卫的不平衡状态。我们的祖先早就意识到,有了疾病除积极寻找除疾之法外,还积累了许多预防疾患的措施。《黄帝内经》有日:“圣人不治已病治未病,夫病已成而后药之,乱已成而后治之,譬犹渴而穿井,斗而铸兵,不亦晚乎?”由此可鲜明地看出我们的祖先已认识到对疾病应“未雨绸缪、防患未然”的重要。rnrn【亚健康的后果】rn 亚健康是一种临界状态,处于亚健康状态的人,虽然没有明确的疾病,但却出现精神活力和适应能力的下降,如果这种状态不能得到及时的纠正,非常容易引起心身疾病。包括:心理障碍、胃肠道疾病、高血压、冠心病、癌症、性功能下降,倦怠、注意力不集中、心情烦躁、失眠、消化功能不好、食欲不振、腹胀、心慌、胸闷、便秘、腹泻、感觉很疲惫,甚至有欲死的感觉。然而体格检查并无器官上的问题,所以主要是功能性的问题。 处于亚健康状态的人,除了疲劳和不适,不会有生命危险。但如果碰到高度刺激,如熬夜、发脾气等应激状态下,很容易出现猝死,就是“过劳死”。 rn  “过劳死”——是一种综合性疾病,是指在非生理状态下的劳动过程中,人的正常工作规律和生活规律遭到破坏,体内疲劳淤积并向过劳状态转移,使血压升高、动脉硬化加剧,进而出现致命的状态。rn----------------------------------------------------------------------------------------------rn 唉!我处于亚健康状态的人,打算辞职调理身体了.望大家也注意下身体。具体可以看看[url=http://baike.baidu.com/view/14.htm][/url] 论坛

你真的适合做程序员吗?

05-20

这两天突然就开始怀疑,自己真的是否适合做程序员这个工作?rn 大学是软件工程专业,大一大二都稀里糊涂的过去了。虽说没有挂科,但成绩还是很惨不忍睹的。之前只觉得当时真的是太贪玩了,如果我努力也会做好的,毕竟智商也不必别人差哪去。到大三开始努力学习,一方面由于基础并不是好,虽然很努力,但是进步程度真的让人心痛。另一方面,在大三的时候开始接触iOS,现在算是学了半年多吧。至今没做出来个比较像样的项目。做的都是比较简单的东西。其实这种东西,学过一些后很多人也都能做出来。貌似iOS开发个人做开发的很多,自己在学习时也是一直在自学,不会的就谷歌百度,学习的进度也很慢。加技术群问大神~慢慢也算学到了一些东西吧。但是自己始终记不住一些概念性的东西。只是知道遇见什么问题大概应该如何解决,但是让我说为什么,或者用技术语来说总是不知道该怎么说。rn 最近有很多公司开始到校园内招聘,然后跟同学谈哪家哪家公司特别好,然后谈有哪些学长去了这些公司。那个同学算是公认的在同届里的大神了,他跟我谈起:有一个学长不出门的学习集训了4个月之后,技术就变的特别厉害了。而他们也学了很久了,却仍然赶不上那个学长。现在那学长拿着年薪30多w的工资。。。突然就想自己也算努力了快有一年了,虽然没有说有那种连着4个月不出门。但是也算努力了。但是技术仍然是个渣~也许这些也不算是太打击我的吧。前些日子,去腾讯参观,见到了不少大神,给我印象最深刻的是一个大神。绝对的技术宅,好吧,感觉纯粹的就是那种传说中的典型程序猿,“油头垢面”的样子。反正整个人看起来都不精神。但是谈到技术还是会滔滔不绝的。但是我真的不喜欢把自己弄成这样。所以突然有了点泄气的感觉~[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/11.gif][/img] 但是就快要毕业了。代码依然敲的很烂,这个行业大神们太多,感觉都好难赶上。。。给点鼓励,给点建议吧~[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/42.gif][/img] 论坛

没有更多推荐了,返回首页