Investitionsschutz durch Technologieauswahl

Technologien und Werkzeuge wechseln im Bereich der Softwareentwicklung häufig. Das kann einerseits Ausdruck einer sehr dynamischen Entwicklung und des technischen Fortschritts sein. Andererseits stellt die Entwicklung von Software aus betriebswirtschaftlicher Sicht eine Investition dar.

Das bedeutet, dass sich die Herstellungskosten erst über einen längeren Zeitraum amortisieren. Dieses Dilemma kann durch eine gezielte Auswahl der Technologie abgemildert werden. Gelingt es, Softwareprodukte durch eine aktive Wartung im Lebenszyklus zu halten, dann können ressourcenaufwändige Neuentwicklungen längere Zeit vermieden werden.

Anzeige

Die Lebensdauer eines Softwaresystems wird maßgeblich durch die Möglichkeit einer beständigen Wartung über einen längeren Zeitraum bestimmt. Anfänglich definierte und umgesetzte Anforderungen werden sich über die Nutzungsdauer einer Applikation ändern. Fasst man die Anschaffung, Eigen- oder Auftragsentwicklung von Software als unternehmerische Investition auf, dann können die anfallenden Kosten nur über das betriebswirtschaftliche Konzept der Abschreibung amortisiert werden. Dazu ist es aber notwendig, dass sich Anwendungssysteme über eine gewisse Zeitdauer in aktiver Nutzung befinden. Software altert zwar nicht im physischen Sinn, aber aus den genannten Gründen muss es möglich sein, diese in zyklischen Abständen an neue Anforderungen anzupassen und bestehende Fehler zu bereinigen. Voraussetzung für eine andauernde Nutzungsdauer ist eine Beständigkeit der Technologie. Hier wird unter Technologie ein Zusammenspiel aus Vorgehensweisen, Methoden, Werkzeugen, Programmiersprachen usw. verstanden. Es stellt sich daher die Frage, ob Erweiterungen, Anpassungen und Fehlerbereinigungen ohne fundamentale Änderungen am Kern der Software umgesetzt werden können. Ein Problem liegt dagegen vor, wenn die Entwicklungswerkzeuge, die verwendeten Bibliotheken, Frameworks usw. selbst nicht mehr weiterentwickelt werden und damit im Laufe der Zeit nicht mehr dem technischen Standard entsprechen. In diesem Fall ist man schlimmstenfalls gezwungen, die Entwicklung des Softwaresystems mit einer anderen Technologie von vorn zu starten. Das ist nicht nur ärgerlich, sondern auch ein ökonomisches Dilemma. Die Aspekte der Nachhaltigkeit und der Beständigkeit sollten daher bereits bei der Auswahl der passenden Technologie berücksichtigt werden.

Nachhaltigkeit als Kriterium bei der Technologieauswahl

In Wissenschaft und Gesellschaft ist der Begriff der Nachhaltigkeit in der letzten Zeit stetig präsent. Es ist kaum ein Lebensbereich zu finden in dem nicht darüber diskutiert wird. Auch in der Softwareentwicklung ist dieser Trend angekommen. Im Allgemeinen versteht man darunter die sinnvolle und schonende Nutzung von Ressourcen unter Berücksichtigung von ökologischen, wirtschaftlichen und sozialen Aspekten. Software ist heutzutage ein fester Teil unseres Lebens in beruflicher als auch privater Hinsicht geworden. In nahezu allen Alltags- und Arbeitsbereichen kommen wir mit Software in Berührung. Softwareentwickler übernehmen daher eine wichtige Aufgabe mit der Entwicklung und Bereitstellung zeitgemäßer Softwarelösungen. Moderne Softwareentwicklungsansätze geben den Entwicklern viel Spielraum. Gleichermaßen wächst auch die Verantwortung, zum Beispiel bei der Auswahl der passenden Technologie. Zunehmend richtet sich der Betrachtungswinkel auch auf ökologische Aspekte. Eine längere Haltbarkeit von Produkten, bei Software handelt es sich um eine möglichst lange Wartungsfähigkeit, bietet Chancen zur Einsparung von Ressourcen und auch zur Verringerung des ökologischen Fingerabdrucks. Etwas provokant formuliert:

 

„Immer wieder neu kann weder ökonomisch noch ökologisch sinnvoll sein.“

 

Wichtige Fragen bei der Auswahl der Technologie in diesem Zusammenhang sind beispielsweise:

  • Gibt es Aussagen des Herstellers über die Weiterentwicklung der Werkzeuge?
  • Werden regelmäßige Updates der Technologie bereitgestellt?
  • Gibt es einen belastbaren Support, um auch künftig auftretende Fragen professionell zu klären?
  • Sind Erfahrungswerte zur Nutzung der gewählten Technologie über längere Zeiträume verfügbar?

