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:
-
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?
-
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?
Wichtig ist eine methodische Vorgehensweise mit minimalen Störungen für den operativen Betrieb.