有没有比极限编程(XP)更好的开发方法?

-

极限编程(eXtreme Programming,也译“极端编程”)可谓敏捷运动 1.0 的杰出代表,曾经受到许多狂热拥趸和 XPer 的追捧。XP 的著名实践持续集成(CI)的接受度较高,而测试驱动开发(TDD)、结对编程(PP)等实践的争议较大。

世上从来都没有十全十美的软件开发方法,XP 自然也有它的缺点和局限性。十多年来 XP 曾经在国外的专业软件工程界遭遇过许多深度的批评和争论(包括文章、专著等),只不过在中国这样的不同意见和声音似乎一直都很弱小,被各种运动式洗头、商务洗头和营销努力所掩盖。

15 年过去了,2015 年是 Agile 2.0 元年,是时候更加冷静、客观、科学,少点功利心地来看待 XP 的经验和教训。

大家来谈谈你们团队的敏捷开发最佳实践,以及对 XP 的改进?

程序员 编程 软件工程 敏捷开发 软件项目管理

以下抛砖引玉。

XP 的主要缺点在于偏激、片面和失衡,需求分析、系统建模、架构设计是 XP 主要的薄弱环节。

XP 的用户故事在需求分析方面其实是很弱的,对于项目管理有点用处,但 Use Case 方法在各方面都比 User Story 强许多,在敏捷开发中用例故事也完全可以取代用户故事。

TDD 的主要问题在于 Unit Test First,僵化地要求单元测试优先这在许多情况下没必要,而且是错误的。当然 TDD 中的频繁自动单元测试是非常有价值的,对建立代码的测试安全网、保障重构用处很大。我认为 JUnit 之类的工具似乎比 TDD 方法本身更具有价值。

整体来说,TDD 并不是什么完美、成熟的技术,只能算是半截技术,TDD 缺少的是细致周到的需求分析、预先的架构设计以及 UML 可视化建模等其他同样具有很高价值的技术。

只有最适合的,没有最好的,因为“好”必须有标准来判断,而这种实践性的领域,标准又取决于使用场景,很难达成共识。君不见agilemanifesto.org/iso/ 的17位大牛当你吵架吵了两天,也只能在比较虚的价值观和原则层面达成共识么。

看问题的描述,似乎阁下只知XP,完全不知道其他方法啊,建议可以考虑看看维基百科上的条目:zh.wikipedia.org/wiki/%

至少Scrum总应该知道吧:

© COPYRIGHT BY i How And Why.com 2015