Project

Back to overview

JITRA - Just-In-Time Rational refActoring

English title JITRA - Just-In-Time Rational refActoring
Applicant Bavota Gabriele
Number 172479
Funding scheme Project funding (Div. I-III)
Research institution Istituto del Software (SI) Facoltà di scienze informatiche
Institution of higher education Università della Svizzera italiana - USI
Main discipline Information Technology
Start/End 01.09.2017 - 31.08.2021
Approved amount 243'050.00
Show all

Keywords (3)

Software Engineering; Refactoring; Recommendation Systems

Lay Summary (Italian)

Lead
JITRA - Refactoring Razionale e Tempestivo di Sistemi Software
Lay summary

I sistemi software moderni sono tra i costrutti più complessi sviluppati dall'uomo. Essi possono richiedere la progettazione e lo sviluppo di milioni di componenti che interagiscono tra di loro al fine di fornire le funzionalità attese (es. gestire le transazioni monetarie di una banca). Tali componenti sono sviluppati tramite linguaggi di programmazione che rappresentano un'interfaccia tra il programmatore, ovvero colui che crea il software, e la macchina (computer), che esegue le istruzioni contenute nel software. L'insieme di tali istruzioni prende il nome di codice sorgente.

Una volta sviluppato ed entrato in esercizio, un sistema software è soggetto a continue modifiche volte ad adattarlo ai cambiamenti del contesto applicativo in cui è utilizzato (es. l'entrata in vigore di nuove leggi sulle transazioni monetarie estere). Tale fase del ciclo di vita del software è nota come manutenzione, e rappresenta oltre il 90% dei costi sostenuti per i sistemi software. Studi empirici hanno dimostrato che un'alta qualità del codice sorgente può contribuire a ridurre i costi di manutenzione. Il miglioramento della qualità del codice può essere ottenuto tramite operazioni di refactoring, ovvero trasformazioni del codice che non modificano il comportamento del sistema (le funzionalità che esso offre), ma ne migliora la manutenibilità.

Il progetto JITRA si pone l'obiettivo di sviluppare una nuova generazione di tool automatici in grado di (i) raccomandare al programmatore operazioni di refactoring volte ad evitare l'introduzione di problemi di qualità nel codice, e (ii) accompagnare tali raccomandazioni da una spiegazione razionale che le giustifichi.

Direct link to Lay Summary Last update: 21.06.2017

Responsible applicant and co-applicants

Employees

Publications

Publication
Why Developers Refactor Source Code: A Mining-based Study
Pantiuchina Jevgenija, Zampetti Fiorella, Scalabrino Simone, Piantadosi Valentina, Oliveto Rocco, Bavota Gabriele, Di Penta Massimiliano (2020), Why Developers Refactor Source Code: A Mining-based Study, in ACM Transactions on Software Engineering and Methodology, 29(4), 1-30.
On the relationship between bug reports and queries for text retrieval-based bug localization
Mills Chris, Parra Esteban, Pantiuchina Jevgenija, Bavota Gabriele, Haiduc Sonia (2020), On the relationship between bug reports and queries for text retrieval-based bug localization, in Empirical Software Engineering, 25(5), 3086-3127.
Taxonomy of real faults in deep learning systems
Humbatova Nargiz, Jahangirova Gunel, Bavota Gabriele, Riccio Vincenzo, Stocco Andrea, Tonella Paolo (2020), Taxonomy of real faults in deep learning systems, in ICSE '20: 42nd International Conference on Software Engineering, Seoul South KoreaACM, ICSE '20: 42nd International Conference on Software Engineering.
Automatic Identification and Classification of Software Development Video Tutorial Fragments
Ponzanelli Luca, Bavota Gabriele, Mocci Andrea, Oliveto Rocco, Penta Massimiliano Di, Haiduc Sonia, Russo Barbara, Lanza Michele (2019), Automatic Identification and Classification of Software Development Video Tutorial Fragments, in IEEE Transactions on Software Engineering, 45(5), 464-488.
On Learning Meaningful Code Changes Via Neural Machine Translation
Tufano Michele, Pantiuchina Jevgenija, Watson Cody, Bavota Gabriele, Poshyvanyk Denys (2019), On Learning Meaningful Code Changes Via Neural Machine Translation, in 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE), Montreal, QC, CanadaACM, 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE).
Towards Just-In-Time Rational Refactoring
Pantiuchina Jevgenija (2019), Towards Just-In-Time Rational Refactoring, in 2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Com, Montreal, QC, CanadaACM, 2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings.
Automatically Assessing Code Understandability
Scalabrino Simone, Bavota Gabriele, Vendome Christopher, Linares-Vasquez Mario, Poshyvanyk Denys, Oliveto Rocco (2019), Automatically Assessing Code Understandability, in IEEE Transactions on Software Engineering, 1-1.
Listening to the Crowd for the Release Planning of Mobile Apps
Scalabrino Simone, Bavota Gabriele, Russo Barbara, Penta Massimiliano Di, Oliveto Rocco (2019), Listening to the Crowd for the Release Planning of Mobile Apps, in IEEE Transactions on Software Engineering, 45(1), 68-86.
Multi-Objective Optimization of Energy Consumption of GUIs in Android Apps
Linares-Vásquez Mario, Bavota Gabriele, Bernal-Cárdenas Carlos, Penta Massimiliano Di, Oliveto Rocco, Poshyvanyk Denys (2018), Multi-Objective Optimization of Energy Consumption of GUIs in Android Apps, in ACM Transactions on Software Engineering and Methodology, 27(3), 1-47.
A Large-Scale Empirical Study on Linguistic Antipatterns Affecting APIs
Aghajani Emad, Nagy Csaba, Bavota Gabriele, Lanza Michele (2018), A Large-Scale Empirical Study on Linguistic Antipatterns Affecting APIs, in 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME), MadridIEEE, 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME).
Are Bug Reports Enough for Text Retrieval-Based Bug Localization?
Mills Chris, Pantiuchina Jevgenija, Parra Esteban, Bavota Gabriele, Haiduc Sonia (2018), Are Bug Reports Enough for Text Retrieval-Based Bug Localization?, in 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME), MadridIEEE, 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME).
Improving Code: The (Mis) Perception of Quality Metrics
Pantiuchina Jevgenija, Lanza Michele, Bavota Gabriele (2018), Improving Code: The (Mis) Perception of Quality Metrics, in 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME), MadridIEEE, 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME).
Code smells for Model-View-Controller architectures
Aniche Maurício, Bavota Gabriele, Treude Christoph, Gerosa Marco Aurélio, van Deursen Arie (2018), Code smells for Model-View-Controller architectures, in Empirical Software Engineering, 23(4), 2121-2157.
Towards just-in-time refactoring recommenders
Pantiuchina Jevgenija, Bavota Gabriele, Tufano Michele, Poshyvanyk Denys (2018), Towards just-in-time refactoring recommenders, in the 26th Conference, Gothenburg, SwedenACM, ICPC '18: Proceedings of the 26th Conference on Program Comprehension.
Automatically assessing code understandability: How far are we?
Scalabrino Simone, Bavota Gabriele, Vendome Christopher, Linares-Vasquez Mario, Poshyvanyk Denys, Oliveto Rocco (2017), Automatically assessing code understandability: How far are we?, in 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE), Urbana, ILIEEE, 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE).

