Frage

  • Welche Arten von Anwendungen haben Sie verwendet? Modellprüfung zum?
  • Welches Modellkontrollwerkzeug haben Sie verwendet?
  • Wie würden Sie Ihre Erfahrungen mit der Technik zusammenfassen, insbesondere bei der Bewertung seiner Effektivität bei der Bereitstellung von Software von höherer Qualität?

Im Verlauf meines Studiums hatte ich die Chance zu verwenden Drehen, und es weckte meine Neugier darüber, wie viel tatsächliche Modellprüfung vor sich geht und wie viel Wert es gibt, dass Organisationen herauskommen. Nach meiner Berufserfahrung habe ich an Geschäftsanwendungen gearbeitet, bei denen (natürlich) keine Prüfung der formellen Überprüfung auf die Logik angewendet wird. Ich würde wirklich gerne etwas über so Volksmodell -Überprüfungserfahrung und Gedanken zu diesem Thema lernen. Wird die Modellprüfung jemals zu einer umfassenderen sich entwickelnden Praxis, die wir in unserem Toolkit haben sollten?

War es hilfreich?

Lösung

Ich habe gerade eine Klasse bei Modellprüfung beendet und die großen Werkzeuge, die wir verwendeten, waren Drehen und SMV. Am Ende haben wir sie verwendet, um Eigenschaften auf allgemeine Synchronisationsprobleme zu überprüfen, und ich fand SMV ein wenig einfacher zu bedienen.

Obwohl diese Tools Spaß machten, glänzen sie wirklich, wenn Sie sie mit etwas kombinieren, das Einschränkungen Ihres Programms dynamisch durchsetzt (so dass es ein bisschen einfacher ist, "nützliche" Dinge über Ihr Programm zu überprüfen). Wir nahmen das am Ende ein Spring Webflow Framework, das mit XML eine staatlich maschinenähnliche Datei schreibt, die angibt, welche Webseiten über den Übergang zu den anderen übergehen können, und mit SMV die Überprüfung in diesen Anwendungen durchführen können ((Schamloser Stecker hier).

Um Ihre letzte Frage zu beantworten, denke ich, dass die Modellprüfung definitiv nützlich ist, aber ich neige mehr dazu, Unit -Tests als Technik zu verwenden, mit der ich mich wohl fühle, mein Endprodukt zu liefern.

Andere Tipps

Wir haben mehrere Modellprüfer in Lehr-, Systemdesign- und Systementwicklung verwendet. Unsere Toolbox umfasst Spin, Uppal, Java Pathfinder, PVS und Bogor. Jeder hat seine Stärken und Schwächen. Alle finden Probleme mit Modellen, die für Menschen einfach unmöglich sind, zu entdecken. Ihre Benutzerfreundlichkeit variiert, obwohl die meisten Pushbutton automatisiert sind.

Wann verwenden Sie einen Modellprüfer? Ich würde sagen, wenn Sie ein Modell beschreiben, das bestimmte Eigenschaften haben muss (oder nicht), ist es größer als eine Handvoll Konzepte. Jeder, der glaubt, dass er alles beschreiben und verstehen kann, was Größere oder Komplexer ist, täuschen sich selbst.

Für welche Arten von Anwendungen haben Sie die Modellprüfung verwendet?

Wir haben den Java Path Finder Model Checker verwendet, um einige Sicherheit (Deadlock, Rassenbedingung) und zeitliche Eigenschaften zu überprüfen (verwendeten lineare zeitliche Logik, um sie anzugeben). Es unterstützt klassische Behauptungen (wie Notnull) auf Java (Bytecode) - es ist für die Programmprüfung der Programmmodell.

Welches Modellkontrollwerkzeug haben Sie verwendet?

Wir verwendeten Java -Pfadfinder (für akademische Zwecke). Es ist zunächst die Open -Source -Software, die von der NASA entwickelt wurde.

Wie würden Sie Ihre Erfahrungen mit der Technik zusammenfassen, insbesondere bei der Bewertung seiner Effektivität bei der Bereitstellung von Software von höherer Qualität?

Programmüberprüfung des Programmmodells hat ein großes Problem bei der Explosion des Zustandsraums (Speicher- und Festplattennutzung). Es gibt jedoch eine Vielzahl von Techniken, um die Probleme zu reduzieren und große Artefakte wie partielle Ordnung, Abstraktion, Symmetriereduktion usw. zu behandeln.

Ich habe Spin verwendet, um ein Problem mit der Parallelität in der SPS -Software zu finden. Es fand eine unerwartete Rennbedingung, die durch Inspektion oder Test sehr schwer zu finden wäre.

Gibt es übrigens ein "Spin for Dummies" -Buch? Ich musste es aus dem Buch "The Spin Model Checker" und verschiedenen Online-Tutorials heraus lernen.

Ich habe während meiner Zeit an der Universität einige Nachforschungen zu diesem Thema durchgeführt und die erweitert Status Erkundungsmontagemodellprüfer.

Wir haben eine virtuelle Maschine verwendet, um jeden möglichen Weg/Zustand des Programms mit einem* und einer heuristischen Heuristik zu gehen, abhängig von der Art des Fehlers (Deadlock, E/A -Fehler, ...)

Es wurde inspiriert von Java Pathfinder Und es hat mit C ++ Code funktioniert. (Alles, was GCC kompilieren könnte)

In unseren Erfahrungen wird diese Art von Technologie jedoch nicht bald in Geschäftsanwendungen verwendet, da GUI -Probleme, die Arbeit für die Erstellung einer anfänglichen Testumgebung und die enormen Hardwareanforderungen erforderlich sind. (Sie benötigen aufgrund des gigantischen Zustands viel RAM- und Disc -Raum)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top