Gestire la complessità del software nell’Intelligent Edge

Michael O’Donnell, Managing Director, Software, Revenue and Services, Analog Devices

E se la tecnologia potesse prendere decisioni in una frazione di secondo, esattamente nel momento in cui i dati vengono creati? Questo è il potenziale dell’Intelligent Edge. L’Intelligent Edge esiste al confine tra il mondo fisico e quello digitale, dove i dispositivi interpretano i fenomeni del mondo reale in dati su cui è possibile agire e preziosi spunti, con applicazioni come sistemi avanzati di assistenza alla guida (ADAS), il monitoraggio dei segni vitali (VSM) e la guida dei cobot. Il futuro riserva possibilità ancora maggiori per trasformare le industrie e migliorare le nostre vite, e il software sarà fondamentale.

L’ingegneria del software sta diventando una sfida sempre più complessa con l’avanzare della tecnologia e l’intensificarsi della pressione sul time to market. Per sfruttare in modo completo il potenziale delle innovazioni legate all’Intelligent Edge e consentirne il pieno sviluppo, gli sviluppatori software devono affrontare le complesse sfide che caratterizzano i sistemi embedded e software-defined.  Queste includono le architetture eterogenee multicore, che combinano le capacità uniche di diversi tipi di processori e il più ampio ecosistema aziendale sottostante di fornitori, distributori e service provider.

La complessità è come l’energia. Non può essere creata o distrutta, ma solo trasferita altrove. Quando un prodotto o un servizio diventa più semplice per gli utenti, ingegneri e progettisti devono lavorare in modo più intenso e intelligente sui meccanismi sottostanti, utilizzando gli strumenti e le risorse più efficienti e affidabili lungo tutta la supply chain. La visione di ADI è quella di assorbire la complessità rendendo la tecnologia disponibile al livello di astrazione desiderato dall’utente – la specificità con cui un sistema viene visualizzato o programmato tramite software – e quindi progettando hardware e software in modo intelligente e collaborativo con i partner.

Software per l’intelligent edge

Il software è fondamentale sia per la creazione sia per l’ottimizzazione delle prestazioni dell’Intelligent Edge. I dispositivi Edge sono, in sostanza, sistemi software-defined (SDS). Il software è ciò che conferisce all’hardware le sue specifiche capacità e gli consente di essere intelligente. Permette inoltre all’hardware di essere riconfigurato dinamicamente, consentendo aggiustamenti in tempo reale nel processo decisionale e nell’adattabilità. Questa flessibilità contribuisce a garantire che i sistemi possano evolversi per soddisfare nuovi obiettivi ed esigenze future, rimanendo attenti alle condizioni variabili.

Il sistema di gestione cardiopolmonare (CPM) Sensinel™ di ADI dimostra questa adattabilità. Il dispositivo Sensinel, indossabile, compatto e non invasivo per l’uso domestico, controlla le misurazioni cardiopolmonari per aiutare i sanitari a monitorare condizioni croniche come l’insufficienza cardiaca, in modo precoce e da remoto. Il software interpreta i dati dei sensori per identificare i pazienti che necessitano di maggiore attenzione. Man mano che il sistema raccoglie i dati utente, perfeziona il software e gli algoritmi per migliorare l’accuratezza e l’efficienza, al fine di determinare chi e con che frequenza necessita di cure di follow-up.

Figura 1: Sistema Sensinel CPM di ADI

Con l’aumentare delle funzionalità delle applicazioni nel corso del tempo, sono cresciute anche le dimensioni fisiche e la complessità del software, ponendo nuove esigenze in termini di tempo per i progettisti di software per la creazione di un codice in grado di gestire architetture multicore eterogenee e applicazioni Intelligent Edge.

Gli sviluppatori sfruttano l’open source per accelerare la risoluzione dei problemi e il processo di sviluppo del software. Offrendo visibilità e licenze permissive, l’open source consente agli sviluppatori di avvalersi del lavoro altrui basandosi su quello esistente, migliorando, modificando e personalizzando il codice in base alle proprie esigenze. Questo approccio collaborativo non solo favorisce l’innovazione e la flessibilità, ma riduce anche in modo significativo il tempo e lo sforzo necessari per creare software.

Tuttavia, l’origine del codice open source può presentare delle sfide, principalmente a causa delle sue intrinseche dipendenze complesse che possono talvolta aprire le porte a malintenzionati che desiderano inserirsi nel codice. Per mitigare questo rischio, vengono impiegati vari metodi, quali revisioni rigorose del codice, scansioni di sicurezza automatizzate e l’uso di repository affidabili, al fine di garantire l’integrità e la sicurezza. Attraverso queste pratiche, la comunità open source può continuare a progredire mantenendo un ambiente di sviluppo sicuro e affidabile.

Un hardware complesso richiede un software complesso

