Un modèle de langage pour la mise à jour dynamique de programmes
Institution:
Rennes 1Disciplines:
Directors:
Abstract EN:
Numerous software systems must execute constantly without being interrupted. On the other hand, they also have to be regularly adapted to changes in their operational domains and to the evolution of users requirements. Dynamic software update is the process that consists in replacing a running program with a newer version without interrupting the program operation. This thesis divides the dynamic evolution problem in two sub-problems. The essential difficulty is to ensure that the resulting executions will be globally coherent across time, such that updated processes actually perform their task without producing any error. The accidental difficulty is caused by the impossibility to define and understand dynamic software updates in the existing programming languages. To address these problems, a language model is presented. It gives the ability to express the dynamic evolutions of programs and to foresee the behaviors produced by dynamically updated processes. This language model introduce a code entity - the stage - associated with a high level control operator - reach - that allows programmers to express the temporal stucture of programs. The program decomposition in stages offers a high level view of the possible executions chronologies and gives programmers control points from where the entire future of computations can be redefined.
Abstract FR:
De nombreux systèmes informatiques nécessitent d'être en fonctionnement permanent et sans interruption. Cependant, ces systèmes doivent également être régulièrement adaptés aux changements du domaine dans lequel ils opèrent et aux évolutions des besoins des utilisateurs. La mise à jour logicielle dynamique est l'opération qui consiste à remplacer un programme en exécution par une version suivante sans interrompre le fonctionnement du programme. Cette thèse divise le problème de l'évolution dynamique des programmes en deux sous-problématiques. La difficulté essentielle est d'assurer des exécutions globalement cohérentes au cours du temps, de sorte qu'un processus mis à jour réalise effectivement la tâche qui lui est confiée sans erreur de fonctionnement. La difficulté accidentelle, quant à elle, est causée par l'incapacité de définir et de comprendre la mise à jour dynamique dans les langages de programmation actuels. Pour répondre à ces problématiques, un modèle de langage est présenté. Il permet d'exprimer l'évolution dynamique des programmes et de prévoir le comportement des processus mis à jour. Ce modèle de langage introduit une entité de code - l'étape - associée à un opérateur de contrôle de haut-niveau - reach - pour permettre aux programmeurs de faire émerger la structure temporelle des programmes. La décomposition en étapes offre une vision de haut-niveau des chronologies possibles lors de l'exécution et fournit aux programmeurs des points de contrôle où le futur de l'exécution peut être entièrement redéfini.