在大学里,我们谈到了敏捷编程,但也讨论了在业务中没有使用多少敏捷方法,比如结对编程.
我想知道哪些方法属于敏捷编程(极限编程,结对编程),哪些是真正使用/你使用的.那么迭代和增量开发呢?
编辑:由于"主观和议论"而想要关闭该问题的人.这个问题可以回答,因为敏捷开发是一种定义的表达. http://en.wikipedia.org/wiki/Agile_software_development.更多的用户对此问题感兴趣,关闭它并没有得到很好的考虑
敏捷开发本身并不是一种方法论,它是一个描述几种敏捷方法的总称,它们都属于迭代和增量开发 - IID系列.
替代文字http://img62.imageshack.us/img62/6374/dd997578teamprojagileum.png
在2001年签署敏捷宣言时,代表了以下方法:极限编程(XP),Scrum,DSDM,自适应软件开发(ASD),水晶,特征驱动开发(FDD),语用编程.他们每个人都拥有敏捷宣言的核心价值观,但他们采用略有不同的方法来实施.
相比之下,结对编程是一种工程实践(它是XP的一种实践,它将许多实践捕获为不可分割的集合,但您可以在XP之外使用它).而且,虽然我非常重视实践,但请记住,实践不是目的,它们只是我之前写的一个意思.敏捷不是要进行结对编程,站立会议等.敏捷是关于最大化客户价值,同时最大限度地减少浪费,以提供最佳的投资回报率.敏捷是面向业务的,实践只是在给定环境中实现这一目标的一种方式.
Scrum和XP(一起使用)是目前最常用的.
听起来你真的想知道人们在现实世界中实际使用了什么.有很多网站关于什么是敏捷实践/方法,什么不是敏捷实践/方法.
所以,我迄今为止(最近5年)角色的经历:
我刚刚看到了敏捷实践调查结果:2009年7月.这是一个相当小的样本集(123),但它提供了一些有趣的视角.例如,前10个最有效的敏捷敏捷实践(由受访者报告)是:
还有前10个敏捷实践的图表:
我们不会为了这种做法而采取这种做法.敏捷实践源于遵循宣言网站上所解释的敏捷原则.最敏捷的原则是:"通过早期和持续交付有价值的软件来满足客户".早期,持续和有价值的是那里的关键词.如果一个团队不理解这些原则如何推动这些实践,那么就像@Guildencrantz所说的那样,他们冒着存货的风险,没有他们期望的魔术成功,宣称敏捷失败,并放弃它.
我手边没有很好的引用,但一般认为在绿地项目上比在将棕色地带项目转换为敏捷方面更敏捷.其中一个原因是现有代码通常以难以添加自动化测试的方式编写.Michael Feathers写了一本关于为遗留代码添加测试的书.