维修时间的行业平均值


17

一位经理最近宣布,他们花了太多时间来修复错误。我想他认为我们应该一直编写完美的代码(当然仍然要达到那些不可能的截止日期!),这让我想知道行业平均花费在错误修复v编写新代码上的时间是多少。

那么,有没有人有时间衡量针对新代码开发的错误修复的指标?还是对整个行业的错误修复时间进行任何实证分析?是花了50%的错误修复了太多东西,还是正确的?20%或33%呢?

我很高兴接受个人经验中的轶事证据,因为这将构成一些统计数据的一部分,可以与我们的表现进行比较。


9
您的经理听起来无知。建议阅读以下案例:Robert L. Glass 撰写的软件工程事实和谬论,尤其是“事实43。维护是解决方案,而不是问题”。 维基百科文章提到80%的精力花在了软件维护上
gnat

3
什么是真正的问题吗?您有质量问题吗?您的过程真的效率低下吗?还是您的经理只是希望软件成本不那么高?
凯文·克莱恩

@gnat:您的评论是最好的答案
kevin cline

@kevincline谢谢- 将评论转换为答案
gnat

维护不仅涉及修复错误(缺陷),而且其数量对于各个项目也大不相同(=没有明确的答案)。在我看来,您似乎遇到了质量问题。
2012年

Answers:


13

一位经理最近宣布,他们花了太多时间来修复错误。

以上听起来无知。建议阅读以下案例:Robert L. Glass 撰写的软件工程事实和谬论,尤其是“事实43。维护是解决方案,而不是问题”。

维基百科文章提到80%的精力花在软件维护上。

我的经理让Dilbert的PHB看起来很天才:)

上面给出的Hm我还将花一些精力来分析您所做的所有请求是否确实是bug

以我的经验,将增强功能或新功能的请求作为错误提交的情况经常发生。优秀的经理会让程序员与他们的程序员一起找出那些不好的经理,好吧,只是不断抱怨太多的时间来修正错误


2
错误修复!=维护!错误修复意味着您已对系统中的错误进行了编码,必须对其进行修复才能恢复正确的功能。维护是指所有任务,例如错误修复,可伸缩性改进,硬件迁移和性能改进等。我要说,仅在错误修复上花费的时间中有25-30%以上需要立即进行治理调用。对于中型企业系统,在维护总体上花费的精力中多达40-50%听起来是合理的。
Apoorv Khurasia

您有不同类别的bug的数字吗?显然,如果您获得大量高优先级的“显示阻止程序”错误,则可能会发生这样的情况,即开发过程需要做一些工作才能确定源,但是如果所有的小东西都没什么大不了的。就像gnat所说的那样,其中许多可能是增强要求。
Stevetech

您对维基百科文章的引用是错误的!它说“维护工作量的80%用于非纠正措施”,但与设计或编码或其他工作相比,它没有提及维护时间。
Tobias Knauss

9

要问的第一个问题是您的“错误修复”是否实际上是在修复编码错误或其他错误。只要您具有良好的代码基础,实际代码错误的修复在大多数情况下应该相对较小。如果您使用的是较差的代码库,则不可避免的是要进行广泛的错误修复。

但是,在将程序投入生产的过程中,您会发现未记录的需求,意外的用户活动,数据异常,硬件不兼容,安装问题以及其他并非严格的代码错误的问题。经理和用户通常将这些生产支持/维护问题视为错误,因为它们通常需要更改代码。

我也遇到过经理,他们会将应该被称为次要增强请求的内容归为bug。通常,这些信息会输入到错误跟踪或问题报告系统中,这会使您的“错误”统计信息高于实际情况。


