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 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? program exec. units features instrumentation u1 u2 u3 u4 f1 f2 f3 test case t1 profile t1 X X X X X instrumented test case t2 profile t2 X X X X X program test case t3 profile t3 X X X feature−specific units common units formal t1 t2 common features concept f1 u1 f2 u2 feature implication analysis t3 [Birkhoff, 1940] f3 u3 u4 static program slicing 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) H1 H2 H3 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) ... instance 1 instance n protocol init init init push init is_empty push ... empty pop push is_empty is_empty pop [is_empty] push is_empty * t is_empty non−empty pop [!is_empty] pop pop white−box analysis black−box unification 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 object 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
Recommend
More recommend