Baustellenschild

Diese Seiten befinden sich im Aufbau.

Sie können unvollständige, veraltete und/oder sich widersprechende Informationen enthalten.

Nachhaltige Software

Aus Erlebnisraum Nachhaltige Entwicklung
Zur Navigation springen Zur Suche springen
Dies ist "work in progress". Prima wäre es, wenn wir zu einer Begriffs-
definition gelangen könnten, die von allen Projektteilnehmern getragen wird!

Zielsetzung dieses Wiki-Beitrags

Aspekte der Nachhaltigkeit werden heute intensiv mit Blick auf die Hardware-Komponenten informationstechnischer Systeme diskutiert (Stichwort "Green IT"). Für den Bereich der Software-Entwicklung werden in verschiedenen aktuellen Forschungsprojekten zwar verstärkt und mit Erfolg entsprechende Überlegungen angestellt, jedoch ist der diesbezügliche Diskussionsprozess sicherlich noch nicht als abgeschlossen anzusehen.

Zunächst ist festzustellen: Die Entwicklung und Nutzung informationstechnischer Systeme ist grundsätzlich mit einem Verbrauch von Ressourcen (Energie, Rohstoffe etc.) verbunden. Systemoptimierungen unter dem Aspekt der Energieeffizienz sind zwar wünschenswert, lösen diese Problematik jedoch sicherlich nicht: Insofern Ressourcen irreversibel verloren gehen, ist ein energieeffizientes IT-System zwar weniger "schlimm" als seine ineffiziente Variante, lässt sich aber sicherlich nicht allein auf Grund eines minimierten Energiebedarfs als "nachhaltig" bezeichnen. Insofern stellt sich die Frage, ob und ggf. wie sich informationstechnische Systeme schaffen lassen, deren (umfassend betrachtete) Auswirkung auf die Umwelt positiv ist.

Neben der Ressourcen-Nutzung verbinden wir im ENE-Projekt auch die gerechte Verteilung der Ressourcen mit dem Ziel nachhaltiger Entwicklung. Eine zentrale Herausforderung stellt hierbei die Verbesserung der Lebensbedingungen für alle dar.

Wodurch zeichnet sich "nachhaltige Software" aus?

In der Literatur recht breit akzeptiert ist der Vorschlag von Dick, Naumann & Kuhn (2011), nachhaltige Software wie folgt zu definieren: "Sustainable software is software whose direct and indirect negative impacts on economy, society, human beings, and environment resulting from development, deployment, and usage of the software is minimal and/or has a positive effect on sustainable development."

Wir haben die Definition (vorläufig)leicht abgeändert:

  • (Integrativ-) Nachhaltige Software zeichnet sich dadurch aus, dass die direkten und indirekten negativen Auswirkungen auf Gesellschaft, Mensch und Umwelt, die sich aus der Entwicklung, dem Betrieb und der Verwendung der Software ergeben, minimal sind. Zudem sollen sich mit Blick auf eine (integrativ-) nachhaltige Entwicklung durch die Software langfristig positive Auswirkungen ergeben.

Unter "langfristig positiven Wirkungen" verstehen wir dabei im ENE-Projekt (mit der Zielsetzung einer Integrativen Nachhaltigkeit) eine Entwicklung, die den Einklang von Mensch, Gesellschaft und Natur im Sinne eines "bien vivir" unter Einhaltung natürlicher Stoffkreisläufe und frei von irreversiblen Änderungen anstrebt; siehe auch Schweizer-Ries (2013). Technologie im Allgemeinen und insbesondere auch informationstechnische Systeme sehen wir dabei als treibenden Faktor zur Entwicklung von Hilfsmitteln und Vorgehensmodellen zur Unterstützung und Förderung nachhaltiger Lebensweisen. (An dieser Stelle sind wir Technik-gläubig.)

Was verstehen wir unter "nachhaltiger Software-Entwicklung"?

