Adapting abstract component applications using adaptation patterns
Résumé
Using a component-based approach, applications can be defined as an assembly of abstract components, requiring services from and providing services to each other. At the time of execution, they are mapped to the concrete level after identifying the deployed components. However, several problems can be detected at init time that prevent the mapping to be achieved successfully, e.g., heterogeneity of connection interfaces. Moreover, applications in pervasive environment are challenged by the dynamism of their execution environment due to, e.g., users and devices mobility, which make them subject to unforeseen failures. Both of these problems imply mismatches between abstract and concrete levels detected at init time or during the execution. Therefore, abstract applications have to be adapted to carry out their mapping and their execution. In this article, we propose a new dynamic structural adaptation approach for abstract applications. Our approach is based on adaptation patterns that provide solutions to the captured mismatches between abstract and concrete levels. We also compare and contrast our approach with the existing ones concluding that our approach is not only generic, but it is also applicable both at init time and at runtime