- Aspect-Awareness in the Development of Configurable System Software (2009)
- More than 98 percent of the worldwide annual production of microprocessors ends up in embedded systems -- typically employed in goods of mass production, like cars, appliances, or toys. Such embedded systems are subject to an enormous hardware-cost pressure. System software for this domain has to cope not only with a broad variety of requirements and platforms, but especially with strict resource constraints. To compete against proprietary systems (and thereby to allow for reuse), a system-software product line for embedded systems has to be highly configurable and tailorable. However, this flexibility has to be provided in a way that meets the strict resource constraints. The state of the art for the overhead-free implementation of fine-grained configurability in system software is conditional compilation with the C preprocessor. However, this approach leads to scattered and tangled code and does not scale up. At the same time, the demands on configurability of system software are still increasing. AUTOSAR OS, a new industry standard for automotive operating systems, requires configurability of even fundamental architectural system policies, such as protection and isolation strategies. This thesis evaluates aspect-oriented programming (AOP) as a first-class concept for implementing configurability in resource-constrained systems. It shows that a well-directed, pragmatic application of AOP leads to a much better separation of concerns in the implementation of configurable system software -- without compromising on resource thriftiness. Moreover, the suggested approach of aspect-aware operating-system development facilitates providing even fundamental architectural policies as configurable features. The suitability of AOP is evaluated with state-of-the-art operating systems from the embedded-systems domain. The practicability of aspect-aware operating-system development is validated by the design and development of the CiAO operating-system family, which is the first operating system that has been designed and developed with AOP concepts from the very beginning. CiAO combines a competitive implementation of the AUTOSAR-OS standard with a highly confugurable architecture.
- Tailorable System Software (2014)
- System software, such as the operating system, provides no business value of its own. Its sole purpose is to serve the concrete application's needs -- that is, to map the functional and nonfunctional requirements efficiently to the functional and nonfunctional properties of the hardware. Efficiency calls for specific, tailored system software; reusability demands generic solutions. To overcome this dilemma, most system software provides built-in static variability: It can be tailored at compile time with respect to a specific application–hardware use case. In the case of Linux v3.2, this static variability is reflected by nearly 12000 configurable features that control the inclusion and exclusion of 28000 source files with 84000 conditional (#ifdef) blocks. Variability by means of thousands of features imposes challenges for both system-software developers, who have to implement and maintain variability, as well as application developers/administrators, who have to understand the impact of all these features in order to configure a tailored variant. Over the last four years, my research has focused on methods and techniques to improve the design, implementation, and maintenance of static variability in highly tailorable system software. My central contributions in this respect are: (a) The CiAO approach, which employs language techniques to achieve excellent up-tailorability of embedded system software (towards the requirements of a specific application). (b) The Sloth approach, which employs generative techniques to achieve down-tailorability of embedded system software (towards better exploitation of modern commodity hardware). (c) The VAMOS approach, which employs cross-language analysis techniques and holistic variability modeling to improve on the long-term maintainability of multi-paradigmatic variability implementations in existing large-scale system software, such as Linux. This research has been carried out in collaboration with seven doctoral researchers and master students from my research group, four of which have already defended.
- Architecture-Violation Management for Internal Software Ecosystems: An Industry Case Study (2016)
- Large-scale intra-organizational, yet decentralized software projects that involve various self-contained organizational units require architecture guidelines to coordinate development. Tool support allows for managing architecture-guideline violations to ensure software quality. However, the decentralized development across units results in significant violation-management hurdles that must be considered. Derived from our previous research, we have elaborated a set of capabilities required to manage guideline violations within two of these large-scale software projects at Siemens. Their main purpose is process support for resolving violations, aiming to reduce the architects' and developers' effort required to handle them. We developed a prototype that implements the capabilities and conducted a qualitative case study on their usefulness, involving 9 experts from our study systems. Our capabilities are considered as very important and reveal great potential to ease violation management for large-scale software engineering.