Aspect-Oriented Design and Implementation of an AUTOSAR-Like Operating System Kernel

In the automotive industry, the consolidation of the software features on less but more powerful microcontrollers has led to the advent of a more sophisticated type of embedded operating system, which is targeted by the AUTOSAR OS standard. Since this specification prescribes the newly introduced protection features to be configurable (though on a coarse level), an implementation is to be designed as a product family. CiAO aims to face that challenge by making use of concepts of aspectoriented programming (AOP). After identifying the concerns present in an AUTOSAR-like operating system kernel, these concerns are modeled in an aspect-oriented kernel design. Thereby, even highly cross-cutting concerns like kernel synchronization or fault isolation features can be kept encapsulated, configurable, and evolvable. An evaluation of the approach shows that the CiAO kernel is highly scalable with respect to both memory footprint and performance; a comparison to a commercial implementation of the standard indicates that the aspect-oriented implementation does not induce a significant overhead per se. Additionally, the systems programmer benefits from several advantages that the aspect-oriented design bears: Many requirements stated in the AUTOSAR standard can be formulated in a natural and encapsulated way, facilitating the understanding and maintenance of the kernel design and implementation.

[1]  Wolfgang Schröder-Preikschat,et al.  Configurable memory protection by aspects , 2007, PLOS '07.

[2]  Olaf Spinczyk,et al.  Generic Advice: On the Combination of AOP with Generative Programming in AspectC++ , 2004, GPCE.

[3]  Olaf Spinczyk,et al.  Using AOP to develop architectural-neutral operating system components , 2004, EW 11.

[4]  Siobhán Clarke,et al.  Theme: an approach for aspect-oriented analysis and design , 2004, Proceedings. 26th International Conference on Software Engineering.

[5]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[6]  Olaf Spinczyk,et al.  Architecture-Neutral Operating System Components , 2003 .

[7]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[8]  Bernd Freisleben,et al.  Supporting autonomic computing functionality via dynamic operating system kernel aspects , 2005, AOSD '05.

[9]  Olaf Spinczyk,et al.  Concern Hierarchies , 2006 .

[10]  Edsger W. Dijkstra,et al.  The humble programmer , 1972, CACM.

[11]  Hamido Fujita,et al.  Special issue on "techniques to produce Intelligent_Secure software" , 2007, Knowl. Based Syst..

[12]  Daniel P. Friedman,et al.  Aspect-Oriented Programming is Quantification and Obliviousness , 2000 .

[13]  Wolfgang Schröder-Preikschat,et al.  Interrupt synchronization in the CiAO operating system: experiences from implementing low-level system policies by AOP , 2007, ACP4IS.

[14]  Nathan Myers,et al.  A new and useful template technique: “traits” , 1996 .

[15]  Daniel Mahrenholz,et al.  An Aspect-Oriented Implementation of Interrupt Synchronization in the PURE Operating System Family∗ , 2002 .

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

[17]  Andrew Clement,et al.  Large-scale AOSD for middleware , 2004, AOSD '04.

[18]  Alessandro Garcia,et al.  Error handling as an aspect , 2007 .

[19]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[20]  Iris Groher,et al.  Aspect-Orientation from Design to Code , 2004 .

[21]  Gregor Kiczales,et al.  Using aspectC to improve the modularity of path-specific customization in operating system code , 2001, ESEC/FSE-9.

[22]  Wolfgang Schröder-Preikschat,et al.  A quantitative analysis of aspects in the eCos kernel , 2006, EuroSys.

[23]  Olaf Spinczyk,et al.  The design and implementation of AspectC++ , 2007, Knowl. Based Syst..

[24]  Gregor Kiczales,et al.  Back to the future: a retroactive study of aspect evolution in operating system code , 2003, AOSD '03.

[25]  Danilo Beuche,et al.  On the Development of Object-Oriented Operating Systems for Deeply Embedded Systems - The PURE Project , 1999, ECOOP Workshops.

[26]  Eric Eide,et al.  Resource management aspects for sensor network software , 2007, PLOS '07.

[27]  Stanley B. Lippman C++ gems , 1996 .

[28]  Cristina V. Lopes,et al.  A study on exception detection and handling using aspect-oriented programming , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[29]  Siobhán Clarke,et al.  Composition patterns: an approach to designing reusable aspects , 2001, ICSE 2001.

[30]  Wolfgang Schröder-Preikschat,et al.  On the Configuration of Non-Functional Properties in Operating System Product Lines , 2005 .

[31]  Bernd Freisleben,et al.  TOSKANA: A Toolkit for Operating System Kernel Aspects , 2006, LNCS Trans. Aspect Oriented Softw. Dev..

[32]  Wolfgang Schröder-Preikschat,et al.  An OSEK/VDX-based Multi-JVM for Automotive Appliances , 2007, IESS.

[33]  Günter Kniesel,et al.  A Definition, Overview and Taxonomy of Generic Aspect Languages , 2006, Obj. Logiciel Base données Réseaux.

[34]  Stefan Hanenberg,et al.  A UML-based aspect-oriented design notation for AspectJ , 2002, AOSD '02.

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

[36]  Cecília M. F. Rubira,et al.  Exceptions and aspects: the devil is in the details , 2006, SIGSOFT '06/FSE-14.