Article ID: | iaor20082443 |
Country: | United States |
Volume: | 16 |
Issue: | 3 |
Start Page Number: | 381 |
End Page Number: | 399 |
Publication Date: | Jan 2007 |
Journal: | Production and Operations Management |
Authors: | Dawande Milind, Liu Dengpan, Mookerjee Vijay |
Keywords: | software |
We study the problem of optimally sequencing the creation of elements in a software project to optimize a time-weighted value objective. As elements are created, certain parts of the system (referred to as ‘groups’) become functional and provide value, even though the entire system has not been completed. The main tradeoff in the sequencing problem arises from elements that belong to multiple groups. On the one hand, creating groups with common elements early in the project reduces the effort required to build later functionality that uses these elements. On the other hand, the early creation of such groups can delay the release of some critical functionality. We formulate the element sequencing problem and propose a heuristic to solve it. This heuristic is compared against a lower bound developed for the problem. Next, we study a more general version of the element sequencing problem in which an element requires some effort to be made reusable. When a reusable element is used in another group, some more effort is needed to specialize the element to work as desired in that group. We study reuse decisions under a weighted completion time objective (i.e., the sum of the completion time of each group weighted by its value is minimized), and show how these decisions differ from those under a traditional makespan objective (i.e., only the final completion time of the project is minimized). A variety of analytical and numerical results are presented. The model is also implemented on data obtained from a real software project. A key finding of this work is that the optimal effort on reuse is never increased (typically lowered) when a weighted completion time objective is used. This finding has implications for managing reuse in projects in which user value influences the order in which functionality is created.