【IT168 技术文章】
异地分布式软件开发(Distributed Software Development)是指由多个位于不同地理位置的团队进行同一个软件项目的开发过程。这个词越来越频繁的出现在各种技术媒体中。
异地分布式软件开发不同于外包,它建立在平等关系的两个团队之间。通常是一个公司的不同分公司或办公室间的协作,他们之间大多不存在博弈的合同关系。而外包是指一个公司将其软件系统的开发委托给另一个公司或组织完成。二者之间是合同的甲乙方关系。
但无论是异地分布式软件开发或是外包,可以接触到实际客户的一端一般称为on-site,另一端可相应的称为off-site,他们可以根据地理位置分为三类:on-shore(在岸,指在同一个国家或同一个时区内),near-Shore(近岸,在接近的国家和地区中)和off-Shore(离岸,通常在时差8小时以上)。如下表:

异地分布式开发的组织方式
异地分布开发的组织方式有很多种。最常见的一种是公司将完整的团队组织结构分布在两地,每个团队都有本地项目经理,需求分析师,开发者以及测试。同时公司设定项目总负责人角色,负责两地的沟通与协调。

图1
有的公司将需求分析人员放在on-site一端,开发者、测试人员和项目经理在off-site一方,同时在本地也保持常规的需求分析师。也有公司将测试人员和开发人员分放在不同地方,一方面开发,另一方面利用时差,在夜间测试并在第二天及时反馈测试结果。

图2
各种组织方式都有其不同的适用场合。然而他们的共同点在于,都是注重micro-management,即加强在本地团队中项目管理和协调,而不是由一个人同时直接管理两地的活动。同时,也尽量保证团队两边都具有项目协调人、本地项目经理、需求分析师等辅助角色。