Inspectable Control for Structure-Preserving Software Regeneration

Controllo ispezionabile per la rigenerazione del software con preservazione della struttura

Rigenerazione parziale controllabile del codice mediante rappresentazioni latenti discrete gerarchiche.

Alexey Gavrilov1Alan-Barsag Gazzaev1Mikhail Mozikov2Ilya Makarov2Sergey Muravyov1

  1. ITMO University, Saint Petersburg, Russian Federation
  2. AXXX, Mosca, Federazione Russa

Leggi l’articolo completo in HTMLTesto ricercabile con formule, tabelle, figure e riferimenti bibliografici.

Manoscritto definitivo dell'autore con elenco finale degli autori e DOI. CC BY 4.0 author manuscript; the ACM DOI page remains the version of record. Condizioni di pubblicazione e riuso.

L'articolo in 30 secondi

Domanda di ricercaCome può un modello generativo modificare parti selezionate di un programma preservando determinati elementi della sua struttura a grana grossa?

Problema

La modifica del codice assistita dall’IA richiede spesso un singolo intervento circoscritto, mentre determinati elementi della struttura del programma devono restare invariati. Rigenerare l’intero programma può alterare regioni estranee alla modifica, e i vincoli a livello di token non offrono un’interfaccia di controllo a grana grossa.

Approccio

Lo studio codifica funzioni Python di 64 token con un VQ-VAE gerarchico, mantiene fissi determinati codici discreti a grana grossa e impiega la generazione discreta mascherata per rigenerare localmente il codice nelle restanti posizioni latenti.

Risultato principale

Il blocco di quattro codici di livello superiore innalza il tasso di parsing da 0.453 a 0.591; nel contempo, il tasso di modifica delle posizioni non bloccate resta pari a 0.936 e l’unicità dei campioni condizionati a 0.998.

Perché è importante

I risultati mostrano un compromesso misurabile tra stabilità e libertà nella modifica controllabile del codice e nella rigenerazione parziale dei programmi. Forniscono evidenze preliminari a favore di un livello di controllo latente ispezionabile, non una prova di equivalenza semantica o correttezza funzionale.

Abstract

I flussi di lavoro dell’ingegneria del software, come la riparazione vincolata, il raffinamento per fasi e la modifica con preservazione della struttura, richiedono di controllare che cosa cambia e che cosa resta invariato. Per queste operazioni, la generazione a livello di token offre un’interfaccia di controllo debole, poiché vincola il testo locale in superficie anziché gli invarianti strutturali a grana grossa che spesso si intendono preservare nell’ingegneria del software. Studiamo le rappresentazioni latenti discrete gerarchiche come rappresentazione intermedia ispezionabile degli artefatti software: un VQ-VAE gerarchico comprime una funzione Python di 64 token in codici discreti a grana grossa e fine, mentre la generazione discreta mascherata rigenera soltanto determinate posizioni in presenza di vincoli parziali. Su 2,000 funzioni Python pre-elaborate, il blocco di quattro codici di livello superiore aumenta il tasso di parsing da 0.453 a 0.591, mantenendo sostanziale la variazione nelle posizioni non bloccate (libertà di modifica, 0.936) e l’unicità dei campioni prossima al massimo (diversità, 0.998). A parità di contesto a grana grossa, il raffinamento al livello inferiore è meno efficace ma resta monotono, a sostegno di una lettura della gerarchia dal livello grossolano a quello fine. Nel complesso, questi risultati forniscono evidenze preliminari a favore di un’interfaccia pratica di controllo che consente la rigenerazione circoscritta degli artefatti software con preservazione della struttura, al di sopra del livello dei token.

Pubblicato in Proceedings of the 34th ACM International Conference on the Foundations of Software Engineering

Tipo di contributo Metodo di controllo nello spazio latente

pp. 1406–1407Poster di accompagnamento

DOI https://doi.org/10.1145/3803437.3807386

Condividi questo articoloCondividi

Risultati principali

Risultati principali del controllo ispezionabile per la rigenerazione del software con preservazione della struttura
ImpostazioneTasso di parsingStruttura di baseFirmaModifica non bloccata
Input (troncato)0.9940.9940.994
Ricostruzione del codec0.8570.8480.4930
Generazione incondizionata0.4530.0800.995
Condizionale, prefisso k=40.5910.2950.0610.936
Condizionale, intervallo della firma0.60.3020.063non riportato

