第一部分绪论 第二章 迭代,进化和敏捷

简介:迭代开发是OOA/D成为最佳实践的核心,也是本书所介绍的OOA/D的核心。

相对于顺序或“瀑布”生命周期,迭代和进化式开发(iterative and evolutionary development)对部分系统及早地引入了编程和测试,并重复这一循环。这种方式通常会在还没有详细定义所有需求的情况下假设开发开始,同时使用反馈来明确和改进演化中的规格说明。

在迭代开发中,我们依赖于短时间快速的开发步骤,反馈和改写来不断明确需求和设计。相比之下,瀑布模型提倡在编程之前就预先完成需求和设计步骤,软件项目具有高失败率。

什么是UP:软件开发过程(software development process)描述了构造,部署以及维护软件的方式。统一过程已经成为一种流行的构造面向对象系统的迭代软件开发过程。

什么是迭代和进化式开发。

    迭代开发(iterative development)是UP和大多数其他现代方法中的关键实践。在这种生命周期方法中,开发被组织成一系列固定的短期(如三个星期)小项目,成为迭代(iteration);每次迭代都产生经过测试,集成并可执行的局部系统。每次迭代都具有各自的需求分析,设计实现和测试活动。

    迭代生命周期基于对经过多次迭代的系统进行持续扩展和精化,并以循环反馈和调整为核心驱动力,使之最终成为适当的系统。随着时间和一次又一次的迭代的递进,系统增量式地发展完善,因此这一方法也被称为迭代和增量式开发。因为反馈和调整使规格说明和设计不断进化,所以这种方法也被称为迭代和进化式开发。

              每次迭代都产生可执行的但不完整的系统,它不是已经准备好的可以交付的产品。直到多次迭代之后,系统才可能合格地用于产品部署。

迭代开发的优点:

  减少项目失败的可能性,提高生产率,降低缺陷率。对迭代和进化式方法的研究表明了这一点。

  在早期(而不是晚期)缓解高风险(技术,需求,目标,可用性等等)。

  早期可见的进展。

  早期反馈,用户参与和调整,会产生更接近涉众真实需求的精化系统。

  可控复杂性;团队不会被“分析瘫痪”或长期且复杂的步骤所淹没。

  一次迭代中的经验可以被系统地用于改进开发过程本身,并如此·反复进行下去。

一次迭代的持续时间和时间定量;

  大部分迭代方法建议迭代时间在2-6周之间。小步骤,快速反馈和调整是迭代开发的主要思想,迭代时间过长会破坏迭代开发的核心动机并增加项目风险。仅仅一周的迭代时间不足以获取有意义的产出和反馈,若迭代时间大于6周,则复杂性会变得不可控制,反馈将延迟。

  迭代的一个关键思想是时间定量,必须依照时间表来集成,测试和稳定局部系统,推迟时间则违约。如果看起来难以满足期限要求,那么建议从本次迭代中除去一些任务或需求,并将其分配在将来的迭代中,而不是推迟完成日期。

什么是瀑布生命周期

  在瀑布(或顺序)生命周期过程中,试图在编程之前(详细)定义所有或者大部分需求。而且通常于编程之前创建出完整的设计(或模型集)。同样,会试图在开始前定义“可靠的”计划或时间表,但常常事与愿违。

如何进行迭代和进化式分析和设计。

什么是风险驱动和客户驱动的迭代计划

  UP(以及大多数新方法)提倡风险驱动与客户驱动相结合的迭代计划。这意味着早期的迭代目标要能够识别和降低最高风险,并且能构造客户最关心的可视化特性。

  风险驱动迭代计划开发更为明确地包含了以架构为中心(architecture-centric)迭代开发的实践,意味着早期迭代要致力于核心架构的构造,测试和稳定。

什么是敏捷方法及其观点

        敏捷开发(aglie development)方法通常应用时间定量的迭代和进化式开发,使用自适应计划,提倡增量交付并包含其他提倡敏捷性(快速和灵活的响应变更)的价值和实践。

  

猜你喜欢

转载自www.cnblogs.com/shadow-shine/p/9718191.html