Collaboration

Group / person Country
Types of collaboration
Florida State University. Prof. Sonia Haiduc United States of America (North America)
- Publication
Università della Svizzera italiana, Prof. Paolo Tonella, Switzerland Switzerland (Europe)
- Publication
TU Delft, Prof. Mauricio Aniche Netherlands (Europe)
- Publication
The College of William and Mary, SEMERU GROUP (Prof. Poshyvanyk) United States of America (North America)
- Publication
University of Molise, Prof. Rocco Oliveto Italy (Europe)
- Publication

Scientific events

Active participation

Title Type of contribution Title of article or contribution Date Place Persons involved
41st ACM/IEEE International Conference on Software Engineering Talk given at a conference Towards Just-In-Time Rational Refactoring 28.05.2019 Montreal, Canada Pantiuchina Jevgenija;
ICSME 2018: International Conference on Software Maintenance and Evolution (ICSME) Talk given at a conference Improving Code: The (Mis)perception of Quality Metrics 23.09.2018 Madrid, Spain Pantiuchina Jevgenija;
ICPC 2018: International Conference on Program Comprehension Talk given at a conference Towards Just-In-Time Refactoring Recommenders 27.05.2018 Gothenburg, Sweden Pantiuchina Jevgenija;


Awards

Title Year
ACM SIGSOFT Distinguished Artifact Awards, for the paper Taxonomy of Real Faults in Deep Learning Systems (ICSE 2020) 2020
Best ERA Paper Award at ICPC 2018, for the paper Towards Just-In-Time Refactoring Recommenders 2018
Distinguished Paper Award at ICSME 2018 for the paper: Are Bug Reports Enough for Text Retrieval-based Bug Localization? 2018
ACM/Sigsoft Distinguished Paper Award at ASE 2017 for the paper: Automatically assessing code understandability: How far are we? 2017

