作者:《程序员》杂志 来源:CSDN   酷勤网收集 2008-09-29

摘要
  ThoughtWorks在敏捷软件开发实践的基础上,在领域专用语言和精益思想等方法上进行着持续的创新,在方法论和实践中始终保持着业界领先的地位,同时又在不断积累和沉淀中显得更为成熟、稳健。

2008年6月21日,由Thought-Works与CSDN合办的第三届“敏捷中国”技术大会在北京丽亭华苑酒店召开。在以“精益软件思维”为主题的本届大会上,敏捷宣言的缔造者之一、ThoughtWorks首席科学家Martin Fowler再度来华,与多位ThoughtWorks公司内外的技术专家一同为开发者带来了精彩的演讲主题。

 

就领域专用语言以及Thought-Works的发展愿景,本刊分别对ThoughtWorks首席科学家Martin Fowler和ThoughtWorks创始人、首席执行官Roy Singham进行了专访。

 

Martin Fowler谈领域专用语言

Martin Fowler是当前软件开发领域中最具影响力的大师之一。作为敏捷软件开发方法的开创者和实践者,Martin对软件开发方法论的改进一直起着举足轻重的影响。从之前对于UML的普及推广到面向领域建模,从企业应用开发再到敏捷方法论的实践,被称为软件开发教父的Martin Fowler总是走在引领软件开发方法理论与实践的前沿。在本次敏捷中国技术大会上,Martin Fowler与ThoughtWorks工程师徐昊一起为听众带来了题为“领域专用语言”的主题演讲。

对于经常关注Ruby语言或敏捷社区的开发者来说,领域专用语言(Domain Specific Language)已经成为一个非常流行的词汇,DSL并不像通用目的语言那样,目标范围是涵盖一切需要解决的软件问题,DSL专门针对解决某一特定领域的问题而出现,并在这一领域内充分体现自身的独特价值。领域专用语言在开发中越来越受到欢迎,但其并非是一个新的概念。早在上世纪七十年代,领域专用语言就已经出现,并在当时已经有许多工程师都在使用DSL进行开发。

在采访中,Martin就领域专用语言解释道:通常,我们使用领域专用语言来描述具有特定语言构造,适用于表述特定领域概念的语言。使用Java或C等通用语言可以实现与DSL相同的功能,但在使用通用语言的同时,会产生一部分与业务实现无关的代码,并使得面向领域的功能实现被隐藏在通用语言的语法构造中。

从概念上看,程序编写是把业务领域中的问题通过代码或程序模型表达出来的过程。那领域专用语言在实现业务逻辑上有何优势呢?来自ThoughtWorks的工程师徐昊阐述道:计算机的程序模型相对单一,即便是在面向对象技术成为主流的今天,计算机程序在通常情况下也不太可能做到与业务领域中的概念一致。也正因此,软件的修改和可维护性并没有想象中的容易。开发者必须不断地将业务领域中的概念转换成相应的代码模型,再进行修改,这种间接性直接造成了软件的复杂度。领域专用语言的使用,主要目的就是要消除这样的复杂度,以贴近业务领域的方式来构造软件,以一种思维上的简洁性,为业务领域中概念到代码的转换架起一座便捷的桥梁,使开发者不用费太多工作量就能看懂代码所对应的业务含义。

Martin Fowler认为,领域专用语言分为两个类别。分别是内部DSL和外部DSL。就外部DSL来看,对于语言的构建,首先要定义其语法,然后通过代码生成技术将DSL代码转成一种通用语言代码,或者写一个DSL的解释器对其进行解析,这类DSL称为外部DSL。XML配置文件是外部DSL的一个常见例子。

与之不同的是,利用已有编程语言自带语法结构定义出来的领域专用语言,则是内部DSL。内部DSL使用已有语言的语法,这个语言被称为宿主语言,目前构建DSL最为流行的语言比如说Ruby。可以使用宿主语言的各种方式来构建语言构造,使其看起来像一门截然不同的语言,来解决某一特定领域开发中所面临的问题,使程序尽可能接近业务领域中的问题。

