Guida

Manutenzione software evolutiva: perché è strategica.

Il rilascio non è la fine del progetto: è l’inizio della fase più lunga della vita di un software. Questa guida spiega che cosa comprende davvero la manutenzione, come distinguerla dalla garanzia e come impostare un contratto che non generi discussioni.

Il software non si consuma, ma il contesto cambia

Un applicativo che funziona oggi continuerà a funzionare identico domani: il codice non si deteriora. Quello che cambia è tutto ciò che lo circonda. L’azienda modifica un processo, entra in vigore una nuova norma, un fornitore aggiorna le proprie interfacce, il sistema operativo del server passa a una versione successiva, una libreria che il software utilizza rivela una vulnerabilità.

Per questo la manutenzione non è un costo accessorio ma la condizione perché l’investimento iniziale continui a produrre valore. Un gestionale su misura ben mantenuto vive dieci anni o più; lo stesso gestionale senza manutenzione diventa un vincolo nel giro di tre o quattro.

Le quattro tipologie di intervento

Correttiva

Risoluzione dei malfunzionamenti rispetto al comportamento atteso. Rientra in garanzia nel periodo concordato, poi diventa parte del servizio di assistenza.

Evolutiva

Nuove funzionalità e modifiche dovute al cambiamento dei processi aziendali. È la voce più consistente nella vita di un gestionale e quella che genera più valore.

Adeguativa

Aggiornamenti resi necessari da fattori esterni: normative, nuove versioni dei sistemi operativi, cambiamenti nelle interfacce dei servizi collegati.

Preventiva

Aggiornamento delle librerie, revisione delle parti più fragili, ottimizzazione delle prestazioni. È l’attività meno visibile e quella che evita i problemi più costosi.

Che cosa definire nel contratto

La maggior parte delle controversie fra cliente e fornitore su questo tema nasce da punti non chiariti all’inizio. Questi sono quelli che conviene mettere per iscritto.

  • Il confine fra difetto ed evoluzione. È la distinzione più importante: un difetto è uno scostamento da quanto concordato, un’evoluzione è una richiesta nuova. Senza una definizione condivisa ogni intervento diventa una trattativa.
  • I tempi di intervento per livello di gravità. Un blocco totale e una segnalazione minore non possono avere la stessa priorità. Definire tre livelli con tempi diversi è sufficiente.
  • Le fasce orarie di copertura. Se l’azienda lavora su turni o nel fine settimana, va detto esplicitamente: cambia il servizio e ne cambia il costo.
  • Come si richiede un intervento. Un canale unico e tracciato, non messaggi sparsi fra email e telefonate, altrimenti non è possibile verificare il rispetto dei tempi concordati.
  • Che cosa comprende il canone. Monte ore incluso, attività escluse, come vengono gestite le richieste che eccedono il monte.
  • La procedura di uscita. Che cosa viene consegnato se il rapporto si interrompe: codice aggiornato, documentazione, credenziali, dati. Un fornitore serio non ha difficoltà a definirlo.

La manutenzione preventiva è quella che si taglia per prima

È anche quella che costa di più non fare. Aggiornare le librerie con regolarità è un’attività modesta e ripetitiva; recuperare tre anni di aggiornamenti tutti insieme, invece, è un progetto a sé, con rischio di regressioni e tempi difficili da stimare.

Lo stesso vale per la revisione periodica delle parti più fragili del sistema. Ogni applicativo accumula zone in cui si è intervenuti più volte in fretta: sono quelle in cui si concentrano i difetti e in cui ogni modifica costa più del previsto. Affrontarle con un intervento pianificato è molto meno oneroso che subirle a ogni richiesta di modifica.

Un indicatore utile

Se il tempo necessario a realizzare una modifica di piccola entità sta crescendo nel tempo, il sistema sta accumulando debito tecnico. È il segnale più affidabile che serve un intervento strutturale, e si presenta molto prima che il software dia problemi visibili agli utenti.

Domande frequenti sulla manutenzione software

Che differenza c’è fra garanzia e manutenzione?

La garanzia copre la correzione di difetti: il software non fa ciò che era stato concordato e va sistemato senza costi aggiuntivi. La manutenzione evolutiva copre i cambiamenti: nuove funzioni, adeguamenti normativi, modifiche dovute all’evoluzione dell’azienda. Confondere le due cose è la causa più frequente di attrito fra cliente e fornitore, e va chiarita nel contratto.

Quanto costa mantenere un software custom?

Si esprime di solito come percentuale annua del valore di sviluppo, oppure come monte ore concordato. La cifra dipende dalla criticità del sistema e dalla frequenza di evoluzione attesa: un applicativo stabile usato da poche persone richiede molto meno di una piattaforma che cambia con ogni novità normativa.

Che cosa succede se non si fa manutenzione?

Nell’immediato nulla, ed è proprio questo che rende la scelta insidiosa. Nel giro di qualche anno però le librerie diventano obsolete, compaiono vulnerabilità note non corrette, gli aggiornamenti dei sistemi su cui gira il software creano incompatibilità e ogni modifica richiede prima un lavoro di ammodernamento. Il costo non scompare: si accumula e si presenta tutto insieme.

Serve un contratto o si può intervenire a chiamata?

A chiamata è sostenibile per applicativi non critici. Per un sistema da cui dipende l’operatività, un contratto con tempi di intervento definiti è ciò che distingue un fermo di due ore da un fermo di due giorni. La differenza non sta nella competenza del fornitore ma nella priorità concordata in anticipo.

Chi mantiene un software scritto da qualcun altro?

Possiamo farlo, previa una fase di analisi del codice esistente. La fattibilità dipende da come è scritto e documentato: un sistema ordinato si riprende in mano in tempi ragionevoli, uno senza documentazione né test richiede un investimento iniziale che va valutato onestamente prima di impegnarsi.