an architecture for embedded software integration using reusable components