pure::variants User's Guide

Version 5.0.11.685 for pure::variants 5.0

2022


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 Multiple Languages in Models
6.13. Importing and Exporting Models
6.13.1. Exporting Models
6.13.2. Importing Models
6.14. External Build Support (Ant Tasks)
6.14.1. pv.import
6.14.2. pv.evaluate
6.14.3. pv.transform
6.14.4. pv.validate
6.14.5. pv.inherit
6.14.6. pv.connect
6.14.7. pv.sync
6.14.8. pv.mergeselection
6.14.9. pv.javascript
6.14.10. pv.offline
6.14.11. pv.online
6.14.12. pv.userrolesync
6.14.13. pv.property
6.15. Linking between pure::variants and external resources
6.16. Manipulating Text Files
6.16.1. Setting Up the Transformation
6.16.2. Editing Conditions and Calculations in Text Files
6.17. Using Known Servers Preferences
6.17.1. Central deployment mechanism of servers
6.18. Convert a pure::variants 4 project into a pure::variants 5 project
6.19. Customizing the Variant Configuration Process
6.19.1. Creating a Variant Configuration Wizard Model
6.19.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. Additional pure::variants Extensions
8.1. Installation of Additional pure::variants Extensions
9. Reference
9.1. Element Attribute Types
9.2. Element Relation Types
9.3. Element Variation Types
9.4. Element Selection Types
9.5. Predefined Source Element Types
9.5.1. ps:dir
9.5.2. ps:file
9.5.3. ps:fragment
9.5.4. ps:condxml
9.5.5. ps:condtext
9.5.6. ps:pvsclxml
9.5.7. ps:pvscltext
9.5.8. ps:flagfile
9.5.9. ps:makefile
9.5.10. ps:classaliasfile
9.5.11. ps:symlink
9.6. Predefined Part Element Types
9.6.1. ps:classalias
9.6.2. ps:class
9.6.3. ps:flag
9.6.4. ps:variable
9.6.5. ps:feature
9.7. Expression Language pvSCL
9.7.1. How to read this reference
9.7.2. Comments
9.7.3. Boolean Values
9.7.4. Numbers
9.7.5. Strings
9.7.6. Collections
9.7.7. SELF and CONTEXT
9.7.8. Name and ID References
9.7.9. Element Selection State Check
9.7.10. Attribute Access
9.7.11. Logical Combinations
9.7.12. Relations
9.7.13. Conditionals
9.7.14. Value Comparison
9.7.15. Arithmetics
9.7.16. Variable Declarations
9.7.17. Function Definitions
9.7.18. Function Calls
9.7.19. Iterators
9.7.20. Accumulators
9.7.21. Error handling
9.7.22. Function Library
9.7.23. User-Defined pvSCL Functions
9.8. XSLT Extension Functions
9.9. Predefined Variables
9.10. Regular Expressions
9.10.1. Characters
9.10.2. Character Sequences
9.10.3. Repetition
9.10.4. Alternation
9.10.5. Grouping
9.10.6. Boundaries
9.10.7. Back References
9.11. Keyboard Shortcuts
10. Appendices
10.1. Software Configuration
10.2. User Interface Advanced Concepts
10.2.1. Console View
10.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 car
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: Transformation input/output paths
6.17. Configuration Space properties: Transformation Configuration
6.18. Transformation module selection dialog
6.19. Transformation module parameters
6.20. Configuration Space properties: Transformation Configuration
6.21. Configuration Space properties: Transformation Configuration
6.22. The Standard Transformation Type Model
6.23. Multiple attribute definitions for Value calculation
6.24. Sample Project using Regular Expressions
6.25. Model Validation Preferences Page
6.26. New Check Configuration Dialog
6.27. Automatic Model Validation Preferences Page
6.28. Model Validation in Progress
6.29. Refactoring context menu for a feature
6.30. Model Compare Editor
6.31. The Variant Search Dialog
6.32. Quick Overview in a Feature Model
6.33.
6.34. The similarity input configuration dialog
6.35. The similarity calculation result dialog
6.36. Similarity Matrix
6.37.
6.38. The same selection result dialog
6.39. The same selection result dialog
6.40. The same selection result dialog
6.41. The same selection result dialog
6.42. The same selection result dialog
6.43. Filter definition dialog
6.44. Metrics for a model
6.45. Type Model Editor Example
6.46. Language selection in the element properties dialog
6.47. HTML Export Wizard
6.48. HTML Export Wizard
6.49. HTML Export Result
6.50. HTML Transformation Module
6.51. HTML Transformation Module Parameters
6.52. Directed graph export example
6.53. Directed graph export example (options LR direction, Colored)
6.54. Import Dialog
6.55. Select Variant Import Format
6.56. Specify Source file
6.57. Specify pure::variants model
6.58. Imported Feature Model
6.59. Excel File Structure
6.60. Import Dialog
6.61. Select Variant Import Format
6.62. Select Target and Specify Source file
6.63. Select Pattern for feature Selection
6.64. Imported Feature Model
6.65. JavaScript Manipulator Wizard Page
6.66. Ant Build Action
6.67. Ant Build JRE Parameter
6.68. Relations View with external Links
6.69. Family Model with ps:pvscltext transformation setup
6.70. Editing pvSCL conditions or calculations
6.71. Known Servers page
6.72. pure::variants Project Version
6.73. New Variant Configuration Model
6.74. Add the new Variant Configuration Model to Configuration Spaces
6.75. Add a Variant Configuration Model to a Configuration Space
6.76. VCWM Editor General Settings Section
6.77. VCWM Editor Start Page Section
6.78. 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. Open Impact View
7.37. Impact Calculation Result
7.38. Impact View Context Menu
7.39. Open pvSCL IDE View
7.40. Open pvSCL IDE View
7.41. Assign context element to pvSCL IDE
7.42. The pvSCL IDE View
7.43. The Variant Projects View
7.44. Feature Model Properties Page
7.45. General Model Properties Page
7.46. Variant Description Model Inheritance Page
9.1. pvSCL Code Library Model Property Page
10.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
9.1. Supported Attribute Types
9.2. Supported relations between elements (I)
9.3. Supported Relations between Elements (II)
9.4. Element variation types and its icons
9.5. Types of element selections
9.6. Predefined source element types
9.7. Registered XSLT Extensions
9.8. Predefined part types
9.9. Supported format specifiers
9.10. Extension functions providing model information
9.11. Extension functions providing transformation information
9.12. Extension elements for logging and user messages
9.13. Extension functions providing file operations
9.14. Extension functions providing string operations
9.15. Supported Variables
9.16. Common Keyboard Shortcuts
9.17. Model Editor Keyboard Shortcuts
9.18. Graph Editor Keyboard Shortcuts

List of Examples

9.1. A sample conditional document for use with the ps:condxml transformation
9.2. Example use of pv:value-of
9.3. A sample conditional document for use with the ps:condtext transformation
9.4. A sample conditional document for use with the ps:pvsclxml transformation
9.5. Example use of pv:eval
9.6. A sample conditional document for use with the ps:pvscltext transformation
9.7. Generated code for a ps:flagfile for flag "DEFAULT" with value "1"
9.8. Generated code for a ps:makefile for variable "CXX_OPTFLAGS" with value "-O6"
9.9. Generated code for a ps:classalias for alias "io::net::PCConn" with aliased class "NoConn"