Component-based software engineering for embedded systems