Man sucht insgesamt eine Antwort auf die Frage: „Welche Auswirkungen hat die getroffene Auswahl der Technologie auf die künftige Wartbarkeit und damit auf die Beständigkeit des Softwaresystems?“

Umgangssprachlich geht es bei der Auswahl der passenden Technologie darum den Hype vom Trend und von etablierten Vorgehensweisen zu trennen. Die Auswahl der Technologie basiert oft auf einem Filterprinzip (Bild 1).

 

Bild 1

clip image001

Der Prozess der Technologieauswahl

 

Zu Beginn des Auswahlprozesses ist das Spektrum der Optionen sehr groß. Die Kunst besteht darin, über die Anwendung von geeigneten Filtern (Auswahlkriterien) die Anzahl der Alternativen sukzessive bis zur finalen Entscheidung zu verkleinern und dabei dennoch nicht den Fehler zu machen auch vielversprechende Ansätze zu frühzeitig auszusortieren. Der Prozess sollte mit der gebotenen Sorgfalt ausgeführt werden, denn einmal abschließend getroffene Technologieentscheidungen lassen sich später nicht mehr oder nur noch mit einem erheblichen Aufwand revidieren.

Das Ziel im Fokus

Neben der Auswahl der passenden Technologie ist dabei auch stets das Ziel der Softwareentwicklung im Fokus zu behalten. Es zeichnet sich zunehmend ab, dass man mit den unterschiedlichsten Technologien ursprünglich sich wiedersprechende Ziele erreichen kann. Gab es bis vor einiger Zeit etablierte Technologien für die eine oder andere Art von Software, vermischt sich dieses Bild zunehmend. Beispielsweise lassen sich klassische Web-Technologien heute dazu nutzen, auch Software für den Desktop oder für Mobile Devices zu erstellen. Gleichwohl ist der Einsatz von ursprünglichen für die Desktop-Entwicklung gedachten Werkzeugen heute keine Einbahnstraße mehr. Oft genügen Konfigurationsanpassungen oder der Einsatz von zusätzlichen Frameworks, um aus einer gemeinsamen Quellcodebasis eine mobile App, eine Web-Applikation oder eine native Desktop-Applikation zu erstellen.

Anhand konkreter Beispiele werden diese Aspekte verdeutlicht. Ausgangspunkt der Betrachtungen ist das Ziel eine Software für die unterschiedlichsten Systemumgebungen, in diesem Fall für das Web, die mobile Nutzung und für den Desktop zur Verfügung zu stellen. Für alle drei Softwarearten gibt es spezialisierte Werkzeuge und Technologien. Dabei dürften die Optionen im Bereich der Web-Entwicklung am größten sein (zum Beispiel mit Hilfe der Frameworks Angular [2], React [3], Vue.js [4]). Hier wechseln Frameworks und Bibliotheken, aber auch komplette Vorgehensweisen sehr häufig. Gleichwohl gestatten die Web-Technologien aus dem Quellcode, Apps für die mobilen Systeme (Hybride Apps, Progressive Web-Apps) oder Desktop-Applikationen zu erstellen (zum Beispiel Electron [5]). Ebenso kann mittels Cross-Plattform Programmierung aus einer Quellcodebasis, sowohl eine Desktop- Mobile- oder Web-Applikation erstellt werden. Ein praxiserprobtes Beispiel ist die integrierte Entwicklungsumgebung Delphi [6]. Ursprünglich ausschließlich vor ca. 25 Jahren als Entwicklungswerkzeug für Desktop-Anwendungen erstellt, ist das Spektrum der Zielsysteme von Delphi heute deutlich breiter. Mobile Apps können genauso auf dem Wege der Cross Plattform-Programmierung (Framework FireMonkey [7]) erstellt werden, wie man auch damit eine moderne Web-Applikation (Framework TMS WEB Core [8]) erstellen kann. Die integrierte Entwicklungsumgebung Delphi hat sich damit stetig weiterentwickelt und erlaubt bei neuen Projekten auf die aktuellen Softwaretechnologien zu setzen. Gleichwohl können bestehende Softwaresysteme fortlaufend gepflegt und angepasst werden. Es ist auch heute noch möglich den Quellcode einer vor Jahren entwickelten Applikation in der Entwicklungsumgebung Delphi zu öffnen und in den meisten Fällen erfolgreich zu kompilieren. Das ist möglich, da nahezu keine Abhängigkeiten zu weiteren Bibliotheken vorhanden sind. Gerade eine solche Abhängigkeit kann zu einer erschwerten Wartung über eine längere Zeit führen, denn es müssen dann auch die genutzten Bibliotheken regelmäßig an sich ändernde Systemvoraussetzungen angepasst werden. Die Technologie ist beständig, um die sich ändernden Anforderungen ohne größere Systembrüche umsetzen zu können.

Newsletter
Newsletter Box

Mit Klick auf den Button "Jetzt Anmelden" stimme ich der Datenschutzerklärung zu.

