Academia.eduAcademia.edu

Distributed pair programming: empirical studies and supporting environments

2002, TR02-010. University of North Carolina at Chapel Hill Dept. of Computer Science

Previous research [1, 2] has indicated that pair programming is better than individual programming when the pairs are physically colocated. However, important questions arise: How effective is pair programming if the pairs are not physically next to each other? What if the programmers are geographically distributed? An experiment was conducted to compare the different working arrangements of student teams developing object-oriented software. The teams were both colocated and in distributed environments; ...

Technical Report TR02-010 Department of Computer Science Univ of North Carolina at Chapel Hill Distributed Pair Programming: Empirical Studies and Supporting Environments Prashant Baheti, Laurie Williams, Edward Gehringer Department of Computer Science North Carolina State University Raleigh, NC 27695 David Stotts, Jason McC. Smith Department of Computer Science University of North Carolina Chapel Hill, NC 27599-3175 stotts@cs.unc.edu March 15, 2002 Distributed Pair Programming: Empirical Studies and Supporting Environments Prashant Baheti, Laurie Williams, Edward Gehringer Department of Computer Science North Carolina State University Raleigh, NC 27695 +1 919-755-1264 ppbaheti@unity.ncsu.edu ABSTRACT Previous research [1, 2] has indicated that pair programming is better than individual programming when the pairs are physically colocated. However, important questions arise: How effective is pair programming if the pairs are not physically next to each other? What if the programmers are geographically distributed? An experiment was conducted to compare the different working arrangements of student teams developing object-oriented software. The teams were both colocated and in distributed environments; some teams practiced pair programming while others did not. The results of the experiment indicate that it is feasible to develop software using distributed pair programming, and that the resulting software is comparable to software developed in colocated or virtual teams. Our early experiments have led to the creation of a more comprehensive environment for support of distributed pair programming, using dual screen projectors and hymermedia-enhanced video streams. Our findings will be of significant help to educators dealing with team projects for distance-learning students, as well as organizations that are involved in distributed development of software. Keywords Extreme Programming, XP, pair programming, collaborative software engineering, distance education, virtual team, video hyperlink PAIR PROGRAMMING, XP, AND DISTRIBUTED COLLABORATION Increasingly, programmers are working in geographically distributed teams. Escalating trends in teleworking, distance education, and globally distributed organizations are making these distributed teams an absolute necessity. These trends are beneficial in many ways, particularly for those in geographically disadvantaged areas. However, it is not believed that any of these arrangements makes a programmer more effective than if all the programmers were, indeed, colocated. Therefore, organizations must strive to maximize the efficiency and effectiveness of these unavoidably distributed programmers and teams. This paper describes the development and study of a technique tailored for distributed programming teams. The David Stotts, Jason McC. Smith Department of Computer Science University of North Carolina Chapel Hill, NC 27599-3175 +1 919-962-1833 stotts@cs.unc.edu technique is based on an emerging software engineering methodology known as pair-programming combined with nearly 20 years of widespread and active research in collaborative software systems. We aim to show that geographically distributed programmers benefit from using technology to collaborate synchronously with other programmers. Our objective is to demonstrate that the geographically distributed programmers who collaborate synchronously with other programmers will outperform geographically distributed programmers who work independently. Professional interest in pair programming has risen dramatically in recent years with the success of an agile software development process called Extreme Programming, or XP [10,11] developed by Kent Beck. XP is distinguished from more traditional development processes by emphasizing (even requiring) • pair programming • test-first code development at the unit level • full regression test support (with JUnit [12,13]) • lack of up-front detailed design • frequent code refactoring [14] • on-site client • expectation of requirements changes. XP practitioners develop requirements conversationally with the client, and deliver frequent working prototypes for feedback and changes. No code is written unless it is needed (no programming for the “perhaps” future), and when a design grows to the point that it feels unwieldy it is refactored and re-architected before further extension. The process is best known, though, for pair programming, which is at the heart of the productivity increases many XP teams are seeing. Anecdotal and statistical evidence indicate that pairprogrammingtwo programmers working side-by-side at one computer, collaborating on the same design, algorithm, code or testis highly productive. Cockburn and Williams have produced statistical results that show pair-programmers produce higher-quality products in essentially half the elapsed time as individual programmers [8]. We believe the pair-programming model can be modified for distributed collaborative development, and that we will see similar benefits. To evaluate the effectiveness of distributed pair development, we are running controlled empirical studies involving students at North Carolina State University and the University of North Carolina at Chapel Hill. Students use interactive information technology over the Internet, such as PCAnywhere and NetMeeting, to jointly and simultaneously control a programming session and to speak with each other synchronously. Our early experiments have led us to develop the more video-enhanced environment described in the second half of this paper to support the remote synchronous collaboration required in DXP software development. PREVIOUS WORK Pair Programming Pair programming is a style of programming in which two programmers work side by side at one computer, continuously collaborating on the same design, algorithm, code or test. One of the pair, called the driver, is typing at the computer or writing down a design. The other partner, called the navigator, has many jobs. One of the roles of the navigator is to observe the work of the driver, looking for tactical and strategic defects in the work of the driver. Tactical defects are syntax errors, typos, calls to the wrong method, etc. Strategic defects are said to occur when the team is headed down the wrong path — what they are implementing won’t accomplish what it needs to accomplish. Any of us can be guilty of straying off the path. A simple, “Can you explain what you’re doing?” from the navigator can serve to bring the driver back onto the right track. The navigator has a much more objective point of view and can better think strategically about the direction of the work. The driver and navigator can brainstorm on demand at any time. An effective pair-programming relationship is very active. The driver and the navigator communicate at least every 45 seconds to a minute. It is also very important for them to switch roles periodically. Note that pair programming includes all phases of the development process — design, debugging, testing, etc. — not just coding. Experience shows that programmers can pair at any time during development, in particular when they are working on something that is complex. The more complex the task is, the greater the need for two brains [1, 6]. Controlled studies have shown that pairs finish in about half the time of individuals and produce higher quality code. The technique has also been shown to assist programmers in enhancing their technical skills, to improve team communication, and to be more enjoyable [1, 6, 7, 8]. Virtual Teaming A virtual team can be defined as a group of people, who work together towards a common goal, but across time, distance, culture and organizational boundaries [9]. In our context the goal is development of software. The members of a virtual team may be located at different work sites, or they may travel frequently, and need to rely upon communication technologies to share information, collaborate, and coordinate their work efforts. As the business environment becomes more global and businesses are increasingly in search of more creative ways to reduce operating costs, the concept of virtual teams is of paramount importance [3]. A primary consideration in virtual teaming is that of communication [4]. Poor communication can cause problems like inadequate project visibility, wherein everyone does his/her individual work, but no one knows if the pieces can be integrated into a complete solution. Coordination among the team members could also be a problem. Finally, the technology used must be robust enough to support distributed development of software, not just to provide communications. The experiments we ran used virtual teams of two kinds. One kind was developing software in traditional, individual programmer style, and thus needed primarily communications support for integration of work; the other was developing software using the technical approach of pair-programming, where it is essential for proper collaboration that each team member have the illusion of sharing a single PC in real-time, synchronously. Collaborative systems and distributed workgroups The earliest example of a collaborative computer system was NLS-Augment by Engelbart [15], an initial version of which was demonstrated in the early 1960’s. Engelbart’s system used shared CRTs, audio connections, mouse, and keyboard to allow crude teleconferencing and shared examination of text files by users who were not co-located. From these early beginnings, collaborative software systems became the subject of widespread research more than 15 years ago, with the creation of the PC. Ongoing research tends to focus in three main areas: hardware to provide effective communications; software concepts that allow sharing of artifacts; and conceptual models of how people want to — or are able to — interact effectively. Many collaborative system ideas developed in research labs have now found their way into practice, and we are seeing commercially viable products and services for supporting collaboration. These products are used to create virtual workplaces and allow people around the world to work on coordinated group efforts. The most commonly used collaborative tools are “chat rooms”. Though simple in technical terms, chat rooms’ wide usage demonstrates that simple technology can be used very effectively. Many commercial vendors support chat servers for exchange of text, audio, and video streams (Yahoo, Excite, PalTalk, and Microsoft to name a few) and hundreds of thousands of people use these services. Most usage of chat servers is for social interactions like game playing, but they are also used to support businesses. We repeat that simple technology often gets you large gains. Shared software artifacts Numerous researchers have developed software for supporting human interactions within shared artifacts. These include general systems, like shared whiteboards for drawing, and shared editors for documents and multi-media streams. They also include special-purpose systems like ICICLE [16] for code inspection and review, and gIBIS for design review and logical argument construction [17]. Trellis [18] and MMM [19] are two systems for collaborative hypermedia and Web browsing. Trellis was built on the idea of structuring a hyperdocument as an abstract parallel process specification, allowing group interaction on the document to be defined in the document link structure. MMM extended this idea by extracting the process definition out of the document and allowed the group interaction rules (collaboration protocol) to be dynamically defined (as opposed to being hard-wired in the source code). In this way, group interactions can be developed and changed without changing the MMM software. Further research has led to methods for verifying the correctness of collaboration protocols [20,21]. collaboration support system that allowed two users to appear to sit face to face, and see the shared work between them; emphasis was placed on drawing applications. The system required special hardware (the clear screen), and was not built with COTS technology (as is our environment). Experiments using ClearBoard showed that increased eye contact and the sense of presence of the remote collaborator was important in providing effective work performance. In the experiments we have done, the shared artifact is, at the lowest level, the entire PC screen. We wanted to explore the technological feasibility of distributed pair programming with the simplest of technical structure. Thus we chose not to experiment with shared artifacts at the code or document level, allowing the programmers to work in pairs with exactly the same tools they use when programming alone. An initial experiment was done in early fall 2001 between NCSU and UNC to determine an effective technical platform to allow distributed pair programming. We wanted to use simple COTS technology – something that would be readily available to anyone – rather than research projects or platforms. Two pairs of programmers worked over the Internet to develop as a 4-person team a modest Java gaming application; each pair was composed of one programmer from each remote site. The team developed a Mancala game, with GUI, in 8 sessions that varied from 1 to 2 hours in length. In addition to the actual pair programming sessions, the project was initiated with a face-to-face meeting in which the team members agreed on requirements and an overall system metaphor. Thus the experiment mainly tested the effectiveness of the technology for pair coding and not the entire software development process. Hardware and graphics for collaborations Many of the most visible developments in collaborative systems have come from computer graphics. While their display technologies have remarkable sophistication in their visual imagery, most of them do not support distributed collaborations. The CAVE [22] is a multi-person, roomsized, high-resolution, 3D video and audio environment developed at the University of Illinois at Chicago. It functions as virtual reality theater, made up of three rearprojection screens for the front, right and left walls and a down-projection screen for the floor. Multiple users may sit in the space, wearing special glasses to decode the stereo projections. The CAVE is state-of-the-art in terms of visual impact and virtual reality presentation; it is limited in distributed collaboration support as it requires all participants to be present in the same space in order to work together. The DataWall [23] at MIT and the PowerWall [24] at the University of Minnesota are similar large display projects. The primary purpose of these large displays is to visualize and display very high-resolution data, often from large scientific simulations performed on supercomputers or from high resolution imaging applications. The large display areas allow small groups of collaborators to see the display clearly and without obstruction. It is possible to walk up to the display and point to features of interest, just as one would do while discussing work at a blackboard. However the emphasis is on graphics clarity, and not remote collaboration. Unlike the previously mentioned display projects, Virtual WorkSpace [25] was intended as an environment to enable distributed collaboration over a network. It depends heavily on computer-generated graphics and virtual reality devices as well. ClearBoard [26] was similarly a non-co-located The Office of the Future project [27] at UNC, under the direction of Henry Fuchs, seeks to combine network-based collaboration with the superior graphics and image manipulation capabilities of virtual reality systems. It is a long-term project that will not be generally usable for years and it will require expensive special-purpose support hardware and high-performance graphics engines. INITIAL PLATFORM EXPERIMENT The members of a pair viewed a common PC display using desktop sharing software; we trailed Microsoft NetMeeting, Symantec’s PCAnywhere, and VNC. They used headsets and microphones to speak to each other, and text chat for communications as well. We trailed several instantmessaging programs (Yahoo Messenger, PalTalk, AOL Messenger) before implementing the project. The final experiment was run with NetMeeting, as this program provided PC sharing, text, audio, and video in one platform. A typical pairing session involved two programmers sharing desktops, with one of the pair (the navigator) having readonly access while the other (the driver) actually edited the code. The changes made by the driver were seen in real time by the navigator, who was constantly monitoring the driver’s work. The navigator could communicate with the driver by speaking over the microphone, or via instant messaging. The students were furnished Intel digital cameras to use as Webcams for videoconferencing, to allow them, for example, to show paper design documents to each other. However, as the sessions progressed, none of these teams found the need to use the Webcams. Our goal was not to test if a remote pair could be as efficient as a co-located one, but to simply see if the programming pairs could work well enough to make functional software in reasonable time. The pairs reported that after a few early sessions in which they were learning the platform behavior, they felt comfortable and natural coding with this technology. The final game works correctly. From this experiment we found that effective remote teaming could be done with the PC sharing software and audio support. This platform was then used in the more comprehensive controlled experiment described next. COMPREHENSIVE PAIRING EXPERIMENT Hypothesis After the platform experiment, we ran an experiment to assess whether geographically distributed programmers benefit from using technology to collaborate synchronously with each other. Specifically, we examined the following hypotheses: • Distributed teams whose members pair synchronously with each other will produce higher quality code than distributed teams that do not pair synchronously. • Distributed teams whose members pair synchronously will be more productive (in terms of LOC/hr.) than distributed teams that do not pair synchronously. • Distributed teams who pair synchronously will have comparable productivity and quality when compared with co-located teams. • Distributed teams who pair synchronously will have better communication and teamwork within the team when compared with distributed teams that do not pair synchronously. The Experimental Procedure The experiment was conducted in a graduate class, ObjectOriented Languages and Systems, taught by Dr Edward Gehringer at North Carolina State University. The course introduces students to object technology and covers OOA/OOD, Smalltalk, and Java. At the end of the semester, all students participate in a 5-week long team project. We chose this class for our experiment for the following reasons: 1. The projects were developed using an object-oriented language. 2. The experiment had to be performed on a class that had enough students to partition into four categories and still have enough teams in each category to draw conclusions. 3. We needed some distance-education participants for the class to make distributed development feasible and attractive. The class had 132 students, 34 of whom were distance learning (Video-Based Engineering Education) “VBEE” students. The VBEE students were located throughout the US, often too far apart for co-located programming or even face-to-face meetings. The team project counted for 20% of their final grade. The on-campus students were given 30 days to complete the project (VBEE students had 37). Teams were composed of 2–4 students. The students selfselected their teammates, either in person or using a message board associated with the course, and chose one of the four work environments listed below. 1. Colocated team without pairs (9 groups) The first set of teams developed their project in the traditional way: group members divided the tasks among themselves and each one completed his or her part. An integration phase followed, to bring all the pieces together. 2. Colocated team with pairs (16 groups) The next set of groups worked in pairs. Pair programming was used in the analysis, design, coding and testing phases. A team consisted of one or two pairs. If there were two pairs, an integration phase followed. The next two environments consisted of teams that were geographically separated — “virtual teams.” These groups were either composed entirely of VBEE students, or a combination of VBEE and on-campus students. 3. Distributed team without pairs (8 groups) The third set of teams worked individually on different modules of the project at different locations. The contributions were combined in an integration phase. 4. Distributed team with pairs (5 groups) This fourth set of teams developed the project by working in pairs over the Internet. At the end, they integrated the various modules. They worked with the PC-sharing platform we detailed earlier. In order to record their progress, the students used Bryce [5], a Web-based software-process analysis system used to record metrics for software development. Using this tool, the students recorded data including their development time, lines of code and defects. Development time and defects were recorded for each phase of the software development cycle, namely, planning, design, design review, code, code review, compile and test. Using these inputs, Bryce calculated values for the metrics used to compare the four categories of group projects. The two metrics used for the analysis were productivity, in terms of lines of code per hour; and quality, in terms of the grades obtained by the students for the project. Additionally, after the students had completed their projects, they filled out a survey regarding their experiences while working in a particular category, the difficulties they faced, and the things they liked about their work arrangement. EXPERIMENTAL RESULTS Data were analyzed in terms of productivity and quality, as defined above. Also, student feedback formed an important third input for the experiment. Our goal was not to show that distributed pair programming is superior to co-located pair programming for student teams. Our goal was to demonstrate that distributed pairing is a viable and desirable alternative for use with student teams, particularly for distance education students. We plan to repeat this experiment in the Fall 2002 semester to build up a larger base of results. Productivity Productivity was measured in terms of lines of code per hour. Average lines of code per hour for the four environments are shown in Figure 1. Lines of code per hour 25 20 If the comparison is restricted to the two distributed categories, a statistical t-test on the two categories shows that this difference is not statistically significant. In terms of productivity, the groups involved in virtual teaming (without pairs) is not statistically significantly better than those involved in distributed pair programming. In other words, teams involved in distributed pair programming are not shown to be worse in terms of productivity than those forming virtual teams without distributed pair programming. Quality The quality of the software developed by the groups was measured in terms of the average grade obtained by the group out of a maximum of 110. The graph below indicates that the performance of students did not vary much from one category to another. 15 10 5 0 No n-pair co lo cated P air co lo cated No n-pair distributed Grades P air distributed 120 100 The results show that distributed teams had a slightly greater productivity as compared to colocated teams; however, the ftest for the four categories shows that results are not statistically significant (p < 0.1), due to high variance in the data for distributed groups. This is better depicted by the box plot (Figure 2) for the four categories, which illustrates the distribution of the metric for the four environments. Average Score Figure 1 80 60 40 20 0 Non-pair colocated Pair colocated Non-pair distributed Pair distributed Figure 3 A box plot for the grades only corroborates the claim made above. Although nothing statistically significant can be said about the grades for the four categories, it is interesting to see that those teams performing distributed pair programming were very successful in comparison to other groups. The results of the statistical tests indicate that teams involved in virtual teaming were not significantly better than the distributed teams using pair programming, in terms of grade. Figure 2 A box plot shows the distribution of data around the median. The vertical rectangle for each category shows the distribution of the middle 50% of the readings. The horizontal line inside each rectangle shows the median value for that particular category. The line segment from the top of the rectangle shows the range in which the top 25% of the values lie. Similarly, the line segment below the rectangle shows the range in which the bottom 25% of the values lie. Thus, the ends points of the two line segments indicate the total range that the values for a particular category fall into. For example, the median for the non-pair colocated category is around 10 LOC/hr., with the middle 50% of the values lying between approximately 9 and 13 LOC/hr., while the entire range is between 5 and 35 LOC/hr., approximately. Figure 4 Student Feedback Productivity and product quality is important. However, we also ran a survey to assess students’ satisfaction with their working arrangement. Five out of the six students involved in distributed pair programming thought that technology was not much of a hindrance in collaborative programming. Also, 23 out of 28 students involved in virtual teaming with or without pair programming felt that there was proper cooperation in the team, meaning that the technical platform provided the facilities needed. A COMPREHENSIVE ENVIRONMENT FOR DISTRIBUTED PAIR PROGRAMMING We now shift focus from the experiment we have completed with a simple technology base to a description of the more comprehensive collaboration support environment we are constructing for DXP. Based on the results of earlier investigations into remote work systems and tele-presence, we are constructing a pair-programming station that will use hypermedia-augmented video projection to give the collaborators a better sense of “being there” while developing software jointly. We first give some background on previous research in this area, and then describe the hardware and software components of our DXP environment. Just as the “Office of Real Soon Now” seeks to have largedisplay benefits well in advance of the Office of the Future, we seek the “real soon now” benefits for distributed pair programming by using inexpensive COTS projection equipment, and ubiquitous PCs. The design of our DXP environment employs the principles uncovered at BellCore in the VideoWindow project [30]. In this experiment, two rooms in different buildings at BellCore (coffee lounges) were outfitted with video cameras and wall-sized projections. In essence, an image of one lounge was sent to the other and projected on the back wall, giving the illusion in each room of a double-size coffee lounge. The researchers discovered that many users found the setup to be very natural for human communication, due to its size. Two people, one in each room, would approach the wall to converse, standing a distance from the wall that approximated the distance they would stand from each other in face-to-face conversations. “Office of Real Soon Now” and VideoWindow Even with the remarkable graphics technology available at the high end of virtual reality systems, much remains unchanged from Englebart’s early prototype. The dominant paradigm of human-computer interaction in the workplace — a single user sitting in front of a single display with limited resolution and a WIMP interface, attached to a single computer — remains in force and has become a barrier to effective communication and collaboration for group interactions. The research we are doing is trying to break that barrier with relatively simple technology, compared to the systems just described. We are building a more effective collaborative environment for pair programming using the results of some simple wallsize display experiments at UNC [28,29]. Whimsically termed the “Office of Real Soon Now” (a play on the name of the “Office of the Future”), it aims to get some of the benefits of large screens without waiting years and spending large amounts money. In this project, Bishop and Welch have produced double-width wall-sized displays for their offices using COTS projectors, video cards, and PCs. For their experiments they completely abandoned CRT displays and used only projected wall displays; after 3 years neither has any intention to return to CRTs. Benefits of the large wall displays include greatly reduced eye-strain; better interaction capabilities with students when discussing joint work; and expanded screen real-estate. Their experiments have concentrated on individual and co-located group use of the wall display technology, and have not involved networked collaborations. Figure 5: DXP Collaborative pair programming setup The DXP Environment Our current experiments in distributed pair programming between UNC and NCSU have shown that programmer communication via a 19” to 21” display, while effective enough to allow development of good software, result in interactions that are somewhat stiff and limited in scope. The pairs so far have been given tools that support video interactions via webcam and postage-stamp-sized video windows. After initially turning the cameras on along with the shared PC and the audio, all pairs soon turned the cameras off to enhance performance. They reported that the video was too small to provide them with any communications enhancements. We believe a far more effective collaborative environment can be created with a wall-sized display produced by projectors, and that a corresponding improvement in distributed pair programming will result from this enhanced video support for collaboration. The equipment package needed for one office is: • High-resolution video projector2 (2) • • • Firewire camera + PCI video capture card (1) PC video card to handle two screens seamlessly (1) wiring, cable, microphones, screen boards, etc. The cost for a single office is about $8,000. We are working with four packages, outfitting two offices at each of the two research sites (UNC-CH and NCSU). This arrangement allows “local” distributed pairing at each site over the LAN, as well as pairing across sites with a wider-area network. Each office has two projectors. One is primarily used for video display of the remote collaborator. The other is for display of the shared computer “screen.” We are starting with an L-shaped screen setup, with the collaborator video image to the side of the programmer and the computer display to the front. We have placed the camera next to the projection wall rather than on the workstation in order to present each user with a view the other’s office, with a sideview of the collaborator in the foreground. We will experiment later with different user placements and screen arrangements. Figure 5 shows half the setup at UNC. Visible are the two projectors pointed at right angles to each other, and one of the screens. As the developer sits, he sees the shared PC desktop projected ahead, and the collaborator projected to the left. To communicate with the collaborator the developer turns to the left and speaks to the screen. The camera location with the screen gives a nice impression of the pair being face-to-face. This mimics the head movement needed to look at one’s pair programmer when working co-located. We are working to eventually mix the video imagery (allowing the collaborators to see each other) with digital display information (the source code being developed), but for the first realization we use one projector for PC display and one for camera/video display. Communication is via directional microphones placed in the vicinity of the workstations, so the participants will not be encumbered with headsets. Two distributed collaborators interact much like they do with local pairing; to talk, one will turn to the other (face the projection wall) and speak openly in the room. Since the camera is on the projection wall, the remote collaborator will have the impression that the communicator is looking at him or her. Each will see surrounding context and an image of significant size. The illusion created is a “joint office” with the video walls, much like the virtual coffee lounge of BellCore’s project VideoWindow mentioned previously. Software Platform: Video with hyperlinking In addition to this hardware environment, we are developing for DXP software tools to more effectively support interaction between distributed pair programmers while developing programming project artifacts As experiments progress, we will seek to identify areas in which collaboration among the programming pairs would benefit from software support and to build any shared artifact tools we may need (editors, inspection tools, etc.). Our first experiments, though, are to determine the effectiveness of the simplest approaches, using the observation made earlier that simple technology often reaps large benefits. Thus our first experiments have been with a single virtual PC obtained via NetMeeting, on traditional PCs. NetMeeting provides not only a shared desktop, but audio communications as well. One novel aspect of the DXP software environment is integration of the video stream from the camera with OvalTine, a hypermedia tool we developed at UNC to allow embedding of hyperlinks in video streams. In the section following we give an overview of the structure and image analysis techniques used in OvalTine to do video hyperlinking. Having hyperlinking capabilities in the DXP video widow gives collaborators unique tools for organizing software development. Potential uses include creating hyperlinks off words on the collaborator’s whiteboard, effectively making the video image a virtual page. A user can also attach a notepad to the collaborator herself (the face), so that ideas needing discussion can be noted as they are thought of; when pairs switch, face recognition software will allow the previously annotated information to be retrieved via a mouse click on the collaborator’s face. Another possible use is linking programmers’ images to the code they have most recently worked on, or are responsible for. Such a use would exploit the reason OvalTine was created -- to allow video streams to be properly integrated with textual and imagebased hypermedia documents (i.e., web pages and databases). OvalTine allows hyperlink annotations in both real-time streams and in stored video. The later capability means that for study of DXP itself, the video window can be captured, archived, and then marked up with hyperlinks via OvalTine. Researchers studying the collaborators will be able to form video webs from the various DXP sessions. We are sure there are other uses for hyperlinks that the programming pairs will discover during experimentation when the OvalTine-enhanced DXP environment is fully online. OVALTINE: HYPERLINKED REAL-TIME VIDEO One of the problems keeping video from being a fully firstclass data component of hypermedia documents is the difficulty of treating the objects depicted in video as identifiable, linkable content. Rather, video tends to be manipulated as frames of pixels with no further subdivisions. When link markup is done on video streams, it is done manually frame-by-frame. We have been working with OvalTine, a system for tracking objects in video streams so that hypermedia link anchors can be associated with the objects in the video frames. The OvalTine tracking system can be used to do automated link markup of video streams. While our previous work with OvalTine presented object tracking in real-time streams [31], we have recently developed extended techniques for markup of stored (archived) data. Our results allow hypermedia structure to be generated and added to large digital libraries of video data. Every current popular method for adding active regions to video requires manual selection of video objects, on a frameby-frame basis. No research efforts in automation have yet made it into common practice in a widely used system such as those from Apple (QuickTime, [32]). By contrast, an automatable object tracking system is much more desirable, both for real-time applications, and for the automated addition of hyperlinks to the vast amount of archived video currently in existence. A good overview of the issues and technologies in current hypervideo systems can be found in class notes at Texas A&M [33]. In the terms defined in this taxonomy, we are working on a system for automatically specifying mostly spatio-temporal links in hypervideo. Hypercafe [34] is often cited in hypervideo discussions; however, it is a presentation system mostly and does not support the dynamic and automatic link anchor creation we are exploring in OvalTine. The Multimedia Systems Lab at IISc India is doing work on object tracking in MPEG streams [35]. This project seems similar in scope and goals to OvalTine. They are tracking object in an MPEG stream, where as OvalTine is architected to be modular and extensible to define tracking and linking concepts at an abstract level, and to be applicable to different image and video formats with minimal extensions. Most other systems, however, that apply to hypervideo involve manual anchor creation when authoring hypervideos. archives. All major news services have vast video archives, valuable “footage” that would be of use in education, historical research, even entertainment. As noted earlier, the current best practices for link markup in video require completely, or considerably, manual markup of the video frames with the active, or hot, areas that serve as link anchors in hypervideo data. Broad access to vast caches of stored video “footage” will only be possible with automated link markup methods. Two tracking modes We have previously reported on the OvalTine system [31] and discussed the various distributed system architecture issues involved in storing and serving video hyperlinks in a client/server implementation. This section presents our continuing work with the system, demonstrating the use of the basic real-time image tracking algorithms for use in automated markup of stored video data. In the terms of the taxonomy we outlined in [31] this is a Server/Archived scenario, and we have chosen to implement a Manual object selection scheme. In our initial OvalTine implementation, we demonstrated real-time tracking of faces in live video streams, such as the one from the collaborator camera in the DXP environment (an example of real-time videoconferencing). This tracking allows hypermedia link anchors to be associated with objects in the video window, creating a first-class hypermedia capability for video data. The face in the video frame becomes a live link, a selectable target for the user to click on to trigger some action. As the face moves around the video screen, the live target area moves with it, providing the illusion that the face itself is the hyperlink anchor. The target is optionally made visible by means of a simple highlight oval that moves with the face. Clicks within the oval count as a click on the face, and the enveloping hypermedia layer follows the link associated with the face. The links targets are URLs entered when the object is first selected as a link anchor (at the initiation of tracking); selecting one triggers the display of a web browser window with the proper URL loaded. We have developed a second, equally important use for the OvalTine technology – automating the addition of link markup to stored (non-real-time) video data. There is increasing interest in video data being incorporated in hypermedia structures (which we will hereafter refer to as hypervideo data). Digital libraries are growing in popularity and scope, and video is an important component of such Figure 6. OvalTine tracker interface We do not specify to what a link anchor may refer, nor do we limit the type of objects that may be designated as a link anchor. The goal of our work is to explore the creation and maintenance of hyperlinks in video streams, and to automate these procedures as much as possible. User Interface Examples: Ovals, trackers, sprites, links, and multi-links OvalTine is set up to allow link markup of stored video as an editing task. Figure 6 shows the video display window, the properties window, and the URLs window. The video display window presents the video data and shows the tracked objects as (optionally) outlined ovals. For real-time applications, such as video conferencing, the playback controls are inoperative. For markup of stored video, the user can do the standard start, stop, pause, and slider frame selection operations on the video stream. The tracking properties window allows the user to select the type(s) of tracking algorithms to apply to the video frames. OvalTine’s architecture has been structured to allow multiple tracking algorithms to be chained together and applied in sequence. A user can even apply a different chain of trackers to each different oval if desired; OvalTine spawns a separate tracking thread for each oval. Some trackers work better than others in varying images; the selection of specific trackers to use depends on image properties such as color variability, background complexity, object motion, texture, etc. Once a link anchor (oval) has been established in the video window, the user can associate one or more URLs with that anchor to be targets of the link(s). These URLs show up in the URL window in the lower left. Figure 6 shows one URL for each oval, and the association is made by the color of the tag. For real-time links, mouse events are trapped in the video window, and the tracker information is used directly for the current frame to determine which stored URL is to be activated. Figure 7 shows OvalTine in use while viewing a marked-up video stream. Here we see a CNN clip where the face of the reported has been annotated with 2 different links. One link is to the CNN home page (seen displayed in the background). The other link is to an article and map on Pakistan, which is the topic of the video; this page is shown in the foreground. Stored video has an extra layer atop the base video data. During markup, the video stream is played and tracked as if in real-time. The areas that the trackers identify as active link anchors in each frame are captured and stored in a Sprite layer for Apple Quicktime [32]. OvalTine then uses Quicktime to overlay the hotspot layer onto the video image during playback, and traps mouse clicks in these areas for processing through the associated URL information in OvalTine’s data store. CONCLUSIONS To edit, the user selects a starting frame with the slider controls, and then designates one or more objects to be tracked. The video is started with the “track” button, and the tracker chain for each oval causes the link anchors to follow the objects as they move in the video frame. The sprite infrastructure captures the layout information needed to maintain the link anchors in association with the video data. At any point the user may pause the video, add or delete ovals, and continue with tracking. URLs can be added to the tracked objects at any point, either during tracking, or during playback editing of the marked-up video data. Though not shown, ovals can be linked to any first-class Web data, including another OvalTine video clip. There is also a “lost” link palette (not shown) that collects the URLs associated with objects that are being tracked, but move out of the video window. Any URLs associated with such an object are taken out of the URL window and saved in the “lost” list. This is a convenience that makes it easier for the user to re-associate these URLs if the tracked object should reappear in the video window and need to be tracked again. The results of our experiment indicate the following: • Pair programming in virtual teams is a feasible way of developing object-oriented software. • Pair programming in colocated teams is a feasible way of developing object-oriented software. • Software development involving distributed pair programming seems to be comparable to colocated software development in terms of the two metrics, namely productivity (in terms of lines of code per hour) and quality (in terms of the grades obtained). • Colocated teams did not produce statistically significantly better results than the distributed teams. • The feedback given by the students indicates that distributed pair programming fosters teamwork and communication within a virtual team. Thus, the experiment is a first indication that distributed pair programming is a feasible and efficient method for dealing with team projects. The successes of our simple DXP platformn has led us to construct one that presents collaborators with a more significant video image, including the ability to create hyperlinks in a real-time video stream. Follow-on experiments in distributed pair-programming will be conducted using this video-enhanced DXP environment. ACKNOWLEDGMENTS We would like to thank NCSU undergraduate student Matt Senter for his help in administering this experiment. The support of Intel in providing equipment is graciously acknowledged. We would also like to thank NCSU graduate student Vinay Ramachandran for developing the tool called Bryce to record project metrics. This work was also supported with funds from NSF grant 9732577 and EPA grant R82-795901-3 to the Univ. of North Carolina, as well as equipment from IBM. REFERENCES [1] L. A. Williams, “The Collaborative Software Process PhD Dissertation”, Department of Computer Science, University of Utah. Salt Lake City, 2000. [2] J. T. Nosek, “The case for collaborative programming”, Communications of the ACM 41:3, March 1998, p. 105–108. Figure 7. OvalTine application showing marked up video stream [3] S. P. Foley, “The Boundless Team: Virtual Teaming”, http://esecuritylib.virtualave.net/virtualteams.pdf, 2000 Master of Science in Technology (MST) Graduate Symposium, Northern Kentucky University. [4] D. Gould, “Leading Virtual Teams”, Leader Values, http://www.leader-values.com/Guests/Gould.htm. July 9, 2000. [5] http://bryce.csc.ncsu.edu/tool/default.jsp [21] P. D. Stotts, R. Furuta, and C. R. Cabarrus, “Hyperdocuments as Automata: Verification of Trace-based Browsing Properties by Model Checking,” ACM Trans. on Information Systems, vol. 16, pp. 1-30, January 1998. [6] L. A. Williams, and R. Kessler, “Pair Programming Illuminated”, Boston, MA: Addison Wesley, 2002. [22] D. Jones, “What is a CAVE TM?,” , pp. http://www.sv.vt.edu/future/vt-cave/whatis/, 1999. [7] L. Williams, R. Kessler, W. Cunningham, and R. Jeffries, “Strengthening the case for pair-programming”, IEEE Software 17:4, July/Aug 2000, pp. 19-25. [23] MIT, “DataWall: Seamless, full motion ultrahigh resolution projection display,” pp. http://vlw.www.media.mit.edu/groups/vlw/DataWalloverview.htm, 2000. [8] A. Cockburn, and L. Williams, “The costs and benefits of pair programming”, Extreme Programming Examined, Succi, G., Marchesi, M. eds., pp. 223-248, Boston, MA: Addison Wesley, 2001 [24] UMN, “Welcome to the PowerWall,” , pp. http://www.lcse.umn.edu/research/powerwall/powerwall.htm l, 1998. [9] B. George., Y. M. Mansour, “A Multidisciplinary Virtual Team”, Accepted at Systemics, Cybernetics and Informatics (SCI), 2002. [25] H. Takemura and F. Kishino, “Cooperative Work Environment using Virtual Workspace,” presented at Proc. of CSCW '92, Toronto, 1992. [10] Beck, K., Extreme Programming Explained, AddisonWesley, 2000. [26] H. Ishii, M. Kobayashi, and J. Grudin, “Integration of inter-personal space and shared workspace: ClearBoard design and experiments,” presented at Proc. of CSCW '92, Toronto, 1992. [11] Wells, J. D., “Extreme Programming: A Gentle Introduction,” 2001, available on-line at http://www.extremeprogramming.org/ [12] Beck, K., and Gamma, E., “ JUnit Test Infected: Programmers Love Writing Tests,” Java Report, July 1998, Volume 3, Number 7. Available on-line at: http://JUnit.sourceforge.net/doc/testinfected/testing.htm [13] Beck, K., and Gamma, E., “JUnit A Cook’s Tour,” Java Report, 4(5), May 1999. Available on-line at: http://JUnit.sourceforge.net/doc/cookstour/cookstour.htm [27] H. Fuchs, “The Office of the Future,” pp. http://www.cs.unc.edu/~raskar/Office/. [28] G. Bishop, , pp. http://www.cs.unc.edu/~gb/office.htm, The Office of Real Soon Now. [29] G. Bishop and G. Welch, “Working in the Office of 'Real Soon Now',” IEEE Computer Graphics and Applications, pp. 76-78, July/August 2000. [14] Fowler, M., Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999. [30] R. S. Fish, R. E. Kraut, and B. L. Chalfonte, “The VideoWindow System in Informal Communications,” presented at Proc. of CSCW '90, Los Angeles, 1990. [15] D. C. Engelbart and W. K. English, “A Research Center for Augmenting Human Intellect,” presented at AFIPS Conference Proceedings of the 1968 Fall Joint Computer Conference, San Francisco, CA,, 1968. [31] Smith, J., D. Stotts, and S.-U. Kum, "An Orthogonal Taxonomy for Hyperlink Anchor Generation in Video Streams using OvalTine," Proc. of Hypertext 2000 (ACM), May, 2000, San Antonio, Texas, pp. 11-18. [16] L. Brothers, V. Sembugamoorthy, and M. Muller, “ICICLE: Groupware for code inspection,” presented at Proc. of Computer Supported Collaborative Work, Los Angeles, 1990. [32] Apple Computer, “Introduction to Wired Movies, Sprites, and the Sprite Toolbox”, http://developer.apple.com/techpubs/ quicktime/qtdevdocs/REF/refWiredIntro.htm [17] S. Conklin and M. Begeman, “gIBIS: A hypertext tool for team design deliberation,” presented at Proc. of ACM Hypertext '87, Chapel Hill, NC, 1987. [33] Francisco-Revilla, L., “A Picture of Hypervideo Today”,http://www.csdl.tamu.edu/~l0f0954/academic/cpsc61 0/p-1.htm, 1998. [18] R. Furuta, P. D. Stotts, “Petri Net Based Hypertext: Document Structure with Browsing Semantics,” ACM Trans. on Information Systems (ACM), vol. 7, pp. 3-29, January 1989. [34] Sawhney, N., D. Balcom, and I. Smith, “HyperCafe: Narrative and Aesthetic Properties of Hypervideo”, Hypertext ’96 Proceedings, ACM, Washington, D.C., 1996, pp. 1-10. [19] M. Capps, B. Ladd, and D. Stotts, “Enhanced Graph Models in the Web: Multi-client, Multi-head, Multi-tail Browsing,” Computer Networks and ISDN Systems, vol. 28, pp. 1105-1112, 1996. [35] Multimedia Systems Lab at IISc, “Object tracking and hypervideo”,http://serc204a.serc.iisc.ernet.in/research /track.htm [20] J. Navon, “Specification and Semi-Automated Verification of Coordination Protocols for Collaborative Software Systems Ph.D. Thesis,” in Department of Computer Science. Chapel Hill, NC: University of North Carolina, 2001.