Skip to content

Instantly share code, notes, and snippets.

@mtorchiano
Last active April 30, 2020 20:14
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save mtorchiano/eb6405915aa668b1fa059ccc24e7876c to your computer and use it in GitHub Desktop.
Save mtorchiano/eb6405915aa668b1fa059ccc24e7876c to your computer and use it in GitHub Desktop.
Uno sguardo di sistema sulla "Contact Tracing App"

Uno sguardo di sistema sulla "Contact Tracing App"

Versione 1.4 - 26 Aprile 2020 - Marco Torchiano @mtorchiano

Premessa

Un argomento caldo in questo periodo sui cui si sono visti molti scontri, non solo tra le persone della strada ma anche tra esperti è la famosa (o famigerata) App di Contact Tracing.

In seguito ai lavori di una commissione di esperti (task force dati) il commissario straordinario Arcuri ha annunciato la scelta di una app, tra quelle proposte in riposta ad una bando congiunto di tre ministeri ( Telemedicina e data analysis ).

La app verrà sviluppata dalla società Bending Spoons e il codice sorgente del sistema di contact tracing sarà rilasciato con licenza Open Source MPL 2.0.

Uno sguardo di sistema

Sebbene buona parte delle osservazioni si siano concentrate su aspetti tecnologici e di impatto sulla privacy, il tema può essere analizzato sotto diverse prospettive.

Si tratta di un sistema complesso e come tale comporta articolati bilanciamenti di vantaggi e svantaggi su molte dimensioni.

Provo ad elencare alcune delle dimensioni che dalla mia personale esperienza, da un punto di vista di Sistemi Informativi e Ingegneria del Software, mi paiono degne di nota:

  • modelli epidemiologici
  • tecnologia
  • qualità dei dati
  • sviluppo software
  • adozione ed efficacia
  • processi e logistica di supporto
  • impatto sociale e giuridico

Queste dimensioni e la loro discussione che segue non vogliono rappresentare una critica ma bensì degli spunti per una riflessione più ampia all'interno della società civile.

L'obiettivo finale è quello di far prendere coscienza della complessità del problema, del fatto che non esiste una soluzione perfetta, sebbene alcune soluzioni siano meno imperfette di altre.

Si tratta di inquadrare il problema in un contesto articolato, dove la risposta alle domande su un sistema complesso deve essere quella del buon ingegnere: "dipende!". Dipende dal punto di vista e da quale compromesso tra tali punti di vista si voglia scegliere.

Modelli epidemiologici

Ci sono diversi modelli che descrivono le dinamiche del contagio. Quello base è il modello SIR (Susceptible, Infected, Recovered), in cui il parametro $R_0$ indica l'evoluzione del contagio (quanti individui vengono contagiati da ciascun individuo infetto).

Recenti studi hanno stimato l'effetto di un contact tracing digitale. In estrema sintesi, ipotizzando un auto-isolamento immediato, sarebbe sufficiente un livello di adozione della App pari al 60% per garantire un regresso dell'epidemia (in termini SIR, $R_0$ viene abbassato sotto la soglia critica pari a 1).

L'articolo citato considera diversi livelli di efficacia nel contenimento delle persone infette, ma non approfondisce ulteriormente. Quindi le stime sono ragionevoli a patto che sotto gli altri punti di visto il sistema sia quasi ideale.

Tecnologia

Sono state sviluppate diverse tecnologie per il "contact tracing" digitale ed a livello internazionale sono disponibili alcuni standard (quello più rilevante è probabilmente DP-3T ) di cui la App dovrà tenere conto. Inoltre è stato annunciato lo sviluppo di nuove funzionalità inserite direttamente nei sistemi operativi di Apple e Google.

Questi approcci si basano sullo scambio di piccoli messaggi anonimi tramite BTLE (Bluetooth Low Energy) in modo da poter risalire a chi è stato in contatto con soggetti che si rivelano infetti.

L'uso di altre tecnologie di geolocalizzazione, come GPS o le celle telefoniche, oltre a essere difficilmente conciliabili con la privacy per come è concepita all'interno dell'UE, sono poco precisi, particolarmente al chiuso.

Qualità dei dati

Buona parte dei ragionamenti fatti assume che i dati raccolti tramite le app e poi sfruttati per identificare potenziali contagi siano perfetti. Nella pratica, e lo sa bene chi lavora quotidianamente con grandi moli di dati, la qualità dei dati rappresenta un limite critico.

Usando lo standard ISO/IEC 25012:2008 e, a titolo esemplificativo, escludendo le caratteristiche di qualità che dipendono dai sistemi che le elaborano, considerando solo le caratteristiche intrinseche dei dati:

  • incompletezza (mancano dati su alcuni contatti o in alcuni periodi)
  • incoerenza (dati diversi suggeriscono contatti diversi)
  • mancato aggiornamento (tra app e tra app e sistemi centrali)
  • accuratezza (dei singoli dati, dei tempi, delle distanze)
  • credibilità (per la presenza di fonti di dati non accreditate)