您所描述的是我们所拥有的,但是没有任何改变:(
gbjbaanb 2012年

8

这取决于您那里有多少代码,那里有多长时间等等。

修复软件错误所花的时间应该提前到发布的前6到12个月,但是随着时间的临近,维护所花费的时间与最初开发所花费的时间将超过100%-这就是事实工作。

虽然我没有任何硬统计(“代码完整”有,但我无法确切告诉您哪个页面/部分),但根据我的经验,大约有40%的开发(有时高达60%)用于维护。显然,您发布的代码越多,维护时间就越长。错误并不总是可以起作用的,并且它们是程序性缺陷,很大程度上是不确定性的结果。


0

如果您使用的是良好的票务跟踪器(例如Atlasian的Jira),并且已经花了时间正确输入所有不同的类别,用户故事,紧急程度,并且在队友的同意下,那么您实际上在计算这些指标(等等)非常容易。

在先前的项目中,我们使用Jira来管理我们的错误/任务/待办事项列表,最后,它实际上向我们展示了导致延迟和问题的最大原因是无效的管理实践。

奇怪的是,当这些信息发布时,我们突然告诉我们,我们将不再使用Jira,而将引入一种新产品来替代它。

同时,所有通过Jira传递数据的请求都必须发送给管理团队,并且我们取消了直接访问权限。

没注意到的是,作为统计数据计算的一部分,开发团队将Jira将数据戳到Web钩子上,并且此Web钩子用于将数据传递到某些内部服务器上的端点,我们在其中创建了代码这些报告自动生成。

我们开始监视Web钩子,发现即使告诉我们不再使用Jira,它仍然可以存活很长一段时间(准确地说是6个月以上),并且高层管理人员的批发滥用是只是使用不当而横行。

当然,它不必像Jira那样复杂。

如果您想要低收益的解决方案,则可以使用google-docs电子表格和GDocs通知API来跟踪任务/票证/错误/功能请求等。

GDocs本身现在可以发布网络挂钩和各种各样的东西。

结合使用Git和/或Github以及一些挂钩,这些挂钩会在代码提交到您的存储库时触发,并且您拥有一个相当有效的家庭酿造系统,该系统可以记录大量数据。

但是,通常,在产品自然寿命的100%中,未开发的开发人员和维护人员之间的分配比例通常为20/80,ALM(应用程序生命周期管理)周期中的大部分成本都由维护和支持成本承担。

没有花费太多时间来修复错误的事情,因为根本不可能编写没有错误的代码。

良好的测试和持续的集成策略将减少缺陷,但是您永远不会完全消除它。

否则相信(IMHO)的任何人都没有足够的知识做出准确的判断,或者对编写软件实际上有多困难视而不见(更为常见的情况)。

如果您的经理愿意(其中一些人)支持,那么您可能希望建议他为您提供一天的服务,以便他可以准确地看到您的工作以及如何做。

Iv's在一些积极鼓励此类工作的公司中工作,上级员工掩盖了下级员工,反之亦然,对于双方而言,这都是非常非常好的学习经验。


2
“没有花费太多时间来修复错误的事情”-真是令人讨厌。如果您花了足够的时间来修复由于无法在市场上保持竞争力而
导致公司破产的

还有替代方案吗?-您没有花费足够的时间来修复错误,并且您的应用崩溃,烧毁,竞争对手将您的所有习俗都接受了,从而有效地将您赶出了市场。诀窍(也是所有这些中最难的部分)是实际上找到可接受的平衡。
2014年

1
不,我同意,但这是我自己的观点,因为我真正相信在当今时代,正确调试的艺术已成为一门失传的艺术。我们太多的人太依赖单元测试之类的东西,恕我直言,IMHO提供了太多的错误安全性。我并不是说应该废除单元测试,而是因为这没有足够的适当调试和错误修复实践。如此一来,导致经理(如上所述)认为不需要修复错误,因此我们确实(再次恕我直言)做不到足够的事情。
shawty 2014年

2
单元测试和调试是用于不同问题的不同技术。尽管解决“我们的代码是否正确”问题更好地解决了“为什么我的代码损坏了”的问题。在所有条件都相同的情况下,我宁愿人们擅长编写正确的代码,也不愿找出根本原因。
Telastyn 2014年

1
现在,您已经完全同意我的观点。令人遗憾的事实是,在当今的行业中,许多程序员确实将其视为又一份9到5项工作,他们在那里上班,敲打代码直到下班时间再上班。过去,开发人员为编写良好,可靠,经过良好测试的代码感到非常自豪,并花了很多时间思考它,然后才靠近键盘。在当今时代,您几乎看不到这些东西。
shawty 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.