Component-based Software Development For Embedded Systems