Frage

Unser Kunde möchte, dass wir bauen eine web-basierte, rich-internet-Anwendung für das sammeln der Anforderungen an die software.Im Grunde ist es eine web-basierte case-tool folgt einem bestimmten Prozess für die Anreise Anforderungen von beteiligten.Ich bin Projektmanager und wir sind immer noch in den frühen Phasen des Projekts.

Ich habe nachgedacht über die Verwendung von formalen Methoden zur Klärung der Anforderungen für das tool für meine Kunden und den Entwicklern.Durch formale Methoden, die ich meine, auf eine form der Modellierung, evtl. etwas mathematisch-basiert.Einige der Dinge, die ich gelesen habe, über und erwägen, Z (http://en.wikipedia.org/wiki/Z_notation), state machines, UML 2.0 (eventuell mit Erweiterungen wie OCL), Petri-Netze, und einige Codierung Ebene Dinge wie Verträge und pre-und post-Bedingungen.Gibt es etwas, was ich beachten soll?

Die Entwickler sind erfahrene, aber je nach der Formalismus verwendet, Sie können lernen einige mathematische.

Ich bin versucht zu bestimmen, ob es sich lohnt, während für mich die Verwendung formaler Methoden auf das Projekt und wenn ja, in welchem Umfang.Ich weiß, "es hängt", so die hilfreiche Antwort für mich ist ein ja/Nein und Argumente.

Möchten Sie den Einsatz von formalen Methoden wenn Sie waren an diesem Projekt?

War es hilfreich?

Lösung

Ich habe nachgedacht über die Verwendung von formalen Methoden zur Klärung der Anforderungen für das tool für meine Kunden und den Entwicklern.

Sehr wenige Entwickler haben formale Methoden Erfahrung.Die einzige Zeit, die ich habe Kunden gesehen, die mit formalen Methoden der Ausbildung waren Mitglieder der ZUG, wenn wir waren zu portieren CADiZ Windows.

Durch formale Methoden, die ich meine, auf eine form der Modellierung, evtl. etwas mathematisch-basiert.Einige der Dinge, die ich gelesen habe, über und erwägen, Z (http://en.wikipedia.org/wiki/Z_notation), state machines, UML 2.0 (eventuell mit Erweiterungen wie OCL), Petri-Netze, und einige Codierung Ebene Dinge wie Verträge und pre-und post-Bedingungen.Gibt es etwas, was ich beachten soll?

Es gibt eine sehr große Lücke zwischen der Z, die eine formale Methode, deren Grundlage in der Mengenlehre, und UML, ist eine informelle notation mit einigen semi-formale Notationen (state machines) tagged on.

Einige technische Kunden, wie Sie erwarten würden, zu finden, die mit einer software-Anforderungen-Tools sind Recht komfortabel mit der UML.

Es kann Wert schaffen eine Z-Modell Ihrer Domäne, und es kann sein Wert bei der Schaffung eines pi-calculus-Modell deiner Nachrichten zwischen client und server (oder petri-Netz, aber ich finde pi ist sowohl einfacher und mehr leistungsstarke).

Was ist eine Z-Modell Ihrer Domäne geben würde, ist eine Umsetzung unabhängigen Satz von Typ-constraints, ausgedrückt stärker als das Typ-system eine gemeinsame Umsetzung der Sprache.

Was ist ein formales Modell von Ihrem messaging-würde Ihnen die Möglichkeit zum ausführen von Analysen, um sicherzustellen, dass Sie nicht verlieren updates oder erhalten, Konflikte oder Blockaden.

Was ist ein UML-Modell gibt Ihnen eine Schreibweise für den Bruch eines großen Systems in Funktions-Bereiche (package-Diagrammen), der zeigt, wie die Klassen in diesen Bereichen beziehen sich auf die jeweils andere statisch (Klassendiagramme), die zeigt, wie Instanzen dieser Klassen beziehen sich dynamisch (Sequenz -, Aktivitäts-und Interaktionsdiagramme), und zeigt, wie die Pakete bereitgestellt werden (Komponenten-und deployment-Diagramme).Diese sind nützlich für die Kommunikation im team und Holen Sie sich Ideen konkretisiert ein bisschen, aber nicht formal definierte Semantik, die erlaubt eine sehr differenzierte Analyse.

Die Z Spezialisten arbeitete ich mit in die 90er Jahre, als die Idee der Angabe einer FALL-GUI in Z lächerlich.Erstellen eines UML-Modells für solch eine GUI ist an der Tagesordnung.

Ich habe nicht verwendet formalen design-by-contract, pre-und post-Bedingungen, obwohl ich manchmal fügen Sie Sie in den Kommentaren, und Häufig in Aussagen, und ich unit-test-Bedingungen, die möglicherweise gegen Sie verstoßen.

Andere Tipps

Die wahre Frage ist hier nicht, ob Sie diese verwenden oder nicht, aber was wird gewonnen und verloren.

Wird die Produktivität und das Ergebnis überwiegen die Komplexität und lernen benötigt?

Im Allgemeinen sollten Sie verwenden das, was die Mannschaft wohl fühlt.Mit neuen items, gibt es eine Lernkurve, das heißt es werden noch Fragen über den Prozess und die Fehler, die gemacht wurden.Teil Ihrer Entwicklung wird die Zeitleiste verwendet werden, um diese Probleme zu beheben, und wenn Sie nicht planen, über die Verwendung der Ihnen mit diesem team in die Zukunft, wirklich, du bist nicht gehen, um einen langfristigen Gewinn durch die Einführung von etwas neuem.Ändern Prozess dauert eine lange Zeit und eine Menge Arbeit.

Wenn Sie geschätzt haben genug Zeit, um mit diesen Problemen, die Sie möglicherweise ok.....wenn Ihre Schätzung richtig ist.Wenn man bedenkt, dass Sie nicht gearbeitet habe mit diesen Menschen (zumindest das ist, was dein post klingt), die Chancen sind Ihre timeline wird nicht so genau sein, wie es sollte, was bedeutet, dass Sie konnte nicht zugeteilt haben genug Zeit, das Projekt zu beenden, geschweige denn die Einführung eines neuen Prozesses.

Die andere Frage, die Sie Fragen, Ihr selbst ist "wie zufrieden sind Sie mit den Prozess, den Sie implementieren möchten?" Ich versuche nie, und die Einführung eines neuen Prozesses an einem Projekt es sei denn, ich weiß, dass ich ziehen kann, der Mannschaft durch, wenn ich muss.Neue Dinge zu versuchen, von Zeit zu Zeit ist es gut, aber Sie brauchen, um ein team Sie sind komfortabel mit zu wissen, wie Sie zum navigieren von einer angespannten situation.

Ich habe schon einige Ansätze von "leichten" formale Methoden für Anwendungen, die möglicherweise mission-kritische, aber nicht das Leben/Sicherheit kritisch.Einige Ideen:

Es gibt einige erfolgreiche Beispiele für die Verwendung von ACSL (ANSI-C Specification Language), die hat Reifen set von tools, von denen die meisten sind Open Source, wie, Warum-Plattform, Frama-C.Für die Java-ähnliche Technologie namens JML (Java Modelling Language).Ich denke, beide sind für kleine bis mittlere Projekte für embedded-Anwendungen und helfen Sie, fügen Sie einige garantiert in Ihren code aber nicht zur Validierung von Spezifikationen.Z ist absolut nicht benutzerfreundlich und fehlende adäquate tool-Unterstützung IMHO.

Unter den kommerziellen tools, die verwendet werden können auf Spezifikation Stufen, ich würde in Rodin-Plattform, basiert auf der B-Methode.

Spät im Spiel, aber Sie sollten erwägen, so etwas wie testbare Architektur durch Savara die verwenden wir für viele Projekte, wo gibt es eine Dominanz der Kommunikation oder Interaktion zwischen den Komponenten.Diese ist die meisten oft gesehen, in jedem SOA-backend, um ein web-frontend.

Es ist formal verankert in der pi-Kalkül, und Sie brauchen nicht zu verstehen, pi-Kalkül, es zu benutzen.

Ich Stimme völlig mit Tom und stellen die gleiche Frage,

Wird die Produktivität und das Ergebnis überwiegen die Komplexität und lernen benötigt?

Meiner Meinung nach, es sei denn, der system - /software können identifiziert werden als "sicherheitskritische" formale Methoden überflüssig sind.

Was sicherheitskritische bedeuten:

Wenn der Ausfall eines Systems führen kann zu katastrophalen Folgen, wie der Verlust des menschlichen Lebens, die Schäden an der Umwelt oder die Schäden, die das system selbst, ein solches system ist bekannt als "safety-critical".

Ich Stimme mit beiden Tom und Abufardeh - Wird die Produktivität und das Ergebnis überwiegen die Komplexität und lernen benötigt?

Außerdem ist diese methd es besser, ALLE Anforderungen, bevor development (amd, sicherzustellen, dass diese Anforderungen sind klar definiert und überprüfbar)?Bekommen alle die requirments erste scheint wie gesunder Menschenverstand, aber ein großer Prozentsatz von Programmen, die Dinge tun, die parallel denken, es ist kein problem, Holen Sie sich einige Anforderungen höher.Anforderungen kriechen, ist ein Albtraum!Der Film "The Pentagon Wars" ist ein Augenöffner für jeden, der nicht einverstanden ist.

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