Il patrimonio applicativo deve essere salvaguardato sotto diversi punti di vista. Un elemento sul quale concentrare l’attenzione è sicuramente il codice sorgente con il quale le applicazioni sono state scritte.

L’analisi statica analizza il codice sorgente e mette in evidenza le problematiche riscontrate sulla base di profili di regole di verifica che possono essere definiti in relazione agli standard aziendali in uso.

Attraverso un processo di Continuous Inspection, è possibile mettere sotto controllo il codice delle applicazioni già durante la fase di sviluppo del software, anticipando il rilevamento di anomalie in una fase molto iniziale.

Generalmente il controllo del codice di un’applicazione parte da una baseline in un momento iniziale e successivamente viene verificato il trend delle metriche di qualità raccolte nel tempo.

E' fondamentale che l’analisi di una applicazione in evoluzione venga ripetuta nel tempo per tracciare tempestivamente le modifiche dei sorgenti e ricalcolare il nuovo valore della qualità complessiva dell’applicativo. Per ottenere ciò risulta utile l’utilizzo di prodotti di Continous Integration che permettono l’automazione dei processi di analisi. La valorizzazione della qualità attuale dell’applicativo può in questo modo essere messa a confronto con i risultati delle precedenti analisi e a sua volta essere preso a campione con quelle future.

L’assenza di una verifica formale della qualità del codice sorgente espone l’owner del parco software a rischi che possono riguardare diversi aspetti:
  • Robustezza: codice poco robusto può rendere poco affidabile un’applicazione mettendo a nudo vulnerabilità che potrebbero causare malfunzionamenti. L’analisi statica può dare evidenza di problematiche di questo tipo in modo immediato e preciso abbattendo i costi legati al bug fix.
  • Manutenibilità: il costo di manutenzione delle applicazioni software è generalmente maggiore del costi di sviluppo dell’applicazione stessa. Un basso livello di manutenibilità del codice sorgente implica elevati costi nella gestione delle change; esistono diversi indicatori in grado di misurare oggettivamente la manutenibilità del nostro codice attraverso tecniche di analisi statica.
  • Efficienza: spesso il codice può essere scritto in diversi modi per poter realizzare una determinata funzionalità. Non tutti i modi hanno gli stessi livelli di performance. La verifica del codice sorgente può mettere in evidenza dei miglioramenti dello stesso in grado di rendere maggiormente performante la mia applicazione, abbattendo i costi di infrastruttura necessari a supportarla.
  • Sicurezza: attraverso tecniche di analisi statica è possibile evidenziare falle nel codice ad aspetti di sicurezza applicativa. Tali tecniche possono supportare la più ampia attività legata alla sicurezza applicativa che viene realizzata attraverso tecniche di analisi dinamica.
Una metrica che viene spesso utilizzata per sintetizzare la qualità complessiva è il Technical Debt. E’ una metafora per riferirsi alle eventuali conseguenze di uno sviluppo poco curato del software. Il debito può essere pensato come una attività che deve essere fatta prima che un determinato progetto possa essere considerato completo. Se il debito non viene sanato, tenderà ad accumulare interessi, il che renderà difficile attuare le modifiche in seguito.
Le tecniche di analisi statica generalmente vengono affiancate da modelli di qualità che fanno riferimento alla normativa ISO/IEC 9126, confluita ora nel sistema ISO/IEC 25000:2005 e successivamente ISO/IEC 25010:2011. L’implementazione di tali normative è stata fatta con diversi modelli. Uno dei più utilizzati è il modello SQALE (Software Quality Assessment based on Lifecycle Expectations) che si basa una serie di caratteristiche, sotto caratteristiche e regole per misurare la qualità delle applicazioni. Le caratteristiche di primo livello si basano sulle fasi del ciclo di vita del Software ognuna delle quali contiene una serie di regole che vengono automaticamente verificate dai tools che implementano tale modello.
Uno dei tool maggiormente utilizzati nelle Software Factory è SonarQube, che consente di introdurre il controllo formale fin dall'inizio del ciclo di vita del software, attraverso l’introduzione di Quality Gate nelle fasi tipiche di passaggio tra lo sviluppo e la verifica e tra la verifica e la produzione.