16. August 2023

Langfristige Softwarewartung

Dieser Artikel basiert auf dem allgemeinen Verständnis von Softwarewartung sowie langjähriger Erfahrung in der Softwareentwicklung und -wartung innerhalb der Medizinproduktindustrie. Er ist auch auf andere Branchen übertragbar, beleuchtet ausgewählte Aspekte näher und gibt wertvolle Tipps.

Die Softwareentwicklung ist durch eine hohe Geschwindigkeit bei der Weiterentwicklung von Technologien und Methoden gekennzeichnet. Gleichzeitig werden Systeme mit langen Lebenszyklen immer noch mit älteren Technologien und Methoden weiterentwickelt.

Eine Software kann viele Jahre, teils sogar Jahrzehnte, im Einsatz sein. Während dieser Zeit muss sie gewartet werden, wodurch sich verschiedene Herausforderungen ergeben. Softwarewartung ist ein kontinuierlicher Aufwand über den gesamten Lebenszyklus hinweg. Oft ist Software, die langfristig gewartet wird zwar noch weit verbreitet, aber kein strategisches Produkt mehr.

Der Lebenszyklus von Software

Software ist ein eigenständiges Produkt, ein eingebettetes Produktelement oder eine Systemkomponente. Verschiedene Versionen von Software können gleichzeitig in Gebrauch sein, dabei hat jede Software einen Lebenszyklus.

Nach der Entwicklung (Analyse, Entwurf, Implementierung, Tests) wird sie auf den Markt gebracht, überwacht und in der Regel mehrmals aktualisiert und schliesslich ausser Betrieb genommen (Lebensende). Die Prozesse des Application Life Cycle Management (ALM) und des Software Development Life Cycle (SDLC) unterstützen die Erstellung und Wartung hochwertiger Software.

Wenn die Software ein integraler Bestandteil eines Systems oder Produkts ist, ist der Lebenszyklus der Software direkt mit dem des Systems oder Produkts verbunden. Ein Lebenszyklusplan liefert umfassende Informationen über den Herstellungszeitraum, den Vertriebszeitraum, den Support- bzw. Wartungszeitraum und das geplante Ende der Lebensdauer.

Die Produktlebenszyklen können hingegen ursprünglicher Planungen auch verlängert werden. Im Allgemeinen sinkt die Bereitschaft, in die Softwarewartung zu investieren, je näher das geplante Lebensende rückt.

Tipp 1 – Lebenszyklusplan: Fordern Sie einen System- oder Produktlebenszyklusplan an oder erstellen Sie ihn selbst. In der Regel stammen die Informationen von den Interessengruppen des Unternehmens, z. B. von den Produktmanagern. Sorgen Sie dafür, dass der Plan regelmässig aktualisiert wird. Ein Lebenszyklusplan ist ein wesentlicher Input für die Softwarewartungsplanung.

Ausmusterung von Software

Ein wichtiger Aspekt der Lebenszyklusplanung besteht darin, überflüssige Softwareversionen auszumustern. Je mehr Softwareversionen gleichzeitig unterstützt und gewartet werden müssen, desto komplexer und kostspieliger wird es. Im Idealfall gibt es nur eine einzige Softwareversion, die beibehalten wird – leider ist das jedoch nicht immer möglich.

Die Ausmusterung von Software muss bereits bei der Entwicklung berücksichtigt werden. Z. B. kann die Software konfigurierbar sein, anstatt mehrere «parallele» Versionen zu erzeugen. Eine weitere Option ist es, neue Versionen mit bestehender Hardware abwärtskompatibel zu gestalten. Umgekehrt können auch Hardwareänderungen vorgenommen werden, ohne die aktuellen Softwareversionen zu beeinflussen.

Erklärt man neue Softwareversionen für verbindlich, kann man frühere Versionen vom Markt nehmen. Am besten wird dem Kunden damit zugleich ein Mehrwert geboten bspw. durch neue Funktionen, Fehlerbehebungen oder Leistungsverbesserungen.

Tipp 2 – Reduzierte Anzahl von Softwareversionen: Minimieren Sie die Anzahl der zu wartenden Softwareversionen, um Aufwand und Kosten zu sparen.

Ältere Software/Systeme

Der Begriff «Legacy-Software» wird häufig für Software mit einem langen Lebenszyklus verwendet. Wenn Sie nach einer Definition für Legacy-Software suchen, finden Sie bspw. «nur schwer änderbarer Code, den wir nicht verstehen», «nicht getesteter Code», «nicht dokumentierter Code» oder auch «veraltete Technologie».

Auch, wenn in diesen Beschreibungen oft etwas Wahres steckt, kann man das nicht verallgemeinern, insbesondere nicht für Software mit einem langen Lebenszyklus. Fast jede Software ist komplex. Die Wartung von Software ist schon anspruchsvoll genug, selbst wenn umfangreiche Dokumentation und Tests zur Verfügung stehen.

Tipp 3 – der Begriff «Legacy Software/System»: Seien Sie vorsichtig, wenn Sie den Begriff Legacy Software oder Legacy System verwenden. Er kann auf unterschiedliche Weise verstanden werden und daher irreführend sein. Verwenden Sie den Begriff nicht unbedacht, wenn Sie Software oder ein System mit einem langen Lebenszyklus meinen.

Softwarewartung

Solange eine Software noch nicht ihr Lebensende erreicht hat, ist sie auch nicht «fertig». Sie kann bekannte und unbekannte Fehler enthalten, gewünschte Funktionen fehlen, Dokumentationslücken entstehen oder werden erkannt, die Betriebsumgebung ändert sich, es gibt Sicherheitslücken und vieles mehr. Dementsprechend müssen wir uns um sie kümmern. Das wird als Softwarewartung bezeichnet.

Es gibt verschiedene Definitionen von Softwarewartung, wie z. B. «alle Aktivitäten zur Optimierung Ihres Softwareprodukts», «Hinzufügen neuer Funktionen und Beheben von Fehlern, um das Benutzererlebnis zu verbessern» oder «Modifizieren von Software nach der Markteinführung, um Fehler zu korrigieren, die Leistung zu verbessern oder sie an eine sich verändernde Umgebung anzupassen».

All diese Auffassungen haben eins gemein: das ausgelieferte Produkt wird nachträglich verändert. Es gibt vier Kategorien von Änderungen:

Korrigierende Änderung: Sie beschreiben die Behebung von Fehlern und Mängeln in der Software. Diese Kategorie kommt einem zuerst in den Sinn, wenn man über Softwarewartung spricht. Fehler und Schwachstellen werden in der Regel von Benutzern gemeldet oder während der Entwicklung von Testern bzw. Softwareentwicklern entdeckt.

Adaptive Änderung: Software läuft innerhalb einer bestimmten Umgebung, doch diese kann sich ändern. Unter adaptiver Änderung versteht man die Anpassung an eine sich verändernde Umgebung. Beispiele hierfür sind geänderte Hardware, Cybersecurity-Bedrohungen, Betriebssystem-Updates oder neue regulatorische sowie rechtliche Anforderungen.

Perfektionierende Änderung: Es geht um die Erweiterung bestehender Funktionen, die Implementierung neuer Funktionen oder die Beseitigung von Funktionen, die nicht mehr verwendet werden, um das Produkt in Richtung «Perfektion» zu verbessern.

Vorbeugende Änderung: Vorbeugende Änderungen helfen dabei, künftig einfacher und besser die Software zu warten. Sie verlangsamen quasi den Alterungsprozess der Software. Beispiele für präventive Änderungen sind die Migration auf eine neue Technologie, Refactoring, Optimierungen, die Aktualisierung enthaltener Bibliotheken oder die Automatisierung von Softwareentwicklungsprozessen.

Änderungen sind immer mit Risiken verbunden, unabhängig davon, um welche Art der Änderung es sich handelt. Sowohl die Risiken des Wartungsprojekts als auch die Produktrisiken müssen berücksichtigt werden. Produktrisiken spielen bspw. bei Software für medizinische Geräte eine entscheidende Rolle, da die Sicherheit der Patienten und Benutzer davon abhängt. Ebenso wichtig ist die Benutzerfreundlichkeit.

Bedenken Sie auch, dass die meisten Kunden eine Software nicht ständig aktualisieren wollen oder können. Software-Updates können Kundenbesuche, Schulungen oder sogar eine Neuzertifizierung des Labors bedeuten. Solche Softwarelösungen sind nicht mit Smartphone-Anwendungen zu vergleichen, bei denen wir an häufige Updates gewöhnt sind.

Ein Softwarewartungsplan sollte Ihr Verständnis von Softwarewartung beschreiben und enthält in der Regel folgende Aspekte:

  • Umfang
  • Wartungsteam (Aufgaben und Zuständigkeiten)
  • Bewertung der Wartbarkeit
  • Software-Übergabe (an das Wartungsteam)
  • Wissensaufbau und -erhalt
  • Umgang mit Änderungskategorien
  • Umgang mit enthaltener Standardsoftware (nicht selber entwickelt)
  • Cybersecurity-Bedrohungen
  • Software-Release-Strategie (Fahrplan)
  • Lebenszyklus und Software-Abkündigungsstrategie
  • Risiken
  • Budget

Tipp 4 – Softwarewartungsplan: Erstellen Sie während der Softwareentwicklung einen Wartungsplan. Er bildet die Grundlage für die anschliessenden Phasen der Softwarewartung.

Softwarewartungsteam

Für die Softwarewartung benötigt man ein dafür bestimmtes Team. Dabei kann es sich um das bestehende Entwicklungsteam, ein völlig neues Team (intern oder extern) oder eine Kombination aus beidem handeln. Eine gute Durchmischung innerhalb des Teams – bspw. verschiedene Altersgruppen sowie Kompetenzniveaus – ist besonders vielversprechend.

Das Softwarewartungsteam muss sorgfältig zusammengestellt werden. Die Teammitglieder müssen nicht nur über technische Fähigkeiten verfügen, sondern auch soziale Kompetenz, hohe Motivation und mittel- bis langfristiges Engagement mitbringen. Fehlt eines, kann es sich negativ auf die Softwarewartung und letztlich auf die Qualität auswirken.

Dabei unterscheiden sich die Anforderung für Wartungsteams zu denen eines Entwicklungsteams, das ein neues Projekt mit modernen Technologien und Methoden umsetzt. Die richtigen Leute für veraltete oder Nischentechnologien zu finden, kann kostspielig und aufwendig sein. Bedenken Sie jedoch, dass der Umgang mit alten Technologien erlernt werden kann, das passende Mindset nicht. Ein Softwareingenieur, der sich regelmässig Veränderung wünscht und eine hohe Affinität für die neuesten Technologien hat, passt möglicherweise nicht in ein Softwarewartungsteam.

«Für die Wartung von Software braucht man Leute mit durchschnittlichen Fähigkeiten.» Das habe ich vor einigen Jahren vom Leiter einer Softwareabteilung gehört. Allerdings kann ich dem nicht zustimmen. Im Gegenteil: ich bin davon überzeugt, dass es hinsichtlich des Qualifikationsniveaus keinen Unterschied zwischen der Entwicklung eines neuen Produkts und der Wartung eines bestehenden Produkts gibt. So können bspw. Fehleranalyse und Refactoring bei einem bestehenden Produkt sehr komplex sein und erfordern hochqualifizierte Mitarbeiter.

Tipp 5 – das Softwarewartungsteam: Dokumentieren Sie die erforderlichen Fähigkeiten der Teammitglieder. Schränken Sie die Anforderungen nicht ein, nur weil es sich um Softwarewartung handelt. Legen Sie bei der Suche nach Teammitgliedern den Schwerpunkt auf Motivation und Engagement, nicht nur auf die Technologie. 

Wissenstransfer und -erhalt

Die Softwarewartung erfordert ein hohes Mass an Wissen der Software und des Systems sowie generelles Fachwissen. Wenn Wissen an ein neues Team weitergegeben wird, sollte das geplant und gut strukturiert geschehen. Als Voraussetzung für Software-Wartungstätigkeiten müssen qualitätsrelevante Schulungen gemäss dem anwendbaren Qualitätsmanagementsystem absolviert werden. Ebenso sollte das Team teilnehmen, wenn Ihre Organisation den Benutzern eine System- oder Produktschulung anbietet. Das kann dabei helfen, sich besser in die Lage der Benutzer zu versetzen.

Die Übergabe der Softwarewartung an ein neues Team birgt das Risiko, dass das derzeitige Team demotiviert wird. Hier können geeignete Massnahmen dazu beitragen, aktuelle Teammitglieder wieder zu motivieren.

