Bitte benutzen Sie diese Kennung, um auf die Ressource zu verweisen: http://dx.doi.org/10.18419/opus-13943
Autor(en): Di Grazia, Luca
Titel: Supporting software evolution via search and prediction
Sonstige Titel: Such- und Vorhersageverfahren zur Unterstützung von Software-Evolution
Erscheinungsdatum: 2024
Dokumentart: Dissertation
Seiten: xix, 197
URI: http://nbn-resolving.de/urn:nbn:de:bsz:93-opus-ds-139627
http://elib.uni-stuttgart.de/handle/11682/13962
http://dx.doi.org/10.18419/opus-13943
Zusammenfassung: Software evolution involves the growth and adaptation of software throughout its lifecycle, including bug fixes, security patches, new programming language features, and user-driven improvements. The effective understanding and management of software evolution is essential to ensure the sustained functionality and reliability of digital systems. In the realm of software evolution, we have identified three key challenges. The first challenge involves the necessity for improved information retrieval methods in software evolution. Efficiently identifying and localizing code changes as software evolves is a fundamental problem, for example in identifying the root cause of a bug, necessitating systematic methodologies for effective information retrieval. The second challenge underlines the importance of understanding developers' code change patterns to optimize development workflows. Analyzing commit patterns, repository characteristics, and collaborative development helps to build better methodologies and approaches for practitioners. The third challenge is that developers spend large amounts of time manually fixing bugs, and this task can be automated. This challenge is particularly crucial in large-scale projects, helping to improve development processes, enhance software maintenance, and ensure the delivery of high-quality software by automatically fixing bugs. This dissertation argues that these challenges of software evolution can be effectively addressed through a combination of program analysis, information retrieval, and deep learning approaches. We make four contributions to support our argument. We address the first challenge with a survey on code search and proposing a search engine for code changes. For the second challenge, we conduct a comprehensive empirical study using static program analysis on the evolution of type annotations in Python to comprehend these code change patterns. For the final challenge, we introduce Pyty, an automated program repair tool for Python type errors using transfer learning. The contributions of this dissertation impact both developers and researchers in the field. First, our survey not only enhances understanding but also guides researchers towards emerging trends and unresolved issues in information retrieval for code. DiffSearch provides developers with a powerful approach for efficiently searching code changes, demonstrating superiority over existing methods. Our empirical study on type annotations contributes valuable insights for the Python community, shedding light on adoption trends and correlations with type errors. Finally, Pyty surpasses state-of-the-art techniques, offering developers an effective and precise approach to automatically fix Python type errors. As a result, these research projects address evolving challenges and assist professionals in the important field of software evolution.
Enthalten in den Sammlungen:05 Fakultät Informatik, Elektrotechnik und Informationstechnik

Dateien zu dieser Ressource:
Datei Beschreibung GrößeFormat 
main.pdf4,57 MBAdobe PDFÖffnen/Anzeigen


Alle Ressourcen in diesem Repositorium sind urheberrechtlich geschützt.