Senza una valutazione e stima della qualità dei dati è impossibile sapere qual'è il livello di affidabilità dell'applicazione e la sua efficacia nel ridurre l'epidemia.

Sviluppo software

Uno degli aspetti spesso trascurati nello sviluppo del software è rappresentato, al di là delle tecnologie utilizzate, dai processi e dalle metodologie utilizzati.

Quando si sviluppano sistemi "safety critical" (da cui dipende la vita delle persone, come il sw di un aeroplano) le norme internazionali impongono l'adozione di una serie di pratiche di sviluppo. Questo perché il comportamento del sw non è "lineare" (ovvero facilmente estrapolabile da una serie di casi noti) a differenza di buona parte dei prodotti fisici, perciò il collaudo non può essere esaustivo e non può dare alcuna garanzia di correttezza.

Un esempio di pratica, spesso trascurata, ma sicuramente applicabile e fondamentale nel caso della App di tracciamento, è la conduzione di piano di sw testing più esteso possibile e largamente automatizzato. Sappiamo che il test di App mobili è difficile, ma non farlo o farlo in maniera limitata potrebbe avere delle conseguenze estremamente gravi.

Adozione ed efficacia

Una volta che la App sarà pronta, perché sia utile è necessario che sia adottata ampiamente, in modo che i potenziali contagiati siano avvertiti tempestivamente e possano prendere provvedimenti.

Tuttavia, se avviene un contagio tra due persone, affinché l'App possa avvertire la contagiata è necessario che:

  1. entrambi abbiano un telefono
  • si tratti di modelli recente
  • sia stato aggiornato il sistema operativo
  • abbiano installato l'App
  • avessero l'App attiva quando è avvenuto il contagio
  • il BTLE abbia funzionato correttamente
  • che chi ha trasmesso il contagio abbia sviluppato i sintomi o sia stato avvisato dall'app
  • che abbia preso provvedimenti
  • che sia stato soggetto ad un "tampone"
  • che il "tampone" abbia dato esito positivo
  • che chi è stato contagiato riceva la notifica

Questo elenco non vuole essere esaustivo o sistematico ma solo dare un'idea della quantità e varietà di fattori esterni, al di fuori del controllo di chiunque sviluppi l'App o gestisca il sistema di tracciamento.

È importante avere delle stime sulla probabilità di questi eventi e mettere in campo delle azioni per mitigare i rischi connessi.

App Adoption

Processi e logistica di supporto

Una App da sola non è sufficiente a raggiungere un obiettivo ampio quale la riduzione dei contagi. Le App sono inserite nel contesto di un Sistema Informativo, che include altri applicativi (ad es. il registro centralizzato dei contagi) che devono operare sinergicamente.

I sistemi informativi di supporto al momento hanno evidenziato preoccupanti carenze. Sviluppare nuovi sistemi non è facile sia per i tempi ristretti (che porterebbero a non adottare le buone pratiche di ingegneria del software cui si accennava sopra) sia per la necessità di integrarli adeguatamente con quelli esistenti (pena la perdita di informazioni).

Il sistema informativo, a propria volta, è immerso in un contesto complesso: altri sistemi informativi e un'organizzazione. L'organizzazione comprende: procedure, strutture e risorse.

Servono delle procedure, ad esempio l'OMS ha definito le procedure raccomandate per il "contact tracing", ma per eseguire le procedure servono delle organizzazioni che le mettano in pratica e le organizzazioni hanno bisogno di risorse per poterle attuare. Le risorse sono

  • materiali: laboratori, strumenti di analisi, reagenti e consumabili;
  • umane: deve esserci un numero sufficiente di persone, ma soprattuto, esse devono possedere conoscenze e capacità adeguate ai compiti che dovranno svolgere.

Impatto sociale e giuridico

Per ultimo, ma non ultimo per importanza, è fondamentale valutare l'impatto sociale e giuridico. In primis in termini di privacy ma non solo.

A questo proposito è molto chiara la lettera aperta su tracciamento dei contatti e democrazia promossa dal Centro Nexa su Internet & Società e sottoscritta da un ampio numero di esperti.

È probabilmente da attribuire alla tempestività di tale lettera quello che è stato percepito come un cambiamento di rotta da parte del governo su alcuni punti critici.

Queste genere di considerazioni sono fondamentali nello scegliere quali sono le priorità che devono guidare la scelta di pesi e compromessi tra i diversi punti di vista. Un buon ingegnere del software deve ricordare sempre che “ogni linea di codice rappresenta una scelta morale”.

Conclusioni

Queste sono, senza pretesa di completezza, diverse dimensioni che è importante considerare quando si analizza una App che abbia una portata ampia come quella di “contact tracing”, ma “mutatis mutandis” si applicano a tante altre applicazioni. Si tratta di prospettive dovrebbero essere evidenti per chi ha la sensibilità che deriva dalla cultura di sistema, che dovrebbe essere propria di un buon ingegnere del software.

Si tratta di capire che, citando una bella riflessione di Luca Sofri, quando ci si chiede "Di che colore è il mare?" non sempre la risposta è "Blu.".

Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@gianpaolof
Copy link

