软件开发是复杂的脑力活动,这意味着管理软件开发的进度变的不那么容易。事实上,几乎每个软件公司都会面临进度管理的问题。延期的意思就是实际完成时间和计划时间不符,我们假设所有的人员都在努力工作,那么延期的原因是什么呢?显然是计划有问题。
然而也不是所有的软件开发都会延期,“Hello World”这样的程序就肯定不会延期。这是为什么?因为它需要的工时足够少。当活动所需工时很少的时候,我们很容易估计它的完成时间,也就是说,很容易制订正确的计划。
在复杂的项目中也是这样,我们可以精确估计某个简单功能的完成时间,然而当所有的事情聚集在一起的时候,时间就难以估计了。因此,我们需要对工作进行拆分。
传统的开发过程被称为“瀑布式”开发。实际上这是一个自发形成的开发过程,因为我们干任何事情都是这样:先做a,再做b,最后做c。在“瀑布式”开发中,我们的工作沿着需求分析-模块设计-编码-测试这样的瀑布不断前进。然而当这个瀑布大到一定程度的时候,我们就很难看清前方,因此计划也就变得不明朗了。
为了改变这样的状况,迭代开发就产生了。迭代就是把一个长期的活动拆分成易于管理的较短期的活动。
当提到迭代的时候,往往会有2种反映,1种是:这是书本上的东西,只有大公司大项目才能实施。另1种是:我们已经在迭代了啊,从产品1.0版到1.1版,这不就是迭代吗?
这2种反映,都说明对迭代不够了解。
迭代的英文原词是iteration,也就是循环的意思,但同时也有递进的含义。因此迭代就是一个不断循环并且前进的过程。现代软件开发过程,几乎都是迭代的开发过程,比如rup,xp等,我们可以认为,迭代是敏捷的基础,从这个意义上说,rup、xp都是敏捷的过程。
rup定义的软件开发过程是这样的:
首先,软件的整个周期被划分为:初始、细化、构造、移交这4大规程。我们在每个规程中,侧重不同的活动。
初始:侧重业务分析,需求分析,项目前景规划,项目目标和范围设定。
细化:侧重架构设计,框架的编码,性能评估。
构造:侧重详细设计,子系统的编码,单元测试,子系统测试。
移交:侧重系统测试,综合场景测试。
在每个规程中,都存在以下的活动:需求、设计、编码、测试、变更管理、项目管理。
在软件开发中,采用下面的6条实践:
1、迭代的开发软件
2、需求管理
3、使用基于构件的体系结构
4、可视化软件建模
5、验证软件质量
6、控制软件变更
实际上后面5条,大多数软件公司都在做到,但是对于迭代,却实施得不那么好。
为什么说迭代是敏捷的基础?因为每一次迭代都会有需求分析和测试,这意味着,在每一个迭代,我们都可以重新审视开发方向和验证软件的质量。这就增加了我们规避风险的机会。并且如果迭代周期足够短,我们就可以精确制订该迭代内的项目计划。
这听起来是一个诱人的蛋糕,但问题是:迭代周期应该多长?答案是:越短越好。因为只有迭代周期足够短,在该迭代内的活动才更有利于管理和监控,同时意味着我们有更多的机会去对应变化。在极端的敏捷方法中,提倡每日构建,每日构建的好处是每天都可以进行测试,这几乎是每天一次迭代。
根据以往的实践经验,迭代周期最好在4周以内,因为4周以内的进度可以比较精确的得到管理,并且随着软件开发的深入,迭代周期可以越来越长,这很容易理解,因为软件越来越稳定,风险越来越少。
在细化阶段,迭代周期在1至2周比较适合。构造阶段,可以慢慢延长到3到4周。
我们应该在初始阶段定义好每次迭代都干些什么,但是不用太细致,而且也不可能做到很细致。而每次迭代的具体需求,都在该次迭代开始的时候进行分析。
这样以来,我们就把一个长期的,复杂的软件开发活动,拆分为若干个短期的,简单的活动了。
分享到:
相关推荐
RUP迭代式开发全中文资料---强烈推荐
该系统主要采用MVC(JSP+JavaBean+Servlet)模式开发,非常适合初学者了解并掌握MVC开发模式,具有如下主要功能: 1.用户登录,注册(用户注册后才能登录) 2.显示所有书籍基本信息(编号,书名,价格等) 3.添加...
as3写的拼图游戏,mvc模式开发,适合新手。
NET.2.0模式开发实战].(美)Christian.Gross.清晰版.djvu/NET.2.0模式开发实战].(美)Christian.Gross.清晰版.djvu
NET2.0模式开发实战源代码
基于新型外卖送餐模式开发的APP项目.pdf
一个小小的blog,用MVC模式开发的,刚学的人有点用吧
电子商务环境下书籍交易渠道创新性模式开发
经典mvc模式开发经典mvc模式开发经典mvc模式开发
本工程采用ExtJs4.0 开发,采用mvc开发模式,分为controller view model store。
安卓配件模式协议分析,软件开发指导,希望对有需要的有用。
基于JSP+Java+Servlet采用MVC模式开发的购物网站源码+项目说明.zip基于JSP+Java+Servlet采用MVC模式开发的购物网站源码+项目说明.zip基于JSP+Java+Servlet采用MVC模式开发的购物网站源码+项目说明.zip基于JSP...
在安卓上运用的MVP模式开发框架。A framework for MVP pattern in android. 与传统MVP开发模式相反,EasyMVP是将activity,fragment, adapter作为presenter的mvp开发框架。 了解更多 可以看看这篇文章对这种模式的...
dao模式的实现 及数据库介绍
简单工厂模式开发的计算参数实例简单工厂模式开发的计算参数实例简单工厂模式开发的计算参数实例简单工厂模式开发的计算参数实例简单工厂模式开发的计算参数实例简单工厂模式开发的计算参数实例
javascript设计模式开发与实践.pdf
并发编程_模式开发模式.pdf
使用MVP模式开发winform的简单程序,对于初学者来说是个很好的参考
Windows平台下 VC++实现简单的C/S模式开发功能,分享个初学者借鉴。
delphi面向对象开发,mvc模式开发,将业务层、逻辑层、数据层分开处理 delphi面向对象开发,mvc模式开发,将业务层、逻辑层、数据层分开处理