Immer wieder neu ist nicht grün

Ein Gastartikel von ...

Dr. Veikko Krypczyk
Dr. Veikko Krypczykhttps://wp.larinet.com/
Dr. Veikko Krypczyk ist promovierter Wirtschaftsinformatiker. Er arbeitet als Entwickler, Berater, Trainer und Fachautor für unterschiedliche Themen der IT. Ein Schwerpunkt seiner Arbeit ist die Entwicklung von Mobilen Apps.

Software kann umfassend zum Umweltschutz beitragen. Sie selbst sollte jedoch auch schonend mit den Ressourcen umgehen.

Das Thema Nachhaltigkeit gewinnt immer mehr an Bedeutung, auch im IT-Bereich. Am Beispiel der Softwareentwicklung diskutieren wir das Thema Nachhaltigkeit in der IT. Dabei soll Software nicht nur zu einer besseren Umweltbilanz beitragen, sondern auch sie selbst sollte die Ressourcen schonen. Das gilt sowohl für die Entwicklung als auch für den laufenden Betrieb.

Ursprünglich stand der Begriff Green IT für eine umwelt- und ressourcenschonende Herstellung, Nutzung und Entsorgung von IT. Man hatte zunächst nur die Hardware im Blick, wenn man eine verbesserte Umweltbilanz bei der Nutzung von Informationstechnologie im Fokus hatte. Heute gehen wir von einem deutlich weitergehenden Begriffsverständnis aus. Demnach umfasst Green IT drei Ebenen, d.h. Green in der IT, Green durch die IT und die Systemauswirkung bzw. Verhaltensveränderung durch IT, welche auch eine Wirkung auf die resultierende Umweltbilanz haben können. Wir werden diese unterschiedlichen Ebenen für eine nachhaltige Informationstechnologie in diesem Artikel untersuchen. Ein weiterer Aspekt ist die Konstanz der Technologie. Software ist während der gesamten Lebenszeit durch eine stetige Weiterentwicklung in Form von Feature-Updates und Fehlerbereinigungen gekennzeichnet. Dabei wechseln Technologien und es kann dazu kommen, dass vorhanden Applikationen sich nicht oder nur mit sehr viel Aufwand an sich ändernde Anforderungen anpassen lassen. Vorteilhaft aus Sicht der Umwelt und auch ökonomisch sinnvoll ist es, wenn grundlegende Technologien, Verfahren und Werkzeuge über den gesamten Lebenszyklus einer Applikation zur Verfügung stehen, denn Anpassungen vorhandener Anwendungssysteme verursachen i.d.R. einen geringeren Aufwand und damit Ressourcenverbrauch als eine stetige Neuentwicklung. Die Wahl der Entwicklungstechnologie spielt dabei eine wichtige Rolle.

Bereits an dieser Stelle kann man festhalten: Unter Green IT versteht man somit eine ressourcenschonende Technologienutzung. Dabei geht es um Maßnahmen im Zusammenhang mit Informationstechnologie, welchen dem Schutz der Umwelt dienen. Der technologische Fortschritt steht bei dieser Betrachtungsweise nicht im Gegensatz dazu, sondern muss im Einklang mit einer positiven Umweltbilanz gebracht werden. Das Motiv des nachhaltigen Software-Engineerings ist es, zuverlässige und langlebige Software zu erstellen, welche die Bedürfnisse der Benutzerinnen und Benutzer erfüllt und gleichermaßen versucht die ökologischen Auswirkungen zu reduzieren. Das Ziel ist es, bessere Software zu entwickeln, damit die Chancen zukünftiger Generationen nicht durch das heutige Handeln beeinträchtigt werden [1].

Systematisierung von Green IT

In diesem Abschnitt grenzen wir die unterschiedlichen Ebenen bezüglich der Umweltauswirkungen durch den Einsatz von IT voneinander ab und verdeutlichen diese Kategorisierung mit Hilfe von Beispielen (Bild 1). Man kann danach unterscheiden, ob die IT einen Beitrag dazu leistet, die Auswirkungen von Vorgängen und Geschäftsprozessen auf die Umwelt zu reduzieren oder ob die IT selbst versucht bestimmten Kriterien der Nachhaltigkeit zu genügen. Man bezeichnet den ersten Aspekt als Green BY IT. Ein typisches Beispiel ist das Durchführen eines virtuellen Teammeetings, statt eines realen Treffens der Teilnehmer. Durch das virtuelle Treffen werden beispielsweise Reisen der Teilnehmer zu einem zentralen Treffpunkt vermieden, das wiederum zu einer Einsparung von CO2-Emissionen führt.

