Dear all,
as already mentioned, we will have the following research talks in our
next SPL lecture.
Tuesday, December 10, 14:15 - 16:00, Engehalde 8, Room 002.
Both are highly recommended!
Best,
Timo
*Speaker*
Alexander Schultheiß (University of Paderborn and University of Bern)
*Title*
Decades of GNU Patch and Git Cherry-Pick: Can We Do Better?
*Abstract*
Patching is a fundamental software maintenance
and evolution task enabling the (semi-)automated propagation
of changes across different software versions. Established and
widely used general-purpose patchers, such as GNU-patch and
git cherry-pick, work on textual artifact representations
(i.e., files) and typically rely on line numbers and contexts (i.e.,
surrounding unchanged text) to apply changes. This strategy
often fails if source and target of a patch differ: Some required
changes may be rejected, others may be applied to the wrong
location; provoking cumbersome manual effort. In this paper, we
study the effectiveness of commonly-used patchers, and propose a
novel technique that pushes the boundaries of patch automation.
First, we curate and analyze a large dataset of more than 400,000
patch scenarios (i.e., cherry picks) from 5,000 GitHub projects.
Next, we examine the effectiveness of established patchers on
the gathered patch scenarios, observing that patchers often fail
to apply changes correctly. Third, we develop a novel general-
purpose patch technique, mpatch, that utilizes a source-to-target
matching to determine suitable change locations. By comparing
mpatch to other patchers, we find that it can correctly apply
44% more patches automatically than other general-purpose
patchers, while it also requires fewer manual fixes in cases that
cannot be automated completely. Thus, mpatch considerably
reduces the burden of manually fixing failed patches in practice,
specifically in projects with frequent patch applications.
--
*Speaker*
Paul Bittner (University of Ulm and TU Braunschweig)
*Title*
On the Expressive Power of Languages for Static Variability
*Abstract*
Variability permeates software development to satisfy ever-changing
requirements and mass-customization needs. A prime example is the Linux
kernel, which employs the C preprocessor to specify a set of related but
distinct kernel variants. To study, analyze, and verify variational
software, several formal languages have been proposed. For example, the
choice calculus has been successfully applied for type checking and
symbolic execution of configurable software, while other formalisms have
been used for variational model checking, change impact analysis, among
other use cases. Yet, these languages have not been formally compared,
hence, little is known about their relationships. Crucially, it is
unclear to what extent one language subsumes another, how research
results from one language can be applied to other languages, and which
language is suitable for which purpose or domain. In this paper, we
propose a formal framework to compare the expressive power of languages
for static (i.e. compile-time) variability. By establishing a common
semantic domain to capture the essence of explicit variability, we can
formulate the basic, yet to date neglected, properties of soundness,
completeness, and expressiveness for variability languages. We then
prove the (un)soundness and (in)completeness of a range of existing
languages, and relate their ability to express the same variational
systems. We implement our framework as an extensible open source Agda
library in which proofs act as correct compilers between languages or
differencing algorithms. We find that most variability languages are
complete, sound, and equally expressive, rendering existing and future
research more broadly applicable by bridging the gaps between parallel
research efforts.