`
youngerblue
  • 浏览: 44653 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
阅读更多
软件开发是复杂的脑力活动,这意味着管理软件开发的进度变的不那么容易。事实上,几乎每个软件公司都会面临进度管理的问题。延期的意思就是实际完成时间和计划时间不符,我们假设所有的人员都在努力工作,那么延期的原因是什么呢?显然是计划有问题。

然而也不是所有的软件开发都会延期,“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周。

我们应该在初始阶段定义好每次迭代都干些什么,但是不用太细致,而且也不可能做到很细致。而每次迭代的具体需求,都在该次迭代开始的时候进行分析。

这样以来,我们就把一个长期的,复杂的软件开发活动,拆分为若干个短期的,简单的活动了。
分享到:
评论

相关推荐

    软件开发流程与质量管理-迭代式开发

    迭代式开发是一种分阶段逐步完善产品的软件开发模式,强调快速反馈和持续改进。其核心流程如下: 1. **制定计划**:每个迭代周期前,重新审视项目目标,细化需求,制定迭代计划。 2. **迭代过程**:包括需求分析、...

    基于Java语言的网络摄像头IPC迭代式开发设计源码

    本项目“基于Java语言的网络摄像头IPC迭代式开发设计源码”,便是在这一背景下应运而生,它不仅展示了如何利用Java语言开发网络摄像头的应用,而且还通过迭代式开发方法,提供了一个可以学习和参考的开发实例。...

    JavaWeb基于MVC模式开发的简易购物车系统

    该系统主要采用MVC(JSP+JavaBean+Servlet)模式开发,非常适合初学者了解并掌握MVC开发模式,具有如下主要功能: 1.用户登录,注册(用户注册后才能登录) 2.显示所有书籍基本信息(编号,书名,价格等) 3.添加...

    NET.2.0模式开发实战

    NET.2.0模式开发实战].(美)Christian.Gross.清晰版.djvu/NET.2.0模式开发实战].(美)Christian.Gross.清晰版.djvu

    基于JSP+Java+Servlet采用MVC模式开发的购物网站源码+项目说明.zip

    基于JSP+Java+Servlet采用MVC模式开发的购物网站源码+项目说明.zip基于JSP+Java+Servlet采用MVC模式开发的购物网站源码+项目说明.zip基于JSP+Java+Servlet采用MVC模式开发的购物网站源码+项目说明.zip基于JSP...

    基于Visual Studio 2010 进行敏捷Scrum模式开发.docx

    基于Visual Studio 2010进行敏捷Scrum模式开发,是一种高效且灵活的软件开发策略,尤其适合应对复杂项目的管理。Scrum模式在敏捷开发中占据主导地位,已被众多开发团队采纳。Visual Studio 2010与Team Foundation ...

    基于MVC开发模式开发原生Servlet+jdbc服务器项目-点餐系统源码+项目说明.zip

    【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业...原生javaWeb项目,使用MVC开发模式开发原生Servlet+jdbc服务器项目-点餐系统

    在安卓上运用的MVP模式开发框架 A framework for MVP pattern in android.zip

    在安卓上运用的MVP模式开发框架。A framework for MVP pattern in android.简易MVP在安卓上运用的MVP模式开发框架。A framework for MVP pattern in android.与传统MVP开发模式相反,EasyMVP是将activity,fragment, ...

    Android代码-MVP模式开发框架

    在安卓上运用的MVP模式开发框架。A framework for MVP pattern in android. 与传统MVP开发模式相反,EasyMVP是将activity,fragment, adapter作为presenter的mvp开发框架。 了解更多 可以看看这篇文章对这种模式的...

    dao模式开发

    dao模式的实现 及数据库介绍

    软件开发模式

    迭代式开发允许软件在初期就对需求进行分析和设计,然后逐步开发和完善。它有助于降低开发风险,加快开发进度,并适应需求的变化。问题在于需要有高素质的项目管理和技术开发团队。 7. 螺旋模型(SPIRAL MODEL) ...

    计算机开发模式的种类

    喷泉模型是以用户需求为驱动力,以对象为中心的一种迭代式开发模型,特别适用于采用面向对象技术的软件项目。 - **特点**: - 相互迭代:软件的各个组成部分可以在开发过程中被反复修改和完善。 - 无间隙:分析、...

    Windows平台下 VC++实现简单的C/S模式开发功能

    Windows平台下 VC++实现简单的C/S模式开发功能,分享个初学者借鉴。

    敏捷开发与传统开发模式的比较分析.docx

    传统开发模式有三种常见的方式:瀑布模型、迭代式开发和螺旋开发。瀑布模型是一种相对老旧的计算机开发方法,需要严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进行。迭代式开发是一种与传统...

    移动手机APP混合模式开发.pdf

    移动手机APP混合模式开发.pdf

    商业模式开发培训课件.pptx

    商业模式开发培训课件.pptx

    基于AJAX技术的MVC模式开发.pdf

    基于AJAX技术的MVC模式开发.pdf

    第四章商业模式开发.pptx

    第四章商业模式开发.pptx

    软件开发五大模式

    这五大原则体现了微软在软件开发中的灵活性和迭代式开发理念,通过分阶段管理、用户导向和迭代改进,确保产品能够在预定时间内高质量交付。此外,计划阶段的详尽准备、开发阶段的迭代测试以及稳定阶段的全面检查,都...

Global site tag (gtag.js) - Google Analytics