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: