Pure Variants User's Guide

Version 7.1.0.685 for Pure Variants 7.1

2025


Table of Contents

1. Introduction
1.1. What is Pure Variants?
1.2. Link to PDF and Other Related Documents
2. Software and License Installation
2.1. Software Requirements
2.2. Software Installation
2.3. Obtaining and Installing a License
3. Introduction to Product Line Engineering with Feature Models
3.1. Introduction
3.2. Software Product Lines
3.3. Modelling the Problem Space with Feature Models
3.4. Modelling the Solution Space
3.5. Designing a variable architecture
3.6. Deriving product variants
4. Getting Started with Pure Variants
4.1. Variant Management Perspective
4.2. Tooltips
4.3. Using Feature Models
4.4. Using Configuration Spaces
4.5. Transforming Configuration Results
4.6. Viewing and Exporting Configuration Results
4.7. Exploring Documentation and Examples
5. Concepts
5.1. Introduction
5.2. Common Concepts in Pure Variants Models
5.2.1. Model Constraints
5.2.2. Element Restrictions
5.2.3. Element Relations
5.2.4. Element Attributes
5.3. Feature Models
5.3.1. Feature Attributes
5.4. Family Models
5.4.1. Structure of the Family Model
5.4.2. Restrictions in Family Models
5.4.3. Relations in Family Models
5.5. Variant Description Models
5.6. Hierarchical Variant Composition
5.7. Inheritance of Variant Descriptions
5.7.1. Inheritance Rules
5.8. Variant Description Evaluation
5.8.1. Evaluation Algorithm
5.8.2. Partial Evaluation
5.9. Variant Transformation
5.9.1. The Transformation Process
5.9.2. Variant Result Models
5.10. Variant Update
5.10.1. File based Update
6. Tasks
6.1. Evaluating Variant Descriptions
6.1.1. Configuring the Evaluation
6.1.2. Setting the VDM Configuration Mode
6.1.3. Default Element Selection State
6.1.4. Automatic Resolving of Selection Problems
6.1.5. Automatic Selection
6.1.6. Configuring the Auto Resolver
6.2. Reuse of Variant Descriptions
6.2.1. Hierarchical Variant Composition
6.2.2. Inheritance of Variant Descriptions
6.2.3. Load a Variant Description
6.2.4. Rename Reused Variant Description Model
6.2.5. Reorder Reused Variant Description Models
6.3. Transforming Variants
6.3.1. Setting up a Transformation
6.3.2. Standard Transformation
6.3.3. User-defined transformation scripts with JavaScript
6.3.4. Transformation of Hierarchical Variants
6.3.5. Reusing existing Transformation
6.3.6. Ant Build Transformation Module
6.4. Validating Models
6.4.1. XML Schema Model Validation
6.4.2. Model Check Framework
6.5. Refactoring Models
6.6. Comparing Models
6.6.1. General Eclipse Compare
6.6.2. Model Compare Editor
6.6.3. Conflicts
6.6.4. Compare Example
6.7. Searching in Models
6.7.1. Variant Search
6.7.2. Quick Overview
6.8. Analyse Models
6.8.1. Finding variant description models with similar selections
6.8.2. Finding variant description models with the same selection
6.8.3. Find elements with the same selection states in all variant description models
6.8.4. Find constant and variable elements in all variant description models
6.9. Filtering Models
6.10. Computing Model Metrics
6.11. Extending the Type Model
6.12. Using resource model
6.12.1. Supported resources
6.12.2. Migrate existing project to resource model
6.12.3. Edit resource
6.12.4. Edit Filter
6.13. Using Multiple Languages in Models
6.14. Importing and Exporting Models
6.14.1. Exporting Models
6.14.2. Importing Models
6.15. External Build Support (Ant Tasks)
6.15.1. pv.import
6.15.2. pv.evaluate
6.15.3. pv.transform
6.15.4. pv.validate
6.15.5. pv.inherit
6.15.6. pv.connect
6.15.7. pv.sync
6.15.8. pv.syntaxsemanticcheck
6.15.9. pv.mergeselection
6.15.10. pv.javascript
6.15.11. pv.offline
6.15.12. pv.online
6.15.13. pv.userrolesync
6.15.14. pv.property
6.15.15. pv.about
6.16. Linking between Pure Variants and external resources
6.17. Manipulating Text Files
6.17.1. Setting Up the Transformation
6.17.2. Editing Conditions and Calculations in Text Files
6.18. Using Known Servers Preferences
6.18.1. Central deployment mechanism of servers
6.19. Convert a Pure Variants 4 project into a Pure Variants 5 project
6.20. Customizing the Variant Configuration Process
6.20.1. Creating a Variant Configuration Wizard Model
6.20.2. Configure a Variant Configuration Wizard Model
7. Graphical User Interface
7.1. Getting Started with Eclipse
7.2. Variant Management Perspective
7.3. Editors
7.3.1. Common Editor Pages
7.3.2. Feature Model Editor
7.3.3. Family Model Editor
7.3.4. Variant Description Model Editor
7.3.5. Variant Result Model Editor
7.3.6. Model Compare Editor
7.3.7. Matrix Editor
7.4. Views
7.4.1. Attributes View
7.4.2. Visualization View
7.4.3. Search View
7.4.4. Outline View
7.4.5. Problem View/Task View
7.4.6. Properties View
7.4.7. Relations View
7.4.8. Result View
7.4.9. Impact View
7.4.10. pvSCL IDE
7.4.11. Variant Projects View
7.5. Model Properties
7.5.1. Common Properties Page
7.5.2. General Properties Page
7.5.3. Inheritance Page
8. Clone
8.1. Clone Variant Model
8.2. A Clone Configuration Space
8.3. A Clone Instance
9. Additional Pure Variants Extensions
9.1. Installation of Additional Pure Variants Extensions
10. Reference
10.1. Element Attribute Types
10.2. Element Relation Types
10.3. Element Variation Types
10.4. Element Selection Types
10.5. Predefined Source Element Types
10.5.1. ps:dir
10.5.2. ps:file
10.5.3. ps:fragment
10.5.4. ps:pvsclxml
10.5.5. ps:pvscltext
10.5.6. ps:flagfile
10.5.7. ps:makefile
10.5.8. ps:classaliasfile
10.5.9. ps:symlink
10.6. Predefined Part Element Types
10.6.1. ps:classalias
10.6.2. ps:class
10.6.3. ps:flag
10.6.4. ps:variable
10.6.5. ps:feature
10.7. Expression Language pvSCL
10.7.1. How to read this reference
10.7.2. Comments
10.7.3. Boolean Values
10.7.4. Numbers
10.7.5. Strings
10.7.6. Collections
10.7.7. SELF and CONTEXT
10.7.8. Name and ID References
10.7.9. Element Selection State Check
10.7.10. Attribute Access
10.7.11. Logical Combinations
10.7.12. Relations
10.7.13. Conditionals
10.7.14. Value Comparison
10.7.15. Arithmetics
10.7.16. Variable Declarations
10.7.17. Function Definitions
10.7.18. Function Calls
10.7.19. Iterators
10.7.20. Accumulators
10.7.21. Error Handling
10.7.22. Limitations
10.7.23. Function Library
10.7.24. User-Defined pvSCL Functions
10.8. Predefined Variables
10.9. Regular Expressions
10.9.1. Characters
10.9.2. Character Sequences
10.9.3. Repetition
10.9.4. Alternation
10.9.5. Grouping
10.9.6. Boundaries
10.9.7. Back References
10.10. Keyboard Shortcuts
10.11. Naming Restrictions
10.11.1. Project Name
10.11.2. Folder Name
10.11.3. Config Space Name
10.11.4. Model Name
10.11.5. Revision Name
11. Appendices
11.1. Software Configuration
11.2. User Interface Advanced Concepts
11.2.1. Console View
11.3. Glossary
Index

