« 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 IHM = Domaine d'étude de l' Interaction Homme-Machine IU NF Utilisateur 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 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.
CTT (Concur Task Tree) JAVA I - Introduction : I - Introduction : Objectifs 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 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= SELECT G THEN S END; evt_2= ANY x WHERE p(x) THEN S2 ..... END B-event : - Adapté à la modélisation des Systèmes réactifs - Notion de raffinement - Obligations de Preuve
I - Introduction : Exemple « jouet »
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);} } listener Méthode JVM Traitement 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
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)
QESTIONS ?