Software product line (SPL) refers to software engineering methods, tools and techniques for creating a collection of similar software systems from a shared set of software assets using a common means of production. There are several topics in SPL having received active research interests, such as testing and optimal product selection.