Project

Back to overview

SENSOR - SENsible SOftware Refactoring

English title SENSOR - SENsible SOftware Refactoring
Applicant Bavota Gabriele
Number 183587
Funding scheme Bilateral programmes
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.01.2020 - 31.12.2022
Approved amount 244'250.00
Show all

Keywords (3)

refactoring; software engineering; recommendation systems for developers

Lay Summary (Italian)

Lead
SENSOR - Refactoring di Sistemi Software in Funzione di Diversi Aspetti di Qualità
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à.

Tuttavia, gli approcci di refactoring esistenti in letteratura possono suggerire allo sviluppatore come migliorare la manutenibilità del codice, ma ignorano altre caratteristiche del software che potrebbero essere impattate, anche in modo negativo, dalle operazioni di refactoring. Per esempio, nel contesto di un'applicazione per dispositivi mobili, un aspetto importante da considerare è il consumo energetico dell'applicazione, a causa della limitata autonomia fornita dalla batteria. Il progetto SENSOR mira a sviluppare una nuova generazione di tool automatici di refactoring che siano in grado non solo di migliorare la manutenibilità del codice, ma di considerare allo stesso tempo l'impatto dei refactoring su altri aspetti di qualità, come il consumo energetico, le performance, o la sicurezza garantita dal codice.
Direct link to Lay Summary Last update: 28.10.2019

Responsible applicant and co-applicants

Gesuchsteller/innen Ausland

Employees

Publications

Publication
Automated Identification of On-hold Self-admitted Technical Debt
Maipradit Rungroj, Lin Bin, Nagy Csaba, Bavota Gabriele, Lanza Michele, Hata Hideaki, Matsumoto Kenichi (2020), Automated Identification of On-hold Self-admitted Technical Debt, in 2020 IEEE 20th International Working Conference on Source Code Analysis and Manipulation (SCAM), Adelaide, AustraliaIEEE, 2020 IEEE 20th International Working Conference on Source Code Analysis and Manipulation (SCAM).
Visualizing Evolving Software Cities
Pfahler Federico, Minelli Roberto, Nagy Csaba, Lanza Michele (2020), Visualizing Evolving Software Cities, in 2020 Working Conference on Software Visualization (VISSOFT), Adelaide, AustraliaIEEE, 2020 Working Conference on Software Visualization (VISSOFT).
Evaluating SZZ Implementations through a Developer-informed Oracle
RosaGiuseppe, PascarellaLuca, ScalabrinoSimone, TufanoRosalia, BavotaGabriele, LanzaMichele, OlivetoRocco, Evaluating SZZ Implementations through a Developer-informed Oracle, in Proceedings of the 43rd International Conference on Software Engineering, ICSE 2021, Madrid, SpainACM, 43rd International Conference on Software Engineering (ICSE 2021).

Associated projects

Number Title Start Funding scheme
172479 JITRA - Just-In-Time Rational refActoring 01.09.2017 Project funding (Div. I-III)

Abstract

Software systems are continuously and incrementally changed to meet new requirements, fix defects, or enhance existing features. A key point for sustainable software evolution is high-quality source code. Indeed, several empirical studies have provided evidence that low code quality hinders maintenance and evolution activities. For this reason, tools have been developed in industry and academia to recommend to developers how to improve code quality via refactoring operations (i.e., refactoring recommender systems). Despite the benefits of these tools, they all ignore the heterogeneity of modern software, and the different priorities that non-functional requirements (e.g., maintainability, performance, security, etc.) may have in different contexts. For example, smartphones have limited battery life and require software optimized to reduce the energy consumption, while embedded systems generally come with explicit constraints in terms of memory usage. State-of-the-art refactoring recommender systems target the improvement of code quality from a very narrow perspective, focusing on improving code readability or removing well-known antipatterns or code smells. Basically, they aim at improving code maintainability without considering the possible side effects that the recommended refactorings may have on other, maybe more important, non-functional requirements (e.g., energy consumption in the context of mobile apps). In other words, they do not consider the context in which the refactoring is recommended and, as a consequence, the priority that different non-functional requirements may have.Our goal is to develop models and techniques serving as the basis for a new generation of refactoring recommendation systems aimed at improving code maintainability while considering the specific context in which the refactorings are recommended, without sacrificing other high-priority non-functional requirements. We refer to such a novel perspective on software refactoring as sensible refactoring. The SENSOR project aims at answering the following research questions:Q1 What is the impact of refactoring operations on non-functional requirements? Q2 How can we predict the impact of refactoring operations on non-functional requirements?Q3 How can we define refactoring strategies suitable for different contexts (i.e., types of software) and different non-functional constraints? Q4 How can we develop smart recommenders supporting sensible refactoring? For the SENSOR project we propose to investigate the following research tracks:R1 - Investigating the impact of refactoring on non-functional requirements. The goal is assess the impact of different types of refactoring operations on non-functional requirements (e.g., maintainability, energy consumption, performance, testability) in different contexts (e.g., mobile apps, micro-services, embedded systems, etc.).R2 - Predicting the impact of refactoring operations on non-functional requirements. Knowing the impact of refactoring operations on non-functional requirements (R1), will allow to create models for different contexts predicting the impact of a given refactoring on non-functional requirements.R3 - Creating catalogues of refactorings for different contexts. R3 builds on top of the output of R1 to define catalogues of refactoring operations that can be safely applied in different contexts, in which non-functional requirements have different priorities.R4 - Prototyping & Validation. The prediction models developed in R2 will be integrated to periodically release prototypes of a recommender implementing our vision of sensible refactoring. The developer will be able to prioritize non-functional requirements and find the best suited refactoring solution. The prototypes will be evaluated through controlled experiments and case studies.
-