Inspectable Control for Structure-Preserving Software Regeneration

Tarkasteltava ohjaus ohjelmiston rakennetta säilyttävässä uudelleengeneroinnissa

Ohjattava koodin osittainen uudelleengenerointi hierarkkisten diskreettien latenttiesitysten avulla.

Alexey Gavrilov1Alan-Barsag Gazzaev1Mikhail Mozikov2Ilya Makarov2Sergey Muravyov1

  1. ITMO University, Saint Petersburg, Russian Federation
  2. AXXX, Moskova, Venäjän federaatio

Lue koko artikkeli HTML-muodossaHaettava teksti kaavoineen, taulukoineen, kuvioineen ja lähdeviitteineen.

Kirjoittajan painovalmis käsikirjoitus, jossa ovat lopullinen kirjoittajaluettelo ja DOI. CC BY 4.0 author manuscript; the ACM DOI page remains the version of record. Julkaisemisen ja uudelleenkäytön ehdot.

Artikkeli 30 sekunnissa

TutkimuskysymysKuinka generatiivinen malli voi muokata ohjelman valittuja osia ja samalla säilyttää sen karkean rakenteen valitut elementit?

Ongelma

Tekoälyavusteisessa koodinmuokkauksessa tarvitaan usein yksi rajattu muutos, jonka aikana ohjelman valitut rakenteet säilyvät ennallaan. Koko ohjelman uudelleengenerointi voi muuttaa asiaan liittymättömiä alueita, eivätkä tokenitason rajoitteet tarjoa karkean tason ohjauspintaa.

Lähestymistapa

Tutkimuksessa 64 tokenin Python-funktiot koodataan hierarkkisella VQ-VAE-mallilla, valitut karkean tason diskreetit koodit lukitaan ja jäljelle jäävissä latenttipositioissa käytetään maskattua diskreettiä generointia koodin paikalliseen uudelleengenerointiin.

Päätulos

Neljän ylätason koodin lukitseminen nostaa jäsennysasteen arvosta 0.453 arvoon 0.591, kun taas lukitsemattomien positioiden muutosaste on edelleen 0.936 ja ehdollisista näytteistä 0.998 säilyy yksilöllisinä.

Miksi tällä on merkitystä

Tulokset osoittavat mitattavan vakauden ja muutosvapauden välisen kompromissin hallittavassa koodin muokkauksessa ja ohjelman osittaisessa uudelleengeneroinnissa. Ne tarjoavat alustavaa näyttöä tarkasteltavasta latentista ohjauskerroksesta, eivät todistetta semanttisesta ekvivalenssista tai toiminnallisesta oikeellisuudesta.

Tiivistelmä

Ohjelmistotekniikan työnkulut, kuten rajoitettu korjaaminen, vaiheittainen tarkentaminen ja rakenteen säilyttävä muokkaaminen, edellyttävät sen hallintaa, mikä muuttuu ja mikä pysyy kiinteänä. Tokenitason generointi tarjoaa näihin toimintoihin heikon ohjauspinnan, sillä se rajoittaa paikallista pintatekstiä niiden karkean tason rakenteellisten invarianttien sijasta, joita ohjelmistotekniikassa usein pyritään säilyttämään. Tutkimme hierarkkisia diskreettejä latenttiesityksiä ohjelmistoartefaktien tarkasteltavana väliesityksenä: hierarkkinen VQ-VAE pakkaa 64 tokenin Python-funktion karkean ja hienon tason diskreeteiksi koodeiksi, ja maskattu diskreetti generointi generoi uudelleen vain valitut sijainnit osittaisten rajoitteiden alaisina. Kun aineistona on 2,000 esikäsiteltyä Python-funktiota, neljän ylimmän tason koodin lukitseminen parantaa jäsennysastetta arvosta 0.453 arvoon 0.591, samalla kun lukitsemattomissa sijainneissa säilyy huomattava muutos (muokkausvapaus, 0.936) ja näytteiden yksilöllisyys on lähes maksimaalinen (monimuotoisuus, 0.998). Kiinteässä karkean tason kontekstissa alemman tason tarkennus on heikompaa mutta edelleen monotonista, mikä tukee hierarkian tulkintaa karkeasta hienojakoiseen. Kokonaisuutena tulokset tarjoavat alustavaa näyttöä käytännöllisestä ohjauskerroksesta, joka tukee ohjelmistoartefaktien rajattua, rakenteen säilyttävää uudelleengenerointia tokenitason yläpuolella.

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

Kontribuution tyyppi Piiloavaruuden ohjausmenetelmä

