Modified concurrency, distribution and technological part of relation.
[toni-reis.git] / doc / analisi_supporto_tecnologico.tex
blobfc22cee10469b328eb2ff00dbb118f7ccbf8858b
1 \chapter{Analisi del supporto tecnologico}
2 Come supporto tecnologico è stata utilizzata la suite \textit{gnat} in versione GPL.
3 In particolare i pacchetti utilizzati sono stati:
4 \begin{itemize}
5 \item Gnat: il compilatore per il linguaggio \textit{Ada}.
6 \item Xmlada: il modulo per interagire con i documenti in formato XML.
7 \item Gtkada: modulo per creare interfacce grafiche con le note librerie GTK.
8 \item Polyorb: implementazione di Ada Distributed System Annex.
9 \end{itemize}
10 \section{Documentazione}
11 Il principale problema, che riguarda tutte le tecnologie utilizzate, è stata la scarsa documentazione disponibile. La poca documentazione è inoltre pensata
12 per utenti che conoscono bene i problemi di concorrenza e distribuzione, dando molte conoscenze per scontate. Questo, specialmente per le fasi iniziali del progetto, è stato un grosso problema: è stato necessario molto
13 tempo quindi solo per capire la documentazione disponibile.
15 Per quanto riguarda Xmlada questo problema è ancora più marcato: la documentazione è completamente assente,a meno di un piccolo tutorial, e rimanda alle specifiche del W3C, abbastanza dispersive e verbose.
17 \section{Polyorb}
18 Polyorb, oltre a soffrire dello stesso problema di scarsa documentazione, soffre di altri problemi, a nostro avviso ben più gravi.
19 \begin{itemize}
20 \item non è implementato il \textit{marshalling} e \textit{unmarshalling} dei record: non è possibile passarli come parametro, nè utilizzarli in una shared passive.
21 Il problema è che questo bug non è documentato. Solo nella fase di codifica è stato possibile accorgersi di questo problema. E' stato necessario modificare la progettazione del componente \textit{Monitor} e della parte relativa alla gestione
22 delle statistics del componente \textit{Race}.
23 \item non è possibile compilare i sorgenti in modalità debug: funzionalità che sarebbe molto utile specialmente per le stampe di debug.
24 \end{itemize}
26 \section{Limitazioni delle tecnologie }
27 \subsection{Limitazioni del linguaggio}
28 Molte delle limitazioni dovute al linguaggio sono giustificate dal punto di vista logico: questo non è un grosso problema perchè una volta capito il significato
29 delle varie unità di distribuzione, non è difficile adattare il codice per rispettare questi vincoli.
30 Ci sono però altre caratteristiche del linguaggio che lasciano più perplessi:
31 \begin{itemize}
32 \item per l'inizializzazione dei campi dati all'interno delle risorse protette si possono usare i parametri del costruttore, ma non effettuare operazioni matematiche su di essi.
33 Ad esempio non è legale il seguente codice:
34 \texttt{
35 protected type Test(parametro : Integer) is \\
36 ...\\
37 private \\
38 a : Integer := 3*parametro; \\
39 ...\\
40 end Test;
42 \end{itemize}
44 \subsection{Limitazioni GTKAda}
45 La libreria \textit{gtkada} sono un implementazione delle librerie graficge GTK in ada. I problemi riscontrati non riguardano l'implementazione ada, ma in generale le librerie GTK.
46 \begin{itemize}
47 \item probemi nella gestione di eventi provenienti da diversi \textit{thread}: è necessario infatti utilizzare delle chiamate di basso livello a \textit{Gdk.Threads} per non incorrere in errori. Non dovrebbe essere necessario, e
48 le librerie dovrebbero essere \textit{thread-safe}. Altre librerie grafiche (ad esempio le molto diffuse \textit{QT}) non soffrono di queste problematiche. La scelta sulle \textit{GTK} è stata però obbligata poichè il port
49 delle \textit{QT} al linguaggio \textit{ada} non è ad uno stato definitivo.
50 \end{itemize}