Viktor: una app mobile Delphi per le elezioni a Bolzano

Click here for the english version

Questo post è dedicato ad uno dei progetti a cui ho lavorato in questi ultimi due mesi: V!ktor (il nome deriva, con licenza poetica, dal latino victor: vincitore) è una applicazione mobile pensata per i presidenti dei seggi elettorali e in particolare per permettere l’invio in tempo reale delle comunicazioni di seggio (avvenuto insediamento del seggio, dati sulle affluenze, dati dello scrutinio).

V!ktor è stata usata con successo nella prima tornata elettorale per l’elezione del Sindaco e del Consiglio Comunale di Bolzano (7-8 Maggio 2016) e verrà usata di nuovo per il prossimo ballottaggio (21-22 Maggio).

Ecco un breve filmato che mostra alcune funzionalità dell’applicazione, a titolo dimostrativo (edit: aggiornato il video che aveva un pezzo di “nero” verso la fine):

Il progetto

Alcune caratteristiche hanno reso questo progetto un caso davvero interessante da un punto di vista professionale. Passiamole in rassegna brevemente:

Tempi ristretti e deadline inamovibile

Dalla commessa alla consegna di V!ktor, sono passati esattamente due mesi. Un arco di tempo veramente ristretto se si pensa anche al fatto che i servizi di backend e la base dati di destinazione erano preesistenti (si è cercato di evitare di impattare troppo duramente sull’infrastruttura esistente).

Inoltre, la deadline era decisamente di quelle inamovibili (la data delle elezioni, ovviamente già fissata) e bisognava tener conto di avere il tempo per effettuare i test, lasciare un po’ di margine agli addetti del Comune per prendere confidenza con l’app e permettere così la formazione verso gli utenti finali (i presidenti di seggio: un gruppo, eterogeneo, di 80 persone).

Usabilità

Proprio il fatto che i tempi fossero ristretti e che l’utenza finale fosse un gruppo di persone sulle cui caratteristiche non avremmo potuto fare assunzioni (esattamente come se fosse destinata al grande pubblico), particolare riguardo è stata usata verso la user experience dell’applicazione. Abbiamo cercato di produrre un’interfaccia utente pulita e minimale, usando poche convenzioni grafiche che fossero coerenti in tutta l’applicazione e cercando di agevolare il più possibile l’inserimento dei dati (praticamente tutti numerici) e la loro validazione.

Ad aggiungere un ulteriore scalino di complessità, l’applicazione sarebbe dovuta essere bilingue (italiano e tedesco) in tutte le sue parti testuali (pulsanti, diciture e messaggi all’utente), con possibilità di passare “al volo” da una lingua all’altra.

Tanto per dare un’ulteriore informazione a margine, la legge non prevede che venga fatta una formazione specifica ai presidenti di seggio quindi è stato possibile organizzare solo delle brevi (un’ora) sessioni di formazione con adesione a base volontaria (e nei giorni immediatamente precedenti alle elezioni).

Enrico Giranio durante una sessione di formazione ai presidenti di seggio

Enrico Giranio durante una sessione di formazione ai presidenti di seggio

Mission-critical

V!ktor ha sostituito completamente i moduli cartacei usati in precedenza (fatta eccezione per il verbale, espressamente non digitalizzabile secondo la normativa vigente). Ciò significa che l’utilizzo (e il funzionamento) dell’applicazione è diventato parte integrante delle procedure di seggio e di conseguenza, particolare attenzione è stata posta circa la stabilità e affidabilità d’uso della stessa. Per esempio gli utenti avrebbero sempre dovuto trovarsi in situazioni gestibili autonomamente, senza dover ricorrere all’assistenza tecnica (comunque approntata, grazie agli operatori di helpdesk del Comune). Mi riferisco per esempio a situazioni in cui una certa comunicazione possa essere oggetto di correzioni o di re-invii e a situazioni in cui la connettività va considerata inaffidabile o mancante.

Questo aspetto è particolarmente significativo se si pensa alla natura dei dati trattati e alla logistica dell’effettuazione degli invii, effettuati quasi sempre ad orari prestabiliti (quindi con elevata probabilità di invio simultaneo da parte della maggioranza dei dispositivi).

Sempre in questo argomento, abbiamo predisposto una modalità di configurazione del singolo dispositivo (configurazione applicativa) che fosse in grado di offrire contemporaneamente una buona sicurezza (evitare cambiamenti accidentali o malevoli nella configurazione da parte di terzi) ma anche una buona flessibilità (garantendo per esempio la sostituzione di un dispositivo difettoso/rotto o il reset da remoto dei dati applicativi in caso di malfunzionamento applicativo grave).

