  Behavioral models enable the analysis of the functionality of software
product lines (SPL), e.g., model checking and model-based testing. Model
learning aims at constructing behavioral models for software systems in some
form of a finite state machine. Due to the commonalities among the products of
an SPL, it is possible to reuse the previously learned models during the model
learning process. In this paper, an adaptive approach (the $\text{PL}^*$
method) for learning the product models of an SPL is presented based on the
well-known $L^*$ algorithm. In this method, after model learning of each
product, the sequences in the final observation table are stored in a
repository which will be used to initialize the observation table of the
remaining products to be learned. The proposed algorithm is evaluated on two
open-source SPLs and the total learning cost is measured in terms of the number
of rounds, the total number of resets and input symbols. The results show that
for complex SPLs, the total learning cost for the $\text{PL}^*$ method is
significantly lower than that of the non-adaptive learning method in terms of
all three metrics. Furthermore, it is observed that the order in which the
products are learned affects the efficiency of the $\text{PL}^*$ method. Based
on this observation, we introduced a heuristic to determine an ordering which
reduces the total cost of adaptive learning in both case studies.
