This repository was archived by the owner on Mar 12, 2024. It is now read-only.
generated from unibo-disi-cesena/thesis-template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy paththesis-main.tex
92 lines (75 loc) · 4.21 KB
/
thesis-main.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
\documentclass[12pt,a4paper,openright,twoside,table]{book}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\usepackage{disi-thesis}
\usepackage{code-lstlistings}
\usepackage{listings}
\usepackage{notes}
\usepackage{shortcuts}
\usepackage{acronym}
\usepackage{float}
\usepackage[normalem]{ulem}
\useunder{\uline}{\ul}{}
% Commands
\newcommand\tab[1][1cm]{\hspace*{#1}}
\newcommand{\imagesource}[5] {
\begin{figure}[htb]
\centering
\includegraphics[width=#4\linewidth]{#1}
\caption{#3}
{\scriptsize%
Source: \url{#2}}
\label{fig:#5}
\end{figure}
}
\school{\unibo}
\programme{Corso di Laurea in Ingegneria e Scienze Informatiche}
\title{Pacchettizzazione e Distribuzione Automatizzata di Software JVM-Based}
\author{Marco Sternini}
\date{\today}
\subject{Programmazione ad oggetti}
\supervisor{Dott. Danilo Pianini}
\cosupervisor{Dott.sa Martina Baiardi}
\session{III}
\academicyear{2022-2023}
% Definition of acronyms
\acrodef{vm}[VM]{Virtual Machine}
\acrodef{cicd}[CI/CD]{Continuous Integration Continuous Delivery}
\acrodef{cli}[CLI]{Command Line Interface}
\acrodef{jvm}[JVM]{Java Virtual Machine}
\acrodef{jre}[JRE]{Java Runtime Environment}
\acrodef{aur}[AUR]{Arch User Repository}
\acrodef{dsl}[DSL]{Domain-Specific Language}
\acrodef{kiss}[KISS]{Keep It Simple, Stupid}
\acrodef{dry}[DRY]{Don't Repeat Yourself}
\acrodef{jdk}[JDK]{Java Development Kit}
\acrodef{jit}[JIT]{Just in Time}
\acrodef{aot}[AOT]{Ahead of Time}
\mainlinespacing{1.241} % line spacing in mainmatter, comment to default (1)
\begin{document}
\frontmatter\frontispiece
\begin{abstract}
Il software ha assunto un ruolo sempre più pervasivo nella vita quotidiana, portando con sé l'esigenza di sviluppare prodotti di qualità in modo rapido ed efficiente. Nel corso della storia, diverse metodologie di sviluppo si sono susseguite esponendo approcci diversi a un aspetto critico: il ciclo di vita di sviluppo del software (SDLC). Recentemente, è emersa la filosofia ``DevOps", la quale ponendo al centro l'automazione, si prefigge di ridurre i tempi di sviluppo e migliorare la qualità del prodotto finale.
L'obiettivo principale dell'elaborato è la realizzazione di un processo automatizzato per la distribuzione di un software JVM complesso, Alchemist, partendo dalla sua pacchettizzazione e concludendo con la sua pubblicazione all'interno di repository online per consentire il download agli utenti finali. La realizzazione del processo coinvolge due tecnologie ricorrenti nello sviluppo di software open-source, ossia Gradle come strumento di \textit{build automation} e GitHub Actions la piattaforma di \ac{cicd} utilizzata da Alchemist.
L'elaborato illustra l'intero procedimento: dall'analisi, fino al design dei componenti coinvolti e infine il percorso implementativo che ha permesso di sviluppare il processo richiesto. Viene dedicata particolare attenzione alle sfide legate alla pacchettizzazione di software JVM; attraverso un'analisi approfondita degli strumenti disponibili nel panorama attuale, viene individuata la soluzione ottimale per assicurare la creazione di pacchetti di installazione funzionali e consistenti. Infine, si osserva il risultato ottenuto attraverso il confronto dei tempi di esecuzione di diverse versioni della pipeline, per valutare il lavoro svolto ed evidenziare le principali tecniche di ottimizzazione che le API di GitHub Actions consentono di utilizzare.
\end{abstract}
%----------------------------------------------------------------------------------------
\tableofcontents
\listoffigures % (optional) comment if empty
\lstlistoflistings % (optional) comment if empty
%----------------------------------------------------------------------------------------
\mainmatter
\input{chapters/1 - Introduzione.tex}
\input{chapters/2 - Scenario.tex}
\input{chapters/3 - Analisi.tex}
\input{chapters/4 - Design.tex}
\input{chapters/5 - Implementazione.tex}
\input{chapters/6 - Conclusioni.tex}
%----------------------------------------------------------------------------------------
% BIBLIOGRAPHY
%----------------------------------------------------------------------------------------
\backmatter
\nocite{*} % comment this to only show the referenced entries from the .bib file
\bibliographystyle{alpha}
\bibliography{bibliography}
\end{document}