Research Talks des Lehrstuhls fur Software Engineering

Am 13.06.2016 hielten die drei wissenschaftlichen Mitarbeiter Alexander Grebhahn, Claus Hunsen und Andreas Stahlbauer vom Lehrstuhl für Software Engineering von Professor Apel einen Research Talk.

Im ersten Vortrag stellte Alexander Grebhahn uns nicht-funktionale Eigenschaften und Optimierung vor. Dies ist insbesondere im Kontext von konfigurierbaren Software Systemen (Configurable Software Systems, CSS) sehr bedeutsam, da hierbei eine kombinatorische Explosion der Anzahl möglicher Konfigurationen und somit Produktvarianten entsteht. Er präsentierte uns verschiedene Vorgehensweisen zur Performance-Evaluation der verschiedenen Konfigurationen. Eine Brute-Force-Analyse bietet sich hierfür aufgrund der großen Anzahl an Konfigurationen nicht an.

Stattdessen ist ein Sampling verschiedener Produktvarianten vonnöten. Hierbei tauchen einige Probleme auf: Zunächst stellt sich die Frage, welche Konfigurationen hierfür gewählt werden. Danach kann versucht werden den Einfluss einzelner Features zu quantifizieren. Hierbei ist es jedoch schwierig Feature-Interaktionen zu beachten. Ein Lösungsansatz hierfür stellt das Performance-Influence-Model dar. Hierbei werden mittels Multiple-Regression-Learning die Einflüsse und Interaktionen der Features quantifiziert. Dabei verringert sich mit jeder Iteration des Regression Learnings der Fehler, d.h. der Unterschied zwischen den berechneten Werten und den empirischen Testdaten.

Abschließend stellte uns der Referent die Ergebnisse dieser Methode anhand einiger Beispieldaten vor. Dabei demonstrierte er wirkungsvoll die Auswirkungen verschiedener Optionen des Performance-Influence-Models.

Im zweiten Vortrag ging Andreas Stahlbauer näher auf das Model Checking von konfigurierbaren Software Systemen ein. Aufgrund der exponentiell wachsenden Anzahl an Konfigurationen, kann nicht jede einzeln getestet werden. Die Idee ist nun, Produktfamilien zu testen, gleiche Programmabläufe zu erkennen und diese dann nicht nochmals zu durchlaufen. Dazu wurde der Code mit Präprozessoranweisungen mittels selbst entwickelten Programmen in abstrakte Syntaxbäume umgewandelt und dann wieder in Programme mit Verzweigungen (Konfigurationen) transferiert.

Natürlich sollen die Programmteile immer noch ihrer Spezifikation entsprechen. Gleichzeitig wurde darauf geachtet, dass keine doppelten Abschnitte durchlaufen werden. Um dies zu erreichen, sind die Features nicht über den gesamten Ablauf aktiviert, sondern nur in den geforderten Abschnitten

Dadurch ergibt sich eine weitere Explosion, diesmal an Varianten: die Programmvarianten, die Konfigurationsvarianten und die Spezifikationsvarianten, die zur Überprüfung der neuen Produktvarianten nötig sind. Zur Analyse steht die Kombination aus vier Techniken zur Verfügung. Die Prädikatenanalyse mit Adjustable Block Encoding, Lazy Abstraction und CEGAR (Counterexample Guided Abstraction Refinement). Für diese gibt es mittlerweile gute Solver. Ziel ist es gleiche Konfigurations-/Programmteile zu finden und davon jeweils nur eine Teil berechnen und diese Berechnung für die gleichen anderen Teile zu verwenden. Weiter kann während des Programmablaufs die Spezifikation abgearbeitet werden. Zum Schluss wurden Modultests von Busybox gezeigt.

Last but definitely not least beglückte uns Claus Hunsen mit seinem Vortrag über Kommunikation und Koordination zwischen Entwicklern. Die Idee dahinter, wie er an mehreren Beispielen erklärt, ist es, unnötige Konflikte beim gemeinsamen Arbeiten durch häufiges Absprechen und gute Kommunikation zu verhindern. Auch auf die Fragen, wie man denn überhaupt „gute“ Kommunikation bewertet und was für Schemata sich durch die Konflikte abbilden, bzw. wie er diese misst, lieferte Claus Antworten. Abschließend wurden Testergebnisse präsentiert, die anhand seiner Arbeit zustande kamen und die die besprochenen Thematiken noch einmal gut veranschaulichten.