Validating Consistency between a Feature Model and its Implementation Duc Minh Le 1 , Hyesun Lee 1 , Kyo Chul Kang 1 , Lee Keun 2 1 Division of IT Convergence Engineering, POSTECH, Pohang, Republic of Korea {lemduc, compial, kck}@postech.ac.kr 2 Samsung Electronics Co. Ltd., Republic of Korea gskeun.lee@samsung.com Abstract. Consistency across different lifecycle artifacts is an important issue in software engineering. In software product line engineering, validating consistency becomes even more complicated because product line assets have embedded variabilities. Commonality and variability (C&V) of a software product line (SPL) are usually captured using a feature model. Then, they are embedded into an implementation (i.e., asset code) using various techniques including preprocessor directives. However, the product line asset code often evolves without properly updating other lifecycle artifacts including the variability model, and verification of the consistency of C&V across different product line assets is a major challenge. In this paper, an approach to validating the consistency between C&V expressed in a feature model and C&V embedded in an implementation is proposed. With this approach, product line engineers can have a method for maintaining consistency of C&V across SPL assets systematically. This method has been applied to the flash memory software product line at Samsung Electronics Co. Ltd. and improvements have been made over the years based on the feedback. Keywords. Feature model, variability, consistency, preprocessing directive 1 Introduction Software product line engineering (SPLE) is an effective paradigm for developing products sharing a large set of common features. In SPLE, engineers create a family of products by identifying commonality and variability (C&V), creating assets with variation points and variants based on C&V, and instantiating and integrating these assets to develop products. Feature modeling [1] is a popular method in SPLE for capturing C&V of the products of a product line because it is an efficient communica- tion medium between customers and developers. A feature model is usually used in the analysis phase to capture features (services, functions, platforms, etc.) that need to be provided by or interfaced with the products of a product line. The information captured by the feature model is then used to define variation points and variants of product line assets including architectures and components.