RUP与XP的平衡之道

Author:SpiderMan(ShenZhen)
From:http://blog.csdn.net/testwin
Email:testwin@sohu.com

人有过什么经验,遇到过什么恐惧的事,就会形成设法避免这种事情的方法学。研究重型方法学的人可能一直以来的经验就是组织上千人的开发队伍进行开发,比如说大型电信系统的开发、军事航天系统的开发......这种项目严格强调过程执行的规范,注重文档规范、评审及过程度量。而发明XP的人可能一直是在小团队里做项目,项目团队只有3、5个人,项目总是会因为没有满足用户价值而被Cancel,开发公司也蒙受损失,因此注重与用户的交流、反馈,强调快速、灵活。
     每种软件方法产生的背景不同、特点不同、适用的领域亦不相同。那么对于软件项目来说,是否可以使用同一种软件开发方法来对不同类型、规模、复杂度的项目来进行开发呢,显然是不合理的。
     前不久,恰巧和国内一位资深的软件工程咨询顾问做过一些交流,他本人热衷于RUP的过程改进,倡导针对不同类型项目进行适当的裁剪,实际上这也是一种灵活适应的方式、随需而变的思想。我对此是理解并赞同的,但是我对RUP却一直保持一种相对谨慎的态度。  
    对于RUP来说,首先,我认为它过于理想化和理论化,RUP 是过程组件、方法以及技术的框架,你可以将其应用于任何特定的软件项目,由用户自己限定 RUP 的使用范围。对于各种类型的软件项目,RUP并未给出具体的自身裁减及实施策略,总有些无依据可循的感觉。你既可以说它能解决任何问题,也可以说它什么都不是;其次,RUP从本质来说还是一个强调设计和规范的软件方法,从这个角度来讲,与传统的瀑布模型没有太大差别,它的灵活性较之敏捷方法还是相对较弱的。在一些小型软件项目、特别是不可预测的软件项目开发中,面临着各种紧急需求、面临着时间压力,沿用RUP是很难应付自如的。但是在另一方面,RUP强调对知识的收集、整理和加工定义,强调在软件开发的时候要有好的体系结构。所以它还是很有利于知识的积累和共享的。
    相比RUP ,敏捷方法如XP则更为灵活,倡导尽早的、持续的交付有价值的软件满足用户需要。用交流沟通取代详尽的文档,强调团队的主动、自律、自我组织和自发管理。而XP也是以代码为核心的一种方法,这里有很多的东西是未知的,知识只存在于两个地方:开发者的头脑和最后的代码。对于项目管理者来说,他们会认为敏捷开发方法弱化了知识管理的概念,而实际上敏捷开发注重的是最有价值的知识的积累和沉淀。
    如何灵活应对各种项目风险、如何最大化优先满足用户价值、又如何能够有效的控制项目开发过程、如果做好项目过程中的知识管理,是每一个软件项目管理者都需要深入思考的问题。RUP的倡导者一直强调RUP裁剪,实际上我认为RUP不仅仅是需要自身的裁剪,还需要学会融合。在RUP裁剪的同时,适宜的融合敏捷开发的各种实践。不要认为RUP与XP是矛盾的,其实不然,它们具有不同的原理、具有不同的应用领域。在 RUP 中融合了 XP 技术时,才会得到过程的正确量,既满足了项目所有成员的需要,又解决了所有主要的项目风险问题。对于一个工作于高信任环境中的小型项目团队,其中用户是团队的一部分,那么 XP 完全可以胜任。对于团队越来越分散,代码量越来越大,或者构架没有很好定义的情况,您需要做一些其他工作。在用户交互具有"契约"风格的项目中,仅有 XP 是不够的。RUP 是一个框架,可以从 RUP 出发,在必要时以一组更健壮的技术来扩展 XP。

RUP最佳实践包括:
1. 迭代开发
2. 管理需求
3. 使用基于组件的构架
4. 可视建模
5. 持续的质量验证
6. 控制变更

12 个 XP 实践包括:
有计划的开发:通过结合使用优先级"故事"和技术估算,确定下一版本的功能
小版本:以小的增量版本经常向客户发布软件
隐喻:隐喻是一个简单、共享的"故事"或描述,说明系统如何工作
简单设计:通过保持代码简单从而保证设计简单。不断的在代码中寻找复杂点并且立刻进行移除
测试驱动开发:用户编写测试内容以对"故事"进行测试。程序员编写测试内容来发现代码中的任何问题。在编写代码前先编写测试内容
重构:这是一项简化技术,用来移除代码中的重复内容和复杂之处
结对编程:团队中的两个成员使用同一台计算机开发所有的代码。一个人编写代码或者驱动,另一个人同时审查代码的正确性和可理解性
集体代码所有权:任何人都拥有所有的代码。这就意味这每个人都可以在任何时候变更任何代码
持续集成:每天多次创建和集成系统,只要任何实现任务完成就要进行
每周 40 个小时:程序员在疲劳时无法保证最高效率。连续两周加班是绝对不允许的
现场客户:一名真实的客户全时工作于开发环境中,帮助定义系统、编写测试内容并回答问题
编码标准:程序员采用一致的编码标准证
RUP与XP的融合,是各自特点的相互补充,也是软件开发方法的平衡之道。而对软件技术平衡的思考也可以说是技术成熟的开始吧。
最后,再补充一点个人体会。在软件项目开发过程中,应该能够识别、分析不同软件项目的特点,采用相对适合的开发实践来适应软件开发过程,保证对软件开发的有效支持,以便能够创造出“足够好的”软件。而这个足够就是对 进度、成本、质量之间的平衡,最大化满足客户需要的实现。

