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.

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.






