Enhancing middleware support for architecture-based development through compositional weaving of styles