# Product Model Derivation from Feature Model and Formal Specification
## 2 Related Work  
Product derivation is more concerned with the realization of the variability at the implementation level [4]. [PERSON] et al. [22] use a preprocessing-based code export method (GenArch) for product derivation. In [23], the authors use Java to implement the selection of basic components and features from the software product family and derived products. [PERSON] et al. [24] summarize complex relationships between features by computing a feature dependency matrix and use a static code analysis and change control systems to promote complex code-level dependencies to feature models to guide model evolution. [PERSON] et al. [25] propose a framework for managing the imperfect modularity of variable implementations. Capturing variability based on feature change points, then modeling the variability with variants while maintaining consistency with implementations in code assets and establishing tracking links between specified variables and implemented variables, completes the management of implemented variability. [PERSON] et al. [26] propose a model-driven round-trip engineering (RTE) approach where different configurations can be obtained. Both the applications and synchronization between instance models and corresponding codes are provided using a toolchain. These methods discussed above are limited to the code unit of single features and code of feature interactions. The fine-grained product stays on the feature, and they do not involve the expression of the internal behavior of the feature. In addition, these approaches focus on feature modeling with little consideration for dependencies and interactions between implementation artifacts. In contrast, our method systematically considers feature architecture and combines features into a whole while being able to express the internal behavior of features. At the same time, the specific product features derived from the derivation have dependencies, and the behavior of the product can be retained after the derivation through the behavior preserved integration. There are also some works on the requirement level for product derivation. [PERSON] et al. [27] take the captured variability information, such as features, and build a trace between the features and the use case model to the model variability in use cases. [PERSON] et al. [28] propose a way to support evolving configuration decisions in product line use case models, using use case models to minimize manual tracking efforts, and reconfigure use case diagrams and specifications to accommodate evolving decisions. Some approaches [29,30] use propositional logic for a product derivation to produce Unified Modeling Language (UML) class diagrams or sequence diagrams. Some express the SPL source model in UML and derive the UML model of a specific product by mapping the features in the feature model and their implementation in the design model [13]. Domain-specific modeling languages are defined to automate product derivation [31]. For example, [PERSON] et al. [32] propose a multi-level production process modeling language (Multi-ProLan) that allows process engineers, quality engineers, and plant managers to collaborate on specifying a production process by using a common language. [PERSON] et al. [33] proposed augmenting the metamodel with a seamless support for planning, tracking, and slicing model evolution timelines, enabling the arbitrary modeling notations for integrated storage, tracking, planning, and access and control of the model evolution. The above methods stay at the feature level and are described with the granularity of features. Although some methods have been given for the detailed specification of individual features based on the feature model, most of them are informal and fail to manage the accurate description of feature requirements, making them unable to automate support, which brings difficulties to the later coding, testing, and maintenance of the product.