`
yangzb
  • 浏览: 3491600 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

让结对编程跨越地理位置的限制

阅读更多

本文介绍如何利用 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 中提到的,结对编程中的亲密接触会影响结对编程的效果甚至阻碍结对编程的实施。举个例子,有些人喜欢自己的个人空间宽敞点,不愿与别人挤在一台机器前;有些人比较胖,和别人挤在一起会不舒服;还有一些人或许有口臭在结对编程中不受欢迎。另外,如背景中描述的,虚拟团队中的成员身处不同的国家或城市,基本不可能让这些员工坐在一台机器前,这给结对编程的实施带来了直接障碍。本文介绍的内容正是为了解决上述问题。





回页首


ECF 简介

我们知道,现在的 IDE 越来越关注协作和开发者之间的沟通,人们希望在 Eclipse 里面可以利用即时通信工具 (MSN, Google Talk, Skype等)和同事讨论编程问题,这就要求有专门的 Eclipse 插件实现这种通信功能,ECF 就是在这种背景下产生的, ECF 致力于成为一套跨协议的基于 Eclipse 的通信框架,ECF 的目标是提供一套统一的通信基础设施,包括即时通信,文件共享,屏幕截图甚至语音通信等,而不是提供另外一种通信协议。同时 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 所示。


图 1 选择 XMPP 协议
选择 XMPP 协议 

在弹出的窗口中输入 Google Talk 帐号和密码,连接到 Google Talk Server 后,在Contacts 视图中会显示该 Google Talk 帐号的在线联系人清单,如果你的搭档也连上 Google Talk 了,就会显示在这里。在这里建议两个人都用 ECF 登录 Google Talk, 如果一个用 ECF 连,另一个用 Google Talk 客户端连,有些 ECF 提供的功能就没法用了。在Contacts 视图里面,用鼠标右击你的搭档,弹出的右键菜单中列出了各种通信操作,如图 2 所示。


图 2 ECF 提供的各种通信工具
ECF 提供的各种通信工具 

如果你想找你的搭档讨论编程问题,可以选择 Send IM, Eclipse 会切换到 Messages 视图,在此输入你要想讨论的问题;如果你编程过程中碰到一个奇怪的错误提示,想发送这个错误提示给搭档以寻求帮助,你可以选择 Send Screen Capture 把相关屏幕截取下来发给对方,你的搭档的 Eclipse 将会弹出一个窗口显示你发送过来的屏幕截图;如果你想让搭档帮你检查你的一个配置文件是否配置争取,你还可以选择 Send File 发送这个配置文件给你的搭档;如果你想告诉你的搭档你发现了 Eclipse 里面一个很有用的视图,你可以选择 Send Show View Request,然后选择这个视图发给你的搭档;你还可以发送一个技术网站的 URL 给你的搭档浏览。相信利用 ECF 提供的这些功能,你也能和远在异国他乡的同事进行像样的结对编程活动了。但目前 ECF 还是没有办法让两个人共同编程,也就是两人共同思考,共同编辑一个文件,就像真正的结对编程一样。下面介绍的 Cola 将提供这种激动人心的功能。





回页首


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 的共同编辑功能。

  1. 首先,你需要有一个 ECF Server, 你可以按照 http://wiki.eclipse.org/ECF_Servers 提供的步骤启动一个 ECF Server,也可以用 Eclipse 网站搭建好的 ECF Server:ecftcp://ecf.eclipse.org:3282/server, 为简单起见,在此建议用后者。
  2. 启动两个 Eclipse 实例,在每个实例中用鼠标点击 Window->Preferences, 选择 Team->Cola Editor Sharing, 在 ECF Server URL 中输入ecftcp://ecf.eclipse.org:3282/server,如图 3 所示。要用 Cola 的共同编辑功能,两个 Eclipse 实例必须用同一个 ECF Server URL。

图 3 设置 ECF Server URL
设置 ECF Server URL 
  1. 在一个 Eclipse 实例里面创建一个 Java 源代码文件,用 Java 编辑器打开这个源代码文件,然后在 Java 编辑器里面用右击鼠标,在弹出的右键菜单里选择 Team->Initial Cola SharedEditor, 如图 4 所示,这将初始化 Cola 的共同编辑器,这样别人就可以加入进来共同编辑。

图 4 初始化 Cola 共同编辑器
初始化 Cola 共同编辑器 
  1. 在另一个 Eclipse 实例里面创建一个 Java Project, 点击 File->New->Other…, 在弹出的向导里面选择 Team->Cola Shared Editor Session, 如图 5 所示。

图 5 选择 Cola Shared Editor Session 向导
选择 Cola Shared Editor Session 向导 

然后点击 Next 按钮,在这里,你会看到在步骤 3 创建的那个 Java 文件,这个文件是可以被共同编辑的,选择该文件,然后选择本地存放该文件的一个路径,如图 6 所示。


图 6 选择要可以共同编辑的文件和本地存放路径
选择要可以共同编辑的文件和本地存放路径 

点击 Finish 按钮后,可以看到在这个 Eclipse 实例下面生成了在步骤 3 里面创建的 Java源代码文件并打开了 Java 编辑器。

  1. 现在,两个 Eclipse 实例都用 Java 编辑器打开了同一个 Java 源代码文件,在两个 Eclipse 实例里面的任何一个敲入字符,在另一个 Eclipse 实例马上就能看到这些字符。这样,两个异地开发人员就能共同编辑同一个源代码文件,这与两个人坐在一台机器前敲代码效果一样,甚至还要好。




回页首


结束语

本文介绍的 ECF 和 Cola 可以帮助结对编程在虚拟团队中的实施,使结对编程跨越地理位置的限制,甚至那些因不喜欢亲密接触而抵制结对编程的开发人员也可以重新加入到结对编程的实践中来。

本文仅代表作者本人观点,不代表 IBM 公司观点。

分享到:
评论

相关推荐

    结对编程——敏捷开发.pdf

    "结对编程——敏捷开发" 结对编程(Pair Programming)是敏捷开发(Agile Development)中的一种实践方法,它是指两名开发者坐在一起,共享一台电脑,共同编写代码的过程。 结对编程的优点: 1. 提高代码质量:...

    论文研究-结对编程开发人员之间若干关系问题的探讨 .pdf

    敏捷软件开发方法中,结对编程是一种实践,它要求两名开发人员在同一台计算机上协同工作。这一方法源自于国际大学生程序设计竞赛(ACM/ICPC)中的团队合作模式。结对编程强调的是两个人的协作,与传统方式相比,它...

    XP实践结对编程demo

    **结对编程(Pair Programming)**是极限编程(XP,Extreme Programming)中的一项核心实践,旨在提高软件开发的效率和质量。在这个过程中,两位程序员坐在同一台电脑前,共同编写代码,一人为主程序员(Driver),...

    交换编程-结对编程的延伸实践

    ### 交换编程—结对编程的延伸实践 #### 一、引言 交换编程作为一种新型的软件开发模式,是对结对编程的一种延伸和发展。本文旨在深入探讨交换编程的基本概念、实施背景及其在软件开发中的应用价值,并通过实例来...

    2020级计算机系软件工程第二次结对编程作业.zip

    2020级计算机系软件工程第二次结对编程作业.zip 2020级计算机系软件工程第二次结对编程作业.zip 2020级计算机系软件工程第二次结对编程作业.zip 2020级计算机系软件工程第二次结对编程作业.zip 2020级计算机系软件...

    结对编程与应用

    是软件工程中结对编程与应用的描述与实现方法

    结对编程技术与策略pdf

    ### 结对编程技术与策略 #### 一、引言与背景 在当今快速发展的软件行业中,结对编程作为一种新兴的协作开发模式,正逐渐受到广泛关注。这种开发方式不仅改变了传统意义上的个体开发流程,而且也在软件工程领域内...

    自组织团队与松结对编程 陈勇 2011-09-18

    ### 自组织团队与松结对编程 #### 一、自组织团队的概念与特点 自组织团队是指团队成员能够自我管理并自主决定工作流程的一种团队形式。这种团队模式强调团队内部的高度自治性和协作性,旨在通过减少层级管理和...

    结对编程启示录

    结对编程,作为一种创新的软件开发实践,源自敏捷开发的理念,旨在提高代码质量和团队协作效率。"结对编程启示录"这本书深入浅出地探讨了这一主题,为小团队提供了宝贵的资源,帮助他们在有限的人力条件下产出高质量...

    结对编程方法在C语言教学中的应用.pdf

    首先,需要让学生自主地选择结对编程的对象,以男女搭配优先。其次,需要遵循“离水平成+低水平成”优先的原则,开学中期以“水、”为主。最后,需要在教学过程中注重学生的交流和讨论,培养学生的团队合作精神和...

    结对编程在数据结构教学中的应用.pdf

    最后,教师需要为学生提供一个合适的环境,让结对编程能够顺利进行,并在必要时给予指导和帮助。 综上所述,结对编程作为一种在数据结构教学中应用的实践,其优势在于能够提高编程效率,提升代码质量,并且通过合作...

    结对编程在Java Web开发课程实践教学中的应用.pdf

    结对编程的基本思想是让两名程序员坐在同一台计算机前,并肩工作。其中一个程序员输入代码,另一个程序员审查每一行代码。这两名程序员可以根据需要经常互换角色。在结对编程中,观察员同时考虑工作的战略性方向,...

    在复杂的项目开发中使用结对编程

    ### 结对编程在复杂项目开发中的应用 #### 一、结对编程概述 结对编程是一种极限编程(Extreme Programming, XP)技术,它要求两位开发者共同在一个工作站上合作完成编程任务。一位开发者负责编写代码(驱动者),...

    结对编程.zip

    结对编程

    Addison Wesley - 结对编程启示录(手册)

    《结对编程启示录》是Addison Wesley出版的一本关于结对编程的实用手册,旨在帮助读者快速理解和掌握这种编程方法,以提升代码质量和开发效率。结对编程(Pair Programming)是极限编程(XP,Extreme Programming)...

    一种分布式网络环境下虚拟结对编程的设计方案.pdf

    通过虚拟结对编程,远程软件开发团队可以突破地理限制,实现更灵活、高效的协同工作。尽管该方案的具体实现细节和技术挑战未在此文中详述,但其提出了一种值得探索的方向,对于分布式软件开发和远程结对编程的研究与...

    结对编程软件方法的研究与应用(1).pdf

    结对编程是一种软件开发实践,源自敏捷开发方法论,它提倡两个程序员在同一台电脑上共同工作,一人编写代码,另一人则审查、建议并提供反馈。这种方法的核心理念是通过即时的同行评审和协作来提高代码质量,减少错误...

    结对编程-魔方1

    结对编程是一种有效的软件开发方法,它鼓励两人一组共同编写代码,通过互相协作、讨论和监督来提高代码质量和团队效率。在这个场景中,学生们通过结对编程的方式解决了一项关于魔方状态表示和处理的编程任务。 首先...

Global site tag (gtag.js) - Google Analytics