Eine explizite Definition des Begriffs der "nachhaltigen Software-Entwicklung" ist verzichtbar, denn oben stehende Definition für "nachhaltige Software" beinhaltet bereits den Entwicklungsprozess. Trotzdem lohnt sich an dieser Stelle eine abstrakte Sicht auf unser Tun als Software-EntwicklerIn.

Software-Entwicklung als Transformationsprozess

Prinzipiell lässt sich die Entwicklung und die sich anschließende Nutzung von Software als eine Transformation von menschlichem Wissen und Daten (Software = Daten im Sinne von Neumanns) in neues Wissen (z. B. Handlungswissen) und weitere Daten (u. a. Software) ansehen. Dieser Transformationsprozess, der mit einem Austausch von Mensch, Gesellschaft und Natur einher geht, bedarf der Zufuhr geeigneter materieller und energetischer Ressourcen, die im Rahmen der Entwicklung und des Betriebs der Software ebenfalls transformiert werden, z. B. für die Hardware benötigte Rohstoffe und elektrische Energie in Elektronik-Schrott, CO2 und Abwärme.

Mit Blick auf eine Integrative Nachhaltigkeit lässt sich fordern: Der Wissensgewinn sollte größer sein als der irreversibel transformierte Anteil der eingesetzten energetischen und materiellen Ressourcen. -> Zumeist wird ein Gegeneinanderabwägen der (schwer quantifizierbaren) Größen erforderlich sein.

Ungeachtet dessen und angesichts der Diskussion der gegenwärtigen Umweltprobleme lässt sich an dieser Stelle die Notwendigkeit einer "Dematerialisierung" und "Dekarbonisierung" der bestehenden Software-Entwicklungsprozesse (deren Output in der stets erneuerbaren Ressource "Wissen" besteht) konstatieren.

Heriaus lassen sich grundsätzliche Strategien zur nachhaltigen Software-Entwicklung ableiten wie u. a.

  • Maximierung des gewonnenen Handlungswissens mit Blick auf die Ziele nachhaltiger Entwicklung
  • Minimierung der eingesetzten (irreversiblen) Energiemengen und Ressourcen (Effizienzaspekt)
  • Nutzung regenerativer Energiequellen für Software-Entwicklung und -Betrieb
  • Gewährleistung eines freien Zugangs zu den geschaffenen Software-Artefakten und dem generierten Wissen (Effizienz und soziale Gerechtigkeit)
  • die Schaffung neuer Entfaltungspotenziale des integrativen Nachhaltigkeitswissens
  • die Schaffung langlebiger Software-Bausteine

Praktische Beispiele

Positiv-Beispiele, die in Richtung unseres Kriteriums tendieren:

  • 01 Die Anwendung erfüllt eine mit Blick auf die Nachhaltigkeitsziele sinnvolle Funktion, z. B. indem sie die praktische Durchführung einer Tätigkeit ermöglicht, welche einen positiven Effekt auf die Umwelt hat.
  • 02 In der Anwendung ist konzeptionell ein Mechanismus verankert, der zu einer Kompensation negativer Umweltauswirkungen führt.