s. 1406–1407Täydentävä posteri

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

Jaa tämä artikkeliJaa

Keskeiset tulokset

Tarkasteltava ohjaus ohjelmiston rakennetta säilyttävässä uudelleengeneroinnissa: keskeiset tulokset
AsetelmaJäsennysasteRunkoAllekirjoitusLukitsematon muutos
Syöte (katkaistu)0.9940.9940.994
Koodekin rekonstruktio0.8570.8480.4930
Ehdoton generointi0.4530.0800.995
Ehdollinen, prefiksi k=40.5910.2950.0610.936
Ehdollinen, allekirjoitusjakso0.60.3020.063ei raportoitu

Keskeinen tulos. Karkean tason latenttien lukitseminen parantaa syntaktista vakautta tukahduttamatta muokattavan alueen muutoksia; tulos osoittaa rakenteellista ohjattavuutta, ei taattua toiminnallista vastaavuutta.

Aineisto
2 000 esikäsiteltyä Python-funktiota CodeParrot Clean -osajoukosta
Otoskoko
2 000 esikäsiteltyä Python-funktiota; ehdollisten näytteiden yksilöllisyys on 0,998.
Mittarit
Jäsennysaste; rungon ja signatuurin säilymisen korvikemittarit; lukitsemattomien sijaintien muutosaste; näytteiden yksilöllisyys ja entropia
Epävarmuus
Kaksisivuinen tutkimus raportoi piste-estimaatit ilman luottamusvälejä tai useisiin satunnaissiemeniin perustuvaa tilastollista analyysia.
Ehdot
64 tokenin funktiot, argmax-dekoodaus, 16 ylätason ja 32 alatason koodia; kaikkien koodien lukitseminen palauttaa koodekin rekonstruktion täsmälleen.

PDF ja viittaustiedot

Viittaa tähän artikkeliin BibTeX on suositeltu muoto. Kaikki alla olevat versiot tuotetaan samasta julkaisutietueesta.

Avaa 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},
}
Lataa .bib

Viittaustiedostot:APA-tekstiIEEE-tekstiRISCSL-JSONSchema.org JSON-LDOAI-DC XMLOpenAIRE v4 XMLMODS XMLJATS 1.4 -metatieto-XMLKokoteksti JATS 1.4 XML -muodossaRDF TurtleLinkkijoukko (JSON)Linkkijoukko (HTTP)RO-Crate

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

Kattava opas

Kattava tutkimusopas

Menetelmä

Menetelmä pakkaa lyhyen Python-funktion kahden tason diskreeteiksi koodeiksi, kiinnittää valitut karkean tason sijainnit ja generoi muut sijainnit uudelleen ennen purkamista takaisin koodiksi.

  1. Enkoodaa

    Pakkaa 64 tokenin Python-funktio hierarkkisella VQ-VAE:lla 16 ylätason ja 32 alatason koodiksi.

  2. Lukitse

    Valitse säilytettävää rakennetta edustavat karkean tason koodipositiot, kuten funktion allekirjoituksen kattava prefiksi.

  3. Generoi uudelleen

    Suorita maskattu diskreetti generointi vain lukitsemattomissa positioissa ja dekoodaa valmis hierarkia takaisin lähdekoodiksi.

  4. Tarkastele

    Mittaa jäsennysaste, rakenteelliset korvikemittarit, lukitsemattomien sijaintien muutos ja näytteiden yksilöllisyys ennen regeneroinnin hyväksymistä.

Valitut karkean tason ohjelmakoodit pidetään kiinteinä, kun taas peitetyt hienojakoiset diskreetit koodit generoidaan uudelleen ja puretaan muokatuksi Python-funktioksi.
Hierarkkisten diskreettien latenttikoodien muokkaus säilyttää ohjelman karkean rakenteen valitut osat ja generoi samalla uudelleen muokattavan alueen hienojakoiset koodit.Lähde: Kirjoittajan laatima, julkaistuun menetelmään ja tuloksiin perustuva selittävä kaavio..Uudelleenkäytön ehdot: CC BY 4.0.Ehdotettu lähdemerkintä: Gavrilov et al. (2026), Inspectable Control for Structure-Preserving Software Regeneration. Lataa SVG.

Keskeinen ajatus

Ohjaus kohdistetaan tokenien yläpuoliseen opittuun esitykseen: karkean tason latenttipositiot määrittävät eksplisiittiset kohdat, joissa rakenne voidaan jäädyttää samalla kun läheiset toteutuksen yksityiskohdat säilyvät muokattavina.