Zusammenhang zwischen Softwarewartung, Technologie und Nachhaltigkeit

Technologien, welche die genannten Kriterien genügen, sind mit Blick auf die Nachhaltigkeit als positiv einzuschätzen. Es geht um das Zusammenwirken der geschäftlichen Anforderungen (Business Case), der Bereitstellung der Lösung (Software) und der technischen Realisierung und Wartung dieser Software (Technologie) – auch über einen längeren Zeitraum (Bild 2).

 

Bild 2

 

Zusammenhang zwischen Anforderungen, Software und Technologie

 

Die initial erhobenen Anforderungen an eine Software sind über den geplanten Unterstützungszeitraum (Software Lifecycle) nicht konstant. Sie entwickeln sich stetig weiter. Software stellt die Lösung für die Probleme dar. Bei der Weiterentwicklung der Software ist zwischen Minor- (Version 2.1 zu 2.2) und Major-Updates (Version 2.* zu 3.*) zu unterscheiden. Innerhalb eines Business Cases werden dabei üblicherweise mehrere Minor-Updates bereitgestellt, welche geringfügige funktionale Änderungen und Fehlerbereinigungen durchführen. Mit einer neuen geschäftlichen Anforderung (Business Case) erfolgt oft ein Major-Release. Idealerweise kann über den gesamten Lebenszyklus – dabei sind zwei bis drei Jahrzehnte nicht unüblich – das Softwaresystem auf der Basis einer vorhandenen Technologie gewartet werden. Das bedeutet nicht, dass die Technologie in dieser langen Zeitspanne keine Erneuerungen und Anpassungen erfahren hat. Diese muss ebenso fortlaufend an den technischen Fortschritt angepasst werden. Eine durchgehende Technologie heißt jedoch, dass die Werkzeuge, wie die integrierte Entwicklungsumgebung, die Bibliotheken und Frameworks grundsätzlich verfügbar sind. Gibt es weitergehende Änderungen an der Technologie, zum Beispiel bedingt durch den technischen Fortschritt der Zielplattformen, dann sollten die Werkzeuge eine Migration bestmöglich unterstützen. Ebenso ist es wichtig das die Technologie bereits zu Beginn des Vorhabens eine gewisse Reife erlangt hat. Nur dann sind üblicherweise so genannte „Kinderkrankheiten“ bereinigt. Auch sollte sie über das Ende der geplanten Nutzungsdauer zur Verfügung stehen, um die Applikationen im Bedarfsfall weiter pflegen zu können.

Liegen diese Bedingungen im Zusammenspiel zwischen Software und Technologie vor, dann sind die Voraussetzungen für einen langen Softwarelebenszyklus und eine nachfolgend ressourcenschonende Migration gegeben.

Zusammenfassung

Software ist ein hoch innovatives und immaterielles Gut. Dabei kann Software nur durch stetige Weiterentwicklung an die aktuellen Anforderungen angepasst werden. In der Praxis etablierte Technologien müssen über den gesamten Lebenszyklus der Software zur Verfügung stehen, um dieses Ziel erreichen zu können. Bei der initialen Auswahl zu Beginn eines Vorhabens sind daher auch die Kriterien zur Beständigkeit einer Technologie mit einzubeziehen. Im Mittelpunkt steht dabei die Nutzung möglichst langfristiger und stabiler Komponenten und Werkzeuge mit der Option zur Erweiterung. Gerade bei größeren und langlaufenden Projekten ist das wichtig. Oft taucht der Begriff „Boring Technology“ in diesem Zusammenhang auf. Ja, tatsächlich, „Boring“ meint etablierte Technologien, welche es schon seit einiger Zeit gibt und hinter denen eine vitale Community steht. Es sind Technologien mit einem großen Fußabdruck, so dass man stets Hilfe findet, wenn danach gesucht wird.

 

Quellen

[1] Räuchle M., Wittmann, R.: Nachhaltigkeit in der Softwareentwicklung https://dl.gi.de/bitstream/handle/20.500.12116/37694/C1-3.pdf?sequence=1&isAllowed=y

[2] https://angular.io/

[3] https://reactjs.org/

[4] https://vuejs.org/

[5] https://www.electronjs.org/

[6] https://www.embarcadero.com/de/products/delphi

[7] http://www.firemonkeyx.com/

[8] https://www.tmssoftware.com/site/tmswebcore.asp

Veikko

Krypczyk

LARInet -

Softwareentwickler

Dr. Veikko Krypczyk ist begeisterter Entwickler und Fachautor. Als Wirtschaftsinformatiker ist er besonders an Fragen einer effizienten Nutzung von IT für Unternehmensprozesse interessiert.
Anzeige

Artikel zu diesem Thema

Weitere Artikel

Newsletter
Newsletter Box

Mit Klick auf den Button "Jetzt Anmelden" stimme ich der Datenschutzerklärung zu.