Tool per un software di qualità

La rapida e continua crescita del settore dei semiconduttori, l’uso di strumenti che assistono gli ingegneri semplificando e automatizzando la progettazione, lo sviluppo e il processo di integrazione hanno alimentato lo sviluppo e la produzione dell’elettronica e dei sistemi embedded degli ultimi 35 anni. La prevalenza nell’uso di strumenti di Electronic Design Automation è stato un fattore chiave per lo sviluppo della complessità dei chip, e le funzionalità hanno ulteriormente contribuito a spingere le aziende electronics-based in avanti, per soddisfare le sempre più crescenti richieste dei mercati consumer e industriali. L’utilizzo di Eda supporta la maggior parte della moderna progettazione di elettronica commerciale e industriale ed è particolarmente utile nell’odierno mondo fatto di complesse progettazioni, necessarie a causa dell’aumento delle caratteristiche e delle funzionalità dei dispositivi elettronici. L’uso di strumenti Eda aiuta gli ingegneri a spingere in avanti i confini della progettazione utilizzando la tecnologia più recente, e al contempo esplorando nuovi approcci progettuali e, cosa forse ancora più importante, consente la stima del consumo di energia e la modellazione delle prestazioni del sistema, entrambi impattanti sulla redditività commerciale. In parallelo con la progettazione di circuiti integrati e schede di sistema per ottenere migliori prestazioni del prodotto, la qualità del software è diventata una enorme responsabilità fondamentale per il successo di qualsiasi dispositivo elettronico. Per aiutare gli ingegneri, esiste un tale insieme di strumenti di automazione che copre lo sviluppo del software.

I tool Uml

I tool di Unified Modelling Language svolgono la stessa funzione degli strumenti Eda, offrendo agli ingegneri un modo rapido, semplice e visuale di definire l’architettura statica e il comportamento dinamico del software dei sistemi embedded e delle applicazioni che controlleranno il prodotto che si sta progettando. Proprio come gli strumenti Eda aiutano i progettisti hardware a specificare e simulare come i circuiti integrati opereranno insieme attraverso la verifica e la simulazione, così gli sviluppatori software devono anche verificare che il codice generato dal modello Uml sia adatto all’utilizzo attraverso test completi e di regolare periodicità utilizzando sia l’approccio statico che dinamico. La competizione nella corsa al time-to-market è una lotta senza tregua, e l’uso di strumenti automatizzati aiuta in questo senso. Tuttavia, è ugualmente importante sostenere e mantenere la qualità del software. L’adozione della Continuous Integration aiuta gli sviluppatori e gli ingegneri a risolvere con tranquillità questi problemi, soprattutto quando si utilizzano Eda e Uml. Uno dei vantaggi dell’utilizzo di Uml è la disponibilità di tool che consentono la generazione automatica di codice sorgente dalla specifica Uml, tuttavia questo codice richiede comunque una verifica approfondita. Ingegneri e sviluppatori hanno bisogno di strumenti che consentano loro la visibilità completa dei test, e che generino automaticamente dei test case per i frammenti di codice che non siano ancora completi. L’integrazione è una parte fondamentale dei processi di progettazione e di sviluppo, quindi gli sviluppatori devono essere in grado di eseguire i test di Integrazione con la stessa facilità con cui possono eseguire test di Unità. Tuttavia, mentre utilizzare strumenti Uml aiuta a generare codice più velocemente, questo non garantisce un codice privo di bug. Inoltre, negli attuali moderni ambienti DevOps, le variazioni del codice sotto forma di correzioni di bug potrebbero dover essere integrate direttamente nella baseline del codice di un dispositivo da operazioni di supporto. Gli aggiornamenti successivi devono spesso essere distribuiti immediatamente per risolvere problemi di qualità e affidabilità, generando la necessità di un approccio di tipo Continuous Integration.

L’approccio Continuous Integration

La Continuous Integration è destinata a essere abbinata al test di unità automatizzato. Storicamente si riteneva consigliabile eseguire tutti i test di Unità nell’ambiente locale dello sviluppatore, verificando che tutti questi test fossero stati superati prima di integrare il codice per evitare la diffusione di codice che potesse contenere errori. Con lo sviluppo delle problematiche dei circuiti integrati, è stato introdotto il concetto di server di compilazione per eseguire automaticamente i test di unità e, nel tempo, questo concetto è stato ampliato per includere anche l’applicazione di processi continui di Quality Assurance. Questa evoluzione migliora la qualità del software, riduce il time-to-market e costruisce una solida base per il futuro del codice riducendo la diffusione del “debito tecnologico”. La maggior parte dei problemi con il prodotto finale sono causati dall’inefficienza del test del software, o dalla sua incompletezza. Quando si utilizza del codice generato automaticamente, la visualizzazione della copertura del codice è vitale. Per rimanere in testa e a lungo nella corsa al time-to-market, l’utilizzo di strumenti di analisi che facciano uso di Automatic Testcase Generation può far risparmiare giorni di tempo prezioso. Non solo, ma l’utilizzo di Atg per effettuare “Fuzz Testing” può anche aiutare a limitare un pubblico fallimento del software. Alcuni strumenti di modellazione consentono agli utenti di generare dei vettori di test effettuando un’analisi dei requisiti definiti in precedenza, il che è un primo grande passo per garantire la qualità: tuttavia, senza la visibilità del codice sottostante, potrebbero essere stati persi casi limite nella traduzione del requisito o del modello nel codice sorgente, e i risultati potrebbero portare a delle vulnerabilità software sia esposte che da scoprire. Prima di mandare in produzione l’hardware e software completi, gli sviluppatori devono essere in grado di eseguire test su una simulazione del dispositivo per verificare il comportamento del sistema e la sua conformità con i requisiti stabiliti. Inoltre, dato che i prodotti evolvono nel corso del loro ciclo di vita con upgrade o aggiornamenti necessari a disponibilità di nuove funzionalità, miglioramenti e feedback del mercato, dovranno essere necessariamente fatti dei cambiamenti. Questi cambiamenti hanno implicazioni e gli sviluppatori devono poter capire dove queste modifiche del codice sorgente avranno ripercussioni ed effetti a catena, ed essere in grado di creare subito nuovi test per analizzare il nuovo codice.

Una piattaforma di software test dedicata

Utilizzare una piattaforma di test per il software dedicata permette agli ingegneri una supervisione intelligente che capisca quale sia il minor numero di test da eseguire nuovamente a partire da una modifica al codice sorgente. Come ulteriore esempio, se le istruzioni in virgola mobile vengono modificate nella progettazione dell’hardware, gli sviluppatori devono essere in grado di eseguire nuovamente tutti i test associati a tale funzione e, qualsiasi firmware dipendente che faccia affidamento su questa funzionalità, dovrà essere verificato nuovamente. A causa della velocità del ciclo di sviluppo nei mercati odierni, è necessaria una sincronizzazione tra l’uso degli strumenti Uml e degli strumenti di test del software per rilasciare prodotti che siano pronti per il mercato. Questo processo può essere semplificato utilizzando una piattaforma dove le integrazioni con i tool Uml siano immediatamente disponibili. Piattaforme come VectorCast si integrano con alcuni dei più conosciuti strumenti di modellazione e di progettazione quali Rational Rhapsody di Ibm, Simulink di MathWorks, Artisan Studio di Atego e Scade Suite di Esterel Technologies. La piattaforma per il test automatizzato VectorCast è complementare a questi strumenti combinando sia l’analisi statica che dinamica del codice sorgente del firmware e del software, nonché i test di simulazione hardware on-target.

Pubblica i tuoi commenti