Ich war ein Entwickler auf öffentliche Telefon-Switching-System-Software, die ziemlich strenge Einschränkungen in Bezug auf Zuverlässigkeit, Verfügbarkeit, Überlebensfähigkeit und Leistung hat, die sich annähern, was Raumfahrzeugsysteme benötigen. Ich habe nicht an Raumfahrzeugen gearbeitet (obwohl ich während meiner Zeit bei IBM mit vielen ehemaligen Shuttle-Programmierern gearbeitet habe), und ich kenne VXworks, das Betriebssystem vieler Raumfahrzeuge (einschließlich der Mars-Rover, die einen phänomenalen Betriebsrekord haben) nicht).
Eine der Hauptanforderungen für die Patchfähigkeit ist, dass ein System von Grund auf für das Patchen entwickelt werden sollte. Dies schließt die Modulstruktur ein, so dass neue Variablen hinzugefügt und Methoden ersetzt werden können, ohne laufende Operationen zu unterbrechen. Dies bedeutet oft, dass sowohl der alte als auch der neue Code für eine geänderte Methode resident sind, und der Patch-Vorgang aktualisiert einfach den Verteilungsvektor für die Klasse oder das Modul.
Es ist nur verpflichtend, dass die Patch- (und Unpatching-) Software in das Betriebssystem integriert ist.
Als ich an Telefonsystemen arbeitete, verwendeten wir im Allgemeinen Patch- und Modulaustauschfunktionen im System, um unsere neuen Funktionen zu laden und zu testen, sowie Fehlerbehebungen, lange bevor diese Änderungen für Builds eingereicht wurden. Jeder Entwickler muss mit dem Patchen und Ersetzen von Modulen im Rahmen seiner Daly-Arbeit vertraut sein. Es baut eine Vertrauensstufe in diesen Komponenten auf und stellt sicher, dass der Patch- und Ersetzungscode routinemäßig ausgeführt wird.
Tests sind bei diesen Systemen weitaus strenger als bei jedem anderen Projekt. Vollständige und teilweise Modelle des Bereitstellungssystems werden leicht verfügbar sein. Es wird wahrscheinlich auch Umgebungen mit virtuellen Maschinen geben, in denen die gesamte Ladung ausgeführt und getestet werden kann.Testpläne auf allen Ebenen oberhalb des Komponententests werden geschrieben und formal überprüft, genauso wie formale Code-Inspektionen (und diese werden auch Routine sein).
Fehlertolerantes Systemdesign, einschließlich Software-Design, ist unerlässlich. Ich weiß nichts über Raumfahrzeugsysteme, aber etwas wie Hochverfügbarkeitscluster ist wahrscheinlich Standard, mit der zusätzlichen Fähigkeit, synchron und unsynchron zu laufen, und mit der Fähigkeit, Informationen während eines Failovers zwischen den Seiten zu übertragen. Ein weiterer Vorteil dieser Systemstruktur besteht darin, dass Sie das System teilen können (falls erforderlich), die inaktive Seite mit einer neuen Softwareladung neu laden und es im Produktionssystem testen, ohne mit dem Systemnetzwerk oder -bus verbunden zu sein. Wenn Sie zufrieden sind, dass die neue Software ordnungsgemäß ausgeführt wird, können Sie einfach einen Failover durchführen.
Wie beim Patchen sollte jeder Entwickler wissen, wie Failovers durchgeführt werden, und sollte dies sowohl während der Entwicklung als auch beim Testen tun. Darüber hinaus sollten Entwickler jedes Softwareaktualisierungsproblem kennen, das ein Failover erzwingen kann. Sie sollten wissen, wie Patches und Modulaustausch geschrieben werden, um wann immer möglich Failovers zu vermeiden.
Im Allgemeinen werden diese Systeme von Grund auf (Hardware, Betriebssystem, Compiler und möglicherweise Programmiersprache) für diese Umgebungen entwickelt. Ich würde Windows, Mac OSX, Linux oder irgendeine Unix-Variante nicht für ausreichend robust halten. Ein Teil davon sind Echtzeitanforderungen, aber das ganze Problem der Zuverlässigkeit und Überlebensfähigkeit ist ebenso wichtig.
UPDATE: Als ein weiterer Punkt von Interesse, hier ist ein blog by one of the Mars rover drivers. Dies gibt Ihnen eine Perspektive auf das tägliche Leben der Aufrechterhaltung eines operierenden Raumfahrzeugs. Ordentliches Zeug!
Nette Frage! "Über den Tellerrand hinaus denken" auf die nächste Ebene: Raum die letzte Grenze ;-). –
Keine direkte Antwort auf die Frage, aber interessant für die Schritt für Schritt Beschreibung der Fehlersuche: http://spaceflightnow.com/mars/mera/040126spirit.html – starblue
Vielen Dank für Ihre Anregungen. Was mache ich aber? Alle Ihre Antworten sind exzellent und hilfreich. Ich weiß nicht, wen ich als richtige Antwort markieren soll? Ganz zu schweigen davon, dass es nicht wirklich eine "richtige" Antwort auf diese Frage gibt und alle angeführten Punkte gültig sind. –