MANUTENZIONE, CHE FATICA!
di Adriano Comai (su ZeroUno, marzo 1998)
La manutenzione evolutiva del software aziendale è la strada
più comune per soddisfare i nuovi requisiti di business. Ma oltre a essere cara da
percorrere è irta di difficoltà. E loutsourcing trova i suoi spazi.
Ogni due o tre anni, ormai ci siamo rassegnati, dobbiamo cambiare
il nostro Pc. A parte il costo, non è un grosso problema. E anche se non cè
bisogno di sostituire tutto il sistema, ma solo cambiare il processore, o aggiungere più
Ram, o un disco fisso più capiente, o un modem più veloce, possiamo farlo senza troppi
pensieri. Ci sono decine di negozi dove un tecnico può farci in dieci minuti modifiche
che, avendo tempo e voglia, potremmo fare talvolta anche da soli.
Quanto al software, è più o meno lo stesso. Ogni anno i produttori
rilasciano nuove versioni del word processor, dello spreadsheet, del browser o
dellambiente di sviluppo che usiamo. Non sempre gli upgrade sono giustificati (con
le nuove versioni si continuano a fare esattamente le stesse cose, anche se a volte con
maggiore comodità) ma dopo un po bisogna comunque aggiornarsi, se non altro per
mantenere il passo con i colleghi di lavoro. Salvo rari casi, lupgrade non è un
trauma e si può riprendere a lavorare senza troppi problemi.
Con il software aziendale, è tuttaltra musica. Nelle aziende,
ne sa qualcosa chi si sta occupando della questione «anno 2000», esistono procedure che
girano da dieci, venti o trentanni. Scritte in linguaggi che i programmatori di oggi
non conoscono più. Piene di buchi, rabberci e rattoppi, «stanno su» per miracolo e il
tenerle insieme impegna costantemente molte risorse. Ma non si trova nessuno che abbia il
coraggio di affrontare la responsabilità di incentivare la «rottamazione» di un parco
applicativo così obsoleto.
Il problema è che rifare le vecchie procedure è un incubo peggiore
di tenerle così come sono. I costi e i tempi di realizzazione e rilascio sono ampiamente
imprevedibili, come sa chi ha lavorato in progetti di nuovo sviluppo o di rifacimento di
unapplicazione aziendale. Lesito è incerto e i rapporti tra i progettisti
software, i committenti e gli utenti dei loro sistemi si fanno burrascosi. Meglio non
riaffrontare una simile prospettiva, pensa chi ci è già passato. E i committenti, quasi
sempre, concordano.
Purché non sia sviluppo
Ovviamente, non è affatto detto che tutti i progetti di sviluppo
debbano essere così rovinosi. Il fatto, purtroppo, è che spesso lo sono, e numerose
fonti indicano che oltre due terzi dei progetti, anche quando producono un risultato
accettabile, sforano nettamente i tempi e i costi stabiliti.
Una delle soluzioni possibili per evitare i rischi dello sviluppo è
quella di acquistare «sul mercato» pacchetti applicativi già pronti. Può essere una
strada per ridurre i costi e i tempi, ma non è praticabile in tutti i casi e per tutti
gli ambiti applicativi. Una seconda soluzione, molto più diffusa, è quella di
intervenire sulle applicazioni esistenti, per adattarle al variare delle esigenze di
committenti e utenti.
È la cosiddetta manutenzione evolutiva, che consiste nel modificare
lapplicazione per rispondere a nuovi requisiti o alla variazione di quelli
esistenti. Si parla, al contrario, di manutenzione correttiva per riferirsi
allattività di eliminazione degli errori presenti nel software.
In molte aziende lattività di manutenzione copre
l80-90% delle risorse totali di sviluppo del settore It (si tratta, per fortuna,
più di manutenzione evolutiva che non di tipo correttivo). E il dipartimento della Difesa
Usa calcola che oltre il 75% del costo complessivo di unapplicazione sia sostenuto
nel periodo successivo al primo rilascio. La manutenzione non è quindi unattività
occasionale, ma la modalità di lavoro più consueta per chi si occupa di sviluppo
software allinterno di unazienda. Non è un bel mestiere. Fare manutenzione
significa, spesso, dover mettere mano per anni a procedure di qualità scadente, restare
legati a tecnologie sorpassate, avere meno possibilità di crescita professionale.
Insomma, sentirsi informatici di «serie B».
Il processo di manutenzione
Le applicazioni software non hanno una vera e propria usura. Ma la
loro organizzazione interna tende a degradare progressivamente sotto leffetto di
tanti piccoli, ripetuti cambiamenti. Se le specifiche non vengono aggiornate insieme al
codice, se la struttura dei programmi e delle procedure viene modificata frettolosamente
per rispondere ai nuovi requisiti, pian piano lorganizzazione logica iniziale viene
sconvolta, fino a non essere più riconoscibile.
Troppo spesso la manutenzione evolutiva si risolve in una serie di
interventi di aggiustamento rapido e soffre della mancanza di metodo nel condurre le
modifiche. Anche nelle aziende che hanno investito per dotarsi di metodologie e standard
per lo sviluppo, il processo di manutenzione più utilizzato è il «Code and Fix»:
codifica e aggiusta .
Non si parla di una vera e propria analisi dei requisiti, in
manutenzione, salvo in casi eccezionali. Né, ed è quasi altrettanto grave, si parla di
rivedere larchitettura modulare del software per verificare se valga la pena
ottimizzarla alla luce delle nuove esigenze. E, per finire, dopo la modifica del codice,
non è nemmeno diffusa la pratica del regression testing, per verificare che le variazioni
non abbiano danneggiato le funzioni preesistenti.
Come nota Capers Jones, uno degli analisti più attenti delle
problematiche industriali del settore It, si tratta di errori di impostazione da
attribuire essenzialmente a fattori culturali.
Secondo Jones, «la manutenzione è afflitta soprattutto
dallinattività e dalla passività del management», inconsapevole del fatto che i
costi della manutenzione possono essere drasticamente ridotti analizzando il processo di
lavoro, e intervenendo per ottimizzarlo.
Un ciclo di vita delle applicazioni iterativo e incrementale (come
quello «a spirale», riportato in figura), che è poi quello adottato da tutti i
principali produttori di software a livello mondiale, permette di affrontare i problemi
manutentivi in modo più efficiente ed efficace. Gli interventi vengono di fatto
equiparati a quelli di sviluppo, nel senso che anche nei cicli di manutenzione si
effettuano in modo sistematico attività di analisi, disegno, realizzazione e test,
aggiornando codice e documentazione.
Nulla di rivoluzionario, ma il fatto, purtroppo, è che spesso la
situazione è talmente congestionata che il solo pensare a una razionalizzazione del
processo di lavoro manutentivo risulta impraticabile.
Scarsa efficienza, deterioramento progressivo della qualità delle
applicazioni, insoddisfazione del personale, costi elevati. Non stupisce che numerose
aziende oggi siano sempre più tentate dal risolvere i problemi della manutenzione
affidandola allesterno.
Outsourcing della manutenzione
Loutsourcing di manutenzione è una proposta che diverse
società di consulenza e sviluppo offrono ai propri clienti. In particolare, oggi i
fornitori propongono di esternalizzare le attività legate alla cosiddetta manutenzione di
massa (interventi ad ampio raggio per effettuare modifiche di tipo ripetitivo a un gran
numero di programmi) per adeguare le procedure allarrivo dellEuro e
dellanno 2000.
In molti casi è proprio questa la strada scelta dalle aziende per
affrontare eventi di tipo eccezionale senza gravare ulteriormente sulle risorse di
programmazione interne. Ma lofferta di outsourcing di manutenzione sta prendendo
piede in modo più generalizzato, con laffidamento a fornitori esterni
dellevoluzione di intere procedure.
Si tratta di un fenomeno per molti versi nuovo, che richiede
unattenta definizione a livello contrattuale del processo, delle reciproche
responsabilità e dei livelli di servizio. Come devono essere documentate le procedure che
il fornitore prenderà in carico? Chi trasmetterà al fornitore i requisiti del
committente aziendale che originano gli interventi di modifica? A quale livello di
definizione (funzionale, tecnico) e in che formato verranno effettuate le richieste di
intervento? Come verranno effettuati la pianificazione e il controllo di avanzamento?
Quali livelli devono essere previsti per laccettazione del sistema modificato?
Loutsourcing può rappresentare in molti casi una risposta
efficace ai problemi della manutenzione applicativa. Ma per risultare unesperienza
davvero vantaggiosa, e non originare troppi conflitti e disservizi, è necessario che
lazienda cliente analizzi in modo sistematico il proprio processo di manutenzione,
mettendo bene in luce le criticità esistenti e il modo in cui queste possono essere
risolte delegando al fornitore una serie di attività.
Torna
all'elenco articoli
analisi-disegno.com