M. Sc. Jacob Krüger
Institut für Technische und Betriebliche Informationssysteme
Es wurde keine Person definiert.
Completed projects
EXtracting Product Lines from vAriaNTs (EXPLANT II)
Duration: 01.09.2019 bis 28.02.2022
Eine Software-Produktlinie (SPL) ermöglicht die systematische Verwaltung einer Menge von wiederverwendbaren Softwareartefakten und damit die effiziente Generierung verschiedener Varianten einer Software. In der Praxis erstellen Entwickler jedoch häufig Softwarevarianten ad-hoc, indem sie Softwareartefakte kopieren und an neue Anforderungen anpassen (Clone-and-Own). Die hierbei fehlende Systematik und Automatisierung macht die Wartung und Weiterentwicklung der Varianten oft zeitaufwendig und fehleranfällig. Wir schlagen daher eine schrittweise Migration von geklonten Softwarevarianten in eine kompositionale (d.h. modular aufgebaute) SPL vor.
In der ersten Projektphase konnten wir bereits beachtliche Ergebnisse bei der Varianten-erhaltenden Transformation und den entsprechenden Analysen auf Modell- und Codeebene erzielen. In der zweiten Phase wollen wir nun auf den daraus gewonnenen Erkenntnisse aufbauen. Dies sind im Besonderen: (1) Eine nur auf Code-Klon Detektion basierende automatisierte Migration erzeugt keine kohärenten Softwareartefakte mit einer bestimmten Funktionalität. (2) Einige potentielle Kooperationspartner hatten Bedenken ihre Systeme zu migrieren, da sie die Einführung neuer Fehler befürchten. (3) Annotative SPL scheinen weniger fehleranfällig und somit robuster gegenüber Änderungen zu sein, als bisher angenommen.
Aufgrund der Probleme mit industriellen Partnern (2) kamen wir zu dem Schluss, dass weitere Forschungen, insbesondere zur Qualitätssicherung von migrierten SPL, Überführungskosten und Eigenschaften von Softwareartefakten notwendig sind. Wir wollen daher untersuchen, welche Kostenfaktoren bei der Überführung und beim Einsatz von SPL eine Rolle spielen und wie stark deren Einfluss jeweils ist. Weiterhin planen wir Qualitätsmetriken für migrierte SPL aufzuzeigen. In der ersten Projektphase haben wir bereits einen teil-automatisierten Migrationsprozess vorgeschlagen (1), welchen wir nun weiter ausbauen und neue Analysen integrieren wollen. Dabei wollen wir vor Allem untersuchen, ob sich nützliche Informationen, insbesondere über die Intention der Entwickler, aus weiteren Quellen, als dem Code beziehen lassen. Vielversprechende Ansätze sind hier die Analyse von Versionsverwaltungssystemen und die Analyse von existierenden Verhaltens- und Architektur-Modellen eines Systems. Des Weiteren haben wir vor, zur Steigerung des Automatisierungsgrads weitere Refactorings, wie z.B. "Move Method" einzusetzen. Um die Struktur und damit auch die Wartbarkeit der resultierenden Modularisierung zu verbessern, planen wir außerdem unseren Migrationsprozess auf Multi-Software-Produktlinien zu erweitern. Dadurch ließen sich einzelne Funktionalitäten eines Systems besser auftrennen. Ebenfalls wollen wir untersuchen, welche Granularität für migrierte Softwareartefakte am besten geeignet ist und ob annotative Verfahren (3) für migrierte SPL Vorteile gegenüber kompositionalen Verfahren bringen können.
Recommending Cloned Features for Adopting Systematic Software Reuse
Duration: 01.05.2018 bis 30.04.2021
Organizations heavily rely on forking (or cloning) to implement customer-specific variants of a system. While this approach can have several disadvantages, organizations fear to extract reusable features later on, due to the corresponding efforts and risks. A particularly challenging, yet poorly supported, task is to decide what features to extract. To tackle this problem, we aim to develop an analysis system that proposes suitable features based on automated analyses of the cloned legacy systems. To this end, we are concerned with a several closely related research areas: Cost modeling for software product lines; empirical studies on system evolution, processes, and human factors; as well as concepts to derive reusable features from clones based on, for example, feature location and code clone detection.
- Migration and extraction of software product lines
- Feature-oriented software development
- Cost estimation
- Literature analysis
- Empirical software engineering