我目前正与一个相当古老的产品,该产品一直背负着大量的技术的债务从贫穷的程序和贫穷的发展做法中去。我们正在开始得到更好的和创造技术的债务已经明显放缓。

我已经确定的领域的应用程序,正在恶劣的形状,我可以估计成本的固定这些地区,但我有一个很难估计投资回报(ROI)。

该编码将更容易维护并且将更容易地延伸的未来,但我怎么可以去把一个美元的数字在这些?

一个很好的开始看上去像要回到我们的错误跟踪系统和估计费用基于错误和功能有关这些"不好"的领域。但是,这似乎耗费时间和可能不是最好的预测值。

有人进行这样的分析过去有任何建议给我吗?

有帮助吗?

解决方案

管理者通过优化过程的生命周期关心通过生长(首先也是最重要吸引新客户例如新的功能),使得$和(第二)。

看你的问题,你的提案在第二类:这无疑将落后目标#1(从而得到优先下来均匀如果这可以节省钱......因为省钱<强>意味着花钱(最中的至少时间; - )。)

立即后,把一个$图上的“坏技术债”可以转身成为一个更积极的旋转(假设以下你的情况适用):“如果我们投资于返工组件X,我们可以引入特征量y更快,从而获得Z时客户。”

在换句话说,评估技术的债务成本对丢失的商业机会成本。

其他提示

声纳 有一个伟大的插件(技术性债务的插件)来分析你的源代码看起来就是这样一个指标。虽然你可能没有具体能够利用它为你的建立,因为它是一家工具,它应该提供一些良好指标。

这是一段他们的算法:

Debt(in man days) =
    cost_to_fix_duplications +
    cost_to_fix_violations + 
    cost_to_comment_public_API +
    cost_to_fix_uncovered_complexity + 
    cost_to_bring_complexity_below_threshold


 Where :

 Duplications = cost_to_fix_one_block * duplicated_blocks

 Violations   = cost_to fix_one_violation * mandatory_violations

 Comments     = cost_to_comment_one_API * public_undocumented_api

 Coverage     = cost_to_cover_one_of_complexity * 
                         uncovered_complexity_by_tests (80% of
                         coverage is the objective)

 Complexity   = cost_to_split_a_method *
                         (function_complexity_distribution >=
                          8) + cost_to_split_a_class *
                         (class_complexity_distribution >= 60)

我认为你是在正确的轨道上。

我已经没有计算,但我已经受够了谁管理一个大型软件开发组织有很多的遗留代码的朋友一些讨论。

一的,我们已经讨论正在产生从分析VCS提交和使用它们来划分的程序员小时粗略估计有些粗糙努力度量的事。这是通过乔尔斯波斯基的循证调度启发。

在做这样的数据挖掘将允许你还可以识别被保持代码时的聚类和比较,在跟踪系统漏洞完成(除非你已经有两个,准确的记录之间的紧密集成祝福)。

适当的投资回报率需要计算的全额返还,所以有些事情要考虑的是: - (显然)降低维护成本 - 机会成本的停机时间的企业或错过新的功能,不能及时补充了发行 - 以产生新的产品线由于重构能力

记住,一旦你有导出数据的规则,你可以有大约正是争论的如何的计算的东西,但至少你的一些的数字,种子讨论!

+1 jldupont的重点失去商业机会。

我建议有关的感知管理这些机会的想法。他们认为哪些因素会影响收入增长 - 新的功能,上市时间,产品质量?有关债务部分还款那些司机会帮助管理层了解的收益。

管理为重点的看法将帮助你避免错误的记数。投资回报率是一个估计值,它是没有更好的比其估计作出的假设。因为他们知道有一个在某处有一些定性管理将犯罪嫌疑人只定量参数。举例来说,在短期内你的债务部分还款的实际成本是程序员都没有做,而不是那些程序员的现金成本的其他工作,因为我怀疑你要租赁和这只是培训新员工。在未来的发展时间或质量的改善比更重要的功能,这些程序员否则会增加?

此外,请确保您了解该产品的管理视野。如果管理不从现在开始考虑的两年里,他们不会在意,不会出现18个月收益。

最后,反映管理层的看法已经允许该产品获得了这种状态在首位的事实。发生了什么变化,这将使公司更加关注技术债务?如果差的的 - 你是一个更好的经理比你的前任 - 你的管理团队不是用来这个东西的思想铭记在心。你必须找到他们的胃口吧,并侧重于将提供他们所关心的结果的那些项目。如果你这样做,你会赢得信誉,你可以用它来获取进一步的改变他们的想法。但涨幅的升值可能会在成长需要一段时间。

我只能对如何在一个迭代和增量过程为此凭经验说话。

您需要收集的指标来评估你的表现出最佳的成本/故事点。据推测,这代表你的系统刚刚起步的建筑流失后,当大多数设计试验和错误的已经做了,但熵已经有最少的时间引起腐烂。查找该项目历史上的点,当速度/团队规模是最高的。使用此为您的成本/点基线(零债务)。

随着时间的推移,随着技术债务积聚,速度/团队大小开始减小。这个数字相对于你的基线可以翻译成“趣”的比例下降被支付每个新的故事点。 (这是真正的技术的的知识债务支付的利息)

纪律refactoing和退火引起的技术债务的利息一些价值较高的平抑比你的基线。这个作为稳态感兴趣的产品负责人在系统中的技术债务支付。 (同样的概念也适用于知识债务)。

一些系统达到其中的每一个新的故事点成本+利息超过特征点的价值正在开发的点。这是当系统破产,它的时间从头开始重写系统。

我认为这是可以使用回归分析来梳理出技术债务和知识债务(但我还没有尝试过)。例如,如果你认为技术债务密切与一些代码度量,例如相关重复代码,你可以决定被支付由于技术与债务的知识债务增加的关注度。

作为一个主要是孤独的或小的团队开发人员这是我的领域,但是给我一个很好的解决方案,以找出在哪里浪费时间是非常,非常详细的计时,例如有一个方便的任务吧这样的工具 这一个 这甚至可以过滤出来的时候你去厕所,并可以导出的一切XML。

它可能很麻烦,在第一和挑战,介绍一个团队,但是如果你的团队可以登录每十五分钟他们因一个错误,错误或误解的软件,积累的基础的令人印象深刻,真实的数据什么样的技术的债务实际上是成本计算工资的每一个月。

该工具我联系到的是我最喜欢的因为它是死的简单的(甚至不需要一个数据库)和提供了访问的每个项目/项目通过一个任务吧标。也进入额外的信息进行的工作可以做的工作还有,计时简直是活在几秒钟内。(我不属于与供应商。)

这可能是更容易估计它有你的成本的数量,在过去的。一旦你这样做,你应该能够拿出对未来范围和逻辑,甚至你的老板可以理解的估计。

话虽这么说,我没有很多的经验,这种事情,仅仅是因为我从来没有看到愿意在修复了代码走这么远经理。它总是刚刚我们修复了的时候,我们必须修改恶意代码的东西,所以重构实际上是对所有改进和bug修复隐藏成本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top