2010-11-17 4 views
7

Gibt es irgendeine Bibliothek/Werkzeug für formale Spezifikation in C++, wie JML für Java und Data Contracts in C#?Formale Spezifikation

EDIT:

Ich bin nicht für etwas spezifischer als suchen, es ist praktisch zu bedienen und fügt etwas Wert/Qualität.

EDIT2:

Ich bin nicht für UML-Tools suchen, finden Sie in den Beispielen, die ich zur Verfügung gestellt haben.

+0

Sehr gute Frage - obwohl ich nur formale Spezifikation für grad Schule Aufgaben getan habe, würde mich interessieren zu wissen, ob es irgendwelche Werkzeuge für da draußen gibt, die nicht streng akademisch ist. –

+0

Wir verwenden ein Wiki für unsere Spezifikationen. –

+0

Ein Wiki funktioniert, aber das Problem, das ich erlebt habe, ist, dass, wenn mehrere Leute an dem Code arbeiten, das "Wiki" und andere Formen der "Spezifikation" bei jeder Iteration weniger erzwungen werden. – ronag

Antwort

1

IBM Rational Rose UML-Software generiert C++ - Code gemäß dem vollständigen UML-Modell.

Niemals jemals benutzt, aber nicht wirklich meine ich. Nur ein kurzer Blick und nur auf UML-Funktionalitäten.

+0

Klingt ähnlich wie ausführbare UML. Ich bin jedoch auf der Suche nach einem formaleren Weg als zu behaupten, Verhalten der Implementierung zu spezifizieren. – ronag

+0

Danke, noch nie von Executable UML gehört. Wirklich interessant. –

+0

Entschuldigung für Unklarheiten. Was ich meinte war, dass UML zu formal ist, aber die Behauptung von C/C++ ist nicht formell genug. Ich habe mit einigen UML-basierten Tools wie Bridgepoint gearbeitet und sie fügen mehr Probleme hinzu, als sie wert sind. Funktion Verträge und Klassen Invarianten sind, was ich am meisten interessiert bin. – ronag

0

Wenn Sie nach einem einfachen Tool suchen, mit dem UML problemlos ausgeführt werden kann, ist StarUML ein Open Source-Projekt (nur Windows). Ich habe IBM Rational Rose und Microsoft Visio (mit UML-Erweiterung) verwendet und ich muss sagen, StarUML ist einfach so gut gemacht.

Ich habe noch nie etwas anderes als die Klassendiagramme versucht, und meine Erfahrung ist hauptsächlich für informelle Spezifikationen und kleine Projekte. Es hat auch einige Funktionen zur Codegenerierung, aber ich habe sie noch nie ausprobiert.

1

frama-c - faszinierend, JML inspiriert, ich versuche, es zu benutzen, aber die Zeit nicht machen können - spezifisch für c i glauben. aber sollte mindestens Zeiger zur Verfügung stellen C++ Werkzeuge