NIER Ingegneria è diventata Società Benefit →
TORNA AGLI ARTICOLI
1 Ottobre 2021

Servizi di sviluppo Software

Articolo a cura di Emiliano La Cara, Direttore Area Ingegneria del Software, NIER Ingegneria

Viviamo nel pieno dell’era digitale, nella “società dell’informazione” e, senza ormai più porci attenzione, siamo passivamente e letteralmente immersi nel Software in ogni momento della nostra vita, da quando saliamo su un’auto, su un treno, su un aereo, a quando monitoriamo le nostre attività con uno smartwatch oppure semplicemente mentre usufruiamo di un qualsiasi servizio in rete.

La realizzazione di un prodotto digitale è un obiettivo molto complesso, ancor di più quando richiede una competenza specifica in determinati settori (competenza di dominio) e quando è necessaria l’integrazione tra Hardware e Software.

La complessità aumenta ulteriormente se è necessario rispettare restrittive specifiche sulla sua sicurezza, sia funzionale che informatica, come nel settore Ferroviario, Automotive, Biomedicale, Avionico o Nucleare.

PERCHÉ DEDICARSI ALLO SVILUPPO SOFTWARE?

NIER nella sua storia ha maturato esperienza in settori in cui il software gioca (e ha sempre giocato) un ruolo fondamentale, in termini di Verifica e Validazione, di Testing e di Design.

Negli anni si è specializzata nei due rami, ascendente e discendente, del V-Model che gli standard di sicurezza del Software (IEC 61508, ISO 26262 e DO-178C) utilizzano per descriverne le fasi di sviluppo (ciclo di vita). Nel ramo discendente sono concentrate le fasi di Design e Verifica, nel ramo ascendente quelle di Validazione e Testing.

La direzione tecnica di NIER ha deciso di effettuare scelte strategiche, organizzative e tecnologiche per aggredire il vertice del V-Model, ovvero la fase di implementazione, arrivando così a coprire ogni attività del V-Model stesso. In tal modo per NIER è stato possibile esprimere appieno le proprie competenze tecniche e di dominio tramite lo sviluppo di soluzioni SW e dei necessari tools al contorno (simulatori, ambienti di test, sistemi grafici di configurazione, di data preparation e data processing) per riuscire nello sfidante obiettivo di realizzare “turn-key projects” per i propri clienti.

Crediamo che il punto di forza di questa scelta risieda nell’approccio utilizzato: siamo partiti dalle nostre competenze di dominio, passando per la esperienza in V&V, Testing e Design, approdando così allo sviluppo di Software contestualizzato in modo razionale allo scenario di utilizzo, di cui conosciamo da anni le peculiarità.
Questo è il motivo principale per cui NIER non si può definire Software House, bensì una solida società di Ingegneria la cui Area “Software Engineering” si pone l’obiettivo di fornire, attraverso il contributo di personale altamente qualificato, il supporto necessario ai propri clienti al fine di migliorarne i prodotti, crearne di nuovi su misura, migliorarne i processi di validazione ed integrare soluzioni innovative frutto delle esperienze maturate in diversi settori.

QUALI VANTAGGI COMPETITIVI E QUALE VALORE AGGIUNTO OFFRE UN TALE APPROCCIO?

Partiamo dalle metodologie e strumenti che abbiamo deciso di utilizzare e dall’approccio di sviluppo che pensiamo porti valore aggiunto nella progettazione di un Software nell’obiettivo di soddisfare le esigenze del cliente, in termini di qualità, certificazione e tempi di realizzazione.

METODOLOGIE/STRUMENTI

Il V-Model è molto rigido e rende difficile allontanarsi dall’approccio lineare (processo Waterfall) che esso impone nello sviluppo di software safety-critical.
D’altro canto, le attuali pratiche di sviluppo Agile si concentrano sull’obiettivo della consegna al cliente nel più breve tempo possibile, proponendo la creazione di piccoli progetti (iterazioni) in cui si sviluppano limitate porzioni del software finale al fine di minimizzare la probabilità di introdurre bug, ottenendo un software manutenibile e stabile. In questo modo si enfatizza la comunicazione veloce per snellire e velocizzare i processi.
Questa metodologia, però, può risultare problematica per il software safety-critical poiché ogni rilascio dovrebbe passare attraverso processi formali di verifica e/o certificazione. Inoltre, la distribuzione continua diventa ancora più complessa quando nel sistema progettato è coinvolto l’hardware.
Tuttavia, è possibile sfruttare congiuntamente i principi DevOps, pensabili come un miglioramento dell’Agile, per creare un approccio sempre iterativo ma più idoneo per lo sviluppo di progetti embedded e middleware, sia safety-critical che non. DevOps, infatti, propone una collaborazione tra Developers, sviluppatori orientati all’aggiunta o modifica di funzionalità software, e Operations, orientati alla stabilità e al miglioramento dei processi, in tutte le fasi del ciclo di vita del prodotto.

