`
jiaoronggui
  • 浏览: 1302467 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
博客专栏
B7c2eb31-a8ea-3973-a517-d00141f39b89
项目管理软件-redmin...
浏览量:115182
4a63e153-250f-30f6-a051-97cfc67cb3d3
IT职业规划
浏览量:197636
社区版块
存档分类
最新评论

阶段化开发:增量和迭代

阅读更多

2.2.6  阶段化开发:增量和迭代

在早期的软件开发中,客户愿意为软件系统的最后完成等待很长时间。有时,从编写需求文档到系统交付使用会经过若干年,称为循环周期(cycle time)。但是,今天的商业环境不会再容许长时间的拖延。软件使产品在市场上引人注目,而客户总是期待着更好的质量和新的功能。例如,1996年,惠普公司80%的收入来自过去两年开发的产品,因而,他们开发了新的过程模型来帮助缩短循环周期。

一种缩短循环周期的方法是使用阶段化开发,如图2-8所示。使用这种方法设计系统时使其能够一部分一部分地交付,从而在系统其余部分正在开发的同时,用户已经获得了一部分功能。因此,通常会有两个系统在并行运行:产品系统和开发系统。运行系统(operational system)或产品系统(production system)是当前正在被客户和用户使用的系统,而开发系统(development system)是准备用来替换现行产品系统的下一个版本。通常,用它们的发布代号表示一个系统:开发人员构建发布1,进行测试,然后把它交给用户作为第一个可运行的发布。然后,当用户使用发布1的时候,开发人员正在构建发布2。从而,开发人员总是在开发发布n+1,而与此同时发布n总是正在运行的。



 
 

开发人员可以用多种方法决定如何将开发组织为发布。增量开发(incremental development)和迭代开发(iterative development)是两种最常用的方法。在增量开发中,需求文档中指定的系统按功能划分为子系统。定义发布时首先定义一个小的功能子系统,然后在每一个新的发布中增加新功能。图2-9的上半部分显示了增量开发是如何在每一个新的发布中逐步增加功能直到构造全部功能的。



 
  

而迭代开发是在一开始就提交一个完整的系统,然后在每一个新的发布中改变每个子系统的功能。图2-9的下半部分说明一个迭代开发的3个发布。

为了理解增量开发和迭代开发之间的区别,我们来看一个用于文字处理的软件包。假设这个软件包要具有3种类型的功能:创建文本、组织文本(即剪切和粘贴)以及格式化文本(例如使用不同的字体大小和类型等)。要使用增量开发模型构建这样一个系统,我们可能在发布1中仅提供创建功能,然后在发布2中提供创建和组织功能,最后在发布3中提供创建、组织和格式化功能。但是,使用迭代开发方法时,我们要在发布1中提供简单的3种类型的功能。例如:可以创建文本,然后剪切并粘贴文本,但是剪切和粘贴功能可能不够灵活快捷。在下一次迭代(即发布2)中,提供相同的功能,但是系统的功能增强了:剪切和粘贴功能变得方便和快捷。每一个发布都在前一个发布的基础上进行了某些改进。

实际上,许多组织都将迭代开发和增量开发方法结合起来使用。一个新的发布版本可能包含新的功能,并且对已有功能做了改进。这种形式的阶段化开发方法是人们想要的,原因如下。

(1) 即使还缺少某些功能,但在早期的发布中就可开始进行培训。培训过程可以使开发人员观察某些功能是如何执行的,并为后面的发布提供了改进的建议。这样,开发人员能够很好地对用户的反馈做出反应。

(2) 可以及早为那些以前从未提供的功能开拓市场。

(3) 当运行系统出现未预料到的问题时,经常性的发布可以使开发人员能全面、快速地修复这些问题。

(4) 针对不同的发布版本,开发团队将重点放在不同的专业领域技术上。例如,一个发布可以利用用户界面专家的专业知识将系统从命令驱动的界面改为指向-点击式(point-and-click)的图形用户界面,另外一个发布可集中于改进系统性能。

  • 大小: 76.3 KB
  • 大小: 55.7 KB
0
2
分享到:
评论

相关推荐

    学生成绩管理系统 visualstudio开发工具

    帮助广大教师提高工作效率,实现学生成绩信息管理工作流程的系统化、规范化和自动化. 1.3 项目提出的意义 现在我国的大中专院校的学生成绩管理水平普遍不高,有的还停留在纸介质基础上,这种管理手段已不能适应...

    职业生涯信息系统迭代增量开发分析研究-研究论文

    本文重点介绍迭代和增量开发 (IID) 模型,并论证其在分析和设计软件系统中的作用。 本文采用定性研究方法,以职业生涯信息系统 (VCIS) 作为案例研究,在系统分析和设计的背景下证明和利用 IID 的相关性。 该论文将 ...

    信息系统监理师笔记

    瀑布模型(生命周期法,是生命周期法中最常用的开发模型),它将开发的过程分成软件计划、需求分析、软件设计、程序编码、软件测试和运行维护6个阶段,规定了它们自上而下,适用于大型软件开发过程。 变换模型(演化...

    软件工程简答题

    螺旋模型适合于大型软件的开发,它吸收了软件工程“演化”的概念,包括需求定义、风险分析、工程实现及用户评估四个阶段,螺旋模型由上述四个阶段组成的迭代模型,迭代的结果必须尽快收敛到客户允许的或可接受的目标...

    软件测试过程管理实践介绍[3]

    软件测试过程管理实践介绍[3]软件...在一个构件化ERP项目中,由于前期需求不明确,开发周期相对较长,为了对项目进行更好的跟踪和管理,项目采用增量和迭代模型进行开发。整个项目开发共分三个阶段完成:第一阶段实现

    Scrummark

    Scrum采取增量迭代方式,抛弃了“瀑布”开发的传统阶段,以获得可以快速地吸纳反馈、优先开发一部分高价值特性的能力。图1:传统的“瀑布”开发依赖于在最开始就能够完美地理解需求,并且在执行每个阶段时都只产生...

    整理后java开发全套达内学习笔记(含练习)

    Iterator [java] 迭代器, 迭代程序 legal 合法的 ['li:gәl] log n.日志,记录 [lɒg] native (关键字) ?? ['neitiv] nested [java] 嵌套的 ['nestid] '如:内部类(nested classes) Object [java] 对象 ['ɒbdʒ...

    软件工程知识点

    “喷泉”一词用于形象地表达面向对象软件开发过程中的迭代和无缝过渡。 7.组件复用模型 组件复用方法是最近几年发展起来的先进的软件复用技术,在基于组件复用的软件开发中,软件由组件装配而成,这就如同用标准...

    uml-动态建模机制 ppt

    Rational公司的RUP发展而来的一套软件工程方法,是目前最有效的...突出特点:用例驱动、架构优先、迭代和增量过程 四个阶段:初始、细化、构造、移交 强调开发过程 五个核心工作流:需求捕获、分析、设计、实现、测试

    高级软件架构师复习提纲

    在计划阶段,团队和客户共同定 义构建和部署的内容以及构建的方式和时机/在开发阶段,团队构建并测试解决方案,具体包括代码、基础构架和文档等交付成果。/在稳定阶段,对功能齐全的解决方案进行最后的测试,使其...

    UML rup ppt

    Rational公司的RUP发展而来的一套软件工程方法,是...突出特点:用例驱动、架构优先、迭代和增量过程 四个阶段:初始、细化、构造、移交 强调开发过程 五个核心工作流:需求捕获、分析、设计、实现、测试 RUP统一过程

    软件过程模型

    强调开发的阶段性早期计划及需求调查和产品测试。缺点:1、用户不确定需求2、开发人员不确定3、开发人员用户很难沟通适用对象:以文档为驱动,适合于软件需求很明确的软件项目。融合了瀑布模型的基本成分和原型实现...

    计算机二级公共基础知识

    算法的基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 (3)算法的3种基本控制结构 算法的3种基本控制结构是:顺序结构、选择结构、循环结构。 (4)算法基本设计方法 算法基本设计方法:列举法、...

    sappe-pet:SAPPE-POSCOMP和Enade证据环境模拟器

    SAPPE-POSCOMP和Enade证据环境模拟器 该计划的初衷是创建一种... 系统的开发过程基于迭代和增量模型,该模型将软件产品的开发分为多个周期,在每个周期中,可以确定产品的分析,设计,实施和测试的各个阶段。 该项目

    2016电子科大软件工程学科基础综合860 真题.pdf

    设计开发的 B.软件项目组制造的 C.程序员编写代码实现的 D.项目经理组织实施的 2. 软件工程是一种层次化的技术,支持软件工程的根基在于 ( ) A.软件工程过程模型 B.软件生命周期模型 C.质量关注点 D...

    SQLServer2008查询性能优化 2/2

    在开发代码的同时,如果你花费时间和精力来开发一个性能故障排错的方法。那么你就能避免这种情况——至少可以快速而有效地做出反应。《SQL Server 2008查询性能优化》指出的性能要点之一是数据库随着用户和数据的日...

    SQLServer2008查询性能优化 1/2

    在开发代码的同时,如果你花费时间和精力来开发一个性能故障排错的方法。那么你就能避免这种情况——至少可以快速而有效地做出反应。《SQL Server 2008查询性能优化》指出的性能要点之一是数据库随着用户和数据的日...

    程序员需要经常刷题吗-agile_a_la_carte:面向问题而非流程的组织的敏捷参考

    是一种迭代式增量式敏捷软件开发框架,用于管理产品开发。 它通过鼓励所有团队成员在物理上共处一地或密切在线协作,以及项目中所有团队成员和学科之间的日常面对面交流,使团队能够自我组织。 看板 看板(日语的...

Global site tag (gtag.js) - Google Analytics