Modular Design of Real-Time Systems Using Hierarchical Communicating Real-time State Machines