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:
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.
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.
18 Polyorb, oltre a soffrire dello stesso problema di scarsa documentazione, soffre di altri problemi, a nostro avviso ben più gravi.
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.
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:
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:
35 protected type Test(parametro : Integer) is \\
38 a : Integer :=
3*parametro; \\
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.
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.