软件变更成本
一旦设计,编码,测试和实施软件,更改或修复软件的成本可能很高,这有两个截然相反的立场(常常被误解)。 有人认为,将更改留到很晚是非常昂贵的,更改的成本成倍增加。 另一个立场是,更改应尽可能晚地进行,因为更改软件的成本基本上(或至少可以是)基本持平(这就是为什么我们将其称为“软件”软件)。
哪个位置正确? 我们为什么要关心呢? 那我们该怎么办?
指数变化成本
早在1980年代初期,Barry Boehm发布了一些统计数据( 软件工程经济学,1981年 ),该统计表明,随着时间的推移,进行软件更改或修复的成本显着增加-您可以看到他在此处发表的原始曲线。
Boehm查看了1970年代从TRW和IBM的基于Waterfall的项目中收集的数据,发现随着从需求分析到架构,设计,编码,测试和部署的阶段,进行更改的成本增加。 在您仍在定义需求时发现并纠正了需求错误几乎不花任何代价。 但是,如果等到完成系统的设计,编码和测试并将其交付给客户之后,它的成本可能高达100倍。
这里有一些警告。 首先,大型项目的成本曲线要高得多(在小型项目中,成本曲线更像是1:4而不是1:100)。 在Boehm称之为Architecture-Breakers的情况下,变更成本上升到100倍的情况很少见,在这种情况下,团队得出了基本的架构假设错误(缩放,性能,可靠性),并且直到客户已经使用了系统并遇到严重的操作问题。 而且,所有分析都是在30年前的一个小数据样本上完成的,当时开发代码的成本更高,更耗时且需要书面工作,并且使用的工具不胜枚举。
从那以后,还进行了其他一些研究,这些研究大部分都支持了Boehm的发现-至少有一个基本的思想,即发现错误的时间越长,纠正错误的成本就越高。 这些研究已在史蒂夫·麦康奈尔(Steve McConnell)的Code Complete等书中得到广泛引用,并被用来证明早期审查和测试的重要性