APPROCCIO

La definizione del nostro approccio allo sviluppo Software è stata conseguenza naturale di anni di assistenza ai nostri clienti nella validazione e sviluppo SW sia di sistemi critici (come il ferroviario o il biomedicale) che di sistemi non critici, come ad esempio sistemi di diagnostica ed applicazioni SCADA in ambito industriale.
Abbiamo potuto sperimentare direttamente sul campo che cosa implichi trovare il miglior compromesso tra qualità, risorse e tempo in contesti Safety-Critical nei quali non è possibile rinunciare alla qualità del Software in quanto ne potrebbero derivare conseguenze catastrofiche.
Quindi, come è possibile ottimizzare lo sviluppo di un software tecnologicamente sempre più complesso e a cui è richiesto molto spesso di essere conforme anche ai principi della cybersecurity, garantendone al contempo un elevatissimo standard di qualità?
In prima istanza la cultura della qualità deve essere ben radicata in azienda, e in NIER le attività di test e il controllo di qualità sono da sempre attività CORE, praticamente radicate nel DNA dei team di lavoro. La naturale conseguenza è che il test e il controllo di qualità sono per noi parti focali del processo di sviluppo e non, come a volte accade, l’ultima fase di esso.
Come gli “addetti ai lavori” sanno, il puro sviluppatore non è sempre avvezzo alle attività di test. Inoltre il contesto in cui l’Area “Software Engineering” si è formata è altamente normato ed è mandatorio, per esempio, che il team di test sia indipendente e diverso dal team di sviluppo. Questo perché chi produce il software è polarizzato, nel testarlo, dalla conoscenza capillare che ne possiede a livello implementativo e quindi non ne stresserebbe l’usabilità e le funzionalità in modo opportuno.
Concentrare le forze nelle fasi iniziali del ciclo di vita dello sviluppo può tradursi in riduzione complessiva dello sforzo: garantire che i requisiti software e la progettazione siano corretti riduce i problemi di produzione ed evita il tempo speso in dispendiose attività di rework. Un tale approccio, col sussidio delle metodologie e strumenti descritti al paragrafo precedente, ha lo scopo di trovare i bug in anticipo, di risolverli più velocemente, più facilmente e, inoltre, in modo più economico.

In tutto ciò in NIER non abbiamo distolto lo sguardo dall’innovazione approfondendo, per esempio, l’indagine sui metodi moderni di progettazione del Software, come Model Based Software Engineering (MBSE), per la definizione di modelli di dati e modelli comportamentali di sistemi complessi. Oppure, aprendoci alle tecnologie Open-Source e Web Based a cui il mercato sempre più sta tendendo, abbandonando gradualmente le vetuste applicazioni stand-alone. Teniamo viva l’attenzione ai nuovi linguaggi di programmazione multiparadigma, come Rust, che è pronto per unirsi al C ed apre nuove frontiere sugli stessi sistemi safety-criticial, oltre che su Embed system security, così come sullo sviluppo webKit e kernel linux, con l’obiettivo di ridurre le vulnerabilità di sicurezza mantenendo al contempo le performance prestazionali.

La fase di testing end-to-end del software, per nostra esperienza e convinzione, non può essere completamente demandata all’automatizzazione. I test Automatici sono ovviamente un punto cardine per raggiungere la rapidità di validazione che si sposa con la rapidità richiesta allo sviluppo, ma le competenze di dominio ritornano anche in questo contesto protagoniste: l’ingegnere del test, che può esprimere la propria abilità con tecniche WhiteBox grazie alla profonda conoscenza del contesto e delle architetture dei sistemi testati, per noi ha una valenza imprescindibile dalla buona riuscita di un prodotto.

In conclusione, l’utilizzo di metodologie Agile/Devops, lo sviluppo software integrato dalla forte attenzione alla Verifica/Validazione e testing, ci hanno permesso di impostare un processo semplificato ed iterativo di progettazione di software Applicativo, embedded sia safety-critical che non, aperto alle nuove frontiere tecnologiche.

SEGUIRE LE NECESSITÀ – STOP AI FOGLI EXCEL PER TUTTO.