Nachstehende (in Software-Häusern häufig genannte) Beispiele tragen zur einer erhöhten Effizienz und der Langlebigkeit von Software-Lösungen bei, scheinen also eher mit Blick auf eine schwache Nachhaltigkeit (Stichwort "Effizienz-Revolution" bei Martens & Schilder 2012) positiv bewertbar:

  • 03 Eine Anwendung hat keine unangemessen hohen Hardware-Voraussetzungen und zwingt die AnwenderIn nicht zum Kauf eines neuen Computers, obwohl der "alte" ansonsten noch gut läuft.
  • 04 Eine Anwendung verwendet keine proprietären Datenformate, ein Export der Nutzerdaten in andere Systeme ist vorgesehen.
  • 05 Eine millionenfach aufgerufene Funktion (z. B. innerhalb einer Massenanwendung mit sehr großer Nutzerzahl) arbeitet algorithmisch effizient und führt somit nur zu einer geringen CPU-Last und einem niedrigen Energieverbrauch.
  • 06 Eine Anwendung zum Abruf umfangreicher Mediendokumente lädt nicht bei jedem späteren Abruf das gesamte Dokument erneut über das Web (lokales Caching, Download-Möglichkeit).
  • 07 Eine App führt nicht unnötig zu einem sehr hohen Energieverbrauch (siehe auch Diskussion), da sie auf permanente mobile Web-Verbindungen, GPS-Signale u. ä. verzichtet.
  • 08 Eine (proprietäre) Dienst-Schnittstelle wird beibehalten, so dass zahlreiche darauf aufbauend entwickelte Anwendungen lauffähig bleiben.
  • 09 Eine von zahlreichen Anwendungen genutzte Software-Schnittstelle ist nicht unnötig komplex, so dass eine In-Wert-Setzung ohne großen Aufwand möglich ist.
  • 10 Einzelne Systemteile (z. B. Web-Dienste oder Datenbestände) lassen sich auch in Fremdsystemen oder späteren Neuentwicklungen direkt verwenden.
  • 11 Mehrere unabhängige Systeme besitzen die unmittelbare Fähigkeit zur Zusammenarbeit, so dass dem Benutzer auf effiziente Art und Weise Information zur Verfügung gestellt werden kann (Interoperabilität).
  • 12 Das System ist skalierbar.
  • 13 Die Anwendung lässt sich leicht um neue Funktionalität erweitern.
  • 14 Ein System bietet langlebige Interfaces an, wodurch nach Änderung der Implementierung (z. B. System-Update) die Applikationen, die diese Interfaces nutzen, weiterhin lauffähig sind.
  • 15 Fehler in einer Anwendung lassen sich Nutzer-seitig reparieren. (Dies erfordert eine geeignete Dokumentation, z. B. API-Beschreibung.)
  • 16 Die wesentlichen konzeptuellen Elemente des Software-Entwurfs und der Implementierung werden kommuniziert (Wissensgewinn bei Software-Entwicklern statt "tacit developer knowledge").
  • 17 Der Benutzerschnittstellen-Entwurf berücksichtigt eine breite Software-Nutzung, u. a. durch technikferne Zielgruppen, barrierefrei, in anderen Kulturkreisen etc.
  • 18 Vermeidung unnötigen Internet-Traffics in der Anwendung bzw. Kompression der übertragenen Daten
  • 19 Server-Virtualisierung
  • 20 Erhöhung der Temperatur im Serverraum

Organisatorische Projektaspekte, u. a.

  • 21 Während der Anforderungsanalyse gibt es weitreichende Partizipationsmöglichkeiten für alle Interessensbeteiligten (Stakeholder) sowie weiterer potenzieller Akteure.
  • 22 Unnötige Mobilität der Projektbeteiligten wird vermieden (Energieeffizienz).
  • 23 Für Entwicklung und Betrieb der Anwendung ist ausschließlich eine Nutzung regenerativer Energie vorgesehen (unter Einhaltung geschlossener Stoffkreisläufe).
  • 24 Es wird ein freier Zugang zu den geschaffenen Software-Artefakten (Quellcode, Schnittstellen-Beschreibungen etc.) gewährt.

Kontrovers diskutiert wird die Rolle mobiler Web-Anwendungen, welche möglicherweise als wesentliches unterstützendes Element für den Übergang in nachhaltigere Lebensweisen fungieren können (siehe z. B. Diskussion zur Dekarbonisierung und Dematerialisierung durch Vernetzung auch in strukturschwachen Regionen der Welt oder ICT4D-Aktivitäten). Auf Grund des hohen infrastrukturellen Wertes mobiler Web-Technologie und der dadurch geschaffenen breiten Zugangsmöglichkeiten (und mit Blick auf die heutige Lebenswirklichkeit) ergänzen wir diesen Aspekt in der Liste unserer in die positive Richtung tendierenden Beispiele:

  • 25 Die Anwendung ist lauffähig auf mobilen Endgeräten, wobei auch geringe Bandbreiten und/oder Offline-Betrieb unterstützt werden.

