Intégration de la programmation concurrente à la programmation par objets, aspects et événements
Auteur / Autrice : | Jurgen Michael Van Ham |
Direction : | Pierre Cointe |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique et applications |
Date : | Soutenance le 09/03/2015 |
Etablissement(s) : | Nantes, Ecole des Mines en cotutelle avec Technische Universität (Darmstadt, Allemagne) |
Ecole(s) doctorale(s) : | Sciences et Technologies de l'Information et Mathématiques |
Partenaire(s) de recherche : | Equipe de recherche : ASCOLA / INRIA - EMN |
Laboratoire : Laboratoire d'Informatique de Nantes Atlantique / LINA | |
Jury : | Président / Présidente : Reiner Hähnle |
Examinateurs / Examinatrices : Patrick Eugster, Ulf Brefeld, Mira Mezini, Jacques Noyé | |
Rapporteur / Rapporteuse : Christophe Dony, Wolfgang De Meuter |
Mots clés
Résumé
L’utilisation de concepts avancés de programmation concurrente permet de dépasser les inconvénients de l’utilisation de techniques de bas niveau à base de verrous ou de moniteurs. Elle augmente le niveau d’abstraction, libérant les programmeurs d’applications concurrentes d’une focalisation excessive sur des détails. Cependant, avec les approches actuelles, la logique nécessaire à la mise en place de schémas de coordinations complexes est fragmentée en plusieurs points de l’application sous forme de« join patterns », de notifications et de la logique applicative qui crée implicitement des dépendances entre les canaux de communication et donc, indirectement, les « join patterns » (qui définissent ces canaux). Nous présentons JEScala, un langage qui capture les schémas de coordination (d’une application concurrente) d’une manière plus expressive et modulaire, en s’appuyant sur l’intégration fine d’un système d’évènements avancé et des « join patterns ». Nous implémentons des automates finis à partir de « joins » à l’aide de JEScala et introduisons un langage dédié à la définition de ces automates finis permettant d’en obtenir des implémentations plus efficaces. Nous validons notre approche avec des études de cas et évaluons l’efficacité de son exécution. Nous comparons la performance de trois implémentations d’un automate fini. Nous validons enfin l’idée d’un moniteur d’évènements en créant un programme JEScala concurrent à partir d’un découpage d’un programme séquentiel.