Schon oft und ausführlich wurde über mögliche geplante Obsoleszenz bei technischen Geräten diskutiert. Diese soll hier jedoch nicht Thema sein, denn darauf haben wir als Softwareentwickler keinen Einfluss (sofern wir keine Firmware entwickeln). Auf die Obsoleszenz durch Software haben wir als Entwickler dagegen einen nicht zu unterschätzenden Einfluss.

Was ist Obsoleszenz durch Software?

Software erzeugt Obsoleszenz indem sie nach Aktualisierungen nicht mehr auf Hardware lauffähig ist, auf der sie vor der Aktualisierung noch lief. Dies kann unterschiedliche Gründe haben. Auf Smartphones zum Beispiel dadurch, dass eine App an die neueste Version des Betriebssystems angepasst wird. Kamen im Betriebssystem Neuerungen hinzu, die durch alte Versionen des Betriebssystems nicht mehr unterstützt werden können, verliert auch die App durch die Aktualisierung die Kompatibilität zur alten Hardware. Um die App weiterhin nutzen zu können, ist somit eine Aktualisierung des Betriebssystems nötig. Oder, wenn die Hardware zu dieser nicht mehr kompatibel ist, nur noch der Wechsel zu aktueller Hardware. Um beim Beispiel zu bleiben, ist in dem Fall ein neues Smartphone nötig, um eine zuvor lauffähige App weiterhin nutzen zu können.

Dass man neue Dinge braucht, um neue Dinge zu tun, macht gegebenenfalls Sinn. Aber dass man neue Geräte braucht, um alte Dinge zu tun, ist absurd.

Mark Herterich auf der Bits & Bäume 2018

Warum entsteht diese Art der Obsoleszenz?

Die These, die nicht nur von Bits & Bäume vertreten wird: Softwareentwickler achten nur in dem Sinne auf eine lange Lauffähigkeit, dass die entwickelte Software bei Inbetriebnahme auf aktueller Hardware läuft. Die Lauffähigkeit auf alter Hardware ist meist nur nach der Inbetriebnahme der Software Thema. Jedoch nur dann, wenn die Anforderung (z. B. vom Kunden) besteht, dass sie auf älterer Hardware lauffähig bleibt. Besteht diese Anforderung nicht und die zugrundeliegende Technologie der Software wird aktualisiert, ist die Lauffähigkeit auf alter Hardware schnell nicht mehr gegeben.

Wir Programmierer tendieren dazu stets davon auszugehen, dass die Hardwareressourcen bei Bedarf stetig erweitert werden. Wir entwerfen somit Anwendungen, die auf der aktuellsten zur Verfügung stehenden Hardware und Technologie basieren. Sicherlich gibt es sicherheitsrelevante Aspekte um dies zu tun. Doch zum einen ist nicht für jede Software die höchste Sicherheit nötig und zum anderen führt dies dazu, dass unsere Software Obsoleszenz bei Hardware erzeugt. Obwohl diese noch sehr gut funktioniert und noch lange funktionieren könnte, wird sie dennoch ausgetauscht.

Was können wir Entwickler/Architekten dagegen tun?

Wir können durch die Art und Weise der Softwareentwicklung zum Umwelt- und Klimaschutz beitragen! Wenn wir in der Entwicklung und im Entwurf von Anwendungen und deren Architektur den Nachhaltigkeitsgedanken mitdenken, helfen wir beim Umwelt- und Klimaschutz aktiv mit!

Das Berücksichtigen des Umweltschutzes schon zu Beginn der Softwareentwicklung ist unausweichlich um umwelt- und ressourcenschonende Software zu entwickeln. Im Idealfall sollte es das Ziel sein, die Softwareentwicklung und den Bedarf zur Hardwareerneuerung zu entkoppeln.
Erreichen lässt sich dies zum Beispiel durch eine Modularität der Software. Die Basis-Software besteht aus der Kernfunktionalität. Weitere Funktionalitäten und Features können durch installierbare Plugins hinzugefügt werden. Für dieses Vorgehen spricht nicht nur der Umweltschutz, sondern auch die Tatsache, dass 80% der Nutzer nur 20% der Funktionalitäten nutzen. Warum sollte also direkt die gesamte Software installiert werden? Bei einer modularen Architektur installiert sich jeder nur die Funktionen, die er auch wirklich benötigt.

Um eine lange Lauffähigkeit der Software auf alter Hardware zu garantieren, kann die Kernfunktionalität abwärtskompatibel zu alten Versionen der Betriebssystems gehalten werden, wie der oben zitierte Mark Herterich in dem dort verlinkten Vortrag vorschlägt.

Weitere Ansatzpunkte sind beispielsweise:

  • Nutzung von einfachen Algorithmen, die wenig Ressourcen benötigen (z. B. Laufzeit von O(log(n)) statt O(n²))
  • Reduzierung des Datentransfers (Webservices, Datenbanken, …) auf das Nötigste
  • Nutzung von Caching (mit (intelligenter) regelmäßiger Bereinigung von länger nicht genutzten Daten)

Hier treffen sich teilweise die Themen Umweltschutz und Performance einer Anwendung. Eine Synergie, die nicht ungenutzt bleiben sollte!
Einen weiteren Einblick, welche Kriterien wichtig für eine umweltbewusste Software sind, gebe ich in einem späteren Artikel zum Blauen Engel für Softwareprodukte.
Lasst uns beginnen diese Aspekte in der Softwareentwicklung zu berücksichtigen! Lasst uns umweltschonende und ressourcensparende Software entwickeln! Es lohnt sich nicht nur für uns!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.