List of Figures

1.1. Overview of family-based software development with Pure Variants
3.1. Overview of SPLE activities
3.2. Structure and notation of feature models (using Pure Variants Directed Graph Export)
3.3. Feature Model for meteorological Product Line
3.4. Enhanced Feature Model for meteorological Product Line
3.5. Pure Variants screen shot - solution space fragment shown at right
4.1. Initial layout of the Variant Management Perspective
4.2. Switching Tooltips on/off
4.3. A simple Feature Model of a weather station
4.4. VDM with a problematic selection
4.5. Transformation configuration in Configuration Space Properties
4.6. Transformation button in Eclipse toolbar
4.7. VDM export wizard
5.1. Pure Variants transformation process
5.2. (simplified) element meta model
5.3. (Simplified) element attribute meta-model
5.4. Basic structure of Feature Models
5.5. Basic structure of Family Models
5.6. Sample Family Model
5.7. Model Evaluation Algorithm (Pseudo Code)
5.8. XML Transformer
5.9. General Update functionality
5.10. Folder Structure
6.1. VDM Editor with Outline, Result, Problems, and Attributes View
6.2. Model Evaluation Preferences Page
6.3. Configuration Space Evaluation Settings Page
6.4. Variant Model Configuration Mode Page
6.5. Automatically Resolved Feature Selections
6.6. Auto Resolver Preferences Page
6.7. Unique Names in a Variant Hierarchy
6.8. Example Variant Hierarchy
6.9. Load Selection Dialog
6.10. Rename Reused Variant Description Model
6.11. Rename Dialog
6.12. Reorder Reused Variant Description Models
6.13. Reorder Instances Dialog
6.14. Multiple Transform Button
6.15. Configuration Space properties: Model Selection
6.16. Configuration Space properties: Properties
6.17. Configuration Space properties: Transformation input/output paths
6.18. Configuration Space properties: Transformation Configuration
6.19. Transformation module selection dialog
6.20. Transformation module parameters
6.21. Configuration Space properties: Transformation Configuration
6.22. Configuration Space properties: Transformation Configuration
6.23. Configuration Space properties: Transformation Configuration
6.24. Configuration Space properties: Transformation Configuration
6.25. Configuration Space properties: Transformation Configuration
6.26. The Standard Transformation Type Model
6.27. Multiple attribute definitions for Value calculation
6.28. Model Validation Preferences Page
6.29. New Check Configuration Dialog
6.30. Automatic Model Validation Preferences Page
6.31. Model Validation in Progress
6.32. Refactoring context menu for a feature
6.33. Model Compare Editor
6.34. The Variant Search Dialog
6.35. Quick Overview in a Feature Model
6.36.
6.37. The similarity input configuration dialog
6.38. The similarity calculation result dialog
6.39. Similarity Matrix
6.40.
6.41. The same selection result dialog
6.42. The same selection result dialog
6.43. The same selection result dialog
6.44. The same selection result dialog
6.45. The same selection result dialog
6.46. Filter definition dialog
6.47. Metrics for a model
6.48. Variant Management Metric Settings
6.49. Examples of Variant Counting Results
6.50. Type Model Editor Example
6.51. Type Model Editor Example
6.52. New Resource
6.53. New Resource
6.54. Language selection in the element properties dialog
6.55. HTML Export Wizard
6.56. HTML Export Wizard
6.57. HTML Export Result
6.58. HTML Transformation Module
6.59. HTML Transformation Module Parameters
6.60. Directed graph export example
6.61. Directed graph export example (options LR direction, Colored)
6.62. Import Dialog
6.63. Select Variant Import Format
6.64. Specify Source file
6.65. Specify Pure Variants model
6.66. Imported Feature Model
6.67. Excel File Structure
6.68. Import Dialog
6.69. Select Variant Import Format
6.70. Select Target and Specify Source file
6.71. Select Pattern for feature Selection
6.72. Imported Feature Model
6.73. JavaScript Manipulator Wizard Page
6.74. Ant Build Action
6.75. Ant Build JRE Parameter
6.76. Relations View with external Links
6.77. Family Model with ps:pvscltext transformation setup
6.78. Editing pvSCL conditions or calculations
6.79. Known Servers page
6.80. Pure Variants Project Version
6.81. New Variant Configuration Model
6.82. Add the new Variant Configuration Model to Configuration Spaces
6.83. Add a Variant Configuration Model to a Configuration Space
6.84. VCWM Editor General Settings Section
6.85. VCWM Editor Start Page Section
6.86. VCWM Editor Finish Page Section
7.1. Eclipse workbench elements
7.2. Variant management perspective standard layout
7.3. Constraints view
7.4. Selected Element Selection Tool
7.5. Feature/Family Model Element Creation Tools
7.6. Family Model Element Properties
7.7. Element Relations Page
7.8. Sample attribute definitions for a feature
7.9. Restrictions page of element properties dialog
7.10. Constraints page of element properties dialog
7.11. Advanced pvSCL expression editor
7.12. Element selection dialog
7.13. Feature Model Editor with outline and property view
7.14. New Feature wizard
7.15. Feature Model Element Properties
7.16. Open Family Model Editor with outline and property view
7.17. Finalize Configuration Dialog
7.18. Variant Configuration Wizard Start Page
7.19. Variant Configuration Wizard Step Page
7.20. Variant Configuration Wizard Finish Page
7.21. Specifying an attribute value in VDM with cell editor
7.22. Outline view showing the list of available elements in a VDM
7.23. VRM Editor with outline and properties view
7.24. Matrix Editor of a Configuration Space
7.25. Export Matrix Dialog
7.26. Attributes view (right) showing the attributes for the VDM
7.27. Visualization view (left) showing 2 named filters and 2 named layouts
7.28. Variant Search View (Tree)
7.29. Variant Search View (Table)
7.30. Properties view for a feature
7.31. Description tab in Properties view for a relation
7.32. Properties view for a variant attribute
7.33. Relations view (different layouts) for feature with a ps:requires to feature 'Main Component Big'
7.34. Result View
7.35. Result View in Delta Mode
7.36. Impact Calculation Result
7.37. Impact View Context Menu
7.38. Assign context element to pvSCL IDE
7.39. The pvSCL IDE View
7.40. The Variant Projects View
7.41. Feature Model Properties Page
7.42. General Model Properties Page
7.43. Variant Description Model Inheritance Page
8.1. A Clone Varaint Model
8.2. a comparison between the original and new clone variant model.
8.3. A Clone Configuration Space
8.4. a comparison between the original and new clone configuration space.
8.5. A Clone Instance
8.6. a comparison between the original and new clone Instance.
10.1. pvSCL Code Library Model Property Page
11.1. The configuration dialog of Pure Variants

