Static Verification of distributed programs
Vérification Statique de Programmes Répartis
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.
Origine | Fichiers produits par l'(les) auteur(s) |
---|
Loading...