※ 引述《vity (逍遥杯-佛得)》之铭言:
: 大家好
: 想请问一下这两个名词,
: 我认知是, Agile的精神在于让使用者与开发者大量的沟通,
: 例如使用雏形.
: 而Rapid则是Agile的一种,例如Dynamic systems development method
: 其精神在于反复与渐增式开发, 同样使用者与开发者大量沟通.
: 像Extreme programing也是agile的一种, 着重反复与渐增
: 我感觉起来三个几乎一样...不知关键差异在哪呢
Incremental model 是在 1970 年代就有人提出来的古典开发模型,
只是当时瀑布模型被喊得震天响,不这么做就是落伍乱来,把其他开发模型都压制了,
所以是很非主流的理论(因为当时软件的主要市场在大型机构的电脑化)。
总之,到了个人电脑和 OOP 流行之后,由于套装软件的需求和开发工具的进步,
渐进模型才又咸鱼翻身,并大量出现各种改进的模型和开发方法,
到 1990 年代,瀑布模型反而人人喊打,以渐进模型为基础的方法大行其道。
以原po提到的这三种较知名的方法来说:
RAD 是 1991 年提出的方法
Extreme 是 1996 年
Agile 则是 2001 年
由于都在同样的基础上发展,所以看起来都很像,并且后来的方法,
自然会大量参考先前的方法,需要比较的重点,就是其间的演进了。
并且以时间点来看,真的不太能说某某方法是 Agile development 的一种,
后来才出现的方法,要把过去的方法收编在其名下,怎么说都很怪。
RAD 所着重的,就是对外的快速原型,由此在内部的软件结构,也因此需要着重,
当初会非常流行,主要就是因为 VB 的成功了。
到了 Extreme 就强调更深度和完善的沟通和回馈,
可以说是朝着和客户共同开发的目标在走,因为客户就是会想要改来改去,
与其被客户搞得要死,不如叫他们一起参与开发过程。
那时候会流行 Extreme, 最主要就是因为大家都想要开网站。
Agile 则比较像是支持这类方法的狂热开发者社群,给各种新的开发方法,
给予他们的认证,从某个角度来说,实际上就是他们在自 high,
别人可不见得愿意被收编呢。
不过整体来说,就是朝着更为极端化的方向在走了,其中最大的特点,
可能就是正面肯定并引进 open source 运动所带来的一些做法了,
例如支持 release early, release often 的原则就是一个例子,
所以和 open source 社群比较有交集,于是声势很大,外界的争议和疑虑也多。
总之,这三者在实务上最简单的分辨方法:
做 demo 程式给客户看的叫 RAD
和客户一直讨论个不停的叫 Extreme
常常发布新版本的叫 Agile
当然这些方法都有其软件工程理论发展的脉络,但如果光看理论,
很容易看得昏头涨脑,不知道这些方法的重点在哪里,以及为什么。
若反过来从写 VB 程式、开发网站,和做 open source 专案,
这样的有时代性的需求来看,这些方法不过都是专家们整理开发经验的结果,
于是从这个角度来看,其实就会很容易理解了。