Pair Programming and Software Defects : A Case Study

Pair programming is a programming technique in which two programmers sit literally side by side working on the same task at the same computer. One member of a pair called “driver” is in charge of writing the code. The other member plays a role of “navigator”, working on the more strategic tasks, suc...

Full description

Bibliographic Details
Main Author: Phaphoom, Nattakarn
Format: Others
Language:English
Published: Blekinge Tekniska Högskola, Sektionen för datavetenskap och kommunikation 2010
Subjects:
Online Access:http://urn.kb.se/resolve?urn=urn:nbn:se:bth-3513
Description
Summary:Pair programming is a programming technique in which two programmers sit literally side by side working on the same task at the same computer. One member of a pair called “driver” is in charge of writing the code. The other member plays a role of “navigator”, working on the more strategic tasks, such as looking for tactical error, thinking about overall structure, and finding better alternatives. Pair programming is claimed to improve product quality, reduce defects, and shorten time to market. On the other hand, it has been criticized on cost efficiency. To increase a body of evidence regarding the real benefits of pair programming, this thesis investigates its effect on software defects and efficiency of defect correction. The analysis bases on 14-month data of project artifacts and developers' activities collected from a large Italian manufacturing company. The team of 16 developers adopts a customized version of extreme programming and practices pair programming on a daily basis. We investigate sources of defects and defect correction activities of approximately 8% of defects discovered during that time, and enhancement activities of approximately 9% of new requirements. Then we analyze whether there exists an effect of pair programming on defect rate, duration and effort of defect correction, and precision of localizing defects. The result shows that pair programming reduces the introduction of new defects when the code needs to be modified for defect corrections and enhancements.