Application software: l’analisi della qualità strutturale

La seconda edizione del ‘Crash Report’ di Cast sullo stato della qualità delle business application mostra una maggiore propensione verso problematiche quali performance
e sicurezza. Poca attenzione invece alle caratteristiche della qualità strutturale come, per esempio, la capacità del software di adattarsi a nuovi contesti, segno di un metodo di sviluppo ancora poco proattivo nei confronti del business

Pubblicato il 23 Mag 2012

Robustezza, sicurezza, performance, trasferibilità (da un team all’altro) e ‘changeability’ (cioè capacità di trasformarsi e adattarsi a nuovi contesti) sono le cinque caratteristiche della qualità strutturale del software che Cast, azienda che fornisce soluzioni di Application Intelligence, ha preso in esame per fotografare i global trend legati alla software quality, in particolare delle business application.

Va subito precisato che per qualità strutturale si intende la “qualità non funzionale di un’applicazione software” che indica quanto il codice sia scritto bene dalla prospettiva ingegneristica. Spesso si riferisce alla qualità tecnica e interna e indica quanto un’applicazione sia sicura e garantita da violazioni proprio grazie alle pratiche di coding utilizzate per svilupparla.

La fotografia riportata nel secondo report che l’azienda ha recentemente pubblicato, “The Crash Report 2011/12” (Cast Report on Application Software Health), deriva dall’analisi e dalla comparazione di 365 milioni di righe di codice (Mloc – million lines of code), corrispondenti a 11,3 milioni di Backfired Function Points (metrica della dimensione funzionale di un’applicazione), contenute in 745 applicationi presenti in 160 organizzazioni (dislocate tra Usa, Europa e India). Un report decisamente più dettagliato e ricco del precedente, realizzato con l’analisi di 288 applicazioni (108 Mloc) presenti in 75 organizzazioni, dedotto dai dati emersi da un algoritmo di analisi che Cast ha utilizzato per misurare “il peso e la severità” di ogni singola violazione e la sua rilevanza rispetto a ogni caratteristica della qualità strutturale che, come abbiamo accennato, sono:

  1. robustezza: stabilità di un’applicazione e probabilità di introduzione di difetti quando questa viene modificata;
  2. performance: efficienza dei vari livelli software che compongono l’architettura di un’applicazione;
  3. sicurezza: l’abilità insista in un’applicazione di prevenire intrusion non autorizzate;
  4. trasferibilità: facilità con cui un’applicazione può essere trasferita da un team all’altro agevolando il lavoro e la produttività di team diversificati che operano sulle applicazioni in momenti e contesti differenti;
  5. variabilità: capacità di modificare e trasformare un’applicazione in modo rapido e semplice in base al variare di nuove esigenze e scenari.

Cast per la produzione di questo report ha preso in esame e misurato anche il cosiddetto “Total Quality Index”, un sistema di punteggio e computo che tiene conto di un rating delle cinque caratteristiche della qualità sopra descritte.

Le difficoltà di un’analisi efficace

L’analisi della qualità strutturale del software si riferisce alla validità ingegneristica dell’architettura e del codice di un’applicazione, nonché alla sua corretta implementazione in funzione dei requirement funzionali delle organizzazioni e degli utenti. Valutare un’applicazione in base ai ‘difetti’ strutturali di qualità è un’operazione piuttosto critica e complessa perché non esistono ancora sistemi e approcci standard al software testing ampiamente diffusi (le metodologie standard non sono ancora adottate in maniera massiva; all’interno delle aziende si trovano quindi sistemi e metodi diversificati, molto spesso ‘artigianali’) e perché parliamo di difetti che verosimilmente impattano sull’operatività come interruzioni nella disponibilità del servizio applicativo, calo delle performance, violazioni da parte di user non autorizzati, data corruption (alterazione dei dati), ecc.

Tuttavia, contrariamente alle aspettative degli stessi autori del report (tutti del Cast Research Labs: Jay Sappidi, senior director; Bill Curtis, senior vice president e chief scientist; Alexandra Szynkarski, research associate), emergono alcune considerazioni importanti: le differenze nella structural quality non sembrano essere collegate alle dimensioni delle applicazioni, né alle scelte di sviluppo onshore o offshore o ai team in-house o in outsoursing. Questo significa che questo tipo di analisi è più efficace di quanto solitamente si ritiene perché la qualità del software analizzata non è minata dai “soliti miti” che vedono nell’outsourcing o nella dimensione e complessità architetturale di un’applicazione i maggiori rischi di difetti.