Eine ständige Ausweitung der Nutzung von IT in nahezu allen privaten und unternehmerischen Bereichen hat selbst auch negative Auswirkungen auf die Umwelt, beispielsweise durch einen steigenden Ressourcenverbrauch. Dieser Ressourcenverbrauch wird wiederum durch das Bereitstellen und die Nutzung der Technologie verursacht. Beispiele sind der Einsatz von vielfältigen Ressourcen, wie edle Metalle zur Produktion der Hardware (Halbleiter) oder der wachsende Bedarf an Energie bedingt durch den laufenden Betrieb, zunehmend sogar in einem sogenannten Dauerbetrieb. Um diese negativen Auswirkungen des IT-Einsatzes zu begrenzen, versucht man die IT selbst nachhaltiger zu gestalten. Diese Bemühungen werden als Green IN IT bezeichnet. Ein Beispiel ist der Einsatz von Energiespartechnologie, um den Strombedarf der Hardware zu reduzieren. Software kann so konzipiert, entwickelt und betrieben werden, dass diese Maßnahmen zu einer Minimierung der Umweltbelastungen führen.

Software-Engineering mit Green-IT
Bild 1: Systematisierung von Green IT [1]
Informationstechnologie ist wiederum der Oberbegriff für Hard- und Software. Maßnahmen und Ergebnisse aus den Bereiche Green IN IT und Green BY IT lassen sich daher jeweils diesen technologischen Bereichen zuordnen.

Der Einfluss der Softwareentwicklung

Software selbst hat einen erheblichen Einfluss auf die erreichbare Nachhaltigkeit der gesamten sich im Einsatz befindlichen Informationstechnologie. Bereits bei der Planung, der Auswahl der Technologie, dem Einsatz geeigneter Werkzeuge und bei der technischen Realisierung werden in dieser Richtung entscheidende Weichen gestellt, d.h. eine „grüne Softwareentwicklung“ ist ein wichtiges Element des Bereiches Green IN IT (Bild 2). Sustainable Programming bzw. nachhaltige Softwareentwicklung zielt auf die Erstellung klimabewusster Software bei einem möglichst effizienten Einsatz der Hardware ab. Während der Entwicklung von Software gibt es in dieser Hinsicht mehrere Ansatzpunkte:

