Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
di Corrado Truffi.
Ovvero, per digitalizzare la Pubblica Amministrazione serve una nuova relazione con i
fornitori di servizi software
In un articolo di qualche tempo fa su Agenda Digitale.it, Alfonso Fuggetta metteva il
dito sulla piaga di un problema che affligge l’informatica pubblica italiana:
l’inadeguatezza dei meccanismi del procurement pubblico, con un codice degli appalti
ancora troppo pensato per lavori e forniture e poco per servizi e — a maggior ragione
— per servizi di natura molto particolare come quelli digitali:
****
Breve spiegazione nel merito per chi non è esperto del ramo (chi è del mestiere può
saltare il capoverso): i Punti Funzione sono una misura della dimensione del software,
pensata molti anni fa avendo in mente i linguaggi procedurali tradizionali (Cobol e
simili) e soprattutto un processo di sviluppo del software di tipo deterministico, da
svilupparsi a cascata: (1) si raccolgono i requisiti del software, li si formalizza, il
committente approva il documento, (2) si scrivono le specifiche dettagliate, (3) si scrive
il codice software, (4) si fanno i test, (5) si mette in produzione il software. Per
misurare i Punti Funzione correttamente, bisogna conoscere bene tutte le funzioni da
sviluppare e i dati da gestire, ossia bisogna essere arrivati almeno alla fase (2) di cui
sopra o, adottando qualche semplificazione, a una situazione intermedia fra fase (1) e
fase (2). Questo era — teoricamente — del tutto possibile nel mondo informatico del
passato, con tecnologie uniformi e relativamente semplici, e soprattutto adottando
rigorosamente un processo a cascata. La realtà dell’informatica odierna, tuttavia, è
radicalmente diversa per due motivi fra loro interrelati e che si alimentano a vicenda:
dal lato tecnologico, le applicazioni software non sono più fatte semplicemente di
codice compilato, ma sono “composizioni” scritte utilizzando diversi linguaggi,
richiamando servizi esterni, correlandosi con altre applicazioni, integrandosi con
servizi cloud, ecc. Dal lato organizzativo e sociale, si è capito che gran parte del
software che digitalizza processi umani ed organizzativi (a parte quindi forse i
componenti embedded, i firmware e il software di automazione industriale) non può
essere progettato efficacemente “a cascata”, perché i requisiti degli utenti (a) non sono
così chiari all’inizio del processo (b) quasi sempre cambiano durante il processo, vuoi
perché appunto l’analisi ne svela aspetti inizialmente inespressi, vuoi perché si
modificano le condizioni a contorno — modifiche normative, scelte politiche diverse,
ecc. Per rispondere a questa instabilità dei requisiti, che rende il software un oggetto
che deve essere progettato in modo radicalmente diverso da quello che si può utilizzare,
ad esempio, per progettare un ponte, sono state studiate diverse metodologie di
sviluppo di tipo iterativo e incrementale, che assumono al loro interno il rischio del
cambiamento continuo. Attualmente, la metodologia più consolidata è quella dello
sviluppo Agile, con varie declinazioni e con propaggini anche nella gestione
dell’esercizio dei sistemi (DevOps). L’essenziale delle metodologie Agile è comunque
l’iterazione e la costruzione per prototipi, in un contesto di progetto nel quale il costo e i
tempi sono fissati (si stabilisce un budget iniziale e si definisce la durata fissa delle varie
iterazioni), mentre l’obiettivo (scope) di progetto è definito solo a grandi linee, poiché
esso è definibile solo attraverso una progressiva “scoperta”.
Nel mio lavoro di redazione di offerte tecniche, ho sviluppato una vasta serie di “bugie”
metodologiche per dimostrare l’indimostrabile e rendere compatibili Punti Funzione e
metodi Agili, ma sapendo benissimo che si tratta di palliativi o, nella migliore delle
ipotesi, di soluzioni utili a garantire un minimo di decenza nel rapporto contrattuale fra
cliente e fornitore. Ritengo però che sarebbe il momento di cambiare radicalmente
approccio — anche approfittando del ruolo che il Team per la trasformazione digitale
ha in questo momento (e speriamo ancora a lungo) nell’indirizzare l’informatica
pubblica. Purtroppo devo dire che, a dispetto delle dichiarazioni di Piacentini, proprio
recentemente la “vecchia politica” dell’informatica pubblica si è presa una bella
rivincita licenziando, proprio nel nuovo sito di documentazione delle norme della PA
digitale voluto da Piacentini, un aggiornamento delle linee guida sulla misurazione del
software che ribadisce la prevalenza dei function point, pretendendo addirittura di
dimostrare che essi sono una buona metrica anche nel caso di sviluppi di tip Agile [1].
Sottolineo anche che il “danno” provocato dall’utilizzo dei punti funzione come metrica
in associazione con l’uso di un approccio Agile è fondamentalmente nel fatto che in
pratica in queste condizioni non si fa un vero sviluppo Agile, ma una sua caricatura e,
quindi, se ne riducono i vantaggi. Tale situazione è particolarmente grave se si prende
sul serio l’obiettivo di innovare realmente le soluzioni digitali offerte dalla pubblica
amministrazione ai cittadini, che per essere efficaci dovrebbero essere progettate
secondo criteri di design altamente collaborativo e niente affatto deterministico —
esattamente quello che propugna in tutte le sedi il Team per la trasformazione digitale.
In realtà, anche chi ha sviluppato i metodi Agile si è ovviamente posto il problema della
stima del software, sia sviluppando tecniche di stima “interna” da parte dei singoli team
di sviluppo, sia individuando metriche empiriche come gli story point, il cui valore
tuttavia è di norma definito in modo indipendente in ciascun progetto (in pratica, il
team individua una misura campione — una specie di “metro” — valido però solo per
quel singolo progetto). Probabilmente per questo motivo, chi vorrebbe una stima
“oggettiva” della dimensione di un software non prende in considerazione tali tecniche,
sebbene esse siano ben consolidate e dispongano anche di varianti in grado di definire
misure “normalizzate”[1].
Naturalmente, questo modo di gestire gli appalti non è la regola ed esistono sia
amministrazioni attente che fornitori seri, tuttavia le situazioni nelle quali la cattiva
moneta scaccia quella buona non sono rare, e bisognerebbe trovare il modo di porvi
rimedio.Torniamo allora al punto di partenza. Con cosa possiamo sostituire o almeno
completare i Function Point? O, più in generale, come possiamo trovare un modo più
sensato di misurare la produttività dei servizi software anche adottando metodi di
lavoro più adeguati al tempo della trasformazione digitale?
Primo. Appalti un po’ più piccoli, orientati alla trasformazione digitale, con uno scope
univoco e ben definito (la seconda strategia sopra richiamata, usata troppo raramente
dalle amministrazioni). Per riuscirci, le amministrazioni devono avere all’interno
qualcuno che conosca bene i processi di business e anche l’informatica, non devono
affidarsi completamente ai fornitori. E’ una delle cose sulle quali Piacentini in questi
anni ha più insistito, credo non a caso. In questa ipotesi, l’amministrazione potrebbe
essere in grado di controllare l’operato del fornitore, accettando anche revisioni
ragionevoli del prodotto, senza il timore di restare in balia del potere e degli esclusivi
interessi del fornitore stesso.
Budget e tempi sono contrattati inizialmente fra cliente e fornitore, e fissati, una
volta definito in modo sufficiente lo scope. Dato che c’è un’inevitabile livello di
parziale indeterminatezza nello scope (è il succo della tecnica Agile), cliente e
fornitore si assicurano reciprocamente circa la congruità del risultato individuando
un meccanismo per valutare ex-post la dimensione del prodotto realizzato,
definendo un range di accettazione (ad es. + o — 15% rispetto a una dimensione
ipotizzata inizialmente).
In questa ipotesi, e solo in questa ipotesi, una misura come i FP potrebbe tornare utile,
tenuto conto che esistono applicazioni che consentono di calcolarli in modo automatico
a partire dal software realizzato [1], anche se in realtà qualunque altro tipo[1] Il
calcolo degli Automated Function Point ha ovviamente i suoi limiti, primo tra tutti
quello di non considerare la complessità non funzionale di un’applicazione. Tuttavia,
agli scopi di fornire un parametro ragionevole di confronto statistico, è probabilmente
migliore e sicuramente più oggettivo delle stime manuali che si pretende di fare nelle
fasi iniziali di uno sviluppo. In questa ipotesi, e solo in questa ipotesi, una misura come i
FP potrebbe tornare utile, tenuto conto che esistono applicazioni che consentono di
calcolarli in modo automatico a partire dal software realizzato [1], anche se in realtà
qualunque altro tipo di “metro” potrebbe essere adeguato. Infatti, il processo potrebbe
funzionare in questo modo:
si concorda solo un livello di produttività obiettivo degli sviluppi del software (FP
per giorno/persona + o — 15%);
Naturalmente, anche in questo caso resta il problema del dumping sul prezzo da
assegnare all’unità di prodotto. Ma si tratta di un problema che dovrebbe essere risolto
in altro modo, a prescindere da qualunque altra considerazione: in primo luogo
adottando formule di calcolo del punteggio economico basate su funzioni che rendano
via via meno convenienti sconti elevati e, in secondo luogo e soprattutto, definendo basi
d’asta meglio stimate.
****
Il lettore lontano dai misteri dei servizi informatici per la pubblica amministrazione
probabilmente avrà trovato un po’ astrusi e forse sofistici questi ragionamenti. Eppure
sono convinto che la trasformazione digitale della PA, per essere reale, ha anche
bisogno di trovare il modo di definire un rapporto fra cliente pubblico e fornitore
privato che funzioni meglio, in modo più trasparente e conveniente per entrambi gli
attori. Troppa ipocrisia e troppe assurdità in questa relazione generano sprechi,
scaricano sul pubblico eccessi di costi, e — paradossalmente — limitano anche la
capacità del privato di aumentare la propria produttività, poiché la tentazione di
lavorare in una logica “estrattiva” di risorse pubbliche senza preoccuparsi più di tanto
dell’efficienza è, nella situazione attuale, molto forte per le imprese.