rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

48
Rapprocher les méthodes formelles, l’analyse statique et les tests 29 mai 2012

Upload: rebecca-rouxel

Post on 03-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Rapprocher les méthodes formelles, l’analyse statique et

les tests29 mai 2012

Page 2: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Le projet Hi-Lite

Hi-Lite

Tests unitaires

Preuves formelles

Analyse statique

Combiner tests et preuves

Renforcer mutuellementtests et analyse statique

Faciliter la preuve formelle grâce à l’analyse statique

Page 3: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Un language commun d’annotation

Page 4: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Travail de la deuxième année des partenaires

Page 5: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Résumé d’ensemble

Page 6: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

• T1 : Management et dissémination

• Gestion de projet

• Dissémination des produits du projet

• Forge Hi-Lite : http://forge.open-do.org

• Mailing listes, dépot de sources, …

• Nombreuses publications et participations à des conférences

• T2 : Spécifications

• Exigences collectées l’année dernière, affinées cette année

Rapport d’activité par tâche

Page 7: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

• T3 : Langages

• ALFA, E-ACSL manuels de référence mis à jour

• Extensions SPARK

• T4 : Traducteurs

• Gros progrès sur le traducteur ALFA vers Why (gnat2why)

• Support complete de ALFA dans GNAT Pro

• Greffon Frama-C: E-ACSL vers C

Rapport d’activité par tâche

Page 8: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

• T5 : Outils d’analyse et de test

• CodePeer : adaptations à ALFA ~ terminée, améliorations

• Nombreuses améliorations dans GNATtest (génération d’un framework de tests unitaires), y compris support des aspects Test_Case

• Evolutions du prouveur Alt-Ergo et de Why3

• Evolutions de la plate-forme Frama-C

• T6 : Bibliothèques et interfaces utilisateur

• Intégration de gnatprove et gnattest dans GPS

• Support de ALFA dans GPS

• Conception en cours d’un outil de consolidation des résultats

• Améliorations dans AltGr-Ergo

Rapport d’activité par tâche

Page 9: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

• T7 : Applications industrielles

• Outils (gnatprove/gnat2why, gnattest, GPS, why3, alt-ergo, greffon e-acsl) mis à disposition

• Retour d’expérience, mises à jour disponibles

• Etudes de cas : Thales, Astrium

• Application des outils sur eux-mêmes

• Utilisation de CodePeer sur CodePeer, GNAT, GPS

Rapport d’activité par tâche

Page 10: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012
Page 11: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

• Extensions du langage SPARK dans le but d’améliorer les techniques de preuve, support d’ALFA, et de la bibliothèque des conteneurs, par exemple:

- Invariants de type

- Génériques

• Développement et intégration de “Victor” un traducteur des conditions de vérification SPARK vers le format SMT-Lib afin de facilite l’utilisation de démonstrateurs de théorèmes alternatifs, par exemple Alt-Ergo.

Praxis Work Package

Page 12: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

• Implémentation des génériques est en cours de développement par Gaétan Allaert d’Altran-Praxis France.

• SPARK Generics LRM et le document SPARK Generics User View ont été publiés.

• Implémentation par étapes: la dernière version de l’outil SPARK a été délivrée en Décembre 2011 avec support des sous-programmes génériques SPARK.

• La fonction générique Ada.Unchecked_Conversion a été étendue afin de supporter dans le contexte de preuve la possibilité d’appliquer une pré et une post conditions à l’instanciation.

Progrès du Praxis Work PackageLes génériques

Page 13: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

• Les activités de validation de la version incluent:

• à travers le tests, l’ajout d’un ensemble considérable de tests dans le but de valider l’implémentation des sous-programmes génériques;

• l’ajout d’annotation de preuve au nouveau code et au code modifié par l’analyse des sous-programmes génériques. Les conditions de vérification qui en résulte ont été déchargées en utilisant les outils de preuve SPARK, y compris Victor et Alt-Ergo.

• L’implémentation des paquetages génériques se poursuit et devrait être disponible dans la prochaine version de l’outil SPARK.

Progrès du Praxis Work PackageLes génériques

Page 14: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

• Les génériques comme décrit dans le "SPARK Generics LRM" sont inclus dans la nouvel édition de “SPARK: The proven approach to High Integrity Software” par John Barnes, que sera publié durant Q3 2012.

• Les génériques SPARK excluent certaines caractéristiques d’Ada qui ne sont pas autorisées en SPARK mais gardent un sous-ensemble utilisable.

