迭代开发需要一种不同的观点[4]
使项目中的每一个成员都参与到质量保证中

对于项目经理来说移到迭代开发方法需要的其他思想的改变是开始将质量保证作为一个集体的职责考虑。我通常会惊讶的听到项目经理说“我需要测试小组对我的开发人员保持忠诚,”或者“如果分析人员没有写下单个的需求,他们将不会被实现。” 当然,你的确需要测试小组来建立高质量的应用,并且失败的文档化和跟踪需求将导致问题的出现。但是如果开发人员不把质量当作自己的责任,你也就会陷入到质量问题中。为了实现这一点,你需要从通过信任你的团队和清晰的交流你们的预期开始。假如你不能信任这些人,那么也许这些人不应该属于你的团队。

  理想的情况下,项目经理应该能够宣称“我的开发人员负责交付高质量的代码;为了帮助开发人员,我们有一个测试团队,测试团队有专业的能力并可以验证被交付的代码是否是高质量的,”并且“我们的开发人员负责实现满足最终用户需要的应用。为了帮助开发人员,我们有一个分析的团队在适当的详细级别上文档化需求,并且分析人员是开发人员和最终客户之间的桥梁。” 创建交能够协同工作的团队 — 也就是说使团队中的分析人员、开发人员和测试人员能够一起工作来实现高质量的结果 — 是成功的迭代开发的关键之一。

  质量保证和方法专家的新思想

  许多组织都有质量专家 — 负责达到一定的标准的人,比如 SEI CMM / CMMI 中的标准,或者是组织内部的质量标准。许多组织也有方法专家,他们或者来自软件工程过程组(SEPG),或者是独立的负责软件开发中的方法。

  通常,这些质量和方法专家在采用迭代的开发思想时存在最大的问题。他们中的许多人花费了他们职业生涯的大部分时间来驱使组织按照“文档越多越好”、“越多检查越好”、“对于过程工作,需要被彻底的文档化”,和“过程应该提供一个基于时间的你所需要执行的项目中的特定任务的描述”这样的传统的至理名言来指定过程。他们相信通过跟随这些提供了高度形式化的原则,就可以避免项目的失败。

  然而,当这样做的太过火时,将产生相反的效果,因为 高度的形式化将增加迭代的成本,并鼓励使用瀑布型的周期。相反,你需要通过风险驱动,对每个迭代产生可演示的结果的迭代方法彻底的平衡文档的最佳实践。这种方法允许项目团队增强产品的质量,同时也可以降低形式化的程度和整个的成本。我们应该注意,使用迭代的方法并不排斥使用高度形式化的方法,高度形式化的方法可能对安全第一的应用或者其他严格要求质量的应用是有用的。

  灵活性是关键的

  一个关键的变化是软件过程和质量方法应该提供给项目经理调节项目风险的足够的灵活性;项目经理应该不断的监视项目的活动和状态,并且调整过程的执行以降低关键的风险。一个过程可以指明如何应对各种风险和产生被需要的结果,但是风险典型的是预先未知的,因此你不可能在早期就指明什么任务应该被执行来应对风险。你也不知道哪一个需求应该被指定什么时候用什么组件来设计和实现他们。这就意味着你所用的过程需要提供关于里程碑代表什么、如何实现它和如何降低风险的清晰的管理指南 — 通过注意项目执行的细节来保留过程的灵活性。

  你不能通过在项目过程中简单使用具体的指导来创建一个一个有效的项目计划。项目计划本身需要是一个迭代的过程,包括对当前风险、进度、测试结果等等进行评估以为下一阶段的迭代的详细计划收集输入。

  这也意味着项目的检查或者审计不应该主要的关注验证是否项目团队已经制造了一系列的产物或者执行了一系列的活动。相反,审计应该瞄准在识别和验证风险和确认 适当的产物和活动被完成以降低风险上。审计也应该检查以前的问题以识别出公共的失败模式,并且建议过程的修改以保护将来的最小失败的可能性。

  客户的新思想

  使用传统的软件开发方法的客户期望在开发工作中有最小的投资。他们想预先指出所有的需求,确定一个固定的价格,然后等待最终系统的交付。经常的,会产生在期望值和实际交付系统之间的非常大的差距 — 解决方案并没有满足客户真实的业务需要。
  
  通过转向迭代开发,改变客户和开发团队之间的交互模式,客户和开发团队都可以避免大量的痛苦。在一个迭代开发的项目中, 客户应该是构建应用团队中的不可缺少的一部分。客户与开发团队的其他成员协同工作以确保最终交付的应用系统满足被需要的业务价值。客户的组织应该尽可能的保持与开发团队之间交互的兴趣,以确保开发团队可以理解他们应该构建什么和项目中具有什么样的风险和问题。如果客户没有帮助指导开发的工作,开发团队可能会开发出错误的应用 — 每个人都会蒙受损失。

  在迭代开发的模式中,客户不能仅仅指出他们所预期的然后就等待系统交付。不论他们怎么清晰的定义,所有的需求都从属于众多的说明和可能的实现。对开发团队来说,与其生成更加详细的需求,还不如投入时间更加频繁和有效的与项目的关键投资人(包括客户)进行沟通。那么,当客户查看演进的应用时,他们将获得应用应该做什么的更好的理解,并可以提供有建设性的建议以改进系统。同时,如果在项目中业务要求发生快速的变化,需求也需要随之发生改变。

