软件开发是复杂的脑力活动,这意味着管理软件开发的进度变的不那么容易。事实上,几乎每个软件公司都会面临进度管理的问题。延期的意思就是实际完成时间和计划时间不符,我们假设所有的人员都在努力工作,那么延期的原因是什么呢?显然是计划有问题。
然而也不是所有的软件开发都会延期,“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.添加...
NET.2.0模式开发实战].(美)Christian.Gross.清晰版.djvu/NET.2.0模式开发实战].(美)Christian.Gross.清晰版.djvu
"极简模式开发工具安装程序v.5.221版"是一款专为快速开发企业信息系统设计的专业软件,它简化了开发流程,让开发者能够更高效地构建个性化系统。这款工具集成了前端开发和后端服务,尤其适用于熟悉Java和Javascript...
基于JSP+Java+Servlet采用MVC模式开发的购物网站+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于JSP+Java+Servlet采用MVC模式开发的购物网站+源码...
基于JSP+Java+Servlet采用MVC模式开发的购物网站源码+项目说明.zip基于JSP+Java+Servlet采用MVC模式开发的购物网站源码+项目说明.zip基于JSP+Java+Servlet采用MVC模式开发的购物网站源码+项目说明.zip基于JSP...
基于Visual Studio 2010进行敏捷Scrum模式开发,是一种高效且灵活的软件开发策略,尤其适合应对复杂项目的管理。Scrum模式在敏捷开发中占据主导地位,已被众多开发团队采纳。Visual Studio 2010与Team Foundation ...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业...原生javaWeb项目,使用MVC开发模式开发原生Servlet+jdbc服务器项目-点餐系统
dao模式的实现 及数据库介绍
迭代式开发允许软件在初期就对需求进行分析和设计,然后逐步开发和完善。它有助于降低开发风险,加快开发进度,并适应需求的变化。问题在于需要有高素质的项目管理和技术开发团队。 7. 螺旋模型(SPIRAL MODEL) ...
提高开发团队的灵活性:迭代式开发允许开发团队更好地适应需求的变化,提高团队的灵活性和响应能力。 提高客户满意度:通过迭代式开发,我们可以更好地满足客户的需求,提高客户满意度。 降低项目成本:...
喷泉模型是以用户需求为驱动力,以对象为中心的一种迭代式开发模型,特别适用于采用面向对象技术的软件项目。 - **特点**: - 相互迭代:软件的各个组成部分可以在开发过程中被反复修改和完善。 - 无间隙:分析、...
Windows平台下 VC++实现简单的C/S模式开发功能,分享个初学者借鉴。
M2模式开发留言板实列
MVC模式开发java应用程序.pdf,内容如题。
传统开发模式有三种常见的方式:瀑布模型、迭代式开发和螺旋开发。瀑布模型是一种相对老旧的计算机开发方法,需要严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进行。迭代式开发是一种与传统...
商业模式开发培训课件.pptx
基于AJAX技术的MVC模式开发.pdf