Continuous Team Notification

Any software project of significant size is built in a team, is stored in a repository, and is continuously built from a build server to guarantee quality and timely integration of new features. Working in a team has an overhead that is immediately clear to anybody who at some point had to fix a merge conflict in a repository or who had to fix a failing build that was caused by a seemingly unrelated change in a different part of the system. Unfortunately, developers only realize this conflict after the fact, when they thought that they have actually finished their task and when they are ready to move on to the next one. This delayed notification is not only annoying for the developer, it also adds overhead, because a fix takes longer the later the conflict is identified.

We envision that better tools can help to identify such conflicts early on in the process. The assumption is that this makes them easier to fix or maybe prevent them completely by facilitating a better team communication directly when the conflict is introduced. In this master project, the students will build an infrastructure that connects the development environments of different team members. Sharing details about their development activities with each other improves their team awareness and allows conflict detection long before changes are being committed or built. The build server is the central entity that should be used as a synchronization point for all clients.

This project will be supervised by Sebastian Proksch and Carmine Vassallo. Please reach out to us if you have further questions about the project.

Required Tasks

The following steps are required for a successful project:

  • Design a conceptual framework for continuous notification.
    • Identify scenarios, in which an early notification about activities of other team members can prevent later conflicts.
    • Define which information are required to identify these conflicts from the individual development activities.
  • Implement an IDE plugin that extracts the required information from an existing stream of development events [2] and shares them in the team.
  • Provide a centralized server component that orchestrates the events of the different team members and the build server.
  • Provide a detection mechanism that identifies team conflicts in this integrated team event stream.
  • Create a notification component in the IDE that alerts the developers about conflicts once they have been identified.

This project will be conducted in the .Net ecosystem and should be based on Visual Studio/ReSharper (IDE) and TeamCity (build server).

References

  1. Kerzazi et al., “Why Do Automated Builds Break? An Empirical Study”, ICSME’14.
  2. Proksch et al., “Enriching In-IDE Process Information with Fine-Grained Source Code History”, SANER’17.
  3. Gutwin et al. “Group awareness in distributed software development“, CSCW’04.
  4. Biehl et al. “FASTDash: a visual dashboard for fostering awareness in software teams”, CHI’07