Updated doc and logo

develop
Meliurwen 5 years ago
parent e76fa5882d
commit bed1c25749
  1. 12
      README.md
  2. 66
      assets/logo.svg
  3. 4
      doc/chapters/01_introduzione.tex
  4. 40
      doc/chapters/02_progetto.tex
  5. 1
      doc/chapters/03_esecuzione.tex
  6. BIN
      doc/img/logo.png

@ -13,11 +13,17 @@
L'applicazione oggetto di questo assigment è **_MiVan_**. L'applicazione oggetto di questo assigment è **_MiVan_**.
Si tratta di un'applicazione che rende possibile _prenotare_ ed _acquisire_ biglietti per il cinema. Essa mette a disposizione informazioni sulla programmazione, orari, locandine e sinossi. Grazie alla connessione diretta ai sistemi di biglietteria è possibile visualizzzare la mappa dei posti con lo stato di occupazione in tempo reale e selezionare i posti preferiti dall'utente. L'iscrizione è obbligatoria per permettere la _modifica_ e la _cancellazione_ delle prenotazioni, servizio richiesto da molti utenti. Si tratta di un'applicazione che gestisce _prestiti di libri_ di un sistema bibliotecario _con una o più sedi_. Essa, oltre ad essere in grado di gestire i prestiti, è anche in grado di _gestire i libri_, la loro _posizione_, lo _staff_ che amministra i prestiti e gli utenti che ne fanno richiesta.
Allo stato attuale l'applicazione è stata pensata per essere utilizzata nell'area metropolitana di _Brescia_ e _Novara_, con un target iniziale ristretto agli utenti delle principali sale di proiezione delle rispettive città. Grazie a questa applicazione è possibile _creare_, _visualizzzare_, _modificare_ e _rimuovere_ in tempo reale lo stato di prestito dei libri. I prestiti sono descritti da una _data di inizio_, _di fine_, uno _stato_, un _libro_, un _utente_ ed un _operatore_. Si ritiene che sia importante sottolineare che durante la progettazione si è presa la decisione che un prestito possa consistere in _esattamente una unità di libro_, in maniera tale che questo livello di granularità permetta all'utente, in caso di prestito contemporaneo di più libri, di _non_ doverli restituire tutti in blocco.
A seconda della trazione che potrebbe ricevere una volta lanciata, si potrà valutare un'eventuale _espansione_ del territorio coperto e delle sale interessate. Altra caratteristica è la separazione tra concetto di libro ed "unità di libro", questo per gestire in maniera efficiente il caso molto frequente in cui il sistema bibliotecario possieda più copie dello stesso libro; nella nostra implementazione ogni singola unità (Item) corrisponderebbe in maniera univoca all'unità fisica corrispondente.
Una feature degna di nota (che andrebbe a soddisfare il requisito del self-loop) è la possibilità di sapere se nel sistema bibliotecario è disponibile il sequel (ammesso che esista) di un determinato libro.
Allo stato attuale l'applicazione è stata pensata per essere utilizzata nell'area metropolitana di _Brescia_ e _Novara_, con un _target iniziale_ ristretto agli utenti delle _sedi del sistema blibliotecario comunale_ delle rispettive città.
A seconda della trazione che potrebbe ricevere una volta lanciata, si potrà valutare un'eventuale _espansione_ del territorio coperto e degli enti (sia pubblici che privati) interessati.
## Membri del Gruppo ## Membri del Gruppo

@ -1,66 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="136.7896mm"
height="137.04852mm"
viewBox="0 0 136.7896 137.04852"
version="1.1"
id="svg8"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="logo.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="269.87145"
inkscape:cy="206.81528"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1918"
inkscape:window-height="1056"
inkscape:window-x="0"
inkscape:window-y="22"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Livello 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-29.917799,-56.73715)">
<path
style="opacity:1;fill:#f54700;fill-opacity:1;fill-rule:nonzero;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none"
d="m 34.966589,193.1029 c -1.8269,-0.75105 -3.52092,-2.30787 -4.41546,-4.05787 l -0.63333,-1.239 V 125.23207 62.658116 l 0.71508,-1.355553 c 0.91447,-1.733528 2.77999,-3.37349 4.62105,-4.062318 1.44237,-0.539661 1.56733,-0.540591 63.406634,-0.471844 l 61.961407,0.06888 1.32292,0.608369 c 1.66877,0.767422 3.15184,2.189008 4.05775,3.889547 l 0.70475,1.322917 v 62.573956 62.57396 l -0.70475,1.32292 c -0.84465,1.58554 -2.30325,3.02523 -3.92546,3.87455 l -1.19063,0.62337 -14.85041,0.0794 -14.85041,0.0794 -0.68558,-3.65123 c -0.92669,-4.93528 -0.92503,-4.92224 -1.2424,-9.73664 -0.5117,-7.76224 0.54801,-17.53241 2.43143,-22.417 0.48765,-1.26471 0.70612,-2.18925 0.57297,-2.42483 -0.11835,-0.20941 -1.22721,-1.44703 -2.46414,-2.75028 -3.32748,-3.50588 -4.3499,-4.77869 -7.27185,-9.05268 -3.96144,-5.79448 -8.33723,-14.07234 -10.76941,-20.37292 -1.41682,-3.67029 -2.81819,-7.53002 -3.26616,-8.99583 -0.2446,-0.80037 -0.60858,-1.93146 -0.80884,-2.51354 -3.07069,-8.92515 -6.42925,-27.226244 -7.52611,-41.010422 -0.235517,-2.959833 -0.350327,-3.504166 -0.823097,-3.902605 -0.72311,-0.609414 -1.98543,-0.601723 -2.31501,0.0141 -0.14044,0.262418 -0.38158,1.959059 -0.53585,3.770312 -1.54071,18.088518 -4.95572,34.744455 -9.81602,47.875485 -2.26781,6.12692 -5.284211,12.97269 -7.024181,15.94148 -0.49943,0.85216 -0.90806,1.59269 -0.90806,1.64563 0,0.12851 -2.08242,3.64478 -3.48496,5.88452 -2.27923,3.63973 -5.74768,7.99029 -9.16713,11.49855 l -1.978193,2.02956 0.94274,2.86523 c 1.746063,5.30681 2.359393,9.69353 2.379693,17.02045 0.008,2.83766 -0.13369,6.58812 -0.31455,8.33437 -0.31074,3.00027 -1.42291,9.14577 -1.75129,9.6771 -0.0898,0.14524 -5.981823,0.24223 -14.489323,0.2385 l -14.33803,-0.006 z m 14.66267,-18.12916 v -5.55625 h -5.55625 -5.55625 v 5.55625 5.55625 h 5.55625 5.55625 z m 107.950001,0 v -5.55625 h -5.55625 -5.55625 v 5.55625 5.55625 h 5.55625 5.55625 z M 49.629259,155.12999 v -5.55625 h -5.55625 -5.55625 v 5.55625 5.55625 h 5.55625 5.55625 z m 107.950001,0 v -5.55625 h -5.55625 -5.55625 v 5.55625 5.55625 h 5.55625 5.55625 z M 49.629259,135.28624 v -5.55625 h -5.55625 -5.55625 v 5.55625 5.55625 h 5.55625 5.55625 z m 107.950001,0 v -5.55625 h -5.55625 -5.55625 v 5.55625 5.55625 h 5.55625 5.55625 z M 49.629259,115.70707 v -5.55625 h -5.55625 -5.55625 v 5.55625 5.55625 h 5.55625 5.55625 z m 107.950001,0 v -5.55625 h -5.55625 -5.55625 v 5.55625 5.55625 h 5.55625 5.55625 z M 49.629259,95.863321 v -5.556246 h -5.55625 -5.55625 v 5.556246 5.556249 h 5.55625 5.55625 z m 107.950001,0 v -5.556246 h -5.55625 -5.55625 v 5.556246 5.556249 h 5.55625 5.55625 z M 49.629259,76.019575 v -5.55625 h -5.55625 -5.55625 v 5.55625 5.55625 h 5.55625 5.55625 z m 107.950001,0 v -5.55625 h -5.55625 -5.55625 v 5.55625 5.55625 h 5.55625 5.55625 z"
id="path41"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.6 KiB

