Fault-tolerant middleware for dependable, distributed embedded systems