From the Linux Kernel to Cryptography APIs: Supporting and Leveraging Software Product Lines

Sarah Nadi - Post-doctoral Researcher, Technische Universit├Ąt Darmstadt, Germany

April 13, 2016, 10 a.m. - April 13, 2016, 11 a.m.

MC 437

Software has become increasingly pervasive in every aspect of our lives, and a one size fits all strategy is no longer sustainable. The same software system often needs to be customized to support a wide range of hardware, improve performance, reduce memory footprints, or simply

satisfy different user needs. Software Product Lines (SPLs) provide a systematic way of developing such highly configurable systems where different, yet similar, products can be produced based on a given feature selection. Variability models lie at the heart of SPLs and help

document the commonalities and differences between the supported products, as well as the configuration constraints that dictate valid feature combinations.


In this talk, I will present automated techniques that address several of the challenges faced in maintaining and creating SPLs. In terms of maintenance support, I will show how configuration

knowledge from the build system can be used to detect inconsistencies leading to variability anomalies. To support creating SPLs from existing implementation artifacts, I will present an automated technique to reverse-engineer configuration constraints that can later be used to

create variability models. I will discuss how these techniques have been applied in the systems domain with a particular focus on the Linux kernel, one of the largest open-source software systems with over 12,000 configurable options. I will then show that concepts of

variability modeling and highly configurable software can also be applied to other domains. Specifically, I will discuss how leveraging these concepts in the cryptography domain can help application developers write more secure software.


Sarah Nadi is a post-doctoral researcher at the Software Technology Group (STG) at the Technische Universität Darmstadt in Germany. She received both her MMath (2010) and PhD (2014) degrees from the University of Waterloo, Canada. Her doctoral work, supported by an NSERC Alexander Graham Bell Canada Graduate Scholarship, focused on detecting variability anomalies in software product lines and reverse-engineering configuration constraints. Her current research incorporates ideas from highly configurable software into new domains such as cryptography. Her research interests include providing automated support for developing and maintaining highly configurable software, variability modeling, mining software repositories, software evolution, and code recommender systems. For moreinformation about Sarah’s work, please visit her website (