Come gestire il Debito Tecnico con CAST Highlight

By on
 

Cos'è il Debito Tecnico

Riprendiamo la definizione fornita da Wikipedia: “Il debito tecnico è una metafora inventata da Ward Cunningham per descrivere le possibili complicazioni che subentrano in un progetto, tipicamente di svilupposoftware, qualora non venissero adottate adeguate azioni volte a mantenerne bassa la complessità. Analogamente a quanto avviene nel mondo finanziario, in cui per sanare un debito occorre pagarne anche gli interessi, lo sforzo per recuperare un progetto sviluppato senza una corretta metodologia può aumentare anche considerevolmente nel tempo, se non si interviene tempestivamente”
Il Debito Tecnico è perciò il risultato di un processo di sviluppo software non ottimale. 

Quali le cause 

Ci sono diversi fattori che producono Debito Tecnico, di seguito, sempre da Wikipedia, ne elenchiamo alcune: 

  • Esigenze di mercato, ossia l'urgenza di avere un prodotto da vendere prima possibile, quindi rilasciato prima che le dovute modifiche siano complete;
  • Mancanza di conoscenza del processo, in cui chi prende le decisioni è ignaro delle implicazioni sottostanti (o decide di ignorarle);
  • Mancanza di disaccoppiamento, quando lo sviluppo delle componenti del programma avviene ignorando il paradigma di programmazione modulare o comunque senza l'intento di mantenere basso il legame di dipendenza tra i sottosistemi;
  • Assenza di procedure di test, che incoraggia correzioni di bug "al volo" che non contemplano possibili effetti secondari;
  • Assenza di documentazione, dove il codice viene sviluppato "a braccio", senza documentazione/specifica dei requisiti. Il lavoro per produrre la suddetta documentazione a posteriori, e la necessaria verifica di corrispondenza con quanto già codificato, rappresenta un debito che occorre prima o poi saldare; 
  • Mancanza di collaborazione, causa di degrado dell'efficienza del processo di sviluppo. Un'altra motivazione potrebbe ascriversi ad un affiancamento delle nuove risorse insufficiente o assente da parte delle figure professionali con maggior esperienza;
  • Mancanza di conoscenza, quando il programmatore semplicemente non ha le competenze per scrivere del codice di qualità;
  • IIntroduzione di dipendenze senza criterio, quando lo sviluppatore introduce nuove tecnologie con costi impliciti di mantenimento (di licenza, di know how, di interoperabilità, di manutenibilità, di supporto esterno) per risolvere "facilmente" i problemi.
Potremmo semplificare dicendo che le cause sono dovute ad inadeguatezze di: Risorse, Competenze e Processi.
 

Come affrontareil debito Tecnico con Cast Highlight

Spesso ci siamo trovati a fronteggiare situazioni dove il Debito Tecnico era stato trascurato per anni con l’effetto che apportare anche una piccola modifica a una applicazione richiedeva revisionare enormi porzioni di codice o ricostruire a ritroso un intero applicativo. La piattaforma CAST Highlight (in seguito HL) effettua in breve tempo l’analisi automatizzata del codice sorgente di centinaia di applicazioni fornendo poi di questo Portfolio Applicativo informazioni riguardo a: 

  1. Cloud Readiness 
  1. Software Composition 
  1. Software Health 
  1. Private Data Detection 

All’interno della Software Health, che è un indicatore dello stato di salute del Portfolio Applicativo (o del singolo applicativo), viene fornito il dettaglio del suo Debito Tecnico. 

Come viene calcolato 

HL stima il debito tecnico sulla base delle informazioni rilevate dall’analisi effettuata sul codice degli applicativi scansionati e quindi sul rispettivo numero di occorrenze (violazioni alle ‘best practice’ di programmazione) rilevate durante questa scansione.

Vengono quindi applicate le seguenti considerazioni: 

– Ogni analisi del codice per ciascuna tecnologia ha la propria stima del lavoro espressa in minuti, ore o giorni-persona. Questo sforzo è il tempo stimato necessario per correggere un'occorrenza dell'analisi del codice corrispondente. 

– Quando un'applicazione viene integrata, CAST Highlight moltiplica le occorrenze trovate per ogni analisi del codice in base alla stima dello sforzo. 

– La stima del debito tecnico totale è uguale alla somma di tutte le stime dello sforzo di analisi del codice. Il valore grezzo del Debito Tecnico nelle dashboard è espresso in ore o giorni persona (8 ore al giorno). 

Su Cast HL è presente un modello, calibrato dal team di sviluppo del prodotto, con indicata la priorità e lo sforzo necessario per la risoluzione delle occorrenze (vedi Figura 1), differenziandole per Tecnologia. 

Modello delleffort per il debito tecnicoFigura 1: Modello dell’effort per il Debito Tecnico 

Poiché si possono avere opinioni diverse sul tempo necessario per correggere informazioni dettagliate sul codice, sia la priorità che le stime degli sforzi sono completamente personalizzabili. 

Come viene visualizzato e analizzato

Le viste fornite da Cast HL del Debito Tecnico sul portafoglio di applicazioni sono volte a stabilire le priorità e quantificare gli sforzi di riparazione, in particolare si tende a dare delle indicazioni che aiutano gli utenti a capire: 

  • Come è distribuito il Debito nelle diverse applicazioni (vedi Figura 2), ovvero quante applicazioni del portfolio hanno un Debito (calcolato in gg uomo) inferiore a 50, quante tra 50-100, ecc. 


Distribuzione del debito sul n.di applicazioniFigura 2: Distribuzione del debito (persona-gg) sul numero di applicazioni 

  • Come è strutturato il Debito (vedi Figura 3), questa vista permette di capire come e strutturato il debito e le cause che lo hanno prodotto, cioè: 
    - Errate pratiche di programmazione: resilienza o agilità del software? 
    - È lo stack tecnologico che sta generando la maggior parte del debito tecnico? 
    - Deriva da poche informazioni sul codice o è più dovuto a un'ampia gamma di tecnologie/pratiche di 
      programmazione? 
    - E ancora, qual è il contributo delle occorrenze ad alta priorità rispetto a quelle a priorità media e bassa? 


Portfolio Advisor

Figura 3: Portfolio Advisor 

 
Selezionando uno di questi quattro livelli di aggregazione è possibile identificare e quindi approfondire le prime 5 applicazioni (cioè quelle a più alto debito) per ciascun segmento di dati (vedi Figura 4) 
 Portfolio advisor top 5 applications

Figura 4: Portfolio Advisor, Top 5 applications per Java technology 

E’ possibile modificare la modalità di stratificazione del debito tecnico così che il grafico venga ritracciato con la  nuova preferenza di ordine. E’ possibile rimuovere un livello dalla visualizzazione (ad es. nascondere il livello tecnologico) per semplificare la navigazione. 

La vista sul Debito Tecnico è presente anche a livello di singola applicazione. 

Conclusioni 

Cast HL è quindi lo strumento che permette di:

  • Quantificare il debito tecnico del portfolio applicativo; 
  • Vedere come è distribuito
  • Capire quali sono le sue cause principali.
Si hanno così tutte le informazioni per prendere decisioni su come gestirlo, affrontarlo, mitigarlo.