L’esigenza di modernizzare le applicazioni enterprise
La modernizzazione delle applicazioni enterprise è uno degli interventi più costosi e complessi a cui le organizzazioni si sottopongono. Spesso le squadre decidono di migrare le applicazioni da un framework ad un altro per migliorare la manutenibilità, la cloud readiness, la produttività dei programmatori e l’accesso a nuove funzionalità.
Il ruolo del codice assistito dall’AI
Recenti progressi nella creazione degli agenti di codifica hanno acceso l’interesse intorno al tema della modernizzazione assistita dall’AI. Tuttavia, una domanda fondamentale si pone: sono in grado gli agenti AI di modernizzare in modo affidabile le applicazioni enterprise reali?
I limiti dei benchmark esistenti
Benchmarks attuali in ingegneria del software hanno mostrato notevoli progressi in termini di correzione di bug e generazione di codice, ma la migrazione tra framework presenta sfide molto diverse. Per considerare una modernizzazione riuscita, non basta tradurre codice, ma è necessario preservare il comportamento, adattare i sistemi di build e gestire le dipendenze al runtime.
L’introduzione di ScarfBench
Per colmare questa lacuna, è stato introdotto ScarfBench (Self-Contained Application Refactoring Benchmark), un benchmark aperto per valutare agenti AI in task di migrazione tra framework in Enterprise Java. ScarfBench valuta non il codice generato rispetto ad un’implementazione di riferimento, ma se le applicazioni migrate riescono realmente a buildare, deployare e preservare il comportamento previsto.
I tre principali ecosistemi Java
- Spring
- Jakarta EE
- Quarkus
ScarfBench si concentra su migrazioni tra questi tre ecosistemi Java, che rappresentano la spina dorsale della moderna programmazione enterprise.
Perché la migrazione framework non è solo sostituire annotazioni
Una semplice migrazione del repository richiede modifiche in vari ambiti, tra cui l’iniezione di dipendenze, la configurazione della persistenza, le query e gli specifici descriptor del framework. Errori minimi in uno di questi elementi possono rendere la migrazione non eseguibile.
La migrazione richiede non di tradurre solo il codice sorgente, ma anche di conservare il significato del framework. ScarfBench fornisce un modo sistematico per valutare gli agenti in task di migrazione framework enterprise Java.
La valutazione delle capacità degli agenti
ScarfBench include sia task mirati che migrazioni di intere applicazioni. A partire da una classificazione basata su JSR (Java Specification Requests), le migrazioni esperte vengono verificate e implementate tra Spring, Jakarta EE e Quarkus.
Già oggi sono state testate diverse soluzioni di agenti all’avanguardia, con risultati che mostrano una forte varietà a seconda delle coppie di framework coinvolte.
Prestazioni e risultati degli agenti AI
Sebbene i coding agent siano forti in benchmark tradizionali, la migrazione framework rimane un compito assai complesso. Si osserva che le success rate oscillano, e le migrazioni di intere applicazioni sono particolarmente sfidanti.
Le percentuali di successo seguono queste tendenze: il successo in build è superiore al successo in deployment, il quale è superiore al successo comportamentale. Questo indica che una build riuscita non è sufficiente a garantire una migrazione di successo.
Influenza del framework target
La difficoltà della migrazione dipende fortemente dal framework target scelto. Jakarta EE, ad esempio, si è rivelato particolarmente ostico per alcuni tipi di migrazione.
Analisi del comportamento degli agenti
Oltre a misurare il tasso di successo, ScarfBench ci permette di capire come gli agenti si comportano nel processo di modernizzazione.
Un’applicazione migrata è utile solo se si riesce realmente a buildarla ed eseguirla. Abbiamo confrontato i risultati segnalati dagli agenti con verifiche indipendenti. Un risultato significativo è che gli agenti tendono a essere ottimisti: ad esempio, claude Code ha riportato il successo in build di 29 su 30 applicazioni, mentre in realtà solo 22 hanno buildato correttamente. Questo suggerisce che l’autovalutazione dell’agente non possa essere considerata una misura completamente affidabile del completamento della migrazione.
Complessità sistemica della migrazione
Le migrazioni non interessano solo un singolo file o livello. Sono raramente circoscritte ad una sola componente, bensì influenzano configurazioni, servizi, database e web components in modo diffuso.
Questa complessità suggerisce che la migrazione sia un processo iterativo di risoluzione delle dipendenze, e non un semplice trasformazione del codice sorgente. Per misurare l’impegno richiesto, abbiamo adottato la frequenza di ritorno alle diverse layer come indicatore. Alcune layer richiedevano una frequenti revisioni in fase di debug, risoluzione delle dipendenze e adattamento al framework.
Le vere sfide non sono sempre nel codice
Gli agenti di AI spesso incontro difficoltà non solo con il codice sorgente, ma anche con problematiche ambientali. Ad esempio, hanno faticato a gestire:
- conflitti di build system
- problemi di deployment
- iniezione di dipendenze
- gestione del database
- endpoint e test
- infrastrutture
Ogni una di queste questioni richiede un’analisi approfondita e non si può considerare risolta solo perché il codice sembra corretto o si è buildato opportunamente.
I benefici reali di un benchmark strutturato
Gli agenti moderni possono automatizzare gran parte del processo di migrazione, ma una valutazione attendibile e un ragionamento architetturale rimangono fondamentali per raggiungere esiti positivi. ScarfBench svolge un ruolo essenziale in questo, esponendo le complessità reali e fornendo un modo standardizzato per misurare i progressi verso modernizzazioni completamente autonome.
La comunità come motore del progresso
ScarfBench è pensato come risorsa aperta per esperti e ricercatori. I ricercatori possono confrontare diversi architetture di agenti; i professionisti possono valutare soluzioni prima di adottarle in produzione.
Collegamenti utili:
Un passo verso la migrazione autonoma
La migrazione tra framework rimane uno dei problemi aperti più importanti nell’ingegneria del