I dispositivi Intelligent Edge odierni sono composti da un’architettura eterogenea che integra CPU, GPU e FPGA su un chip di segnale, tipicamente denominato sistema su chip (SoC). È difficile sopravvalutare quanto sia impegnativo e complesso progettare una moderna architettura multicore con capacità di segnale misto rispetto all’architettura single-core del passato.

L’ integrazione SoC consente una migliore efficienza energetica, una latenza ridotta e un throughput dei dati migliorato, poiché vengono sfruttate diverse architetture per capitalizzare i loro punti di forza unici. Tuttavia, la progettazione di software per SoC presenta alcune complessità, tra cui il bilanciamento delle esigenze di ciascuna unità di elaborazione, la sincronizzazione e l’ottimizzazione dinamica dell’alimentazione, nonché la salvaguardia dell’integrità dei dati e la sicurezza delle comunicazioni tra le unità. Man mano che questi sistemi diventano più grandi, il software deve scalare in modo efficace, altrimenti potrebbero verificarsi colli di bottiglia. L’ottimizzazione delle prestazioni e il raggiungimento del miglior compromesso tra prestazioni ed efficienza energetica richiedono un’attenta progettazione del sistema, strumenti sofisticati e conoscenze tecniche.

Costruire sull’ecosistema sottostante

Lo sviluppo di software per architetture eterogenee può essere complesso e richiedere una vasta gamma di competenze, strumenti e standardizzazioni che spesso vanno oltre le capacità di una singola azienda. Un ecosistema ben strutturato promuove la standardizzazione attraverso la collaborazione tra gli attori del settore. API, framework e strumenti standard consentono al software di funzionare in modo efficiente su piattaforme diverse, fondamentale per scalare le applicazioni su varie architetture.

I partecipanti all’ecosistema possono sviluppare insieme nuove tecnologie, proprietà intellettuali e best practice. Ciò incoraggia l’innovazione negli strumenti software, nelle tecniche di sviluppo e nelle ottimizzazioni hardware, facendo progredire l’intero settore. L’ecosistema favorisce la collaborazione, riduce la complessità dello sviluppo e garantisce che le aziende e gli sviluppatori possano creare, ottimizzare e scalare il software in modo efficiente. Un ecosistema accuratamente selezionato e gestito aiuta a ridurre al minimo le spese per prodotti e servizi ridondanti, abbassando i costi e accelerando i risultati.

Affrontare la complessità con un ambiente di sviluppo software

Oggi l’ingegneria del software rappresenta una sfida sempre più complessa, con l’avanzare della tecnologia verso soluzioni hardware multicore e multi-architettura. Molti ingegneri devono affrontare questa complessità utilizzando strumenti, middleware e kit di sviluppo software (SDK) obsoleti, progettati per un mondo più semplice, basato su single-core e architettura singola. Queste piattaforme legacy non sono in grado di fornire interfacce aperte ed estensibili, essenziali per i moderni sistemi eterogenei che utilizzano più di un tipo di processore o core e sono progettati per ottenere il miglior compromesso tra prestazioni ed efficienza energetica.

Per aiutare a risolvere questa crescente complessità, gli ingegneri del software embedded hanno bisogno di strumenti e ambienti aperti, progettati per sistemi multicore che forniscano visibilità del sistema e offrano la flessibilità necessaria per adattarsi alle loro esigenze di sviluppo.

Strumenti software di nuova generazione

Gli strumenti di sourcing e codifica software di nuova generazione possono migliorare la qualità delle applicazioni, il processo di sviluppo e il time-to-market, rendendo allo stesso tempo il processo più efficiente per gli sviluppatori di software. Per raggiungere questi obiettivi, il settore deve concentrarsi su:

•   Investire in standard aperti e open source, attuando investimenti in modi realmente differenziati.

•   Accelerare lo sviluppo di software scalabile sfruttando una catena di fornitura software trasparente e SBOM.

•   Concentrarsi su principi e pratiche di sicurezza fin dalla progettazione: sicurezza dall’Edge al core, garantendo integrità e privacy.

•   Costruire piattaforme di strumenti aperte, progettate pensando agli sviluppatori, per rendere lo sviluppo, l’integrazione e il testing più facili, veloci e scalabili.

Domare la complessità per un futuro migliore

Per ottenere i vantaggi del nostro futuro definito dal software e i benefici che comporta per le persone e il pianeta, dobbiamo affrontare le complessità dello sviluppo hardware e software accelerando allo stesso tempo il ritmo dell’innovazione. Gli sviluppatori sono pronti nell’impresa, ma hanno bisogno degli strumenti e delle tecnologie giuste di supporto. L’industria deve unirsi attorno all’open source, agli standard aperti e agli ecosistemi collaborativi che favoriscono investimenti efficienti e allineati. La capacità inventiva collettiva e la cooperazione sono essenziali per affrontare le sfide odierne e stare al passo con ciò che è possibile.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Menu