Towards Dependable Dynamic Component-Based Applications
Total Page:16
File Type:pdf, Size:1020Kb
THÈSE Pour obtenir le grade de DOCTEUR DE L’UNIVERSITÉ DE GRENOBLE Spécialité : Informatique Arrêté ministériel : 7 août 2006 Présentée par Kiev SANTOS DA GAMA Thèse dirigée par Didier DONSEZ préparée au sein du Laboratoire d’Informatique de Grenoble dans l'École Doctorale Mathématiques, Sciences et Technologies de l’Information, Informatique (MSTII) Towards Dependable Dynamic Component-based Applications Thèse soutenue publiquement le « 6 Octobre 2011», devant le jury composé de : Mme Claudia RONCANCIO Professeur, Ensimag - Grenoble INP, Président M Gilles MULLER Directeur de Recherche, INRIA, Rapporteur M Lionel SEINTURIER Professeur, Université de Lille & IUF, Rapporteur M Ivica CRNKOVIC Professor, Mälardalen University, Membre M Didier DONSEZ Professeur, Université Joseph Fourier, Membre M Gaël THOMAS Maître de Conférences, Université Pierre et Marie Curie, Membre M Peter KRIENS Technical Director, OSGi Alliance, Invité ABSTRACT Software is moving towards evolutionary architectures that are able to easily accommodate changes and integrate new functionality. This is important in a wide range of applications, from plugin-based end user applications to critical applications with high availability requirements. Dynamic component-based platforms allow software to evolve at runtime, by allowing components to be loaded, and executed without forcing applications to be restarted. However, the flexibility of such mechanism demands applications to cope with errors due to inconsistencies in the update process, or due to faulty behavior from components introduced during execution. This is mainly true when dealing with third-party components, making it harder to predict the impacts (e.g., runtime incompatibilities, application crashes) and to maintain application dependability when integrating such third-party code into the application. Components whose origin or quality attributes are unknown could be considered as untrustworthy since they can potentially introduce faults to applications when combined with other components, even if unintentionally. The quality of components is harder to evaluate when components are combined together, especially if it happens on-the-fly. We are interested in reducing the impact that can be brought by untrustworthy components deployed at runtime and that would potentially compromise application dependability. This thesis focuses on applying techniques for moving a step forward towards dependable dynamic component-based applications by addressing different dependability attributes namely reliability, maintainability and availability. We propose the utilization of strong component isolation boundaries, by providing a fault-contained environment for separately running untrustworthy components. Our solution combines three approaches: (i) the dynamic isolation of components, governed by a runtime reconfigurable policy; (ii) a self-healing component isolation container; and (iii) the usage of aspects for separating dependability concerns from functional code. Keywords: Dependability, Component-based development, Self-healing, Application isolation, Aspect-oriented Programming, Dynamic component-based applications RÉSUMÉ Les logiciels s'orientent de plus en plus vers des architectures évolutives, capables de s'adapter facilement aux changements et d'intégrer de nouvelles fonctionnalités. Ceci est important pour plusieurs classes d'applications qui ont besoin d‘évoluer sans que cela implique d’interrompre leur exécution. Des plateformes dynamiques à composants autorisent ce type d'évolution à l'exécution, en permettant aux composants d'être chargés et exécutés sans requérir le redémarrage complet de l’application en service. Toutefois, la flexibilité d'un tel mécanisme introduit de nouveaux défis qui exigent de gérer les possibles erreurs dues à des incohérences dans le processus de mise à jour, ou en raison du comportement défectueux de composants survenant pendant l'exécution de l’application. Des composants tiers dont l'origine ou la qualité sont inconnus peuvent être considérées a priori comme peu fiables, car ils peuvent potentiellement introduire des défauts d'applications lorsqu'il est combiné avec d'autres composants. Nous sommes intéressés à la réduction de l'impact de ces composants considérés comme non fiables et qui sont susceptibles de compromettre la fiabilité de l’application en cours d’exécution. Cette thèse porte sur l'application de techniques pour améliorer la fiabilité des applications dynamiques à composants. Pour cela, nous proposons l'utilisation des frontières d'isolation pouvant fournir du contingentement de fautes. Le composant ainsi isolé ne perturbe pas le reste de l’application quand il est défaillant. Une telle approche peut être vu sous trois perspectives présentées: (i) l'isolement des composants dynamiques, régi par une politique d'exécution reconfigurable, (ii) l'autoréparation de conteneurs d‘isolement, et (iii) l'utilisation des aspects pour séparer les préoccupations de fiabilité à partir du code fonctionnel. Mots-clés : Fiabilité, Développement basé sur des composants, Autoréparation, Isolation des applications, Programmation orientée aspects, Plateforme dynamiques à composants. ! Acknowledgements I would like to thank the members of the jury for accepting to evaluate my work: Gilles Muller et Lionel Seinturier for being rapporteurs, which means a significant amount of work. I also thank Claudia Roncancio, Ivica Crnkovic and Gaël Thomas for accepting to participate as examiners of my thesis. Thanks also to Peter Kriens, who could manage to participate through video conferencing software since he had to be at California at that time (which force him to wake up at 4 AM). Remerciements Je voudrais remercier les directeurs de l’équipe Adèle, Jacky Estublier et Philippe Lalanda, pour m’avoir accueilli dans l’équipe. Et, bien sûr, mon directeur de thèse Didier Donsez pour son aide dans des diverses aspects. Je remercie tous les membres de l’équipe Adèle pour leur amitié. Je tiens particulièrement à remercier Walter Rudametkin, Johann Bourcier et Jonathan Bardin pour des nombreuses discussions qui m’ont beaucoup aidé, spécialement les dernières discussions avec Walter et Jo pendant la rédaction de ma thèse. Merci à Yoann Maurel qui m’a aussi aidé à donner une meilleure perspective dans quelques aspects de mon travail. Merci à Stéphanie, Vincent et German pour m’avoir aidé à raffiner le discours et la présentation de mes diapos. Merci aussi aux autres amis avec qui j’ai travaillé et beaucoup discuté sur des choses pas toujours dans le domaine de ma thèse : Lionel Touseau, Gabriel Pedraza et Thomas Lévêque. Un grand merci à tous les autres avec qui je n’ai pas directement travaillé: Noé Torito, Diana, El Mehdi, Antonin, Eric, Idrissa, Pierre B. , P. Alain, Bassem, Marc, Joao, Ozan Hipne, Etienne, Clémént ainsi que tous les autres qui avaient passé par l’équipe pendant que j’étais là. Pendant mon doctorat j’ai pu aussi exercer des activités d’enseignement comme moniteur à l’Ensimag, et je remercie à Claudia pour avoir accepté d’être ma tutrice de monitorat. Elle m’a beaucoup aidé dans ce trajet, et m’a même trouvé des heures de travail avec elle dans l’équipe BD. Merci aussi à tous les enseignants avec qui je travaillé pendant cette période. Je tiens à remercier Laurent Daynès pour son aide au début de cette thèse, et à Olivier Gattaz pour m’avoir rassuré qu’il existe un intérêt de ce travail dans un contexte industriel. Je remercie aussi André Bottaro et Olivier Beyler pour m’avoir permit de présenter chez Orange mes travaux de recherche, et d’avoir un avis critique donné par son équipe lors de cet exposé. Pendant la rédaction j’ai eu l’aide de Nicolas Palix, et mes amis manauaras Jander et Raquel qui ont pu faire des relectures de quelques chapitres de mon manuscrit de thèse, en me donnant des suggestions et des petites corrections. Merci à vous tous. Je remercie à toute ma famille et mes amis d’ici et du Brésil pour leur support et les mots d’encouragement. Plus directement lié au travail de cette thèse, je remercie Fabio Souza, Fernando Castor et Nelson Rosa, pour leurs remarques ainsi que tout genre d’aide pendant mes visites à Recife. Merci à ma femme pour l'énorme sacrifice d'avoir resté en France pendant 4 ans. Elle n'a jamais voulu venir, et l'interruption de sa carrière a été un geste d'amour et d'altruisme. Toute cette période a été très difficile pour elle et par conséquent pour moi aussi. Finalement, un grand merci à notre petite Marina, qui est née pendant ce doctorat et qui nous a apporté beaucoup de bonheur. Merci au modafinil pour m'avoir aidé à rester reveillé pendant la rédaction Muito obrigado a todos vocês! Sentirei saudades dos amigos que fiz em Grenoble. ﺷ ﻜﺮا ,Merci, gracias Table of Contents CHAPTER 1 INTRODUCTION ................................................................................................................ 13 1.1 MOTIVATIONS ........................................................................................................................................ 13 1.2 OBJECTIVES ............................................................................................................................................. 15 1.3 WHAT THIS THESIS IS NOT ABOUT ......................................................................................................... 15 1.4 DIAGRAMS NOTATION ........................................................................................................................... 16 1.5 DOCUMENT STRUCTURE .......................................................................................................................