Étendre la spécification de programmes C concurrents et les vérifier par une transformation de source à source

Guillaume Hétier

Mémoire de maîtrise (2018)

Accéder à ce document
Disponible
Libre accès au texte intégral dans PolyPublie
Texte Texte • 781kB •

Résumé

L'utilisation croissante de systèmes informatiques critiques et l'augmentation de leur complexité rendent leur bon fonctionnement essentiel. Le model-checking logiciel permet de prouver formellement l'absence d'erreurs dans un programme. Il reste cependant limité par deux facteurs : l'explosion combinatoire et la capacité à spécifier le comportement correct d'un programme. Ces deux problèmes sont amplifiés dans le cas de programmes concurrents, à cause des différents entrelacements possibles entre les fils d'exécutions. Les assertions et les formules logiques LTL sont les deux formalismes de spécification les plus utilisés dans le cadre du model-checking logiciel. Cependant, ils sont limités dans un contexte concurrent : les assertions ne permettent pas d'exprimer des relations temporelles entre différents fils d'exécutions alors que les formules LTL utilisées par les outils actuels ne permettent pas d'exprimer des propriétés sur les variables locales et les positions dans le code du programme. Ces notions sont pourtant importantes dans le cas de programmes concurrents. Dans ce mémoire, nous établissons un formalisme de spécification visant à corriger ces limitations. Ce formalisme englobe LTL et les assertions, en permettant d'exprimer des relations temporelles sur des propositions faisant intervenir les variables locales et globales d'un programme ainsi que les positions dans le code source. Nous présentons aussi un outil permettant de vérifier une spécification exprimée dans ce formalisme dans le cas d'un programme concurrent codé en C. Notre formalisme se base sur la logique LTL. Il permet de surmonter deux des principales limitations rencontrées par les variantes de LTL utilisées par les outils de model-checking logiciel : manipuler des positions dans le code et des variables locales dans les propositions atomiques. La principale difficulté est de définir correctement dans l'ensemble du programme une proposition atomique lorsqu'elle dépend d'une variable locale. En effet, cette variable locale n'a de sens que dans une partie limitée du programme. Nous résolvons ce problème en utilisant le concept de zones de validité. Une zone de validité est un intervalle de positions dans le code source du programme dans laquelle la valeur d'une proposition atomique est définie à l'aide de sa fonction d'évaluation. Une valeur par défaut est utilisée hors de la zone de validité. Ceci permet de limiter l'utilisation de la fonction d'évaluation aux contextes où tous ses paramètres locaux sont définis.

Programme:
Génie informatique
Directeurs ou directrices:
Adresse URL de PolyPublie:
Université/École:
École Polytechnique de Montréal
OAI:
oai:publications.polymtl.ca:2965
ORCID
Date du dépôt:
03 avr. 2018 14:26
Dernière modification:
08 oct. 2026 16:40
Citer en APA 7:
Hétier, G. (2018). Étendre la spécification de programmes C concurrents et les vérifier par une transformation de source à source [Mémoire de maîtrise, École Polytechnique de Montréal]. PolyPublie. https://publications.polymtl.ca/2965/

Statistiques

Total des téléchargements à partir de PolyPublie

Téléchargements par année

Provenance des téléchargements

Actions réservées au personnel

Afficher document
Afficher document