Presentation on theme: "Automatically Extracting Configuration Constraints Sarah Nadi *, Thorsten Berger *, Christian Kästner +, and Krzysztof Czarnecki * Product Line Engineering."— Presentation transcript:
Automatically Extracting Configuration Constraints Sarah Nadi *, Thorsten Berger *, Christian Kästner +, and Krzysztof Czarnecki * Product Line Engineering Workshop, Univ. of Waterloo Dec. 9 th 2013 * +
Variability in real life Sarah Nadi 2 Integrated Garage Door Opener Electronic Compass Command navigation package Black Dacota Leather Automatic Trunk Premium Package Comfort Seats, Front Black Leatherette Selection will result in: + Addition of premium package - Removal of Black Leathertte
But.. How can we build an SPL? Sarah Nadi 4 X Expensive and not always possible P1P2P3 Migrate … Build from scratch
What is involved in migrating? Sarah Nadi 5 Refactor Code Create Variability Model Detect Variation Points Identify Configurable Features Identify Feature Dependencies Refactor Architecture [She et al., ICSE‘11]
Variability model constraints Sarah Nadi 6 [Benavides et al., 2010] Hierarchy Constraint: MP3 => Media Cross-tree Constraint: Camera => High Res.
Can we automatically extract constraints? To what extent? Sarah Nadi 7
Scope C based systems using conditional compilation Focus on build-time variability Identify two sources of constraints Sarah Nadi 8
1. Conditional build-time errors Sarah Nadi 9 Specification 1: Every valid configuration of the system must not contain build-time errors.
Pre-processor Error if ASH && NOMMU Parser Error if ASH && EDITING && !MAX_LEN Type Error if ASH && EDITING_VI && MAX_LEN && !EDITING Invalid Configuration Constraint: ASH => !NOMMU Sarah Nadi 10
2. Feature effect Avoid meaningless configurations which do not add/remove parts of the code If we add/remove a feature, we want to get different functionality Determine under which configurations, a feature has an effect on the code Sarah Nadi 11 Specification 2: Every valid configuration should yield a lexically different program
Extract constraints by brute force Sarah Nadi 13 PnPn P3P2P1 … Build Individually If every configuration with feature X compiles except when Y is also selected X => !Y Not scalable--- 2 n combinations If every configuration with feature Z does not change the selected code except if W is also selected Z => W
Extracting constraints in a single pass Make use of variability-aware parsing & type checking to mimic build-time behaviour. Sarah Nadi 14 [Kästner et al., OOPSLA ‘11]
Infrastructure Developed tool FarCE – Feature Constraints Extraction https://bitbucket.org/tberger/farce https://bitbucket.org/tberger/farce Rely on previous work: TypeChef – Type-Checking Ifdef Variability https://github.com/ckaestne/TypeChef https://github.com/ckaestne/TypeChef KBuildMiner http://code.google.com/p/variability/wiki/PresenceConditionsExtraction http://code.google.com/p/variability/wiki/PresenceConditionsExtraction To analyze variability models: LVAT https://code.google.com/p/linux-variability-analysis-tools https://code.google.com/p/linux-variability-analysis-tools CDLTools https://bitbucket.org/tberger/cdltools https://bitbucket.org/tberger/cdltools Sarah Nadi 15
Empirical study Objectives: O1: Evaluate accuracy and scalability of extraction O2: Quantitatively and qualitatively study kinds of (extractable) constraints in real-world systems Used four systems with existing variability models Compare extracted constraints to existing hierarchy & crosstree edges in the model Sarah Nadi 16 Linux Kernel 7,691 C files 6,559 Features BusyBox 535 C files 844 Features eCos 579 C files 1,254 features uClibc 1,628 C files 367 features
Is the extraction accurate? Sarah Nadi 17 Specification 1 is 95% accurate Specification 2 is 76% accurate
Which constraints are recovered? Sarah Nadi 18 Can automatically recover 23% of variability model constraints! 5% by Specification 1 17% by Specification 2 Hierarchy edges reflected in code nesting Crosstree edges prevent build- time errors
Qualitative analysis of 144 unrecovered constraints What about constraints not found? Sarah Nadi 19 21% additional analyses 19% limitation in comparison 19% configurator-related 29% unknown 9% domain knowledge 3% limitation in extraction Manual analysis of constraints is hard! Some constraints are non-technical & need expert knowledge Qualitative analysis is subjective
Challenges Presence conditions and constraints explode Limit complexity of constraints used Use non-SAT based constraint combination techniques Different ways to compare constraints Our comparison is limited to binary constraints Other techniques which may be used? Understand the intent of different constraints without interviewing developers Sarah Nadi 20
Sarah Nadi 21 Automatically DoneAccurateExtracts substantial parts of VM An expert may still be needed Sarah Nadi (finishing soon … interested in a post doc) firstname.lastname@example.org@uwaterloo.ca http://swag.uwaterloo.ca/~snadihttp://swag.uwaterloo.ca/~snadi Extracting configuration constraints from code (95% & 76% respectively) Conditional Build-time errors & Feature Effect (Avg. 23% & up to 65%) Questions?
Pre-processor Error if ASH && NOMMU Parser Error if ASH && EDITING && !MAX_LEN Type Error if ASH && EDITING_VI && MAX_LEN && !EDITING Invalid Configuration Constraint: ASH => !NOMMU Sarah Nadi 22 Linker Error if ASH && EDITING && !INIT
Constraint formulas Preprocessor, parser, and type-checking constraints Linker constraints Feature effect 23 conditional symbol table Sarah Nadi
How are constraints used? Hierarchy edges are mainly reflected in how features are used/nested in the code (Spec 2: feature effect analysis) Cross tree edges are often used to prevent build-time errors (Spec 1: conditional build-time errors) Sarah Nadi 24
Partial pre-processor (lexer) 25 slide credits: C. Kästner Sarah Nadi