Würde Ihr Code auch in 37 Jahren immer noch funktionieren?

Wie viele der heutzutage produzierten elektronischen Bauteile würden auch nach 37 Jahren noch funktionieren?

Im Jahre 2017 berichtete die NASA über das erfolgreiche Reaktivieren der Schubdüsen der Raumsonde Voyager 1, die zum damaligen Zeitpunkt 37 Jahre lang nicht im Einsatz gewesen waren. Die Schubdüsen der Raumsonde, die sich seinerzeit rund 21 Milliarden Kilometer von der Erde entfernt befand und sich mit einer Geschwindigkeit von über 61.000 Stundenkilometern fortbewegt, wurden nach 37 Jahren Stillstand zum ersten Mal wieder in Betrieb genommen und haben sich tatsächlich noch als funktionsfähig erwiesen.

Beispiel: Voyager 1

Blick zurück

Bild 1 – Missionslogo des Voyager-Programms [1]

Die schnellste und am weitesten von der Erde entfernte NASA-Sonde Voyager 1 bewegt sich als das einzige von Menschen erzeugte Objekt im interstellaren Raum – dem Bereich zwischen den Sternen.

Die Raumsonde, die seinerzeit bereits seit 40 Jahren unterwegs war, verfügt über kleine Schubdüsen, die nur wenige Millisekunden dauernde Schübe ausstoßen, um die Lage der Sonde geringfügig so zu korrigieren, dass ihre Antenne wieder in Richtung Erde ausgerichtet wird. Die Schubdüsen zur Lagekorrektur der Sonde waren regelmäßig im Einsatz, bis den NASA-Ingenieuren auffiel, dass sie nach fast vier Jahrzehnten immer schlechter funktionierten. Da sich die Hardware in einem unzuverlässigen Zustand befand, mussten die Wissenschaftler nach einer Lösung für das Problem suchen. Sie beschlossen dabei, dass die vielversprechendste Lösung darin besteht, die alten Schubdüsen zu reaktivieren, die seit der Reise der Voyager 1 vorbei an unseren Nachbarplaneten nicht mehr im Einsatz gewesen waren.

Retro-Engineering

Reaktivieren alter Systeme

Um dieses allem Anschein nach wundersame Kunststück vollbringen zu können, musste das NASA-Team zunächst ein riesiges Archiv mit jahrzehntealten Voyager-Daten nach Informationen durchforsten, die erforderlich waren, um das Starten der Düsen vorab zu testen. Nachdem die Wissenschaftler den in „einer längst veralteten Programmiersprache“ geschriebenen Code gründlich studiert hatten, beschlossen sie, dass ihr Vorhaben einen Versuch wert war, und holten die Schubdüsen aus dem Tiefschlaf.

Am 28. November 2017 zündeten die Ingenieure erstmalig wieder die vier Ersatzdüsen und prüften mit kurzen 10 ms dauernden Impulsen deren Fähigkeit, die Raumsonde wie gewünscht auszurichten. Mehr als 19 Stunden wartete das Team anschließend gespannt auf die Testergebnisse aus dem All. Und das Warten hatte sich gelohnt, denn am Mittwoch dem 29. November 2017 empfing das NASA-Team endlich die erfreuliche Nachricht: Die Schubdüsen haben tatsächlich funktioniert, und zwar genauso gut wie die zuvor zur Lagekontrolle verwendeten Düsen.

„Dank dieser Schubdüsen, die nach 37 Jahren ohne Nutzung immer noch funktionieren, werden wir die Lebensdauer von Voyager 1 um zwei bis drei Jahre verlängern können“, sagte die Projektleiterin Suzanne Dodd vom Jet Propulsion Laboratory (JPL) im kalifornischen Pasadena. [2]

Da die Ersatzschubdüsen der Voyager 1 so gut funktioniert hatten, plant die NASA, dieses Manöver zukünftig auch für die Voyager 2 anzuwenden, sobald deren Kurskorrekturdüsen ebenfalls erste Schwächen zeigen.

Software-
Zuverlässigkeit

Können wir das gleiche Maß an Zuverlässigkeit auch für unsere Software erreichen?

Mit Blick auf die moderne Softwareentwicklung und die Systeme, die wir heutzutage realisieren können, mag es uns vielleicht unmöglich erscheinen, eine derart zuverlässige Software zu entwickeln. Da Softwareanwendungen zu einem immer bedeutenderen Gut für Unternehmen werden, benötigen wir mehr denn je eine klare Vision für die damit verbundenen Entscheidungen. In diesem Bereich steht die heutige Softwareindustrie vor zwei großen Herausforderungen:

  • Mehr Kompetenz im Projektmanagement erlangen
  • Daten aus einer Vielzahl herkömmlicher Mess- und Evaluierungstools in relevante und umsetzbare Kennzahlen umwandeln

Heute sind viele verschiedene und leistungsfähige Software- und System-Engineering-Tools weit verbreitet, die jedoch nicht wirklich in der Lage sind, Ergebnisse untereinander auszutauschen und zu aggregieren. Den Projektbeteiligten fehlt in der Regel der erforderliche Gesamtüberblick, der für das Treffen kritischer, für den Projekterfolg wesentlicher Entscheidungen erforderlich ist:

Bild 2 – Magisches Dreieck
  • Pünktliche Lieferung
  • Qualität der Arbeitsergebnisse
  • Kostenkontrolle, Kostenoptimierung und Ressourcenmanagement