Ero läheisiin lähestymistapoihin

Kehote- tai token-tason rajoitteet kohdistuvat pintatekstiin. Ehdotettu rajapinta tuo näkyviin karkean ja hienojakoisen tason diskreetit ohjauspisteet ja mittaa niiden tuottamaa vakauden ja vapauden välistä kompromissia.

Mikä on uutta

Työssä esitellään ja arvioidaan tarkasteltava hierarkkinen latenttiohjauskerros ohjelmistoartefaktien rajattuun uudelleengenerointiin.

Kysymykset, joihin tämä artikkeli auttaa vastaamaan

Avaa kysymys saadaksesi artikkeliin perustuvan tiiviin vastauksen. Näytön yksityiskohtaiset rajat esitetään Rajoitukset-osiossa.

  1. Miten tekoäly voi muokata koodia kirjoittamatta kaikkea uudelleen?

    Artikkelissa tutkitaan koodin osittaista uudelleengenerointia tokenitason yläpuolella. Hierarkkinen VQ-VAE kuvaa lyhyen Python-funktion karkean ja hienon tason diskreeteiksi koodeiksi; valitut karkean tason sijainnit lukitaan, ja maskattu diskreetti generointi muuttaa ennen purkamista vain jäljelle jääviä latenttisijainteja. Näin saadaan täsmällinen säilytysraja sen sijaan, että koko funktio generoitaisiin uudelleen.

  2. Mitkä menetelmät säilyttävät ohjelman rakenteen koodingeneroinnin aikana?

    Työssä testataan hierarkkista diskreettiä latenttiohjausta. Karkean tason latenttipositiot voidaan kiinnittää samalla, kun lukitsemattomat positiot generoidaan uudelleen, minkä jälkeen mitataan jäsentymisaste ja rakenteelliset sijaismittarit. Näyttö koskee lyhyiden Python-funktioiden todennäköisyyspohjaista rakenteellista vakautta; se ei osoita AST:n täsmällistä säilymistä, semanttista ekvivalenssia eikä toiminnallista oikeellisuutta.

  3. Voivatko hierarkkiset diskreetit latenttimuuttujat mahdollistaa koodin paikallisen ohjauksen?

    Raportoidussa 2,000 funktion kokeessa neljän ylätason koodin lukitseminen kasvatti jäsennysastetta arvosta 0.453 arvoon 0.591. Samalla lukitsemattomista positioista muuttui 0.936, ja ehdollisista näytteistä 0.998 oli yksilöllisiä. Tulokset tarjoavat alustavaa näyttöä siitä, että karkeat piiloavaruuden rajoitteet voivat säilyttää osan rakenteesta poistamatta paikallisen muokkauksen vapautta tai näytteiden monimuotoisuutta.

  4. Miten koodin generoinnissa voidaan tasapainottaa rakenteellinen vakaus ja monimuotoisuus?

    Artikkelissa arvioidaan vakautta ja vapautta yhdessä sen sijaan, että optimoitaisiin vain kelvollisuutta. Karkean tason koodien lukitseminen parantaa syntaktista kelvollisuutta, samalla kun lukitsemattomien sijaintien muutos pysyy suurena ja ehdolliset näytteet lähes täysin yksilöllisinä. Tulos osoittaa testatussa asetelmassa mitattavan vakauden ja muutosvapauden välisen kompromissin, ei yleispätevää optimia.

  5. Miten tämä työ suhteutuu suurten kielimallien avustamaan koodinmuokkaukseen?

    Testattu malli on maskattua diskreettiä generointia käyttävä hierarkkinen VQ-VAE, ei suuri kielimalli. Ohjausongelma on silti olennainen LLM-avusteisessa muokkauksessa, sillä tarpeettomat muutokset pyydetyn alueen ulkopuolella ovat käytännön ongelma. Artikkelin kontribuutio on täydentävä latenttiavaruuden mekanismi ja arviointikehys, ei LLM-muokkauksen vertailuasetelma.

Vertailu läheisiin lähestymistapoihin

Tarkasteltava ohjaus ohjelmiston rakennetta säilyttävässä uudelleengeneroinnissa: tosiseikkoihin perustuva vertailu läheisiin lähestymistapoihin
KyvykkyysTokenitason ohjausHierarkkinen latenttiohjaus
Lukitse karkea rakenneRajallinenSisäänrakennettu karkean tason koodien lukitus
Osittainen regenerointiHauraat pintatason rajoitteetValittujen koodien maskattu uudelleennäytteistys
Tarkasteltavat ohjauspisteetEi eksplisiittistä välikerrostaKarkean ja hienon tason diskreetit positiot
Tässä artikkelissa esitetty näyttöEi arvioitu täydellisenä vertailumenetelmänäSyntaktisen vakauden ja muokkausvapauden diagnostiikka

