You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
4.0 KiB
49 lines
4.0 KiB
\section{Progettazione}
|
|
|
|
Nella fase iniziale di progettazione, invece che iniziare direttamente con la stesura di un \textit{diagramma UML delle Classi} si è ritenuto più comodo sviluppare prima l'idea su carta disegnando un semplice \textit{diagramma ER} (Entity Relationship), mostrato in figura \ref{fig:er}.
|
|
|
|
\begin{figure}[h!]
|
|
\centering
|
|
\includegraphics[scale=0.8]{img/er.pdf}
|
|
\caption{Diagramma ER}
|
|
\label{fig:er}
|
|
\end{figure}
|
|
|
|
Una volta stesa una bozza definitva e chiara sulle entità, relazioni e relativi attributi da definire si è passati a trasporre in una forma più dettagliata e \textit{più comoda} per noi da tenere come riferimento, ossia un \textit{EER} (\textit{Enhaced Entity Relationship}) disegnato con il tool \textit{MySQL Workbench}.
|
|
|
|
\begin{figure}[h!]
|
|
\centering
|
|
\includegraphics[scale=0.9]{img/eer.pdf}
|
|
\caption{Diagramma EER}
|
|
\label{fig:eer}
|
|
\end{figure}
|
|
|
|
\section{Struttura}
|
|
|
|
L'applicazione è strutturata in diversi \textit{package} con ognuno funzionalità specifiche:
|
|
|
|
\begin{itemize}
|
|
\item \textbf{com.mivan.model:} In questo package sono presenti tutte le entità del modello dati dell'applicazione, implementate in classi \textit{Author}, \textit{Book}, \textit{Location}, \textit{Staff}, \textit{User}, \textit{Loan}, \textit{Item} e \textit{Item}. Per gestire la persistenza dei dati di un database relazionere, per tali classi sono state utilizzate le annotazioni delle \textit{JPA} \cite{jpa} (\textit{Java Persistence API}).
|
|
\item \textbf{com.mivan.repository:} In questo package sono implementate le query per l'interrogazione al database.
|
|
\end{itemize}
|
|
|
|
\section{Test}
|
|
|
|
Per verificare l'effettivo funzionamento del programma sono stati sviluppati dei test d'integrazione, posizionati all'interno della cartella del'applicazione \code{mivan/src/test/java/mivan/}.
|
|
\newline
|
|
Le classi presenti nella cartella sono in seguito elencate:
|
|
|
|
\begin{itemize}
|
|
\item \textbf{AuthorTest:} Consente di testare l'\textit{inserimento}, la \textit{modifica} e l'\textit{eliminazione} (implicitamente anche \textit{lettura} nei primi due test) degli \textit{autori}.
|
|
\item \textbf{BookTest:} Consente di testare l'\textit{inserimento}, la \textit{modifica} e l'\textit{eliminazione} (implicitamente anche \textit{lettura} nei primi due test) dei libri.
|
|
\item \textbf{AuthorBookTest:} Consente di testare l'\textit{aggiunta}, la \textit{modifica} e l'\textit{eliminazione} (ed anche \textit{lettura} nei primi due test) degli \textit{autori} ai \textit{libri} e viceversa.
|
|
\item \textbf{LocationTest:} Consente di testare l'\textit{inserimento}, la \textit{modifica} e l'\textit{eliminazione} (implicitamente anche \textit{lettura} nei primi due test) delle \textit{sedi} del sistema bibliotecario.
|
|
\item \textbf{StaffTest:} Consente di testare l'\textit{inserimento}, la \textit{modifica} e l'\textit{eliminazione} (implicitamente anche \textit{lettura} nei primi due test) dello \textit{staff}.
|
|
\item \textbf{UserTest:} Consente di testare l'\textit{inserimento}, la \textit{modifica} e l'\textit{eliminazione} (implicitamente anche \textit{lettura} nei primi due test) degli \textit{utenti}.
|
|
\item \textbf{ItemTest:} Consente di testare l'\textit{aggiunta}, la \textit{modifica} e l'\textit{eliminazione} (implicitamente anche \textit{lettura} nei primi due test) delle singole \textit{unità di libro} (\textit{Item}).
|
|
\item \textbf{LoanTest:} Consente di testare l'\textit{aggiunta}, la \textit{modifica} e l'\textit{eliminazione} (implicitamente anche \textit{lettura} nei primi due test) dei \textit{prestiti}.
|
|
\end{itemize}
|
|
|
|
Come è possibile osservare nell'elenco sovrastante i \textit{JUnit test} volti a verificare la \textit{corretta esecuzione} delle operazioni \textit{CRUD} (\textit{Create, Read, Update, Delete}) è stato fatto uso dell'engine \textit{H2}, il quale consente di eseguire tali operazioni su un \textit{database temporaneo} caricato in memoria (\textit{RAM}).
|
|
|
|
Tale approccio consente \textit{arginare} del tutto il problema di intaccare il database persistente dai dati fittizzi dei test.
|
|
|