Complete workspace that was used during the demonstration of VariantSync at SPLC'16 in Beijing, China
This is an example for VariantSync. The following instructions are a guide for this example. For a step by step guide please consider the available screencasts.
- Import all projects into your Eclipse Workspace. All Notepad projects should be marked as VariantSync projects () except for NotepadH. You might want to switch to the VariantSync perspective to open all necessary windows for the following examples.
- Run variants A to D. You will see different implementations of notebooks, which are already developed with VariantSync.
- Open the feature model in the
variantsyncFeatureInfo
project. - Create a new configuration
NotepadH
with the featuresFormatRaw
andUndo
invariantsyncFeatureInfo/configs
. - Right click project
NotepadH
and clickConfigure > Add As Variant
to enable VariantSync support for this project. - First example:
- Set the context to
TextStyled
and start recording. - Open the
Notepad.java
in variant B. - After line 252, add a new line with the following content:
textPane.setText("Hello VariantSync users");
. When saving the file you will see the line annotated with featureTextStyled
. As variant B is the only feature implementing this feature (visible in theConfiguration Map
) no synchronization has to be performed. - Stop recording.
- Set the context to
- Second example:
- Set the context to
Toolbar
and start recording. - Open the
Notepad.java
in variantC
. - In line 331, change the string
North
toSouth
. - Compare variants
C
andE
with the Eclipse compare view. - Open the
Notepad.java
in variantE
. - Synchronize the variants with the source-focused view.
- Look at the corresponding line of the
Notepad.java
in variantE
- Set the context to
- Third example:
- Set the context to
Undo
and start recording. - Open the
UndoAction.java
in variantE
. - Change the super call in the constructor from
Undo
toUndo Edit
. - Synchronize the variants with the source-focused view.
- Look at the results in variants
A
,C
, andF
(As NotepadH does not have featureMenuBar
the change is not visible in the application). You can see all configurations implementing a feature in the configuration map of FeatureIDE.
- Set the context to
- Fourth example:
- Set the context to
Base
and start recording. - Open the
Notepad.java
in any variant. - In the constructor, change the value
300
to400
. - Synchronize the variants with the source-focused view.
- Look at the results in variants with and without merge conflicts.
- Set the context to
Instructions for Resproductions of the Screencast
To reproduce the screencasts dedicated branches are available when a certain setup is required:
- Video 1 (Automating the Synchronization of Software Variants): You can use the
master
branch to reproduce this scenario. - Video 2 (Setting-Up Legacy Clones for Synchronization): Please checkout the branch
screencast_video2
. At the end of the video you will see the project in a state like in themaster
branch. - Video 3 (Recording Feature Mappings During Clone Evolution): You can use the
master
branch to reproduce this scenario. - Video 4 (Change Synchronization into Multiple Clones): Please checkout the branch
screencast_video4
. - Video 5 (Change Synchronization from Multiple Clones): Please checkout the branch
screencast_video5
. One of the changes may require a manual merge and cannot be merged automatically as shown in the video.