Benutzerspezifische Werkzeuge

Software-Reengineering

Software-Reengineering (SRE) umfasst die Analyse von Anwendungssystemen und die anschließende grundlegende Überarbeitung der Systeme, um ihre Qualität signifikant zu verbessern. Analog zum Software Engineering erfolgen die Analyse und die Überarbeitung ingenieursmäßig, insbes. unter Einsatz geeigneter Vorgehensweisen, Methoden und Werkzeuge.

Im Rahmen der Software-Wartung wird in der Regel die Qualität der Anwendungssysteme nicht verbessert, sondern im Gegenteil verschlechtert. Dadurch steigen die Wartungskosten für ein Altsystem im Laufe der Zeit weiter an und es wird immer schwieriger, eine adäquate Qualität des Systems zu gewährleisten. Weitere Probleme bezüglich der „Legacy Systems“ ergeben sich, wenn ein Teil seiner Plattform nicht mehr zur Verfügung steht, oder Anpassungen an geänderte Rahmenbedingungen (einschließlich einer neuen Gesetzeslage) erforderlich sind. Als Lösung bleibt - neben der zumeist teureren Alternative Neuentwicklung bzw. Ersatz durch ein Standardsoftwaresystem - die Durchführung eines SRE-Projekts. Im Rahmen des Projekts werden die Qualität eines Anwendungssystems in bestimmter, zuvor festgelegter Hinsicht gezielt und systematisch verbessert und/oder die entsprechenden „Teile“ des Systems an eine geänderte Umgebung bzw. geänderte Rahmenbedingungen angepasst.

Welche Tätigkeiten genau unter das SRE einzuordnen sind, wird unterschiedlich gesehen. Insbesondere wird vereinzelt die Möglichkeit in Betracht gezogen, im Rahmen eines SRE-Projekts auch funktionale Änderungen bzw. Erweiterungen vorzunehmen. Mehrheitlich wird allerdings vor einer solchen Vorgehensweise abgeraten, insbesondere, da das Projektrisiko steigt. Bleibt die Funktionalität unverändert, ist außerdem das Testen des überarbeiteten Systems mit Regressionstests möglich.

Uneinigkeit herrscht auch darüber, ob ein SRE-Projekt zwingend die Überarbeitung des Systems umfassen muss, oder ob auch die Analyse des Systems einschließlich der anschließenden Anpassung/Aktualisierung der Artefakte ohne eine Veränderung des Codes bereits als SRE zu bezeichnen ist. Insofern ist die Abgrenzung zum Reverse Engineering nicht eindeutig und wird die Frage der zwingenden Durchführung des Forward Engineering in SRE-Projekten unterschiedlich beantwortet.

Als Ausprägungen des SRE werden entsprechend der klassischen Drei-Schicht-Softwarearchitektur das Oberflächen-Reengineering, das Daten-Reengineering und das Reengineering der Programmlogik unterschieden; weitere Ausprägungen bilden das Reengineering der Softwarearchitektur sowie das Redesign.

Beim Oberflächen-Reengineering steht die Verbesserung der Benutzerfreundlichkeit im Vordergrund. Zunächst wurden in erster Linie zeichenorientierte Hostanwendungen überarbeitet, um den Bedienungskomfort von PC-Anwendungssystemen (Fen­stertechnik, Be­dienung mit Maus etc.) zu erreichen. Inzwischen stehen andere SRE-Projekte im Vordergrund; insbesondere wird die moderne Webtechnologie genutzt, um standardisierte Oberflächen zu schaffen, Funktionen verschiedener Anwendungssysteme in einer Oberfläche zu integrieren und/oder die Nutzung von Anwendungssystemen außerhalb der Organisation bzw. auch mobil zu ermöglichen.

Das Daten-Reengineering umfasst die Überarbeitung der Datenzugriffsschicht und der Datenspeicherung. Letztere kann unverändert bleiben, wenn die Qualität der Zugriffsschicht z.B. in Bezug auf die Verwendung von Bezeichnern verbessert werden soll. Häufig erfolgt aber die Überarbeitung der Zugriffsschicht und der Datenspeicherung „parallel“, um einen Teil der Daten oder alle Daten des Anwendungssystems zu einem anderen Datenspeicher zu migrieren, z.B. von Dateien zu einem Datenbanksystem oder von einem Datenbanksystem zu einem anderen. Diese Migration kann durch die Vorteile der neuen Datenspeicherung, eine Strategie der Organisation bezüglich des bzw. der eingesetzten Datenbanksysteme oder dadurch motiviert sein, zuvor isolierte Datenbestände bzw. Anwendungen zu integrieren.

Mit dem Reengineering der Programmlogik können sehr unterschiedliche Ziele verbunden sein, u.a.:

  • die Portierung eines Software-Systems,
  • die Veränderung („Restrukturierung“) des Quellcodes, um die Qualität des Codes zu verbessern (z.B. zur Optimierung der Laufzeit oder zur Steigerung der Änderbarkeit und damit zur Senkung der laufenden Wartungskosten, u.a., indem redundante Funktionen eliminiert oder Programmierrichtlinien umgesetzt werden),
  • die Erzeugung wiederverwendbarer Komponenten,
  • die Realisierung von zusätzlichen Einstiegs- und Ausstiegspunkten („Wrappen“), um Funktionen des Systems für neue Nutzungen (z.B. im Web) zur Verfügung zu stellen.

Ein Reengineering der Architektur dient der Verbesserung der Qualität des Systems und/oder der Anpassung der Architektur und ihrer Eigenschaften an geänderte Anforderungen. Gleiches gilt für das Redesign, bei dem der gesamte Systementwurf restrukturiert wird. Motivation dafür bildet zurzeit insbesondere die Migration eines Systems in eine Serviceorientierte Architektur (SOA).

Entsprechende Projektziele können es erforderlich machen, dass mehrere Ausprägungen für ein SRE-Projekt relevant sind.

Literatur

Baumöl, Ulrike ; Borchers, Jens ; Eicker, Stefan ; Hildebrand, Knut ; Jung, Reinhard ; Lehner, Franz: Ein­ord­nung und Ter­minologie des Software Reengineering. In: Informa­tik-Spektrum (1996), Nr. 4, S. 191-195.

Müller, Bernd: Reengineering – Eine Einführung.  Stuttgart : B.G. Teubner, 2002.

Seacord, Robert C.; Plakosh, Daniel; Lewis, Grace A.: Modernizing Legacy Systems. Boston : Pearson Education , 2003.

Sneed, Harry M.: Aufwandschätzung von Software-Reengineering-Projekten. In: Wirtschaftsinformatik (2003), Nr. 6,  S. 599-610.

Zuletzt bearbeitet: 31.08.2011 14:21
Letzter Abruf: 19.01.2017 07:38
Artikelaktionen