Nachhaltigkeit in der Softwareentwicklung

In der heutigen Zeit ist Nachhaltigkeit ein großes Thema. In diesem Beitrag erläutern wir zunächst, was unter Nachhaltigkeit zu verstehen ist. Anschließend wird die Definition auf die Softwareentwicklung übertragen. Ziel ist es, die Bedeutung der Nachhaltigkeit bei der Softwareentwicklung darzustellen und Prinzipien zu deren Erfüllung aufzuzeigen.

Was ist Nachhaltigkeit?

Den Ursprung findet der Begriff Nachhaltigkeit in der Forstwirtschaft. Er geht er auf den Freiberger Oberberghauptmann Carl von Carlowitz (1645-1714) zurück.
In diesem Zusammenhang ist der Begriff wie folgt definiert:

„Wer nur so viele Bäume fällt, wie nachwachsen können, sorgt dafür, dass der Wald für die künftige Nutzung zur Verfügung steht und auf Dauer seinen Wert behält. Man kann auch sagen: Es ist nachhaltig, von den Zinsen zu leben, statt vom Kapital.“

Deutscher Bundestag: Was ist Nachhaltigkeit

Darunter ist zu verstehen, dass der Ressourcenbestand auf lange Sicht sich nicht verringern darf.
Genereller gefasst setzt sich heutzutage die folgende Definition durch:

„Nachhaltige Entwicklung ist eine Entwicklung, die den Bedürfnissen der heutigen Generation entspricht, ohne die Möglichkeiten künftiger Generationen zu gefährden, ihren eigenen Bedürfnisse zu befriedigen.“

Deutscher Bundestag: Was ist Nachhaltigkeit

Um den Nachhaltigkeitsbegriff jedoch genauer zu definieren, greifen wir auf das Modell der „drei Säulen der Nachhaltigkeit“ zurück.

Drei Säulen der Nachhaltigkeit

Das Drei-Säulen-Modell dient zur Veranschaulichung der Bestandteile der Nachhaltigkeit und beruht auf den Säulen Ökonomie, Ökologie und Soziales, welche als gleichmäßig stark betrachten werden müssen. Die EU nannte diese Bestandteile in dem Vertrag von Amsterdam aus dem Jahre 1997 explizit.

Ökonomische Nachhaltigkeit

Ökonomische oder auch wirtschaftliche Nachhaltigkeit bezieht sich auf die Waren, Kapital oder Dienstleistungen, die in einer Periode zur Verfügung stehen und so eingesetzt werden, dass sich deren Umfang in zukünftigen Perioden nicht beschränkt wird.

Ökologische Nachhaltigkeit

Die Säule „Ökologie“ beinhaltet die Definition aus der Forstwirtschaft. Hierbei geht es darum, das Überleben eines Ökosystems nicht zu gefährden und somit verantwortungsvoll mit diesem umzugehen.

Soziale Nachhaltigkeit

Der soziale Aspekt der Nachhaltigkeit bezieht sich auf die bewusste Organisation von sozialen und kulturellen Systemen. Dieser beinhaltet Bildung und Ethik wie zum Beispiel menschliche Würde, Arbeits- und Menschenrechte.

Was bedeutet Nachhaltigkeit in Bezug auf Softwareentwicklung?

Um den Nachhaltigkeitsbegriff und dessen Bedeutung auf die Softwareentwicklung zu übertragen, werden die einzelnen „Säulen“ einzeln betrachtet. Anschließend legen wir Prinzipen dargelegt, die zum Erstellen von nachhaltiger Software notwendig sind.

Ökonomische Nachhaltigkeit

Ökonomisch Nachhaltige Software zeichnet sich dadurch aus, dass sie nach Definition auch in der zukünftigen Generation den wirtschaftlichen Nutzen behält.
Ein großer Punkt hierbei ist der zukünftige Wartungsaufwand der jeweiligen Software. Dieser übersteigt oft den ursprünglichen Entwicklungsaufwand. Um den Wartungsaufwand und die damit verbundenen Kosten möglichst gering zu halten, wurden Standards definiert.
Dieses beginnt mit der Wahl der richtigen Programmiersprache. Wählt man eine weit verbreitete (Standard) Programmiersprache, so kann davon ausgegangen werden, dass diese auch in Zukunft weiter optimiert wird. Des Weiteren ist es für eine solche Programmiersprache einfacher, kompetente Softwareentwickler einzustellen.

Weiter sollten man bei der Entwicklung des Programmcodes einige Regeln (Design Pattern) beachten.
Ein Beispiel hierfür ist das Akronym „DRY“ (engl. „Don’t repeat yourself“), was so viel bedeutet wie: „Wiederhole dich nicht!“. Hierbei geht es darum, Programmcode, der das gleiche ausführt, in einzelne Methoden oder Funktionen auszulagern. Dieses führt neben der Verschlankung des Programmcodes dazu, dass bei dessen Änderungen nicht der gesamte Code dahingehend durchsucht werden muss, ob dort ebenfalls eine gleiche Änderung vorgenommen werden muss.

Durch Kommentierung des Programmcodes ist dessen Funktion schneller ersichtlich. Außer-dem sollten Bezeichner von Klassen und Methoden sprechend gewählt werden. Hierdurch ist der Code besser lesbar und längere Kommentare sind nicht von Nöten. Außerdem reduziert sich der Einarbeitungsaufwand für neue Programmierer.