List of Tables

5.1. Mapping between input and concrete model types
6.1. Configuration Space Settings
6.2. Refactoring Operations
6.3. Table of CSS classes
6.4. Import Fields
6.5. Environment Variables
6.6. runant Command Line Parameters
6.7. variantscli Command Line Parameters
6.8. Table of server category IDs
10.1. Supported Attribute Types
10.2. Supported relations between elements (I)
10.3. Element variation types and its icons
10.4. Types of element selections
10.5. Predefined source element types
10.6. Predefined part types
10.7. Supported format specifiers
10.8. Supported Variables
10.9. Common Keyboard Shortcuts
10.10. Model Editor Keyboard Shortcuts
10.11. Graph Editor Keyboard Shortcuts

List of Examples

10.1. A sample conditional document for use with the ps:pvsclxml transformation
10.2. Example use of pv:eval
10.3. A sample conditional document for use with the ps:pvscltext transformation
10.4. Generated code for a ps:flagfile for flag "DEFAULT" with value "1"
10.5. Generated code for a ps:makefile for variable "CXX_OPTFLAGS" with value "-O6"
10.6. Generated code for a ps:classalias for alias "io::net::PCConn" with aliased class "NoConn"
10.7. Generated code for a ps:classalias for alias "io::net::PCConn" with aliased class "NoConn" with includebasedir set to "usr/wm-src"