为什么软件开发周期总是预估的2~3倍?
我认为这其中的原因有两个,一是预估的时间过于理想,二是开发过程中问题的不可估。
首先,预估是在正式开发工作前对任务的一种宏观的、主观的推测,它单纯从做什么、怎么做一气呵成下来,没有充分考虑失败了、出错了所要耽搁的进程。其次,开发过程中哪一环节出现问题,问题是大是小,问题是否会涉及到之前的进程,这些都是程序员所无法预测的;况且,想要解决一个问题往往并不是一件易事。
什么是分而治之
关于分而治之,中国古代皇帝便有了应用。分天下土地于各路诸侯,为的是安抚天下、分散治理。
如今在软件工程专业中,分而治之的理念更是得到了很大的推广。“分”,是将一个巨大的工程划分为一个个子系统模块,为的是防止面对一块大饼程序员无从下嘴。“治”,我们要分别、逐步解决被拆分开来的子系统,因为被拆开,所以任务量减小、复杂度降低,因此我们能更高效率地提出最优方案。
这种思想还可递归下去,当一个问题被分成几个小问题后,若是这几个小问题仍然繁琐,我们可以继续划分,划分再划分,最后统筹起来,自然不会无从下手。