13 research outputs found

    Semi-Automatische Deduktion von Feature-Lokalisierung während der Softwareentwicklung: Masterarbeit

    Get PDF
    Despite extensive research on software product lines in the last decades, ad-hoc clone-and-own development is still the dominant way for introducing variability to software systems. Therefore, the same issues for which software product lines were developed in the first place are still imminent in clone-and-own development: Fixing bugs consistently throughout clones and avoiding duplicate implementation effort is extremely diffcult as similarities and differences between variants are unknown. In order to remedy this, we enhance clone-and-own development with techniques from product-line engineering for targeted variant synchronisation such that domain knowledge can be integrated stepwise and without obligation. Contrary to retroactive feature mapping recovery (e.g., mining) techniques, we infer feature-to-code mappings directly during software development when concrete domain knowledge is present. In this thesis, we focus on the first step towards targeted synchronisation between variants: the recording of feature mappings. By letting developers specify on which feature they are working on, we derive feature mappings directly during software development. We ensure syntactic validity of feature mappings and variant synchronisation by implementing disciplined annotations through abstract syntax trees. To bridge the mismatch between change classification in the implementation and abstract layer, we synthesise semantic edits on abstract syntax trees. We show that our derivation can be used to reproduce variability-related real-world code changes and compare it to the feature mapping derivation of the projectional variation control system VTS by Stanciulescu et al.Trotz umfangreicher Forschung zu Software-Produktlinien in den letzten Jahrzehnten ist Clone-and-Own immer noch der dominierende Ansatz zur Einführung von Variabilität in Softwaresystemen. Daher stehen bei Clone-and-Own immer noch die gleichen Probleme im Vordergrund, für die Software-Produktlinien überhaupt erst entwickelt wurden: Die konsistente Behebung von Fehlern in allen Klonen und die Vermeidung von doppeltem Implementierungsaufwand sind äußerst schwierig, da Ähnlichkeiten und Unterschiede zwischen den Varianten unbekannt sind. Um hier Abhilfe zu schaffen, erweitern wir die Clone-and-Own-Entwicklung mit Techniken aus der Produktlinien-Entwicklung zur gezielten Synchronisierung von Varianten, sodass Entwickler ihr Domänenwissen schrittweise und unverbindlich integrieren können. Im Gegensatz zu nachträglich arbeitenden Feature-Mapping-Recovery- oder auch Mining-Techniken, leiten wir Zuordungen von Features zu Quellcode direkt während der Softwareentwicklung ab, wenn konkretes Domänenwissen vorhanden ist. In dieser Arbeit entwickeln wir den ersten Schritt zur gezielten Synchronisation von Varianten: die Aufzeichnung von Feature-Mappings. Indem Entwickler spezifizieren an welchem Feature sie arbeiten, leiten wir Feature-Mappings direkt während der Softwareentwicklung ab. Wir stellen die syntaktische Korrektheit von Feature-Mappings und der Synchronisation von Varianten sicher, indem wir disziplinierte Annotationen mithilfe von abstrakten Syntaxbäumen implementieren. Um die Diskrepanz der Klassifizierung von Änderungen zwischen der Implementierungs- und der Abstraktionsschicht zu überbrücken, synthetisieren wir Semantic Edits auf abstrakten Syntaxbäumen. Wir zeigen, dass unsere Ableitung von Feature-Mappings in der Lage ist reale Codeänderungen zu reproduzieren und vergleichen sie mit der Feature-Mapping-Ableitung des Variationskontrollsystems VTS von Stanciulescu et al

    Maßgeschneiderte Produktlinienextraktion

    Get PDF
    Industry faces an increasing number of challenges regarding the functionality, efficiency and reliability of software. A common approach to reduce the linked development effort and respective costs are model-based languages, such as Matlab/Simulink and statecharts. While these languages help companies during development of single systems, the high demand for customized software is an increasing challenge. As a result, variants with high similarity and only slight differences have to be developed in an efficient way. As reimplementation of complex functionality for each variant is no option, copies of existing solutions are often modified for new customers. In the short-run, this so-called clone-and-own approach allows to save costs as existing solutions can easily be reused. However, this approach also involves risks as the relations between the copied systems are rarely documented and errors have to be fixed for each variant in isolation. Thus, with a growing number of potentially large system copies, the resulting maintenance effort can become a problem. To overcome these problems, this thesis contributes an approach to semi-automatically migrate existing model variants to software product lines. These product lines allow to generate all variants from the identified reusable artifacts. As industry uses a variety of different modeling languages, the focus of the approach lies on an easy adaptation for different languages. Furthermore, the approach can be custom-tailored to include domain knowledge or language-specific details in the variability identification. The first step of the approach performs a high-level analysis of variants to identify outliers (e.g., variants that diverged too much from the rest) and clusters of strongly related variants. The second step executes variability mining to identify corresponding low-level variability relations (i.e. the common and varying parts) for these clusters. The third step uses these detailed variability relations for an automatic migration of the compared variants to a delta-oriented software product line. The approach is evaluated using publicly available case studies with industrial background as well as model variants provided by an industry partner.Die Industrie steht einer steigenden Anzahl an Herausforderungen bezüglich der Funktionalität, Effizienz und Zuverlässigkeit von Software gegenüber. Um den damit verbundenen Entwicklungsaufwand und entsprechende Kosten zu reduzieren, werden häufig modellbasierte Sprachen wie Matlab/Simulink oder Zustandsautomaten eingesetzt. Obwohl diese Sprachen die Unternehmen während der Entwicklung von Einzelsystemen unterstützen, führt die große Nachfrage nach maßgeschneiderter Software zu neuen Herausforderungen. Entsprechend müssen Varianten mit hoher Ähnlichkeit und nur geringfügigen Unterschieden effizient entwickelt werden. Da eine Neuimplementierung komplexer Funktionalität für jede Variante keine Option darstellt, werden häufig Kopien existierender Lösungen für Kunden angepasst. Auf kurze Sicht ermöglicht dieser sogenannte clone-and-own-Ansatz Kosten zu sparen, da existierende Lösungen leicht wiederverwendet werden können. Jedoch birgt der Ansatz auch Risiken, da Beziehungen zwischen den Systemkopien selten dokumentiert werden und Fehler für jede der Variante einzeln behoben werden müssen. Somit kann mit einer wachsenden Anzahl an möglicherweise umfangreichen Systemkopien der Wartungsaufwand zu einem Problem werden. Um diese Probleme zu lösen, bietet diese Arbeit einen Ansatz zur semi-automatischen Überführung existierender Modellvarianten in Softwareproduktlinien. Diese ermöglichen eine anschließende Generierung der Varianten aus den identifizierten wiederverwendbaren Artefakten. Da in der Industrie eine große Menge von Modellierungssprachen eingesetzt wird, liegt der Fokus auf der einfachen Adaption für unterschiedliche Sprachen. Zusätzlich kann durch Einbeziehung von Expertenwissen oder sprachspezifische Details die Variabilitätsidentifikation beeinflusst werden. Der erste Schritt des Ansatzes analysiert die Varianten auf hohem Abstraktionslevel, um Außenseiter (z.B. Varianten die stark von den restlichen Variaten abweichen) und Cluster von stark verwandten Varianten zu identifizieren. Der zweite Schritt analysiert diese Cluster auf niedrigem Abstraktionslevel, um entsprechende Variabilitätsrelationen (d.h. gemeinsame und unterschiedliche Teile) zu identifizieren. Der dritte Schritt nutzt diese detaillierten Variabilitätsrelationen für eine automatische Migration der verglichenen Varianten in eine delta-orientierte Softwareproduktlinie. Der Ansatz ist an Fallstudien mit industriellem Kontext sowie Modellvarianten eines Industriepartners evaluiert worden

    Supporting the grow-and-prune model for evolving software product lines

    Get PDF
    207 p.Software Product Lines (SPLs) aim at supporting the development of a whole family of software products through a systematic reuse of shared assets. To this end, SPL development is separated into two interrelated processes: (1) domain engineering (DE), where the scope and variability of the system is defined and reusable core-assets are developed; and (2) application engineering (AE), where products are derived by selecting core assets and resolving variability. Evolution in SPLs is considered to be more challenging than in traditional systems, as both core-assets and products need to co-evolve. The so-called grow-and-prune model has proven great flexibility to incrementally evolve an SPL by letting the products grow, and later prune the product functionalities deemed useful by refactoring and merging them back to the reusable SPL core-asset base. This Thesis aims at supporting the grow-and-prune model as for initiating and enacting the pruning. Initiating the pruning requires SPL engineers to conduct customization analysis, i.e. analyzing how products have changed the core-assets. Customization analysis aims at identifying interesting product customizations to be ported to the core-asset base. However, existing tools do not fulfill engineers needs to conduct this practice. To address this issue, this Thesis elaborates on the SPL engineers' needs when conducting customization analysis, and proposes a data-warehouse approach to help SPL engineers on the analysis. Once the interesting customizations have been identified, the pruning needs to be enacted. This means that product code needs to be ported to the core-asset realm, while products are upgraded with newer functionalities and bug-fixes available in newer core-asset releases. Herein, synchronizing both parties through sync paths is required. However, the state of-the-art tools are not tailored to SPL sync paths, and this hinders synchronizing core-assets and products. To address this issue, this Thesis proposes to leverage existing Version Control Systems (i.e. git/Github) to provide sync operations as first-class construct
    corecore