
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. In questo articolo, Michael O’Donnell, Managing Director, Software, Revenue and Services di Analog Devices esplora il potenziale dell’Intelligente Edge e come è possibile assorbire la complessità rendendo la tecnologia disponibile al livello di astrazione desiderato dall’utente.
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.
Riferimenti
1 David Hayward. “The History of Linux: How Time has Shaped the Penguin.” TechRadar, November 2012
2 Dave McKay. “What Is the Linux Kernel, and Why Does It Matter?” How-To-Geek, November 2024
3 “A History of Microprocessor Transistor Count, 1971- 2013.” The Wagner Consulting Group, 2013
Michael O’Donnell è Managing Director, Software, Revenue and Services, Analog Devices.