本文转自测试时代,点击可参与精彩讨论:
http://www.testage.net/bbs/dispbbs.asp?boardid=30&id=5890&star=1#29302

转载于:https://www.cnblogs.com/guanhe/archive/2006/06/28/437889.html

[转贴]RUP与XP的平衡之道相关推荐

  1. 敏捷项目管理文化变革之二:敏捷的文化基因-平衡之道

    敏捷最有智慧的地方在于它只为我们提出了核心价值观和12条原则,它并没有告诉做什么和怎么做,因此基于这一基础,任何符合敏捷核心价值观和原则的方法.实践,我们都可以称之为敏捷.正是敏捷开发的这种开放性和动 ...

  2. 技术系列课回顾 | 视频 QoE 的平衡之道

    导读:本文根据网易云信资深引擎工程师戚继跃在<MCtalk Live#4:视频 QoE 的平衡之道-揭秘网易云信 NERTC 视频质量控制系统>线上直播分享整理,文末有直播视频回顾以及 Q ...

  3. 《皇室战争》游戏设计师:顶级卡牌竞技游戏的‘平衡之道’

    本文转自:https://news.cnblogs.com/n/565584/ 2016 年,芬兰的 Supercell 再次成为全球手游收入冠军,目前该公司在线的 4 款游戏里,表现最好的是< ...

  4. RUP,XP,敏捷原理

    ①RUP-- RUP(Rational Unified Process,统一软件开发过程,统一软件过程)是一个面向对象且基于网络的程序开发方法论. 根据Rational(Rational Rose和统 ...

  5. Re:CMM和RUP、XP的关系是什么?

    SEI官方说法:XP与CMM没有冲突. 而在实践中,两者冲突比较明显. 以需求为例.CMM要求有方法论得到文档化的需求. XP重视迭代,现场用户快速反馈.用户故事+程序反映需求. 以计划为例,CMM要 ...

  6. 网络QoS的平衡之道——音视频弱网对抗策略介绍

    导读:随着AI和5G的到来,音视频应用将变得更加广泛,人们对音视频的品质需求也越来越高,视频分辨率已经从高清发展为超高清.VR,视频帧率也已出现60fps.120fps等应用,交互式的应用对端到端延时 ...

  7. 用户体验设计和精益设计的平衡之道

    对你而言那个更重要:是制作出拥有杀手级用户体验的产品来吸引用户?还是尽快制作出能满足用户的产品并抢占大量的市场份额? 假设一款产品用户体验非常差的话,用户不会使用它,但假设作为市场上的先入者,用户也会 ...

  8. BlockChange | 平衡之道:区块链是一场非常大型的社会实验(圆桌实录)

    只要你仍然在接收外界信息,你一定听过"区块链".作为比特币底层设计思想的衍生,它现在已经成为最火的技术之一,在世界范围内引起了巨大的关注. 在中国,很多企业都在这一块进行探索,寄希 ...

  9. 平衡之道:区块链是一场非常大型的社会实验(圆桌实录)

    大数据文摘作品 编辑:亭八 只要你仍然在接收外界信息,你一定听过"区块链".作为比特币底层设计思想的衍生,它现在已经成为最火的技术之一,在世界范围内引起了巨大的关注. 在中国,很多 ...

  10. 软件开发过程(CMMI/RUP/XP/MSF)是与非?

       经常看到和听到大家在争论敏捷过程.RUP和CMM 哪个软件开发过程更好或者哪个过程不好,各自都有理由.争论得不亦乐乎......实际上,没有十全十美的过程,也不存在更好的过程.关键是什么样的过程 ...

最新文章

  1. hihoCoder-1830 2018亚洲区预选赛北京赛站网络赛 C.Cheat 模拟
  2. Linux C编程--临时文件
  3. python本地读csv文件_python读写csv文件方法详细总结
  4. 手机 滑动_真的滑动屏,华为手机柔性屏新的专利布局
  5. bib config_OEMAddressTable,config.bib详解
  6. springboot socket服务端_从零开始学SpringBoot之Spring Boot WebSocket:编码分析
  7. Airbnb基于Embedding技术的实时个性化推荐
  8. 23种设计模式(十五)接口隔离之适配器
  9. c# LINQ 使用
  10. Atitit 编程语言知识点tech tree v2 attilax大总结
  11. 苹果5完美越狱_Checkra1n 越狱常见问题汇总
  12. 如何Altium Designer中输出元件清单(BOM表格)
  13. 从零开始微信小游戏(cocos creator)
  14. AT070TN92 电源
  15. RDIFramework.NET V3.3 WinForm版新增订单管理主从表事例
  16. 国外5G行业应用产业政策分析及对我国的启示
  17. 什么是rundll32.exe,为什么运行?
  18. DCOS之Mesos-DNS介绍
  19. 微信多开防撤回工具再也不用担心好友撤回消息和登录多个账号了
  20. 计算机存储器的有关术语,关于计算机存储器,不正确的描述是()。

热门文章

  1. Android 存储学习之在内部存储中读写文件
  2. HTML5方式使用freeswitch——VERTO模块
  3. S3C2440看门狗定时器(Watchdog)
  4. linux 电源管理
  5. 不错的网络协议栈测试工具 — Packetdrill
  6. java程序包怎么更新,从Java 8升级到Java 11-软件包sun.util不存在
  7. linux查看进程占用内存与ps命令
  8. Spark项目 error while loading <root>, error in opening zip file
  9. 使用匿名内部类排序对象
  10. hive 正则表达式详解