Analysis of Legacy Code (Analyse von Legacy Code)

21 Aug 2014 , first release: 19 Mar 2014

Meta

  • Author: Christian Wenzlick
  • State: completed
  • Study programme: Media Informatics (Distance Study Programme)
  • Degree: Bachelor (B. Sc.)
  • Thesis report
  • Source code

Thesis

Unter Legacy Code wird (neben anderen Definitionen) Code verstanden, der sich durch unerwünschte (jedoch in Praxis häufig anzutreffende) Eigenschaften auszeichnet: wenige bis keine Tests, kaum dokumentiert, nicht nachvollziehbar strukturiert, hohe Komplexität, schwer verständlich.

Legacy Code in diesem Verständnis ist dabei nicht auf Altsysteme (Legacy Systeme) beschränkt, sondern kann dabei in allen Bereichen des Software-Engineerings auftreten, z.B. in alten Anwendungen des Finanzsektors, in modernen ERP Systemen oder auch in allen Formen von Open Source Software.

Trotz dieses relativ bekannten Phänomens wird die Softwarepflege und Änderung/Erweiterung von Legacy Code allerdings recht selten betrachtet. Viele Werkzeuge und Analysetechniken zielen eher auf lehrbuchartigen (Non-Legacy) Code ab und offenbaren bei der Arbeit mit Legacy Code schnell Grenzen ihrer Praktikabilität.

Ziel vorliegender Bachelorarbeit ist es, bestehende Analyseansätze und Softwaremetriken kritisch zu beleuchten, um Grenzen der Praktikabilität bei Legacy Code an praktischen Fallbeispielen aufzuzeigen. Dabei soll die Analyse besonderes Augenmerk darauf legen, wie sich Entwickler auch in Legacy Code Basen hoher Komplexität deutlich besser zurecht finden bzw. Problemstellen schnell identifizieren könnten. Die Arbeit soll sich dabei auf frei verfügbare Open Source Software und eine Programmiersprache freier Wahl beschränken. Die Wahl der Programmiersprache ist zu einem frühen Zeitpunkt der Arbeit geeignet zu begründen. Kommerzielle Produkte können ggf. in der Analyse berücksichtigt werden, sollen jedoch nicht für die Lösung herangezogen werden.

Hierzu sind im Detail folgende Teilaufgaben zu bearbeiten und zu dokumentieren:

  • Analyse bestehender und frei verfügbarer Metriken und Analyseverfahren für Open Source Software mit Legacy Software Charakter.
  • Aufzeigen der Grenzen dieser Metriken und Analyseverfahren vor dem Hintergrund häufig anzutreffender praktischer Erfordernisse und Gegebenheiten.
  • Geeignete Metriken und Analyseverfahren für Legacy Code ableiten bzw. (sofern nicht vorhanden) vorschlagen.
  • Darauf aufbauend mögliche Visualisierungskonzepte für Code Basen mit Legacy Charakter entwickeln.
  • Es soll eine Architektur für ein Werkzeug entstehen und prototypisch implementiert werden, dass es erlaubt Code auf seine Komplexität zu analysieren und die Ergebnisse in geeigneter Weise dem Entwickler zu visualisieren oder auf andere Art geeignet zur Verfügung zu stellen.
  • Die Funktionstüchtigkeit des Analysewerkzeugs ist für einen Prototypen geeignet nachzuweisen.
  • Analysewerkzeug soll ferner stichprobenartig an mehreren großen frei verfügbaren Open Source Codebasen (bspw. gehostet von Github) evaluiert werden, entsprechende Erkenntnisse sind geeignet aufzubereiten.