Phasen eines Software-Migrationsprojektes

Für die Planung und Umsetzung eines Software-Migrationsprojekts können verschiedene Phasen identifiziert werden. Dieser Beitrag soll - ohne Anspruch auf Vollständigkeit - einen Eindruck von der zu handhabenden Komplexität vermitteln.

Kategorie: Migration · 1/6/2024

Phasen eines Software-Migrationsprojektes

Dies ist der dritte Teil einer Serie zum Thema Migration, den Einstieg finden Sie hier.
 
Ist die Entscheidung für eine Software-Migration gefallen, können für die Umsetzung folgende Phasen identifiziert werden, die jeweils eine sorgfältige Planung, Analyse und Umsetzung erfordern. Jeder der genannten Punkte (ohne Anspruch auf Vollständigkeit) weist bereits in sich eine hohe Komplexität auf und bedarf meist einer Untersetzung:
 
Verständnis für das Ausgangs- (Legacy-) System schaffen: Bevor eine Migration beginnt, ist es wichtig, ein umfassendes Verständnis für das bestehende Legacy-System zu entwickeln. Dies beinhaltet die Erfassung von Systemarchitektur, Datenstrukturen, Schnittstellen und Abhängigkeiten über vorhandene Dokumentation und / oder Reverse Engineering. Des Weiteren sind die Probleme im Detail zu analysieren, die zur Entscheidung einer Ablösung des Alt-Systems geführt haben.
 
Grundlegende Strategie festlegen:
  • Ist eine Standard-Software möglich (für Nicht-Kerndomänen)?
  • Interne / externe Entwicklung: Die Entscheidung, ob die Migration intern oder extern, z.B. durch einen Dienstleister, durchgeführt werden soll.
  • System-Umgebung: Wie soll sich die neue Anwendung in die Anwendungslandschaft des Unternehmens einfügen, welcher Tech-Stack soll verwendet werden?
  • Konzeption: Welche Teamzusammensetzung ist für die Konzeption sinnvoll? Ist hier ein Dienstleister mit einzubeziehen?
  • Deadlines: Welche Zeitvorgaben müssen zwingend eingehalten werden, da z.B. Lizenzen o. Support für die  existierende Lösung ablaufen oder neue gesetzliche Vorgaben gültig werden?
  • Cost-/Benefit Analyse: Bewertung der Kosten und des Nutzens im Zusammenhang mit der Migration.
  • Risikoanalyse: Identifikation und Bewertung möglicher Risiken im Zusammenhang mit der Migration.
  • Wie soll die neue Lösung aktiviert werden?: Festlegung der konkreten Vorgehensweise für die Migration, z.B. schrittweise oder Big-Bang.
  • Seiteneffekte klären: Müssen andere Systeme nach erfolgreicher Migration angepasst werden (z.B. aufgrund geänderter Datenformate, Codierungen etc.)?
  • Schulung: Sind Weiterbildungsmaßnahmen in bestimmten Bereichen / Werkzeugen für das Team, welches die Migration durchführen soll, erforderlich?

 

Konzeption im Detail:
  • Anwendung: Prüfung der Wiederverwendbarkeit existierender Bausteine, Festlegung eines neuen Tech-Stacks und Entwicklung eines zukunftssicheren Architektur-Konzepts, unter Vermeidung überflüssiger Komplexität.
  • Strategie: Kommt eine Konversion bzw. Kapselung (von Teilen) des existierenden Legacy-Systems in Frage (siehe "Überlegungen vor einem Migrationsvorhaben")
  • UI: Ist das Benutzerinterface direkter Bestandteil der Anwendung oder eine Extra-Applikation (z.B. eine App oder Single Page Application). Welche neuen Anforderungen gibt es an die UI, wie z.B. Barrierefreiheit? 
  • Daten: Ist eine Datenmigration notwendig, wie soll diese erfolgen?
  • Systemumgebung: Bereitstellung einer Entwicklungs-, Test-, ggf. Abnahme- und der finalen Produktionsumgebung
  • Schnittstellen:  Welche externen Schnittstellen sind für die Anwendung relevant, stehen diese direkt zur Verfügung oder müssen diese ggf. für Entwicklung / Test emuliert werden? Muss spezielle Hardware eingebunden werden? Wie soll dies erfolgen? 
  • Sicherheit: Gibt es spezielle Sicherheitserfordernisse, die z.B. bestimmte Verschlüsselungsverfahren etc. erfordern?
  • Vertikale Funktionalitäten: Wie sollen Logging, Systemüberwachung etc. realisiert werden?
  • Skalierung: Festlegung der Performance und Skalierungs-Anforderungen. Wie soll skaliert werden, vertikal oder horizontal? Unterstützt die gewählte Architektur horizontale Skalierung?
  • PoC: Identifizieren der notwendigen "Proof of Concept" Lösungen und der Notwendigkeit eines Pilotsystems.
  • Projektmanagement: Festlegung der notwendigen Ressourcen, Budget, Controlling, zeitliches Vorgehen und Projektdauer. Festlegung des bei der Entwicklung zu verwendeten Vorgehenskonzepts (z.B. Scrum). Einholung von entsprechenden Angeboten, wenn externe Partner mit einbezogen werden sollen.
  • Deployment: Wie kann eine schnelle, effiziente (iterative) Bereitstellung in die Zielumgebung erfolgen, welche CI / CD Methoden sollen ggf. eingesetzt werden, welche Werkzeuge sind nötig?
  • Team-Zusammenstellung: Ist ein Team ausreichend, wer übernimmt welche Rolle im Team (Entwicklung, DevOps, Projektleitung, ..)? Spezielle Vorgehensmodelle wie Scrum etc. erfordern ggf. eigene Rollen (z.B. Scrum-Master..)
  • Partner: Welche externen Partner müssen einbezogen werden, wie erfolgt hier die Kommunikation?
  • Kommunikation: Wie erfolgt die Kommunikation im Team bzw. zwischen Team und Anwendern? Welche Tools werden eingesetzt (Bugtracker, Produktivitätstools wie Slack oder Teams)? Welche Notwendigkeiten ergeben sich aus dem gewählten Vorgehemsmodell (z.B. Daily Scrum)?
  • Dokumentation: Wie erfolgt die Projektdokumentation (für Entwickler / Anwender)?
  • Test: Welche Testverfahren werden eingesetzt (automatisierte Code-Tests, UI-Tests, Integrationstests, ..). Ggf. müssen hier aufgrund des gewählten Vorgehensmodells (-> Test Driven Development) zusätzliche Ressourcen eingeplant werden.
  • Abnahme: Wer ist für die Abnahme des Systems zuständig, welche Kriterien müssen erfüllt sein, damit die Abnahme erfolgreich sein kann?
  • Compliance: Welche Richtlinien müssen ggf. eingehalten werden (z.B. Barrierefreiheit, DSGVO, ..), wer überprüft die Einhaltung?
  • Änderungen: Wie wird mit Änderungen von Anforderungen während der Entwicklung umgegangen?
  • Datenschutz: Kann während der Entwicklung mir Echtdaten getestet werden oder handelt es sich hier ggf. um personenbezogene Daten, die ggf. z.B. anonymisiert werden müssen?

 

