Das Lesen von "Code Complete 2" in einem Absatz über die Qualität der Anforderungen ergab Folgendes:
Sind akzeptable Kompromisse zwischen konkurrierenden Attributen festgelegt - zum Beispiel zwischen Robustheit und Korrektheit?
(Dies ist ein Punkt einer großen Checkbox-Liste, um die Qualität der Anforderungen zu überprüfen.)
So fand ich viele Definitionen von Robustheit und Korrektheit im Internet, in wissenschaftlichen Büchern usw.
z.B :
Im Buch "Objektorientierte Softwarekonstruktion, 2. Auflage, Bertrand Meyer, Prentice-Hall, 1997":
- Korrektheit: Der Grad, in dem ein System in Spezifikation, Design und Implementierung frei von [Fehlern] ist.
- Robustheit: Der Grad, in dem ein System bei ungültigen Eingaben oder stressigen Umgebungsbedingungen weiter funktioniert.
Trotzdem ist nicht klar, warum und in welchen Situationen diese beiden in Konflikt geraten könnten.
Meine Frage ist: Warum stehen diese beiden Attribute im Wettbewerb ?
development-process
requirements
quality-attributes
Überwinder
quelle
quelle
Antworten:
Es gibt viele Situationen, in denen diese beiden in Konflikt geraten könnten. Zum Beispiel kann Robustheit Belastbarkeit unter schwerer Last beinhalten. Wenn eine ungefähre (dh falsche) Antwort auf eine Anforderung viel schneller berechnet werden kann als eine genaue (richtige) Antwort, ist es wichtig zu wissen, ob das System ein ungefähres Ergebnis liefern sollte oder die Zustellung insgesamt fehlschlägt.
quelle
Diese beiden sind nur Beispiele, wie Sie sagten. Tatsächlich können alle nicht funktionalen Anforderungen dieser Art möglicherweise miteinander in Konflikt stehen. In dem Buch "Building Evolutionary Architectures" gibt es eine Tabelle von ungefähr hundert dieser "Fähigkeiten" (wie sie auch oft genannt werden).
Für Softwarearchitekten ist es eine Art Übung, den möglichen Konflikt zwischen diesen beiden zu betrachten. Sie können im Grunde entscheiden, welche davon für Ihre Projekte wichtig sind, und dann diese Konflikte verfolgen.
Um zu Ihrem genauen Beispiel zurückzukehren und einen Blick auf die Definition des Begriffs
robustness
in Wikipedia zu werfen :Wie Sie der Definition entnehmen können, beinhaltet Robustheit Fehler . Andererseits möchten Sie Korrektheit haben, was im Grunde bedeutet, dass keine Fehler vorliegen.
Betrachten wir zur Verdeutlichung des Konflikts ein einfaches Eingabefeld. Aus Gründen der Korrektheit ist es am einfachsten, fehlerhafte Eingaben des Benutzers zurückzuweisen. Robustheit setzt jedoch voraus, dass Sie in der Lage sind, mit dieser Eingabe zu arbeiten, was möglicherweise nicht ganz korrekt ist.
Um es auf Ihr Buch zu übertragen: Was ist der akzeptable Kompromiss jetzt? Angenommen, Sie schreiben eine wissenschaftliche Anwendung, in der der Benutzer einen Spannungswert einschließlich der Größe eingeben kann. Richtige Eingaben wären also etwa "10 kV" oder "200 mV". Akzeptable Kompromisse können das Zulassen von Eingaben wie "10 kV", "10 kVolt" oder sogar nur "10" umfassen und diese der Richtigkeit halber auf einen gültigen Spannungswert abbilden. Beachten Sie, dass dies immer noch ein Kompromiss ist und nicht das "Beste aus beiden Welten". Betrachten Sie Groß- und Kleinbuchstaben: "10 kV" und "10 KV" sind möglicherweise in Ordnung, "10 mV" und "10 MV" jedoch möglicherweise nicht. Richtigkeit wird fraglich, da Sie nicht sicher sind, ob es jetzt Milli oder Mega ist,
quelle
Ein praktisches Beispiel ist XHTML vs. HTML .
Daher strebt XHTML nach Korrektheit, während HTML nach Robustheit strebt. Derzeit scheint HTML populärer zu sein, aber beide Seiten haben gute Argumente.
quelle