Ein weiterer Punkt ist die Zerlegung des Programmcodes in kleinere Komponenten. Als Beispiel hierfür dient die Programmiersprache Java. Hier können Komponenten in einzelnen Paketen oder Klassen untergliedert werden. Dieses verstärkt die Übersichtlichkeit. Einzelne Funktionalitäten können somit schneller gefunden und somit gewartet werden.
Zusätzlich muss sich bei der Entwicklung der Software bereits neben der aktuellen Hardwareanforderung über zukünftige Anforderungen Gedanken gemacht werden. Besonders relevant ist dieses bei Software, deren Datenbestand permanent wächst oder intelligenter, selbstlernender Software, die sich selbst weiterentwickelt und somit komplexer wird. Nachhaltig bezüglich der Hardware ist Software dann, wenn der Hardwareanspruch weniger oder gleichschnell wächst, als die auf dem Markt verfügbare Hardware und somit die Hardwarekosten gleichbleiben oder sogar sinken. Als Beispiel hierfür dient der Anspruch an Prozessoren und deren logarithmisch steigende Rechenleistung. Hieraus resultieren sinkende Kosten bei gleichbleibenden Anforderungen.

Ökologische Nachhaltigkeit

Zusammengefasst werden kann die ökologische Nachhaltigkeit unter dem Begriff „Green IT“.
Dieser beschäftigt sich mit dem Energieverbrauch, welcher durch die zum Betreiben der Software benötigten Hardware entsteht. Je stärker die Software diese beansprucht, desto mehr steigt der Energieverbrauch und die damit verbundene CO2-Emmission.
Ebenfalls nicht zu vernachlässigen beim Betrachten des ökologischen Fußabdrucks ist der Produktionsvorgang der benötigten Hardware. Dieser benötigt meist den Einsatz von viel Energie, was ebenfalls die CO2-Emmissionen erhöht. Außerdem werden für viele Hardware „seltene Erden“ benötigt. Hierbei handelt es sich nicht um seltene Rohstoffe. Der ökologische Schaden besteht darin, dass der Abbau dieser Stoffe jedoch große Umweltschäden mit sich zieht.
Um diesen Punkt der ökologisch nachhaltigen Software einzuhalten, muss daher deren Hardwareanforderung minimiert werden.

Soziale Nachhaltigkeit

Die soziale Nachhaltigkeit hat in der Softwareentwicklung eine große Relevanz. Dieses ist da-rauf zurückzuführen, dass Software in der heutigen Gesellschaft eine zentrale Rolle annimmt und Softwareentwickler somit einen großen Einfluss auf deren Entwicklung haben.
Ein Teil der sozialen Nachhaltigkeit besteht aus ethischen Aspekten. Diese sind nicht fest vor-geschrieben, jedoch existieren mehrere Leitlinien wie unter Anderem von der Gesellschaft für Informatik (GI), British Computer Society (BCS) oder Association for Computing Machinery (ACM).
Anforderungen der ACM an sozial nachhaltige Software sind zum Beispiel:

  • Der Beitrag zum menschlichem Wohlbefinden
  • Vermeidung von Schaden an anderen
  • Ehrlichkeit und Vertrauenswürdigkeit
  • Keine Diskriminierung
  • Respektieren des geistigen Eigentums anderer
  • Wahrung der Privatsphäre und Vertraulichkeit

Ein weiterer Punkt, der bei der Softwareentwicklung berücksichtigt werden muss, sind gesetzliche Anforderungen an die Software. Diese ändern sich dauerhaft und müssen entsprechend in der jeweiligen Software berücksichtigt werden. Die Verantwortung liegt hierbei nach der Leitlinie der Gesellschaft für Informatik bei jedem Entwickler. Diese haben für eine juristische Kompetenz zu sorgen.

Fazit

Nachhaltige Softwareentwicklung zeichnet sich dadurch aus, dass man nicht nur eine aktuelle Umsetzung einer Anforderung schafft, sondern ebenfalls zukünftige Anforderungen berücksichtigt werden. Diese sind sowohl auf den wirtschaftlichen Nutzen als auch auf ökologische und soziale Aspekte bezogen.
Da die Wartbarkeit und die damit verbundenen Kosten ein großer Aspekt der ökonomischen Nachhaltigkeit sind, gilt es diese zu minimieren. Dieses ist lediglich möglich, indem man sich bereits während der Softwareentwicklung über potentielle zukünftige Anpassungen Gedanken macht. Programmierstandards helfen dabei, diese Anpassungen zu vereinfachen.
Ökologisch Nachhaltig ist Software, die Energieeffizient funktioniert und somit den bei der Stromerzeugung entstehenden Schadstoffausstoß minimiert.

Der Bereich soziale Nachhaltigkeit der Software hat ebenfalls eine große Relevanz, da bei unethischem Verhalten, wie es in dem Abgasskandal von VW der Fall war, ein großer Imageschaden und Vertrauensverlust entstehen kann.
Abschließend lässt sich sagen, dass durch die nachhaltige Entwicklung von Software ein größerer Entwicklungsaufwand besteht, jedoch zukünftige Kosten gesenkt und drohende Risiken minimiert werden können. Hierdurch lässt sich die einmal entwickelte Software auch in weiteren Generationen nutzen.

Lesen Sie hier, wie eine ereignisgesteuerte Architektur die Wartbarkeit der Software sicherstellen kann.