Diese Softwarewelt scheint weit entfernt von der Voyager-Sonde, in der sowohl während der Entwicklungsphase als auch im Rahmen von inkrementellen Updates während der gesamten Lebensdauer der Raumsonde eine beträchtliche Menge an manuellen Quellcode-Analysen durchgeführt werden musste. Die jüngste Weiterentwicklung von Softwareanalyse- und Dashboard-Tools ermöglicht es Softwareentwicklern jedoch mittlerweile, dem Quellcode ein ähnliches Maß an Zuverlässigkeit zu verleihen.

Wenn wir uns beispielsweise Tools wie VectorCAST/Analytics oder Squore anschauen, so bieten diese eine übersichtliche webbasierte Dashboard-Ansicht, die Einblicke in die Qualität des Softwarecodes sowie in Metriken zum Fortschritt von Tests ermöglicht. Zudem haben Benutzer die Möglichkeit, Trends in einer einzelnen Codebasis zu erkennen oder Metriken von verschiedenen Codebasen untereinander zu vergleichen. Daraus ergeben sich die folgenden Vorteile für den Benutzer:

  • Echtzeitzugriff auf Qualitäts-Metriken sowie auf Metriken zum Fortschritt von Tests
  • Benutzerdefinierte Konnektoren für Daten von Drittanbietern
  • Kundenspezifische Dashboards auf der Grundlage der jeweiligen Unternehmensziele

Business Intelligence

Daten richtig nutzen

Bild 3 - Application Intelligence Workflow

Während die Software der Voyager-Systeme übersichtlich genug war, um vom Menschen händisch vollständig erfasst zu werden, lautet die am schwierigsten zu beantwortende Frage bei der Qualitätsverbesserung von modernen Systemen häufig: „Wo fangen wir an?“.

Ein Analysetool hilft bei der Beantwortung dieser Frage, indem es die Sammlung und Veröffentlichung der wichtigsten Qualitäts-Metriken wie „Wo stehen wir heute?“ vereinfacht. Mithilfe eines Analysetools können wir einen Business-Intelligence-Workflow in der Softwareentwicklung nutzen. Dieser Prozess ist ebenfalls bekannt als der Application-Intelligence-Workflow.

Refaktorierung

Technische Schulden wirkungsvoll vermeiden

Dieser Workflow könnte auch für Altsysteme angewendet werden, wobei der Schwerpunkt auf der Minimierung der technischen Schulden liegen würde. Indikatoren für die technische Verschuldung sind besonders nützlich, wenn es darum geht, ein Verständnis für die Qualität einer Software zu entwickeln.

Der ursprünglich in den neunziger Jahren vom US-amerikanischen Programmierer Ward Cunningham erfundene Begriff „Technische Schulden“ bzw. „Technische Schuld“ (englisch: „technical debt“) bezieht sich auf das bewusste oder unbewusste Aufschieben von Aufgaben wie Bugfixing, Refactoring, Architektur- und Feature-Optimierung usw. durch die Entwickler auf einen späteren Zeitpunkt bzw. sogar bis hin zum Produkt-Release. Das sorgt im ersten Moment zwar dafür, dass dem Team mehr Luft zum Durchatmen verschafft wird, jedoch handelt es sich dabei um eine Art „Verschuldung“, die irgendwann ausgeglichen werden muss – und je später, umso höher die „anfallenden Zinsen“ bzw. die Auswirkungen, die mit der Verschuldung einhergehen.

 

Bild 4 – Management der technischen Schulden

In anderen Worten, wenn für ein Feature heute 100 Einheiten entwickelt werden müssen, werden es nach einer derartigen Aufschiebung morgen über 100 Einheiten sein, in der Woche darauf noch mehr, und so weiter. Somit kann sich eine hohe technische Verschuldung direkt auf die Innovations- und Wettbewerbsfähigkeit eines Unternehmens auswirken.

Um einen solchen Verlust an Produktivität und Reaktionsfähigkeit zu vermeiden, kann ein Analysetool so konfiguriert werden, dass es Indikatoren für die technische Verschuldung bereitstellt. Zudem kann dazu verwendet werden, Aktionspläne für die Refactoring-Prioritäten zu entwickeln, damit die Verschuldung schnell und kostengünstig verringert werden kann.

Fazit

Das Voyager-Raumfahrtprogramm ist für die NASA und somit auch für die ganze Welt eine der erfolgreichsten Raumfahrtstorys. Die Sonden sind seit über 40 Jahren im Weltraum unterwegs und werden voraussichtlich noch für ein weiteres Jahrzehnt funktionieren und mit Funktionserweiterungen ausgestattet werden können. Die Voyager-Systeme haben und werden weiterhin viele Software-Updates erhalten, um mit neuen Funktionalitäten ausgestattet und neuen Umgebungen gerecht zu werden, denen die Raumsonden ausgesetzt sind.

Obwohl die heute von uns als Einzelpersonen verwendete Software vielleicht nicht auf einer so glorreichen Geschichte beruht, können die Grundsätze der Voyager-Programmierung auch auf unsere wesentlich größeren Projekte angewendet werden. Und durch den Einsatz von Analysetools kann dabei der Automatisierungsgrad erhöht und die Kosten reduziert werden.

--------------------

Quelle:

[1] Wikipedia (2019): Mission logo for Voyager Program, [online] https://de.wikipedia.org/wiki/Datei:Voyager_-_mission_logo.png

[2] Jet Propulsion Laboratory, Pasadena, California: Voyager 1 Fires Up Thrusters After 37 Years. December 01, 2017. https://www.jpl.nasa.gov/news/news.php?feature=7014