不知诸位同仁有没有在承接项目时候使用敏捷方法。在下才学疏浅,请各位指教。 在一个敏捷项目中,需要假定我们并不能事先确定系统的需求。因此在项目的初期有一个详细设计阶段的想法是不现实的。系统的设计必须随着软件的变化而进化。敏捷方法,尤其是极限编程(XP),通过一些实践使这种进化设计成为可能。 对软件过程的一般解释是尽早理解需求,停止需求的变动,将这些需求作为设计的基础,停止设计的变动,然后开始构筑体系。这就是瀑布方法--基于计划的生命周期。 但是,你在承接一个项目时候,项目发包方绝大多数是要根据你的需求分析计算出来的任务量来谈判价格的。他们不会等你什么迭代n次。他们一般都希望以固定总价把合同定下来,而需求迭代过程中增加的东西也可以方便的加进去,以最大限度减少自己的风险。在现在这么激烈的竞争条件下(狼多肉少呀),承包方想以成本加利润等降低自己风险的形式签订合同很难。 你要迭代,发包方可以轻易说,谁让你事先不搞清楚细节的东西,你需求分析能力不行。如果不迭代,开发出来的东西根本达不到发包商的期望而不能通过验收。你也不可能先免费给发包商差不多做完了再谈判价格,那样你一定死得很惨! 所以说:敏捷方法在内部软件开发等不计算成本的纯软件开发环境比较适合,对项目工程这样的这个难题又如何解决?!
在能确定全部需求的情况下也可以迭代开发,事实上更好。 考虑工作量时需要考虑总的时间人力等,然后提出报价,如果需求不明确,而且又在和对手竞争的情况下,那么只能靠经验了。