INSIDE REPORT COmE E PERChé glI STRumENTI auTOmaTICI DI
Transcript
INSIDE REPORT COmE E PERChé glI STRumENTI auTOmaTICI DI
Maggio 2015 INSIDE REPORT Come e perché gli strumenti automatici di analisi garantiscono un software di qualità Software Code Analyzer, ovvero SCA: sintattici o, più evoluti, semantici. Sono fondamentali nel Software Lifecycle Management e giustificano il ROI. Lo confermano le aziende in una survey condotta da ICT4Executive sulla qualità del software in Italia in collaborazione con: software di qualità librerie middleware user test ADA browser SCA 3.0 SAP software code analyzer firmware CMS ADA debugging ABAT c++ java diagnostica compilatori patch management SAAS </> HTML integration test visual basic RUBY driver testing analisi statica oberon APP system test PHP RPG </> responsive codice sviluppo interpreti ERP business continuity sistemi operativi collaudo antivirus technical test android programmazione ROI .NET SQL D SOFTWARE AL Sviluppo software: quali sono le nuove sfide della programmazione IN A BOX AS A S ARE ER TW Il time to market è tiranno e alla programmazione si chiede maggiore AL SO F velocità nell’ideazione, nella scrittura dei codici e nella messa in produzione di qualsiasi applicazione. Nel frattempo gli sviluppatori software hanno abbracciato nuovi linguaggi e nuovi metodi di sviluppo, imparando ad avvalersi P di strumenti ausiliari e autoAP E matici di vario tipo, capaci di intervenire a livello sintattico o a livello semantico A P P durante la programmazio31 ne per intercettare errori e inefficienze e verificare così la qualità del codice rilasciato. ONDO DEL M L L � � A La diversificazione delle esigenze del mercato e una domanda crescente di soluzioni sempre più personalizzate in funzione delle abitudini e dei dispositivi utilizzati (smartphone e tablet in testa), ha abituato le persone alle filosofie più pratiche del Software As a Service, on demand e pay per use e/o delle app. Tutto questo ha avuto un forte impatto sullo sviluppo applicativo, perché ha portato a un’accelerazione incrementale dei tempi di produzione e di rilascio, con un proliferare di nuove soluzioni, diversificate per target e funzionalità. CE VI I l software è l’intelligenza gestionale del business. Man mano che l’informatizzazione ha permeato tutti i gangli delle organizzazioni, le esigenze si sono diversificate. Così la programmazione si è specializzata su più linguaggi e su più orizzonti di sviluppo: firmware, software di base, driver e un’infinità di programmi applicativi, da quelli per la produttività individuale ai videogiochi, dai browser al client di posta, dai player audio/video alle applicazioni di messaging e di chat, dai programmi batch od on line a supporto della sicurezza a quelli per il funzionamento automatico o supportato dall’automazione di procedure per il monitoraggio e il controllo di macchinari e/o dispositivi elettronici. 3 < </ Grazie a questi tool di analisi, detti SCA (Software Code Analyzer), è possibile monitorare e intercettare gli errori intercorsi nella scrittura dei vari codici di programmazione, garantendo così la qualità del software rilasciato. I motivi per cui sono diventati indispensabili sono legati alla rapidissima evoluzione delle tecnologie e dei mercati. cosa è cambiato e cosa sta cambiando </ e sviluppo applicativo < a livello di progettazione IERI Ieri il software abitava solo i computer industriali. L’arrivo dei desktop e delle soluzioni sempre più portatili ha dato vita a un’accelerazione dello sviluppo tale per cui l’intelligenza informatica è diventata parte integrante di una moltitudine di dispositivi fissi e mobili, secondo un’intelligenza distribuita in modalità tradizionale o in cloud, con formule di erogazione ubique e pervasive. La smartizzazione degli oggetti oggi richiede sempre nuova intelligenza di sistema, ma anche nuove vision a supporto di una progettazione capace di immaginare le applicazioni di un futuro ad alto tasso di funzionalità. OGGI LA SFIDA PER GLI SVILUPPATORI È RIUSCIRE A REALIZZARE SOFTWARE PIÙ SICURI IN TERMINI DI PERFORMANCE RESPONSIVE (capaci di conformarsi a qualsiasi tipo di schermo) COSTANTEMENTE AGGIORNATI ADATTI A TUTTI I TIPI DI SISTEMA OPERATIVI ADATTI A TUTTI I TIPI DI BROWSER ADATTI A QUALSIASI MODALITÀ DI INTERAZIONE: TASTIERA, MOUSE, PENNA, MODALITÀ TOUCH SCREEN, MOTION CAPTURE, INTERAZIONI BIOMETRICHE 4 SVILUPPATI IN MODALITÀ COLLABORATIVA E IN TEMPI MOLTO PIÙ RAPIDI LE DIFFERENZE SOFTWARE DI DIAGNOSTICA FIRMWAR E PRO GRA MMI CO APPL NT ICAT EN SO IVI TM FTW AN AR AG ED EM EN IS TS YS YST TEM EM MA NA GE ME NT MIDD ERP qua lit à ANTIVIRUS Nella compilazione del codice la quanCOM PILA tità di comandi da TOR I ENT inputare è enorme: per ERP R I questo motivo nel ciclo SE A BR OW PP dello sviluppo test e collaudi sono momenti SE R fondamentali per assicurare la qualità dei risultati. Questi difetti possono risultare bloccanti per l’applicazione, oppure possono comportare notevoli inefficienze: y Gli SCA 3.0 sono analizzatori statici di tipo semantico basati su algoritmi più sofisticati. Usando l’Intelligenza artificiale, effettuano un’analisi di tipo organico dell’intero codice. La scansione del codice compilato, infatti, viene verificata in modo integrale, consentendo così di mapparne la correttezza in modo scientifico, aiutando a risolvere anche il debugging. ER SCA STATICA DI TIPO SEMANTICO SIST P Gli analizzatori statici di tipo sintattico si limitano a controllare l’aderenza a certi schemi o pattern sintattici di scrittura del codice che statisticamente escludono la presenza di alcuni errori., dunque, non effettuano molte o nessuna verifica di correttezza semantica del codice, cioè non coprono l’attività di debugging. TIVI PERA O I EM AP SCA STATICA DI TIPO SINTATTICO E RI RE B LI ss cont sine inu bu it ? ar oftw e sign ifi ls e d ca La programmazione del software, infatti, consiste nella scrittura progressiva dei codici corrispondenti alle varie funzionalità di comando a cui mira l’ingegnerizzazione dello sviluppo. La procedura viene svolta manualmente e, indipendentemente dello stile e del linguaggio utilizzato dal programmatore, il risultato ha sempre dei margini di errore. Sono questi errori di programmazione a generare malfunzionamenti del software, per cui il sistema o non fa quello che l’utente si aspetta, o manifesta difetti (in inglese: bug). DR IV G li SCA sono progettati per funzionare in modo automatico, introducendo proattività nello sviluppo per accelerare tempi di collaudo e risoluzioni degli errori, giocando d’anticipo rispetto all’individuazione di potenziali problemi di performance, difetti del software o vulnerabilità del codice. RE LEWA automatici di verifica e di testing I INTERPRET SW di qualità: l’importanza degli strumenti nei tempi di esecuzione nel consumo di risorse nel grado di manutenibilità della soluzione Un programma, infatti, può essere sintatticamente corretto ma avere degli errori di stile rispetto alle raccomandazioni e alle best practice di programmazione. È per ovviare a questi problemi che nel ciclo di sviluppo del software diverse fasi della programmazione includono test e collaudi allo scopo di rilevare i difetti e intercettare i malfunzionamenti, riducendo così la probabilità di errori in fase di rilascio. Nessun collaudo, però, porta a zero tale probabilità: le possibili combinazioni di valori di input validi sono infinite, e non possono essere riprodotte in un tempo ragionevole. Ecco perché gli SCA sono indispensabili e, garantendo massimo ritorno dell’investimento (ROI - Return of Investment). 5 Sca nel software lifecycle management Nello sviluppo di un software utilizzare gli SCA , ovvero gli strumenti di analisi statica, consente di velocizzare a vari livelli la diagnostica in fase di codifica, di test e nelle fasi successive legate alla gestione delle patch e degli aggiornamenti. La valenza degli SCA è strategica anche rispetto al tema della sicurezza: gli hacker, infatti, è principalmente sui difetti e sui malfunzionamenti di un programma che costruiscono i loro attacchi. Garantendo la qualità dello sviluppo, gli strumenti automatici di analisi non solo aumentano l’efficienza del processo di programmazione e la gratificazione degli utilizzatori, ma contribuiscono anche a garantire l’invulnerabilità del software e quindi la reputazione dell’azienda che rilascia la soluzione. Anticipare l’uso di uno SCA nel SLM, dunque, consente di snellire i processi, abbattere i costi di debugging e ottenere software più sicuri, funzionali, utilizzabili, disponibili, efficienti, manutenibili e portabili. 6 Software di qualità: un’analisi dello sviluppo applicativo in Italia Che si tratti di aziende operanti nel settore metalmeccanico, chimico, finanziario, edile, bancario, GDO e retail, logistica e trasporti, in Italia oltre il 60% delle aziende ha al suo interno una figura se non addirittura un team preposto al controllo qualità del software. I motivi sono diversi, anche se il driver principale per oltre la metà delle aziende sono senz’altro le certificazioni (ISO in primis), che contribuiscono non solo a introdurre adeguate metriche di controllo ma anche ad avvalorare il risultato della produzione agli occhi degli utilizzatori finali. Delle aziende end user è il 58% ad avere una figura o addirittura un’area preposta al controllo qualità del software mentre i partner del canale arrivano al 65%. Il controllo di qualità risulta un asset importantissimo della programmazione. LE OPZIONI ? Oggi sul mercato esistono vari strumenti di analisi statica del software: alcuni effettuano un’analisi del codice sorgente mentre altri analizzano il codice compilato. Le soluzioni più avanzate permettono anche modalità di personalizzazione, consentendo la costruzione di nuove analisi. A livello di fruizione è possibile scegliere anche tra soluzioni utilizzabili tramite server aziendale in modalità condivisa tra più utenti o soluzioni in cloud. Per tutte le organizzazioni i controlli sono ripartiti sulle tre aree chiave dello sviluppo: vulnerabilità, performance e attività di debugging, ovvero su tutta quella serie di attività legate all’intercettazione e alla risoluzione dei bug rilevati nella compilazione delle sequenze dei vari codici di comando. 7 Java e Android in Italia Dalla survey emerge come oltre tre quarti delle aziende italiane intervistate sviluppi in Java e Android. Segue una percentuale più ridotta che continua a utilizzare linguaggi più antichi legati alle attività di supporto e manutenzione dei sistemi legacy come RPG o C++, e un’altra piccola parte legata allo sviluppo di linguaggi nelle varianti PHP, Abat, Sap e .Net. i vantaggi nell’uso di strumenti ausiliari e automatici per l’analisi e la verifica Tutte le aziende concordano nell’affermare che, grazie al controllo qualità e all’utilizzo di strumenti ausiliari a supporto delle analisi e delle verifiche del software, hanno ottenuto un elevato miglioramento della qualità del software sviluppato e una riduzione dei tempi di debugging. Tra gli strumenti per l’analisi statica più utilizzati dagli end user figurano Coverity, SonarQube, FindBugs, Klocwork, PMD e Checkstyle, mentre Fortify, FindBugs, SonarQube, Cast e Julia sono quelli più usati dal canale. La survey rivela come gli strumenti che vanno per la maggiore sono ancora quelli orientati a un pattern matching sintattico più che quelli di ultima generazione come Julia, incentrati su un’analisi semantica, capaci di effettuare un debugging fattivo e completo. Il livello evolutivo degli SCA utilizzati in Italia, insomma, non arriva a sfruttare quell’intelligenza artificiale che consente di ragionare sull’ordine di esecuzione delle istruzioni del codice compilato, concentrandosi più su ragionamenti locali alla singola istruzione. 8 JULIA LO SCA 3.0 CHE GARANTISCE LA QUALITÀ DELLA PROGRAMMAZIONE JAVA E ANDROID SOF TW E DI QUALITÀ AR SCA 3.0 Julia è l’unico analizzatore riconosciuto a livello internazionale che al termine della diagnosi certifica l’assenza di possibili errori. Il suo essere uno SCA 3.0 lo rende una soluzione unica, includendo il più potente verificatore di errori di puntatore a null (NullPointerException) e un verificatore di terminazione per programmi reali, con modalità di controllo continuamente potenziate. La soluzione si compone di un insieme moduli di analisi, detti checker. Ogni checker è dedicato alla verifica di una particolare vulnerabilità del software. I checker sono tra loro indipendenti e possono essere liberamente inclusi nell’analisi. Ogni checker produce diversi tipi di segnalazioni, dette warning. I warning segnalano diverse criticità legate all’analisi specifica del checker e sono classificati in tre classi principali: • Bug - errori nel codice che possono avere un impatto molto serio a tempo di esecuzione: per esempio, potrebbero dare origine a NullPointerException, ClassCastException, grosse imprecisioni nei dati o anche cicli infiniti. • Efficiency - soluzioni adottate nel codice che potrebbero influenzare negativamente IL PARTNER Julia è analizzatore statico semantico, completamente automatico. SCA 3.0 basato sulla teoria scientifica dell’interpretazione astratta, utilizza tecniche di intelligenza artificiale per interpretare il codice compilato e può essere utilizzato on premise o in cloud l’efficienza del programma; per esempio, potrebbero rendere il programma difficile da mantenere, portare il tempo di esecuzione ad essere inutilmente elevato o generare un uso eccessivo di risorse di sistema. • Style - parti di codice che non seguono le convenzioni Java; per esempio nell’uso di keywords, nei nomi delle keywords e delle variabili e nella sintassi degli identificatori definiti dall’utente. Julia è una società software fondata nel 2010 come spin-off dell'Università di Verona. La sua mission è la produzione di strumenti e l’erogazione di servizi per la verifica formale ed automatica di programmi informatici, tramite l’utilizzo dell’interpretazione astratta, una teoria matematica per l’analisi statica del software. Julia ha collaborato e collabora con il mondo nazionale e internazionale delle Università, U.S. AIR Force, gruppi assicurativi e bancari multinazionali, contribuendo a realizzare numerosi progetti di analisi statica e verifica software. Inoltre, ha ottenuto premi e riconoscimenti a livello nazionale ed internazionale vincendo, tra gli altri, il Java Bytecode Recursive Contest e il Java Non-Recursive Contest della Termination Competion (U.S.A.). www.juliasoft.com INSIDE REPORT Maggio 2015 ©ICT4executive www.ict4executive.it QUALITÀ in collaborazione con: