Validation de systèmes interactifs centrée sur l usager



Documents pareils
Model checking temporisé

JOURNEES SYSTEMES & LOGICIELS CRITIQUES le 14/11/2000. Mise en Œuvre des techniques synchrones pour des applications industrielles

STAGE IREM 0- Premiers pas en Python

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

OCL - Object Constraint Language

Programmation Web. Madalina Croitoru IUT Montpellier

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Programmation en Java IUT GEII (MC-II1) 1

Définition des Webservices Ordre de paiement par . Version 1.0

Conception des systèmes répartis

2. Comprendre les définitions de classes

Machines virtuelles Cours 1 : Introduction

Le génie logiciel. maintenance de logiciels.

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

MV Consulting. ITIL & IS02700x. Club Toulouse Sébastien Rabaud Michel Viala. Michel Viala

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme?

modèles génériques applicables à la synthèse de contrôleurs discrets pour l Internet des Objets

Qualité du logiciel: Méthodes de test

Cours 1 : La compilation

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Initiation à la Programmation en Logique avec SISCtus Prolog

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Master Informatique Aix-Marseille Université

Algorithmique et Programmation, IMA

Programmer en JAVA. par Tama

Plateforme PAYZEN. Définition de Web-services

Introduction à MATLAB R

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Analyse,, Conception des Systèmes Informatiques

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Arbres binaires de recherche

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Vérifier la qualité de vos applications logicielle de manière continue

Rapport de Mini-Projet en ArcGIS Engine

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Recherche dans un tableau

Introduction au langage C

TELEGESTION. l outil indispensable des intervenants à domicile. Maison de l Emploi de Paris Plateforme RH 21 Mai 2015

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

M Études et développement informatique

Outils logiciels pour la combinaison de vérification fonctionnelle et d évaluation de performances au sein de CADP

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Analyse statique de code dans un cycle de développement Web Retour d'expérience

DM 1 : Montre Autoquartz ETA

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Les processus légers : threads. Système L3, /31

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

ORDONNANCEMENT CONJOINT DE TÂCHES ET DE MESSAGES DANS LES RÉSEAUX TEMPS RÉELS 4. QUELQUES EXEMPLES DU DYNAMISME ACTUEL DU TEMPS RÉEL

Plan du cours. Historique du langage Nouveautés de Java 7

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

Table des matières. Introduction

Objets et Programmation. origine des langages orientés-objet

Vérification formelle de la plate-forme Java Card

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

2. Activités et Modèles de développement en Génie Logiciel


Projet Active Object

Gestion de données avec TALEND

UE Programmation Impérative Licence 2ème Année

ATELIER Les nouvelles fonctionnalités de Microsoft Project 2010 : premières impressions

Cours de Programmation en Langage Synchrone SIGNAL. Bernard HOUSSAIS IRISA. Équipe ESPRESSO

TP JAVASCRIPT OMI4 TP5 SRC

Technologie Web. Conception de sites Web. Alexandre Pauchet. INSA Rouen - Département ASI. INSA - ASI TechnoWeb : Rappels UML 1/21

MASTER 2 PROFESSIONNEL. Génie Logiciel, Logiciels Répartis et Embarqués

Import factures depuis journal de vente

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

TD3: tableaux avancées, première classe et chaînes

SugarCubes. Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués. Paris, le 9 janvier, 2009

Guide de connexion au service Nomade sous les environnements Microsoft Windows 7

Auditabilité des SI et Sécurité

BULK SMS Envoi en masse d un message texte moyennant un téléphone mobile (GSM)

PREMIER MINISTRE SECRÉTARIAT GÉNÉRAL DU GOUVERNEMENT

Cours d algorithmique pour la classe de 2nde

Corrigé des exercices sur les références

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

PROGRAMME DETAILLE. Parcours en première année en apprentissage. Travail personnel CC + ET réseaux

DG-ADAJ: Une plateforme Desktop Grid