Associated projects

Number Title Start Funding scheme
175513 CCQR - Crowdsourced Code Quality Review 01.09.2018 Project funding (Div. I-III)
183587 SENSOR - SENsible SOftware Refactoring 01.01.2020 Bilateral programmes

Abstract

In the software life-cycle, change is the rule rather than the exception. A key point for sustainable program evolution is to tackle software complexity, making sure that the source code exhibits a high quality thus easing maintenance and evolution activities. Indeed, several empirical studies have provided evidence that low code quality is generally associated with lower productivity, more rework, and more effort for developers. While there is agreement on the need for good software quality, modern IDEs (Integrated Development Environments) only provide basic support to developers for fighting low quality code. Thus, tools have been developed in industry and academia to automatically detect design flaws and, in some cases, to recommend to developers how to remove them via refactoring. However, these tools are not able to prevent the introduction of design flaws. This means that the code has to experience a quality decay (with a consequent increase of maintenance/evolution costs) before state-of-the-art tools can be applied to identify and refactor the design flaws. In addition, existing tools recommend refactoring operations without providing the developer with a "rationale" motivating the need for the recommended refactoring.Our goal is to develop models and techniques serving as the basis for a new generation of intelligent recommendation systems aimed at (i) preventing, via refactoring operations, the introduction of design flaws rather than fixing them once they already affect the system, and (ii) explaining the rationale behind the recommended refactorings. We refer to such a novel perspective on software refactoring as just-in-time rational refactoring. The JITRA project aims at answering the following research questions:Q1 What are the distinctive characteristics of high- and low-quality code? How can we predict which code components are likely to represent a maintainability issue in the near future?Q2 How can we learn from the past the best refactoring strategies to apply in a given context and the rationale behind them? Q3 How can we develop smart recommenders supporting just-in-time refactoring? Can such recommenders provide, besides the recommended refactorings, the rationale behind such recommendations?For the JITRA project we propose to investigate the following research tracks:Modelling Code Quality and Predicting its Decay. The goal is to develop models describing code quality and the typical chain of events leading to its decay. The models will be used to predict code components that are likely to represent a maintainability issue in the near future.Modelling Refactoring Strategies and their Rationale. The goal is to build a large dataset of refactoring strategies applied by developers over the change history of software systems to improve the quality of their code. By mining structured and unstructured data we will model refactoring strategies (what has been changed in the code) together with their rationale (why such changes have been applied).Learning From the Past and Recommend for the Future. We want to exploit the large datasets built in the second track to design and develop a refactoring engine able to learn from the past the best refactoring operations to apply in a given context to avoid code quality decay. The recommended refactorings will be accompanied by a natural language explanation justifying their need.Prototyping & Validation. The code quality prediction models and the refactoring engine developed in the first and in the third tracks will be integrated to periodically release prototypes of a recommender system implementing our vision of just-in-time refactoring. The prototypes will be evaluated through controlled experiments and case studies.
-