Maximum Commonality Problems: Applications and Analysis - Dawande, Milind; Kumar, Subodha; Mookerjee, Vijay; Sriskandarajah, Chelliah (Management science, 2008)
Recently, an agile software development technique called extreme programming has caught the attention of practitioners and researchers in the software industry. A core practice of extreme programming is pair programming , where two developers work on the same piece of code. We introduce the problem of assigning pairs of developers to modules so as to maximize the commonality—a measure of the extent to which common developers work on related modules—subject to a load-balancing constraint that is motivated by the need to control the completion time of the project. We consider two variants of this problem. In MCAP n , a developer is teamed up with exactly one other developer to form a pair that works together for the entire duration of the project. In MCAP s , we allow a developer to pair with more than one other developer during the project. This "pair-splitting" version of the problem facilitates knowledge dissemination among developers, but can increase the effort needed for a developer to adjust to the work habits of several partners. The difference between the commonality achieved with and without pair splitting crucially depends on the underlying structure of the problem. For trees, we show that the value of the maximum commonality is the same for both MCAP n and MCAP s . Additionally, we obtain polynomial-time algorithms for both of these variants. For general graphs, both problems MCAP n and MCAP s are shown to be strongly NP-complete. We prove that the maximum commonality for MCAP s is at most 3/2 times the maximum commonality of MCAP n . We also provide polynomial-time algorithms and approximation results for a number of special cases of these problems.