2009-05-07 4 views
5

Ich arbeite an ein paar C-Projekte und ich würde gerne automatisierte Theorem beweisen, um den Code zu validieren. Im Idealfall möchte ich nur die ATP verwenden, um die Funktionsverträge zu validieren. Gibt es irgendeine Funktionalität in C/gcc oder externe Software/Pakete/etc, die Design-by-Vertrag Stil-Codierung ermöglichen würde?Design by Contract in C für die Verwendung in automatisierten Theorem-Test

Wenn nicht, dann ist das nur ein Ansporn, selbst loszulegen.

Meine Referenzen dafür wären etwas wie SpeC# oder Sing # von MSR, aber ich bin ein Open-Source-Typ und ich suche nach Open-Source-Lösungen.

Antwort

4

Offensichtlich ist es nicht in die Sprache integriert, aber es gibt viele Add-ons, um Sie in Gang zu bringen. Die meisten von ihnen sind Beta - aber Sie könnten in Erwägung ziehen, zu ihnen beizutragen, anstatt Ihre eigenen zu gründen.

Die bei Rubyforge, Design by Contract for C, sieht sehr vielversprechend aus. GNU Nana gibt es schon lange und wird wahrscheinlich Ihren Bedürfnissen entsprechen. Hoffe, das sind hilfreich.

Edit: Prüfen this article at O'Reily auf Design by Contract für C out:

Nicht zufrieden mit assert() und begeistert von Design by Contract, ich für mein eigenes Design by Vertrag Umsetzung erstellen festgelegten C. Nach Blick auf einige der Lösungen für Java verfügbar 1 Ich entschied mich für verwenden Sie eine Teilmenge der Object Constraint Sprache, um Verträge auszudrücken [4]. Mit Ruby und Racc, ich erstellte Design von Contract für C, ein Code-Generator , die Verträge in C Kommentare in C-Code eingebettet, um die Verträge zu überprüfen.

6

Open-Source: überprüfen.

Automatisierte Theorembeweis: überprüfen.

Sie sollten wirklich Frama-C und seine ACSL Spezifikation Sprache mögen. Sie haben vielleicht schon von seinem Caduceus-Vorfahren gehört, aber zu dieser Zeit gilt es als von Frama-C/Jessie verdrängt.

2

Wenn Sie C-Code mit Theorembeweisern validieren möchten, sollten Sie die VCC project überprüfen. Von ihrer Webseite:

VCC ist ein mechanischer Verifier für gleichzeitige C-Programme. VCC nimmt ein C Programm, das mit Funktionsspezifikationen, Dateninvarianten, Schleife Invarianten und Geistercode annotiert ist, und versucht, diese Annotationen korrekt zu beweisen. Wenn dies gelingt, verspricht VCC, dass Ihr Programm die Spezifikationen tatsächlich erfüllt.

VCC ist sehr ausgereiftes System von Microsoft Research und wird verwendet, um den Hypervisor von Microsoft Hyper-V zu überprüfen. VCC ist auch Open Source.