呵呵,这里呢要切入正题咯……
XP ,虽说是一种相对比较新颖的设想,不过仍然少不了 Teamwork。
相对与传统的,它显得十分轻量(lightweight),基本价值观,这个引用下原文,就是交流、朴素、反馈和勇气。
在这个团队里面,当接手一个项目的时候,开发人员会把项目分划更为细致,针对不同的需求,先确定出不同的模块,这里给这些基于需求提出的模块起一个好听的名字,叫UserStory。当然 UserStory的具体如何分划在很大程度上取决于客户。客户也是其中的参与者。
然后,并不是一个人接手一个Story,而是分划为小组。小组对这个UserStory进行评估,估算一个速度。这个过程美名曰StoryEstimates。
然后就是开始着手写代码。XP一个很显著的特点在这里体现出来了,它往往强调先写测试代码。这个和普通的单元测试(UnitTest)差别不是很大,不过它着重先写测试。因为当时大致框架已经确立,写测试代码就是基于已经公开但却还未实现的接口。随着代码的逐渐实现,测试一个个通过,找出BUG,及时修正。
随后是正式步入开发写代码阶段。这个阶段是常常被划分为若干周期(Iteration)。周期的划分界限要根据实际情况,一般第一个周期的目标是要完成其中最为核心的 UserStory。
N 轮iteration过去了,代码基本上完工了。
现在要做的是整合,再测试。
把已经开发好的 UserStory放一起,使之成为一个大块,我们称此过程为 Continuous Integration。
最后,再首发的release 版出厂前,要做的就应该是再基于整体优化代码,叫Refactoring。
这是一个软件开发周期,与一般的传统开发有着一些本质特点的区别。
我们再看看具体开发中的人与人之间的关系是怎样。
当初XP的倡议者建议是所有开发人员最好在同一间大房子内工作,带日常茶点等供应,每周40小时,不加班,每日要开一个早会,每日工作完成后可以一起玩电脑游戏……
哇……听起来蛮不错的,呵呵,其实我也真想体验下。
不过既然名曰“极限编程”,肯定必有体现极限之处。
Extreme 原意是指要打破传统思维,将软件开发的过程,结果达到最好!
其中有一点是蛮夸张的,也是与传统很不一致的,就是说代码是由两个程序员在同一台电脑上完成。呃……这里说这个也当然不是推崇此点,至于利弊权衡问题还是交给读者咯。
理想状态下,好处是蛮多的,比如说保证一段代码经过了复核和双重测试。貌似有点浪费时间和精力。是不是真的这样?有人做了专门调查,得到的结果是与估计恰恰相反。
这种两人合作式编程,也有个好听的名字,叫 Pair Programming。
呵呵……
基本上该介绍的也差不多了,这些呢,也可以说是一些软件工程的思想吧,不过略有另类。如果有其他看法,非常欢迎在此提出了。
到假期了,我会多多更新我的优快云 BLOG的。谢谢大家支持哦~