Es gilt, das Wissen so einfach und verständlich wie möglich zu dokumentieren. Die offizielle Entwicklungs-, Produkt- und Schulungsdokumentation ist notwendig, für die Softwarewartung wird jedoch noch mehr benötigt. Bedenken Sie jedoch, dass Wissen nur teilweise weitergegeben und dokumentiert werden kann – es geht immer etwas verloren.  Ein Wissenstransfer ist daher nur der erste Schritt zum Aufbau von Wissen.

Tipp 6 – Wissenstransfer: Erstellen Sie einen detaillierten Wissenstransferplan für die Anlaufphase, wenn die Softwarewartung an ein neues (internes oder externes) Team übergeben wird. Er sollte Themen, Wissensinhalte, Wissensquellen (derzeitige Teammitglieder) und Wissensempfänger (neue Teammitglieder) enthalten. Mithilfe des Plans können Sie den Fortschritt verfolgen und den Abschluss melden. Berücksichtigen Sie auch einen reduzierten Einarbeitungsplan für künftige neue Teammitglieder.

Tipp 7 – Wissensdatenbank: Erstellen Sie eine Wissensdatenbank (z. B. ein Wiki) und halten Sie sie auf dem neuesten Stand. Bei einem Wissenstransfer empfiehlt es sich, dass das neue Team die Wissensdatenbank bereits im Übergabeprozess aktualisiert.

Software- und Umgebungs-Updates

Keine Software und kein System können auf Dauer stabil gehalten werden. Änderungen innerhalb des Lebenszyklus sind notwendig. Es gibt verschiedene mögliche Auslöser für die Erstellung einer neuen Softwareversion:

  • Kunden- oder Geschäftsanforderungen (neue oder geänderte)
  • Sicherheits- oder geschäftskritische Fehler (sogenannte «pain points»)
  • Hardware-Änderungen (z. B. wegen Abkündigungen), die sich auf die Software auswirken
  • Neue regulatorische oder rechtliche Anforderungen
  • Anforderungen an die Cybersicherheit oder Schwachstellen
  • Unzureichende Wartbarkeit
  • Veraltete und nicht mehr unterstützte Standardsoftware
  • Veraltete und nicht mehr unterstützte Entwicklung- oder Laufzeitumgebung
  • Probleme mit Entwicklungs- oder Laufzeit-Lizenzen

Werden die Standardsoftware, die Entwicklungsumgebung und die Laufzeitumgebung auf dem neuesten Stand gehalten, können sich folgende Vorteile ergeben:

  • Höhere Stabilität von Software und Umgebung, weniger Fehler und Schwachstellen
  • Einhaltung von Normen (z. B. IEC 62304)
  • Einhaltung von Richtlinien (z. B. Cybersicherheit)
  • Gesicherte Herstellerunterstützung
  • Technische Unterstützung durch die Gemeinschaft
  • Geringere technische Abhängigkeiten
  • Einfachere Kommunikation mit Behörden und Kunden
  • Gesteigerter Marktwert der Softwareentwickler
  • Mehr Erfolg bei der Rekrutierung von Softwareentwicklern
  • Generell mehr Bereitschaft für alle Arten von Veränderungen

Tipp 8 – Technische Schulden vermeiden: Aktualisieren Sie Ihre Software inkl. der Standardsoftware und Ihre Entwicklungsumgebung regelmässig. So verhindern Sie die Anhäufung technischer Schulden, die die Softwarewartung erschweren. Wenn Sie nichts tun oder sich nur um «Notfall-Updates» kümmern, wird Sie das früher oder später einholen.

Schlussfolgerung

Die langfristige Pflege der Software ist eine Herausforderung, bei der man viele Aspekte berücksichtigen muss. Sie hängt von der Branche, der Marktsituation, den regulatorischen und rechtlichen Anforderungen und den Unternehmenszielen ab. Dabei gibt es vielfältige Möglichkeiten, eine Software zu warten. Die Herausforderungen mögen unterschiedlich sein, aber die Softwarewartung ist ein Thema für jede Software. Sie entscheiden, was es für die von Ihrer Organisation gewartete Software bedeutet. Dokumentieren Sie es und handeln Sie entsprechend.


Autor dieses Mitglieder-Beitrags: Daniel Hartmeier, ERNI Schweiz AG

Mit Ihrem Besuch auf unserer Website stimmen Sie unserer Datenschutzerklärung und der Verwendung von Cookies zu. Dies erlaubt uns unsere Services weiter für Sie zu verbessern. Datenschutzerklärung

OK