• L’accent a été placé afin de supporter les caractéristiques nécessaires à supporter une implémentation utilisable de la bibliothèque des conteneurs SPARK.

• Supporter le concept of démontrer une seul fois utiliser plusieurs fois.

Les generiques SPARK

Page 15: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

• Tous les composants de la bibliothèque inclus dans la dernière version de l’outil SPARK sont:

• SPARK.Ada.Strings.Unbounded

• SPARK.Ada.Command_Line

• SPARK.Ada.Text_IO

• Ada.Interfaces, Ada.Interaces.C

• Ada.Character.Handling, SPARK.Unsigned

• Une première spécification de la bibliothèque des conteneurs a été écrite et sera mis à jour suivant le travail réalisé par AdaCore concernant la preuve des programmes utilisants les conteneurs.

• La bibliothèque des conteneurs SPARK sera implémentée des que les paquetages génériques seront disponible en SPARK.

Progrès du Praxis Work PackageBibliothèque SPARK

Page 16: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

• Unification de la sémantique entre ALFA et SPARK pour les pré & post conditions ainsi que pour les expressions dans les autres contextes de preuve

− ALFA a une sémantique exécutable.

− SPARK est basé sur une sémantique mathématique.

− Des réunions entre AdaCore et Altran Praxis ont été tenues avec succès dans le but de définir une approche commune.

• Riposte – un générateur de contre-exemples a été développé par Altran Praxis (non financé par le projet Hi-Lite) et des investigations ont été menées pour le rendre disponible avec une interface Why dans le cadre de la technologie Hi-Lite.

Progrès du Praxis Work PackageSupport pour ALFA

Amélioration des techniques de preuve

Page 17: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012
Page 18: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Buts principaux du projet Hi-Lite (rappel)

- combiner les techniques de test logiciel et de vérification formelle- appliquer ces techniques aux programmes mixtes Ada + C

Contributions visées par le CEA LIST dans ce contexte

- définir un langage de spécifications exécutables pour le C, E-ACSL, fondé sur le langage ACSL existant

- implanter un traducteur d'E-ACSL vers C

- améliorer la plateforme Frama-C dédiée à l'analyse statique de programmes C

Page 19: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

E-ACSLExecutable ANSI/ISO C Specification Language

- langage d'annotations exécutables pour le langage C

- annotation exécutable = traductible en une expression C évaluable à l'exécution

- le plus possible sémantiquement compatible avec ALFA

- fondé sur le langage ACSL (ANSI/ISO C Specification Language)

- défini au cours de la 1ère année du projet

- amélioration au cours de cette seconde année

- nouvelle version du manuel de référence (version 1.5-4) à partir de laquelle une implantation a été effectuée

- Une publication soumiseM. Delahaye, N. Kosmatov and J. Signoles. Towards a Common Specification Language for Static and Dynamic Analyses of C Programs. Submitted to QSIC 2012.

Page 20: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Traducteur d'E-ACSL vers C

- nouveau greffon de la plateforme Frama-C

- traduire les annotations E-ACSL en C pour permettre la vérification d'assertions à l'exécution : runtime assertion checking

- utilisation d’entiers GMP (entiers mathématiques) pour être fidèle à la sémantique d’E-ACSL.

- schéma de traduction non trivial.

- prise en compte d’une grande partie d’E-ACSL, à l’exception notable des constructions liés à la mémoire et aux réels.

- version 0.1 distribuée en open source en janvier 2012.

- amélioration en cours et prévue pour la fin du projet :-système de types pour générer un code beaucoup plus efficace-support des constructions liées à la mémoire

Page 21: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Évolution de la plateforme Frama-C

- nouvelle version publique de Frama-C : version Nitrogen-20111001

- version requise par le traducteur d’E-ACSL en C

- nouveaux mécanismes facilitant les collaborations inter-analyses pour la vérification de propriétés et améliorant le retour utilisateur

- une publication acceptée et deux soumises :P. Cuoq, D. Doligez and J. Signoles. Lightweight Typed Customizable Unmarshaling. ML Workshop 2011.

L. Correnson and J. Signoles. Combining Analyses for C Program Verification. Submitted to FMICS 2012.

P. Cuoq, F. Kirchner, N. Kosmatov, V. Prevosto, J. Signoles and B. Yakobowski. Frama-C: a Program Analysis Perspective. Submitted to SEFM 2012.

Page 22: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Résumé des travaux du CEA LIST

- nouvelle version du langage de spécifications exécutables E-ACSL

- distribution open source de la version 0.1 du traducteur d’E-ACSL en C

