Navigation

Entwicklung eines generischen Ansatzes zur plattformunabhängigen Instrumentierung von Code

Individuelles Projekt in der Abteilung Softwaretechnik



Motivation

Neben der Geschäftslogik, dem Kernbereich einer Software, mit der die Funktionalität erstellt wird, gibt es auch systemübergreifende Belange, wie Logging, Fehlerbehandlung und Transaktionen. Diese Belange finden sich in vielen Teilen der Geschäftslogik und verwenden dabei fast immer den gleichen Code. Um den Code von den systemübergreifenden Belangen vom Code der Geschäftslogik zu isolieren, und damit die einzelnen Funktionalitäten in der Software zu trennen, können bisher nur Techniken verwendet werden, die jeweils auf eine bestimmte Plattform beschränkt sind. Aufbauend auf diese Techniken soll ein Ansatz geschaffen werden, mit dem die systemübergreifenden Belange für mehrere Plattformen verwaltet werden können.


Aufgabenstellung

In dieser Arbeit soll eine Möglichkeit entwickelt werden, mit der insbesondere systemübergreifende Belange auch für mehrere Plattformen zentral verwaltet werden können. Dafür soll ein Ansatz erstellt werden, mit dem beliebige Belange plattformunabhängig definiert werden können und anhand dieser Definition die der Plattform entsprechend implementierten Codeteile in die Applikation instrumentiert werden können. Damit soll es möglich sein die einzelnen Belange nach dem Prinzip Separation of Concerns getrennt voneinander entwickeln zu können und vor allem Belange, die auf mehreren Plattformen benötigt werden, einheitlich zu definieren und die Definitionen entsprechend der Plattform, auf dem der Code zu den Belangen instrumentiert werden soll, zu interpretieren. Dabei kann das plattformspezifische Implementieren der Codeteile und Interpretieren der Definition nicht ersetzt werden. Dafür kann die Definition eines Belangs für mehrere Plattformen verwendet werden und allgemeine Änderungen dadurch zentral durchgeführt werden. Die Plattformen mit dem Applikationscode können beliebig aufgebaut sein oder verändert werden, da die Codeteile und die Interpretation der Definition der Belange daran angepasst werden können. Dadurch können auch die Hilfsmittel zur Instrumentierung der Codeteile auf den jeweiligen Plattformen gewechselt beziehungsweise eigene Werkzeuge erstellt werden. Als Möglichkeit den Ansatz zu generieren bietet sich die Entwicklung einer domainspezifischen Sprache an. Solche Sprachen werden direkt für ein bestimmtes Problemfeld entwickelt und sind unabhängig von Technologien. Mit modellgetriebener Softwareentwicklung lässt sich aus der domainspezifischen Sprache mit entsprechenden Codegeneratoren und Interpretern ein ausführbares Programm, also auch bestimmter Code, in der gewünschten Programmiersprache erstellen. Die Instrumentierung wird mit Techniken der aspektorientierten Programmierung realisiert. Diese Techniken sind plattformspezifisch, bieten jedoch eine gute Möglichkeit zur Instrumentierung von Code in eine Anwendung.


Betreuer
Prof. Dr. Andreas Winter (winter@se.uni-oldenburg.de)
Dennis Reil (dreil@opentext.com)

Related Projects
Logo Software Evolution
Software evolution research is a major focus of the software engineering group, and has been exercised through participation in software migration and software quality projects like SOAMIG and Q-MIG. Tools and techniques of software evolution have also been applied towards achieving energy efficiency in software. Modernizing legacy systems is, due to their size and complexity, only feasible with a high degree of automation. Thus, a major challenge of the field is the provision of integrated tool support. This is addressed by research on software evolution services, and the toolchain-building framework SENSEI.
 


Wewht6bmasterco7f (meierzkl9r@hamse.uniyb-old3vqencmubue44crgid.de) (Changed: 2020-02-21)