序列化开发与迭代开发的选择

     今天看了一篇文章,其中说到一些敏捷开发的优势,它说开发应该尽可能早的开始进行,不断迭代和重构,这样才能快速构建出系统,最终达到较好的效果。它举了一个例子,说是将管理者,一般工作人员和小孩子放在一个房间里,各自完成一个任务,将某种物品叠加起来,看谁搭得最高,最后总是小孩子完成得最出色,因为小孩子不会想什么,直接就开始行动,尝试各种情况,最后会找一种比较好的方法,而管理者或者一般成人则会不断的思考用什么方法会更好,而思考得太多行动的太少,则很难一下子找到最好的方法。

    我看了这篇文章感觉说得有些片面,所以想谈谈自己的看法。之前正好看了《代码大全2》,其中也对序列化开发方法和迭代化的开发方法进行了比较。书中说到不管是序列化的开发方法还是迭代的开发方法,前期的准备工作都非常重要,充分的前期准备工作可以大大减少开发成本,这个前期准备工作主要就是指需求分析和概要设计。我是比较赞同这种说法的,不管用什么方法开发软件前期的准备工作必不可少,只是一个度的问题。以我多年的开发经验来看,我觉得大部分项目都适合中度的前期准备,极少有项目能做好100%的需求和设计再编码(往往易导致过度设计,甚至前期就陷入混乱),也极少有项目不需要前期准备,而是完全的敏捷开发(一开始就编码,不断重构)。

    就我目前在做的一个项目来说吧,这个项目是一个老系统的改造项目,需求是稳定的,但因为系统太大太复杂,原来的代码极度缺少注释,文档又很少,所有的开发人员和设计人员对需求的理解都不是很清晰,可以说这是一个需求固定但又不明确的系统,开发时间比较短。按理来说需求明确的系统又有老系统参照应该按照瀑布模型来开发,实际上也是这样做的,客户方要求我们前期做好所有的设计,要求我们写好各种文档,这花费差不多两个月的时间,剩下的开发时间只有一个月了,还有很多资料没有整理好,很多需求没有吃透,进度很可能要延后,风险很大,可以说项目有些失控了。更重要的是这个项目需要用到SCA,大家都不熟悉,在这上面也花了很多的时间。

    其实如果时间足够的话,这个项目按序列化的方法来开发还是可行的,主要就是时间太少,业务太复杂,又需要加入一些新技术,才导致目前失控的态势。然而我想大家也知道目前国内的项目没有多少是时间充足的,也没有多少是需求完全明确的,所以迭代开发还是相对更好的模式。

    有朋友可能会说那为什么不一开始就用敏捷开发,我觉得敏捷开发也是有风险的,如果没有比较好的前期准备,每次迭代重构的成本也是非常大的,有时间可能会走错路重新来过。所以我建议在项目的早期,不要太急于写代码,要做好前期准备工作,要详细的分析需求,要进行设计,但是在需求分析和设计的时候也要注意一个度,不要太求完美,没有完美的方案,没有完美的设计,追求完美会浪费很多时间,最后得到的还不一定是适合的设计,差不多就行了,在开发的过程中再不断的改进和重构,最终会得到一个满意的系统。

    目前我们的项目我也是在建议我们的客户和高层不要再催着我们出文档了,要文档和开发交插进行,要在开发中去更深刻的理解需求,及时重构代码完善文档,这样才有可能赶上进度,另外我想大家也明白,很多细节是要到写代码的时候才会清楚的,要让我们一开始把所有的单元测试用例,把所有的异常情况全部文档化,在这种大型系统而且业务复杂的情况下太难了,即使做好了返工的可能性也很大。

    以上只是个人拙见,总结了一下最近对项目开发的一些想法,欢迎拍砖!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值