Software specification and design : a disciplined approach for real-time systems