La prototipazione è un’attività fondamentale per “capire facendo”. Lo scopo della prototipazione non è costruire partendo da un progetto definito ma, piuttosto, acquisire dati preziosi per essere poi più consapevoli di prendere la giusta direzione. Alla base delle attività di prototipazione ci sono spesso strumenti low code e no code. Esistono ormai da diversi anni e ultimamente stanno guadagnando sempre più attenzione nella community per la loro immediatezza e velocità. Abbiamo definito meglio le loro qualità e le opportunità che ci sono nel loro utilizzo.
Durante il talk abbiamo approfondito perché è importante prototipare e come questa attività migliora i nostri progetti. In particolare, abbiamo approfondito l’utilizzo AWS Step Functions Workflow Studio, strumento low code prodotto da AWS. Workflow Studio ci permette di imbastire una state machine basata su step functions con uno strumento visuale drag & drop che semplifica moltissimo il nostro lavoro. Abbiamo analizzato cosa lo contraddistingue da altri strumenti e quali sono i suoi punti di forza. Infine siamo passati alla pratica facendo una piccola esercitazione con AWS Step Functions.
14. 1. Disallineamento interno:
non stiamo parlando della stessa cosa
2. Rischio tecnico:
quello che ci immaginiamo non si può fare
3. Rischio di sviluppare la soluzione sbagliata:
quello che sviluppiamo non risolve il problema degli
utenti
Quali rischi?
16. 1) Vogliamo fare una cosa totalmente nuova che i nostri utenti non
conoscono e noi, team, non sappiamo ancora bene definire
Low-fidelity
Focus sulla funzione e sul
ruolo della tecnologia nella
vita dell'utente
17. 2) Ho un sistema esistente e utilizzato che deve essere riscritto o
rappresentato in maniera nuova
High fidelity, Focus è sul look & feel
18. 3) Non abbiamo chiaro se quella funzione può essere realizzata/
abbiamo più opzioni implementative/Stiamo partecipando a una
gara
High fidelity, Focus è sulla tecnologia/e che crea rischio/dubbi
21. Per generare opzioni tra
cui scegliere
Prototipi a Bassa Fedeltà
Per convergere su una
soluzione condivisa
Prototipi ad Alta Fedeltà
immagine da https://dschool.stanford.edu/
Sviluppo e lancio
22. Team interno Utenti & Stakeholder
immagine da https://dschool.stanford.edu/
Sviluppo e lancio
24. ➔ Usare il prototipo look & feel come una specifica
ci deve dare la possibilità di imparare anche in fase sviluppo
➔ Fare prototipi troppo costosi
ci deve dare la possibilità di cambiare completamente idea
➔ Innamorarsi del proprio prototipo
➔ Solo una parte del team prototipa
nessuno deve subire le decisioni, la ownership è condivisa
➔ Avere paura di fare una valutazione con gli utenti
Antipattern
29. "untool di programmazionelow-code / no-code
permettedi costruireun software partendoda
una descrizionevisiva di cosa esso deve
fare, senza necessitàdi saper come scrivere
codice sorgente"
30. Pro:
1. Veloce
2. Non servono competenze specifiche
di programmazione (o ne servono
poche)
3. Tutti possono lo capire
Contro:
1. Non compatibili con tutti i i
processi/strumenti che di solito
rendono un software production
ready: testing, git, ci/cd, pull request
2. Meno flessibili rispetto al codice
Caratteristiche
31. Low Code:
➔ Destinati a velocizzare i developer
➔ Serve scrivere poco codice
➔ Hanno più flessibilità
No Code:
➔ Destinate ad abilitare tutti a
produrre un risultato
➔ Non serve saper scrivere codice
➔ Hanno meno flessibilità
Differenze
32. App
Es Amplify Studio
Workflow
Es Workflow Studio
Varie Tipologie
API
Es Application Composer
E molte altre in base al contesto di utilizzo (MAX MSP, scratch, Zapier, n8n, ...)
33. Gli strumentilow-code che si focalizzanosui
processi di integrazionesono i più interessanti
per fare i prototipi di implementazione
➔ Ci permettono di costruire qualcosa su cui ricevere feedback
velocemente e in maniera economica
➔ Focus sul cosa e non sul come
35. (def.) workflow (“flusso di lavoro”) è un modello
rappresentativo di un processo attraverso una serie di
operazioni, eseguite una dopo l'altra, in un flusso logico e
temporale predefinito
L'utente inserisce
una frase
Analisi del
sentiment
È
buono
?
SUCCESS
FAIL
37. Sappiamo tutti cosa è AWS?
AmazonWeb Services,Inc. è un'azienda statunitensedi proprietà del gruppo
Amazon, chefornisceservizi di cloud computingsu un'omonimapiattaforma
on demand.
38. ➔ Permettono di modellare un workflow di servizi AWS
➔ Allo stesso modo possono essere lanciate con: API Gateway,
lambda, altri servizi AWS
➔ Risponde al sistema di Identity e Access Management (IAM)
Amazon
➔ Stiamo parlando di uno strumento "professional"
https://aws.amazon.com/it/step-functions/
Step Function
39.
40.
41. ➔ Basato su JSON
➔ Definisce il workflow in maniera dichiarativa
➔ È una specifica Amazon
➔ Il workflow è sempre una macchina a stati finiti
➔ ogni "blocco" del workflow può occuparsi fare un'azione
(Task) o gestire il flusso (Flow)
https://states-language.net/spec.html
Amazon States Language
42. ➔ Task: esegue un'operazione in aws (volendo anche esternamente)
https://states-language.net/spec.html
Le azioni AKA i task
Altro ServizioAWS
( es DetectSentiment )
43. 1. Choice: crea delle biforcazioni logiche nel
workflow in base al condizioni date
2. Parallel: permette di eseguire più
processi parallelamente
3. Map: itera sugli elementi di un'array
4. Pass: passa semplicemente lo stato o
aggiunge dati hardcoded
5. Wait: causa un delay
6. Succeed: termina il workflow in maniera
positiva
7. Fail: termina il workflow in maniera
negativa
https://states-language.net/spec.html
Gestione del Flow
44. Amazon States Language
{
"Comment": "Esempio di step function",
"StartAt": "DetectSentiment",
"States": {
"DetectSentiment": {
"Type": "Task",
"Parameters": {
"LanguageCode": "it",
"Text.$": "$.message"
},
"Resource": "arn:aws:states:::aws-sdk:comprehend:detectSentiment",
"Next": "Buono o Cattivo"
},
"Buono o Cattivo": {
"Type": "Choice",
"Choices": [...]
46. ➔ Possono esserci errori come per esempio un Task fallisce o va
in timeout, oppure proprio nella definizionedella step
function, es. vado a prendere una variabile che non c'è
nell'input
➔ Abbiamo "Retry" per riprovare a eseguire, e "Catch" per
gestire l'errore con un cambio di stato
➔ Uno degli aspetti più potenti delle step function
https://states-language.net/spec.html
Gestione degli Errori
47. Amazon States Language
"Catch": [
{
"ErrorEquals": [ "States.TaskFailed" ],
"Next": "Fail"
"ResultPath: "$.error" // messaggio di errore
}
],
"Retry": [
{
"ErrorEquals": [ "States.Timeout" ],
"BackoffRate": 2, // moltiplica il delay ogni volta che ritenta
"IntervalSeconds": 1,
"MaxAttempts": 3
}
]