Skip to content

Commit 38a515d

Browse files
committed
explanation on FTR
1 parent 52a7c03 commit 38a515d

3 files changed

Lines changed: 32 additions & 1 deletion

File tree

README.md

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,36 @@ The artefact mainly consists of a library written in the Haskell language that i
1818
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).
1919

2020

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.
25+
26+
![Feature Trace Recording Example](meta/FeatureTraceRecording.png)
27+
28+
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 <span style="color:#00BEEB">SafeStack</span> but not the orange feature <span style="color:#D95F02">ImmutableStack</span>.
39+
Although Alice made many edits to <span style="color:#D95F02">ImmutableStack</span>, we can still derive feature mappings for Bob’s code.
40+
When Alice deletes code from <span style="color:#D95F02">ImmutableStack</span>, we can infer that this code does not belong to <span style="color:#D95F02">ImmutableStack</span> anymore.
41+
We thus introduce the new feature mapping <span style="color:#7570B3">¬ImmutableStack</span> for the deleted code that is still present in Bob’s variant (highlighted in purple):
42+
43+
<img src="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+
2151
## How to Run the Demo
2252
Our library is written in Haskell and uses the _Stack_ build system (see [REQUIREMENTS.md](REQUIREMENTS.md)).
2353
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
77107

78108
## Contact
79109

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:
81111

82112

83113
[paul]: https://www.uni-ulm.de/in/sp/team/paul-maximilian-bittner/
@@ -90,3 +120,4 @@ Don't hesitate to open issues or pull-request or to contact us directly (paul.bi
90120
[documentation]: https://pmbittner.github.io/FeatureTraceRecording/
91121
[preprint]: https://github.com/SoftVarE-Group/Papers/raw/master/2021/2021-ESECFSE-Bittner.pdf
92122
[paper]: https://doi.org/10.1145/3468264.3468531
123+
[variantsync]: https://www.uni-ulm.de/en/in/sp/research/projects/variantsync/

meta/BobsVariant.png

29.3 KB
Loading

meta/FeatureTraceRecording.png

97.6 KB
Loading

0 commit comments

Comments
 (0)