当前位置: 首页 > news >正文

[XA]我们为什么不用XP(eXtreme Programming)极限编程?

今天在网上查了下XP(eXtreme Programming)极限编程的使用时机发现我们以前做了的、现在正在做的、以及以后很长一段时间内将做的项目都符合条件,都可以使用极限编程,但是为什么不用呢?

先来看看来自UML工程组织的原文《XP(极限编程)应该在什么时候使用》
http://www.qualitytd.com/information/AboutXP.htm

文章不长直接引用如下:

[极限编程(XP)适用于需求经常发生变化的项目。你的客户对系统应该做什么可能没有一个固定的想法;一个系统每隔几个月其功能就要求进行一定的改变。大多数软件项目的需求都处于这样的动态变化之中。与其它的方法相比,XP能够更好地适应这种情况。

XP适用于高风险的项目。 如果客户需要一个新的系统,而且要求在某天前完成,这里的风险就比较高;如果你的开发组没有做过类似的系统,风险就更高了;如果该系统对整个软件业来说都是一个新的挑战,那这风险就可想而知。使用XP可以降低风险和增加成功的可能性。

XP适用于小规模的项目组,一般在2到10人之间。使用XP不需要拥有博士头衔的开发人员,一般的开发人员就可以。但不能在一个大型的项目组中采用XP。我们注意到,对于一个需求动态变化和高风险的项目而言,一小组XP开发人员要比大的开发组更加有效。

XP对项目组的组成人员有要求。组内不仅包括开发人员,还包括经理和客户,所有人员肩并肩地战斗在一起。软件开发中问题的讨论,项目范围和进度的协商,以及功能测试的创建仅靠开发人员是不够的。

XP对可测试性有要求。你必须建立自动的单元测试和功能测试。虽然在某些情况下这个要求不能满足,但事实上你会惊讶地看到通过某种方式仍然可以达到这个要求。比如可以通过修改系统的设计以使之已于测试。记住,只要你愿意就可以找到一种测试的方式。

 XP对生产力也有要求。从已有的报告中,在相同条件下,所有采取XP的项目组都无一例外地比其它项目组的生产力高。但这从来不是XP的目的。XP的真正目的在于按时交付客户需要的软件。如果这对于你的项目而言很重要,你就可以尝试一下XP……]

我的感想:

首先看“XP适用于需求经常发生变化的项目”,目前国内软件环境可以说极大的一部分都是客户想把自己要求的系统做成什么样,连他们自己也说不清楚,在做需求分析的时候往往是一句“你们做出来我们看看是不是合适”搪塞,既然他们是衣食父母就应当满足他们的这些“不合理”要求,所以我们面对的大多数项目都是需求经常发生变化的项目,与其它的方法相比,XP能够更好地适应这种情况。

再看“XP适用于高风险的项目”, 我们的客户往往都是希望今天跟你谈业务明天最好你就能把他们想要的系统给他们,如果不是关系处理的好他们很难接受项目延期,风险当然可高可低,但是既然xp能降低风险为什么不试试呢?

接着来“ XP适用于小规模的项目组,一般在2到10人之间”,目前国内的软件行业以小公司居多,毋庸置疑的可以使用了,但是同样是该组织提供了一文章《大型项目的XP(极限编程)》http://www.uml.org.cn/SoftWareProcess/rjgc6.htm,我觉得上面的经验教训很好,值得借鉴。

还有“XP对项目组的组成人员有要求”,组内不仅包括开发人员,还包括经理和客户,所有人员肩并肩地战斗在一起。唯一难办到的是客户不能与组员并肩战斗,只有定期的叫他们来参与例会了。

再就是“XP对可测试性有要求”,自动的单元测试和功能测试,目前有很多提供测试的软件,如junit、nunit等,应该可以满足要求;

最后“XP对生产力也有要求”,从已有的报告中,在相同条件下,所有采取XP的项目组都无一例外地比其它项目组的生产力高。但这从来不是XP的目的。XP的真正目的在于按时交付客户需要的软件。这方面只能引用了,因为目前没有任何xp实践。

但是我们为什么会没用XP(eXtreme Programming)极限编程呢?

转载于:https://www.cnblogs.com/Hedonister/archive/2005/06/23/179848.html

相关文章:

  • Windows IIS 6安全保护贴—URL授权全攻略!
  • 身为男人应该做的10件事(转载)
  • 今天下午开了几个小时的会,没有一句话与我有关的,搞到我直打瞌睡。
  • 绘制概念图的工具
  • ArcGIS Explorer,ESRI的...?
  • Vs2005终于出来了,搞了一个英文版的下载地址。
  • 人的惰性
  • MOF 思考
  • 自己真是落伍呀,腾讯收购Foxmail都不知道
  • 发布biztalk的一些onenote笔记,是一个mht格式的,希望对大家有帮助
  • 如何保持Oracle数据库的优良性能
  • Flying,毕业设计
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • 解读C#中的正则表达式
  • 《并发操作一致性问题》已全部完成
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【391天】每日项目总结系列128(2018.03.03)
  • CentOS7 安装JDK
  • JavaScript 基础知识 - 入门篇(一)
  • JavaScript类型识别
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • MySQL的数据类型
  • October CMS - 快速入门 9 Images And Galleries
  • react-native 安卓真机环境搭建
  • React-生命周期杂记
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 深度学习入门:10门免费线上课程推荐
  • 微服务入门【系列视频课程】
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 异常机制详解
  • 用简单代码看卷积组块发展
  • 在Unity中实现一个简单的消息管理器
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​520就是要宠粉,你的心头书我买单
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • #图像处理
  • (1)bark-ml
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (Matlab)使用竞争神经网络实现数据聚类
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .NET Framework与.NET Framework SDK有什么不同?
  • .net 后台导出excel ,word
  • .net专家(张羿专栏)
  • /3GB和/USERVA开关
  • /dev下添加设备节点的方法步骤(通过device_create)
  • @ModelAttribute使用详解
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • @Pointcut 使用
  • @Responsebody与@RequestBody