Exploiting Template Metaprogramming to customize an object-oriented operating system

Nowadays, the growing complexity of embedded systems demands for configurability, variability and reuse. Conditional compilation and object-orientation are two of the most applied approaches in the management of system variability. While the former increases the code management complexity, the latter leverages the needed modularity and adaptability to simplify the development of reusable and customizable software at the expense of performance and memory penalty. This paper shows how C++ TMP (Template Metaprogramming) can be applied to manage the variability of an object-oriented operating system and at the same time get ride out of the performance and memory footprint overhead. In doing so, it will be statically generated only the desired functionalities, thus ensuring that code is optimized and adjusted to application requirements and hardware resources.

[1]  Andrei Alexandrescu,et al.  Modern C++ design: generic programming and design patterns applied , 2001 .

[2]  Wolfgang Schröder-Preikschat,et al.  The Linux Kernel Configurator as a Feature Modeling Tool , 2008, SPLC.

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

[4]  Anneke Kleppe,et al.  MDA explained - the Model Driven Architecture: practice and promise , 2003, Addison Wesley object technology series.

[5]  Wolfgang Schröder-Preikschat,et al.  PURE Embedded Operating Systems — CiAO ∗ , 2006 .

[6]  Er Iqbaldeep kaur,et al.  Characterization and Architecture of Component Based Models , 2010 .

[7]  Krzysztof Czarnecki,et al.  Variability modeling in the real: a perspective from the operating systems domain , 2010, ASE '10.

[8]  Michel Dagenais,et al.  C/C++ conditional compilation analysis using symbolic execution , 2000, Proceedings 2000 International Conference on Software Maintenance.

[9]  Wolfgang De Meuter,et al.  Can we refactor conditional compilation into aspects? , 2009, AOSD '09.

[10]  Krzysztof Czarnecki,et al.  Generative programming - principles and techniques of software engineering based on automated configuration and fragment-based component models , 1999 .

[11]  David L. Tennenhouse,et al.  Proactive computing , 2000, Commun. ACM.

[12]  Wolfgang Schröder-Preikschat,et al.  Aspect-aware operating system development , 2011, AOSD '11.

[13]  Krzysztof Czarnecki,et al.  The Variability Model of The Linux Kernel , 2010, VaMoS.

[14]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .