Thèse soutenue

Spécification formelle et vérification des systèmes des composants distribués

FR  |  
EN
Auteur / Autrice : Antonio Cansado
Direction : Éric Madelaine
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance en 2008
Etablissement(s) : Nice
Ecole(s) doctorale(s) : École doctorale Sciences et technologies de l'information et de la communication (Nice ; 1992-....)

Mots clés

FR

Mots clés contrôlés

Résumé

FR  |  
EN

Les composants sont des blocs logiciels qui communiquent par des interfaces bien définies. Ces interfaces définissent un contrat avec l'environnement. Ce contrat doit garantir la compatibilité comportementale des interfaces. Cette compatibilité est en particulier importante quand des composants sont distribués et communiquent par des méthodes asynchrones. Cette thèse se base sur les spécifications comportementales des composants distribués. Nous développons un cadre formel qui nous permet de construire des modèles comportementaux pour ces composants. Après une phase d'abstraction, ces modèles peuvent être utilisés en entrée pour des outils de vérification modernes. L'objectif principal est de spécifier, vérifier et au final de produire des composants distribués avec un comportement garanti. Pour ce faire, nous développons une langage de spécifications proche de Java. Ce langage est établi sur notre modèle comportemental, et fournit une abstraction puissante de haut niveau du système. Les avantages sont les suivants: (i) nous pouvons nous connecter avec des outils de vérification: ainsi nous sommes capables de vérifier plusieurs sortes de propriétés ; et (ii), les spécifications sont assez complètes pour produire des squelettes de code de contrôle des composants. Finalement, nous validons notre approche avec un cas d'étude à l'aide d'un exemple commun de système à composants (``Common Component Model Example (CoCoME)''). Les particularités du langage proposé sont : traiter des composants hiérarchiques qui communiquent par des appels de méthodes asynchrones; donner le comportement d'un composant comme l'ensemble de services; utiliser une sémantique proche d'un langage de programmation; et traiter des abstractions de code utilisateur.