Consolidating software variants into software product lines: a - - PowerPoint PPT Presentation
Consolidating software variants into software product lines: a - - PowerPoint PPT Presentation
Consolidating software variants into software product lines: a research outline Rainer Koschke University of Bremen, Germany Working Conference on Reverse Engineering 10th of October 2005 Motivation software product lines grow out of
Motivation
software product lines grow out of experience they often emerge through ad-hoc copying in-the-large with adaptations to the specific context maintaining these software variants becomes a nightmare → we want to consolidate these software variants into product lines → commonalities/variabilities at both architecture and source code level need to identified
Rainer Koschke (Univ. Bremen) Consolidating software variants into software product lines
- 10. Nov. 2005
2 / 10
Bauhaus/PL
Bauhaus/PL is a three-year project funded by the University of Bremen (started 1 of November 2005) Bauhaus/PL builds on our tools and experiences in software clone detection reflexion model feature location protocol reconstruction Challenges: extend these techniques to multiple variants by minimizing the effort of the analysis to the delta
Rainer Koschke (Univ. Bremen) Consolidating software variants into software product lines
- 10. Nov. 2005
3 / 10
Clone detection
Clone detection is used to find corresponding code between two variants available: very fast token-based clone detection (variant of Baker’s) syntax-based clone detector (variant of Baxter’s) additions/extensions: search between variants rather than within a single system propagate result to architecture level
Rainer Koschke (Univ. Bremen) Consolidating software variants into software product lines
- 10. Nov. 2005
4 / 10
Feature location
Feature location gives us mapping of features onto code. available: concept-lattice based feature location additions/extensions: additional dimension for each variant
Rainer Koschke (Univ. Bremen) Consolidating software variants into software product lines
- 10. Nov. 2005
5 / 10
Feature location (Eisenbarth et al., 2003)
Which code implements these features specifically?
static program slicing feature−specific units common units common features feature implication formal concept analysis f3 u3 u4 t3 f2 u2 t2 f1 u1 t1 [Birkhoff, 1940] features f1 f2 f3 X X X X X test case t3 profile t3 X X test case t2 profile t2 X X X u1 u2 u3 u4
- exec. units
X X X test case t1 profile t1 instrumented program instrumentation program
Rainer Koschke (Univ. Bremen) Consolidating software variants into software product lines
- 10. Nov. 2005
6 / 10
Reflexion model
Reflexion model gives us module view Hierarchical reflexion model (Koschke and Simon, 2003)
H3 H1 H2
additions/extensions: variabilities in hypothesized model source entities may differ existing mapping should be carried onto next system under analysis
Rainer Koschke (Univ. Bremen) Consolidating software variants into software product lines
- 10. Nov. 2005
7 / 10
Protocol Reconstruction
Protocol reconstruction: behavioral information (Eisenbarth et al., 2005)
empty non−empty white−box analysis push init pop [!is_empty] is_empty pop [is_empty] is_empty init push is_empty pop protocol t * black−box unification init is_empty pop push instance n ... ... init push pop is_empty instance 1
additions/extensions: protocol variations
Rainer Koschke (Univ. Bremen) Consolidating software variants into software product lines
- 10. Nov. 2005
8 / 10
Eisenbarth, Thomas, Rainer Koschke, and Daniel Simon. 2003. Locating features in source code. IEEE Transactions on Software Engineering 29(3). Eisenbarth, Thomas, Rainer Koschke, and Gunther Vogel. 2005. Static
- bject trace extraction for programs with pointers.
Journals of Systems and Software . Koschke, Rainer, and Daniel Simon. 2003. Hierarchical reflexion models. In Working conference on reverse engineering, 36–45. IEEE Computer Society Press.
Rainer Koschke (Univ. Bremen) Consolidating software variants into software product lines
- 10. Nov. 2005
10 / 10