Skip to content
Snippets Groups Projects
Commit 1714292e authored by Lorenzo Ferron's avatar Lorenzo Ferron
Browse files

Concluso capitolo su "Introduzione al lavoro"

Aggiunta struttura per programma in Lua. Creato un contatore 0-padded in Lua
per gli \item nell'ambiente enumerate del pacchetto enumitem.
parent 995cd4a4
No related branches found
No related tags found
No related merge requests found
...@@ -9,4 +9,4 @@ ...@@ -9,4 +9,4 @@
\NomeRelatore{Tutore interno}{\empty} \NomeRelatore{Tutore interno}{\empty}
\relatore{Prof.~Alessio \textsc{Bottrighi}} \relatore{Prof.~Alessio \textsc{Bottrighi}}
\sedutadilaurea{\textsc{Anno~Accademico} 2019/20} \sedutadilaurea{\textsc{Anno~Accademico} 2019/20}
\logosede{assets/img/UPO.png} \logosede{assets/img/upo-logo.png}
\ No newline at end of file \ No newline at end of file
...@@ -35,9 +35,11 @@ twoside ...@@ -35,9 +35,11 @@ twoside
\SetLanguageKeys{italian}{indentfirst=false} \SetLanguageKeys{italian}{indentfirst=false}
\usepackage{microtype} \usepackage{enumitem, microtype}
\AfterEndPreamble{\input{preamble/my-macros.tex}} \AfterEndPreamble{%
\input{preamble/my-macros.tex}
}
\usepackage[autostyle,italian=guillemets]{csquotes} \usepackage[autostyle,italian=guillemets]{csquotes}
\usepackage[% \usepackage[%
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
Abbiamo già detto che lo scopo del lavoro è stato quello di realizzare una piattaforma per l'e-commerce. Abbiamo già detto che lo scopo del lavoro è stato quello di realizzare una piattaforma per l'e-commerce.
Questo termine, entrato nell'uso quotidiano, rende l'idea di ciò che si voleva ottenere, ma non rende giustizia al lavoro svolto, anzi lo minimizza. Questo termine, entrato nell'uso quotidiano, rende l'idea di ciò che si voleva ottenere, ma non rende giustizia al lavoro svolto, anzi lo minimizza.
Per questo motivo, prima di trattare gli aspetti concreti del lavoro, sarà necessaria una panoramica riguardo i requisiti funzionali e non, desiderati. Per questo motivo, prima di trattare gli aspetti concreti del lavoro, sarà necessaria una panoramica riguardo i requisiti funzionali desiderati.
In particolare nel corso del capitolo, oltre ai requisiti, si prenderanno in esame le motivazioni che hanno portato alla dismissione del precedente sistema informatico, la metodologia utilizzata per lo sviluppo del software e le modalità di lavoro. In particolare nel corso del capitolo, oltre ai requisiti, si prenderanno in esame le motivazioni che hanno portato alla dismissione del precedente sistema informatico, la metodologia utilizzata per lo sviluppo del software e le modalità di lavoro.
...@@ -47,7 +47,7 @@ Il perché è presto detto: comodità. La necessità era uno strumento funzional ...@@ -47,7 +47,7 @@ Il perché è presto detto: comodità. La necessità era uno strumento funzional
\section{La metodologia Scrum} \section{La metodologia Scrum}
Il processo di sviluppo del \textenglish{software} è stato affrontato da solo, pertanto si richiedeva un modello di sviluppo agile. Il processo di sviluppo del \textenglish{software} è stato affrontato da solo, pertanto si è adottato un modello di sviluppo agile.
La scelta verteva su \textenglish{eXtreme Programming} (XP) o Scrum, ma ricadde su quest'ultimo. La scelta verteva su \textenglish{eXtreme Programming} (XP) o Scrum, ma ricadde su quest'ultimo.
Le motivazioni riguardavano l'assenza della programmazione a coppie e lo sviluppo con test iniziali. Le motivazioni riguardavano l'assenza della programmazione a coppie e lo sviluppo con test iniziali.
...@@ -56,7 +56,7 @@ Nella versione iniziale la lista di questi elementi può essere derivata da stor ...@@ -56,7 +56,7 @@ Nella versione iniziale la lista di questi elementi può essere derivata da stor
L'uso delle storie utente si è dimostrato particolarmente efficace -- le persone trovano più semplice relazionarsi con uno scenario d'uso in cui potrebbe trovarsi un utente del sistema, anziché con un tradizionale documento di requisiti o con diagrammi dei casi d'uso. L'uso delle storie utente si è dimostrato particolarmente efficace -- le persone trovano più semplice relazionarsi con uno scenario d'uso in cui potrebbe trovarsi un utente del sistema, anziché con un tradizionale documento di requisiti o con diagrammi dei casi d'uso.
Inoltre possono essere utili per facilitare la comunicazione tra sviluppatore e committente, coinvolgendo maggiormente quest'ultimo nella fase di deduzione dei requisiti. Inoltre possono essere utili per facilitare la comunicazione tra sviluppatore e committente, coinvolgendo maggiormente quest'ultimo nella fase di deduzione dei requisiti.
Una volta che il committente avrà indicato l'ordine di priorità per le storie, potrà essere creato il primo \textenglish{sprint backlog} selezionando gli elementi dal \textenglish{product backlog} e completandolo entro uno \textenglish{sprint}. Una volta che il committente avrà indicato l'ordine di priorità per le storie, potrà essere creato il primo \textenglish{sprint backlog} selezionando gli elementi dal \textenglish{product backlog} e completandolo entro uno \textenglish{sprint}.
Per esigenze di tempo, ma anche mantenere aggiornato il committente, si è fissata la durata dello \textenglish{sprint} a una settimana, al termine della quale avvenivano incontri ``a distanza'' dove si mostrava il lavoro fin lì svolto. Per esigenze di tempo, ma anche per mantenere aggiornato il committente, si è fissata la durata dello \textenglish{sprint} a una settimana, al termine della quale avvenivano incontri ``a distanza'' dove si mostrava il lavoro fin lì svolto.
Questi momenti di incontro erano anche occasione per revisionare il \textenglish{product backlog} ed eventualmente cambiare la priorità delle storie utente o variare i requisiti. In \Cref{fig:scrum} è illustrato il processo Scrum, per approfondimenti si veda \cite{Sommerville2017}. Questi momenti di incontro erano anche occasione per revisionare il \textenglish{product backlog} ed eventualmente cambiare la priorità delle storie utente o variare i requisiti. In \Cref{fig:scrum} è illustrato il processo Scrum, per approfondimenti si veda \cite{Sommerville2017}.
\begin{figure}[t] \begin{figure}[t]
\centering \centering
...@@ -67,3 +67,56 @@ Questi momenti di incontro erano anche occasione per revisionare il \textenglish ...@@ -67,3 +67,56 @@ Questi momenti di incontro erano anche occasione per revisionare il \textenglish
\subsection{I requisiti} \subsection{I requisiti}
Concludiamo il capitolo dedicando questo paragrafo ai requisiti, che saranno ripresi in dettaglio nel \Cref{lavoro-svolto} per analizzarne le eventuali problematiche e l'idea implementativa.
Di seguito sono espressi i requisiti funzionali come requisiti dell'utente, cioè con un linguaggio naturale e un alto livello di astrazione.
\begin{enumerate}
[%
label=RF\arabiczeropad{*}{2},
format=\bfseries\upshape\sffamily
]
\item Ogni prodotto deve avere uno \textenglish{Stock Keep Unit} (SKU): un identificativo univoco all'interno del magazzino.
Inoltre deve avere un nome, un'immagine, una descrizione, un prezzo base da listino e una categoria o sottocategoria di appartenenza, ad esempio per poter esprimere ``un tavolo in acciaio'' o ``una sedia in acciaio''.
\item Ogni prodotto deve mostrare una media delle proprie valutazioni complessive.
Inoltre l'utente deve essere avvertito qualora il prodotto sia recentemente stato aggiunto.
\item Il prodotto può essere personalizzato a piacere dal cliente, la personalizzazione ne determina l'aumento o meno del prezzo.
Anche in questo caso deve essere possibile una visualizzazione del prodotto personalizzato che si vorrà acquistare.
\item Per ogni prodotto, se disponibile, deve essere acquistabile ogni suo ricambio.
\item La registrazione di un nuovo cliente richiede \textit{solamente} un'\textenglish{e-mail} e una password.
Al termine della procedura l'\textenglish{account} deve essere attivato dall'apposito link inviato all'\textenglish{e-mail} del nuovo \textit{potenziale} acquirente.
\item Qualora l'account non venga attivato l'utente, pure essendo registrato, non avrà alcun privilegio rispetto ad uno non registrato.
\item Il cliente deve poter, in un secondo momento, completare il proprio profilo.
\item Il \textenglish{form} di completamento del profilo utente richiede nome, cognome e codice fiscale, per poter intestare la fattura, inoltre dal codice fiscale è possibile estrarre la data di nascita, eventualmente utile per promozioni mirate basate sul compleanno. Inoltre deve essere richiesto l'inserimento di almeno un indirizzo e un numero di telefono, da poter fornire al corriere. Tutti i dati, compresa l'\textenglish{e-mail}, devono poter essere modificabili.
\item L'accesso all'account utente deve poter essere effettuabile attraverso l'\textenglish{e-mail} e la password fornita in fase di registrazione.
\item Il prodotto deve poter essere visibile prima di entrare di fatto in commercio, in tal modo l'utente interessato, registrato o meno, potrà fare richiesta di notifica via \textenglish{e-mail}, che sarà inviata non appena il prodotto diventerà acquistabile. Un discorso analogo vale per i prodotti esauriti, ma non ritirati. In quest'ultimo caso il prodotto non sarà acquistabile e il prezzo non sarà visibile.
\item L'utente, registrato o non, potrà effettuare ricerche o sfogliare il catalogo dei prodotti, in cui verrà mostrato il prezzo base da listino. Alla selezione di un articolo o alla visualizzazione del carrello al cliente deve essere mostrato l'imponibile tassato.
\item Il cliente deve essere informato qualora la quantità del prodotto scenda sotto un numero prefissato di unità.
\item Prima di procedere all'acquisto, è logico che il profilo utente risulti completo in ogni sua parte.
\item\label{item:payment} L'acquisto di un prodotto avviene per mezzo di carta di credito oppure PayPal.
\item La ricerca nel catalogo può includere termine contenuti sia nel nome dei prodotti sia nelle loro descrizioni.
\item Qualsiasi utente, registrato o non, può visualizzare le recensioni lasciate da altri. In particolare deve poter ordinarle per ``più recenti'' oppure per gradimento crescente o decrescente.
\item L'utente può recensire un prodotto da lui non acquistato.
\item L'inserimento di una recensione richiede, qualora non sia già stato fatto, il completamento dell'account.
\item Nel completare il \textenglish{form} per la recensione l'utente potrà specificare opzionalmente un titolo, una valutazione complessiva e, ovviamente, la recensione stessa.
\item Le categorie devono avere un nome e deve essere possibile indicare all'utente le categorie create di recente.
\end{enumerate}
\ No newline at end of file
userdata = userdata or {}
--- Add leading zeros to a number.
--- @param digits string: number of digits
--- @param number string: a number to be zero padded
--- @return string: a number zero padded
function userdata:zeropadding(digits, number)
assert(tonumber(digits),
"invalid input: " .. digits .. " is not a number")
assert(tonumber(number),
"invalid input: " .. number .. " is not a number")
return string.format("%0" .. digits .. "d", number)
end
return userdata
\ No newline at end of file
\NewDocumentCommand\prog{s m}{\textsf{\bfseries#2}% \NewDocumentCommand\prog{s m}{\textsf{\bfseries#2}%
\IfBooleanTF{#1}{}{\index{programma!#2@\textsf{\bfseries#2}}}} \IfBooleanTF{#1}{}{\index{programma!#2@\textsf{\bfseries#2}}}}
\NewDocumentCommand\file{s m}{\texttt{#2}% \NewDocumentCommand\file{s m}{\texttt{#2}%
\IfBooleanTF{#1}{}{\index{file!#2@\texttt{#2}}}} \IfBooleanTF{#1}{}{\index{file!#2@\texttt{#2}}}}
\ No newline at end of file
\makeatletter
\AddEnumerateCounter{\arabiczeropad}{\@arabiczeropad}{0}
\def\arabiczeropad#1#2{\expandafter\@arabiczeropad\csname c@#1\endcsname{#2}}
\def\@arabiczeropad#1#2{%
\directlua{
local u = require("luacode.util.zeropadding")
tex.print(u:zeropadding("#2", "\@arabic#1"))
}
}
\makeatother
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment