analisi-disegno.com


        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 l’outsourcing 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 dell’ambiente 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, l’upgrade non è un trauma e si può riprendere a lavorare senza troppi problemi.
        Con il software aziendale, è tutt’altra musica. Nelle aziende, ne sa qualcosa chi si sta occupando della questione «anno 2000», esistono procedure che girano da dieci, venti o trent’anni. 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 un’applicazione aziendale. L’esito è 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 l’applicazione per rispondere a nuovi requisiti o alla variazione di quelli esistenti. Si parla, al contrario, di manutenzione correttiva per riferirsi all’attività di eliminazione degli errori presenti nel software.
        In molte aziende l’attività di manutenzione copre l’80-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 un’applicazione sia sostenuto nel periodo successivo al primo rilascio. La manutenzione non è quindi un’attività occasionale, ma la modalità di lavoro più consueta per chi si occupa di sviluppo software all’interno di un’azienda. 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 l’effetto 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 l’organizzazione 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 l’architettura 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 dall’inattività 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 all’esterno.

        Outsourcing della manutenzione
        L’outsourcing 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 all’arrivo dell’Euro e dell’anno 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 l’offerta di outsourcing di manutenzione sta prendendo piede in modo più generalizzato, con l’affidamento a fornitori esterni dell’evoluzione di intere procedure.
        Si tratta di un fenomeno per molti versi nuovo, che richiede un’attenta 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 l’accettazione del sistema modificato?
        L’outsourcing può rappresentare in molti casi una risposta efficace ai problemi della manutenzione applicativa. Ma per risultare un’esperienza davvero vantaggiosa, e non originare troppi conflitti e disservizi, è necessario che l’azienda 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


analisi-disegno.com , servizi e materiali per la progettazione del software. commenti? comai@acm.org