一个理想的迭代开发方法模型在很多方面与理想的瀑布开发模型有着根本上的不同。但是,从实际来说,没有一个团队严格的应用了每一种开发方法模型。本文解释了为什么开发团队决定逐步的从类似瀑布型的开发方法转变成更加类似迭代开发的方法,同时也概述了能够帮助这种转变的步骤。
多数的软件开发团队仍然在开发项目中使用瀑布型 的开发过程。采用极端的瀑布型开发方法意味着你要以严格的顺序来完成一系列的项目阶段:需求分析、设计、实现/集成然后是测试。当项目中出现的问题解是困难的并且解决问题是昂贵时,你可能会推迟测试直到项目周期的末端;这些问题也能够严重的威胁软件发布的期限并且使主要的团队成员在某些开发环节上是空闲的。
实际上,多数的开发团队使用了改进了的 瀑布型开发方法,他们将项目分解成为两个或者更多的部分,有时这些部分被称为阶段或者是时期。这种改良可以帮助简化集成、使测试人员更早的进行测试工作和提供更早的项目状态的观测。这种方法也将代码分解成了易于管理的片断并最小化了以存根和驱动程序形式的、被测试需要的代码集成。此外这种方法允许你原型化你认为有风险的或者有难度的部分,并且使用来自每一个阶段的反馈修改你的设计。然而,使用瀑布型开发方法的执行与想象是相反的:很多设计团队把在阶段 1 之后的修改设计视为他们的最初设计或者需求过程的失败。虽然一个改进了的瀑布型开发方法并不排除反馈的使用,但是它并没有促进、支持和鼓励反馈的使用。最后,想要最小化风险就不要典型的驱动一个瀑布型的开发项目。对于软件开发过程来说,本文探索了”迭代“开发方法超越传统的瀑布型开发方法的进步。
迭代开发的好处
相比较而言,迭代开发方法 — 以 IBM 的 Rational 统一过程 ?,或者 RUP ?为例— 包括了一系列的增量的步骤或者迭代。每一个迭代都包括一些或者很多的开发活动(需求、分析、设计、实现等等),就像你在图 1 中看到的那样。每一个迭代也有一系列良好定义的目标并生成最终系统的部分工作实现。每个后续的迭代都建立在前一个迭代的基础上以使系统得到发展和细化,直到最终产品被完成。
早期的迭代着重于需求、分析和设计;后期的迭代着重于实现和测试。
图 1: RUP 的迭代开发。每一个迭代都包括需求、分析、设计、实现和测试活动。同时,每个迭代都建立在前一个迭代工作的基础上,每一次迭代都会生成更加接近最终产品的可执行版本。
迭代开发方法已经证明了自己优于瀑布型的开发方法,理由如下:
它允许需求的变化
需求的变化和“进一步的蔓延” — 技术和客户驱动的特性的累加 — 一直是项目中导致麻烦、延期交付、令客户不满意和使开发人员泄气的主要原因。为了解决这些问题,使用迭代开发方法的团队应该在项目开发的几周里就关注生成和演示可执行的软件,这样就强制了需求的检查并可以帮助减少需求从而反映系统的本质。
集成不是在项目的尾声进行的“大动作”
将系统的集成留到项目的结尾几乎总是会导致耗时的返工 — 有时这种返工会花费整个项目工作量的百分之四十的时间。为了避免这种返工,每一次迭代都以集成构建系统各部分结束;这样不断的积累将最小化日后的返工。
早期的迭代可以暴露风险
迭代的开发方法可以帮助团队在早期的迭代中减少风险,因为在这些迭代中包括了对所有过程组件的测试。当早期的迭代覆盖了项目的很多方面时 — 工具、购买的软件和团队成员的技能等等 — 团队能够很快的发现被预感的风险是否是真实的,并且能够在问题相对容易并花费很少成本解决时揭示没有被发现的新的风险。
对产品的管理能够采取战术性的变化
迭代开发能够快速的生成可执行的架构(虽然功能有限),这个架构能够为了应对竞争对手的快速版本发布容易的调整产品使之成为”轻量级的“或者“改进的”版本。
它使重用更加容易
识别在迭代中进行的部分设计和实现的公用部分要比在计划期间找出公用部分更加容易。在早期开发中的设计评审允许架构师们发现潜在的可重用的机会,并且利用这个机会为接下来的迭代开发成熟的公用代码。
你能够在每一个迭代中发现并更正缺陷
这会生成健壮的架构和高质量的应用。你甚至能够在早期的迭代中而不是在项目末期的大规模测试阶段发现缺陷。你能够在性能瓶颈没有破坏你的计划之前发现它。
它能够更好的利用项目的人员资源
很多开发组织使用一种管道式的组织方式来匹配他们的瀑布型开发方法:分析人员将被完成的需求发送给设计人员,设计人员将被完成的设计发送给开发编程人员,编程人员再将他们开发的组件发送给集成人员,集成人员将组件集成起来发送给测试人员测试。这种多次的传递不仅容易产生错误而且应用造成误解;这种方式也会使人们感觉他们对最终的产品有很少的责任。迭代开发过程鼓励在项目的各个环节中团队成员参与范围更加宽广的活动,允许团队成员扮演多种角色。项目经理能够更好的利用可得到的项目人员并其可以消除有风险的传递。
团队成员能够沿着项目的道路进行学习
工作在迭代开发的项目中的开发人员在软件开发周期内有很多的机会从他们所范的错误中吸取教训,并能够从一个迭代到另一个迭代的过程中增进他们的技能。通过评估每一个迭代,项目经理能够为团队成员发现培训的机会。相反,工作在瀑布型开发方法中的开发人员典型的被限制在狭窄的技术专长上,并且仅仅有机会从事设计、编码或者测试之一方面的工作。
你能够沿着项目的道路改进开发的过程
迭代末尾的评估不仅能够从产品或者计划方面揭示项目的状态;他们也可以帮助项目经理分析在下一个迭代中如何改进项目的组织结构和过程。
一些项目经理反抗采用迭代的开发方法,将迭代开发视为一种没有尽头的、不可控的形式。然而,在 RUP 中,这个项目是能够被很好的控制的。迭代的次数、周期和目标被仔细的计划;并且项目参与者的任务和角色被良好的定义。此外,进展的客观量度应该能够被获取。虽然团队要从一个迭代到下一个迭代中重做一些事情,但是这个工作也是可以被仔细的控制的
分享到:
相关推荐
从瀑布型开发到迭代型开发的转变,是一个在软件工程领域内备受关注的议题,它标志着软件开发模式从线性到循环、从静态到动态、从封闭到开放的重要变革。瀑布型开发,作为传统软件开发的经典模式,其核心特征是以阶段...
尽管迭代开发模型具有诸多优势,但实践表明,从瀑布型开发向迭代型开发的转变并非一帆风顺。团队需要深入理解迭代开发的原理,制定合适的转换策略,持续优化以适应自身的工作流程,才能充分实现迭代开发带来的益处。...
迭代开发是一种现代软件开发方法,它与传统的CMMI(Capability Maturity Model Integration,能力成熟度模型集成)开发...因此,成功地从传统开发模式转向迭代开发,不仅涉及技术转变,更是思维方式和工作方式的变革。
瀑布模型遵循严格的线性顺序,从需求分析、设计、编码到测试,每一步必须在前一步完成后进行。这种模式下,项目风险往往在后期才被发现,导致高昂的修改成本。而迭代化开发则采用循环迭代的方式,每个迭代周期都包含...
在《软件项目管理:从瀑布到敏捷》中,作者王文虎详细探讨了项目管理的各个方面,包括从传统的瀑布模型向敏捷方法的转变。 1. **项目管理和软件项目管理** - 项目管理是管理一个独特的任务或系统化流程,以创造新...
1. **文化与组织结构的转变**:从传统的瀑布式开发模式转向敏捷开发,需要组织文化、工作流程和管理结构的根本变革,这往往遇到阻力。 2. **资源与技能匹配**:敏捷开发需要高度专业化和跨职能的团队,这意味着需要...
这一宣言为软件开发带来了革命性的转变,从传统的瀑布模型转向了迭代和增量的开发方式。 敏捷开发的核心原则包括: 1. 客户合作胜过合同谈判:敏捷强调与客户密切协作,确保产品满足实际需求。 2. 可工作的软件胜过...
此外,对于那些习惯了传统瀑布式开发的组织来说,向敏捷开发转变需要时间和努力。 ### 敏捷开发与组织的适应性 敏捷开发方法论的适应性是其最大的优势之一,但这并不意味着敏捷开发可以“一刀切”地适用于所有组织...
- **冲刺**:Scrum框架下的短周期迭代开发模式,通常为期2-4周,旨在通过多次小规模的发布来快速验证产品假设并获取用户反馈。 - **每日站会**:每天固定时间举行的短暂会议,用于同步进度、讨论遇到的问题并计划下...
敏捷软件开发方法近来受到了广泛关注,尤其是在企业级软件开发领域。这种热度可以从Google趋势中得到印证,它展示了敏捷开发方法的典型代表Scrum与传统开发方法的典型代表CMMI在搜索量上的变化趋势。从数据可以看出...
### 从瀑布模型到迭代开发:项目管理者的挑战性转变 #### 概述 随着软件开发领域的不断发展,从传统的瀑布模型向迭代开发方法的转变已成为一种趋势。这种转变不仅是技术上的,更是对整个项目管理流程的一次重大革新...
敏捷开发是一种强调快速迭代和持续交付价值的软件开发方法论,其核心在于创造适应性强、高效响应变化的环境,从而帮助团队更好地满足客户需求和应对市场挑战。Scrum是敏捷开发中最流行的一种框架,它提供了一套完整...
总结,一年的敏捷开发实践让我们深刻认识到,敏捷开发不仅仅是方法论,更是一种思维方式的转变。它要求我们以客户为中心,灵活应对变化,注重团队协作,以及持续改进产品和服务。通过不断学习和实践,我们可以更好地...