试验驱动开发——“后敏捷”之道
测试驱动开发(TDD)和行为驱动开发(BDD)现在已经成为广泛应用的软件开发技术。然而,仅仅遵循BDD和TDD还是可能导致丧失业务机会,甚至可能对业务产生负面影响。TDD和BDD有两个无法回答的问题:如何衡量应用的使用状况?如何得到客户的反馈?那么,试验驱动开发(EDD)也许能给出答案。
测试驱动开发(TDD)和行为驱动开发(BDD)现在已经成为广泛应用的软件开发技术。然而,仅仅遵循BDD和TDD还是可能导致丧失业务机会,甚至可能对业务产生负面影响。TDD和BDD有两个无法回答的问题:如何衡量应用的使用状况?如何得到客户的反馈?那么,试验驱动开发(EDD)也许能给出答案。
DocumentCloud是一个提供基于文档应用的非营利性组织。因为考虑到同时要处理好几个资源消耗比较大的任务,DocumentCloud决定用 Ruby实现自己的云方案:CloudCrowd。InfoQ采访了这一项目的作者,来自DocumentCloud的Jeremy Ashkenas。
主流开发语言的代码质量工具已经达到了一定的成熟度,但是Ruby相关工具仍在成长,而且在Ruby从早期采纳者普及到早期大众的过程中,这些工具变得愈加重要。InfoQ检视了目前Ruby世界中能够为人们所用的多种代码质量工具。
在Ruby或者Rails应用中嵌入C代码是解决性能瓶颈的办法之一,RubyInline大大简化了这个过程。Mark Wotton近期推出的Hubris使得在Ruby中调用Haskell代码成为可能。
随着时间的推移,管理基于SQL的脚本简直成了梦魇。Rails则通过ActiveRecord Migration解决了这个问题。 Sam Livingston-Gray编写了一个独立的Ruby小工具,来生成层次化的迁移脚本。因为SQL脚本通常都比较繁复冗赘,因此Sam将SQL和Ruby相结合创建了SQrbL。
Ruby因为其1.8版本的用户空间线程而饱受批评。Luc Castera在RubyNation会议上给出了通过Ruby和元组空间进行并行编程的演讲。他介绍了使用Ruby实现元组空间的两种方法:Rinda以及基于Redis的Blackboard,并计划将后者移植到Erlang之上。
许多方法都可以开发、测试和集成Rails应用程序:例如使用基础的Test::Unit或ZenTest进行测试驱动开发,利用RSpec、Shoulda或Cucumber进行行为驱动开发。Remarkable则试图将这些工具的语法统一起来,并添加更多特性,从而避免Rails行为驱动开发的痛苦。
Ruby语言受到了一些函数式程序设计技术的影响。Larry Diehl基于Oz语言的Unification概念,为Ruby引入了声明式并发控制模型。
SAP,占领着CRM和ERP最高的市场份额,也是第二大的商业软件公司,正准备把Ruby纳入SAP NetWaver和SAP ERP 6.0之中。ABAP Virtual Machine将会通过Blue Ruby扩展来支持Ruby代码。围绕着最近对Ruby VM的辩论,我们采访了来自SAP的Juergen Schmerder和来自Sun(JRuby)的Charles Nutter。
Evans Data发布了脚本语言调查结果。在500多名开发者和IT专家心目中,PHP、Ruby、Python是他们最爱的语言。随着时间推移,企业中脚本语言的应用也发生着变化,这份调查列举出了每种语言的优缺点。Richard Dice(Perl基金会主席)在近期的采访中表示,脚本语言在企业里面正在呈现上升趋势,不仅仅用于简单任务或是原型构建。它们的应用范围更加广阔。