Research Talks by the Chair of Software Engineering

On June, 13th, 2016 three PhD students of Professor Apel’s Chair of Software Engineering visited us: Alexander Grebhahn, Claus Hunsen, and Andreas Stahlbauer. All three gave us an introduction into their research topics.

The first talk by Alexander Grebhahn was about non-functional properties and optimization. It is a significant topic in the context of Configurable Software Systems (CSS) because of the combinatorical explosion of the number of possible configurations. He presented different approaches to evaluate the performance of the different configurations to us. Because of the large number of configurations a brute force analysis is not a good choice.

Therefore, a sampling of the different configurations is necessary. This approach has also some challenges: one has to decide, which configurations should chosen. Afterwards, the influence of a single feature can be quantified. However, feature interactions have to be considered. An approach to solve this are performance influence models. By using multiple regression learning, the influences and interactions of the features can be quantified. In every iteration of the regression learning, the error value decreases, which is the difference between the calculated values and the empirical test data.

Alex closed his talk with some results on example data. By that, he strikingly showed the effect of different options in the performance influence model.

The second talk by Andreas Stahlbauer was about model checking of configurable software systems. Because of the exponentially growing number of configurations it is impossible to test each of them. His approach is to test families of products; by detecting similar paths in the program, the evaluation of the path is necessary only once. In order to achieve that, the code with its preprocessor instructions gets transformed into an abstract syntax tree by custom tools; the syntax trees will then be converted to a program source code with conditions for the configurations.

Obviously, all parts of the program should satisfy their specification. In order to achieve this without running twice over the same statements, the features are enabled only when needed.

With this approach, another explosion can happen with variants: program variants, configuration variants, and specification variants, which are necessary to check the new product variants. For the analysis, a combination of several techniques is used: a predicate analysis with adjustable block encoding, lazy abstraction and CEGAR (Counterexample Guided Abstraction Refinement). State-of-the-art SMT solvers are used for the analysis. The goal is to find similar parts in configurations or code in order to do the check only once and reuse the result for similar other parts. The specification checks are done in parallel of the control flow of the program. The talk concluded with some results on the Busybox modules.

The third talk by Claus Hunsen was on communication and coordination between developers. The idea is to prevent unnecessary conflicts by intensive communication; this was shown by Claus with several examples. Additionally, he provided answers on how to detect “good” communication and on how the conflicts can be categorized. Finally, he showed some empirical results of his work that visualized the topic even more.