Timely and Efficient Detection of Coordination Needs to Support Collaboration among Software Developers

Developers in large software projects often need to coordinate when they are working on interdependent tasks. However, those developers are not always aware of those coordination needs. When that coordination does not occur, productivity can be affected. There are existing methods that detect coordination needs between developers, but they suffer from two main limitations: they are not timely, and they may overwhelm the developers with many recommendations. I have devised a method that solves these limitations and detects only the critical coordination needs in a timely way. 1. PROBLEM / MOTIVATION In large software projects, developers work on tasks in parallel, or on tasks that are interdependent. This often results in work dependencies and, consequently, coordination needs. When developers remain unaware or do not obtain timely awareness of the coordination that is required to manage work dependencies, there is potential for software productivity or quality problems [6][23]. The design literature, beginning with Parnas’ recognition of the workflow implications of modularization [23], has largely focused on ways to streamline the technical dependencies between modules as a way to maximize task parallelism [27][28]. However, it is impossible to eliminate all technical dependencies between modules. Therefore, some coordination between development tasks that operate on those modules must occur. In large, distributed development projects, it is particularly difficult for developers to stay aware of their coordination needs [7]. Developers must be made aware of the dependencies that exist and the coordination that is required of them. There has been some research on methods [8][10][21][29] and tools [2][12][13][22][24][25][26] to detect coordination requirements and increase awareness of coordination needs. However, the state of the art in this area is limited in two principal ways: 1. Detection of coordination requirements is not timely. Recognition of coordination needs occurs when much of the affected development work has already taken place. 2. Detection methods tend to introduce too much noise and risk to overwhelm the developers since they enumerate all potential coordination requirements between pairs of developers. A large number of these needs may be already known, may have a low impact on efficiency of collaboration, or may be immaterial for the developers’ work. My work begins to solve these two limitations. I describe a technique to identify coordination requirements in real-time and methods to differentiate between trivial and critical coordination needs. I define a critical coordination requirement as one that can cause the most disruption and inefficiency to the development process if not properly and timely managed. Therefore, my work contributes to increasing the productivity of software development teams. The methods I have conceived can be generalized to enhance coordination awareness and increase efficiency to other industries that complete a majority of their work electronically. 2. BACKGROUND / RELATED WORK A recent work shows that, for a software engineer, the most important form of awareness is locating and keeping up to date with other developers whose work is relevant to her own [2]. One of the first approaches to providing this type of awareness was introduced with configuration management conflict detection systems like Palantír [24][26] and CollabVS [13]. These tools are built on top of configuration management tools and changed the flow of information from “pull” to “push” by providing notifications to keep a developer abreast with what happens in her colleagues’ workspaces. They issue instantaneous warnings to developers as an individual instance of conflict emerges, but they do not offer a model for quantifying the strength of coordination needs. So while they are timely, CollabVS and Palantír do not draw a complete view of coordination needs across the whole team and simply provide a stream of notifications to developers. Cataldo et al. [8][10] were the first to introduce a framework for establishing coordination requirements between developers (depicted in Figure 1). They found that when coordination requirements are fulfilled, for example, by acts of communication, productivity is likely to increase [8][9][10]. Their framework establishes coordination requirements between developers who are working on dependent tasks. To ascertain work dependencies they look at the artifacts committed during each task and the dependencies between those artifacts. Logical coupling [16] is used to determine technical dependencies between artifacts if they have been checked in together in the past. Cataldo et al. [9] found that logical couplings are more likely than syntactic couplings to Figure 1. Conceptualization of coordination requirements in Cataldo et al. approach [8][10].