Software Modernisierung
Altsysteme laufen wieder, 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 Relaunch
Kleinere Fehlerbehebungen, sowie Sicherheitsupdates, die von den Entwicklern der Software, nach dem Bekanntwerden einer Sicherheitslücke, bereitgestellt werden.
Upgrades erhalten neue Funktionen einer Software. Dieses stellt den aktuellen Stand der Weiterentwicklung einer Anwendung dar.
Die sukzessive Modernisierung von Anwendungen durch Code-Analyse und Verbesserungen.
Bei Bedarf unterstützen wir Sie durch die kontinuierliche Wartung. Dabei versorgen wir die Anwendungen mit Sicherheitsupdates und halten die Software so immer auf dem aktuellsten Stand.
Software 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
Major Updates
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).
Technische Schuld durch ein Refactoring reduzieren
Code aufräumen und verbessern
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.
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.
Kontakt aufnehmen
Erzählen Sie von Ihrer Software und wir beraten Sie gerne!
Adrien
Geschäftsführer & Agiler Coach
Johannes
Product Owner
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.