Bild 2: Software-Engineering legt den Grundstein für Green-IT [2].
Bild 2: Software-Engineering legt den Grundstein für Green-IT [2].
  • Native Applikationen: Software wird heute immer umfangreicher. Statt einer einzelnen Anwendung kommen komplexe Systeme bestehend aus einer Vielzahl von Einzelkomponenten zum Einsatz. Je nach Art und Weise des Entwicklungsprozesses entstehen dabei unterschiedliche Arten von Applikationen. Native Applikationen werden für eine Ausführung auf der vorhandenen Hardware optimiert. Sie nutzen diese ideal und erreichen meist auch eine gute Performance auf etwas älteren Systemen. Werden dagegen nicht native Applikationen eingesetzt, muss über aufwändige Zwischentechnologien zunächst eine Ausführbarkeit auf dem Zielsystem ermöglicht werden. Applikationen, deren Quellcode erst zur Laufzeit interpretiert wird oder in einer virtuellen Maschine laufen, benötigen einen größeren Rechenaufwand, arbeiten weniger performant und erfordern i.d.R. einen höheren Speicherbedarf. Um diese Nachteile auszugleichen, ist es oftmals notwendig, die Hardware, zum Beispiel den Prozessor, die Grafikkarte oder den Speicher entsprechend aufzurüsten.
  • Schlanker Quellcode: Der Quellcode sollte gut nachvollziehbar sein und damit eine lange Wartbarkeit ermöglichen. Dieses ist eine wichtige Voraussetzung dafür, dass die Applikationen auch über einen längeren Zeitraum gepflegt und angepasst werden können. Ressourcenaufwändige Neuentwicklungen können daher über lange Zeiträume vermieden werden.
  • Reduktion der Daten: Ein minimierter Datenverbrauch führt nicht nur zu einer geringeren Speicherauslastung und zur Schonung der lokalen Rechnerkapazitäten, sondern führt auch zu einer Reduktion der Netzwerklast. Web-Applikationen benötigen für eine Funktionsweise eine dauerhafte Verbindung zum Server. Bereits minimale Änderungen an der Darstellung auf der Benutzeroberfläche führen zu einem umfassenden Datenaustausch zwischen Client, zum Beispiel einem Smartphone, und dem Server. Werden dagegen plattformspezifische Applikationen eingesetzt, welche nach einem initialen Download auf dem lokalen Gerät gespeichert und ausgeführt werden, so kann die Netzwerklast reduziert werden. Die Reduktion der Netzwerklast schont die lokalen Energieressourcen auf dem Client, zum Beispiel die Energie des Akkus auf einem Smartphone und bedingt gleichzeitig eine geringere Serverbelastung durch eine Minimierung der Anfragen. Dieses wiederum ergibt insgesamt eine geringeren Ressourcenbedarf über die gesamte IT-Infrastruktur. Dabei ist zu berücksichtigen, dass aufgrund der permanenten und dauerhaften Nutzung der IT zum Beispiel der Strombedarf auch modernster Servertechnologie heute erheblich ist und in keiner Weise mehr mit Blick auf die Nachhaltigkeit und der dabei anfallenden Kosten vernachlässigt werden kann.
  • Technologieauswahl und Werkzeugeinsatz: Die Auswahl der Technologie sollte neben dem technischen Fortschritt auch auf Kriterien, wie fortdauernde Weiterentwicklung und Beständigkeit achten. IT-Technologien, d.h. Entwicklungsansätze, Frameworks aber auch Programmiersprachen unterliegen einem ständigen Wandel. Wird eine Software auf der Basis einer bestimmten Technologie entwickelt, muss eine Prognose über die Beständigkeit dieser in der Zukunft gewagt werden, d.h. ein bloßer Hype bzw. eine noch nicht produktionsreife Technologie ist frühzeitig zu identifizieren. Gleiches gilt für die eingesetzten Werkzeuge. Werden diese auch in der Zukunft weiterentwickelt und gibt es einen Support? Das ist eine wichtige Voraussetzung dafür, das bestehende Software auch künftig an sich ändernde Anforderungen angepasst werden kann.

Im kommenden Abschnitt wird gezeigt, dass zum Beispiel eine plattformübergreifende Entwicklung von Software sowohl die Anforderungen an moderne Applikationen erfüllen kann und gleichzeitig deren Eigenschaften dazu geeignet sind, die Ressourcen während der Entwicklung und dem Betrieb zu schonen.

Ein Blick in die Forschung

Green IT im Allgemeinen und die Energieeffizienz von Programmiersprachen im Speziellen ist noch ein recht junges Forschungsgebiet, daher gibt es hier auch lediglich erste Ergebnisse, welche auf empirischen Untersuchungen basieren. Eine interessante Arbeit wird in [4] präsentiert. Die Autoren der Studie verfolgten das Ziel, die energetische Bilanz von Programmiersprachen zu bewerten. Dazu haben Sie 13 typische Referenzalgorithmen der Informatik, zum Beispiel für die Berechnung der Mandelbrotmenge, mathematische Simulationen usw. in 27 verschiedenen Programmiersprachen implementiert. Diese Programmiersprachen setzen dabei auf unterschiedliche Paradigmen (funktional, imperativ, objektorientiert, scripting). Es wurde eine Bewertung in den Kategorien Energieeffizienz, Laufzeit und Speicherbedarf durchgeführt.

Ein Ergebnis der Untersuchung lautet, dass die kompilierten Sprachen am schnellsten und am energieeffizientesten ausgeführt werden. Auf den ersten Plätzen werden dabei Sprachen wie C, C++ und Pascal genannt. Während die Unterschiede zwischen diesen und ähnlichen Sprachen eher marginal sind, ist der Abstand zu interpretierten Sprachen wie PHP, Python und Pearl maßgeblich. Die zitierte Arbeit kommt zum Beispiel zu dem Ergebnis, dass die Programmiersprachen C, Pascal und Go unter Berücksichtigung einer ausgewogenen Optimierung (Pareto Optimum) von Energieverbrauch, Laufzeit und Speicherbedarf, die besten Werte aufweisen. Ergänzende Informationen zu der interessanten Forschungsarbeit, weitere Artikel zum Thema, Daten zum Setup des Experiments und zu den genauen numerischen Ergebnissen findet man unter [5].

Möglichkeiten des Green Software Development in der Praxis: Native Applikationen und langlebige Technologien

