La sicurezza in ambito ferroviario passa anche dalla programmazione
La riduzione del rischio e la minimizzazione degli errori sono prerogative indispensabili quando si lavora in settori come quello ferroviario, dove un errore di programmazione può avere gravi conseguenze. Per operare in quest’ambito è quindi indispensabile conoscere e seguire le normative di riferimento, come gli standard SIL. Idem-tech, grazie all’esperienza pluriennale, garantisce il rispetto delle normative più stringenti, quelle di livello SIL4.
La programmazione in ambito ferroviario e la normativa SIL4
Idem-Tech da anni collabora con diverse realtà in ambito sviluppo software per il settore ferroviario. La programmazione in ambito ferroviario non può essere affrontata senza le dovute conoscenze tecniche, perché sottostà a una serie di vincoli e normative volti a garantire la minimizzazione degli errori e la circolazione in sicurezza dei convogli. Questo impatta alla base della programmazione, ovvero su come il codice deve essere scritto, elemento che viene definito da una serie di standard condivisi. In particolare, sono stati definiti quattro livelli SIL (Safety Integrity Level), compresi tra SIL1 (il meno affidabile) e SIL4 (il più affidabile). Lo standard IEC 61508 definisce i requisiti per stabilire il livello SIL: si tratta di requisiti di integrità della sicurezza sia dell’hardware che di sistema. Per poter garantire un determinato livello SIL, si devono soddisfare i requisiti per entrambe le categorie. I sistemi o i dispositivi che devono garantire un determinato livello SIL devono ottenere un’apposita certificazione.
L’obiettivo è far sì che i rischi legati a un possibile malfunzionamento del sistema, che in ambito ferroviario possono provocare conseguenze anche gravi, siano ridotti al minor livello possibile.
In ambito ferroviario, Idem-Tech è in grado di garantire il conseguimento di una certificazione SIL4, la massima ottenibile, come già dimostrato nel corso di alcuni progetti completati.
La programmazione in ambito ferroviario richiede infatti il rispetto di regole precise, che in Idem-tech conosciamo e seguiamo scrupolosamente: le regole per il conseguimento di un dato livello SIL definiscono come scrivere il codice affinché ci siano meno bachi possibili. Queste regole definiscono anche come il codice deve essere scritto. In tal senso, è possibile fare un parallelismo facilmente comprensibile con la scrittura di un romanzo: è come se il revisore di bozze imponesse allo scrittore di mettere un punto ogni dato numero di parole, di andare a capo ogni tot righe, di suddividere il tutto in capitoli di una data lunghezza e di inserire delle note esplicative a piè di pagina in alcuni punti. Tutto questo servirebbe a rendere il romanzo comprensibile e fruibile. In parte, questo è vero anche per le regole che riguardano la scrittura di un codice, che servono infatti anche a facilitare la “rilettura” e la verifica del sistema.
Molte delle regole per il conseguimento del primo livello SIL sono regole di buon senso, che diventano sempre più strutturate e specifiche man mano che il livello SIL da conseguire sale. Ad esempio, la percentuale di commenti necessari tende ad aumentare: per il conseguimento di una certificazione SIL4, il 25% del codice deve essere composto da commenti, che hanno una doppia funzione, in quanto da un lato servono da promemoria per chi programma, e dall’altro fungono da guida per chi revisiona il codice. Questo è solo un esempio: le regole definite sono numerose e servono a far sì che il codice raggiunga uno stato di sicurezza, ovvero che si blocchi qualora arrivi in un punto che non era previsto. In ambito ferroviario questo significa che anche fisicamente il tutto si ferma se non è in uno stato di sicurezza, in modo da evitare possibile incidenti.
Le varie regole, che riguardino la forma o i veri e propri aspetti contenutistici del codice, hanno sempre come scopo quello di minimizzare la possibilità di errore.
Si parla di minimizzazione perché l’azzeramento dell’errore è statisticamente impossibile: le regole definite aiutano in ogni caso a contenere per quanto possibile gli errori, in maniera crescente quanto più sale il livello SIL di riferimento.
Le regole SIL sono le più conosciute e applicate nel settore e rappresentano il principale standard di riferimento per la minimizzazione degli errori in fase di scrittura del codice. A loro volta, queste norme si appoggiano sulle regole MISRA, un insieme di linee guida di sviluppo software per linguaggio di sviluppo C sviluppato dalla Motor Industry Software Reliability Association con lo scopo di facilitare la portabilità e aumentare la sicurezza e l’affidabilità dei sistemi embedded in numerosi ambiti, tra cui proprio quello ferroviario.
Nel settore ferroviario si applicano poi anche altre normative, come ad esempio le regole CENELEC diramate dal Comitato europeo di normazione elettrotecnica: l’obiettivo è sempre quello di ridurre il più possibile gli errori, applicando una serie di standard condivisi a livello europeo.
Un ruolo importante per la programmazione in ambiti che richiedono una grande attenzione alla sicurezza è poi quello del Viewer and Validator, ovvero un revisore deputato al controllo del codice.
Ecco che allora, la regola relativa ai commenti descritta in precedenza assume una maggiore rilevanza, in particolare se si considera che la fase di revisione è spesso più lunga e articolata della stessa fase di scrittura.
Molte delle regole definite dalla normativa impattano poi sulla scrittura vera e propria e definiscono come scrivere l’algoritmo alla base del codice. Normalmente, la fase di scrittura di un algoritmo è molto più “libera”, ma la programmazione in SIL4 impone una serie di regole stringenti che devono essere seguite per conseguire la relativa certificazione. Molte di queste regole sono comunemente usate per facilitare le fasi di scrittura e controllo ma, in ambiti come quello ferroviario, tenerne conto non può essere a discrezione di chi programma.
Seguendo le regole dettate dalla normativa SIL4 si ottiene un codice il più lineare possibile, il cui flusso è chiaramente comprensibile.
Il codice sarà quindi sequenziale e non saranno possibili più strade di lettura: la sua interpretazione deve infatti risultare chiara e univoca. Questo a favore dell’obiettivo finale, ovvero la minimizzazione degli errori. Proprio per questo scopo, le regole sono numerose e stratificate, da alcune estremamente tecniche ad altre di buonsenso, che dovrebbero essere sempre seguite da chiunque programmi un codice. Ad esempio, ogni funzione deve avere un unico punto di ritorno: ogni funzione deve quindi avere un punto di inizio e un punto di fine univoci e, se così non è, non deve essere possibile generare il programma fin dall’inizio.
Per ottenere la validazione del codice in ambito ferroviario è indispensabile seguire le regole della normativa SIL.
Per lavorare in questo ambito è quindi necessario conoscere approfonditamente queste regole: Idem-tech vanta una profonda conoscenza e un’esperienza pluriennale nella programmazione per il settore ferroviario. Alcune delle regole da seguire possono non essere rilevanti ai fini dell’esecuzione del codice: mentre è più facile che le regole più generiche e di buonsenso vengano in ogni caso rispettate, in altri casi se non si conoscono le regole da seguire è impossibile programmare rispettando la normativa. Ecco perché è necessario poter contare su un profondo expertise nel settore.
Regole di forma e regole che impattano a livello funzionale sono di fondamentale importanza quando si programma in ottica SIL4: conoscerle è in ogni caso essenziale per ottenere la certificazione del livello di sicurezza.
Le regole di forma impattano sulla leggibilità del codice e facilitano l’attività di chi, a valle, deve validare il codice stesso. Le regole di metodo, invece, servono a limitare gli sbagli e a far sì che eventuali errori che non abbiano gravi ripercussioni sulla sicurezza del sistema nel suo complesso, creando un blocco in caso si verifichi un errore imprevisto.
Il rispetto di alcune regole, oltre ad essere verificato da un controllore, può infine essere validato anche da tool di controllo statico del codice, come C-STAT, che verificano se ci sono errori nell’applicazione delle regole impedendo la generazione del programma stesso.
La programmazione in ambito ferroviario deve considerare la sicurezza come prioritaria e Idem-tech lavora proprio in quest’ottica. Se devi progettare in quest’ambito o hai delle domande su questo tema, non esitare a contattare il nostro team!