Modern software development prefers fast and frequent changes rather than a detailed and fixed design. However, the continuous evolution of a software system can lead to a deterioration of its structural quality, making the code harder to understand and maintain. This thesis presents novel approaches based on data dependence and taint analysis to assist code inspection and automatically suggest complex refactoring opportunities, thus achieving modularity. Automatic tools are also proposed, which leverage API calls and data flows between different parts of the application to automatically give insights on the responsibility of each component. Then, these tools suggest a better decomposition of code inside concern cohesive modules, thus enhancing code modularity. Along with modularity, the proposed approaches and tools are effective to deal with the issues of platform dependence and data security. On the one hand, platform dependence can make porting difficult when spread widely on the application; on the other hand, one may need to guarantee code robustness against data leaks. Both issues may force the code to be modified, thus evolved. Both these aspects related to software evolution have been addressed by using the same concepts adopted to enhance code modularity, thus giving effective tools helping the developer in such issues. Furthermore, the proposed support can be used both during the development of new software components or to analyse and improve legacy applications.

DATA DEPENDENCE AND TAINT ANALYSIS TO FOSTER SOFTWARE EVOLUTION

FORNAIA, ANDREA FRANCESCO
2017

Abstract

Modern software development prefers fast and frequent changes rather than a detailed and fixed design. However, the continuous evolution of a software system can lead to a deterioration of its structural quality, making the code harder to understand and maintain. This thesis presents novel approaches based on data dependence and taint analysis to assist code inspection and automatically suggest complex refactoring opportunities, thus achieving modularity. Automatic tools are also proposed, which leverage API calls and data flows between different parts of the application to automatically give insights on the responsibility of each component. Then, these tools suggest a better decomposition of code inside concern cohesive modules, thus enhancing code modularity. Along with modularity, the proposed approaches and tools are effective to deal with the issues of platform dependence and data security. On the one hand, platform dependence can make porting difficult when spread widely on the application; on the other hand, one may need to guarantee code robustness against data leaks. Both issues may force the code to be modified, thus evolved. Both these aspects related to software evolution have been addressed by using the same concepts adopted to enhance code modularity, thus giving effective tools helping the developer in such issues. Furthermore, the proposed support can be used both during the development of new software components or to analyse and improve legacy applications.
30-nov-2017
Inglese
Prof. Emiliano Tramontana
TRAMONTANA, EMILIANO ALESSIO
RUSSO, Giovanni
Università degli studi di Catania
Catania
File in questo prodotto:
File Dimensione Formato  
Final_Andrea_Fornaia_thesis_PDFA.pdf

accesso aperto

Dimensione 3.59 MB
Formato Adobe PDF
3.59 MB Adobe PDF Visualizza/Apri

I documenti in UNITESI sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/20.500.14242/77639
Il codice NBN di questa tesi è URN:NBN:IT:UNICT-77639