Skip to content

Commit

Permalink
feat: complete planning
Browse files Browse the repository at this point in the history
  • Loading branch information
giacomocavalieri committed Jan 4, 2023
1 parent de8f143 commit 3fcf197
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 12 deletions.
28 changes: 28 additions & 0 deletions report/appendices/scoping/terza-riunione/user-stories.tex
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ \section*{I1: Pianificazione della produzione}
\midrule
\textbf{Priorità} & 5 \\
\textbf{Story points} & 20 \\
\textbf{N. persone} & 2 \\
\bottomrule
\end{tabularx}
\label{user-story:i1-e1-u1}
Expand All @@ -54,6 +55,7 @@ \section*{I1: Pianificazione della produzione}
\midrule
\textbf{Priorità} & 3 \\
\textbf{Story points} & 20 \\
\textbf{N. persone} & 2 \\
\bottomrule
\end{tabularx}
\label{user-story:i1-e1-u2}
Expand Down Expand Up @@ -89,6 +91,7 @@ \section*{I1: Pianificazione della produzione}
\midrule
\textbf{Priorità} & 5 \\
\textbf{Story points} & 1 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i1-e2-u1}
Expand All @@ -107,6 +110,7 @@ \section*{I1: Pianificazione della produzione}
\midrule
\textbf{Priorità} & 3 \\
\textbf{Story points} & 1 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i1-e2-u2}
Expand All @@ -125,6 +129,7 @@ \section*{I1: Pianificazione della produzione}
\midrule
\textbf{Priorità} & 1 \\
\textbf{Story points} & 3 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i1-e2-u3}
Expand All @@ -143,6 +148,7 @@ \section*{I1: Pianificazione della produzione}
\midrule
\textbf{Priorità} & 5 \\
\textbf{Story points} & 5 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i1-u1}
Expand All @@ -163,6 +169,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 3 \\
\textbf{Story points} & 4 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-u1}
Expand Down Expand Up @@ -198,6 +205,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 5 \\
\textbf{Story points} & 6 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e1-u1}
Expand All @@ -216,6 +224,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 4 \\
\textbf{Story points} & 6 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e1-u2}
Expand All @@ -234,6 +243,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 3 \\
\textbf{Story points} & 5 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e1-u3}
Expand All @@ -252,6 +262,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 5 \\
\textbf{Story points} & 15 \\
\textbf{N. persone} & 3 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e1-u4}
Expand Down Expand Up @@ -287,6 +298,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 5 \\
\textbf{Story points} & 7 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e2-u1}
Expand All @@ -305,6 +317,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 4 \\
\textbf{Story points} & 6 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e2-u2}
Expand Down Expand Up @@ -340,6 +353,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 5 \\
\textbf{Story points} & 8 \\
\textbf{N. persone} & 2 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e3-u1}
Expand All @@ -358,6 +372,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 3 \\
\textbf{Story points} & 6 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e3-u2}
Expand Down Expand Up @@ -393,6 +408,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 5 \\
\textbf{Story points} & 20 \\
\textbf{N. persone} & 4-5 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e4-u1}
Expand All @@ -411,6 +427,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 1 \\
\textbf{Story points} & 7 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e4-u2}
Expand All @@ -429,6 +446,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 4 \\
\textbf{Story points} & 2 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e4-u3}
Expand All @@ -447,6 +465,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 2 \\
\textbf{Story points} & 5 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e4-u4}
Expand All @@ -465,6 +484,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 5 \\
\textbf{Story points} & 3 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e4-u5}
Expand All @@ -483,6 +503,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 5 \\
\textbf{Story points} & 7 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e4-u6}
Expand All @@ -501,6 +522,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 5 \\
\textbf{Story points} & 12 \\
\textbf{N. persone} & 3 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e4-u7}
Expand All @@ -519,6 +541,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 5 \\
\textbf{Story points} & 15 \\
\textbf{N. persone} & 3 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e4-u8}
Expand All @@ -537,6 +560,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 3 \\
\textbf{Story points} & 5 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e4-u9}
Expand All @@ -556,6 +580,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 4 \\
\textbf{Story points} & 10 \\
\textbf{N. persone} & 2 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e4-u10}
Expand All @@ -575,6 +600,7 @@ \section*{I2: Ordini dei clienti}
\midrule
\textbf{Priorità} & 3 \\
\textbf{Story points} & 13 \\
\textbf{N. persone} & 2 \\
\bottomrule
\end{tabularx}
\label{user-story:i2-e4-u11}
Expand All @@ -595,6 +621,7 @@ \section*{I3: Gestione del magazzino}
\midrule
\textbf{Priorità} & 3 \\
\textbf{Story points} & 5 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i3-u1}
Expand All @@ -614,6 +641,7 @@ \section*{I3: Gestione del magazzino}
\midrule
\textbf{Priorità} & 3 \\
\textbf{Story points} & 3 \\
\textbf{N. persone} & 1 \\
\bottomrule
\end{tabularx}
\label{user-story:i3-u2}
Expand Down
33 changes: 21 additions & 12 deletions report/chapters/planning.tex
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
\chapter{Planning}\label{ch:planning}