Wie kann man die heutigen Anforderungen an moderne Anwendungen umsetzen, einen möglichst minimalistischen Ressourcenverbrauch während des Betriebs gewährleisten und eine hohe Beständigkeit der Technologie sicherstellen? Bei der Wahl der Technologie sollten die o.g. Aspekte berücksichtigt werden. Mit einer plattformübergreifenden Programmierung – wie man diese zum Beispiel mit RAD Studio [3] durchführen kann – entstehen native Applikationen für jede gewünschte Zielplattform aus einer gemeinsamen Quellcodebasis. Während der Programmentwicklung wird dabei weitgehend unabhängig vom Zielsystem gearbeitet. Ein effizient arbeitender Compiler übersetzt den Quellcode aus einem einzelnen Projekt in die jeweilige Zielplattform, d.h. Windows, macOS oder Linux für den Desktop bzw. iOS und Android für Mobile Geräte (Bild 3). Bei diesem als Multi-Targeting bezeichneten Vorgehen entstehen ausschließlich native Applikationen für die jeweiligen Zielsysteme, welche die o.g. Nachteile – bedingt durch die Nutzung von Zwischenschichten, Interpreter und virtuelle Maschinen – nicht aufweisen. Ebenso sind die entstehenden Anwendungen weniger von der künftigen Weiterentwicklung bzw. Verfügbarkeit von Bibliotheken und Frameworks von Drittanbietern abhängig.

Cross-Plattform-Programmierung
Bild 4: Die Cross-Plattform-Programmierung erzeugt native und energieeffiziente Anwendungen bei einer Minimierung des Aufwandes zur Entwicklungszeit (Icons im Bild von https://pixabay.com/).

Die Applikationen arbeiten performant, effizient und nutzen die vorhandenen Hardwareressourcen bestmöglich. Die integrierte Entwicklungsumgebung RAD Studio und die zugehörigen Frameworks und Klassenbibliotheken werden seit vielen Jahren beständig weiterentwickelt. Das hat den Vorteil, dass selbst Applikationen, welche vor Jahren initial erstellt wurden, noch heute gepflegt und angepasst werden können. Ebenso ist eine Migration zu einem neuen Softwaresystem in diesen Fall deutlich einfacher und benötigt weniger Aufwand und Ressourcen, da der initiale Quellcode weiterverwendet werden kann (Investitionsschutz). Technologien und Programmiersprache (Delphi) sind gleichermaßen modern und ausgereift. Alle modernen Sprachmerkmale der objektorientierten Entwicklung stehen zur Verfügung. Gleichermaßen kann älterer Quellcode weiterhin problemlos ausgeführt und bei Bedarf angepasst werden (Softwaremigration).

Fazit

Software soll nicht nur die ökologische Nachhaltigkeit unterstützen bzw. ermöglichen, sondern sie sollte heute selbst weitgehend diesen Anforderungen genügen. Der Grundstein dafür wird während der Entwicklung und der Technologieentscheidung gelegt. Besonders wird aus dieser Perspektive auf die Wartbarkeit, die Möglichkeiten einer Erweiterung und Wiederverwendbarkeit der entwickelten Software geachtet. So gelingt es die ökologischen Kosten nicht nur während des Entwicklungsprozesses, sondern auch während der Nutzung niedrig zu halten. Ebenso entscheidend ist die Nutzungseffizienz der Hardware während des Betriebs. Native Applikationen, welche die vorhandene Hardware ausnutzen sind hier von Vorteil und erlauben auch eine längere Nutzungsdauer der Hardware unter Berücksichtigung des technischen Fortschritts. Das ist nicht nur ökologisch, sondern auch ökonomisch äußerst erstrebenswert.

Quellen

[1] https://www.intechopen.com/chapters/69865

[2] Calero C., Piattini M.: Green in Software Engineering, Springer, 2015

[3] https://www.embarcadero.com/de/products/rad-studio

[4] R. Pereira, M. Couto, F. Ribeiro, R. Rua, J. Cunha, J. P. Fernandes, J. Saraiva: Energy eciency across programming languages: how do energy, time, and memory relate?, in: Proceedings of the 10th ACM SIGPLAN International Conference on Software Language Engineering, SLE, ACM, 2017, pp. 256-267.

[5] https://sites.google.com/view/energy-efficiency-languages/home

Weitere Artikel von
Expertinnen & Experten

Neu auf dm