On the one hand the possibilities that arise from the increasing globalisation and the increased availability of information and communication technologies along with the fact that resources in form of software engineers are much cheaper in large sections of Eastern Europe and Asia than they are in the Western World led to the situation, that many software engineering projects today are developed distributed by engineers spread over the world. Nevertheless these projects are still in need of heavy and close cooperation of the parties involved. On the other hand agile methods of software engineering are increasing in importance as nowadays state-of-the-art software engineering processes to address frequently changing requirements as well as fast and early delivery of software products. Extreme Programming is among the most prominent of these agile methods and comes with a large case of practices. Among those is Pair Programming which is a style of software development in which two software engineers team up and collaborate on the same artefact sitting side by side in front of a shared workplace.
Such a team consists of the so called Driver who is typing at the computer or writing down a design. The other partner is called the Navigator. His duty is to continuously review the work of the Driver.
The pair is in heavy need for continuous communication with each other and switches roles periodically.
From the two points stated above it is clear that there is a need for the appliance of the Pair Programming practice even in development teams in which the Pair Programming team members are not collocated at the same development site. In this case there is the need to have tools that support the cooperation and communication between the pair so that they are able to perform Pair Programming in a similar way as if they were sitting next to each other. Simulating this collocated collaboration in a non-collocated environment puts a number of requirements up against tools that are used to support the Distributed Pair Programming practice. Thus such tools need to be evaluated for their grade of fulfilment of these requirements to enable software engineers and project managers to select the tool best suited in a specific project.
There was already some previous research done in tools that support the Distributed Pair Programming practice as well as into requirements that are recommended to be fulfilled by such tools. Nevertheless there is still the lack of consolidated lists of such tools as well as requirements and of a way to provide means to compare these tools with respect to their usability for the support of the Distributed Pair Programming practice. This work intends to provide an extensive list of available tools with potential to support Distributed Pair Programming as well as a consolidated list of requirements desirable to be fulfilled by tools supporting the Distributed Pair Programming practice. The consolidate list of requirements is used to set up a generic evaluation framework for the comparable evaluation of such tools. The set up evaluation framework is used in a series of case studies to evaluate a selected number of these tools towards their usability in the appliance of the Distributed Pair Programming practice.
The results of this study show that though there is still a significant lack of availability of tool support for some key requirements needed to simulate the collocated situation in Distributed Pair Programming environments there is a number of tools available that provide ample support to effectively apply the Distributed Pair Programming practice.