Zielsystem entwickeln:
  • Erstellen von "Proof of Concept" Lösungen für kritische Anwendungsbestandteile, besonders bei Hardware- und externen Softwareschnittstellen.
  • Entwicklung und Konfiguration des Zielsystems basierend auf den Anforderungen und Konzepten, die in der Konzeptionsphase erarbeitet wurden.
  • Iteratives Bereitstellen von Testsystemen (die bereits die Entwicklertests durchlaufen haben) um frühzeitig die Anwender mit einzubeziehen.
  • Vorbereiten von Werkzeugen zur Unterstützung des Migrations-/Freischaltungsprozesses, z.B. für die Migration der Daten.
  • Erstellung von notwendigen Skripts etc. für das iterative Deployment der Anwendung (z.B. Github Actions)
  • Laufendes Controlling um sicherzustellen, dass die Entwicklung nach Plan verläuft. 
  • Projektdokumentation

 

Abschließende Tests:
  • Umfassende Tests, einschließlich Integrationstests und Akzeptanztests, um sicherzustellen, dass das Zielsystem die erwartete Funktionalität bereitstellt.
  • Werden die Rahmenbedingungen hinsichtlich Performance und Skalierbarkeit eingehalten?
  • Prüfung auf alle Compliance-Vorgaben
  • Entspricht die Dokumentation den Vorgaben?
  • Durchführen von Sicherheitschecks, Penetration-Tests, falls erforderlich

 

Überwachung / Monitoring / Support:
  • Laufende Systemüberwachung um bei Abweichungen sofort eingreifen zu können, möglichst bevor es zu Auswirkungen für die Verfügbarkeit für Anwender kommt
  • Anwendersupport
 
Wichtig ist eine methodische Vorgehensweise mit minimalen Störungen für den operativen Betrieb.
 

Vierter Teil: Softwaremigration konkret: .NET -> .NET Core

Wir helfen gerne bei dieser komplexen Problematik!

*Datenschutz

Eine Weitergabe an Dritte findet grundsätzlich nicht statt, es sei denn, dass wir dazu gesetzlich verpflichtet sind. Sie können Ihre erteilte Einwilligung jederzeit mit Wirkung auf die Zukunft widerrufen. Im Falle des Widerrufs werden Ihre Daten umgehend gelöscht. Ihre Daten werden ansonsten gelöscht, wenn wir Ihre Anfrage bearbeitet haben oder der Zweck der Speicherung entfallen ist. Sie können sich jederzeit über die zu Ihrer Person gespeicherten Daten informieren. Weitere Informationen finden Sie in der Datenschutzerklärung.

Dr. Sven von Känel

Dr. Sven von Känel

Geschäftsführer, Ihr Ansprechpartner .NET Core / Angular

  • svk@evanto.de
  • 0941 / 94592-20

Über uns

Ein erfahrenes Entwicklerteam, dass mit Leib und Seele Software erstellt.

evanto logo

Kontaktdaten

Brunnstr. 25,
Regensburg

+49 (941) 94592-0
+49 (941) 94592-22

Statistik