Software product line (SPL) maximises commonality between software products to reduce cost and improve productivity. SPL has been widely applied in critical systems, and ensuring correctness of the system is thus of great importance. In this paper, we consider the incomplete designs in the early stage of software development. This enables detecting design errors earlier, reducing the cost of later development of final products. We first propose bilattice-based feature transitions systems (BFTSs), which support description of uncertainty. We then express system behavioural properties using ACTL formulas and define its semantics over BFTSs. On the one hand, we provide the procedures that translate BFTSs to multi-valued Kripke structure and develop a software model checker assistant BPMCA. On the other hand, we decompose the multi-valued BFTS to lower the complexity of model checking. Finally, we implement our approach and illustrate its effectiveness on a benchmark from the literature.
Read full abstract