Frage

Ich habe in der formalen Methoden seit einiger Zeit interessiert. Ich habe formale Methoden Grund über einige sehr spezifische Teilbereiche von einigen Projekten eingesetzt ich habe auf gearbeitet. Ich war nie andere Teammitglieder zu überzeugen Lage, das gleiche geschweige denn geben Sie eine gesamte Domain mit einem formalen Verfahren zu versuchen.

Eine Methode, die ich besonders interessant gefunden haben, ist Alloy . Ich denke, es kann „Skala“ besser als Grundlage für ein gesamtes Projekt, weil es konzeptionell und notationally sehr nah an aktuellen Programmiersprachen ist. Darüber hinaus können die Werkzeuge sind sehr fest, so dass die Vorteile der Modellverifikation sind leicht verfügbar.

ich sehr viel würde interessiert über irgendwelche realen Welt Erfahrungen hören Sie Leute mit gehabt haben könnte mit Legierung in Ihren Projekten. Spüren Sie, dass es Ihnen bei der Gestaltung ein besseres Domain-Modells geholfen hat? Haben Fehler in Ihrem Domain-Modell während der Überprüfung zu finden? Würden Sie es wieder verwenden?

War es hilfreich?

Lösung

Ja, ich habe Legierung und es Vettern verwendet industriell. Legierung hat sehr hilfreich, mich davon zu überzeugen, dass meine Modelle nicht wild falsch waren --- oder besser gesagt, mir zeigt, wo sie falsch waren und gab Anlass zu albern Ergebnisse. Andere speziellere Tools, wie Songs Athena und Guttman und Ramsdell des CPSA in ihren engeren Domänen nützlicher gewesen. Was möchten Sie über hören?

Andere Tipps

habe ich Legierung auf einigen Projekten eingesetzt und haben und sie nützlich fanden; einige auf, aber nicht all diese Projekte, die ich in der Lage gewesen, andere zu überzeugen beteiligt Legierung zu verwenden, wie gut oder zumindest an der Arbeit mit den Alu-Modellen, die ich geschrieben habe. Diese Projekte können oder nicht sein, was Sie im Kopf haben zu fragen, für ‚real-world‘ Projekte, aber sie haben sicherlich Platz im Teil der realen Welt, die ich Arbeit in.

2006 und 2007 habe ich ein Teil Alloy Modell für den dann aktuellen Entwurf der W3C XProc Spezifikation; soweit ich sagen könnte, die meisten Mitglieder der Arbeitsgruppe nie gelesen das Papier schrieb ich (unter http://www.w3.org/XML/XProc/2006/12/alloy-models/models.html ); sie sagte: „Oh, wir, dass ein Teil der Spezifikation der letzten Woche geändert, so was das Modell sagt nicht mehr relevant ist“. Aber das Papier kam an den Herausgeber der Spezifikation zu überzeugen, dass die abstrakte ‚Komponente‘ Ebene im ersten Entwurf der Spezifikation beschrieben wurde sträflich underspecified und benötigt entweder werden vollständig spezifiziert oder fallen gelassen. Er ließ es mit (glaube ich) gute Ergebnisse für die Lesbarkeit und Benutzerfreundlichkeit des spec.

Im Jahr 2010 machte ich ein Alloy Modell des XPath 1.0-Datenmodell , das einige Probleme aufgedeckt in die Spezifikation. Die Reaktion der meisten Beteiligten (einschließlich der W3C-Arbeitsgruppe verantwortlich für die XPath 1.0-Spezifikation beibehalten) hat leider nicht ermutigend.

Ein Forschungsprojekt I beteiligt bin mit Legierung verwendet hat den MLCD Overlap Corpus, eine Sammlung von Beispieldokumenten und zugehörige Informationen zu modellieren wir schaffen (Hyperlinks auf SO Beharren unterdrückt); die Legierung Modell ein paar Fehler in unserem ersten Entwurf für den Korpus Katalog gefunden, so ist es die Mühe wert war.

Und wir haben auch Legierung verwendet, um einige Modellierungsarbeiten formalisieren wir über die Natur der Transkription und auf der Verlängerung des Typs / Token Unterscheidung Dokumentstruktur (für unser Papier, Blick für die 2010 Verfahren von Balisage gemacht haben: Die Markup Konferenz). Darin liegt ein wenig außerhalb Legierung üblichen Anwendungsgebiet, da es nichts mit Software-Design zu tun hat, aber Alloy Fähigkeit Modelle für Konsistenz zu prüfen und Instanzen zu erzeugen hat zeigt uns einige der logischen Folgen dieses oder jenes möglich Axiom von unschätzbarem Wert für unser Modell.

Ihre spezifische Fragen zu beantworten: ja, Alloy hat mir geholfen, cleane Domain Modelle angeben, und ja, es hat Fehler und Störungen gefunden. Sie haben oft klein gewesen, aus den Gründen, Daniel Jackson in seinem Buch erklärt Software Abstraktionen : Erstens, wenn Sie Modelle während des Designs verwenden, fangen Sie frühzeitig Fehler, wenn alles ist immer noch klein. Und zweitens (in Jackson Worten): „Im Nachhinein sind die meisten Software-Design-Fragen trivial.“

Er fährt fort: „Aber wenn man sie nicht anspricht mit Kopf, triviale Probleme haben eine schlechte Angewohnheit nicht trivial zu werden.“ Meine Erfahrung bestätigt reichlich dies. Viel besser, den Kopf ab früh solche Probleme. Also ja, ich werde Legierung wieder verwenden.

Verspätet auf diesen Thread Hinzufügen ... Eunsuk Kang hat vor kurzem angewendet Alloy Sicherheit von Web-Analysen für einige Start-ups APIs ausführen (nach vielen Anwendungen von Alloy in Sicherheit wie Apurva der Analyse von OAuth und Barth et al der Analyse der Browser-basierte Sicherheitsmechanismen für CSRF usw.); Pamela Zave hat an einer beeindruckenden Analyse von Chord , ein Peer-to-Peer Speichersystem, und hat einen Fix auf den ursprünglichen Algorithmus vor kurzem geschrieben.

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