Chef de projet H/F. Vous avez au minimum 3 ans d expérience en pilotage de projet de préférence dans le monde du PLM et de management d équipe.

PARAMETRER INTERNET EXPLORER 9

Préparation à l examen EFA en Macro

VISIUM. Méthodologie visuelle Visualisation de système Conception et Optimisation Système d information et d organisation

Construire un tableau de bord par Marc Maisonneuve

PACTE : Programme d Amélioration Continue du Travail en Equipe Phase d expérimentation

EXAMEN CRITIQUE D UN DOSSIER TECHNIQUE

Retour d expérience implémentation Scrum / XP

Initiation à LabView : Les exemples d applications :

Projet de Java Enterprise Edition

Initiation au trading automatique et semi-automatique avec Metatrader 4. Nicolas ALEKSY

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Livrer chaque jour ce qui est prêt! Points clés du développement d un produit avec une livrasion par jour.

Présentation BAI -CITC

Transcription:

Validation de systèmes interactifs centrée sur l usager C. Ailleres Mardi 6 Janvier 2004 Problématique Avènement de l informatique : besoin de qualité et de fiabilité des systèmes Génie Logiciel Importance de l IHM dans les systèmes actuels besoin de rendre les systèmes utilisables (ISO 9241-11) Modélisation de tâche besoin des méthodes formelles?

Approche proposée Cycle de vie logiciel en V Besoins Système Spécification Recette Conception Test Codage Approche proposée Cycle de vie logiciel en V adapté aux systèmes interactifs Utilisateurs Besoins Système Modèles Spécification de tâches Recette Conception Test Codage

Approche proposée Utilisateurs Exigences fonctionnelles Modèles de tâche Modèles de tâche en Lustre Contraintes techniques Conception Propriétés satisfaites vérification Propriétés temporelles Codage Code en Lustre Modèle de tâches > Introduction représente : - les services que doit offrir le système à ses usagers - les connaissances requises par l usager pour utiliser le système facilite : - la compréhension du système - la communication entre les utilisateurs, les experts (cogniticiens, informaticiens) formalismes existants :

Modèle de tâches > ConcurTaskTrees > Présentation de la notation ConcurTaskTrees (Paterno) - sémantique riche - facilité d utilisation et de compréhension (CTTE) - nombreux outils associés (THERESA, REMUSINE) - déjà mis en œuvre dans des projets européens (MEFISTO, GUITARE, CAMELEON) en partenariat avec BAAN, Philips, EDF, Louvain-la-Neuve Modèle de tâches > ConcurTaskTrees > Définition de la tâche Une tâche définit comment l utilisateur atteint un but dans un domaine applicatif particulier. Le but étant l obtention d un état désiré du système - un identifiant - une catégorie (qui va exécuter la tâche?) - un type d action (selon la catégorie) - une fréquence d utilisation (faible, moyenne, haute) - une plate-forme cible (Desktop, PDA, GSM, etc ) - options (itérative, optionnelle, coopérative) - pré condition - liste d objets nécessaires à sa réalisation - liste des actions d entrée ou de sortie des objets - durées d exécution d une tâche (min, max, moyenne)

Modèle de tâches > ConcurTaskTrees > Les catégories de tâches - tâche «abstraite» actions complexes impliquant plusieurs catégories de tâches - tâche «utilisateur» planification, résolution de problèmes, comparaison, etc - tâche «application» production d alertes, affichage, comparaison, etc - tâche «interaction» commande, édition, réponse aux alertes, choix, etc - tâche «coopération» négociation, notification Modèle de tâches > ConcurTaskTrees > Les opérateurs temporels Opérateurs temporels inspirés de LOTOS + priorité - [] = ou [] [> > >> ou []>> Choix Indépendance d ordre Concurrence Désactivation Suspension Activation [T] T* T n T

Modèle de tâches > ConcurTaskTrees > Un modèle de tâche Modèle de tâches > ConcurTaskTrees > Un modèle de tâche coopératif

Modèle de tâches > ConcurTaskTrees > Outils associés - vérification syntaxique - simulateur - statistique et comparaison de modèles - test d atteignabilité - conversion en LOTOS - génération automatique d IHM (THERESA) - comparaison de modèles avec des sessions utilisateurs (RemUSINE) Modèle de tâches > ConcurTaskTrees > Simulateur - Facilite la compréhension des relations temporelles - Présentation du futur système aux utilisateurs

Modèle de tâches > ConcurTaskTrees > RemUSINE CTTE Modèle de tâche Préparation RemUSINE Table des tâches Méthode d évaluation RemUSINE Journal Utilisateur Journal 1 Utilisateur n Résultats Outil de journalisation Utilisateur 1 Utilisateur n Application Modélisation de CTT > Model Checking Objectif : Analyse de l adéquation entre deux modèles formels. Systèmes formalisés : - Propriétés - Spécifications - Programmes Langages formels : - Algèbres de processus (Lotos) - Modèles à états (StateCharts, Réseaux de pétri) - Langages synchrones (Lustre)

Modélisation de CTT > Lustre Model Checking modélisation de CTT Lustre (IMAG) : - Formalisme strict et gestion du parallélisme - Outils de preuve et de test (Lesar, SMV, Ga, Lutess) - Continuité avec le travail déjà réalisé Syntaxe de Lustre : - Les nœuds - Les équations - Les assertions Modélisation de CTT > Modélisation de CTT en Lustre - Une tâche atomique un nœud : pexe(état de la tâche) = (evt début, evt fin, dysfonctionnement) - Une relation temporelle un nœud propre à la relation : prel(exe(t1),exe(t2)) = (evt début, evt fin, dysfonctionnement) - Une tâche abstraite une équation composée de relations temporelles : T1T2T3 = prel2(pexe(t1), prel1(pexe(t2),pexe(t3)) - Le système formalisé une équation constituée de tâches composées et/ou de tâches atomiques.

Modélisation de CTT > Activation La tâche se trouvant à droite de l opérateur ne peut pas être activée tant que la tâche de gauche n a pas été complètement réalisée. node pact(st1,st2:[bool,bool,bool]) returns (st:[bool,bool,bool]); assert not(st1[2] or st2[2]); st[0] = false -> if raise(st1[0]) and not st2[0] then true else pre(st[0]); st[1] = false -> if raise(st2[1]) and st1[1] then true else pre(st[1]); st[2] = false -> if raise(st2[0]) and not st1[1] then true else pre(st[2]); Modélisation de CTT > Concurrence Les deux tâches peuvent être exécutées en même temps ou l une après l autre, avec un ordre d activation indifférent. node pcrr(st1,st2:[bool,bool,bool]) returns (st:[bool,bool,bool]); assert not(st1[2] or st2[2]); st[0] = false -> if raise(st1[0]) or raise(st2[0]) then true else pre(st[0]); st[1] = false -> if (raise(st1[1]) and st2[1]) or (raise(st2[1]) and st1[1]) then true else pre(st[1]); st[2] = false;

Modélisation de CTT > Choix Lorsqu une des deux tâches a été choisie, l autre tâche ne peut plus être activée. node pchx(st1,st2:[bool,bool,bool]) returns (st:[bool,bool,bool]); assert not(st1[2] or st2[2]); st[0] = false -> if raise(st1[0]) or raise(st2[0]) then true else pre(st[0]); st[1] = false -> if raise(st1[1]) or raise(st2[1]) then true else pre(st[1]); st[2] = false -> if st1[0] and st2[0] then true else pre(st[2]); Modélisation de CTT > Indépendance d ordre L ordre d activation des tâches est indifférent, mais il ne peut pas y avoir concurrence entre les tâches. node pindn(const n:int;ti:bool^3^n) returns (st:[bool,bool,bool]); assert not(t_or(n,ti[0..n-1,2])); st[0] = T_OR(n,Ti[0..n-1,0]); st[1] = T_AND(n,Ti[0..n-1,1]); st[2] = false -> if st[0] and not st[1] and not aone(n,totask(ti[0..n-1])) then true else pre(st[2]);

Modélisation de CTT > Désactivation Si au moins une action de la tâche se trouvant à droite de l opérateur a été réalisée, la tâche de gauche, si elle a été lancée, est désactivée. node pdac(st1,st2:[bool,bool,bool]) returns (st:[bool,bool,bool]); assert not(st1[2] or st2[2]); st[0] = false -> if raise(st1[0]) or raise(st2[0]) then true else pre(st[0]); st[1] = false -> if (raise(st1[1]) and not st2[0]) or raise(st2[1]) then true else pre(st[1]); st[2] = false -> if (raise(st1[0]) and st2[0]) or (raise(st2[0]) and st1[1]) or (raise(st2[1]) and st1[0] and not st1[1]) then true else pre(st[2]); Modélisation de CTT > Suspension La tâche de gauche, si elle a été lancée, est suspendue le temps de réaliser la tâche se trouvant à sa droite. Puis, elle est réactivée à partir de l état dans lequel elle se trouvait. node psps(st1,st2:[bool,bool,bool]) returns (st:[bool,bool,bool]); assert not(st1[2] or st2[2]); st[0] = false -> if raise(st1[0]) then true else pre(st[0]); st[1] = false -> if raise(st1[1]) then true else pre(st[1]); st[2] = false -> if (raise(st2[0]) and not st1[0]) or (raise(st2[1]) and st1[1]) or (raise(st1[0]) and st2[0]) or (raise(st1[1]) and st2[0] and not st2[1]) then true else pre(st[2]);

Modélisation de CTT > Les priorités entre opérateurs node p(t1,t2,t3:bool) returns (R:[bool,bool,bool]); R = pchx(pexe(t1),pcrr(pexe(t2),pexe(t3))); node p(t1,t2,t3:bool) returns (R:[bool,bool,bool]); R = pcrr(pchx(pexe(t1),pexe(t2)),pexe(t3)); [], =,, [>, > et >> + priorité - Automatisation des priorités dans le programme de transformation des modèles CTT en Lustre Modélisation de CTT > La hiérarchie entre les tâches node h1(t1,t21,t22:bool) returns R:[bool,bool,bool]); R = pact(pexe(t1),pact(pexe(t21),pexe(t22))); node h2(t1,t21,t22:bool) returns (R:[bool,bool,bool]) var T2:[bool,bool,bool] R = pact(pexe(t1),t2); T2 = pact(pexe(t21),pexe(t22)); node R(T1,T21,T22:bool) returns (st:[bool,bool,bool]); st = pact(pexe(t1),t2(t21,t22)); node T2(T21,T22:bool) returns (st:[bool,bool,bool]); st = pact(pexe(t21),pexe(t22));

Modélisation de CTT > Exemple de modèle CTT formalisé en Lustre node appf(t0,t1,t21,t22,t3,t41,t42:bool) returns (Root:[bool,bool,bool]); var abs0,abs1,t2,t4:[bool,bool,bool]; Root=pAct(pExe(T0),abs0); abs0=pindn(2,[abs1] [T4]); abs1=pact(pact(pexe(t1),t2),pexe(t3)); T2=pChx(pExe(T21),pExe(T22)); T4=pChx(pExe(T41),pExe(T42)); Vérification des spécifications > Principes de la vérification sous Lesar Trois notions : - Le programme sous test. - Les propriétés à vérifier. - L observateur. observateur node exclusion(t1,t2:bool) returns (Ok:bool); Ok = (T1 or T2) and not(t1 and T2); node verification(t1,t2:bool) returns (Ok:bool); entrées identiques Ok = ((T1 xor T2) = (exclusion(t1,t2))); propriété programme sous test opérateur logique qui permet de définir le type de propriété Vrai, la propriété est vérifiée Faux, la propriété est violée. Contre exemple

observateur Vérification des spécifications > Atteignabilité Quelque chose peut se produire node vatt0(t0,t1,t21,t22,t3,t41,t42:bool) returns (Ok:bool); var smod:[bool,bool];sprop:[bool,bool,bool];mod,prop:bool; entrées identiques smod= appf(t0,t1,t21,t22,t3,t41,t42); Mod = smod[0] and smod[1]; programme sous test avec exclusion, via des assertions, des cas de dysfonctionnement sprop = pact(pact(pexe(t41),pexe(t22)),pexe(t3)); Prop = sprop[0] and sprop[1] and not sprop[2]; propriété Ok = nand(mod,prop); Grâce aux assertions, Mod, lorsqu il a été réalisé, est toujours Vrai opérateur logique Mod Prop (Mod Prop) Vrai Vrai Faux Vrai Faux Vrai Faux Vrai Vrai Faux Faux Vrai Atteignabilité Contre exemple Prop ne pourra jamais être réalisé Vérification des spécifications > Atteignabilité (T41 >> T22 >> T3) Faux (T1 >> T41) Faux (T21 T22) Vrai Sûreté, s il s agit d un comportement qui ne doit jamais se produire

Vérification des spécifications > Sûreté Quelque chose de mauvais ne se produira jamais Ou quelque chose de bon arrivera toujours Cf. diapositive précédente opérateur logique Mod Prop Mod => Prop Vrai Vrai Vrai Vrai Faux Faux Faux Vrai Vrai Faux Faux Vrai Le comportement attendu se produira toujours Le comportement attendu ne se produira pas obligatoirement T1 >> T3 Vrai T41 >> T3 Faux Vérification des spécifications > Cas particulier Aura-t-on toujours T11 >> T22? Faux TRANSITION 1 --> not T11 and not T12 and not T21 and not T22 TRANSITION 2 --> T11 and not T12 and T21 and not T22 TRANSITION 3 --> T11 and not T12 and not T21 and T22 TRANSITION 4 --> not T11 and T12 and not T21 and T22 TRANSITION 5 --> not T11 and not T12 and not T21 and not T22 Est-il possible d avoir T11 >> T22? Faux TRANSITION 1 --> not T11 and not T12 and not T21 and not T22 TRANSITION 2 --> T11 and not T12 and T21 and not T22 TRANSITION 3 --> not T11 and T12 and not T21 and T22 TRANSITION 4 --> not T11 and not T12 and not T21 and not T22

Vérification des spécifications > Recherche de tous les contre exemples Est-il impossible d avoir T3? Faux On pose alors en assertion dans l observateur : T1 >> T21 >> T3 Est-il encore impossible d avoir T3? Faux On pose alors en assertion dans l observateur : T1 >> T22 >> T3 Est-il encore impossible d avoir T3? Vrai Il est possible d utiliser cette méthode pour ne pas prendre en compte certains chemins trop rapides, par exemple lorsqu on utilise l opérateur de désactivation. Vérification de l implémentation > Travail en cours Déjà réalisé : - Ecriture d un programme Java simple - Création du modèle CTT de ce programme - Formalisation du modèle CTT en Lustre - Formalisation du programme Java en Lustre en utilisant le travail déjà réalisé par Bruno d Ausbourg et Guy Durrieu En cours : - Vérification de propriétés temporelles sur les deux modèles - Vérification d un modèle de l application Java par le modèle du modèle de tâche CTT.

Conclusion et perspectives Atouts de la modélisation : - Proposition d une sémantique fidèle à CTT - Facilité d écriture - Possibilité de vérifier des propriétés d atteignabilité et de sûreté avec des temps de réponse corrects Problème ouvert de la sémantique de l itération Perspectives : - Etendre la modélisation aux tâches optionnelles - Créer d autres opérateurs pour affiner les comportements - Utiliser les modèles dans la génération automatique de jeux de tests Fin Merci de votre attention Avez-vous des questions? Me contacter : - Pour obtenir la bibliographie - Pour obtenir des renseignements complémentaires christophe.ailleres@logicacmg.com