方法学就是习惯,就是不这么做你就觉得很不舒服。
没有什么比好的理论更可实践的。敏捷开发关于测试和集成的理论正是如此。现在我会:
- 让客户确定里程碑。
- 写出业务测试用例。
- 扫除一切障碍,实现业务用例。
特征驱动开发(FDD)提到,它的一个优点就是制定对客户有意义的里程碑。客户可能不懂IT技术,但客户通常会明白什么对他们自己有价值。作为软件开发人员,你不用猜测、假设什么东西对客户有价值。相反,你直接问客户:您最终希望得到什么结果?您希望一个月得到什么结果?
作为技术人员,我们很容易假定一份完备的需求规格说明书对客户是有价值的,一叠UML模型对客户是有价值的,一个架构设计对客户是有价值的。然而,这种假定是错误的。并不是所有的客户都这样想。现在的商业用户越来越重视上市时间。换言之,投资要快一点看到回报。在造一幢大楼时,恨不得第二层还在造,第一层就已经租出去了。
人们对未来的长期预测能力比较差,但对近期的预测能力还是可以的。“明天的天气跟今天差不多”,大多数时候都是对的。就这样,一天天的差不多,在三个月后会有一个大变化,在六个月后变化更大。
FDD说,作为项目经理,不要去问开发者进度。让开发过程自动报告进度。最好是让客户告诉你,我们的项目完成了百分之多少。昨天,一个客户告诉我,他觉得我们的项目已经成功了30%。听得出,他是满意的。
在询问客户之后,把你的理解写成一个可执行的业务测试用例,跟客户确认。如果你写不出来,或者客户不认同,那就是与客户的沟通还有问题。不解决这些问题就开始开发,做出来的东西一定不能满足客户的要求。
确认测试用例之后,施展你的才华的时候就到了。尽你所能,又快又好地实现它。下个星期(月)给客户去演示、发布、上线。
举个例子,如果你想做一个Web 2.0的网站。打算集成SocialSite、JForum、Roller、XWiki...那么你会怎么做?我会先确定用户管理和单点登录机制,然后是无尽的测试和持续的集成。
远期目标清晰,近期目标明确,辅以无尽的测试和持续的集成,大事成矣!