spécification formelle pour les api · notre motivation − aider le développement et la...
Post on 15-Mar-2020
0 Views
Preview:
TRANSCRIPT
Dániel Darvas (CERN BE-ICS-PCS)
Spécification formelle pour les API
CERN-ESTEREL séminaire
21/01/2016, CERN
Travail conjoint avec B. Fernández, E. Blanco,
R. Speroni, I. Majzik
http://cern.ch/plcspecif
Notre motivation
− Aider le développement et la réingénierie (re-engineering)• Notre code évolue depuis 10+ ans
• Le code et la spécification textuelle sont inconsistants
− La vérification n’a aucun sens sans propriétés à vérifier
− Faciliter d’exprimer les exigences complexes
− Générer (une partie) du code peut être possible
Nos exigences
− Méthode légère (lightweight)
• Facile à apprendre
• Pas besoin de Bac+5 en informatique
− Méthode adaptée aux API
• Facile d’exprimer les exigences communes
• Sémantique adaptée
− Méthode formelle
− Outils disponibles
: B, VDM, Z,
ST-LTL, …
: UML, Simulink,
Spec-TRM, …
Plus d’information: D. Darvas, I. Majzik, E. Blanco. Requirements towards a formal
specification language for PLCs. http://doi.org/10.5281/zenodo.14907
Méthodes de spécification pour les API
Trop théorique Trop proche du code
Exemple: ProcGraphExemple: ST-LTL
Spec2 := ALWAYS( (v >= lowlimit) & (v <= highlimit));
Spec3 := ALWAYS(start -> EVENTUALLY running);
Spec5 := ALWAYS( EStop OR NOT Activate -> Not Run );
Spec6 := ALWAYS( Run_risingEdgeONLY_IF Not EStop & Not Error& Reset_risingEdge );
Spec7 := NEVER( Reset & Reset_previous & NOT EStop & Run_risingEdge );
Notre proposition: PLCspecif
− Spécification simple, formelle, adaptée aux API
− Spécification complète – pour des modules d’API
− Basée sur la connaissance des développeurs dans la
domaine d’API
• En réutilisant les méthodes semi-formelles
fréquemment utilisées
• Automates finis
• Circuits logiques
• Avec sémantiques précises
Notre proposition: PLCspecif
Méthode hiérarchique
− Un arbre de modules
• Modules internes / composés
• Modules feuilles
− La logique est définie dans les modules feuilles
Composite0
Statemachine1 Statemachine2 Composite1
Statemachine3 IoConnection1
IoConnection2
Traitement des entrées
Logique principale
Traitement des sorties
Notre proposition: PLCspecif
Logique principale propre (clean core logic)
− Beaucoup de traitements d’entrées/sorties dans les
programmes API
− Tous les modules sont structurés:
Notre proposition: PLCspecif
Adapté aux API
− Événements utilisés comme dans les API
− Plusieurs formalismes pour la logique principale
• Le développeur peut choisir le meilleur
− Représentation tabulaire des expressions
• Beaucoup d’expressions logiques complexes
Plus d’information: D. Darvas, E. Blanco, I. Majzik. A formal specification method for PLC-
based applications. ICALEPCS 2015. http://icalepcs.synchrotron.org.au/papers/wepgf091.pdf
and http://icalepcs.synchrotron.org.au/posters/wepgf091_poster.pdf
PLCspecif: exemple (1 module)
Logique principale est
séparée
Sémantique adaptée
aux API
Soutiens la vérification
Où sommes-nous maintenant?
− Le projet a commencé il y a 1,5 ans
− Syntaxe et sémantique (formelle) définies
− Méthode de vérification définis
− Outil très-très expérimental
− Pour le moment, seulement pour des modules d’API
(pas pour des applications complètes)
• Travail futur
− Néanmoins, on a déjà essayé dans la vraie vie
Plus d’information: D. Darvas, I. Majzik, E. Blanco. Syntax and semantics of PLCspecif.
EDMS report 1523877, 2015. https://edms.cern.ch/document/1523877
Étude de cas: vérification de SM18
But: assurer la sûreté des tests
© CERN
Critique pour
la sûreté
SM18: chronologie de la réalisation
Analyse
• Analyse des exigences (semi-formelles)
• Analyse de la sûreté
Réalisation
• Réalisation du code (manuelle – API de sécurité)
Vérification 1.
• Vérification formelle (vérification de modèles)
• 12 problèmes sont identifiés (et fixés)
Vérification 2.
• Développement de la spécification formelle
• Vérification basée sur la spécification formelle
Vérification basée sur la spécification formelle
Spécification formelle + Vérification de l’équivalence de comportement
• Spécification formelle nécessaire
• Difficile à calculer le résultat
• Complet
• Pas besoin d’extraire les exigences
+2 nouveaux problèmes trouvés!
comparaison
Code APISpécification
PLCspecif
Modèle
formel
Modèle
formel
Par un vérificateur
de modèles
Problèmes trouvés
Au total 14 problèmes trouvés
4 exigences mal comprises
6 problèmes impossible à trouver en utilisant nos
méthodes de tests
2 trouvés seulement en utilisant la spécification
formelle
Résumé
− PLCspecif
• Spécification formelle pour des modules d’API
• Complet, léger, adapté aux API
• Pour le développement du code et la vérification
• Déjà utilisé pour un projet critique
− Travail futur
• Des outils, des outils, des outils
• Extension aux applications d’API complètes
http://cern.ch/plcspecif
Composite0
Statemachine1 Statemachine2 Composite1
Statemachine3 IoConnection1
IoConnection2
Exemple:
Basée sur
IEC 61131
top related