Interoperabilità e Internet of Things

di Alessandro Bassi

L’Interoperabilità e Internet of Things (IOT)  è un problema vecchio quasi quanto le prime soluzioni di internet delle cose.  La maggior parte degli sviluppi IoT esistenti si basa su concetti di “closed loop”, concentrandosi su uno scopo specifico; pertanto, in genere i sistemi non sono concepiti per essere integrati a altri componenti, risultando isolati dal resto del mondo. L’integrazione tra elementi eterogenei viene solitamente eseguita a livello di dispositivo o di rete ed è limitata alla raccolta dei dati. Lo sviluppo dell’IoT in questo segue le stesse orme dello sviluppo di Internet, quando negli anni 90 diversi sistemi venivano sviluppati per la trasmissione delle informazioni, sistemi che poi si sono estinti visto il successo di TCP/IP e Ethernet.

Chiaramente, sviluppare sistemi con uno scopo preciso è normale; a volte, prevedere interfacce generiche verso servizi non ancora esistenti o neanche immaginati non ha molto senso, se guardiamo lo sviluppo in ottica short-term. Invece, se partiamo dal punto di vista che un approccio a diversi livelli per integrare diversi concetti, prima ancora che dispositivi, reti, piattaforme, servizi e applicazioni IoT,  possiamo vedere continuum globale di dati, infrastrutture e servizi che possono abilitare diversi scenari IoT. Inoltre, il riutilizzo e l’integrazione di vari sistemi IoT esistenti e futuri viene facilitato, creando un ecosistema globale di fatto di piattaforme IoT interoperabili.

Se pero il valore di rendere i sistemi software compatibili e a prova di futuro è innegabile, il numero di soluzioni cresce rapidamente, spinto spesso da Startups e piccole imprese che cercano di entrare nel mercato il più rapidamente possibile, e nessuna piattaforma standard e / o generica sembra essere dominante. Ci sono chiaramente dei market leaders, ma nessuno è in questo momento in una posizione dominante, e gli scenari possono cambiare rapidamente. Oltretutto, visto la pletora di Use Cases e di scenari difficili da armonizzare all’interno di un unica specifica, le difficoltà di sviluppare una interoperabilità tra sistemi concettualmente indipendenti sono abbastanza chiare.

Ma facciamo un passo indietro e cerchiamo di dare un contesto chiaro al problema.

Innanzi tutto, occorre distinguere tra interoperabilità e standard. Per fare un esempio pratico, le differenti prese di corrente nel mondo sono regolate da diversi standard – 14, per la precisione. Il fatto che siamo capaci di caricare il nostro laptop ovunque nel mondo – se abbiamo la presa giusta, ovviamente – rappresenta l’interoperabilità del nostro “sistema” informatico.

A questo punto bisogna chiarire cosa si intende per Interoperabilità e Internet of Things. Ci sono molte definizioni e distinzioni, ma essenzialmente sI possono identificare tre livelli di interoperabilità tra sistemi: un livello alto (semantico), uno intermedio (strutturale) e uno basso (tecnico).

L’interoperabilità semantica è la capacita di due sistemi elettronici di scambiarsi informazioni con un significato non ambiguo e preciso. Quindi, a livello semantico, due o più sistemi o elementi possono scambiarsi informazioni e usarle in maniera proficua. Questo è un requisito fondamentale per abilitare l’inferenza l’inferenza, e la federazione dei dati tra sistemi differenti.

A livello strutturale, l’interoperabilità definisce la il formato dello scambio di dati tra vari sistemi. In altri termini, a questo livello si definisce la sintassi dello scambio di dati, assicurando che i dati vengano interpretati correttamente.

Un esempio (abbastanza drammatico) della differenza tra questi due livelli è il fallimento del Mars Climate Orbiter, venti anni fa. Due sottosistemi usavano differenti unità di misura (Imperiale e Decimale), e quindi se la comunicazione a livello semantico tra i moduli era corretta, a livello sintattico i due sistemi non parlavano l stessa lingua. Il risultato è stato la perdita della sonda. Un errore se vogliamo banale ma che è costato 125 milioni di dollari …

A livello tecnico, invece, l’interoperabilità è la capacità di sistemi diversi di essere in grado di scambiarsi dati. Se la semantica voleva dire “di cosa stiamo parlando” e la struttura “in che lingua stiamo parlando”, a questo livello siamo “che mezzo usiamo per parlarci”: carta e penna piuttosto che l’aria.

Quindi, al momento della progettazione di un sistema, come si può garantire l’interoperabilità del sistema in questione? Innanzi tutto, sviluppando l’architettura del sistema secondo uno standard ben definito; preparando delle interfacce chiare e ben documentate e usando delle tecnologie fisiche per la trasmissione di dati standard.