Automating the Composition of Middleware Configurations composition Middleware platforms are now recognized as being a powerful support for the construction of distributing systems. In addition of taking care of the issues of interoperability and heterogeneity, they further come along with services for offering various non-functional properties to applications (e.g. fault tolerance, security, concurrency control management). Hence, they greatly simplify the task of the application developer by providing reusable solutions to distribution management. However, the application developer still has to select the adequate middleware services for the application and to further integrate them all in a final configuration.

In this paper, we address the issue of easing the developer's task of determining the right middleware configuration for the application. Any middleware configuration enforcing a given type of non-functional properties obeys to a well-known architectural pattern. For instance, we know that integrating active replication support within an application for the sake of fault tolerance relies on mechanisms for replicating a server component and for voting. However, composing such architectural patterns in order to enforce a combination of non-functional properties is less straightforward since there exist a number of composition patterns. We address this issue by proposing an algorithm for the composition of middleware architectural patterns at the structural level, i.e. the configuration. The resulting compositions may then be assessed with respect to the properties the developer really wants. As a result, we are able to provide a fully automated way to compose middleware configurations, while existing solutions based on the composition of specifications require a significant assistance from the developer. In addition, the proposed solution enables identifying configurations that may never have been considered by the developer although they provide interesting non-functional properties.