Relaunch

Software Modernisierung

Altsysteme laufen wieder rund dank einem Software Relaunch​

Sowohl Technologien, als auch die Konzepte bei der Entwicklung von Web-Anwendungen und webbasierter Software entwickeln sich stetig weiter und haben in den letzten Jahre enorme Sprünge gemacht. Waren früher gewisse Konzepte, Abläufe und Architekturen nur den Hochsprachen wie JAVA oder C vorbehalten, sind diese auch längst in der Webentwicklung angekommen.

Gerade im Bereich der Geschäftsanwendungen ist eine webbasierste Software mit modernen Funktionen in der Regel die beste Wahl. Überall verfügbar trotz hoher Sicherheitsstandards, parallele Nutzung, Vernetzung mit anderen Systemen über Schnittstellen, Echtzeit Informationen, nutzbar ohne extra Installation und einspielen von Aktualisierungen sowohl auf Computer, Tablet oder Smartphone, das sind nur einige der Vorteile gegenüber klasssichen Unternehmensanwendungen.

Allerdings muss jede Software gewartet und mit wichtigen Aktualisierungen versorgt werden, damit diese Altsysteme nach einem Software Relaunch wieder rund laufen. Hier profitiert man bei webbasierter Software von der Server/Client Architektur dank der die Software zentral auf dem Server gewartet wird, und auf den Systemen der Nutzer keine Aktionen erforderlich sind.

Update & Upgrade

Verschiedene Arten der Software Modernisierung

Man unterscheidet bei der Modernisierung von Software zwischen unterschiedlichen Arten.

Auf der einen Seite gibt es die Aktualisierung bestehender Software durch sogenannte Updates oder Upgrades. Auf der anderen Seite steht die sukzessive Modernisierung von Anwendungen durch Code-Analyse und Verbesserungen. Bei diesem Umgestalten spricht man vom Software-Refactoring. Wird eine bestehende Software komplett durch eine neue ersetzt, so spricht man eher von einer Neuentwicklung.

Gib hier deine Überschrift ein

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 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 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

Software Refactoring

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. Das kann man vielleicht 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 aufgräumt und verbessert, ausgelassene Tests geschrieben und somit die Test-Abdeckung erhöht und vielleicht unterwegs eingebaute “Abkürzungen” sauber gelöst, bevor diese zu Schwierigkeiten bei der Weiterentwicklung führen. Oder es kann neben Reduzierung von Komplexität auch fehlende Dokumentation ergänzt werden.

Dadurch wird häufig die Software robuster und 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.

Analyse & KonZept

IST-Analyse / SOLL Konzept

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

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.

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.

Konzeption

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.

2

3

Vorbereitung zur Modernisierung

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.

Software Testing

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.

4

5

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.

6

7

Deployment

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.