Frage

Toyota Fertigungslinien wissen sie immer, welchen Weg ein Teil gereist. Nur so können sie sicher sein können, können sie es beheben etwas schief geht. Ist dies anwendbar in Software auch?

Alle Fehlermeldungen sollten mir genau sagen, welchen Weg sie gereist. Einige tun, die Fehlermeldungen mit Stack-Trace. Ist dies eine korrekte Interpretation? Könnte es einige, wo sonst verwendet werden?

Ok, hier ist der Podcast. Ich denke, es ist interessant

http://itc.conversationsnetwork.org/shows/detail3798.html

War es hilfreich?

Lösung

Eine gute Idee, wo möglich. Leider ist es in der Regel unerschwinglich schwierig den Überblick über die gesamten Geschichte des Zustandes der Maschine zu halten. Sie können einfach nicht jede Datenstruktur markieren, mit dem Sie es bekamen aus, und den gesamten Staat von , die Objekt. Sie könnten nur die externen Ereignisse speichern können und auf diese Weise reproduzieren, wo alles herkommt.

Einige Beispiele:

Ich habe die Arbeit an einem Projekt, wo es war möglich und es half immens. Als wir nahe an Versand bekommen, und aus Fehlern laufen zu beheben, würden wir unser Spiel in „Null-Spieler-Modus“ haben, wo der Computer selbst immer wieder die ganze Nacht lang mit allen Variationen von Charakteren und Schauplätzen spielen würde. Wenn es bestätigt wird, würde es den zufälligen Schlüssel angezeigt werden, die das Spiel gestartet. Als wir am Morgen zur Arbeit kamen, würden wir den Schlüssel nach unten aus unserem Bildschirm schreiben (dort in der Regel war ein) und starten Sie es erneut, dass die Schlüssel. Dann würden wir jetzt sehen, gerade bis der assert kam, und es aufzuspüren. Das Wichtigste ist, dass wir alle die ursprünglichen Eingänge neu erstellen können, die zu dem Fehler geführt hat, und es so oft erneut ausführen, wie wir wollten, auch nach Neukompilierungen (in Grenzen ... die Anzahl der Abrufe aus dem Zufallszahlengenerator kann nicht geändert werden , obwohl wir ein separates RNG für nicht-Spiel Sachen wie Visual fX hatte). Das funktionierte nur, weil jedes Spiel nach einem Warmstart gestartet und dauerte nur eine sehr geringe Menge von Daten als Eingabe.

Ich habe gehört, dass Bungie ein ähnliches Verfahren verwendet, um zu versuchen, schlechte Geometrie in ihren Halo Ebenen zu entdecken. Sie würden die Entwickler-Kits setzen über Nacht in einem speziellen Modus ausgeführt wird, wo der unzerstörbar Protagonist zufällig bewegen und springen würde. Am Morgen würden sie schauen und sehen, ob er in der Geometrie an einer Stelle stecken geblieben, wo er nicht heraus bekommen kann. Es kann auch Granaten beteiligt.

Auf einem anderen Projekt, das wir tatsächlich protokolliert alle Benutzer-Interaktion mit einem Zeitstempel und so konnten wir es wiederholen. Das funktioniert großartig, wenn Sie können, aber die meisten Menschen haben Wechselwirkungen mit einem sich verändernden DB gesamten Staat, dessen vielleicht nicht so leicht gespeichert werden.

Andere Tipps

Es ist weniger vital mit Software. Wenn etwas in Software schief geht, können Sie in der Regel der Fehler reproduzieren und in Gefangenschaft analysieren. Auch wenn es 1 Mal nur in 1000 passiert, können Sie oft einschalten alle Logging und führen Sie es 1000-mal (ein einfacher Test einweichen).

Das ist viel teurer und zeitraubend auf einer Fertigungslinie, bis zu dem Punkt unmöglich zu sein.

, so viele Informationen wie möglich verfügbar das erste Mal, es schief geht zu haben, ist keine schlechte Sache, aber es ist nicht so wichtig für mich, wie es Toyota ist.

Dies ist ein guter Ansatz. Aber beachten Sie, dass Sie sollten nicht die Protokollierung über tun. Sonst könnte man nicht die interessanten Informationen in all dem Lärm finden, und es reduziert die Gesamtleistung (zum Beispiel anonyme Objekterstellung, abhängig von der Sprache).

Producing Fehlermeldungen mit einem vollen Stack-Trace ist in der Regel schlechte Sicherheitspraxis.
Auf der anderen Seite, und mehr im Einklang mit Toyotas Absicht, soll jedes entwickelte Modul wieder auf den ursprünglichen Programmierer (n) zurückgeführt werden - und sie sollten für schlampige Arbeit, Fehlerbehebung, Sicherheitslücken, etc. Nicht zu disziplinarischen Zwecken zur Rechenschaft gezogen werden , aber beide Wartung und Ausbildung, wenn nötig. Und vielleicht für Boni, im Gegenteil Situation ...; -)

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