Image

Code Review

Ottimizzazione dei processi di sviluppo e di utilizzazione delle risorse.

Code Review

La revisione del codice è un’attività che rientra nelle pratiche di QA (quality assurance) in ambito di sviluppo software. Può essere alternata a fasi attive di sviluppo, anche nel contesto di metodologie agile.

L’ispezione dei sorgenti con finalità di revisione richiede che almeno uno dei soggetti coinvolti non sia l’autore del codice stesso. Allo stesso tempo è necessario che il revisore abbia le competenze necessarie ad una valutazione critica dei sorgenti.

Gli obbiettivi dell'analisi

La revisione del codice è un procedimento a latere il testing o il debugging. Di norma essa si concentra su altri aspetti, quali la correttezza formale degli algoritmi e la valutazione delle strategie di ottimizzazione.

Tuttavia, la revisione può interessare anche problematiche relative alla programmazione asincrona e la sicurezza.

Programmazione asincrona

In un contesto multi-threaded è possibile eseguire task in background mantenendo l'interfaccia utente sempre reattiva. Ciò garantisce all'utente il pieno controllo dell'applicazione in ogni momento ed, in generale, di ottenere un incremento di performance.

Inoltre, la programmazione asincrona è un requisito fondamentale nel caso di applicazioni distribuite. Tuttavia, essa comporta complicazioni aggiunte per la gestione dello stato dell'applicazione che possono degenerare in deadlock, race conditions e perdita di consistenza.

Questi problemi sono difficili da rilevare con la sola analisi statica dei sorgenti perchè nella maggior parte dei casi essi sono imputabili a questioni di timing e pertanto emergono solo a run-time.

La nostra esperienza nella programmazione di applicazioni ad elevato livello di parallelismo ci consente di rilevare eventuali problemi di sincronizzazione mediante l'analisi dinamica dell'applicazione, grazie l'uso di appositi strumenti di debugging e monitoraggio.

Sicurezza

La sicurezza è un requisito fondamentale per la gestione degli accessi alle risorse e dei privilegi associati ad un'applicazione ed i suoi utenti. Un'applicazione contenente degli errori di programmazione può esporre gli utenti a rischi di sicurezza, mettendo a repentaglio l'integrità e la riservatezza dei dati da essi utilizzati.

Siamo esperti nell'implementazione di schemi di autenticazione e cifratura per applicazioni web e nell'analisi ed implementazione di soluzioni anti-tampering per applicazioni standalone in ambito desktop e middleware lato server.

Linguaggi di programmazione

Come progettisti e sviluppatori abbiamo acquisito competenze specifiche per quanto riguarda la sintassi di vari linguaggi di programmazione. Abbiamo inoltre una conoscenza approfondita delle regole semantiche e dei costrutti idiomatici di molti linguaggi di alto livello.

I linguaggi in cui siamo particolarmente fluenti sono:

  • C++
  • C
  • C#
  • Java
  • PHP
  • JavaScript
  • Python
  • GLSL

Design pattern, framework e librerie

La revisione del codice non può prescindere da un'analisi architetturale dell'applicazione nella sua interezza. La nostra competenza comprende l'uso di svariati framework e librerie, nonchè la conoscenza approfondita dei design pattern su cui sono basati:

  • Application framework: Qt/C++ e QML, Microsoft .NET, Node.js, Angular
  • Web front-end: jQuery, Angular, React, librerie CSS-in-JavaScript, Vaadin
  • Web back-end: Node.js, Express, Laravel
  • 3D: OpenGL, DirectX
  • Geospatial: GDAL/OGR, proj4, PostGIS

Ti serve un esperto per la revisione della tua codebase?