Decadimento del codice
In svariati progetti software si sviluppano delle grandi quantità di codice sorgente che vengono poi tenute operative e mantenute per lunghi periodi di tempo. Durante questi periodi, a causa delle attività di manutenzione, la struttura interna dei codici sorgente si modifica, spesso degradando (come le rocce nella figura). Questo accade per molte ragioni, per esempio il codice viene modificato senza prestare la necessaria attenzione al “refactoring” (e quindi generando frammenti di codice duplicati) oppure senza verificare la coerenza di tali modifiche con la relativa documentazione a livello di requisiti e progettazione; come altro esempio, alcune porzioni di codice possono diventare così complicate nel tempo da non poter essere più facilmente capite e modificate; e così via…
Analisi Statica
L’analisi statica ed in particolare alcune metriche come la complessità ciclomatica, il numero di linee di codice per unità di compilazione o per sottoprogramma, così pure come la capacità di trovare frammenti di codice duplicati possono aiutare nell’identificare gli “hot-spots”, e cioè porzioni di codice che richiedono un’attenzione particolare. Seguire da vicino l’evoluzione nel tempo di questi “hot-spots” è la chiave per poter tenere sotto controllo una mole di codice sorgente considerevole.
Analisi Dinamica
L’Analisi Dinamica consiste di due diverse attività complementari:
- testing – unit testing, integration testing and acceptance testing – e cioè verificare che il sistema software funziona come previsto
- coverage analysis – e cioè verificare che durante il testing tutti gli statements ed i branches sono stati eseguiti
SonarQube è una piattaforma open source per la gestione della qualità del codice. SonarQube è un’applicazione web che produce reports sul codice duplicato, sugli standards di programmazione, i tests di unità , il code coverage, la complessità , i bugs potenziali, i commenti, la progettazione e l’architettura.
Il linguaggio primariamente supportato da SonarQube è Java.
Attività su Ada
Spazio IT e Inopus hanno sviluppato per AIRBUS Helicopters un SonarQube Ada Plugin, e cioè un “ponte”, che permette a SonarQube di gestire codice scritto in Ada. Il plugin utilizza AdaCore GNAT Metric oppure SCITOOLS Understand per l’Analisi Statica ed utilizza AdaCore GNATtest (Aunit) oppure Atego Apex Testmate per l’Analisi Dinamica. Le seguenti immagini mostrano l’integrazione di GNAT, Understand e Apex Testmate con SonarQube. Spazio IT ha dato questa presentazione alla conferenza Ada-Europe 2015.
Integrazione di SonarQube con GNAT, Understand e Apex Testmate (dettagli architetturali)
Nota bene: l’ultima versione supportata da Spazio IT dell’Ada Plugin è la 2.4.3, che funziona con SonarQube 7.1.
Attività sul C/C++
Oltre a lavorare sull’Ada Plugin, Spazio IT ha anche personalizzato il C/C++ Plugin (community version) per rendere SonarQube una piattaforma adatta all’esecuzione di attività di “Independent Verification and Validation” (IVV) sul software spaziale scritto in C/C++. Questo progetto è stato eseguito nel contesto di un programma dell’Agenzia Spaziale Europea che lo ha finanziato. Questo articolo, di NASA JPL, descrive attività di analisi statica per la ricerca di violazioni alle linee guida MISRA simili a quelle che Spazio IT sta eseguendo in questo periodo. Questa presentazione descrive le attività di Spazio IT nel contesto dell’Ispezione del Codice. Questa pagina web (in inglese) mostra quanto sia importante avere uno strumento in grado “incoraggiare/forzare” l’adozione di Coding Standards e Guidelines. Spazio IT ha dato questa presentazione ai TEC-ED & TEC-SW Final Presentation Days 2014 December.
Spazio IT ha dato questa presentazione sul “Bounded Model Checking and Abstract Interpretation” al “4th IEEE International Workshop on Metrology for Aerospace 2017”.
Spazio IT ha dato questa presentazione sulle “MISRA and CERT Guidelines” alla conferenza Ada-Europe 2018.
Spazio IT ha dato questa presentazione sul compilatore Clang ed i suoi analizzatori statici alla conferenza Ada-Europe 2019.
Spazio IT ha dato questa presentazione sull’Analisi Statica applicata a diversi Linguaggi di Programmazione lla conferenza Ada-Europe 2021.
Attività su Java
Spazio IT promuove attivamente l’utilizzo di SonarQube anche nel Mondo Java. Questa presentazione spiega perchè.
Contattate Spazio IT per sviluppare la Vostra piattaforma per il controllo della Qualità del Codice basata su SonarQube. (Linguaggi Supportati: Java, C, C++, C#, Ada)
Il codice di qualità , come la musica di qualità , richiede dedizione, disciplina, metodo e passione.