We present an approach to combine model-driven and component-based software engineering of distributed embedded systems. Specifically, we describe how deployment modelling is performed in two steps, and present an incremental synthesis of runnable representations of model entities on various abstraction levels. Our approach allows for flexible reuse opportunities, in that entities at different levels of granularity and abstraction can be reused. It also permits detailed analysis, e.g., with respect to timing, of units smaller than a whole physical node. We present a concept, virtual nodes, which preserves real-time properties across reuse and integration in different contexts.