Humboldt-Universität zu Berlin - Mathematisch-Naturwissenschaftliche Fakultät - Modellgetriebene Software Entwicklung

 

Modellgetriebene Software Entwicklung

Abgeschlossene Arbeiten

 

 

 

  • Einsatz mehrdimensionaler Suchstrukturen zur Analyse von ähnlichen Modellelementen in modellbasierten Softwareproduktfamilien
    David Csárszár

    Ad-hoc Wiederverwendungsmechanismen wie das „Clone and Own“ Paradigma führen im Laufe der Zeit zu einer Menge von ähnlichen jedoch nicht identischen Varianten eines Softwareprodukts. Solche Softwareproduktfamilien sind schwer zu überblicken und verursachen hohe Wartungskosten. In der Literatur wurden bereits verschiedene Methoden und Techniken vorgeschlagen, ad-hoc entstandene Softwareproduktfamilien zu analysieren und unter Ausnutzung systematischer Wiederverwendungsmechanismen zu restrukturieren. Ein erster grundlegender Schritt solcher Familienanalysen ist die Identifikation gemeinsamer und unterschiedlicher Anteile in den einzelnen Varianten. Im Falle modellbasierter Produktfamilien besteht das Kernproblem darin, im Falle von N Varianten eine optimale (oder hinreichend gute) Menge von N-Tupeln gleicher (oder ähnlicher) Modellelemente zu identifizieren. Tatsächlich ist dies für Modelle bereits für N=2, also im Falle der Bestimmung korrespondierender Elemente in zwei miteinander zu vergleichenden Modellen, ein schwieriges Problem. Dies gilt insbesondere dann, wenn für den Vergleich die Ähnlichkeit von Modellelementen herangezogen werden soll. Mehrdimensionale Suchbäume wurden als ein skalierbares Verfahren zum Finden von ähnlichen Elementen in Paaren von Modellen bereits erfolgreich eingesetzt. Im Rahmen dieser Arbeit soll untersucht werden, ob und wie dieses Verfahren auf N>2 verallgemeinert werden kann.
     
  • Zum Umgang mit geordneten Kollektionen von Modellelementen im Modellvergleichswerkzeug SiLift
    Tilo Prütz
    UML-Modelle können diverse geordnete Kollektionen von Modellelementen enthalten, so z.B. die Parameter einer Operation einer Klasse in einem UML-Klassendiagramm. Für einige Kollektionen, eingeschlossen das angeführte Beispiel der Parameterlisten, ist diese Ordnung für den Modellvergleich auch relevant. So sollen beispielsweise lokale Umsortierungen von Elementen einer geordneten Kollektion in einer Modelldifferenz, also der Beschreibung der Unterschiede zwischen zwei Modellen, auch korrekt wieder gegeben werden. Im Modellvergleichswerkzeug SiLift ist dies jedoch momentan nicht der Fall. Zwar existieren erste Lösungsskizzen, deren detaillierte Ausarbeitung sowie eine systematische Evaluation stehen jedoch noch aus und sind Gegenstand dieser Arbeit.
     
  • Untersuchungen zur Eignung von frei verfügbaren UML-Modellen zur Evaluation von Werkzeugen in der modellbasierten Softwareentwicklung
    Michael Amboß
    Werkzeuge und Methoden für die modellbasierte Softwareentwicklung (MBSE) müssen evaluiert und getestet werden. Adäquate Evaluations- und Testdatensätze, idealerweise Modelle aus der industriellen Praxis, stehen jedoch kaum zur freien Verfügung. Eine Option diesem Mangel zu begegnen ist die Extraktion von in OpenSource-Projekten verwendeten Modellen. Tatsächlich wurden kürzlich eine Vielzahl von GitHub-Projekten untersucht und dabei eine Vielzahl von UML-Modellen, gespeichert in Bild-, xmi-, und .uml-Dateien, extrahiert. Vorrangige Forschungsfrage der durchgeführten Studie war jedoch, wie UML-Modelle in OpenSource-Projekten verwendet werden. Unklar ist jedoch, inwiefern diese Modelle zur Evaluation von MBSE Forschungswerkzeugen und -methoden genutzt werden können. Offene Fragestellungen betreffen beispielsweise die Repräsentation der extrahierten Modelle, deren Konsistenzgrad sowie die verfügbaren Entwicklungs- und Evolutionsszenarien. Ziel dieser Abschlussarbeit ist es, die vorhandenen Modelle zu analysieren und diese Fragen zu beantworten. Idealerweise lassen sich darauf aufbauend Teilmengen von Modellen identifizieren, welche als Fallstudien zur Evaluation bestimmter MBSE Werkzeugklassen herangezogen werden können.
     
  • Abgleich und Differenzierung von Modelltransformationsregeln am Beispiel Henshin
    Luka Germeyer
    Modelltransformationen sind ein Kernbestandteil der modellbasierten Softwareentwicklung (MBSE). Spezifikationen von Transformationen mittels dedizierter Modelltransformationssprachen werden daher zu primären Entwicklungsdokumenten und unterliegen ständigen Änderungen über die gesamte Dauer eines MBSE-Projekts. Werkzeuge zum Abgleich und zur Differenzierung von Spezifikationen von Modelltransformationen sind daher essentieller Bestandteil einer MBSE-Entwicklungsumgebung. Generische, textbasierte Differenzalgorithmen sind für visuelle Modelltransformationssprachen jedoch ungeeignet. Als besondere Herausforderung erweist sich in diesem Kontext der Vergleich von Transformationsregeln des auf Graphtransformationskonzepten basierenden Werkzeugs Henshin. Ziel dieser Abschlussarbeit ist die Konzeption und Entwicklung eines hochgradig angepassten Werkzeug zum Abgleich und zur Differenzierung von Henshin-Transformationsregeln. Wenn möglich soll hierbei auf existierende Frameworks aus dem Kontext der Modellversionierung zurückgegriffen werden. Insbesondere zur Bestimmung korrespondierender Elemente in den zu vergleichenden Transformationsregeln sollen aber auch grundlegende Graph-Algorithmen auf ihre Eignung hin untersucht werden, beispielsweise diverse Varianten zur Bestimmung von größten gemeinsamen Subgraphen.
     
  • Model-Based Code Refactoring Analysis for Semi-Automated Software Library Migration
    Michael Berger

    PDF
    Softwarebibliotheken entwickeln sich stetig weiter, wobei neben funktionalen Erweiterungen auch Schnittstellenänderungen und Änderungen in der Programmstruktur durchgeführt werden können. Als Folge dessen entstehen mit jedem Update solcher Bibliotheken Wartungsaufwände, die zahlreiche Anpassungen der aufrufenden Klienten zur Folge haben. Ziel dieser Arbeit ist es, Applikationsentwickler bei einer solchen Migration bestmöglich zu unterstützen. Hierzu soll untersucht werden, inwiefern Schnittstellen- und Strukturänderungen zwischen zwei Bibliotheksversionen als eine Kette von definierten Operationsschritten beschrieben werden können, so dass die identifizierten Operationen für eine semi-automatisierte Migration der aufrufenden Klienten genutzt werden können. Der Vergleichsschritt soll hierbei auf Modellebene geschehen. Dazu ist es notwendig, Projekte in geeignete Modelle umzuformen, die genau die API-Bestandteile abbilden, welche für die Identifizierung der Operationen sowie die späteren Migrationsschritte benötigt werden. Die prototypische Umsetzung eines entsprechenden Assistententools soll als Eclipse Plug-In realisiert werden, und auf den grundlegenden, EMF-basierten Frameworks Modisco, SiLift und Henshin aufbauen.
     
  • Empfehlungssysteme im Software Engineering
    SoSe 2018, Alexey Grachev, Studienarbeit

    Empfehlungssysteme im Software Engineering (Recommendation Systems in Software Engineering) haben die Aufgabe Entwicklern bei verschiedenen Aufgaben zu unterstützen, von der Wiederverwendung von Software-Artefakten bis zur Erstellung von Bug Reports. Die Vielfältigkeit von Software Systemen und Bibliotheken und ihre rapide Weiterentwicklung und immer steigende Heterogenität beeinflussen auch die Entwicklung von RSSEs. Dank der Popularität von Open Source haben RSSEs eine ausreichende Datenbasis für das Data Mining. RSSEs sind dabei, ein fester Bestandteil von industriellen Entwickler-Werkzeugen zu werden. Das Ziel dieser Studienarbeit ist, die bestehenden RSSEs zu überblicken und eine Prognose zu liefern, in welche Richtung sie sich in naher Zukunft entwickeln werden.

 

  • Domain Model-Based Data Stream Validation
    for IoT Applications, 2018, Simon Pizonka,
    Masterarbeit

    In der Softwareentwicklung werden Modelle zur Analyse und zum Entwurf des zu implementierenden Systems eingesetzt. Die modellbasierte Softwareentwicklung macht Modelle zu zentralen Entwicklungsartefakten, welche die formale Grundlage für die Erzeugung der Implementierung bilden. Auf diese Weise wird zunächst von der technischen Zielplattform abstrahiert, was die Wiederverwendbarkeit des entwickelten Systems vereinfacht. Das erfordert allerdings die Festlegung einer formalen Syntax und Semantik für die Modellierungssprache. Außerdem kann das System aus verschiedenen Sichten modelliert werden (z.B. Datenstrukturen und Benutzerinteraktion), um die Komplexität des Modells zu reduzieren. Bei der verteilten Bearbeitung großer Modelle durch ein Entwicklerteam kann es darüber hinaus hilfreich sein einen Modellausschnitt als temporäre materialisierte Sicht zu erzeugen, um diesen isoliert zu bearbeiten. Wenn ein Entwickler allerdings nicht alle Teile eines Modells überblickt, kann es leicht zu Inkonsistenzen zwischen verschiedenen Sichten kommen. Die Sicherstellung der Korrektheit eines Modells ist eine zentrale Aufgabe im Entwicklungsprozess, bei der die Entwickler durch entsprechende Werkzeuge unterstützt werden sollten. Diese Arbeit präsentiert einen Ansatz zur Reparatur von Inkonsistenzen in Modellen bzw. Modellsichten. Das hier vorgestellte Reparaturwerkzeug ermittelt Reparaturen auf Basis benutzerdefinierter Editierregeln. Insbesondere werden die durchgeführten Modifikationen betrachtet, um die Ursache einer Inkonsistenz besser zu verstehen.

 

 

  • Round-Trip Migration von objektorientierten Datenmodell-Instanzen

    2018, Luca Mathias Beurer-Kellner, Bachelorarbeit, PDF

    In distributed software systems, a shared data model often represents the common denominator between components (e.g. database systems, applications, APIs). Over time, the data model must be changed in order to accommodate for new requirements. This evolution can often not be performed at the same time and completely, which implies that multiple versions of the same data model must be maintained. In order to further guarantee the successful interoperation between components of different version, it must be ensured that the model differences do not lead to loss of information or misinterpretation. A common solution to this problem is to design data model changes in backward compatible fashion. In this thesis, we propose an alternative solution to this problem by introducing a translation layer between components of different data model version. This allows for greater flexibility when changing data models, since is does not require backward compatibility. We introduce the term of successful round-trip migrations, which describes the lossless forth-and-back translation of data model instances between versions. Based on an object-oriented data modelling language, we present a framework for the execution and implementation of round-trip migrations. During our work, we have identified traceability, as known from model-driven engineering, as a core requirements to allow for successful round-trip migrations. We furthermore present a catalogue of so-called round-trip migration scenarios, which discusses various challenges that need to be faced when implementing round-trip migrations. In order to evaluate our approach, we carried out a case study by implementing a translation layer for a real-world data model. Using our framework and the scenario catalogue, we were successful in implementing a translation layer which guarantees a successful round-trip migration of instances. Based on these results, we were able further verify our framework, our scenario catalogue and the general concept of round-trip migrations. However, overall we have also identified limits to the idea of round-trip migrations, especially with regard to the set of possible data model changes. We see potential in the idea of round-trip-migrating translation layers, as it allows for non-backward compatible data model changes, while maintaining system interoperability. Future work will show how the applicability of such layers is to be estimated in a real-world production environment.

 

  • A model-based approach to resolve syncronization conflicts of IoT devices

    WS 2017/18, Simon Pizonka, Studienarbeit

    The AWS IoT Device SDK for Python (and other languages) rejects changes to the device shadow when there is no internet connection. The goal is to implement dierent autonomous merge strategies to overcome this limitation. This report presents design and prototype implementation of a basic ORM (object-relational mapping) for a AWS Thing Shadow and how to create objects with a model driven approach with Eclipse Vorto.

 

  • Behandlung von Inkonsistenzen in der verteilten Bearbeitung materialisierter Sichten im Kontext der modellbasierten Softwareentwicklung
    2017, Manuel Ohrndorf,
    Masterarbeit, PDF

    In der Softwareentwicklung werden Modelle zur Analyse und zum Entwurf des zu implementierenden Systems eingesetzt. Die modellbasierte Softwareentwicklung macht Modelle zu zentralen Entwicklungsartefakten, welche die formale Grundlage für die Erzeugung der Implementierung bilden. Auf diese Weise wird zunächst von der technischen Zielplattform abstrahiert, was die Wiederverwendbarkeit des entwickelten Systems vereinfacht. Das erfordert allerdings die Festlegung einer formalen Syntax und Semantik für die Modellierungssprache. Außerdem kann das System aus verschiedenen Sichten modelliert werden (z.B. Datenstrukturen und Benutzerinteraktion), um die Komplexität des Modells zu reduzieren. Bei der verteilten Bearbeitung großer Modelle durch ein Entwicklerteam kann es darüber hinaus hilfreich sein einen Modellausschnitt als temporäre materialisierte Sicht zu erzeugen, um diesen isoliert zu bearbeiten. Wenn ein Entwickler allerdings nicht alle Teile eines Modells überblickt, kann es leicht zu Inkonsistenzen zwischen verschiedenen Sichten kommen. Die Sicherstellung der Korrektheit eines Modells ist eine zentrale Aufgabe im Entwicklungsprozess, bei der die Entwickler durch entsprechende Werkzeuge unterstützt werden sollten. Diese Arbeit präsentiert einen Ansatz zur Reparatur von Inkonsistenzen in Modellen bzw. Modellsichten. Das hier vorgestellte Reparaturwerkzeug ermittelt Reparaturen auf Basis benutzerdefinierter Editierregeln. Insbesondere werden die durchgeführten Modifikationen betrachtet, um die Ursache einer Inkonsistenz besser zu verstehen.