Software development is a complex socio-technical activity typically occurring concurrently, in distributed teams, and within the larger organizational goals and context. Current development tools are overwhelmed by the scale of software-intensive systems, and often end up contributing to, rather than minimizing, information overload, and coordination breakdowns, which ultimately lead to software conflicts and project delays.
This research seeks to establish an understanding of how past development data and team practices can be used to proactively identify dependencies and constraints across tasks, and schedule tasks so as to minimize conflicting changes in parallel, distributed development. This work will contribute: (1) conflict typology formalizing software conflicts and their interplay with organizational context, (2) knowledge about how to achieve improvements in productivity, quality, and development speed, (3) a suite of analysis techniques, design principles, tool prototypes, and interaction methods for conflict minimization in distributed, parallel development. Evaluation includes deployment to real software development teams and controlled experiments of the efficacy of the resulting tools. The broader impacts of the work are ultimately to enable software teams to develop software in a conflict-free environment and train students on critical processes associated with collaboration competency.