You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+32-1Lines changed: 32 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,6 +18,36 @@ The artefact mainly consists of a library written in the Haskell language that i
18
18
The library is accompanied with a demo application that uses the library to reproduce our motivating example (Alice and Bob using feature trace recording in Section 2 in our paper) as well as examples of the edit patterns we used to evaluate feature trace recording (Section 5).
19
19
20
20
21
+
## What is Feature Trace Recording?
22
+
23
+
Feature trace recording is a semi-automated method for recording feature-to-code mappings during software development.
24
+
It unlocks evolution as a new source of information for feature location.
Consider a developer Alice editing the `pop` method of a `Stack` class in Java as depicted in the image above.
29
+
Feature-to-code mappings are indicated by corresponding colours.
30
+
By labeling her edits with the feature she edits, we derive feature mappings for edited source code.
31
+
We refer to such a label as [_feature context_](https://pmbittner.github.io/FeatureTraceRecording/FeatureTraceRecording.html#t:FeatureContext).
32
+
It can be left empty when developers do not know the feature they edit.
33
+
In our example, Alice does not know the feature of the moved line in her second edit and omits the feature context (i.e., sets it to null).
34
+
35
+
From feature contexts we can compute feature mappings for the current code base but also for other variants.
36
+
Assume there is a second developer, Bob, working on another variant (e.g., branch or fork) of the software.
37
+
Bob’s variant might implement other features than Alice’s.
38
+
Assume Bob’s variant implements the blue feature <spanstyle="color:#00BEEB">SafeStack</span> but not the orange feature <spanstyle="color:#D95F02">ImmutableStack</span>.
39
+
Although Alice made many edits to <spanstyle="color:#D95F02">ImmutableStack</span>, we can still derive feature mappings for Bob’s code.
40
+
When Alice deletes code from <spanstyle="color:#D95F02">ImmutableStack</span>, we can infer that this code does not belong to <spanstyle="color:#D95F02">ImmutableStack</span> anymore.
41
+
We thus introduce the new feature mapping <spanstyle="color:#7570B3">¬ImmutableStack</span> for the deleted code that is still present in Bob’s variant (highlighted in purple):
42
+
43
+
<imgsrc="meta/BobsVariant.png"alt="Bob's Recorded Feature Traces"width="250" />
44
+
45
+
A detailed explanation of this example can be found in our [paper][paper] and [preprint][preprint].
46
+
47
+
Feature trace recording is the first step towards our vision for bridging the gap between clone-and-own and software product lines in our project [VariantSync][variantsync].
48
+
You may read about it in our [ICSE NIER paper](https://tinyurl.com/variantsync) or watch our talk on [YouTube](https://www.youtube.com/watch?v=oJf8W4cE25A):blush:.
49
+
50
+
21
51
## How to Run the Demo
22
52
Our library is written in Haskell and uses the _Stack_ build system (see [REQUIREMENTS.md](REQUIREMENTS.md)).
23
53
Instructions for installing Stack, building our library and running the demo are given in the [INSTALL.md](INSTALL.md).
@@ -77,7 +107,7 @@ Currently, the library also does not provide (de-)serialisation of feature trace
77
107
78
108
## Contact
79
109
80
-
Don't hesitate to open issues or pull-request or to contact us directly (paul.bittner@uni-ulm.de). We are thankful for questions, constructive criticism, or interest. :blush:
110
+
Don't hesitate to open issues or pull-request or to contact us directly (paul.bittner@uni-ulm.de). We are thankful for any questions, constructive criticism, or interest. :blush:
0 commit comments