← Neueste Arbeiten
🤖 AI

Graph Construction and Matching for Imperative Programs using Neural and Structural Methods

Dieser Beitrag stellt eine Pipeline vor, die imperative Programme und deren Annotationen durch die Integration von Parsing des abstrakten Syntaxbaums mit semantischen Einbettungen in einheitliche, typisierte attribuierte Graphen umwandelt und dadurch konsistente Graphrepräsentationen über verschiedene Sprachen und Annotationsstile hinweg ermöglicht, um die Wiederverwendung von Verifikationsartefakten zu erleichtern.

Ursprüngliche Autoren: Arshad Beg, Diarmuid O'Donoghue, Rosemary Monahan

Veröffentlicht 2026-04-30
📖 5 Min. Lesezeit🧠 Tiefgang

Ursprüngliche Autoren: Arshad Beg, Diarmuid O'Donoghue, Rosemary Monahan

Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen

Stellen Sie sich vor, Sie besitzen eine riesige Bibliothek mit Bedienungsanleitungen zum Bau verschiedener Maschinentypen. Einige sind auf Englisch verfasst, einige auf Französisch und einige in einem Geheimschriftcode. Selbst wenn zwei Maschinen exakt dasselbe tun (wie „einen schweren Kasten heben"), können sich ihre Anleitungen aufgrund der verwendeten Sprache oder des spezifischen Schreibstils völlig unterscheiden.

Das Problem lautet: Wie finden Sie die richtige Anleitung zur Wiederverwendung, wenn Sie eine neue Maschine bauen müssen? Normalerweise muss ein Mensch hunderte Seiten durchlesen, um eine Übereinstimmung zu finden, was langsam und frustrierend ist.

Dieser Artikel schlägt einen intelligenten Weg vor, dieses Problem mithilfe von Computergraphen und KI zu lösen. Hier ist die Aufschlüsselung ihres Ansatzes unter Verwendung einfacher Analogien:

1. Das Ziel: „Zwillinge" in einer Menschenmenge finden

Die Forscher wollen „Verifikationsartefakte" finden. Stellen Sie sich diese als die Baupläne, Sicherheitsprüfungen und Qualitätsgarantien vor, die an Softwareprogramme angehängt sind. Sie wollen wissen: „Sieht dieses neue Programm einem alten ähnlich, das wir bereits geprüft haben?" Wenn ja, können wir die alten Sicherheitsprüfungen wiederverwenden, anstatt von vorne zu beginnen.

2. Die Herausforderung: Unterschiedliche Sprachen, gleiche Logik

Der Artikel betrachtet drei verschiedene „Sprachen" zum Schreiben dieser Sicherheitsprüfungen:

  • C mit ACSL: Wie das Schreiben eines Rezepts in einem bestimmten Notizbuchstil.
  • Java mit JML: Wie das Schreiben desselben Rezepts, aber in einem anderen Notizbuch mit leicht unterschiedlichen Symbolen.
  • Dafny (für C#): Wie das Schreiben des Rezepts direkt in die Kochanweisungen ohne ein separates Notizbuch.

Obwohl sie denselben Job erledigen, sehen die Symbole und Wörter unterschiedlich aus. Ein Computer wird normalerweise durch diese Oberflächendifferenzen verwirrt.

3. Die Lösung: Umwandlung von Code in „molekulare Modelle"

Anstatt die Wörter zu lesen, wandeln die Forscher den Code und seine Sicherheitsregeln in 3D-molekulare Modelle um (die sie Graphen nennen).

  • Die Knoten (Die Atome): Jeder Teil des Programms (wie eine Variable, eine Schleife oder eine Sicherheitsregel) wird zu einem Punkt.
  • Die Kanten (Die Bindungen): Die Linien, die die Punkte verbinden, zeigen, wie sie zusammenhängen (z. B. „diese Variable speist diese Schleife").

Dies erzeugt eine visuelle Karte der Programmstruktur. Entscheidend ist, dass sie nicht nur den Code abbilden, sondern auch die Sicherheitsregeln (die Annotationen) direkt auf die Karte projizieren.

4. Das Geheimnis: Dem Plan ein „Gehirn" geben

Eine Karte ist gut, aber sie versteht keine Bedeutung. Zwei Karten mögen strukturell ähnlich aussehen, bedeuten aber unterschiedliche Dinge. Um dies zu beheben, verwenden die Forscher KI-Modelle (insbesondere SentenceTransformer und CodeBERT), um der Karte ein „Gehirn" zu geben.

  • Die Analogie: Stellen Sie sich vor, Sie machen ein Foto Ihres molekularen Modells und führen es durch einen superintelligenten Übersetzer. Die KI liest den Text innerhalb des Modells und erstellt einen digitalen Fingerabdruck (ein Vektor), der die Bedeutung des Codes erfasst, nicht nur die Form.
  • Jetzt kann der Computer den „Fingerabdruck" eines Java-Programms mit dem „Fingerabdruck" eines C-Programms vergleichen. Selbst wenn sie unterschiedlich aussehen, weiß der Computer, wenn ihre Fingerabdrücke übereinstimmen, dass sie im Wesentlichen gleich sind.

5. Der Prozess: Ein Fließband in einer Fabrik

Der Artikel beschreibt eine Pipeline (ein Fließband), die dies automatisch erledigt:

  1. Eingabe: Sie nehmen Rohcode (C, Java oder C#).
  2. Übersetzung: Sie verwenden Skripte, um automatisch Sicherheitsregeln zum Code hinzuzufügen, falls sie fehlen, oder den Code in verschiedene Sprachen zu übersetzen.
  3. Graphenerstellung: Sie wandeln den Code in diese „molekularen Modelle" (Graphen) um.
  4. KI-Anreicherung: Sie verwenden die KI, um die „Fingerabdrücke" für diese Graphen zu generieren.
  5. Abgleich: Sie vergleichen die Fingerabdrücke. Wenn zwei Programme ähnliche Fingerabdrücke haben, sind sie eine Übereinstimmung.

6. Was sie fanden

Sie testeten dies an 56 verschiedenen Programmen (wie das Sortieren von Listen oder das Suchen nach Zahlen) und deren Variationen.

  • Das Ergebnis: Das System erstellte erfolgreich diese Graphenkarten für alle drei Sprachen.
  • Der Abgleich: Als sie die Programme verglichen, identifizierte das System korrekt, dass zwei Programme „Zwillinge" waren (sehr hoher Ähnlichkeitswert), selbst wenn eines in C und das andere in Java geschrieben war. Es identifizierte auch korrekt, dass ein Sortierprogramm und ein Suchprogramm keine Zwillinge waren (niedriger Ähnlichkeitswert).

7. Der Haken (Einschränkungen)

Die Autoren sind ehrlich bezüglich der Mängel:

  • Das „Regex"-Problem: Das System verwendet einfache Mustererkennungregeln (wie ein „Suchen und Ersetzen"-Werkzeug), um die Graphen zu erstellen. Es ist schnell, aber wenn der Code unordentlich oder seltsam geschrieben ist, könnte das System ein Detail übersehen.
  • Das Wissen der KI: Die verwendeten KI-Modelle sind allgemein gehalten. Sie sind nicht speziell darauf trainiert, „Anwälte" für Code zu sein. Sie könnten sehr subtile Unterschiede in Sicherheitsregeln übersehen, die ein menschlicher Experte erkennen würde.

Zusammenfassung

Kurz gesagt, entwickelte dieser Artikel einen universellen Übersetzer und Matcher für Software-Sicherheitsprüfungen. Indem sie Code und seine Regeln in strukturierte Karten umwandeln und diesen Karten dann KI-generierte Bedeutungen verleihen, zeigten sie, dass Computer ähnliche Software über verschiedene Programmiersprachen hinweg finden können. Dies ist der erste Schritt in eine Zukunft, in der wir Sicherheitsprüfungen automatisch wiederverwenden können, was Entwicklern Zeit spart und Software sicherer macht.

Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?

Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.

Digest testen →