- évolution de la plateforme Frama-C : version Nitrogen-20111001.

- requise par le traducteur- collaboration inter-analyses

- dissémination scientifique : 1 publication et 3 soumises sur les thématiques Hi-Lite

- à venir :- poursuite du travail d’implantation- vérification programmes Ada + C

Page 23: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012
Page 24: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012
Page 25: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012
Page 26: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012
Page 27: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012
Page 28: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012
Page 29: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012
Page 30: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Stratégie de Thales dans le projet

• Intégrer les approches Hi-Lite dans l’outillage Thales pour la génération d’applications

• Remontée des spécifications formelles dans les modèles

• Adaptation du code généré pour le rendre conforme à Hi-Lite

• Évaluer cette intégration sur un cas d’étude du domaine spatial

Page 31: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Nouvelle spécification du code à générer

• Mise au point d’un prototype de code adapté aux contraintes d’Hi-Lite

• Masquage des pointeurs dans les structures

• Conservation des fonctionnalités (presque) à l’identique

• Discussions avec les équipes industrielles pour l’adoption du nouveau code

• En cours d’évaluation par rapport aux outils Hi-Lite

Page 32: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Intégration dans l’approche de modélisation

• Définition d’un méta-modèle pour les spécifications formelles

• Préparation des expérimentations sur la modélisation

C1 instance

1

C1 instance

1

C2 instance

2

C2 instance

2

Tâche 1Tâche 1

Processus 1Processus 1

C2 instance

1

C2 instance

1

Specifications

Specifications

Page 33: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Cas d’étude

• Délimitation du cas d’étude

• Contrôle de régulation thermique dans le logiciel de vol

• Assemblage de composants et code d’implémentation

• Objectifs

• Évaluer l’intégration des outils Hi-Lite dans l’approche de modélisation

• Étudier les possibilités de spécifications systématiques sur le code généré

Page 34: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012
Page 35: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Astrium activities in Hi-Lite

• Industrial user

• Task 2.1: “Specifications”

• Definition of the industrial needs for the development of critical real time embedded software in the space domain

Finalized in 2012

• Task 7.2: “Industrial applications”

• Validation of the Hi-Lite approach

Definition of toy examples to validate some specific concepts

Definition of a “realistic” application

Page 36: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Task 2.1: “Specifications” (1/2)• Analysis of standards

• ECSS-E-ST-40C (« Space engineering – Software »)

• ECSS-Q-ST-80C (« Space product assurance – Software product assurance »)

• Main conclusions

• Test shall be the main validation techniques

• Formal proof is accepted and sometimes recommended

• Validation & verification objectives

• Exhaustive detection of run-time errors, traceability between test cases and test procedures, etc.

Important number covered by Hi-Lite

Page 37: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Task 2.1: “Specifications” (2/2)

• Astrium general needs

• Decrease of costs and delays

• Increase of the quality

• More specific needs

• Validation of generic software / customised software

• Safe reuse of software building blocks

• Verification of the sensor data

• Properties on vectors

• Etc.

• Used Ada features

• Mathematical operators, arrays, ...

• Generics, discriminant records, expression functions, ...

Page 38: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Sensors

Actuators

Control

Guidance

En

vir

on

men

tEn

vir

on

men

tEn

vir

on

men

tEn

vir

on

men

t

Navigation

GNCGNC

Task 7.2: “Industrial applications” (1/3)

EC

SEPC

EA

P

EA

P

EC

SEPC

EA

P

EA

P

EC

SEPC

EA

P

EA

PMVMMVM

TC

TM

TM/TCTM/TC

Page 39: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Mission & Vehicle Management

MVMMVM

Page 40: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Telemetry / Telecommand

TMTCTMTC

Page 41: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

• Orientation of the ATV solar wings

• Optimisation of energy

• Experimentations in SPARK

• Comparison with Hi-Lite

Task 7.2: “Industrial applications” (3/3)

Algorithms

Page 42: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

GenericGeneric

DiscriminantDiscriminant

Page 43: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

ContractContract

Test casesTest cases

Page 44: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Formal proofFormal proof

Page 45: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

TestsTests

Page 46: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Travail à venir

Page 47: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

• Tâches 4 (traducteurs), 5 (outils analyse/test) et 7 (bibliotheques, IHM) en pleine charge

• Finalisation des tâches 2 (spécifications) et 3 (langages)

• Début de la tâche 7 (applications industrielles)

Travail pour cette année

Page 48: Rapprocher les méthodes formelles, lanalyse statique et les tests 29 mai 2012

Questions ?