Real-time systems :design principles for distributed embedded applications