Behavioral models enable the analysis of the functionality of software product lines (SPL), e.g., model checking and model-based testing. Model learning aims to construct behavioral models. 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, called PL * , for learning the product models of an SPL is presented based on the well-known šæ * algorithm. In this method, after learning each product, the sequences in the final observation table are stored in a repository which is used to initialize the observation table of the remaining products. The proposed algorithm is evaluated on two open-source SPLs and the learning cost is measured in terms of the number of rounds, resets, and input symbols. The results show that for complex SPLs, the total learning cost of PL * is significantly lower than that of the non-adaptive method in terms of all three metrics. Furthermore, it is observed that the order of learning products affects the efficiency of PL * . We introduce a heuristic to determine an ordering which reduces the total cost of adaptive learning.
CCS CONCEPTSā¢ Networks ā Formal specifications; ā¢ Theory of computation ā Query learning; ā¢ Hardware ā Finite state machines; ā¢ Software and its engineering ā Software product lines.