posted on 2007-02-27 10:28 JazzieZhang 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/JazzieZhang/archive/2007/02/27/657883.html

迭代开发需要一种不同的观点[4]相关推荐

  1. 瀑布式开发、迭代开发、敏捷开发的区别

    瀑布式开发.迭代开发,区别[都属于,生命周期模型] 两者都是一种开发模式,就像设计模式一样,考虑的角度不一样,个人感觉谈不到取代一说. 传统的瀑布式开发,也就是从需求到设计,从设计到编码,从编码到测试 ...

  2. 敏捷开发是一种以人为核心、迭代、循序渐进的开发方法

    简单的说,敏捷开发是一种以人为核心.迭代.循序渐进的开发方法.在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征.换言之,就是把一个大项目分为多个相互联 ...

  3. 敏捷开发:5种主流开发方法介绍

    一.极限编程 极限编程(ExtremeProgramming,简称XP)是由KentBeck在1996年提出的.极限编程是一个轻量级的.灵巧的软件开发方法:同时它也是一个非常严谨和周密的方法.XP是一 ...

  4. 产品迭代开发 迭代发布_迭代开发用例

    产品迭代开发 迭代发布 我所阅读的有关用例的几乎所有内容都集中于描述需要添加到产品中的内容. 敏捷开发说"首先使它工作,然后使其更好." 这意味着改变软件使用户能够执行他们已经可以 ...

  5. 《敏捷迭代开发:管理者指南》—第2章2.5节渐进开发和自适应开发

    本节书摘来自异步社区<敏捷迭代开发:管理者指南>一书中的第2章2.5节渐进开发和自适应开发,作者[美]Craig Larman,更多章节内容可以访问云栖社区"异步社区" ...

  6. 《敏捷迭代开发:管理者指南》—第2章2.14节推荐读物

    本节书摘来自异步社区<敏捷迭代开发:管理者指南>一书中的第2章2.14节推荐读物,作者[美]Craig Larman,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  7. 《敏捷迭代开发:管理者指南》—第2章2.9节增量交付

    本节书摘来自异步社区<敏捷迭代开发:管理者指南>一书中的第2章2.9节增量交付,作者[美]Craig Larman,更多章节内容可以访问云栖社区"异步社区"公众号查看. ...

  8. 敏捷开发_敏捷开发和迭代开发的异同分析

    随着软件开发技术的不断发展,现在出现了敏捷开发和迭代开发两种新的开发方式,这两种开发方式都可以提高软件开发的效率.那么它们之间有什么相同的地方和不同的地方呢?下面一起来了解一下相关的知识吧! 一.定义 ...

  9. 软件开发作为一种价值领域的研究

    免责声明 本文是我对软件开发本质的个人看法.这并不是要成为科学论文,因此,许多陈述是故意加粗和直接的,以使文章简短.我尽力根据自己的观察和可用的资料来介绍软件开发的性质,但是我不是商业理论家.科学哲学 ...

最新文章

  1. formdata 接受参数中带有class 对象_Django(五)- 请求与响应 - request对象
  2. 基于若依框架的二次开发_SAP Commerce(原Hybris)的订单处理框架和SAP CRM One Order框架...
  3. Shiro学习总结(1)——Apache Shiro简介
  4. HDOJ 1720 A+B Coming
  5. 大数据技术如何提升企业竞争力
  6. 在windows中使用scp命令将文件上传到远端服务器
  7. ad9原理图转到orcad capture16.5
  8. 如鹏网.Net三层架构 第四章代码生成器
  9. snipaste滚动截图方法_不同级别的截图工具,快来按需领取吧
  10. 1962年 电影版 越剧红楼梦 剧本
  11. 英语听力下载《走遍美国》
  12. WINDOWS SERVER 2016 设置使用照片查看器查看图片
  13. ubuntu安装pr_[原创]Dapr入门教程之二:Dapr的安装
  14. 我的世界pe服务器坐标怎么显示,我的世界手机版坐标怎么看 PE版没有MOD怎么查看坐标...
  15. 简单的android小程序计算机,Android实现简易计算器小程序
  16. 业务中台构建--业务驱动为核心的云原生体系建设思考
  17. c语言打印红色爱心(程序员的浪漫)
  18. 《Kotin 极简教程》第9章 轻量级线程:协程(2)
  19. 使用反射判断对象的值是否为空并赋新值操作
  20. Beta版本使用说明

热门文章

  1. 单目相机提高标定精度的经验(转载)
  2. Ubuntu16.04 UltraEdit 安装破解使用
  3. H264中DCT变换,量化,反量化,反DCT变换
  4. 删除顺序表中重复元素,并按照原序输出
  5. QT [004] QT SDK 和 QT quick 和 QT creator的区别历史和沿袭
  6. ajax 入参为list_ajax向后台传递list参数
  7. sqlite 复合唯一索引_sqlite 批量插入, 重复插入(更新)
  8. 玛酷机器人与艾迪瑞特_加盟玛酷机器人和艾克瑞特机器人哪个好
  9. 网易云android视频播放器,网易云服务-在线搜歌-数据结构
  10. python该怎样使用_Python 应该怎么去练习和使用?