<filename>glossario.tex

%**************************************************************
% Acronimi
%**************************************************************
\renewcommand{\acronymname}{Acronimi e abbreviazioni}
%**************************************************************
% Glossario
%**************************************************************
%\renewcommand{\glossaryname}{Glossario}

\newglossaryentry{api}
{
    name=API,
    text=API,
    sort=api,
    description={insieme di procedure disponibili al programmatore, di solito raggruppate a formare un set di strumenti specifici per l'espletamento di un determinato compito all'interno di un certo programma. La finalità è ottenere un'astrazione, di solito tra l'hardware e il programmatore o tra software a basso e quello ad alto livello semplificando così il lavoro di programmazione}
}

\newglossaryentry{cluster}
{
    name=Cluster,
    text=cluster,
    sort=cluster,
    description={(indicato anche come computer cluster) insieme di macchine connesse tra loro che lavorano in parallelo.
    L'utilizzo di questi sistemi permette di distribuire un'elaborazione molto complessa tra le varie macchine, aumentando la potenza di calcolo del sistema e/o garantendo una maggiore disponibilità di servizio, a prezzo di un maggior costo e complessità di gestione dell'infrastruttura: per essere risolto, il problema che richiede molte elaborazioni, viene infatti scomposto in sottoproblemi separati i quali vengono risolti ciascuno in parallelo su tutti i nodi che compongono il cluster}
}

\newglossaryentry{web app}
{
	name=Web App,
	text=web app,
	sort=web app,
	description={sistema di tipo client-server in cui l'interfaccia utente e la logica client-side viene eseguita in un browser web}
}

\newglossaryentry{SDLC}
{
	name=Software Development Lifecycle,
	text=Software Development Lifecycle,
	sort=SDLC,
	description={processo di divisione del lavoro di sviluppo software in fasi distinte per migliorare la progettazione, la gestione del prodotto e la gestione del progetto}
}

\newglossaryentry{MVP}
{
	name=Minimum Viable Product,
	text=Minimum Viable Product,
	sort=MVP,
	description={prototipo più semplificato possibile che è possibile presentare ad una cerchia di possibili clienti (early adopter). È il mezzo con cui testare e validare le idee e il prodotto stesso, senza sprecare tempo e soldi a sviluppare il prodotto completo, per poi constatare che quel prodotto non interessa alla clientela}
}

\newglossaryentry{Bash}
{
	name=Bash,
	text=Bash,
	sort=Bash,
	description={shell testuale del progetto GNU usata nei sistemi operativi Unix e Unix-like, specialmente in GNU/Linux. Si tratta di un interprete di comandi che permette all'utente di comunicare col sistema operativo attraverso una serie di funzioni predefinite, o di eseguire programmi e script.\\		
	Bash è in grado di eseguire i comandi che le vengono passati, utilizzando la redirezione dell'input e dell'output per eseguire più programmi in cascata in una pipeline software, passando l'output del comando precedente come input del comando successivo.
	Oltre a questo, essa mette a disposizione un semplice linguaggio di scripting nativo che permette di svolgere compiti più complessi, non solo raccogliendo in uno script una serie di comandi, ma anche utilizzando variabili, funzioni e strutture di controllo di flusso}
}

\newglossaryentry{Git}
{
	name=Git,
	text=Git,
	sort=Git,
	description={Git è un software di controllo versione distribuito utilizzabile da interfaccia a riga di comando, creato da <NAME> nel 2005 con lo scopo di essere un semplice strumento per facilitare lo sviluppo del kernel Linux, e diventato poi uno degli strumenti di controllo versione più diffusi al mondo}
}

\newglossaryentry{GitLab}
{
	name=GitLab,
	text=GitLab,
	sort=GitLab,
	description={GitLab è un manager di \textit{repository} Git basato su interfaccia web, che include anche funzioni quali una wiki per ogni progetto e un sistema di tracciamento issue. Esso è stato sviluppato da GitLab Inc. ed è distribuito gratuitamente con licenza \textit{open source}}
}

\newglossaryentry{IDE}
{
	name=IDE,
	text=IDE,
	sort=IDE,
	description={(in lingua inglese \textit{Integrated Development Environment} ovvero IDE, anche \textit{integrated design environment} o \textit{integrated debugging environment}, rispettivamente ambiente integrato di progettazione e ambiente integrato di \textit{debugging}) è un software che, in fase di programmazione, aiuta i programmatori nello sviluppo del codice sorgente di un programma. Spesso l’IDE aiuta lo sviluppatore segnalando errori di sintassi del codice direttamente in fase di scrittura, oltre a tutta una serie di strumenti e funzionalità di supporto alla fase di sviluppo e \textit{debugging}}
}

\newglossaryentry{Single Customer View}
{
	name=Single Customer View,
	text=Single Customer View,
	sort=Single Customer View,
	description={rappresentazione olistica del cliente che integra tutti i dati e gli eventi del cliente, e consente di arrivare ad un’interpretazione completa e contestuale dei suoi comportamenti indipendentemente dai canali utilizzati}
}

\newglossaryentry{Web Service}
{
	name=Web Service,
	text=Web Service,
	sort=Web Service,
	description={sistema software in grado di mettersi al servizio di un applicazione comunicando su di una medesima rete tramite il protocollo HTTP. Un Web service consente quindi alle applicazioni che vi si collegano di usufruire delle funzioni che mette a disposizione}
}

\newglossaryentry{HDFS}
{
	name=HDFS,
	text=HDFS,
	sort=HDFS,
	description={Hadoop Distributed File System è un file system distribuito, portabile e scalabile scritto in Java per il framework Hadoop. Un cluster in Hadoop tipicamente possiede un singolo NameNode (su cui risiedono i metadati dei file) e un insieme di DataNode (su cui risiedono, in blocchi di dimensione fissa, i file dell'HDFS)}
}

\newglossaryentry{Diagramma di Gantt}
{
	name=Diagramma di Gantt,
	text=Diagramma di Gantt,
	sort=Diagramma di Gantt,
	description={strumento di supporto alla gestione dei progetti, così chiamato in ricordo dell'ingegnere statunitense <NAME> Gantt (1861-1919), che si occupava di scienze sociali e che lo ideò nel 1917. Tale diagramma è usato principalmente nelle attività di \textit{project management}, ed è costruito partendo da un asse orizzontale - a rappresentazione dell'arco temporale totale del progetto, suddiviso in fasi incrementali (ad esempio: giorni, settimane, mesi) - e da un asse verticale - a rappresentazione delle mansioni o attività che costituiscono il progetto}
}

\newglossaryentry{daemon}
{
	name=Daemon,
	text=daemon,
	sort=daemon,
	description={programma eseguito in background, cioè senza che sia sotto il controllo diretto dell'utente, tipicamente fornendo un servizio all'utente. Spesso vengono avviati al boot del sistema per rispondere a richieste di rete, attività hardware o altri programmi eseguendo alcuni task}
}

\newglossaryentry{single point of failure}
{
	name=Single Point Of Failure,
	text=single point of failure,
	sort=SPOF,
	description={(SPOF) parte del sistema, hardware o software, il cui malfunzionamento può portare ad anomalie o addirittura alla cessazione del servizio da parte del sistema.
	Solitamente si cerca di evitare ogni SPOF nel momento della progettazione, soprattutto in sistemi pensati specificatamente per essere attivi costantemente, avvalendosi di componenti ridondanti che ne garantiscono il funzionamento anche in caso di guasto}
}

\newglossaryentry{JAR}
{
	name=Java Archive,
	text=JAR,
	sort=JAR,
	description={formato di file utilizzato per aggregare più classi Java e associare i metadati e le risorse (testo, immagini, etc.) in un unico file per agevolare la distribuzione}
}

\newglossaryentry{CSV}
{
	name=Comma-separated values,
	text=CSV,
	sort=CSV,
	description={formato di file basato su file di testo utilizzato per l'importazione ed esportazione di una tabella di dati. ogni riga della tabella (o record della base dati) è normalmente rappresentata da una linea di testo, che a sua volta è divisa in campi (le singole colonne) separati da un apposito carattere separatore, ciascuno dei quali rappresenta un valore}
}

\newglossaryentry{Java JDBC}
{
	name=Java JDBC,
	text=Java JDBC,
	sort=Java JDBC,
	description={connettore (driver) per database che consente l'accesso e la gestione della persistenza dei dati sulle basi di dati da qualsiasi programma scritto in linguaggio Java, indipendentemente dal tipo di DBMS utilizzato. L'architettura di JDBC prevede l'utilizzo di un \textit{driver manager}, che espone alle applicazioni un insieme di interfacce standard e si occupa di caricare a \textit{runtime} i driver opportuni per gestire gli specifici DBMS. Le applicazioni Java utilizzano le JDBC \gls{api} per parlare con il JDBC \textit{driver manager}, mentre il \textit{driver manager} usa le JDBC driver \gls{api} per parlare con i singoli driver che pilotano i DBMS specifici}
}

\newglossaryentry{JSON}
{
	name=JavaScript Object Notation,
	text=JSON,
	sort=JSON,
	description={nell’ambito della programmazione web, JSON, acronimo di JavaScript Object Notation, è un formato adatto all’interscambio di dati fra applicazioni \textit{client-server}}
}