Integrazione con i servizi esistenti

Il Comune di Bolzano, all’avanguardia sotto l’aspetto tecnologico, era già in possesso di una base dati per la gestione delle elezioni comunali e quindi uno sforzo generale del team, guidato dagli esperti di dominio (fra cui il Project Manager, Sergio Sette), è stato rivolto a ridurre l’impatto dovuto all’introduzione dell’applicazione mobile sui sistemi esistenti (al fine di salvaguardare i servizi esistenti fra cui l’infrastruttura per la pubblicazione in tempo reale dei dati sul loro sito web).

Grazie all’esperienza delle persone coinvolte (in particolare Nando Dessena e Paolo Scapin), abbiamo messo a punto una specifica API REST per far dialogare V!ktor con il backend Java (ben incastonato nell’infrastruttura IT del Comune di Bolzano).

Team dislocato

Oggi si parla molto di telelavoro e di team distribuiti: questo progetto è senza dubbio un ottimo esempio di come sia possibile (anche se non banale) realizzare sistemi anche complessi senza imporre che il team sia fisicamente nella stessa stanza.

Un buon utilizzo degli strumenti di collaborazione (documenti condivisi, Skype, calendario ed e-mail) e di gestione di progetto (Git) ha permesso di lavorare bene, anche se geograficamente distanti centinaia di chilometri (Milano, Monza, Trento e Bolzano).

Il team

Devo dire che è stato un vero piacere lavorare in questo team, composto da persone attente e competenti. La sensazione è che ognuno abbia dato una spinta significativa al progetto e che gli sforzi di tutti si siano concretizzati nel buon esito finale. In rigoroso ordine alfabetico (il Project Manager è finito in fondo! 🙂 )

Un ringraziamento speciale è dovuto tutte le persone coinvolte nella logistica del progetto (servizio helpdesk del Comune di Bolzano) che si sono occupati di preparare in tempi da record tutti i dispositivi, dopo aver effettuato vari test di carico massivo e di usabilità.

Tecnologie utilizzate

Delphi 10 Seattle (Enterprise edition)

V!ktor è una applicazione FireMonkey del tutto cross-platform: il progetto è stato realizzato per essere eseguito su un tablet (Android da 8″ nello specifico) ma funziona perfettamente anche in ambiente Windows (dove si sono svolti gran parte dei test applicativi) e può essere facilmente portato su un iPad o su altri dispositivi iOS.

Delphi 10Seattle

FireDAC / SQLite

Per la persistenza dei dati sul dispositivo (necessaria ovviamente per motivi di connettività), abbiamo scelto di avere un database SQLite e abbiamo sfruttato le funzionalità offerte da FireDAC per la manipolazione dei dati del database on-board.

FireDAC

REST Client Library

La comunicazione verso i servizi REST di backend è stata effettuata usando i componenti della REST Client Library (Embarcadero) che si è rivelata molto efficace e semplice da utilizzare.

REST

TFrameStand

Abbiamo strutturato V!ktor usando diversi DataModule e diversi Frames (con alcuni rami di ereditarietà). TFrameStand si è rivelato efficace nel mantenere separati i singoli moduli dell’applicazione e nel rendere visualmente consistente l’applicazione, garantendo anche la prototipazione rapida della UI e l’aggiunta di transizioni animate che hanno reso il risultato finale più gradevole (aumentando sensibilmente la responsività percepita dell’app).

TFrameStand

TFrameStand

Git

Da diversi anni, un buon sistema di versioning dei sorgenti è un elemento imprescindibile di ogni progetto (anche quelli con un singolo sviluppatore!). Git (ormai preferito da chi scrive rispetto a Subversion) ci ha permesso di lavorare simultaneamente sul progetto, anche dove si sono presentate delle sovrapposizioni.

git

Conclusione

Un progetto ambizioso, con una finalità oggettiva interessante e con una deadline ravvicinata è uno degli scenari ideali per uno sviluppatore software. Il piacere di lavorare con un team di persone dalla competenza e professionalità indiscutibile, non ha pari. E la soddisfazione di ottenere un risultato finale decisamente positivo non credo di doverla descrivere oltre 😉

Come Embarcadero MVP, ritengo questo progetto molto significativo per Delphi che ha provato non solo di essere un ambiente di sviluppo in grado di fornire tutte le funzionalità necessarie ma anche che è possibile costruire applicazioni (mobile) reali in tempi molto ristretti.

Andrea Magni

2 thoughts on “Viktor: una app mobile Delphi per le elezioni a Bolzano

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.