The increasing complexity of embedded systems calls for software design and implementation techniques that support specialization without abandonment of reusability. This brings up a conflict as software specialized in supporting a very dedicated case usually cannot be (easily) reused for a different environment. Especially the “standard software” packets such as operating systems, e.g., are concerned with this problem. Particularly critical in this setting are non-functional properties that are ingredient parts of single components or crosscut in the extreme case the entire system software. These properties not only limit component reusability but also impair software maintenance in general. The paper deals with this issue in the scope of operating systems for the embedded-systems domain. It motivates using concepts such as family-based software design, feature modeling and aspect-oriented programming in order to come up with highly customizable and yet reusable system software ...