Language-Independent Safe Decomposition of Legacy Applications into Features

Software product lines (SPL) usually consist of code and non-code artifacts written in different languages. Often they are created by decomposing legacy applications into features. To handle different artifacts uniformly (code, documentation, models, etc.), current SPL technologies either use an approach that is so general that it works on character or token level, but can easily introduce subtle errors; or they provide specialized tools for a low number of languages. Syntax errors that only occur in certain variants are difficult to detect, as the exploding number of variants makes a manual testing unfeasible. In this paper, we present CIDE, an generic SPL tool that can ensure syntactic correctness for all variants. We show CIDE’s underlying mechanism that

[1]  William R. Cook,et al.  Safe composition of product lines , 2007, GPCE '07.

[2]  Sven Apel,et al.  Superimposition: A Language-Independent Approach to Software Composition , 2008, SC@ETAPS.

[3]  Sven Apel,et al.  Granularity in software product lines , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[4]  Kris De Volder,et al.  Programming with Crosscutting Effective Views , 2004, ECOOP.

[5]  Weishan Zhang,et al.  XVCL: XML-based variant configuration language , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[6]  Don S. Batory,et al.  Scaling step-wise refinement , 2004, IEEE Transactions on Software Engineering.

[7]  Mark Chu-Carroll,et al.  Visual separation of concerns through multidimensional program storage , 2003, AOSD '03.

[8]  Charles Simonyi,et al.  Intentional software , 2006, OOPSLA '06.

[9]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[10]  Oscar Díaz,et al.  On Refining XML Artifacts , 2007, ICWE.

[11]  David S. Wile,et al.  Abstract Syntax from Concrete Syntax , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[12]  Alejandra Garrido,et al.  Program refactoring in the presence of preprocessor directives , 2005 .

[13]  Don S. Batory,et al.  Automating Feature-Oriented Refactoring of Legacy Applications , 2007, WRT.

[14]  Charles W. Krueger,et al.  Easing the Transition to Software Mass Customization , 2001, PFE.

[15]  Gregor Kiczales,et al.  Expressive programs through presentation extension , 2007, AOSD.

[16]  Martin P. Robillard,et al.  Concern graphs: finding and describing concerns using structural program dependencies , 2002, Proceedings of the 24th International Conference on Software Engineering. ICSE 2002.

[17]  David Coppit,et al.  Spotlight: A Prototype Tool for Software Plans , 2007, 29th International Conference on Software Engineering (ICSE'07).

[18]  Henry Spencer,et al.  #ifdef Considered Harmful, or Portability Experience with C News , 1992, USENIX Summer.

[19]  Shan Shan Huang,et al.  Statically safe program generation with safegen , 2005, GPCE'05.

[20]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 2001, TOPL.

[21]  Daniel Jackson,et al.  Software Abstractions - Logic, Language, and Analysis , 2006 .

[22]  Brian Foote,et al.  Designing Reusable Classes , 2001 .

[23]  Krzysztof Czarnecki,et al.  Verifying feature-based model templates against well-formedness OCL constraints , 2006, GPCE '06.

[24]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[25]  Charles W. Krueger,et al.  Point - Counterpoint: Being Proactive Pays Off - Eliminating the Adoption , 2002, IEEE Softw..

[26]  Paul Clements,et al.  Software product lines - practices and patterns , 2001, SEI series in software engineering.

[27]  Dewayne E. Perry,et al.  Design of large-scale polylingual systems , 2004, Proceedings. 26th International Conference on Software Engineering.

[28]  Klaus Pohl,et al.  Software Product Line Engineering - Foundations, Principles, and Techniques , 2005 .

[29]  Tom Mens,et al.  A State-of-the-Art Survey on Software Merging , 2002, IEEE Trans. Software Eng..

[30]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[31]  Martin Fowler. Refactoring Improving the Design of Existing Code , 1999 .

[32]  C. M. Sperberg-McQueen,et al.  Extensible Markup Language (XML) , 1997, World Wide Web J..

[33]  Mark A. Linton,et al.  Implementing relational views of programs , 1984, SDE 1.

[34]  Sven Apel,et al.  An Algebra for Feature-Oriented Software Development , 2007 .

[35]  Oscar Díaz,et al.  Feature refactoring a multi-representation program into a product line , 2006, GPCE '06.

[36]  Charles Simonyi,et al.  The Death of Computer Languages, The Birth of Intentional Programming , 1995 .

[37]  Anneke Kleppe,et al.  The object constraint language: precise modeling with UML , 1998 .

[38]  Sven Apel,et al.  A Case Study Implementing Features Using AspectJ , 2007, 11th International Software Product Line Conference (SPLC 2007).

[39]  Michal Antkiewicz,et al.  Mapping features to models: a template approach based on superimposed variants , 2005, GPCE'05.

[40]  Thomas Leich,et al.  Aspectual Feature Modules , 2008, IEEE Transactions on Software Engineering.

[41]  William G. Griswold,et al.  Exploiting the map metaphor in a tool for software evolution , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[42]  C. M. Sperberg-McQueen,et al.  eXtensible Markup Language (XML) 1.0 (Second Edition) , 2000 .

[43]  Jia Liu,et al.  Feature oriented refactoring of legacy applications , 2006, ICSE '06.