The modern human seems to be driven by the desire to optimize the day to day life. Fitness trackers and diet planners are everywhere. These devices support the goal of living a healthy life by providing metrics that allow a retrospection of ones behavior. In this project, you will map this metaphor to developers that want to reflect on their development behavior.
The project extends an interaction tracker that we have built in previous work . Our tracker already captures many details about the development process (e.g., executed tests, created files) and it should not be necessary to implement additional instrumentations in the Master Project. We have used this tracker in a field study with several users to collect realistic usage data from developers. So far, all data that is shared by the users is automatically published. In addition, the tracker does not provide any value to the users.
In this project, the prospective students will create a “Personal Dashboard” to the tracker that allows to review the time a developer has spent on various activities. The goal is to allow a reflection on the personal development time to improve ones behavior. For example, a developer that want to spent more time on testing should be able to compare the number of test executions of this week to the one of last week. Other examples could be the amount of time that was spent coding, or the number of times local builds have failed.
To enable this, we want to create a centralized server that aggregates the data and provides the statistics to the users. To improve user acceptance, it is necessary to establish a better privacy concept than just “publish anything”, so part of the project will be creating a new privacy layer for the existing tracker that give the user fine-grained control over how their data is published.
The following steps are required for a successful project:
- Extend the privacy concept of the existing interaction tracker. Instead of the existing “everything will be public” strategy, it should be possible for the user to decide on a fine-grained level, which parts of the collected data should stay private and which parts can be published.
- A server component is built that automatically aggregates all data that is shared by the different users. This aggregated data should be analyzed and some interesting statistics should be calculated per user. We do not specify the statistics and leave this to the group to decide.
- Provide an statistics component into the IDE that allows the user to review their statistics and explore the gathered data.
This project will be conducted in the .Net ecosystem and should be integrated in Visual Studio/ReSharper (IDE) and use a server component that relies on static content delivery.
- Proksch et al., “Enriching In-IDE Process Information with Fine-Grained Source Code History”, SANER’17.
- Johnson et al. “Beyond the Personal Software Process: Metrics Collection and Analysis for the Differently Disciplined”, ICSE’03.
- Meyer et al., “Software Developers’ Perceptions of Productivity”, FSE 14.
- Jiang et al. “Modeling privacy control in context-aware systems“, IEEE’02.