Temel Kavramlar
Durch den Einsatz von Large Language Models können präzise und umfassende Programm-Spezifikationen automatisch generiert werden, um die Komplexität realer Programme besser zu erfassen.
Özet
Die Studie stellt einen neuartigen Ansatz namens SpecGen vor, um formale Programm-Spezifikationen automatisch zu generieren. SpecGen nutzt die Fähigkeiten von Large Language Models (LLMs) zur Codeanalyse und -verständnis, um präzisere und umfassendere Spezifikationen zu erstellen als bisherige Methoden.
Der Ansatz besteht aus zwei Phasen:
- Konversationsbasierte Spezifikationsgenerierung: SpecGen führt einen Dialog mit dem LLM, um die Ausgabe schrittweise zu verbessern und korrekte Spezifikationen zu erhalten.
- Mutationsbasierte Spezifikationsgenerierung: Wenn das LLM keine korrekten Spezifikationen generieren kann, wendet SpecGen verschiedene Mutationsoperatoren an, um die Ausgabe zu diversifizieren, und wählt dann die am besten verifizierbaren Spezifikationen aus.
Die Evaluation zeigt, dass SpecGen deutlich bessere Ergebnisse erzielt als bisherige Ansätze, sowohl auf etablierten Benchmarks als auch auf einem neu erstellten, repräsentativen Datensatz. SpecGen kann für 279 von 385 Programmen verifizierbare Spezifikationen generieren, während die besten Vergleichsansätze nur 218 bzw. 98 Programme abdecken. Zusätzlich belegt eine Nutzerstudie, dass die von SpecGen generierten Spezifikationen die Programmsemantik präzise und umfassend erfassen.
İstatistikler
Die Studie evaluiert SpecGen auf 385 Java-Programmen insgesamt.
SpecGen generiert verifizierbare Spezifikationen für 279 dieser Programme.
Die besten Vergleichsansätze (Konversationsbasiert und Houdini) schaffen nur 218 bzw. 98 Programme.
Alıntılar
"Durch den Einsatz von Large Language Models können präzise und umfassende Programm-Spezifikationen automatisch generiert werden, um die Komplexität realer Programme besser zu erfassen."
"SpecGen kann für 279 von 385 Programmen verifizierbare Spezifikationen generieren, während die besten Vergleichsansätze nur 218 bzw. 98 Programme abdecken."