zoukankan      html  css  js  c++  java
  • 软件需求 (第三版)微软技术丛书阅读笔记(二)

    本书第Ⅲ部分讲述敏捷开发模式:

    敏捷开发是指一套软件开发方法,鼓励干系人之间持续合作并快速、频繁以小增量的方式交付有用的功能。敏捷方法种类繁多,其中最流行的包括Scrum、极限编程、精益软件开发、特性驱动开发以及看板方法。“敏捷软件开发宣言”的发表使“敏捷开发”这个词迅速普及。敏捷方法基于以前的迭代和增量式软件开发方法。各种敏捷开发方法各有千秋,但是本质上都离不开适应性方法,而非预测性方法。预测性方法试图在软件开始构建之前通过周密的策划和文档将项目的风险降到最低,比如瀑布开发就是预测性方法。项目经理和业务分析师要在开始构建之前就确保所有干系人都准确了解要交付什么产品。只有需求从一开始就得到充分理解,并且在项目期间能够相对稳定,这种方法才能可以很见效。敏捷方法等适应性方法旨在适应项目中发生的不可避免的变化。它们对需求高度不确定或波动的项目也很有效。

    通常认为,瀑布开发流程中的各项活动是一个线性序列,在这个过程中,团队会对需求进行完整规范,然后创建设计,之后写代码,最后测试方案。理论上,这种方法有很多优点,比如,团队能够尽早消灭应用程序在需求和设计中的缺陷,而非在构建、测试或维护时以高昂的代价修复错误。如果前期的需求是正确的,就能很容易地对预算和资源进行分配、对进度进行度量以及对完成日期进行准确估算。然而,在实践中,软件开发很少如此顺利。

    预测性项目会预判有限的变化并且采取相应的处理措施,而且一般在瀑布开发项目中,为了尽量是整个需求集合合“正确”,团队会投入大量的精力。即便如此,也几乎没有项目会使用完全串行的瀑布方法,在各阶段之间总会有某些重叠和反馈。除瀑布和敏捷方法之外,还有许多可能的软件开发生命周期,它们都在不同程度上强调要在项目前期开发一整套需求。在从完全固定的、预测性的项目到完全不确定、适应性的项目之间的范围中,关键区别在于从某个需求创建到基于这个需求交付给客户所经过时间的长短。

    使用瀑布方法的大型项目通常都会延期交付、缺少必要的特性并且不能满足用户的期望。因为瀑布项目的各个方面都依赖于需求,所以极易遇到这些失败。在周期长的项目过程中,干系人经常改变需求。干系人肯定会改需求,这是一个不争的事实,因为在项目早期,干系人无法精确知道自己想要什么;有时只有干系人看到事情与其想法不符才会明确表达出来;有时在项目过程中,业务需求也会发生变化。

    敏捷开发方法试图解决瀑布模型的局限。敏捷方法专注于迭代和增量的开发方式,将软件的开发分解成短周期。这些短周期称为“迭代”。迭代短至一周,长至一月。在每个迭代中,开发团队根据客户设定的优先级选择少量功能加以开发和测试以确保能够正确运行并使用客户设立的验收条件进行确认。后续的增量对已有产品进行修正、对原有特性进行完善、加入新的特性并且纠正所发现的缺陷。持续的客户参与,使得团队能够尽早发现问题和调整方向,从而指导开发人员调整其工作过程,以免在错误的方向上走得太远。目标是在每个迭代的最后产出潜在可交付的软件,哪怕只是预期最终产品的一小部分。

  • 相关阅读:
    Friends ZOJ
    2^x mod n = 1 HDU
    Paint the Grid Reloaded ZOJ
    Treap 模板
    bzoj进度条
    。。。
    bzoj
    。。。
    bzoj
    题解continue
  • 原文地址:https://www.cnblogs.com/-2016/p/8465093.html
Copyright © 2011-2022 走看看