Altsystem
Der Begriff Altsystem oder Legacy-System (englisch legacy system) bezeichnet in der Informatik eine etablierte, historisch gewachsene Anwendung im Bereich Unternehmenssoftware. Das englische Wort legacy („Erbschaft“) ist in diesem Kontext ein weitgehend wertfreier Fachbegriff, kann aber umgangssprachlich auch negativ im Sinne einer lästigen „Hinterlassenschaft“ oder „Altlast“ im übertragenen Sinne verwendet werden.
Innerhalb der Anwendungslandschaft eines Unternehmens sind es zumeist großrechnerbasierte Individualentwicklungen, die sich oft durch unzureichende Dokumentation, veraltete Betriebs- und Entwicklungsumgebungen, zahlreiche Schnittstellen und hohe Komplexität auszeichnen. Die dort anzutreffende zentrale Daten- und Funktionshaltung galt seit der Client/Server-Euphorie als überholt.
Diese Merkmale sind der Grund dafür, dass sich die Ablösung solcher Systeme oft deutlich über ein erwünschtes Lebensende hinauszieht. Sowohl in wirtschaftlichen Aufschwung- wie in Abschwungphasen wird oft repriorisiert, um die mit einer Ablösung verbundenen hohen Ausfallrisiken bzw. Umstellkosten zu umgehen, zumal der bloße Ersatz eines Legacy-Systems nicht mit einem direkten Mehrwert, sondern meist nur mit der Einsparung von kalkulatorischen Kosten (Kosten für temporären oder dauerhaften Ausfall) oder Opportunitätskosten (entgangene Umsätze wegen begrenzter Leistungsfähigkeit des Legacy-Systems) verbunden ist.
Grundsätzliches Problem bei der Ablösung von Legacy-Systemen ist der gewachsene Funktionsumfang. Auch wenn recht häufig ein weiträumiger Ersatz durch mächtige Standardsoftware stattfindet, verbleiben meist nicht abgedeckte Zusatzfunktionen und Schnittstellen. Das sind oft Alleinstellungsmerkmale der gewachsenen und über Jahrzehnte entwickelten Software, über die Standardsoftware nicht unbedingt verfügt. Oft ist eine Runderneuerung der Systeme schon deshalb schwierig, weil sie über die Historie hinweg nicht konsistent beschrieben wurden, zum Beispiel mit Anforderungen, Anwendungsfällen usw.
Der Einsatz serviceorientierter Architekturen bietet hier sinnvolle Ansätze, die Schnittstellenproblematik durch Einsatz von Konnektoren abzudecken. Dabei werden die auszutauschenden Systeme nach außen „gekapselt“, indem eine Zwischenschicht aus verschiedenen Quellsystemen eine gemeinsame Schnittstelle betreibt.
Siehe auch
Literatur
- Michael C. Feathers, Working Effectively with Legacy Code, 2009 (Effektives Arbeiten mit Legacy Code, 2010).