Abstract:
When software developers fail to coordinate, build failures, duplication of work, schedule slips and software defects can result. However, developers are often unaware when they need to coordinate, and existing methods and tools that help make developers aware of their coordination needs do not provide timely awareness or efficient recommendations. Without timely awareness, developers cannot act on their coordination needs while development is underway. Further, existing tools recommend only which developers should coordinate. This introduces inefficiencies since developers are often working on multiple tasks in parallel. This dissertation describes a set of techniques that aim at improving the timeliness and efficiency of coordination recommendations. It introduces a method that provides timely coordination recommendations by analyzing developer actions as they occur using IDE monitoring facilities. It presents an approach that identifies coordination needs between pairs of tasks and leverages additional task properties and machine learning to identify a subset of the coordination needs that are more critical for the developers' work. This dissertation describes a series of investigations of coordination needs on eight releases of the Mylyn project. Our techniques were validated through a mixed methods approach including statistical analysis, in-depth examination of task records, and developer interviews. Our research shows that coordination recommendations can be made both timely and efficient by applying the techniques described in this thesis.