非常有趣的思路!
首先,什么是bitrot?维基百科上的Software Rot文章收集了几点:
- 环境变化:运行时的变化
- 未使用的代码:使用模式的变化
- 很少更新的代码:通过维护更改
- 重构:一种阻止比特腐烂的方法
根据摩尔定律,delta(CPU)/delta(t)
每 18 到 24 个月是一个常数因子 2。由于环境包含的不仅仅是 CPU,我认为这只是环境实际变化的一个非常弱的下限。单位:OPS/$/s,每秒每美元的操作数随时间的变化
delta(users)/delta(t)
很难量化,但从新闻中“知识时代”一词的出现频率来看,我想说用户的期望也呈指数级增长。通过观察$/flops
基础经济的发展告诉我们,供给增长快于需求,摩尔定律成为用户变化的上限。我将使用功能点(“信息系统向用户提供的业务功能量”)作为需求量度。单位:FP/s,所需功能点随时间的变化
delta(maintenance)/delta(t)
完全取决于组织,通常在发布前、快速修复和集成重大更改时非常高。随着时间的推移,对各种度量(如SLOC、圈复杂度或已实现的功能点)的更改可以用作此处的替身。如果可能的话,另一种可能性是票务系统中的错误流失。随着时间的推移,我将继续使用已实现的功能点。单位 = FP/s,实现的功能点随时间的变化
delta(refactoring)/delta(t)
可以衡量为不实施新功能所花费的时间。单位 = 1,随着时间的推移重构所花费的时间
所以bitrot会是
d(env) d(users) d(maint) d(t)
bitrot(t) = -------- * ---------- * ---------- * ----------------
d(t) d(t) d(t) d(refactoring)
d(env) * d(users) * d(maint)
= ------------------------------
d(t)² * d(refactoring)
与一个组合单位OPS/$/s * FP/s * FP/s = (OPS*FP²) / ($*s³)
。
这当然只是维基百科文章已经说过的非常强制的伪数学符号:bitrot 源于环境的变化、用户需求的变化和代码的变化,而通过花时间重构来缓解它。每个组织都必须自己决定如何衡量这些变化,我只给出非常笼统的界限。