Fazit und Ausblick

  • Der Begriff der "nachhaltigen Software" ist nicht gleichbedeutend mit dem der "effizienten Software".
  • Die Betrachtungen sind nicht auf einzelne Maßnahmen und Software-Merkmale zu beziehen. Vielmehr muss die Gesamtbilanz positiv im Sinne einer nachhaltigen Entwicklung sein. Hier werden Methoden zur Bewertung der Nachhaltigkeit von Software und Software-Engineering-Prozessen benötigt.
  • Open-Source-Software kann nennenswerte positive Beiträge zur Erreichung des Nachhaltigkeitsziels leisten (tut es aber nicht immer).
  • Auch proprietäre "Closed-Source"-Software kann allerdings durchaus nachhaltig sein (und fungiert darüber hinaus zumeist als treibende Kraft und Ideengeber für innovative Software-Anwendungen).
  • Ziel weiterer Aktivitäten im Umfeld "Nachhaltige Software-Entwicklung" sollte eine Sensibilisierung der Software-EntwicklerInnen für dieses aus global wichtige Thema sein.

Es bleiben jedoch zahlreiche Fragestellungen, die es im Rahmen einer angewandten Forschung zu untersuchen gilt:

  • Wie lässt sich der Grad der Nachhaltigkeit von Software-Entwicklungsprozessen praktisch bewerten (messen)?
  • Lässt sich der energetische und materielle Bedarf zur Durchführung von Software-Projekten (inklusive aller "Nebenkosten") quantifizieren? In welchem Verhältnis steht dieser Bedarf zu dem erzielbaren Software-Nutzen?
  • Welche praktisch anwendbaren Leitsätze (und Kriterien) lassen sich für hinsichtlich der Nachhaltigkeitsziele positive Software-Entwicklungen benennen?
  • Lassen sich "Gestures" im Sinne einer Selbstverpflichtung für die Software-Entwickler zusammentragen (siehe dazu unseren Beitrag für das "Oracle du papillon")?
  • Wie lassen sich Software-technische Artefakte durch Nicht-IT-Spezialisten (z. B. in strukturschwachen Regionen dieser Erde) besser in Wert setzen?
  • Auf welche Weise können mobile Web-Anwendungen als wesentliche unterstützende Elemente für den Übergang in nachhaltigere Lebensweisen (hier wie in strukturschwachen Regionen) dienen?
  • Welche Abhängigkeiten bestehen zwischen Software-Herstellung, Software-Nutzung und global gerechter Ressourcen-Verteilung?
  • Software operiert auf Daten. Welche Anforderungen ergeben sich (über den Software-Aspekt hinaus) an eine nachhaltige Datenerfassung, -haltung und -bereitstellung?
Diese spannende Liste gerne diskutieren/ergänzen!

Referenzen

  • Dick, M., S. Naumann & N. Kuhn (2010): A Model and Selected Instances of Green and Sustainable Software. Proceedings of the 9th IFIP TC 9 and 1st IFIP TC 11 International Conference, Brisbane, Australia, Sept. 2010, pp. 248-259.
  • Martens, J. & K. Schilder (2012): Sustainable Development. In J. Krieger, ed.: The Oxford Companion to Comparative Politics, 2nd ed., Oxford: Oxford University Press, pp. 813-815.
  • Penzenstadler, B., V. Bauer, C. Calero & X. Franch (2012): Sustainability in Software Engineering: A Systematic Literature Review. Evaluation & Assessment in Software Engineering (EASE 2012), Proceedings, Ciudad Real, Spain, May 14-15, 2012, pp. 32-41.
  • Schweizer-Ries, P. (2013): Theroethical Reflections and Research Experiences. IAPS Bulletin 40, Autumn 2013, pp. 9-12.