Software Modernisierung

Altsysteme laufen wieder rund dank einem Software Relaunch​

Sowohl Technologien, als auch die Konzepte bei der Entwicklung von Webanwendungen und webbasierter Software entwickeln sich stetig weiter und haben in den letzten Jahre enorme Sprünge gemacht.

Daher muss jede Software gewartet und mit wichtigen Aktualisierungen versorgt werden, damit diese Altsysteme  wieder rund laufen. Hier profitiert man bei webbasierter Software von der Server/Client Architektur. Hier wird die Software zentral auf dem Server gewartet, sodass die Nutzer mit keinen Einschränkungen rechnen müssen.

Software Update

Kleinere Fehlerbehebungen, sowie Sicherheitsupdates, die von den Entwicklern der Software, nach dem Bekanntwerden einer Sicherheitslücke, bereitgestellt werden.

Software Upgrade

Upgrades erhalten neue Funktionen einer Software. Dieses stellt den aktuellen Stand der Weiterentwicklung einer Anwendung dar.

Software Refactoring

Die sukzessive Modernisierung von Anwendungen durch Code-Analyse und Verbesserungen.

Unterschiede zwischen Updates und Upgrades

Jede Software und Anwendung erfordert kontinuierliche Betreuung und Wartung, da sowohl Sicherheitslücken geschlossen werden müssen, als auch neue Funktionen durch neue Versionen zur Verfügung stehen können.

Hier unterscheidet man zwischen Minor-Updates und Major-Upgrades. Diese spiegeln sich oft in der Versionsnummer von Software wieder (Major vor dem Punkt, Minor nach dem Punkt).

Minor Updates

Minor-Updates sind kleinere Fehlerbehebungen oder Sicherheitsupdates, die von den Herstellern der Software in der Regel schnell nach dem Bekanntwerden einer Sicherheitslücke bereitgestellt werden. Sie sollten dann zeitnah eingespielt werden, um die betreffende Anwendung vor Angriffen und somit potentiellem Verlust von Daten zu schützen. Dies geschieht in aller Regel im Rahmen eines Wartungsvertrages und wird durch die Nutzer der Anwendung nicht wahrgenommen.

Major Upgrades

Major-Upgrades enthalten im Gegensatz zu Minor-Updates neue Funktionen der Software, sie stellen den aktuellen Stand der Weiterentwicklung der Anwendung dar. Ein Upgrade ist dabei häufig zunächst optional und die alte Version kann bei Verzicht auf eine Aktualisierung weitergenutzt werden.

Diese Software-Versionen werden in der Regel im Voraus geplant und haben nach Veröffentlichung ein bestimmtes Zeitfenster, in dem diese Major-Version mit Sicherheitsupdates versorgt wird. Nach Ablauf dieses Zeitfensters stellt der Hersteller dann die Unterstützung der Version ein. Spätestens dann sollte auf die neueste Version aktualisiert werden, um die Gefahr von offenen Sicherheitslücken zu vermeiden. Man spricht hierbei vom Lebenszyklus der Software (Software-Lifecycle).

Bei Bedarf unterstützen wir Sie durch die kontinuierliche Wartung und Betreuung der Anwendung in Form eines Wartungsvertrages. Dabei versorgen wir die Anwendungen mit Sicherheitsupdates, die von den Herstellern bereitgestellt werden und halten die Software so immer auf dem aktuellsten Stand.

Technische Schuld durch ein Refactoring reduzieren

Software, die über einen längeren Zeitraum entwickelt oder erweitert wurde häuft sogenannte technische Schuld (technical debt) auf, sodass ein Software Refactoring in Erwägung gezogen werden sollte, um diese zu reduzieren.

Das kann man z.B. mit einer Wohnung vergleichen in der man über einen längeren Zeitraum wohnt, bei der aber zwischendurch keine Zeit gewesen ist aufzuräumen. Es sammeln sich Dinge an die man eigentlich nicht mehr braucht oder Ecken, in denen sich Kram ablagert, der dort nicht hin gehört.

Code aufräumen und verbessern

Beim Refactoring wird der Code aufgeräumt und verbessert, fehlende Dokumentationen ergänzt, ausgelassene Tests geschrieben und somit die Test-Abdeckung erhöht. Eventuelle unterwegs eingebaute “Abkürzungen” werden sauber gelöst, bevor diese zu Schwierigkeiten bei der Weiterentwicklung führen.

Dadurch wird die Software robuster, die Weiterentwicklung einfacher und somit günstiger. Durch das investierte Budget für das Refactoring spart man dadurch unter anderem idealerweise später beim Entwicklungsbudget etwas ein.

Gerade bei Produkten oder Anwendungen, die über einen längeren Zeitraum genutzt werden, sollte fortlaufend ein gewisses Budget für das Refactoring vorgesehen und investiert werden.

IST-Analyse / SOLL Konzept