实际上,DSL就概念本身上看,与Ruby语言并没有必然的关联,DSL早在Ruby之前就已存在了很长时间。但是Ruby较之Lisp和Smalltalk等传统上用来构建DSL的语言来说,语法更为丰富,在功能和第三方支持上也更为强大,同时Ruby语言使得编写描述性的规范变得非常容易。从语法表现形式上看,通过挖掘Ruby语言的语法特征,可以使得应用于DSL的Ruby语句看起来比其他计算机语言更接近于人类的自然语言。综合Ruby语言本身的特性,Ruby是构建内部DSL的一个很好的选择。Ruby on Rails的成功,也很好地诠释了选择Ruby作为Web开发领域专用语言的正确性。

不仅仅是在Web开发方面,很多开发工作都需要相应的领域专业知识,如通信、银行、电力、保险等行业。技术专家同时又是行业领域专家的人数并不多,但通过领域专用语言的使用,让DSL的语法尽可能地接近自然语言,从而帮助行业领域专家更好地理解开发者进行的工作,在降低开发人员和最终客户之间沟通成本的同时,让应用更适用于所面对的专业领域。

继《重构——改善既有代码的设计》、《UML精粹:标准对象建模语言简明指南》、《分析模式:可重用的对象模型》等书籍之后,Martin目前针对领域专用语言也推出了新的著作,目前这本书籍的电子版(http://www.martinfowler.com/dslwip)可以在Martin的官方站点读到。Martin表示,目前领域专用语言相关的技术更新很快,书籍可能还会进行下一步的补充和完善,等到时机成熟时,希望可以通过翻译介绍给国内的开发者阅读。

 

Roy Singham谈ThoughtWorks发展愿景

记者就ThoughtWorks发展的愿景和目标等问题采访了公司的创始人兼首席执行官Roy Singham。作为世界知名的软件咨询公司,ThoughtWorks年增长率一直保持在20%到30%,业务网络遍布全球。Roy Singham谈到:ThoughtWorks以其独特的管理方式和卓越的软件开发成果积淀,吸引了大批优秀的开发者的加盟。ThoughtWorks的开发者都是以小组为单位工作,所有的员工都在一个大的房间里面,以便相互之间的自由交流。

在ThoughtWorks,每位开发者都被给予充分的尊重,在项目中,开发者与项目负责人处于同样的地位。每位开发者既参与协作开发,同时又是一个独立的个体,可以随时反馈自己的建议来帮助项目进程的推进。ThoughtWorks通过自组织团队的管理模式和有效的沟通,通过创新方法促进来自不同文化、不同地域的开发者真正融合,保持团队成员持续向上的激情和凝聚力。

Roy Singham是一个坚定的社会主义者,一直信仰马克思主义哲学。在谈到三年前ThoughtWorks在中国开始业务的起步时,Roy说:中国的软件市场,一直保持着持续高速的发展势头,ThoughtWorks很高兴能参与到其中,把最优秀的开发者凝聚到一起,为这个不断增长的市场提供公司积累的最好的经验和软件程序交付技术。并且,ThoughtWorks致力于在中国传播世界领先的软件技术与方法,并不遗余力的帮助本土软件企业解决他们在实际工作中遇到的疑难问题,为中国软件行业的健康快速发展做出贡献。

 

后记

较之前两届的“敏捷中国”技术大会,本次大会内容更为丰富和充实,来自ThoughtWorks的工程师介绍了众多通过精益思维来提升软件工艺的方法和实践。这些极具价值的经验将会帮助其他开发者更好地选择最适合的方法来应用到软件项目的开发之中。

ThoughtWorks在敏捷软件开发实践的基础上,在领域专用语言和精益思想等方法上进行着持续的创新,在方法论和实践中始终保持着业界领先的地位,同时又在不断积累和沉淀中显得更为成熟、稳健。

凝聚众多优秀开发者的Thought-Works,是否会在今后的软件开发之路上带给开发者更多更有益的软件开发方法和实践经验,让我们共同期待。

(本文来自《程序员》杂志0807期)

分类: 软件工程 项目管理 系统架构 软件测试

上一篇:软件工程的25条建议   下一篇:讨论:衡量程序员的工作效率