Per riuscire a delineare alcuni punti saldi di un’analisi che si rivela complessa Cast ha quindi deciso di sviluppare un benchmark repository, chiamato Appmarq, alimentato dai dati presi in esame di volta in volta dalla società (che derivano dalle analisi effettuate su un mix di applicazioni) utile a verificare non solo lo stato della qualità strutturale e i global trend in atto ma anche la validità delle misurazioni eseguite ogni anno in modo da modificare eventualmente il tipo di analisi in base a nuovi scenari.

Performance e sicurezza i due punti focali

Entrando nel dettaglio delle analisi svolte, dal report 2011/2012 emerge una maggior focalizzazione da parte delle aziende su caratteristiche quali performance e sicurezza, soprattutto quando riferite ad applicazioni mission critical (figure 1 e 2). Minore attenzione è rivolta invece ad aspetti quali la trasferibilità e la changeability, forse perché manca ancora la consapevolezza del fatto che tali caratteristiche impattano sul “cost of ownership”, che aumenta, e sulla capacità di risposta, minore, ai business need.

20120523Img12

Entrando nel merito delle tecnologie, in particolare dei linguaggi di programmazione e, quindi, del codice applicativo, a risultare più sicuro è il Cobol e il più rischioso sotto il profilo delle performance Java EE (figure 3 e 4).

20120524Img34

Il Cobol, tuttavia, è anche il linguaggio che, rispetto agli altri utilizzati dalle aziende prese in esame (.NET, C, C++, Java EE, Oracle Forms, Oracle Erp, Visual Basic), presenta il maggior numero di componenti software che ne aumentano il livello di complessità. Da un’analisi ancora più approfondita, però, deducendo il Total Quality Index e comparandolo con la dimensione delle applicazioni Cobol analizzate, emerge chiaramente che la complessità di questo codice e la dimensione delle applicazioni che ne derivano non sono necessariamente causa di maggiori difetti a livello di qualità strutturale (figura 5).

20120524Img5

Dall’analisi delle singole industry è interessante sottolineare come caratteristiche quali trasferibilità e variabilità, che in molte aziende ricevono minor attenzione, diventano, al contrario, elementi fondamentali di analisi in settori come quelli dei Financial Services e delle Telco (ma ci preme sottolineare che un punteggio medio alto lo hanno riservato anche aziende del mondo Manufacturing). Il settore Government, cioè la Pubblica Amministrazione, resta invece focalizzato su sicurezza e performance (trasferibilità e changeability non sembrano preoccupare particolarmente anche se, supponiamo noi, i team di sviluppo possano essere soggetti a cambiamenti con maggiore frequenza rispetto ad altre realtà e il mutamento degli scenari e delle esigenze è ormai frequente anche per le aziende pubbliche).

Metodologie: quelle custom sono rischiose

L’analisi non trascura le metodologie di sviluppo applicativo adottate dalle varie realtà prese in esame e ne emerge un punteggio di Total Quality Index decisamente basso (poco più di 2,5 su un range di punteggio da 1 a 4) laddove lo sviluppo è sostenuto da metodologie personalizzate e “home made”. Il Total Quality Index risulta invece più elevato quando l’organizzazione adotta metodologie standard quali Agile e Waterfall (ancora più elevato il punteggio in presenza della combinazione delle due metodologie) (figura 6a).

Entrando nell’analisi delle singole caratteristiche di qualità strutturale, Waterfall risulta la miglior metodologia per la trasferibilità e la changeability delle applicazioni (figure 6b e 6c).

20120524Img6

Forse perché il metodo Waterfall, letteralmente ‘cascata’, rappresenta un modello di ciclo di vita e di processo del software secondo cui la realizzazione di un prodotto software è dato da una sequenza di fasi ben strutturata che tiene conto dell’analisi dei requisiti, del progetto, sviluppo, collaudo, integrazione e manutenzione. Ciascuna di queste fasi produce un ben preciso output che viene utilizzato come input per la fase successiva (da cui la metafora della cascata).

In conclusione, però, gli autori del Crash Report 2011/2012 sottolineano come, nonostante elementi quali trasferibilità e changeability inizino a essere maggiormente considerati rispetto a qualche anno fa, le caratteristiche della qualità strutturale del software che ancora prevalgono in fase di sviluppo sono robustezza, performance, sicurezza: segno, sostengono i curatori del lavoro, di uno sviluppo software che guarda ancora in modo “reattivo” al business, cercando di fare attenzione soprattutto (e quasi esclusivamente) ai business requirement del momento. Servirebbe, al contrario, una maggiore proattività anche nell’ambito dello sviluppo applicativo in modo da creare soluzioni in grado di trasformarsi e adattarsi rapidamente e facilmente alle nuove esigenze di business, senza dover ripartire da capo, o quasi, con un nuovo processo software.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 3