\section{Joint Project Planning Session}\label{sec:JPPS}
\todo[inline]{Dire quante ne abbiamo fatte, molto probabilmente saranno più di una}
Complessivamente si sono svolte tre riunioni di \emph{Joint Project Planning} con il committente. In seguito sono riportati i partecipanti delle riunioni e ciò che è stato deciso opportunamente motivato.

\subsection{Partecipanti}
\todo[inline]{descrivere i partecipanti}
\begin{itemize}
\item \todo[inline]{tutto il team di atedeg}
\item I membri del core team di Atedeg che hanno già preso parte alle riunioni precedenti: Giacomo, Linda (facilitatore e product owner), Nicolas e Nicolò
\item Un altro sviluppatore di Atedeg
\item Raffaella (project sponsor e process owner dei processi relativi alla pianificazione della produzione)
\item Gianluca (process owner dei processi aziendali relativi a gestione ordini e magazzino)
\item Simone (process owner dei processi aziendali relativi alla produzione)
\end{itemize}

\subsection{Kick off}
\subsection{Kick-off}
La prima riunione si avvia con la presentazione dei partecipanti e un breve riassunto di quanto discusso nelle riunioni precedenti. In particolare Raffaella ha spiegato come il progetto si inserisce nella strategia aziendale e quali sono gli obiettivi che si prefigge: efficientare il processo di gestione degli ordini e automatizzare la pianificazione della produzione aumentando la produttività dei macchinari del caseificio.
Dopodiché è avvenuta la presentazione del team di Atedeg.

Expand All @@ -25,19 +28,25 @@ \subsubsection{Validazione e prioritizzazione dei requisiti}
La stessa scala di priorità è stata usata anche per prioritizzare le user story all'interno della loro rispettiva epoca.
Vista l'esigenza del committente di avere un sistema (anche minimo) che permettesse di raccogliere e gestire gli ordini entro settembre, si è deciso di comune accordo di dare la massima priorità all'epica \href{user-story:i2-e4}{I2-E4}, con le altre correlate a seguire.

\subsubsection{Stima della quantità di lavoro}
\subsubsection{Stima delle risorse}
La quantità di lavoro di ciascuna user story è stata stimata assegnandovi un valore scalare adimensionale: gli \emph{story points}.
Per stimare gli story points è stato usato il metodo \emph{Delphi}: questa tecnica consiste nel chiedere a ciascun membro del team di stimare la quantità di lavoro di una user story, e poi di fare dei nuovi round tenendo conto delle stime e motivazioni degli altri membri del team. Questo procedimento viene ripetuto finché non si converge a un risultato comune o non si raggiunge un numero di round prefissato.
Per assegnare gli story points è stato usato il metodo \emph{Delphi}: questa tecnica consiste nel chiedere a ciascun membro del team di stimare la quantità di lavoro di una user story, e poi di fare dei nuovi round tenendo conto delle stime e motivazioni degli altri membri del team. Questo procedimento viene ripetuto finché non si converge a un risultato comune o non si raggiunge un numero di round prefissato.
In caso di mancata convergenza, si è deciso di usare la media delle stime come valore finale.

