Improving the Quality of User Feedback for Continuous Software Evolution

With the emergence of app stores and social media, also non-technical users began to frequently and informally communicate with developers. User feedback contains requirements-related information, such as bug reports or feature requests. This information is of great potential to developers as it allows them to develop software systems according to users' needs. We identified two central problems regarding the quality of user feedback that prevent its automated analysis and, therefore, integration into continuous software evolution processes, such as DevOps. First, in an explorative study, we found that user feedback includes fake information, which might lead to wrong insights about real users' needs. Second, in an empirical study, we showed that user feedback often misses basic context information, such as the concerned platform, and is therefore likely to be non-actionable to developers.This dissertation has two main contributions. First, we develop automated approaches to check and increase the quality, i.e., authenticity and actionability, of user feedback. To support developers in understanding real users' needs, we compare fake to regular app reviews. Based on the identified differences, we develop, optimize, and evaluate a machine learning classifier to detect fake reviews. To assist developers in understanding and reproducing reported user feedback, we propose two complementary solutions to augment the feedback with context information automatically. The first approach augments newly created user feedback with context information implicitly captured during app executions. The second approach is based on a chatbot that mines user-developer conversations to identify and explicitly request missing context items. We describe the implementation of the context extraction approach and evaluate it on a manually labelled truthset.The second main contribution integrates the quality-improved user feedback into continuous software evolution processes. To support developers in understanding the provided context information, we introduce a crowdsourcing approach. If an anomaly is not immediately visible, such as specific steps within long interaction traces, our approach isolates, i.e., highlights relevant and hides irrelevant, context items. To assist developers in monitoring users' satisfaction with evolutionary app changes, we discuss the use of sentiment analysis tools. We identify recurring emotional patterns by applying sentiment analysis tools to user feedback. By comparing these with corresponding app updates, we derive appropriate app release strategies.We evaluate the identification of fake reviews in an in-the-wild experiment. Given a proportional distribution of fake and regular reviews as reported in other domains, our classifier to detect fake reviews achieved a recall of 91% and AUC/ROC value of 98%. Further, we evaluate the usefulness of context information in real user feedback with 16 experienced iOS developers. In experiments, developers reproduced four real bugs of open-source apps, as described in app reviews. We found that given context information, developers have an improved understanding of and ability to reproduce bugs. Developers require, on average, 46% less time and 78% fewer interactions considering context information. Simulations confirmed that our approach to capture context information automatically does not introduce observable runtime overhead. In interviews, we collected developers' concerns and possible improvements. Mit dem Aufkommen von App Stores und sozialen Medien begannen auch technisch nicht versierte Nutzer haufig informell mit Entwicklern zu kommunizieren. Das Feedback der Benutzer enthalt anforderungsbezogene Informationen, wie z.B. Fehlerberichte oder Funktionswunsche. Diese Informationen sind fur Entwickler von grosem Potential, da sie es ihnen ermoglichen, Softwaresysteme entsprechend der Bedurfnisse der Nutzer zu entwickeln. Wir haben zwei zentrale Probleme hinsichtlich der Qualitat des Nutzerfeedbacks identifiziert, die eine automatisierte Analyse und damit die Integration in kontinuierliche Software-Evolutionsprozesse, wie z.B. DevOps, verhindern. Zum einen haben wir in einer explorativen Studie festgestellt, dass Nutzerfeedback gefalschte Informationen enthalt, die zu irrefuhrenden Erkenntnissen uber die tatsachlichen Bedurfnisse der Nutzer fuhren konnen. Zweitens haben wir in einer empirischen Studie gezeigt, dass Nutzerfeedback oft grundlegende Kontextinformationen, wie z.B. die betroffene Plattform, nicht enthalt und daher wahrscheinlich fur Entwickler nicht nachvollziehbar ist.Diese Dissertation enthalt zwei Hauptbeitrage. Zum einen entwickeln wir automatisierte Ansatze, um die Qualitat, d.h. die Authentizitat und Verstandlichkeit von Nutzerfeedback zu uberprufen und zu erhohen. Um die Entwickler dabei zu unterstutzen, die Bedurfnisse realer Nutzer zu verstehen, vergleichen wir gefalschte mit echten App-Reviews. Basierend auf den identifizierten quantitativen Unterschieden entwickeln, optimieren und evaluieren wir einen maschinell lernenden Klassifikator, der gefalschte Reviews erkennt. Um Entwickler dabei zu unterstutzen, das berichtete Nutzerfeedback zu verstehen und zu reproduzieren, schlagen wir zwei sich erganzende Losungen vor, um das Feedback automatisch mit Kontextinformationen anzureichern. Der erste Ansatz versieht neu erstelltes Nutzerfeedback mit Kontextinformationen, die implizit wahrend der Anwendungsausfuhrung erfasst werden. Der zweite Ansatz basiert auf einem Chatbot, der Benutzer-Entwickler Konversationen analysiert, um fehlende Kontextinformationen zu identifizieren und explizit anzufordern. Wir beschreiben die Implementierung des Ansatzes zur Extraktion von Kontextinformationen und evaluieren diesen auf einem manuell beschrifteten Datensatz.Als zweiten Hauptbeitrag integrieren wir das in der Qualitat verbesserte Nutzerfeedback in kontinuierliche Software-Evolutionsprozesse. Um Entwickler dabei zu unterstutzen, die bereitgestellten Kontextinformationen zu verstehen, fuhren wir einen Crowdsourcing-Ansatz ein. Wenn eine Anomalie nicht sofort sichtbar ist, wie z.B. bestimmte Schritte innerhalb langer Interaktionsspuren, isoliert unser Ansatz die gesammelten Kontextinformationen, d.h. er hebt relevante Informationen hervor und blendet irrelevante aus. Um Entwickler bei der Erfassung der Zufriedenheit ihrer Nutzer mit evolutionaren App-Anderungen zu unterstutzen, diskutieren wir den Einsatz von Sentimentanalyse-Tools. Wir identifizieren wiederkehrende emotionale Muster durch die Anwendung entsprechender Tools auf Nutzerfeedback. Durch den Vergleich mit zugehorigen Updates leiten wir geeignete App-Releasestrategien ab.Wir evaluieren die Identifikation von gefalschten Nutzerrezensionen in einem Experiment. Bei einer proportionalen Verteilung von gefalschten und echten Reviews, wie sie in anderen Domanen bekannt sind, erreicht unser Klassifikator zur Erkennung von gefalschten App-Reviews einen Recall von 91% und einen AUC/ROC-Wert von 98%. Auserdem bestimmen wir die Nutzlichkeit von Kontextinformationen in echtem Nutzerfeedback mit 16 erfahrenen iOS-Entwicklern. In Experimenten haben die Entwickler vier echte Fehler aus Open-Source-Anwendungen reproduziert, wie diese in App-Reviews beschrieben wurden. Wir haben festgestellt, dass die Entwickler unter Zuhilfenahme von Kontextinformationen Fehler besser verstehen und reproduzieren konnen. Entwickler benotigen durchschnittlich 46% weniger Zeit und 78% weniger Interaktionen um Fehler nachzustellen. Simulationen bestatigten, dass unser Ansatz zur automatischen Erfassung von Kontextinformationen keine beobachtbare Auswirkung auf die Laufzeit mit sich bringt. Zuletzt haben wir in Interviews die Bedenken der Entwickler und mogliche Verbesserungen gesammelt.