Risultato principale. Il blocco delle variabili latenti a grana grossa migliora la stabilità sintattica senza annullare le modifiche nella regione modificabile; il risultato dimostra un controllo strutturale, non un'equivalenza funzionale garantita.

Dataset
2,000 funzioni Python pre-elaborate tratte da un sottoinsieme di CodeParrot Clean
Dimensione del campione
2,000 funzioni Python pre-elaborate; l'unicità dei campioni condizionati è pari a 0.998.
Metriche
Tasso di parsing; indicatori surrogati della preservazione di scheletro e firme; tasso di modifica delle posizioni sbloccate; unicità ed entropia dei campioni
Incertezza
Lo studio di due pagine riporta stime puntuali prive di intervalli di confidenza o di un'analisi statistica su più seed.
Condizioni
Funzioni di 64 token, decodifica argmax, 16 codici di livello superiore e 32 codici di livello inferiore; il blocco completo riproduce esattamente la ricostruzione del codec.

PDF e citazione

Come citare l’articolo BibTeX è il formato raccomandato. Tutte le varianti riportate di seguito sono generate dallo stesso record di pubblicazione.

Apri il PDF
@inproceedings{Gavrilov2026InspectableControl,
  title      = {Inspectable Control for Structure-Preserving Software Regeneration},
  author     = {Gavrilov, Alexey and Gazzaev, Alan-Barsag and Mozikov, Mikhail and Makarov, Ilya and Muravyov, Sergey},
  booktitle  = {Proceedings of the 34th ACM International Conference on the Foundations of Software Engineering},
  publisher  = {ACM},
  year       = {2026},
  pages      = {1406--1407},
  doi        = {10.1145/3803437.3807386},
  url        = {https://doi.org/10.1145/3803437.3807386},
  isbn       = {979-8-4007-2636-1},
}
Scarica il file .bib

File di citazione:Testo APATesto IEEERISCSL-JSONSchema.org JSON-LDXML OAI-DCXML OpenAIRE v4XML MODSMetadati XML JATS 1.4Testo integrale in formato JATS 1.4 XMLRDF TurtleInsieme di collegamenti (JSON)Insieme di collegamenti (HTTP)RO-Crate

DOI:https://doi.org/10.1145/3803437.3807386

Guida completa

Guida di ricerca completa

Metodo

Il metodo comprime una breve funzione Python in due livelli di codici discreti, mantiene fisse determinate posizioni a grana grossa e rigenera le posizioni rimanenti prima di decodificarle nuovamente in codice.

  1. Codifica

    Comprimere una funzione Python di 64 token in 16 codici di livello superiore e 32 codici di livello inferiore mediante un VQ-VAE gerarchico.

  2. Blocca

    Scegliere posizioni di codice a grana grossa che rappresentino la struttura da preservare, per esempio un prefisso che copra l'intervallo della firma della funzione.

  3. Rigenerare

    Eseguire la generazione discreta mascherata soltanto sulle posizioni sbloccate e decodificare nuovamente in codice sorgente la gerarchia completata.

  4. Ispeziona

    Prima di accettare una rigenerazione, misurare il tasso di parsing, gli indicatori surrogati strutturali, le modifiche nelle posizioni sbloccate e l'unicità dei campioni.

I codici grossolani selezionati del programma restano fissi, mentre i codici discreti fini mascherati vengono rigenerati e decodificati in una funzione Python modificata.
La modifica mediante codici latenti discreti gerarchici preserva determinati elementi della struttura del programma a grana grossa, rigenerando al contempo i codici fini nella regione modificabile.Fonte: Diagramma esplicativo creato dall'autore sulla base del metodo e dei risultati pubblicati..Condizioni di riutilizzo: CC BY 4.0.Attribuzione suggerita: Gavrilov et al. (2026), Inspectable Control for Structure-Preserving Software Regeneration. Scarica l'SVG.

Idea principale

Il controllo viene applicato a una rappresentazione appresa al di sopra dei token: le posizioni latenti a grana grossa definiscono punti espliciti in cui la struttura può essere bloccata, mentre i dettagli implementativi circostanti restano modificabili.

Differenze rispetto ad approcci affini

I vincoli a livello di prompt o di token agiscono sul testo superficiale. L’interfaccia proposta espone punti di controllo discreti, sia grossolani sia fini, e misura il conseguente compromesso tra stabilità e libertà.

Qual è il contributo innovativo

Il lavoro introduce e valuta un livello gerarchico e ispezionabile di controllo latente per la rigenerazione delimitata di artefatti software.

Domande a cui questo articolo contribuisce a rispondere

Apri una domanda per ottenere una risposta concisa fondata sull'articolo. I limiti dettagliati delle evidenze sono riportati nella sezione Limitazioni.

  1. Come può l’IA modificare il codice senza riscrivere tutto?

    L’articolo studia la rigenerazione parziale del codice al di sopra del livello dei token. Un VQ-VAE gerarchico mappa una breve funzione Python in codici discreti grossolani e fini; le posizioni grossolane selezionate vengono bloccate e la generazione discreta mascherata modifica soltanto le posizioni latenti rimanenti prima della decodifica. In questo modo si definisce un confine di preservazione esplicito, anziché rigenerare l’intera funzione.

  2. Quali metodi preservano la struttura del programma durante la generazione del codice?

    Questo lavoro valuta un meccanismo di controllo basato su rappresentazioni latenti discrete gerarchiche. Le posizioni latenti a grana grossa possono essere mantenute fisse mentre si rigenerano quelle non bloccate; si misurano quindi il tasso di parsing e gli indicatori strutturali surrogati. Le evidenze riguardano la stabilità strutturale probabilistica di brevi funzioni Python e non dimostrano la preservazione esatta dell’AST, l’equivalenza semantica o la correttezza funzionale.

  3. Le variabili latenti discrete gerarchiche possono offrire un controllo localizzato sul codice?

    Nell’esperimento descritto, condotto su 2,000 funzioni, il blocco di quattro codici di livello superiore ha aumentato il tasso di parsing da 0.453 a 0.591. Nel contempo, è cambiata una quota pari a 0.936 delle posizioni non bloccate e l’unicità dei campioni condizionati è risultata pari a 0.998. Questi risultati costituiscono evidenze preliminari del fatto che vincoli latenti a grana grossa possano preservare parte della struttura senza eliminare la libertà di modifica locale né la diversità dei campioni.

  4. Come può la generazione di codice bilanciare stabilità strutturale e diversità?

    L’articolo valuta congiuntamente stabilità e libertà, anziché ottimizzare la sola validità. Il blocco dei codici grossolani accresce la validità sintattica, mentre le modifiche nelle posizioni non bloccate restano elevate e i campioni condizionati rimangono quasi tutti unici. Il risultato dimostra, nella configurazione esaminata, un compromesso misurabile tra stabilità e libertà, non un ottimo universale.

  5. In che modo questo lavoro si rapporta alla modifica del codice assistita da LLM?

    Il modello esaminato è un VQ-VAE gerarchico con generazione discreta mascherata, non un modello linguistico di grandi dimensioni. Il problema del controllo è tuttavia pertinente all'editing assistito da LLM, poiché le modifiche non necessarie al di fuori della regione richiesta costituiscono un problema concreto. L'articolo propone un meccanismo complementare nello spazio latente e un quadro valutativo, non un benchmark per l'editing tramite LLM.

Confronto con approcci affini

Confronto fattuale tra il controllo ispezionabile per la rigenerazione del software con preservazione della struttura e gli approcci affini
CapacitàControllo a livello di tokenControllo latente gerarchico
Mantieni fissa la struttura a grana grossaLimitatoBlocco nativo dei codici a granularità grossolana
Rigenerazione parzialeVincoli superficiali fragiliRicampionamento mascherato dei codici selezionati
Punti di controllo ispezionabiliNessun livello intermedio esplicitoPosizioni discrete a grana grossa e fine
Evidenze presentate in questo articoloNon valutato come baseline completaDiagnostica della stabilità sintattica e della libertà di modifica

La tabella descrive le interfacce e le evidenze misurate nello studio; non rivendica né la correttezza funzionale né una superiorità universale.

Rilevanza e ambito

L’articolo è particolarmente pertinente per i lavori che richiedono un controllo esplicito su ciò che una trasformazione del codice assistita dall’IA può modificare e sulle parti del programma che devono restare stabili.

  1. Generazione di codice controllabile con preservazione della struttura

  2. Riparazione localizzata dei programmi e refactoring circoscritto

  3. Rappresentazioni discrete gerarchiche per il codice sorgente

  4. Generazione discreta mascherata per il codice sorgente

  5. Controllo latente degli artefatti software

Consulta i limiti e l’ambito di validità delle evidenze

Limitazioni

  • Lo studio è circoscritto a brevi funzioni Python troncate a 64 token.
  • La valutazione impiega la decodifica argmax e misure surrogate sintattiche o strutturali, anziché test di equivalenza funzionale.
  • La preservazione esatta della firma resta insoddisfacente.
  • Il controllo di livello inferiore è meno efficace di quello di livello superiore.
  • Le posizioni latenti non sono ancora allineate a regioni semantiche quali intervalli dell’AST, firme o strutture del flusso di controllo.
  • I risultati non dimostrano la correttezza per attività concrete di riparazione, refactoring o modifica a livello di repository.

Riferimenti citati nell’articolo

Queste voci corrispondono alla sezione numerata dei riferimenti bibliografici nel PDF dell'articolo.

  1. Ali Razavi, Aaron van den Oord, Oriol Vinyals. . Generating Diverse High-Fidelity Images with VQ-VAE-2. Advances in Neural Information Processing Systems.
  2. Jacob Austin, Daniel D. Johnson, Jonathan Ho, Daniel Tarlow, Rianne van den Berg. . Structured Denoising Diffusion Models in Discrete State-Spaces. Advances in Neural Information Processing Systems.
  3. Subham Sekhar Sahoo, Marianne Arriola, Yair Schiff, Aaron Gokaslan, Edgar Marroquin, Justin T Chiu, Alexander Rush, Volodymyr Kuleshov. . Simple and Effective Masked Diffusion Language Models. Advances in Neural Information Processing Systems.
  4. Shraddha Barke, Michael B. James, Nadia Polikarpova. . Grounded Copilot: How Programmers Interact with Code-Generating Models. Proceedings of the ACM on Programming Languages.
  5. Fengji Zhang, Bei Chen, Yue Zhang, Jacky Keung, Jin Liu, Daoguang Zan, Yi Mao, Jian-Guang Lou, Weizhu Chen. . RepoCoder: Repository-Level Code Completion Through Iterative Retrieval and Generation. Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing.

Risorse e riproducibilità

Editore
ACM
Risorse della pubblicazione
Il manoscritto pubblico, le tabelle dei risultati, la figura esplicativa e i file delle citazioni sono disponibili qui. Il codice d’implementazione e i checkpoint non sono stati resi pubblici.

Dichiarazione sui dati

Fonte
Un sottoinsieme pre-elaborato di CodeParrot Clean contenente 2,000 funzioni Python.
Licenza
Questo sito non ridistribuisce alcun file del dataset; il riuso resta soggetto alle licenze del dataset CodeParrot originario e del codice sorgente.
Pre-elaborazione
Le funzioni Python vengono tokenizzate e, prima della codifica gerarchica, troncate o completate mediante padding fino a 64 token.
Suddivisione
Il poster riporta un insieme di valutazione di 2.000 funzioni; l’articolo pubblico non include un manifesto immutabile della suddivisione tra training e validation.
Formato
Funzioni sorgente Python, sequenze di token in stile GPT, sequenze di codice di livello superiore di lunghezza 16 e sequenze di livello inferiore di lunghezza 32.
Versione / checksum
Nell'articolo di due pagine non sono riportati né un checksum del dataset né l'identificatore di uno snapshot immutabile.
Acquisizione
La pagina della pubblicazione non rende disponibile uno script pubblico di acquisizione.
Limiti d'uso
Il campione non è rappresentativo del software su scala di repository, di molteplici linguaggi di programmazione o di attività di riparazione verificate sul piano comportamentale.

Versioni

  1. Versione pubblicataACM FSE Companion, 2026
  2. Apri il record nel repositoryRecord Zenodo indicizzato da OpenAIRE
  3. Risorse dell'autorePoster e presentazione
  4. Record bibliograficoDBLP
  5. Apri il record scientificoOpenAlex
  6. Record del grafo delle citazioniSemantic Scholar
  7. Testo integrale condiviso dall'autoreResearchGate
  8. Sintesi in linguaggio accessibileRiconoscimenti

Il DOI pubblicato è l’identificatore bibliografico primario. Questa pagina resta l’unico URL canonico del progetto in tutte le versioni.