Detailseite
Projekt Druckansicht

Evolute: Evolution von Softwaresystemen mittels erweiterbarer Sprachen und DSLs

Fachliche Zuordnung Softwaretechnik und Programmiersprachen
Förderung Förderung von 2015 bis 2019
Projektkennung Deutsche Forschungsgemeinschaft (DFG) - Projektnummer 270449797
 
Softwaresysteme unterliegen ständigen Änderungen und Wachstum. Es ist daher wenig überraschend, dass ein Großteil der Entwicklungszeit und Entwicklungskosten nicht in das initiale Design und die initiale Implementierung neuer Software fließt, sondern in die Wartung existierender Softwaresysteme. Eine Möglichkeit die Wartungskosten zu reduzieren, ist Software mittels domänspezifischer Sprachen zu realisieren. Eine domänspezifische Sprache (DSL) ist eine Programmiersprache, die speziell die Anwendungsdomäne ihrer Nutzer unterstützt indem Domänenkonzepte als Sprachkonstrukte angeboten werden. Wohlbekannte Beispiele von DSLs sind Zustandsautomaten zur Verhaltensmodellierung, XML zur Datenserialisierung, SQL zur Datenbankabfrage oder EBNF zum Parsen. DSLs ermöglichen Programmieren oftmals das direkte Abbilden von Domänenwissen auf Quellcode und umgekehrt, was die Erstellung, das Verständnis, die Sicherheit und die Wartung von domänspezifischen Programmen vereinfacht.Die überwiegende Mehrheit der existierenden Softwaresysteme wurde nicht durch DSLs realisiert. Stattdessen hat der langwährende Erfolg von C, C++ und Java zu großen prozeduralen und objektorientierten Systemen geführt, welche nicht von den Wartungsvorteilen von DSLs profitieren. In einer vorangegangen Machbarkeitsstudie haben wir demonstriert, dass erweiterbare Programmiersprachen als Basis für die Integration von DSLs in existierende Softwaresysteme dienen können. Wir verwendeten unsere eigene erweiterbare Variante von Java, genannt SugarJ, um Teile des Java Pet Stores und einen kleinen Teile der Eclipse Platform von Hand zu refaktorieren. Unsere Erfahrung zeigt, dass trotz der Wartungsvorteile von domänspezifischen Sprachen, die manuelle Migration von vorhandenem Code zu DSL-Code zu mühsam, fehleranfällig und arbeitsaufwendig ist um praktikable zu sein.In diesem Projekt untersuchen wir die Entwicklung von Konzepten und Werkzeugen zur semiautomatischen Integration moderner DSL-Technologien in existierende Softwaresysteme. Im Speziellen, gegeben die Definition einer DSL und den Quellcode eines existierende Softwaresystems, entwickeln wir Konzepte und Werkzeuge zur (i) automatischen Identifikation von potentiellen Anwendungspositionen der DSL im Quellcode durch die Analyse der DSL Definition, (ii) die Identifikation jener Anwendungspositionen welche die größte Relevanz für die Wartung haben, (iii) die semiautomatische Refaktorierung mittels partieller Inferenz des DSL-Codes aus dem original Code, (iv) die Feststellung des Grades der Integration einer DSL und (v) einer großangelegten Fallstudie, welche sicherstellt, dass die vorangegangen Konzepte und Werkzeuge hinreichend skalierbar, präzise und automatisiert arbeiten um praktikabel zu sein. Die von uns entwickelten Konzepte und Werkzeuge werden die sukzessive Integration von DSLs in existierenden Code ermöglichen und damit zum ersten Mal überhaupt die Vorteile von DSLs auf die Wartbarkeit von großen Softwaresystemen übertragen.
DFG-Verfahren Sachbeihilfen
Internationaler Bezug Niederlande
 
 

Zusatzinformationen

Textvergrößerung und Kontrastanpassung