270 likes | 488 Vues
« Validation Formelle de Systèmes Interactifs ». Alexandre Cortier ( ONERA) Bruno d’Ausbourg (ONERA) Yamine Aït-Ameur (LISI-ENSMA). Sommaire. - Introduction - Approche Proposée - Extraction d'un modèle B - Validation Formelle - Conclusions.
E N D
« Validation Formelle de Systèmes Interactifs » Alexandre Cortier (ONERA) Bruno d’Ausbourg (ONERA) Yamine Aït-Ameur (LISI-ENSMA)
Sommaire - Introduction - Approche Proposée - Extraction d'un modèle B - Validation Formelle - Conclusions
I - Introduction : Terminologie • Utilisateur IHM = Domaine d'étude de l' Interaction Homme-Machine IU NF • Système Interactif
I - Introduction : Généralités Complexification des interfaces : • Type d'interaction : les modalités -Windows,Icons, Menus, Pointer, - Manipulation directe, Voie, Toucher • Applications plus volumineuses et critiques : - Contrôle de centrale, Cockpit de l'A380 Développement coûteux: • IHM = 80% de l'effort global de développement • Vérification = Tests (50% du coût de développement)
I - Introduction : Généralités I - Introduction : Généralités Pragmatique : Peu de méthodologies de conception et de validation pour les IU qualifiées de critiques…(utilisation d’outils graphiques) Conséquence : • code peu lisible et difficile à entretenir • comportement final de l’application difficile à prévoir Proposition : Explorer la mise en œuvre de nouvelles méthodes pour assurer la CORRECTION de la partie interactive du système.
I - Introduction : Objectifs I - Introduction : Modèle de Tâche CTT (Concur Task Tree) Code Source JAVA Spécification Abstraite du comportement de l'IHM. Comportement réel de l'application Validation Formelle L'implémentation respecte t-elle la spécification abstraite ?
I - Introduction : Modèle de Tâche CTT CTT : • Structure hiérarchique de tâches - Différents types de tâche - Opérateurs temporels • Définition en compréhension
I - Introduction : Méthode B-Event MODEL NameM VARIABLES x1,x2,... INVARIANT p(x1),p(x2),... INITIALISATION … EVENTS evt_1= SELECTG THENS END; evt_2= ANY x WHERE p(x) THEN S2 END; ..... END B-event : - Adapté à la modélisation des Systèmes réactifs - Notion de raffinement - Obligations de Preuve
I - Introduction : Exemple « jouet » public void actionPerformed(ActionEvent e) { output.setVisible(true); if (e.getSource()==EF){ EF.setEnabled(false); FE.setEnabled(true); ...} else { FE.setEnabled(false); EF.setEnabled(true); ...} output.setText(result);} } JVM Traitement listener Méthode Modification du rendu de l’IU événement Click !
II - Approche Proposée Hypothèse de travail : - Prise en compte d'un sous-ensemble de Java - Pas de contraintes de synchronisation entre thread - Pas de création dynamique d'instances de widget pendant l'exécution
II - Approche Proposée Vue globale de l'approche proposée :
III - Extraction d'un modèle B-Event Extraire un modèle formel de l’application par Analyse Statique du code source. Ce modèle capture l’aspect comportemental de l’interface : - Abstraction totale du noyau fonctionnel : nécessite une bonne séparation du NF et de l’IU… - Extraction des éléments pertinents : widgets, listeners, méthodes listeners… Notamment : Clause INITIALIZATION : méthode main() Clause EVENTS : méthodes listeners ActionPerformed, KeyPressed
III - Extraction d'un modèle B-Event Techniques utilisées pour l'extraction du modèle comportemental : Intervention de l'opérateur
III - Extraction d'un modèle B-Event Modélisation de la bibliothèque Swing : MODEL BSwing SETS WIDGETS, LISTENERS, EVENT_TYPE={ActionPerformed, KeyPressed, KeyReleased,...} VARIABLES widgets, listeners, Jbutton, Jtextfield, ... widgets_att, Jbutton_att ,Jtextfield_att , UA INVARIANT widgets WIDGETS & listeners : LISTENERS & Jbutton widgets_att : widgets struct(enabled : BOOL, visible : BOOL, lists : P(listeners)) Jbutton_att : widgets ... Jtextfield_att : widgets ... UA : struct(source : widgets, Evt_type : EVENT_TYPE)
III - Extraction d'un modèle B-Event Taduction des méthodes listener : - In-lining des méthodes - Abstraction - Traduction des structures de contrôle (conditionnelle, séquencement,...) public void actionPerformed(ActionEvent e) { output.setVisible(true); if (e.getSource()==EF){ EF.setEnabled(false); FE.setEnabled(true); ...} else { FE.setEnabled(false); EF.setEnabled(true); ...} output.setText(result);} }
IV - Validation Formelle Méthode : Montrer que le modèle du système est un raffinement correcte du modèle de tâche CTT. Réalisation en trois étape : 1. Concrétisation et Formalidation du modèle de tâche 2. Couplage du modèle BapplM avec Btask par raffinement 3. Obligations de preuves
I - Validation Formelle Etape 1 : Concrétisation et Formaisation du modèle de tâche
IV - Validation Formelle Couplage des modèles Btask et BapplM par raffinement : Couplage des modèles par raffinement
I - Conclusion Nous avons mis en place une approche permettant de valider un système interactif en terme d’utilisabilité. Pour cela nous avons utilisé : • Un modèle de tâches : exigences du cahier des charges • Code source de l’application Notre approche : • Utilise un unique langage formel pour la validation • A été utilisée avec succès sur une étude de cas simple Perspectives à court terme : • Réalisation d’un outil permettant l’automatisation de la démarche Perspectives à long terme : • Étendre la démarche (multimodalité, multi-threading)