@ -3,7 +3,7 @@
\begin{figure}[H] \begin{figure}[H]
\centering \centering
\begin{subfigure}[b]{0.680\linewidth} \begin{subfigure}[b]{0.680\linewidth}
\includegraphics[width=\linewidth]{img/logo.png} \includegraphics[width=\linewidth]{img/logo.png}
\caption{Logo dell'applicazione} \caption{Logo dell'applicazione}
\end{subfigure} \end{subfigure}
\label{fig:coffee} \label{fig:coffee}
@ -46,7 +46,7 @@ L'applicazione oggetto di questo assigment è \textbf{MiVan}.
\newline \newline
Si tratta di un'applicazione che gestisce prestiti di libri di un sistema bibliotecario con una o più sedi. Essa, oltre ad essere in grado di gestire i prestiti, è anche in grado di gestire i libri, la loro posizione, lo staff che amministra i prestiti e gli utenti che ne fanno richiesta. Si tratta di un'applicazione che gestisce prestiti di libri di un sistema bibliotecario con una o più sedi. Essa, oltre ad essere in grado di gestire i prestiti, è anche in grado di gestire i libri, la loro posizione, lo staff che amministra i prestiti e gli utenti che ne fanno richiesta.
\newline \newline
Grazie a questa applicazione è possibile creare, visualizzzare, modificare e rimuovere in tempo reale lo stato di prestito dei libri. I prestiti sono descritti da una data di inizio, di fine, uno stato, un libro, un utente ed un operatore. Si ritiene che sia importante sottolineare che durante la progettazione si è presa la decisione che un prestito possa consistere in esattamente una unità di libro, in maniera tale che questo livello di granularità permetta all'utente, in caso di prestito contemporaneo di più libri, di non dover restituirli in blocco. Grazie a questa applicazione è possibile creare, visualizzzare, modificare e rimuovere in tempo reale lo stato di prestito dei libri. I prestiti sono descritti da una data di inizio, di fine, uno stato, un libro, un utente ed un operatore. Si ritiene che sia importante sottolineare che durante la progettazione si è presa la decisione che un prestito possa consistere in esattamente una unità di libro, in maniera tale che questo livello di granularità permetta all'utente, in caso di prestito contemporaneo di più libri, di non doverli restituire tutti in blocco.
\newline \newline
Altra caratteristica è la separazione tra concetto di libro ed "unità di libro", questo per gestire in maniera efficiente il caso molto frequente in cui il sistema bibliotecario possieda più copie dello stesso libro; nella nostra implementazione ogni singola unità (Item) corrisponderebbe in maniera univoca all'unità fisica corrispondente. Altra caratteristica è la separazione tra concetto di libro ed "unità di libro", questo per gestire in maniera efficiente il caso molto frequente in cui il sistema bibliotecario possieda più copie dello stesso libro; nella nostra implementazione ogni singola unità (Item) corrisponderebbe in maniera univoca all'unità fisica corrispondente.
\newline \newline

@ -1 +1,41 @@
\section{Progettazione}
Nella fase iniziale di progettazione, invece che iniziare direttamente con la stesura di un diagramma UML delle Classi si è ritenuto più comodo sviluppare prima l'idea su carta disegnando un semplice diagramma ER (Entity Relationship).
\begin{figure}[h!]
\centering
\includegraphics[scale=0.6]{img/logo.png}
\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 più comoda per noi da tenere come riferimento, ossia un EER (Enhaced Entity Relationship) disegnato con il tool MySQL Workbench.
\begin{figure}[h!]
\centering
\includegraphics[scale=0.6]{img/logo.png}
\caption{Diagramma EER}
\label{fig:eer}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[scale=0.6]{img/logo.png}
\caption{Diagramma delle Classi}
\label{fig:classi}
\end{figure}
\section{Struttura}
L'applicazione è strutturata in diversi 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 come mostrate in figura \ref{fig:classi}. Per gestire la persistenza dei dati di un database relazionere, per tali classi sono state utilizzate le annotazioni delle JPA (Java Persistence API).
\item \textbf{com.mivan.repository:} In questo package sono implementate le query per l'interrogazione al database.
\item \textbf{com.mivan.exception:} In questo package sono contenute le classi che gestiscono le eccezioni generate dalle interrogazioni 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 \code{mivan/src/test/java/}.\newline
Per i JUnit test volti a verificare la corretta esecuzione delle operazioni CRUD (Create, Read, Update, Delete) è stato fatto uso dell'engine H2, il quale consente di eseguire tali operazioni su un database temporaneo caricato in memoria (RAM). Tale approccio consente arginare del tutto il problema di intaccare il database persistente dai dati fittizzi dei test.

@ -2,7 +2,6 @@
L'applicazione è stata sviluppata, eseguita e testata su sistemi UNIX Like, in particolare sulla distribuzione GNU/Linux Debian.\newline L'applicazione è stata sviluppata, eseguita e testata su sistemi UNIX Like, in particolare sulla distribuzione GNU/Linux Debian.\newline
Per questo questo motivo le istruzioni che seguono saranno incentrate su questo ambiente, ma dovrebbero valere per tutti gli altri sistemi.\newline Per questo questo motivo le istruzioni che seguono saranno incentrate su questo ambiente, ma dovrebbero valere per tutti gli altri sistemi.\newline
\newline
Per rendere la propria macchina pronta ad eseguire l'applicazione è necessario installare i pacchetti \code{openjdk} (la versione 8 è sufficiente) ed \code{mvn}; in caso di Debian o derivate si usa il seguente comando: Per rendere la propria macchina pronta ad eseguire l'applicazione è necessario installare i pacchetti \code{openjdk} (la versione 8 è sufficiente) ed \code{mvn}; in caso di Debian o derivate si usa il seguente comando:
\newline \newline
\begin{lstlisting}[style=BashInputStyle] \begin{lstlisting}[style=BashInputStyle]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 99 KiB

Loading…
Cancel
Save