Modernizzare il software legacy con l'Intelligenza Artificiale

ARTICOLO 

 

Per le aziende svizzere, far evolvere il software aziendale significa conciliare innovazione, continuità operativa e protezione dei dati. Gli applicativi sviluppati negli anni custodiscono processi e conoscenze preziose, ma possono diventare difficili da mantenere e integrare con nuove applicazioni, servizi cloud e strumenti di intelligenza artificiale.

Modernizzare non richiede necessariamente di riscrivere tutto da zero. L'AI può supportare l’analisi del codice, la creazione della documentazione, il refactoring e la preparazione dei test, facilitando un percorso graduale. Per ottenere risultati affidabili servono però competenze specialistiche, verifiche e un controllo attento sul codice e sui dati condivisi con gli strumenti AI.

Il problema: quando il legacy frena l’innovazione

Molte aziende utilizzano applicativi sviluppati nel tempo, spesso personalizzati per rispondere a esigenze specifiche. Questi sistemi continuano a supportare processi essenziali, ma possono presentare limiti che rendono più difficile far evolvere il business:

  • Integrazione complessa: l’assenza di interfacce web o API rende più difficile collegare gli applicativi a servizi cloud, CRM, piattaforme e-commerce e nuove soluzioni digitali
  • Tecnologie difficili da mantenere: componenti non più supportati e strutture dati poco accessibili possono aumentare i costi di gestione e ostacolare l’innovazione
  • Dipendenza da competenze individuali: personalizzazioni e modifiche non documentate concentrano la conoscenza del sistema in poche persone, rendendo più complessi manutenzione e passaggi di consegne

Quando questi limiti si accumulano, introdurre nuove funzionalità richiede più tempo, ogni modifica diventa più delicata e mantenere gli applicativi assorbe risorse che potrebbero essere dedicate a nuovi progetti.

Il problema non è quindi l’età del software in sé, ma la sua capacità di rispondere alle esigenze attuali dell’azienda. Modernizzare significa individuare ciò che va preservato e ciò che deve evolvere, valorizzando gli investimenti esistenti.

Come l'AI può supportare la modernizzazione

L'AI può affiancare i team di sviluppo in diverse attività di modernizzazione del software legacy. Le proposte generate richiedono revisione e validazione da parte degli sviluppatori. Ecco i principali ambiti di supporto:

  • Creazione della documentazione: può analizzare il codice legacy e i commenti disponibili, aiutando a produrre descrizioni delle funzioni e documentazione tecnica da verificare e integrare
  • Pulizia e refactoring del codice: può aiutare a individuare duplicazioni e parti potenzialmente superflue, suggerendo modifiche per migliorare leggibilità e manutenibilità
  • Supporto alla riscrittura in linguaggi moderni: può proporre traduzioni di porzioni di codice, ad esempio da COBOL o Delphi a Java, C# o Python. Le proposte devono essere verificate rispetto alla logica applicativa e al comportamento del sistema originale
  • Revisione del codice originale e riscritto: può supportare il confronto tra le due versioni, segnalando possibili discrepanze, carenze nel logging o nella gestione delle eccezioni
  • Supporto alla migrazione e alla sincronizzazione dei dati: può aiutare a definire procedure e script per il mapping, la validazione e la riconciliazione dei dati tra vecchi e nuovi sistemi
  • Preparazione dei test: può generare proposte di test unitari, funzionali e di regressione sulla base del codice e del comportamento atteso, da verificare e completare con il team di sviluppo
  • Supporto all’analisi della sicurezza: può segnalare potenziali problemi nel codice, come rischi di injection e pratiche non sicure. Questo supporto non sostituisce gli strumenti di analisi della sicurezza, i test e la revisione specialistica.

La Generative AI nel concreto: GitHub Copilot e Claude Code

All’interno di Var Group sono in corso sperimentazioni con diverse tecnologie per supportare i clienti nella modernizzazione applicativa. Tra gli strumenti in valutazione figurano GitHub Copilot e Claude Code di Anthropic.

Il loro utilizzo può affiancare gli sviluppatori in attività come:

  • Analisi preliminare: esaminare più file di codice per ottenere spiegazioni delle funzioni e supportare la comprensione del contesto applicativo
  • Refactoring: proporre modifiche per rendere il codice più chiaro, ad esempio estraendo metodi o suggerendo nomi più descrittivi
  • Traduzione tra linguaggi: generare una prima proposta di conversione, ad esempio da Visual Basic a C#, da verificare rispetto alla logica e al comportamento del codice originale
  • Supporto ai test: preparare una struttura iniziale di test unitari, da completare e validare
  • Sicurezza e buone pratiche: suggerire controlli sugli input e sugli output e possibili miglioramenti delle pratiche di programmazione

Le proposte generate devono essere valutate nel contesto del progetto e sottoposte a revisione e test prima di essere adottate.

Perché investire nella modernizzazione applicativa

Un percorso di modernizzazione ben progettato può aiutare l’azienda a:

  • Ridurre il debito tecnico, semplificando la manutenzione e limitando la complessità accumulata nel tempo
  • Migliorare agilità e integrazione, attraverso API, interfacce e componenti modulari che facilitano l’evoluzione degli applicativi
  • Rafforzare la sicurezza, intervenendo sulle vulnerabilità e sostituendo i componenti non più supportati
  • Ridurre la dipendenza da singole persone, grazie a documentazione aggiornata, codice più comprensibile e test a supporto delle modifiche
  • Favorire il lavoro dei team di sviluppo, con strumenti e pratiche che facilitano la collaborazione e la crescita delle competenze

Il nostro approccio alla modernizzazione

Modernizzare il software significa creare le condizioni per far evolvere gli applicativi in funzione delle esigenze del business. L'AI può supportare questo percorso, ma il suo impiego richiede metodo, competenze e controllo da parte delle persone.

Var Group ha sviluppato una metodologia di modernizzazione che procede per gradi e comprende:

  • Data Discovery: ricognizione dei dati
  • Assessment applicativo: valutazione degli applicativi esistenti
  • Definizione del contesto e delle regole di modernizzazione, che include:
    • sintassi e pratiche di sviluppo aziendali;
    • scelta dei modelli AI adeguati;
    • definizione dei processi di integrazione e distribuzione continue (CI/CD);
    • definizione degli standard di sicurezza
  • User Story Mapping e pianificazione: organizzazione delle esigenze e dei piani di lavoro
  • Riscrittura applicativa
  • Test e messa in produzione del progetto

Takeaway

  • Troppi sistemi legacy italiani frenano crescita, integrazione, scalabilità.
  • Mancano doc, competenze interne, e il rischio di guasti è alto.
  • Generative AI serve a: documentare, pulire, riscrivere, testare e mettere in sicurezza il codice.
  • Non c’è un LLM perfetto ma dipende dalle tecnologie legacy, dal contesto e dalle competenze presenti in azienda per questo è fondamentale un affiancamento in questo percorso che sembra facile ma non lo è
  • Il mercato è enorme e in forte crescita: ignorarlo costa caro.
  • Modernizzare spinge sicurezza, agilità, costosità, retention e vantaggio competitivo.