本文介绍如何利用 ECF(Eclipse Communication Framework) 和 Cola 来使得分散在不同地理位置的程序开发人员也能够结对编程,让结对编程跨越地理位置的限制。
在很多大公司里面,现在越来越多的项目都交给由不同地理位置的员工组成的虚拟团队来完成,而且,很多开源软件都是由分布在世界各地的开发者共同完成的。这使得极限编程推崇的结对编程(pair programming)很难应用到这样的虚拟团队,因为结对编程需要两个开发人员坐在一台机器前去共同完成一个开发目标,以达到优势互补的目的,另外,现有的即时通信软件也不能帮助两个开发者在 Eclipse IDE 里共同编辑一个源代码文件。地理位置的限制使得实施结对编程变得几乎不可能,然而有问题就会有办法。本文将介绍如何利用 ECF(Eclipse Communication Framework) 和 Cola 使得两地开发人员在 Eclipse IDE 里面共同编辑同一源代码文件。Cola 本身也是基于 ECF 的工具,使得两个开发者可以坐在自己的电脑前,敲击自己的键盘在 Eclipse IDE 里面共同编辑一个源代码文件,当然,他们同时还可以戴上各自的耳机,用语音聊天功能进行实时沟通。
|
结对编程在极限编程中推崇的一种最佳实践,要求两个开发人员坐在一台机器前共同完成程序代码的编写。结对编程是一种两个人之间的对话,当一个开发人员 A 在敲击键盘时,另一个开发人员 B 坐在旁边观看,所谓当局者迷,旁观者清,如果 B 发现 A 敲入的代码不对或有更好的方法时,B 可以马上说出来并接管键盘开始敲入自己的代码,这样一来代码就汇集了两个人的智慧,代码质量显然会高于一个人写的代码。通过结对编程,两个开发人员在一起可以取长补短,互相学习,共同提高,软件质量也会有大的提升。但是凡事都有两面性,首先,正如 Kent Beck 在他的著作 Extreme Programming Explained: embrace change 中提到的,结对编程中的亲密接触会影响结对编程的效果甚至阻碍结对编程的实施。举个例子,有些人喜欢自己的个人空间宽敞点,不愿与别人挤在一台机器前;有些人比较胖,和别人挤在一起会不舒服;还有一些人或许有口臭在结对编程中不受欢迎。另外,如背景中描述的,虚拟团队中的成员身处不同的国家或城市,基本不可能让这些员工坐在一台机器前,这给结对编程的实施带来了直接障碍。本文介绍的内容正是为了解决上述问题。
|
我们知道,现在的 IDE 越来越关注协作和开发者之间的沟通,人们希望在 Eclipse 里面可以利用即时通信工具 (MSN, Google Talk, Skype等)和同事讨论编程问题,这就要求有专门的 Eclipse 插件实现这种通信功能,ECF 就是在这种背景下产生的, ECF 致力于成为一套跨协议的基于 Eclipse 的通信框架,ECF 的目标是提供一套统一的通信基础设施,包括即时通信,文件共享,屏幕截图甚至语音通信等,而不是提供另外一种通信协议。同时 ECF 使得通信插件开发人员可以利用 ECF 提供的这些基础设施快速开发增值通信插件。
|
ECF 提供了很多工具帮助异地开发人员进行结对编程。进行通信之前,需要与搭档建立通信连接,在此假设你和你的搭档都有 Google Talk 的帐号, 安装好 ECF 后(安装指南请参见http://www.eclipse.org/ecf/downloads.php),Eclipse 会增加一个 Communication 透视图(perspective),切换到这个透视图, 点击 Connect to Provider 图标,选择 XMPP(由于 Google Talk 是基于XMPP协议的),如图 1 所示。
在弹出的窗口中输入 Google Talk 帐号和密码,连接到 Google Talk Server 后,在Contacts 视图中会显示该 Google Talk 帐号的在线联系人清单,如果你的搭档也连上 Google Talk 了,就会显示在这里。在这里建议两个人都用 ECF 登录 Google Talk, 如果一个用 ECF 连,另一个用 Google Talk 客户端连,有些 ECF 提供的功能就没法用了。在Contacts 视图里面,用鼠标右击你的搭档,弹出的右键菜单中列出了各种通信操作,如图 2 所示。
如果你想找你的搭档讨论编程问题,可以选择 Send IM, Eclipse 会切换到 Messages 视图,在此输入你要想讨论的问题;如果你编程过程中碰到一个奇怪的错误提示,想发送这个错误提示给搭档以寻求帮助,你可以选择 Send Screen Capture 把相关屏幕截取下来发给对方,你的搭档的 Eclipse 将会弹出一个窗口显示你发送过来的屏幕截图;如果你想让搭档帮你检查你的一个配置文件是否配置争取,你还可以选择 Send File 发送这个配置文件给你的搭档;如果你想告诉你的搭档你发现了 Eclipse 里面一个很有用的视图,你可以选择 Send Show View Request,然后选择这个视图发给你的搭档;你还可以发送一个技术网站的 URL 给你的搭档浏览。相信利用 ECF 提供的这些功能,你也能和远在异国他乡的同事进行像样的结对编程活动了。但目前 ECF 还是没有办法让两个人共同编程,也就是两人共同思考,共同编辑一个文件,就像真正的结对编程一样。下面介绍的 Cola 将提供这种激动人心的功能。
|
Cola 取自 collaborate 的几个字母,Cola 项目的目的是提供一种工具帮助开发人员结对编程,而不需要真正地坐在一起。Cola 可以实现基于代码的协同工作,两个开发人员可以同时编辑一个源代码文件,一个人对源代码做的修改会被实时地反应到另外一个人的视野里,这保证了两个人看到的确实是同一份源代码文件,就像两人坐在同一机器前一样,而实际上两人确是各自坐在自己的座位前,用着自己的 Eclipse。Cola 是基于 ECF 开发的一个增值通信插件,所以要用 Cola, 必须先装上 ECF。笔者写稿之时,Cola 还没有正式发布可供安装的Update site,不得不从 CVS 库(参见http://wiki.eclipse.org/index.php/RT_Shared_Editing )里面检出源代码,然后自己做一个Update site 安装到 Eclipse 里面。下面的步骤假设你的 Eclipse 已经安装了 Cola。
使用 Cola 提供的共同编辑(Shared editing)功能
接下来介绍如何用 Cola 来实现两人共同编辑一个源代码文件。这里需要你运行两个Eclipse 实例,一个 Eclipse 实例基于一个源代码文件创建一个共同编辑器(shared editor),另一个 Eclipse 实例加入这个共同编辑器,你可以在两台不同的机器里面启动这两个实例,如果要在一台机器里面启动两个 Eclipse 实例,确保它们使用不同的 Workspace。下面是具体的步骤告诉你如何使用 Cola 的共同编辑功能。
然后点击 Next 按钮,在这里,你会看到在步骤 3 创建的那个 Java 文件,这个文件是可以被共同编辑的,选择该文件,然后选择本地存放该文件的一个路径,如图 6 所示。
点击 Finish 按钮后,可以看到在这个 Eclipse 实例下面生成了在步骤 3 里面创建的 Java源代码文件并打开了 Java 编辑器。
|
本文介绍的 ECF 和 Cola 可以帮助结对编程在虚拟团队中的实施,使结对编程跨越地理位置的限制,甚至那些因不喜欢亲密接触而抵制结对编程的开发人员也可以重新加入到结对编程的实践中来。
本文仅代表作者本人观点,不代表 IBM 公司观点。