Composants logiciels
Les approches à base de composants logiciels sont un bon moyen d’optimiser la réutilisation et l’évolution dynamique du logiciel tout en garantissant sa qualité [BW98]. Un grand nombre de logiciels est ainsi construit par réutilisation de composants existants [S02] (le comportement global du système résulte alors de l’interaction des comportements individuels de chaque composant). Un composant logiciel est vu comme une boîte noire qui fournit et requiert des services au travers de ses interfaces. Une architecture (graphe de classes de composants) est construite dans le but de satisfaire des objectifs fonctionnels [MPA05] [MPRB07] tout en respectant des propriétés non fonctionnelles [APL06]. Un assemblage de composants (liens entre les instances de composants) est une instanciation d’une architecture. Le critère de qualité que j’ai considéré dans ma thèse pour construire une application découle de la satisfaction, par l’assemblage résultat, d’objectifs fonctionnels identifiés lors de l’analyse des besoins. La validité a été définie comme étant un niveau de vérification combinant la correction de l’assemblage et la satisfaction d’objectifs fonctionnels. J’ai ainsi étudié des techniques de spécification comportementale à base de protocoles, ce qui correspond à l’orchestration et à la chorégraphie dans le domaine des services Web.Il existe deux grands processus de construction d’assemblages de composants : le premier, top-down, constitue le processus classique. Malheureusement, il n’est pas adapté aux environnements dynamiques et ouverts car la structure finale du système est définie lors de la phase de conception par son architecture. L’assemblage de composants résultant du déploiement est dit rigide : soit il ne supporte pas l’évolution dynamique, soit son évolution est encadrée par des règles d’évolution définies statiquement dans l’architecture du système. Le deuxième processus, bottom-up, est adapté à un tel contexte car il ne se conforme pas à un plan pré-établi [BCK98] [CCL06]. Son utilisation est donc intéressante dans le cadre d’une évolution automatique d’un système, sans recourir à des phases faisant intervenir des acteurs humains. Cependant, il faut noter que la construction incrémentale d’assemblages valides de composants est un problème difficile d’optimisation combinatoire (la vérification comportementale d’un assemblage étant déjà un problème d’optimisation combinatoire [IWY00] [AH01] [MPK05]).