Ob ein Upgrade, ein Refactoring oder eine Neuentwicklung geplant ist, am Anfang steht immer die Erstellung einer IST Analyse und eines SOLL Konzepts. Nachdem wir eine Inventur gemacht haben, schlagen wir mögliche Lösungsoptionen vor und erläutern bei Bedarf die Vor- und Nachteile.

  • Analyse
  • Konzeption
  • Vorbereitung
  • Testing
  • Programmierung
  • Import
  • Deployment

Am Anfang steht immer die Erstellung einer IST Analyse und eines SOLL Konzepts

Neben der Anwendung selbst müssen beispielsweise bei einem Major-Upgrade auch zusätzlich installierte Komponenten oder Module berücksichtigt werden. Das Upgrade kann dazu führen, dass bisher genutzte Zusatz-Komponenten der Anwendung nicht mehr zur Verfügung stehen oder durch Alternativen ersetzt wurden. In dem Fall kann die Aktualisierung aufwändiger ausfallen oder die Daten-Übernahme muss vielleicht genauer geplant werden.

Bevor der Lebenszyklus Ihrer Major-Version abläuft, erstellen wir bei Bedarf eine Aufwandsabschätzung zur Aktualisierung der Software. Dabei berücksichtigen wir, welche Funktionen und Module bisher genutzt wurden und ob auch für diese entsprechende Aktualisierungen bereit stehen. Andernfalls schlagen wir Alternativen vor und beraten Sie in Bezug auf die möglichen Optionen.

Ist die Entscheidung klar, welche Art der Software Modernisierung oder Relaunch am zielführendsten ist, wird die Umsetzung & Konzeption geplant. Hierfür erstellen wir für die anstehenden Aufgaben entsprechende Tickets in unserer Projektverwaltungssoftware. In den Tickets ist jeweils genau beschrieben, was im einzelnen zu tun ist und etwaige Abhängigkeiten können definiert werden.

Sie dienen dann als Grundlage für Entwickler und Systemadministratoren und spiegeln im Verlauf der Umsetzung den Fortschritt wieder.

Vorbereitung zur  Softwaremodernisierung

Als Vorbereitung einer Software Modernisierung wird klassischerweise eine Kopie der aktuellen Software auf einem eigenen Entwicklungsserver oder Staging-System installiert, damit die Anpassungen ohne Komplikationen für das Produktivsystem vorgenommen werden können. So kann auch später die Abnahme aller Anpassungen und Modernisierungen durch Sie selbst erfolgen, ohne den Produktivbetrieb zu beeinträchtigen.

Testing, der Qualitätsfaktor für Softwareprojekte


Zunächst wird die Software dann mit Tests ausgestattet, da bei veralteter Software oftmals keine oder nur wenige Tests zu finden sind. Dies erhöht die sogenannte Testabdeckung, ein entscheidender Qualitätsfaktor für Softwareprojekte und -produkte. Dadurch können auch bereits vorhandene Fehler gefunden und behoben werden. Da bei einem Software-Upgrade auch oftmals bestehende Funktionen angefasst werden kann durch die Tests dann sichergestellt werden, dass diese weiterhin funktionieren und alle Abhängigkeiten bestehen bleiben. Dadurch wird die Wartbarkeit und Qualität des Codes deutlich angehoben.

Umsetzung und Programmierung

Im nächsten Schritt geht es an die Umsetzung und Programmierung, welche mit einer statischen Code-Analyse, der Quellcode Überprüfung, beginnt. Bei dieser Analyse werden z.B. veraltete Funktionen, fehlende Namespaces, falsche Namensgebung und weitere Fehler im Code identifiziert. Darauf basierend kann der Code dann überarbeitet und modernisiert werden. Wenn der Code mit der gewünschten Version des Frameworks oder CMS kompatibel ist, mit dem die Software entwickelt wurde, kann auch ein Upgrade vorgenommen werden.

Bei der Durchführung der Modernisierung kann unbenutzter Code ermittelt und entfernt und die Performance des Codes verbessert werden.

Import alter Daten und Testing

Sind schließlich alle Arbeiten abgeschlossen werden die  alten Daten aus dem Produktiv-System importiert, die sich seit Beginn der Arbeiten verändert haben. An diesem Punkt wird also der neue Code mit den alten Daten “verheiratet” und die aktualisierte Software ist einsatzbereit.

Danach kann die Abnahme durch den Kunden auf dem Staging-System erfolgen.

Import alter Daten und Testing

Beim Deployment, dem Ausrollen oder Aktivieren der neuen Version auf dem Produktivsystem wird schließlich die neue Version der Software allen Benutzer der Anwendung zur Verfügung gestellt. Dies geschieht zu einem vorher vereinbarten Zeitpunkt und beeinträchtigt den Arbeitsablauf nicht. Normalerweise bekommen Anwender von der Aktualisierung gar nichts mit, sofern sich nicht absichtlich Aussehen oder Funktionsumfang geändert haben.

Damit ersichtlich wird, was in der neuen Version der Software an zusätzlichen Funktionen oder Verbesserungen zur Verfügung steht, sind diese im sogenenannten Change-Log, also einer Auflistung von Veränderungen aufgeführt.