Inoltre, non è stato immediatamente realizzato il \emph{project network diagram} per non imporre una linearizzazione nello sviluppo del progetto che essenzialmente avrebbe fatto perdere i vantaggi nell'utilizzare Scrum. Per questo motivo, si è stabilito di realizzare uno \emph{sprint network diagram} all'inizio di ciascuno sprint per poter permettere al project manager di pianificare al meglio l'uso delle risorse e dei tempi al suo interno.
Indicativamente un punteggio di 5-6 story points indica una user story semplice che può essere completata in un paio di giornate lavorative, mentre un punteggio superiore indica user story più complesse che potenzialmente potrebbero richiedere anche l'intero sprint; un esempio di tale user story è la \href{user-story:i1-e1-u1}{I1-E1-U1}.

Una volta stimata la complessità delle user stories è stata adottata nuovamente la Delphi technique per stimare il numero di persone ideale da assegnare a ciascuna storia. Per farlo si è tenuto in considerazione quanto ciascun task potesse essere parallelizzabile cercando di assegnare più sviluppatori a user story complesse.

Infine, non è stato immediatamente realizzato il \emph{project network diagram} per non imporre una linearizzazione nello sviluppo del progetto che essenzialmente avrebbe fatto perdere i vantaggi nell'utilizzare Scrum. Per questo motivo, si è stabilito di realizzare uno \emph{sprint network diagram} all'inizio di ciascuno sprint per poter permettere al project manager di pianificare al meglio l'uso delle risorse e dei tempi al suo interno.

\subsubsection{Analisi dei rischi}
In seguito sono stati analizzati in dettaglio i rischi riportati nel POS; in particolare, per ciascuno è stata stabilità la probabilità che si verifichi, l'impatto ed eventuali strategie di mitigazione. Il documento risultante è riportato in \Cref{app:analisi-rischi}.

- Working session
- rischi e piani di mitigazione
- possibili assenze di membri del team
- un membro del team scompare per la conferenza
- Consenso
\subsubsection{Gestione del cash flow}
Per stimare i costi del progetto il team fa affidamento alla propria esperienza con progetti passati. Infatti, avendo già esperienza con la realizzazione di portali e-commerce e gestionali il team ha stimato di poter concludere il progetto in 4 sprint di due settimane ciascuno. D'altro canto la porzione relativa all'integrazione e alla pianificazione della produzione rappresentano la complessità maggiore e si è stimato che possano impiegare 2 interi sprint.
Quindi, nelle stime riportate al cliente viene data come durata indicativa del progetto 6 sprint, rendendo comunque chiaro il fatto che il progetto potrebbe richiedere più tempo per essere terminato.

Ogni dipendente di Atedeg viene pagato \EUR{25} l'ora e la settimana lavorativa è di 32 ore. Per terminare il progetto nei limiti prestabiliti si è scelto di assegnarvi 5 sviluppatori full-time. Dunque, ciascuno sprint avrà un costo di \EUR{8\,500} (tenendo conto anche dei costi delle utenze e delle licenze software) e il progetto complessivamente potrebbe costare indicativamente \EUR{51\,000}.

Il committente ha accettato il progetto con un contratto a corpo dove, al termine di ogni sprint di due settimane viene corrisposta la cifra di \EUR{8\,500}.
Inoltre, il committente ha accettato di pagare un anticipo di \EUR{4\,000} per coprire i costi di avvio del progetto.
1 change: 1 addition & 0 deletions report/relazione.sty
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
\usepackage{setspace}
\usepackage{latexsym}
\usepackage{geometry}
\usepackage{eurosym}
\usepackage[backend=biber, sorting=none, style=numeric-comp, defernumbers=true]{biblatex}
\usepackage[\thesislang]{todonotes}
\usepackage{hyperref}
Expand Down
3 changes: 3 additions & 0 deletions report/relazione.tex
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@
\input{chapters/introduzione}
\input{chapters/scoping}
\input{chapters/planning}

\todo[inline]{Mettere il network diagram all'inizio di ogni sprint}

\input{appendices}
\input{bibliography}
\end{document}

0 comments on commit 3fcf197

Please sign in to comment.