软件工程方法论利弊共存,利大于弊,pi我们觉得糟糕的不断原因有哪些呢?
软件开发的方法不是一成不变的。传统的瀑布模型现在依然是现在最常用的开发方式,但是瀑布模型有些理想化,设计和开发人员理想地认为可以按照时间表逐步完成每个步骤,任何时候无需和不能回退到上一个步骤。但在现实开发中,各种问题和需求会让瀑布模型基本无法按章执行。而且随着时代的进步,各种软件开发方法也在不断涌现。理论是美好的,但是现实总会遇到很多无法预估的问题。
实际的软件项目是复杂的,没有规律可循,这会导致另一个问题 - 为了证明某种技术、实践和方法论是实际有效而收集相关数据是极度困难的,几乎不可能在脱离收集环境的情况下归纳出这些数据。
你可能会认为当我们决定怎样运作一个团队时,我们就陷入了被动。但细想一下为什么软件开发无章可循?为什么在这个环境里很难进行一些试验以及获取技能?什么实践和决定会导致成功或失败?其中的根原因就是:环境是不规律的,做出变更与理解变更带来的结果之间的反馈过程太长了。这里的“变更”一词是指广义上的需求变更、方法变更、开发实践变更、商业计划变更、代码或配置变更等等。
关于软件开发方法论Michael Feathers给出了以下观点:
我认为,我们最终还是得倚重开发者的能力,这才是个更重要的考量因素,而非选择哪门语言或纠结于方法论间的细微差别。坦诚地说,我们都清楚这点,但我们看起来好像过度纠结于开发能力是关键因素这事儿上。或许这是个经济学里一个被广泛接受的观点的引申,要是人人都可以替代(随便找个人都能顶上),那该有多好呀?但事实并非如些。