Buongiorno,
volevo chiederle perché i telefoni devono essere modelli recenti? C'è qualche requisito che impone una versione recente di android o iphone?
Io pensavo bisognasse partire dai dati relativi alla ditribuzione delle varie versioni di android/iphone per capire come arrivare a coprire la percentuale di utenti necessaria.

@mtorchiano
Copy link
Author

mtorchiano commented Apr 27, 2020

Buongiorno,
volevo chiederle perché i telefoni devono essere modelli recenti? C'è qualche requisito che impone una versione recente di android o iphone?
Io pensavo bisognasse partire dai dati relativi alla ditribuzione delle varie versioni di android/iphone per capire come arrivare a coprire la percentuale di utenti necessaria.

Per due motivi principali:

  • spesso una App sviluppata per funzionare su versioni recenti di iOS o Android è non compatibile e può essere installata su versioni vecchie (un esempio banale: tante API "vecchie" vengono deprecate e quindi non più usate portando a incompatibilità)
  • se la App utilizzerà le nuove API Apple+Google per forza dovrà essere installata una versione nuova del sistema operativo

Purtroppo se i telefono sono vecchi è probabile che non si riescano ad installare versioni nuove del sistema operativo e quindi la App non funziona

@gianpaolof
Copy link

Grazie Marco. Forse avendo come target Oreo si potrebbe arrivare a quel 60% di copertura che sembra essere la soglia minima per avere una app efficace https://gs.statcounter.com/android-version-market-share/mobile-tablet/italy

L'altra cosa importante che anche tu hai evidenziato è il ciclo di vita dell'applicazione: anche facendo un servizio (su android perché di ios non so nulla) non è detto che non venga killato dal sistema operativo se in idle. E d'altronde un processo sempre attivo consuma un sacco di batteria. La vedo dura. Chissà come han fatto in Corea...

@mtorchiano
Copy link
Author

Si, un'attenta valutazione del marketplace potrebbe ridurre quel rischio.

Cmq la mia voleva essere una valutazione disfattista, ma semplicemente un gettare luce su tanti aspetti, alcuni poco considerati.
Spero vivamente che possa funzionare!

@SettingSale
Copy link

I modelli epidemiologici sono ancora in corso di raffinamento causa:

  1. Numero di asintomatici e subclinici. La media e' sul 55-60%, con massimi di 80% tanto in ambienti a basso contatto quanto ad alto contatto di pazienti giovani (marinai francesi ed USA) e minimi di 37-40% per ambienti a piu' alto tasso di contatto ed alta densita'.
  2. Non sappiamo se e quanto duri l'immunita' di chi e' guarito.
  3. Ci sono almeno 30 ceppi di virus diversi, alcuni dei quali sufficientemente diversi da non dare cross-immunization.
    Questo significa che l'anello o anelli dopo Alice potrebbe non sapere di essere infetto e non segnalare mai la sua contagiosita'

@mtorchiano
Copy link
Author

I modelli epidemiologici sono ancora in corso di raffinamento causa:

  1. Numero di asintomatici e subclinici. La media e' sul 55-60%, con massimi di 80% tanto in ambienti a basso contatto quanto ad alto contatto di pazienti giovani (marinai francesi ed USA) e minimi di 37-40% per ambienti a piu' alto tasso di contatto ed alta densita'.
  2. Non sappiamo se e quanto duri l'immunita' di chi e' guarito.
  3. Ci sono almeno 30 ceppi di virus diversi, alcuni dei quali sufficientemente diversi da non dare cross-immunization.
    Questo significa che l'anello o anelli dopo Alice potrebbe non sapere di essere infetto e non segnalare mai la sua contagiosita'

Quindi forse dovrei dire, ammesso che i modelli siano corretti e determinati i parametri...

@SettingSale
Copy link

Si, purtroppo questo virus presenta elementi di novita' che richiedono ancora molta ricerca. Ma questa e' la direzione giusta, grazie del contributo.

@ADurante
Copy link

@mtorchiano mi è poi passato di mente, ma ho effettuato un fork e, già che c'ero, ho anche corretto qualche refuso. A presto!

@SettingSale
Copy link

SettingSale commented Apr 30, 2020 via email

@ADurante
Copy link

Grazie Alessio per avermi tirato su github anche con Polito, ora ho ancora piu' alias, vediamo se Facebook mi raggiunge ahahah Un abbaccio Roberto (altrimenti Rob, SetSail, SettingSale ed n altri pseudonimi sparsi)

On Thu, 30 Apr 2020 09:10:51 -0700 Alessio Durante @.***> wrote: @mtorchiano mi è poi passato di mente, ma ho effettuato un fork e, già che c'ero, ho anche corretto qualche refuso. A presto! -- You are receiving this because you commented. Reply to this email directly or view it on GitHub: https://gist.github.com/eb6405915aa668b1fa059ccc24e7876c#gistcomment-3276780

🤣

Un abbraccio!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment