Università degli studi di Catania
ReFrame: un framework di refactoring per supportare gli sviluppatori nel miglioramento e nell'ottimizzazione del codice sorgente
Abstract
dc:descriptionPer sfruttare meglio la potenza di calcolo dell'hardware moderno, molti programmi sequenziali possono essere modificati per incapsulare istruzioni parallele. Le esecuzioni simultanee hanno il potenziale per migliorare significativamente le prestazioni complessive dell'applicazione, riducendo sia il tempo di esecuzione che i requisiti di risorse. Tuttavia, trasformare manualmente un'applicazione sequenziale in una versione parallela è un'impresa complessa, che comporta un'ispezione meticolosa di diverse righe di codice che potrebbe risultare noiosa e dispendiosa in termini di tempo, un'analisi approfondita delle dipendenze dei dati per preservare la correttezza delle trasformazioni e un equilibrio del carico di lavoro tra i thread per ottimizzare l'aumento delle prestazioni. In questo contesto, propongo quattro distinti approcci di refactoring per supportare gli sviluppatori in questo compito complesso, fornendo una serie di strumenti completamente automatici su misura per diversi scenari, che comprendono l'analisi della dipendenza dai dati e dal controllo, la parallelizzazione delle chiamate di metodo, la trasformazione dei cicli for in pipeline di flusso e abbinamento di algoritmi per ottimizzazioni parallele. È necessaria una suite di test efficace per preservare il codice sorgente da modifiche involontarie durante il refactoring. Tali modifiche possono comportare la modifica, l'aggiunta o l'eliminazione di frammenti di codice, con conseguente scarsa coerenza tra il codice rifattorizzato e la suite di test. Per affrontare questo problema, propongo inoltre due approcci automatici per generare casi di test, soddisfacendo sia le classi che i metodi. Tutte e sei le proposte sono integrate in un framework denominato ReFrame, che ha il duplice scopo di convalidare questi approcci con scenari reali e fornire un'interfaccia unificata e modulare per gli sviluppatori. Sono stati condotti test approfonditi per dimostrare la correttezza e l'efficienza di questi approcci, rivelando risultati ottimali in ciascuna delle attività correlate.
Degree
thesis:*- Grantor dc:publisher
- Università degli studi di Catania
- Year dc:date
- 2024
Author and committee
dc:creator, dc:contributor.*- Author dc:creator
-
- MIDOLO, ALESSANDRO
- Contributors dc:contributor
-
- TRAMONTANA, EMILIANO ALESSIO
Subjects
dc:subject × 15Rights
dc:rights- Statement dc:rights
-
- info:eu-repo/semantics/openAccess
- license:PUBBLICO - Pubblico con Copyright
- license uri:iris.PUB02
- Language dc:language
- ita
Identifiers
dc:identifier.*- Handle dc:identifier
- https://hdl.handle.net/20.500.11769/657969
- OAI identifier oai:identifier
- oai:www.iris.unict.it:20.500.11769/657969