Vérification Statique de Programmes Répartis - Archive ouverte HAL Accéder directement au contenu
Thèse Année : 2001

Static Verification of distributed programs

Vérification Statique de Programmes Répartis

Fabien Dagnat

Résumé

In the context of actors, concurrent objects, and more generally in client/server software, some requests will not be treated by their target. Such a request is called an orphan message and can be either a safety orphan (its target will never be able to treat it) or a liveness orphan (its target could possibly treat it, but it will never reach the requested state for this processing). Within our research team, some type systems have been built to detect safety orphans for a process calculus modeling actors. In this thesis, we adapt those static analyzes to the detection of some communication problems in real programming languages. Our work is conducted in the context of two real languages; on one hand, ML-Act, an extension of ML with primitives from the actor model designed by our research team, and on the other hand, Erlang, a concurrent and distributed functional language designed by ERICSSON to program their telecommunication applications. In order to detect orphans, our systems are based on an inference process which computes the type of all entities of the program. The types which approximate the actors are inspired by the types usually used for records or objects. The type systems are very sophisticated, they include a subtyping notion and rely on two inference algorithms which collect constraints from the source code, and then solve them. Their correction is demonstrated using an operational semantics of the actor model based on the interlacing of two reductions (one on functional expressions and one on actors). The formalism modeling actors, called configuration is general and common to both languages (which are distinguished only by the functional calculus). To conclude, we make an analysis of the evolutions of theories and techniques which have been necessary to adapt systems built on process calculi to complex programming languages.
Dans les programmes acteurs ou objets concurrents, et plus généralement dans les logiciels clients/serveurs, certaines requêtes ne pourront pas être traitées par leur cible. Une telle requête est appelée message orphelin, elle peut être : soit un orphelin de sûreté (son destinataire ne pourra jamais la traiter), soit un orphelin de vivacité (son destinataire pourrait éventuellement la traiter, mais il n'atteindra pas l'état nécessaire à ce traitement). Dans le cadre de l'équipe Vestale qui m'a accueilli, des systèmes de type ont été conçus pour détecter les orphelins de sûreté pour un calcul de processus modélisant les acteurs. Dans cette thèse, nous adaptons ces analyses statiques pour détecter certains problèmes de communication au sein de vrais langages de programmation. Le premier, ML-Act, une extension de ML avec des primitives du modèle d'acteurs conçue au sein de l'équipe Vestale. Le second, Erlang, est un langage fonctionnel concurrent et réparti conçu par ERICSSON pour construire des applications de télécommunication. Pour détecter les orphelins, nos systèmes sont basés sur un processus d'inférence qui calcule le type des différentes entités du programme. Les types qui approximent les acteurs sont inspirés des types utilisés usuellement pour les enregistrements ou les objets. Les systèmes de type sont très sophistiqués, ils contiennent une notion de sous-typage et reposent sur des algorithmes d'inférence qui collectent des contraintes à partir du code source, puis les résolvent. Leur correction est démontrée en utilisant une sémantique opérationnelle du modèle d'acteurs reposant sur un entrelacement de deux réductions (une sur les expressions fonctionnelles et une sur les acteurs). Le formalisme modélisant les acteurs, appelé configuration, est général et commun aux deux langages (qui ne se distinguent donc que par le calcul fonctionnel). En conclusion, nous faisons un bilan des évolutions des théories et techniques qui ont été nécessaires pour adapter des systèmes construits sur un calcul de processus à des langages de programmation complexes.
Fichier principal
Vignette du fichier
these-dagnat.pdf (2.42 Mo) Télécharger le fichier
Origine : Fichiers produits par l'(les) auteur(s)
Loading...

Dates et versions

tel-02061997 , version 1 (08-03-2019)

Identifiants

  • HAL Id : tel-02061997 , version 1

Citer

Fabien Dagnat. Vérification Statique de Programmes Répartis. Langage de programmation [cs.PL]. Institut National Polytechnique De Toulouse, 2001. Français. ⟨NNT : ⟩. ⟨tel-02061997⟩
76 Consultations
92 Téléchargements

Partager

Gmail Facebook X LinkedIn More