Taulukko kuvaa rajapinnat ja tutkimuksessa mitatun näytön; siinä ei väitetä toiminnallista oikeellisuutta eikä yleispätevää paremmuutta.

Merkitys ja rajaus

Artikkeli on merkityksellisin tutkimukselle, jossa tarvitaan täsmällistä hallintaa siihen, mitä tekoälyavusteinen koodimuunnos saa muuttaa ja minkä ohjelman osien tulee pysyä vakaina.

  1. Ohjattava ja rakenteen säilyttävä koodin generointi

  2. Paikallinen ohjelmankorjaus ja rajattu refaktorointi

  3. Lähdekoodin hierarkkiset diskreetit esitykset

  4. Lähdekoodin maskattu diskreetti generointi

  5. Ohjelmistoartefaktien ohjaus piiloavaruudessa

Katso rajoitteet ja näytön rajat

Rajoitukset

  • Tutkimus rajoittuu lyhyisiin Python-funktioihin, jotka on katkaistu 64 tokeniin.
  • Arvioinnissa käytetään argmax-dekoodausta ja syntaktisia tai rakenteellisia sijaismittareita toiminnallisen ekvivalenssin testien sijasta.
  • Allekirjoituksen täsmällinen säilyttäminen on edelleen puutteellista.
  • Alatason ohjaus on ylätason ohjausta heikompaa.
  • Piiloavaruuden positioita ei ole vielä kohdistettu semanttisiin alueisiin, kuten AST-jaksoihin, signatuureihin tai ohjausvuon rakenteeseen.
  • Tulokset eivät osoita käytännön korjausten, refaktorointien tai repositoriotason muutosten oikeellisuutta.

Artikkelissa siteeratut lähteet

Nämä merkinnät vastaavat artikkelin PDF-version numeroitua References-osiota.

  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.

Aineistot ja toistettavuus

Kustantaja
ACM
Julkaisuaineistot
Julkinen käsikirjoitus, tulostaulukot, selittävä kuvio ja viittaustiedostot ovat saatavilla täällä. Toteutuskoodia ja tarkistuspisteitä ei ole julkaistu.

Aineistoseloste

Lähde
CodeParrot Clean -aineiston esikäsitelty osajoukko, joka sisältää 2 000 Python-funktiota.
Lisenssi
Sivusto ei jakele aineistotiedostoja edelleen; uudelleenkäyttöön sovelletaan edelleen alkuperäisen CodeParrot-aineiston ja lähdekoodin lisenssejä.
Esikäsittely
Python-funktiot tokenisoidaan ja katkaistaan tai täydennetään 64 tokenin mittaisiksi ennen hierarkkista koodausta.
Jako
Posterissa raportoidaan 2,000 funktion arviointijoukko; julkiseen artikkeliin ei sisälly muuttumatonta opetus- ja validointijaon manifestia.
Muoto
Python-lähdekoodin funktiot, GPT-tyyliset tokenijonot, 16 alkion pituiset ylätason koodijonot ja 32 alkion pituiset alatason jonot.
Versio / tarkistussumma
Kaksisivuisessa artikkelissa ei ilmoiteta aineiston tarkistussummaa eikä muuttumattoman tilannevedoksen tunnistetta.
Hankinta
Julkaisusivun yhteydessä ei ole julkaistu avointa aineistonhakukomentosarjaa.
Käytön rajat
Otos ei edusta repositoriotason ohjelmistoja, useita ohjelmointikieliä eikä käyttäytymisen perusteella varmennettuja korjaustehtäviä.

Versiot

  1. Julkaistu versioACM FSE Companion, 2026
  2. Avoimen arkiston tietueOpenAIREn indeksoima Zenodo-tietue
  3. Kirjoittajan aineistotPosteri ja esityskalvot
  4. Bibliografinen tietueDBLP
  5. Avaa tieteellinen tietueOpenAlex
  6. Viittausgraafin tietueSemantic Scholar
  7. Kirjoittajan jakama kokotekstiResearchGate
  8. Yleistajuinen tiivistelmäKudos

Julkaistu DOI on ensisijainen bibliografinen tunniste. Tämä sivu säilyy hankkeen ainoana kanonisena URL-osoitteena kaikissa versioissa.