A Middleware Approach for Dynamic Real-Time Software Reconfiguration on Distributed Embedded Systems