Con lo stesso approccio, con la stessa cura per la qualità del SW, la sua sicurezza, la sua usabilità e fruibilità, NIER ha deciso di impegnarsi nella proposizione di applicazioni e servizi WEB-based innovativi in contesti in cui la digitalizzazione fatica a far breccia a causa di un retaggio culturale caratterizzato da una forte resistenza al cambiamento.

Nella nostra attività consulenziale abbiamo potuto constatare che in molte realtà private, così come nelle Amministrazioni Pubbliche, i servizi a volte sono inadeguati in termini di facilità di utilizzo, ergonomia e accessibilità.

Le necessità odierne richiedono innovazione nei servizi che svincolino da metodologie vecchie e laboriose, non condivise, con tutto ciò che questo comporta. Avendo maturato internamente competenze di sviluppo anche in ambito WEB-Based e avendo arricchito l’Area “Software Engineering” delle competenze necessarie all’utilizzo di alcuni tra i framework più attuali del momento, anche in tale ambito abbiamo cominciato a progettare delle pipeline cucite su misura per i nostri clienti (servizi tailor-made).

La chiave di volta anche in questo contesto è la stessa: abbiamo dato potenza e voce alle nostre competenze di dominio maturate negli anni fornendole una veste Software, con le tecnologie più innovative, che ci permettono di realizzare servizi Web e Applicazioni che rispondono alle esigenze del nostro cliente nello specifico settore di applicazione.

Inoltre, “parlando la stessa lingua” dei nostri clienti, possiamo affiancarli con efficacia ed efficienza dalla impostazione del POC (Proof-Of-Concept) fino alla fase finale di implementazione e messa in produzione del proprio prodotto o nella sua specializzazione per applicarlo in uno specifico settore.
La necessità di disporre di un software progettato specificamente per le proprie esigenze rappresenta infatti un fattore molto comune sia per aziende che per enti pubblici /o di Ricerca per cui non sempre esistono sul mercato proposte di software general purpose adeguati.

Un’applicazione particolarmente apprezzata dai nostri clienti è il database aggiornato della normativa legata ai temi di sicurezza sul lavoro, energia e ambiente. Abbiamo ripensato l’erogazione di un servizio svolto da NIER, in maniera moderna e customizzata, corredando al servizio tradizionale uno strumento potente di gestione delle scadenze, assegnazione di task, reminder automatico delle attività e archiviazione della documentazione prodotta.
Per maggiori informazioni.

Abbiamo affiancato inoltre importanti realtà della GDO (Grande Distribuzione Organizzata) per cui, partendo da audit effettuati da tecnici NIER in ambito sicurezza sul lavoro e prevenzione antiterrorismo, siamo approdati alla produzione di un software di analisi dei dati con funzioni di elaborazioni reportistica avanzata.

Infine, siamo protagonisti insieme ai responsabili del settore energia e ambiente della Pubblica Amministrazione, nella creazione di una piattaforma WEB di monitoraggio dei consumi energetici e delle emissioni che permette ai comuni aderenti al patto dei sindaci (PAESC) di archiviare, visualizzare e produrre i documenti richiesti.
Per maggiori informazioni

In tutte le soluzioni finora sviluppate, sia in ambito Pubblica Amministrazione che in ambito industriale, i fattori comuni sono stati:
• l’ammodernamento di processi aziendali, finora basati su data entry e compilazione manuale dei documenti;
• la centralizzazione, su un database nell’intranet o in cloud, ha garantito l’utilizzo remoto dei dati in modo condiviso e sicuro permettendo la continuità operativa anche in smart-working nei periodi di mobilità ridotta causa Covid-19;
• Una robusta architettura, basata su utenti profilati in ruoli e permessi, lo sviluppo attraverso metodologie all’avanguardia e l’utilizzo di pattern consolidati, sono stati la chiave per la progettazione di applicazioni altamente configurabili e scalabili;
• Una attenzione particolare all’esperienza utente (User Experience) e alla cura dell’interfaccia utente, per permettere un utilizzo appagante e immediato dell’applicazione.

L’innovazione digitale è un’opportunità imperdibile: sebbene molte realtà produttive abbiano sviluppato una forte esperienza sui loro processi e sui loro prodotti ma non riescono a trarre valore dai dati.

NIER può supportare queste aziende attraverso soluzioni software in grado di visualizzare e analizzare i dati fornendo informazioni essenziali per il monitoraggio dei processi e per l’adozione di decisioni strategiche.

Siamo felici di accogliere queste nuove sfide insieme e di potervi supportare nella definizione e implementazione di una strategia di sviluppo software: scrivici a BD@nier.it

DALLE PAROLE AI FATTI .

Contattaci per saperne di più sull’argomento dell’articolo.

    Condividi .