Virtuelle Trennung von Belangen (Präprozessor 2.0)

Bedingte Kompilierung mit Praprozessoren wie cpp ist ein einfaches, aber wirksames Mittel zur Implementierung von Variabilitat in Softwareproduktlinien. Durch das Annotieren von Code-Fragmenten mit #ifdef und #endif konnen verschiedene Programmvarianten mit oder ohne diesen Fragmenten generiert werden. Obwohl Praprozessoren haufig in der Praxis verwendet werden, werden sie oft fur ihre negativen Auswirkungen auf Codequalitat und Wartbarkeit kritisiert. Im Gegensatz zu modularen Implementierungen, etwa mit Komponenten oder Aspekte, vernachlassigen Praprozessoren die Trennung von Belangen im Quelltext, sind anfallig fur subtile Fehler und verschlechtern die Lesbarkeit des Quellcodes. Wir zeigen, wie einfache Werkzeugunterstutzung diese Probleme adressieren und zum Teil beheben bzw. die Vorteile einer modularen Implementierung emulieren kann. Gleichzeitig zeigen wir Vorteile von Praprozessoren wie Einfachheit und Sprachunabhangigkeit auf.

[1]  Sven Apel,et al.  An Overview of Feature-Oriented Software Development , 2009, J. Object Technol..

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

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

[4]  Michael D. Ernst,et al.  An Empirical Analysis of C Preprocessor Use , 2002, IEEE Trans. Software Eng..

[5]  Gregor Snelting,et al.  On the inference of configuration structures from source code , 1994, Proceedings of 16th International Conference on Software Engineering.

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

[7]  Wolfgang Schröder-Preikschat,et al.  Dead or Alive: finding zombie features in the Linux kernel , 2009, FOSD '09.

[8]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

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

[10]  Marian Vittek Refactoring browser with preprocessor , 2003, Seventh European Conference onSoftware Maintenance and Reengineering, 2003. Proceedings..

[11]  Klaus Pohl,et al.  Software-Produktlinien: Methoden, Einführung und Praxis , 2005, Künstliche Intell..

[12]  Don S. Batory,et al.  Feature Models, Grammars, and Propositional Formulas , 2005, SPLC.

[13]  Jean-Marie Favre Understanding-in-the-large , 1997, Proceedings Fifth International Workshop on Program Comprehension. IWPC'97.

[14]  Christian Prehofer,et al.  Feature-Oriented Programming: A Fresh Look at Objects , 1997, ECOOP.

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

[16]  Kyo Chul Kang,et al.  Feature-Oriented Domain Analysis (FODA) Feasibility Study , 1990 .

[17]  Sven Apel,et al.  Guaranteeing Syntactic Correctness for All Product Line Variants: A Language-Independent Approach , 2009, TOOLS.

[18]  Ira D. Baxter,et al.  Preprocessor conditional removal by simple partial evaluation , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[19]  Christian Wende,et al.  FeatureMapper: mapping features to models , 2008, ICSE Companion '08.

[20]  Margo I. Seltzer,et al.  Beyond Relational Databases , 2005, ACM Queue.

[21]  Sven Apel,et al.  Visualizing Software Product Line Variabilities in Source Code , 2008, SPLC.

[22]  Yvonne Coady,et al.  C-CLR: a tool for navigating highly configurable system software , 2007, ACP4IS.

[23]  Sven Apel,et al.  Type-Checking Software Product Lines - A Formal Approach , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

[24]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

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

[26]  Thomas Leich,et al.  Tailor-made data management for embedded systems: A case study on Berkeley DB , 2009, Data Knowl. Eng..

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

[28]  Mario Kolberg,et al.  Feature interaction: a critical review and considered forecast , 2003, Comput. Networks.