I NTRODUCTION
Les analyseurs statiques et les compilateurs sont des logiciels opérant sur des programmes et pouvant accomplir des tâches complexes (par exemple, approximation du comportement d’une boucle pour un analyseur statique procédant par interprétation abstraite, ou encore allocation efficace des registres du processeur pour un compilateur), surtout lorsqu’ils opèrent sur des langages utilisés dans l’industrie. Les méthodes formelles fournissent des notations mathématiques pour spécifier le comportement attendu d’un logiciel et prouver ensuite que le logiciel satisfait sa spécification, et plus généralement des propriétés sémantiques de ce dernier. Les progrès des outils utilisés par les méthodes formelles, en particulier les assistants à la preuve, rendent désormais possible la vérification formelle d’analyseurs statiques et de compilateurs réalistes. Méthodes formelles pour l’analyse statique et la compilation présente, au travers de quelques approches, des travaux de recherche actuels dans le domaine.
– « Analyse statique par interprétation abstraite » de Xavier Rival, est une introduction à une famille importante de méthodes formelles : l’analyse statique par interprétation abstraite. Cet article détaille le cadre générique de l’interprétation abstraite, puis explique en quoi cette théorie permet de vérifier de façon correcte des propriétés sémantiques des programmes sans avoir à les exécuter. Il fournit enfin un aperçu des utilisations récentes de l’analyse statique par interprétation abstraite.
– L’article, « Programmation d’un interpréteur abstrait certifié en logique constructive » de David Cachera et David Pichardie, aborde le problème de la vérification formelle d’un analyseur statique par interprétation abstraite. Ce travail est effectué à l’aide de l’assistant à la preuve Coq, avec comme objectif la génération automatique d’un analyseur statique à partir de spécifications formelles.
Ceci nécessite d’adapter la théorie de l’interprétation abstraite.
– L’article, « Expérimentations en Coq pour un générateur de code qualifiable » de Nassima Izerrouken, Marc Pantel, Xavier Thirioux et Olivier Ssi Yan Kai, s’intéresse à un générateur de code utilisé dans le domaine des systèmes critiques pour produire du logiciel embarqué à partir de modèles graphiques issus d’un environnement de développement. L’article pose le problème de la qualification des générateurs automatiques de code et montre une expérience d’utilisation de l’assistant à la preuve Coq pour spécifier et vérifier formellement certains composants d’un générateur de code, qui a été appliqué à différents circuits embarqués industriels.
Cet article des Editions Lavoisier est disponible en acces libre et gratuit sur tsi.revuesonline.com
370 RSTI - TSI – 30/2011. Analyse statique et compilation
– L’article, « Compilation modulaire d’un langage synchrone », de Daniel Gaffé et Annie Ressouche, définit deux sémantiques équivalentes d’un langage réactif synchrone. La première est une sémantique équationnelle facilitant la compilation modulaire de programmes synchrones impératifs. La seconde est une sémantique comportementale adaptée à la vérification formelle de programmes synchrones. Une boîte à outils dédiée à la spécification, la compilation vers différentes cibles, la simulation et la vérification d’applications réactives synchrones est également présentée.
Je tiens à remercier les membres du comité de lecture ainsi que les lecteurs externes pour leur aide précieuse dans l’élaboration de ce numéro.
SANDRINE BLAZY
INRIA/IRISA, Université de Rennes 1
Cet article des Editions Lavoisier est disponible en acces libre et gratuit sur tsi.revuesonline.com