Real-time and Embedded Software Design