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 Nov 30).
DATA DEPENDENCE AND TAINT ANALYSIS TO FOSTER SOFTWARE EVOLUTION
FORNAIA, ANDREA FRANCESCO
2017-11-30
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.File | Dimensione | Formato | |
---|---|---|---|
Final_Andrea_Fornaia_thesis_PDFA.pdf
accesso aperto
Tipologia:
Tesi di dottorato
Licenza:
PUBBLICO - Pubblico con Copyright
Dimensione
3.59 MB
Formato
Adobe PDF
|
3.59 MB | Adobe PDF | Visualizza/Apri |
I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.