Mining and Analyzing User Rationale in Software Engineering

Rationale refers to the reasoning and justification behind human decisions, opinions, and beliefs. In software engineering, rationale is important for capturing and documenting requirements and design decisions and consequently organizing and reusing knowledge in software organizations. While rationale knowledge typically originates from professional stakeholders involved in a software project (e.g., business analysts, developers, managers), nowadays there is a potential in augmenting this knowledge with the rationale of users, posted e.g., in app stores or social media. User feedback contains a significant amount of knowledge including rationale that we can mine and use for software engineering purposes. Unfortunately, studying and mining rationale from user feedback for software engineering has been so far deficiently researched. This thesis empirically studies rationale written by end users in online reviews using grounded theory approach and peer content analysis. We studied users reasoning and justification, for example how users explain their decisions, e.g. on upgrading, installing, or switching the application. We also studied the characteristics and frequency distribution of the identified rationale concepts, such as issues encountered, alternatives considered, or criteria for assessment. We found that criteria such as performance, compatibility, and usability, which play an important role during requirements analysis, system design, and project management activities, represent the most frequent user rationale concept. We also found that users express and justify their stances by criteria assessments. Using a manually labeled dataset of software reviews we studied how accurately we can automatically mine rationale concepts from reviews using supervised machine learning and identified potentials and challenges. We also studied whether we can augment an industrial criteria dataset with our user rationale dataset to improve classification accuracy of non-functional requirements, by handling class imbalances and by enlarging the industrial dataset. We also used a dataset of pro and contra user comments on controversial issues to assess topic-independent lexical features and significance of comment’s parts (e.g., sentence position) for stance mining. We found classification and data insights for stance miners and discuss their potential for software engineering. Inspired from our studies and empirical findings, we introduce and discuss the Rationalytics framework and two prototypes as a proof of concept for rationale and stance mining tools for software engineering projects. Begrundungen werden dazu verwendet um menschliche Entscheidungen, Meinungen und Uberzeugungen zu rechtfertigen. In der Softwareentwicklung sind Begrundungen wichtig, um Anforderungen und Designentscheidungen zu erfassen und zu dokumentieren, und das folglich entstandene Wissen in Softwareorganisationen zu organisieren und wiederzuverwenden. Wahrend Begrundungenswissen hauptsachlich von professionellen Stakeholdern stammen, die an einem Softwareprojekt beteiligt sind (z.B. Business-Analysten, Entwickler, Projektmanager), besteht heutzutage das Potenzial, dieses Wissen durch die Begrundungen der Softwarenutzer zu erweitern, die z.B. in App-Stores oder sozialen Medien veroffentlicht werden. Nutzerfeedback enthalt eine erhebliche Menge an nutzlichem Wissen, einschlieslich Begrundungen, die wir fur die Softwareentwicklung extrahieren und verwenden konnen. Das Studium und die Extraktion von Begrundungen aus dem Nutzerfeedback fur Softwareentwicklung-Zwecke wurde bisher jedoch unzureichend erforscht. Diese Arbeit untersucht empirisch Begrundungen von Nutzern in Online- Bewertungen unter Anwendung des Grounded-Theory Ansatzes und der Peer- Inhaltsanalsyse. Wir haben Argumentationen und Rechtfertigungen studiert, beispielsweise wie Nutzer ihre Entscheidungen erklaren, uber die Aktualisierung, Installation oder den Wechsel der Anwendung. Auserdem untersuchten wir die Merkmale und Haufigkeitsverteilung der identifizierten Begrundungskonzepte, z.B. aufgetretene Probleme, berucksichtigte Alternativen oder Bewertungskriterien. Wir haben festgestellt, dass Kriterien wie Leistung, Kompatibilitat und Benutzerfreundlichkeit, die bei Anforderungsanalyse, Systemgestaltung und Projektmanagement-Aktivitaten eine wichtige Rolle spielen, die haufigsten verwendeten Begrundungskonzepte darstellen. Wir haben auch festgestellt, dass Nutzer ihre Positionen durch Kriterienbewertungen ausdrucken und rechtfertigen. Anhand eines manuell beschrifteten Datensatzes von Software-Bewertungen haben wir untersucht, wie genau wir Begrundungskonzepte aus Nutzerbewertungen mit uberwachtem maschinellem Lernen automatisch gewinnen konnen und Potenziale und Herausforderungen identifiziert. Wir haben auch untersucht, ob wir einen industriellen Kriteriendatensatz mit unserem Nutzerdatensatz erganzen konnen, um durch Handhabung von Klassenungleichgewichten und Erweiterung des Datensatzes, die Klassifikationsgenauigkeit von nicht-funktionalen Anforderungen im Kriteriendatensatz zu verbessern. Wir verwendeten auch einen Datensatz von Pro-Contra Nutzerkommentaren zu kontroversen Themen, um themenunabhangige lexikalische Merkmale sowie die Signifikanz von Kommentarteilen (z.B. Satzpositionen) fur automatische Identifikation von Nutzerpositionen zu evaluiren. Wir fassten unsere Klassifikations- und Dateneinblicke fur die Erkennung von Nutzerpositionen zusammen und diskutieren ihr Potenzial fur Softwareentwicklung. Inspiriert von unseren Studien und empirischen Ergebnissen, stellen wir das Rationalytics-Framework vor, sowie zwei Prototypen als Konzeptnachweis fur Werkzeuge zur Extraktion von Nutzerbegrundungen und -haltungen fur Softwareentwicklungs-Projekte.