Projekt
DFG-Projekt: Befactoring und generisch kontrollierte Änderungen
- Projektleitung:
- Prof. Dr. Friedrich Steimann
- Status:
- abgeschlossen
- Laufzeit:
- 2014 - 2018
- fördernde Einrichtungen:
- Deutsche Forschungsgemeinschaft GEPRIS
Projektseite [externer Link]
Die Änderung von Software bringt regelmäßig Fehler darin ein. Diese müssen dann durch weitere Änderungen aufwendig korrigiert werden. Ziel des Antrags ist, Änderungen von Software dadurch zu kontrollieren, dass die beabsichtigten, primären Änderungen zwangsweise um sekundäre Änderungen ergänzt werden, die zur Korrektur der durch die primären Änderungen eingebrachten Fehler notwendig sind. Naturgemäß kann dies nur für solche Fehler erfolgen, die sich automatisiert feststellen lassen; im Rahmen des beantragten Vorhabens soll daher die Menge der korrigierbaren Fehler auf solche beschränkt werden, die sich durch eine (constraintbasierte) statische Prüfung aufdecken lassen. Der mit dem Antrag verfolgte Lösungsansatz für das Problem kontrollierter Änderungen soll insofern generisch sein, als sich die Berechnung der notwendigen sekundären Änderungen vollständig aus der Spezifikation der Regeln ableiten lässt, die für die statische Prüfung der Korrektheit herangezogen werden. Dadurch lässt sich der Ansatz mit geringem Aufwand für alle Sprachen implementieren, die über solche Regeln verfügen. Dazu zählen insbesondere domänenspezifische Sprachen, für die Regeln deklarativ (beispielsweise mittels der Object Constraint Language) spezifiziert sind. Aus Nutzersicht haben kontrollierte Änderungen Transaktionscharakter: Sie werden entweder ganz oder gar nicht durchgeführt. Dabei braucht die Nutzerin nur die Teile einer kontrollierten Änderung zu spezifizieren, die ihrer Änderungsabsicht entsprechen; die zusätzlich notwendigen Änderungen werden ihr zur Auswahl bzw. Bestätigung vorgeschlagen. Kontrollierte Änderungen ergänzen aber auch auf natürliche Weise die von vielen integrierten Entwicklungsumgebungen angebotenen Funktionen zur automatischen Vervollständigung und Reparatur von Software, sofern die von ihnen vorgeschlagenen Änderungen selbst Fehler in die Software einbringen (was regelmäßig der Fall ist): Hier werden die gemachten Vorschläge einfach um die notwendigen sekundären Änderungen ergänzt. Mit dem sog. Befactoring (als Spezialfall der kontrollierten Änderung) soll schließlich ein Ansatz populär gemacht werden, mit dessen Hilfe Verhaltensänderungen einer Software gewünschte nichtfunktionale Eigenschaften der Software garantiert erhalten. Befacotring stellt damit die Umkehrung des Refactoring dar, bei dem das Verhalten erhalten bleiben soll. Eine leicht als nützlich zu erkennende Form des Befactoring erlaubt Verhaltensänderungen von Software, ohne dabei einmal zugesicherte und nachgewiesene Sicherheitseigenschaften aufs Spiel zu setzen. Die Umsetzung der kontrollierten Änderungen soll constraintbasiert erfolgen.