Real-Time Systems: Design Principles for Distributed