Abstract: Features express the variabilities and
commonalities among programs in a software product line
(SPL). A feature model defines the valid combinations of
features, where each combination corresponds to a program
in an SPL. SPLs and their feature models evolve over time.
We classify the evolution of a feature model via
modifications as refactorings, specializations,
generalizations, or arbitrary edits. We present an
algorithm to reason about feature model edits to help
designers determine how the program membership of an SPL
has changed. Our algorithm takes two feature models as
input (before and after edit versions), where the set of
features in both models are not necessarily the same, and
it automatically computes the change classification. Our
algorithm is able to give examples of added or deleted
products and efficiently classifies edits to even large
models that have thousands of features.