Déconvolution adaptative pour le contrôle non destructif par ultrasons - Thèse Informatique

Déconvolution adaptative pour le contrôle non destructif par ultrasons - Thèse Informatique - Revenir à l'accueil

Déconvolution adaptative pour le contrôle non destructif par ultrasons
Ewen Carcreff 1, 2 
 
Résumé : Nous nous intéressons au contrôle non destructif par ultrasons des matériaux industriels. En pratique, les signaux réceptionnés par le transducteur ultrasonore sont analysés pour détecter les discontinuités de la pièce inspectée. L'analyse est néanmoins rendue difficile par l'acquisition numérique, les effets de la propagation ultrasonore et la superposition des échos lorsque les discontinuités sont proches. La déconvolution parcimonieuse est une méthode inverse qui permet d'aborder ce problème afin de localiser précisément les discontinuités. Ce procédé favorise les signaux parcimonieux, c'est à dire ne contenant qu'un faible nombre de discontinuités. Dans la littérature, la déconvolution est généralement abordée sous l'hypothèse d'un modèle invariant en fonction de la distance de propagation, modalité qui n'est pas appropriée ici car l'onde se déforme au cours de son parcours et en fonction des discontinuités rencontrées. Cette thèse développe un modèle et des méthodes associées qui visent à annuler les dégradations dues à l'instrumentation et à la propagation ultrasonore, tout en résolvant des problèmes de superposition d'échos. Le premier axe consiste à modéliser la formation du signal ultrasonore en y intégrant les phénomènes propres aux ultrasons. Cette partie permet de construire un modèle linéaire mais non invariant, prenant en compte l'atténuation et la dispersion. L'étape de modélisation est validée par des acquisitions avec des matériaux atténuants. La deuxième partie de cette thèse concerne le développement de méthodes de déconvolution efficaces pour ce problème, reposant sur la minimisation d'un critère des moindres carrés pénalisé par la pseudo-norme L0. Nous avons développé des algorithmes d'optimisation spécifiques, prenant en compte, d'une part, un modèle de trains d'impulsions sur-échantillonné par rapport aux données, et d'autre part le caractère oscillant des formes d'onde ultrasonores. En utilisant des données synthétiques et expérimentales, ces algorithmes associés à un modèle direct adapté aboutissent à de meilleurs résultats comparés aux approches classiques pour un coût de calcul maîtrisé. Ces algorithmes sont finalement appliqués à des cas concrets de contrôle non destructif où ils démontrent leur efficacité.
Type de document : 
Thèse
Acoustics. Université du Maine, 2014. French
Domaine :
Physique / Mécanique / Acoustique
Informatique / Traitement du signal et de l'image
 
 

FICHIER

Source : https://hal.archives-ouvertes.fr

 

Autres thèses en informatique :

[TXT]

 Etude-theorique-cryp..> 06-Jan-2015 13:08  3.0M  

[TXT]

 Modelisation-qualita..> 06-Jan-2015 13:08  2.6M  

[TXT]

 Etude-de-representat..> 06-Jan-2015 13:07  3.0M  

[TXT]

 Exploration-et-struc..> 06-Jan-2015 13:07  3.4M  

[TXT]

 Analyse-de-dependanc..> 06-Jan-2015 13:06  4.5M  

[TXT]

 Scenarisation-d-envi..> 06-Jan-2015 13:06  4.1M  

[TXT]

 De-l-auto-evaluation..> 06-Jan-2015 06:51  6.2M

[TXT]

 APISENSE-a-distribut..> 05-Jan-2015 08:09  5.7M  

[TXT]

 APISENSE-terminaux-i..> 04-Jan-2015 21:53  5.4M  

[TXT]

 Addition-formulae-on..> 04-Jan-2015 21:26  3.0M  

[TXT]

 Algorithmique-distri..> 05-Jan-2015 23:00  4.2M  

[TXT]

 Approche-algorithmiq..> 05-Jan-2015 22:53  3.5M  

[TXT]

 Architecture-de-comm..> 05-Jan-2015 08:04  4.4M  

[TXT]

 Bornes-inferieures-e..> 05-Jan-2015 15:39  1.6M  

[TXT]

 CONTRIBUTION-A-LA-ST..> 05-Jan-2015 22:56  5.5M  

[TXT]

 Caracterisation-auto..> 05-Jan-2015 16:34  5.1M  

[TXT]

 Caracterisation-et-d..> 05-Jan-2015 22:51  4.5M  

[TXT]

 Catalogage-de-petits..> 05-Jan-2015 08:06  3.8M  

[TXT]

 Classification-et-ca..> 04-Jan-2015 11:58  1.3M  

[TXT]

 Collaboration-de-tec..> 04-Jan-2015 21:27  2.4M  

[TXT]

 Completion-combinato..> 05-Jan-2015 15:41  2.6M  

[TXT]

 Contribution-a-l-etu..> 05-Jan-2015 22:54  3.2M  

[TXT]

 Contribution-a-la-co..> 05-Jan-2015 16:10  3.5M  

[TXT]

 Contributions-a-la-v..> 04-Jan-2015 21:51  5.4M  

[TXT]

 Controle-de-la-puiss..> 05-Jan-2015 22:52  3.6M  

[TXT]

 Coordination-Modulai..> 05-Jan-2015 15:58  2.2M  

[TXT]

 Couplage-de-modeles-..> 05-Jan-2015 22:46  5.3M  

[TXT]

 Cryptographie-sur-le..> 05-Jan-2015 08:01  3.4M  

[TXT]

 De-l-auto-evaluation..> 05-Jan-2015 22:44  6.2M  

[TXT]

 Detection-de-rails-m..> 05-Jan-2015 08:04  5.1M  

[TXT]

 Dispositifs-spatiaux..> 05-Jan-2015 22:59  5.2M  

[TXT]

 Dynamique-des-graphe..> 05-Jan-2015 22:56  5.5M  

[TXT]

 Environnements-urbai..> 05-Jan-2015 08:03  6.3M  

[TXT]

 Equilibrage-de-charg..> 04-Jan-2015 21:25  3.2M  

[TXT]

 Etude-de-la-synchron..> 05-Jan-2015 15:58  2.4M  

[TXT]

 Etude-des-facteurs-d..> 05-Jan-2015 15:38  1.8M  

[TXT]

 Evaluation-analytiqu..> 05-Jan-2015 08:07  3.5M  

[TXT]

 Evaluation-de-la-sur..> 05-Jan-2015 15:39  1.4M  

[TXT]

 Execution-efficace-d..> 05-Jan-2015 15:39  1.4M  

[TXT]

 Faciliter-le-develop..> 04-Jan-2015 21:56  4.4M  

[TXT]

 Factorisation-matric..> 04-Jan-2015 11:59  2.7M  

[TXT]

 Formes-et-fonctions-..> 05-Jan-2015 22:49  4.5M  

[TXT]

 Generation-automatiq..> 03-Jan-2015 22:04  2.6M  

[TXT]

 Generation-de-modele..> 05-Jan-2015 15:41  3.2M  

[TXT]

 Gestion-de-la-variab..> 04-Jan-2015 21:55  4.8M  

[TXT]

 Idéalisation-d-asse..> 04-Jan-2015 11:57  2.1M  

[TXT]

 Inference-d-invarian..> 04-Jan-2015 11:58  1.5M  

[TXT]

 Influence-du-mapping..> 05-Jan-2015 22:49  4.6M  

[TXT]

 Integration-de l-inf..> 04-Jan-2015 21:25  3.4M  

[TXT]

 Integration-et-explo..> 05-Jan-2015 16:35  4.8M  

[TXT]

 Intelligence-en-essa..> 05-Jan-2015 08:03  5.6M  

[TXT]

 Interaction-entre-al..> 05-Jan-2015 22:51  4.1M  

[TXT]

 Interrogation-de-gra..> 03-Jan-2015 22:04  2.9M  

[TXT]

 L-architecture-du-di..> 05-Jan-2015 15:40  1.2M  

[TXT]

 La-gestion-du-trafic..> 03-Jan-2015 22:01  4.1M  

[TXT]

 Langage-de-mashup-Th..> 04-Jan-2015 21:24  4.1M  

[TXT]

 Les-logiciels-de-ges..> 03-Jan-2015 22:03  3.1M  

[TXT]

 Lh-rs-p2p-une-nouvel..> 04-Jan-2015 11:59  2.7M  

[TXT]

 Mesure-de-la-fragili..> 04-Jan-2015 21:24  3.8M  

[TXT]

 Meta-modelisation-du..> 04-Jan-2015 21:56  4.1M  

[TXT]

 Methode-de-classific..> 04-Jan-2015 11:58  1.3M  

[TXT]

 Methode-de-game-desi..> 05-Jan-2015 08:10  4.2M  

[TXT]

 Methodes-de-reconstr..> 05-Jan-2015 23:05  6.1M  

[TXT]

 Methodes-et-structur..> 05-Jan-2015 22:46  5.6M  

[TXT]

 Methodes-numeriques-..> 05-Jan-2015 22:52  3.9M  

[TXT]

 Methodes-sequentiell..> 04-Jan-2015 21:27  2.2M  

[TXT]

 Mise-en-oeuvre-appli..> 04-Jan-2015 21:54  4.4M  

[TXT]

 Mise-en-oeuvre-de-cr..> 05-Jan-2015 23:03  6.3M  

[TXT]

 Modele-de-comporteme..> 05-Jan-2015 16:10  3.2M  

[TXT]

 Modele-et-experience..> 05-Jan-2015 08:01  3.8M  

[TXT]

 Modelisation-d-un-re..> 05-Jan-2015 23:03  7.2M  

[TXT]

 Modelisation-d-une-a..> 04-Jan-2015 21:53  5.0M  

[TXT]

 Modelisation-de-la-p..> 05-Jan-2015 15:59  1.9M  

[TXT]

 Modelisation-et-dete..> 04-Jan-2015 11:57  1.6M  

[TXT]

 Modelisation-et-scor..> 05-Jan-2015 16:09  4.4M  

[TXT]

 Normalisation-et-App..> 03-Jan-2015 22:01  4.1M  

[TXT]

 Nouvelles-approches-..> 05-Jan-2015 08:09  2.3M  

[TXT]

 Periodes-d-integrale..> 05-Jan-2015 22:54  3.0M  

[TXT]

 Planification-d-une-..> 05-Jan-2015 08:06  4.1M  

[TXT]

 Positionnement-robus..> 05-Jan-2015 15:39  1.5M  

[TXT]

 Prise-en-compte-de-l..> 03-Jan-2015 22:04  2.8M  

[TXT]

 Proposition-d-approc..> 05-Jan-2015 22:58  5.2M  

[TXT]

 Proposition-d-une-ar..> 05-Jan-2015 22:48  5.0M  

[TXT]

 Protection-obligatoi..> 05-Jan-2015 22:44  6.0M  

[TXT]

 Qualification-system..> 04-Jan-2015 21:26  2.8M  

[TXT]

 Reconnaissance-de-co..> 03-Jan-2015 22:03  3.6M  

[TXT]

 Reseaux-urbains-de-c..> 05-Jan-2015 16:34  5.6M  

[TXT]

 Samsung-Telephone-Mo..> 05-Jan-2015 15:41  2.4M  

[TXT]

 Segmentation-par-cou..> 05-Jan-2015 23:01  3.9M  

[TXT]

 Segmentation-supervi..> 04-Jan-2015 11:58  1.3M  

[TXT]

 Services-de-repartit..> 03-Jan-2015 21:59  4.7M  

[TXT]

 Simulation-credible-..> 05-Jan-2015 22:58  5.2M  

[TXT]

 Simulations-numeriqu..> 05-Jan-2015 22:48  4.8M  

[TXT]

 Systeme-de-mesure-d-..> 05-Jan-2015 15:40  1.3M  

[TXT]

 Techniques-de-codage..> 05-Jan-2015 22:53  3.5M  

[TXT]

 Techniques-visuelles..> 04-Jan-2015 21:27  2.7M  

[TXT]

 The-Emergence-of-Mul..> 03-Jan-2015 22:05  2.5M  

[TXT]

 Thermoformage-du-ver..> 05-Jan-2015 22:59  4.4M  

[TXT]

 Trigraphes-de-Berge-..> 03-Jan-2015 22:02  3.9M  

[TXT]

 Typologies-textuelle..> 05-Jan-2015 23:05  6.1M  

[TXT]

 Un-ilot-formel-pour-..> 05-Jan-2015 08:07  3.1M  

[TXT]

 Une-approche-agile-f..> 05-Jan-2015 16:09  4.0M  

[TXT]

 Une-approche-d-align..> 05-Jan-2015 15:40  2.9M  

[TXT]

 Vers-une-capitalisat..> 03-Jan-2015 22:00  4.6M
Cours d'informatique :

[TXT]

 Analyse-numerique-Co..> 03-Jan-2015 17:33  3.0M  

[TXT]

 Approches-m-k-firm-p..> 03-Jan-2015 17:27  3.7M  

[TXT]

 COURS-LA-CULTURE-INF..> 03-Jan-2015 17:25  3.8M  

[TXT]

 CRYPTANALYSE-DE-RSA-..> 03-Jan-2015 17:33  3.0M  

[TXT]

 Cours-Interconnexion..> 03-Jan-2015 17:34  3.0M  

[TXT]

 Cours-d-Analyse-et-C..> 03-Jan-2015 17:22  3.9M  

[TXT]

 Efficient-C++finite-..> 03-Jan-2015 17:30  3.5M  

[TXT]

 Efficient-C++finite-..> 03-Jan-2015 17:31  3.2M  

[TXT]

 Fondements-de-l-Info..> 03-Jan-2015 17:22  4.0M  

[TXT]

 INTRODUCTION-A-L-INF..> 03-Jan-2015 17:24  3.8M  

[TXT]

 Informatique-et-Ling..> 03-Jan-2015 17:24  3.8M  

[TXT]

 Initiation-a-l-infor..> 03-Jan-2015 17:26  3.8M  

[TXT]

 Intelligence-Artific..> 03-Jan-2015 15:16  2.5M  

[TXT]

 Introduction-a-l-ana..> 03-Jan-2015 17:27  3.7M  

[TXT]

 Introduction-a-la-ge..> 03-Jan-2015 17:26  3.8M  

[TXT]

 Le-routage-externe-B..> 03-Jan-2015 17:32  3.1M  

[TXT]

 Le-systeme-d-informa..> 03-Jan-2015 17:32  3.1M  

[TXT]

 Lecture1_Linear_SVM_..> 03-Jan-2015 14:57  2.4M  

[TXT]

 Lecture2_Linear_SVM_..> 03-Jan-2015 14:56  2.4M  

[TXT]

 Lecture3_Linear_SVM_..> 03-Jan-2015 14:56  2.4M  

[TXT]

 Lecture4_Kenrels_Fun..> 03-Jan-2015 14:55  2.4M  

[TXT]

 Lecture5_Kernel_SVM...> 03-Jan-2015 14:55  2.4M  

[TXT]

 Lecture6_SVDD.pdf.htm   03-Jan-2015 14:54  2.4M  

[TXT]

 Lecture7_Cross_Valid..> 03-Jan-2015 14:54  2.4M  

[TXT]

 Lecture8_Multi_Class..> 03-Jan-2015 14:57  2.4M  

[TXT]

 Lecture9_Multi_Kerne..> 03-Jan-2015 14:53  2.5M  

[TXT]

 Lecture10_Outilier_L..> 03-Jan-2015 14:53  2.5M  

[TXT]

 Les-reseaux-sans-fil..> 03-Jan-2015 15:17  2.5M  

[TXT]

 NooJ-pour-l-Intellig..> 03-Jan-2015 17:30  3.2M  

[TXT]

 Outils-Logiques-pour..> 03-Jan-2015 15:15  2.8M  

[TXT]

 Presentation-de-la-r..> 03-Jan-2015 17:33  3.0M  

[TXT]

 Projet-IP-SIG-Signal..> 03-Jan-2015 15:16  2.5M  

[TXT]

 Robotique-Mobile-PDF..> 03-Jan-2015 15:16  2.6M  

[TXT]

 Systeme-informatique..> 03-Jan-2015 15:17  2.5M  

[TXT]

 Systemes-Multi-Agent..> 03-Jan-2015 17:28  3.5M  

[TXT]

 Tutoriel-Android-TP-..> 03-Jan-2015 14:57  2.3M  

[TXT]

 Understanding-SVM-th..> 03-Jan-2015 14:57  2.4M  

[TXT]

 Une-histoire-de-la-m..> 03-Jan-2015 17:28  3.5M  

[TXT]

 Une-introduction-aux..> 03-Jan-2015 17:31  3.1M  

[TXT]

 Vers-une-signalisati..> 03-Jan-2015 17:25  3.8M 
D´econvolution adaptative pour le contrˆole non destructif par ultrasons Ewen Carcreff To cite this version: Ewen Carcreff. D´econvolution adaptative pour le contrˆole non destructif par ultrasons. Acoustics. Universit´e du Maine, 2014. French. HAL Id: tel-01098798 https://hal.archives-ouvertes.fr/tel-01098798 Submitted on 29 Dec 2014 HAL is a multi-disciplinary open access archive for the deposit and dissemination of scientific research documents, whether they are published or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers. L’archive ouverte pluridisciplinaire HAL, est destin´ee au d´epˆot et `a la diffusion de documents scientifiques de niveau recherche, publi´es ou non, ´emanant des ´etablissements d’enseignement et de recherche fran¸cais ou ´etrangers, des laboratoires publics ou priv´es.Thèse de Doctorat Ewen CARCREFF Mémoire présenté en vue de l’obtention du grade de Docteur de l’Université du Maine sous le label de l’Université de Nantes Angers Le Mans École doctorale : Sciences pour l’Ingénieur, Géosciences et Architecture Discipline : Acoustique, section CNU 60, 61 Unité de recherche : Institut de Recherche en Communications et Cybernétique de Nantes (IRCCyN) Laboratoire d’Acoustique de l’Université du Maine (LAUM) Soutenue le 28 novembre 2014 Déconvolution adaptative pour le contrôle non destructif par ultrasons JURY Président : M. Cédric RICHARD, Professeur des universités, Université de Nice Sophia Antipolis Rapporteurs : M. Laurent DAUDET, Professeur des universités, Université Paris Diderot M. Thomas RODET, Professeur des universités, École Normale Supérieure de Cachan Examinateur : M. Pierre CALMON, Directeur de recherche, CEA, Saclay Invité : M. Vincent BALTAZART, Chargé de recherche, IFSTTAR, Nantes Directeur de thèse : M. Laurent SIMON, Professeur des universités, Université du Maine Co-directeur de thèse : M. Jérôme IDIER, Directeur de recherche CNRS, IRCCyN Encadrant : M. Sébastien BOURGUIGNON, Maître de Conférences, École Centrale de NantesRemerciements En préambule, je remercie la région Pays de la Loire, et le pôle de compétence ECND-PdL, d’avoir financé cette thèse. Je tiens à remercier les membres du jury qui ont accepté de juger mon travail de thèse. Merci à Cédric Richard, professeur à l’Université de Nice Sophia Antipolis, d’avoir présidé ce jury. Merci à Pierre Calmon, directeur de recherche au CEA, et à Vincent Baltazart, chargé de recherche à l’IFSTTAR. Je remercie vivement Laurent Daudet, professeur à l’Université Paris Diderot, et Thomas Rodet, professeur à l’ENS Cachan, d’avoir accepté d’être les rapporteurs de mon manuscrit. Leurs remarques ont permis d’améliorer la qualité de celui-ci. Je veux exprimer ma reconnaissance à mes encadrants de thèse, Sébastien Bourguignon, Jérôme Idier et Laurent Simon. Ils ont su me guider en me laissant beaucoup d’autonomie, tout en me faisant toujours confiance. C’est un vrai luxe de travailler dans ces conditions. Je remercie Laurent pour son optimisme. Je remercie Jérôme pour sa hauteur de vue sur le sujet de thèse. Un immense merci à Sébastien pour sa disponibilité et son implication constante. Travailler à ses côtés a vraiment été très enrichissant, tant du point de vue professionnel que relationnel. Je tiens à souligner l’aide précieuse fournie par Aroune Duclos, maître de conférences à l’Université du Maine, pour réaliser les expérimentations au laboratoire d’acoustique de l’Université du Maine tout au long de la thèse. Mes remerciements vont également aux membres dynamiques de l’équipe Analyse et décision en traitement du signal et de l’image de l’IRCCyN, les permanents, Marie-Françoise Lucas, Saïd Moussaoui, Éric Le Carpentier et Mathieu Lagrange, ainsi que les doctorants (cités plus loin). Je remercie de surcroît les membres de l’IRCCyN que j’ai croisés pendant ces trois années. Je remercie particulièrement Emily Thureau pour son aide constante. Merci également au service administratif, Patricia Brière, Sylvie Julienne, Virginie Dupont, Michelle-Anne Audrain et Armelle Radigois. Je n’oublie pas le service informatique, Denis Creusot, Richard Randriatoamanana et Robert Legal. Je remercie enfin Michel Malabre, directeur de l’IRCCyN, de m’avoir accueilli dans le laboratoire où j’ai travaillé dans d’excellentes conditions. Je voudrais également remercier les membres du LAUM, qui m’ont toujours réservé le meilleur accueil lors de mes nombreuses visites. Notamment, je remercie Aroune Duclos, Catherine Potel, Claude Dépollier, Simon Félix, Pierrick Lotton, Jean-Hugh Thomas, Hervé Mézière. Je remercie également Joël Gilbert, directeur du LAUM, pour son soutien. Merci également à Anne-Marie Brulé pour son aide précieuse. Je remercie aussi Nacera Bedrici qui nous a accueillis à l’ESTACA. Je remercie Alain Le Duff et Guy Plantier, enseignant-chercheurs à l’ESEO pour leur bonne humeur et leur enthousiasme au sujet de ma thèse. Merci aussi à Roberto Longo pour 3son dynamisme. Avec Sébastien, nous avons accueilli Gwenola Rolland et Yan Li qui ont réalisé un stage au sein de l’équipe ADTSI. Je les remercie d’avoir travaillé sur ces projets en lieu avec ma thèse. J’ai passé deux jours au CEA pour réaliser des simulations avec le logiciel CIVA. Je veux remercier Raphaële Raillon et Pierre Calmon pour leur accueil. J’adresse mes vifs remerciements aux doctorants et post-doctorants qui m’ont accompagné pendant ces trois années : Maxime, Vincent, Corentin, Grégoire, Philip, Emmanuel, Julien, Joan, Ablamvi, Hendry, Robin, Maria, Oscar, Aleksandra, Jonathan, Inès, Denis, Xavier, Céline, ... Mes remerciements vont évidemment à mes amis qui me soutiennent depuis longtemps : Olivier, Gaëlle, Edwin, Quentin, Thomas, Hadrien, Guillaume, Nicolas, François, Charlotte, Jean-François, Aurélien, Enric, Mathieu, et bien d’autres. Enfin, je ne serai jamais assez reconnaissant envers ma famille qui est toujours là pour moi. Je remercie ma belle-famille pour leur bienveillance permanente. Je remercie Gwenal et Lena de m’avoir supporté toutes ces années. Merci à mes parents pour leur soutien inconditionnel. Je clos ces remerciements par le soutien qui me donne le plus de force, celui de ma femme Gaëlle et de mon fils Maden, qui est né pendant cette thèse. 4Table des matières Introduction générale 9 Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Organisation du document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1 Positionnement du problème 13 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.1 Le contrôle non destructif industriel . . . . . . . . . . . . . . . . . . . . . 14 1.1.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.1.2 Le contrôle non destructif par ultrasons . . . . . . . . . . . . . . . 14 1.1.3 Transducteurs et mesures . . . . . . . . . . . . . . . . . . . . . . . 15 1.2 Détection des discontinuités et des défauts . . . . . . . . . . . . . . . . . . 17 1.2.1 Changements d’impédance acoustique . . . . . . . . . . . . . . . . 17 1.2.2 La séquence de réflectivité . . . . . . . . . . . . . . . . . . . . . . 19 1.3 Modèle direct et problème inverse . . . . . . . . . . . . . . . . . . . . . . 20 1.3.1 Modèle direct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.3.2 Difficultés spécifiques liées au problème inverse . . . . . . . . . . 20 1.3.3 Caractère mal posé . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.4 Revue bibliographique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.5 Axes de travail effectués pendant la thèse . . . . . . . . . . . . . . . . . . 24 2 Le modèle direct 25 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.1 Modèle de signaux continus pour une cible ponctuelle . . . . . . . . . . . . 26 2.1.1 Modèle fréquentiel . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.1.2 Écriture en fonction de la distance de propagation . . . . . . . . . . 27 2.1.3 L’atténuation fréquentielle . . . . . . . . . . . . . . . . . . . . . . 28 2.1.4 La dispersion et les théories causales . . . . . . . . . . . . . . . . . 33 2.2 Modèle discret linéaire pour l’inversion . . . . . . . . . . . . . . . . . . . 38 2.2.1 Modèle de signaux à temps continu pour une distribution de cibles . 38 2.2.2 Modèle de signaux à temps discret . . . . . . . . . . . . . . . . . . 39 2.2.3 Différents cas pour le modèle linéaire discret . . . . . . . . . . . . 40 2.2.4 Calcul numérique des réponses impulsionnelles d’atténuation . . . 43 2.2.5 Modèle d’atténuation d’Olofsson . . . . . . . . . . . . . . . . . . 45 5TABLE DES MATIÈRES 2.3 Exploitation des modèles . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.3.1 Mesure en mode pulse-echo avec du polycarbonate . . . . . . . . . 48 2.3.2 Mesure en transmission dans l’huile de ricin . . . . . . . . . . . . . 53 2.3.3 Mesure aérienne en transmission dans un matériau poreux . . . . . 56 2.3.4 Exploitation du modèle pour l’Évaluation Non Destructive . . . . . 58 2.3.5 Problème de diffraction des cibles : application aux trous à fond plat 61 3 Le problème inverse 65 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.1 Approches paramétriques . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.1.1 Modèles de formes d’ondes . . . . . . . . . . . . . . . . . . . . . 66 3.1.2 Méthodes locales d’optimisation . . . . . . . . . . . . . . . . . . . 67 3.1.3 Quelques méthodes d’optimisation non-linéaire . . . . . . . . . . . 69 3.1.4 Méthodes de type Espérance-Maximisation . . . . . . . . . . . . . 71 3.2 Minimisation d’un critère pénalisé . . . . . . . . . . . . . . . . . . . . . . 73 3.2.1 Description du modèle direct . . . . . . . . . . . . . . . . . . . . . 73 3.2.2 Inverse généralisée . . . . . . . . . . . . . . . . . . . . . . . . . . 74 3.2.3 Régularisation par minimisation d’un critère pénalisé . . . . . . . . 74 3.2.4 Réglage du paramètre de régularisation . . . . . . . . . . . . . . . 79 3.3 Régularisation par la pseudo-norme `0 . . . . . . . . . . . . . . . . . . . . 80 3.3.1 Formulation du problème d’optimisation . . . . . . . . . . . . . . 80 3.3.2 Méthodes d’optimisation par une approche gloutonne . . . . . . . . 81 3.3.3 L’agorithme Single Best Replacement . . . . . . . . . . . . . . . . 84 3.3.4 Comparaison des algorithmes gloutons et SBR . . . . . . . . . . . 86 3.4 Des algorithmes plus efficaces d’optimisation `0 . . . . . . . . . . . . . . . 88 3.4.1 Mouvements plus complexes . . . . . . . . . . . . . . . . . . . . . 88 3.4.2 Sélection dans une fenêtre . . . . . . . . . . . . . . . . . . . . . . 89 3.4.3 Sélection basée sur un calcul d’auto-corrélation multidimensionnelle 92 4 Déconvolution parcimonieuse sur-échantillonnée 101 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 4.1 Modèle sur-échantillonné et MISO . . . . . . . . . . . . . . . . . . . . . . 102 4.1.1 Convolution discrète sur-échantillonnée . . . . . . . . . . . . . . . 102 4.1.2 Système MISO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 4.2 Facteur de sur-échantillonnage . . . . . . . . . . . . . . . . . . . . . . . . 104 4.3 Algorithmes de déconvolution . . . . . . . . . . . . . . . . . . . . . . . . 105 4.3.1 Calcul rapide de la convolution discrète . . . . . . . . . . . . . . . 106 4.3.2 Détails de mise en œuvre des algorithmes . . . . . . . . . . . . . . 107 4.4 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 4.4.1 Outils de mesure de l’erreur d’estimation . . . . . . . . . . . . . . 108 4.4.2 Résultats issus de données simulées . . . . . . . . . . . . . . . . . 110 4.4.3 Simulations de Monte-Carlo . . . . . . . . . . . . . . . . . . . . . 112 4.4.4 Résultats expérimentaux . . . . . . . . . . . . . . . . . . . . . . . 113 6TABLE DES MATIÈRES 5 Application au CND 117 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 5.1 Estimation de la forme d’onde . . . . . . . . . . . . . . . . . . . . . . . . 118 5.1.1 Mesure d’un écho isolé . . . . . . . . . . . . . . . . . . . . . . . . 118 5.1.2 Estimation par connaissance de la séquence de réflectivité . . . . . 118 5.1.3 Moyennage dans le domaine homomorphique . . . . . . . . . . . . 119 5.1.4 Construction d’un dictionnaire ou apprentissage . . . . . . . . . . . 120 5.2 Plaque de matériau homogène . . . . . . . . . . . . . . . . . . . . . . . . 120 5.2.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 5.2.2 Calcul d’incertitude . . . . . . . . . . . . . . . . . . . . . . . . . . 122 5.2.3 Estimation du temps de vol moyen par moindres carrés . . . . . . . 123 5.2.4 END d’une plaque épaisse . . . . . . . . . . . . . . . . . . . . . . 123 5.2.5 CND d’une plaque fine . . . . . . . . . . . . . . . . . . . . . . . . 126 5.3 Matériaux atténuants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 5.4 Plaques avec trous à fond plat . . . . . . . . . . . . . . . . . . . . . . . . . 129 5.4.1 Cas d’un Ascan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 5.4.2 Cas d’un Bscan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Conclusion et perspectives 133 Conclusion générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 A Relations de causalité 139 A.1 Relations de causalité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 A.2 Relations de causalité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 A.2.1 Calcul de la phase dispersive pour une atténuation linéaire . . . . . 141 B Modèle de réponse impulsionnelle instrumentale 143 B.1 Modèle d’écho gaussien . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 B.2 Facteur de bande passante . . . . . . . . . . . . . . . . . . . . . . . . . . 143 B.2.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 B.2.2 Application à la forme d’onde gaussienne . . . . . . . . . . . . . . 144 C Détails des calculs algorithmiques 147 C.1 Critère d’ajout pour OLS et SBR . . . . . . . . . . . . . . . . . . . . . . . 147 C.2 Critère de retrait pour SBR . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Bibliographie 150 7Introduction générale Contexte Ce travail de thèse est le fruit d’une collaboration entre les laboratoires IRCCyN (Institut de Recherche en Communications et Cybernétique de Nantes, UMR CNRS 6597) et LAUM (Laboratoire d’Acoustique de l’Université du Maine, UMR CNRS 6613). Il a été réalisé au sein de l’équipe ADTSI (Analyse et Décision en Traitement du Signal et de l’Image) de l’IRCCyN. Le financement a été assuré par la région Pays de la Loire par le biais du pôle de compétence ECND-PdL (Evaluation et Contrôle Non Destructifs en Pays de la Loire). Cette thèse traite de méthodes inverses dans un contexte de contrôle non destructif par ultrasons, où le but est la détection de discontinuités dans les objets inspectés. L’application directe de ces méthodes permet une meilleure interprétation des signaux et une aide au diagnostic. Problématique Le contrôle non destructif (CND) est une étape importante du processus industriel. Il permet de contrôler l’intégrité des composants sans les endommager, pendant ou à la fin de leur fabrication, et en situation d’utilisation. Différents phénomènes physiques permettent ces contrôles de par leur caractère pénétrant dans les objets (ondes électromagnétiques, ondes acoustiques, champ magnétique, etc.), menant à différents modes de contrôle1 . Nous nous intéressons dans ce travail au CND par ultrasons, modalité qui consiste à émettre des ondes acoustiques dans le matériau à inspecter [Krautkramer et Krautkramer 1990]. Les ondes se propageant dans le milieu, et récupérées par le capteur ultrasonore, permettent dans la mesure du possible de détecter et d’identifier les défauts contenus dans la pièce. Le même procédé peut être appliqué pour évaluer les matériaux, c’est-à-dire pour estimer des paramètres physiques propres, tels que la vitesse des ondes ou le coefficient d’atténuation. Le but de l’utilisateur est de visualiser les échos et d’en déduire une information spatiale sur l’objet inspecté. Nous nous intéressons ici aux discontinuités, qui présentent des transitions franches dans l’objet (surfaces, arêtes, défauts, etc.). L’analyse du signal peut cependant se révéler difficile à l’œil nu pour plusieurs raisons : bruit, atténuation, diffraction, superposition d’échos, etc. Des techniques de traitement du signal sont alors employées pour améliorer la résolution des signaux [Zhang et Harvey 2013]. Nous nous intéressons plus pré- cisément aux approches qui visent à résoudre le problème inverse d’estimation des distances de propagation correspondant à chaque écho. 1Voir le site de la COnfédération Française pour les Essais Non Destructifs (COFREND) : http://www.cofrend.com. 9INTRODUCTION GÉNÉRALE Nous nous plaçons dans le cadre des méthodes de déconvolution parcimonieuse qui ont montré de bons résultats dans un contexte de CND [Zala 1992]. Ces méthodes partent du principe que les échos sont des répliques d’un écho de référence. Le modèle sous-jacent est discret et linéaire, et donne de bons résultats lorsque la forme des échos varie très peu. Des algorithmes efficaces ont été mis en œuvre, notamment en utilisant une approche pénalisée pour traduire le caractère parcimonieux de l’inconnue. La pénalisation `1 a été beaucoup utilisée dans le domaine géophysique [Taylor et al. 1979], puis acoustique [O’Brien et al. 1994]. Elle trouve ses limites dans notre application car ce type de pénalisation fournit des solutions avec de nombreux pics de faibles amplitudes. La pénalisation `0 qui compte les composantes non-nulles semble plus adaptée à notre problème mais son caractère discret formule des problèmes d’optimisation plus complexes. Des travaux récents ont ainsi abordé le problème en pénalisation `0 sous la forme d’algorithmes itératifs sous optimaux (algorithme SBR [Soussen et al. 2011]). Nous nous plaçons dans la continuité de ces travaux. L’exploration combinatoire limitée peut se révéler insatisfaisante et requiert le développement de méthodes plus abouties et adaptées aux formes d’ondes ultrasonores. Dans de nombreux matériaux, la forme des échos reçus varie à cause de l’atténuation fré- quentielle, de la dispersion et des signatures des interfaces et des défauts. Certaines méthodes permettent de prendre en compte ces déformations, notamment les méthodes d’estimation de modèles paramétriques [Demirli et Saniie 2001a]. En revanche, de par son caractère invariant, le modèle de convolution n’est pas adapté à ces types de distorsion. Un modèle empirique de déformation des échos a été proposé dans [Olofsson et Stepinski 2001], mais ne prend pas en considération la réalité physique. Des modèles existent cependant dans la littérature pour traduire l’atténuation, notamment le modèle en loi de puissance fréquentielle [Ophir et Jaeger 1982]. La dispersion peut également être définie par certains modèles physiques [He 1999]. L’insertion de tels modèles physiques dans le modèle des données ultrasonores est une autre motivation de cette thèse. Contributions Les contributions de cette thèse portent sur deux aspects : la modélisation des signaux et la résolution du problème inverse. Les publications scientifiques issues de ces contributions sont indexées par des lettres majuscules et sont listées à la fin de ce chapitre. Nous développons tout d’abord un modèle de signaux ultrasonores qui prend en compte l’atténuation et la dispersion. La nouveauté de ce modèle est de produire un système linéaire non invariant pour les signaux discrets, tout en prenant en compte l’atténuation et la dispersion [A, E, F, H, I]. Ce modèle peut être vu comme une extension du modèle convolutif classique, mais où la réponse impulsionnelle varie en fonction de la distance de propagation. Nous montrons également qu’il est possible de discrétiser le modèle à une résolution plus élevée que les données, qui permet d’aboutir à un modèle sur-échantillonné (dit à superrésolution) [C, D, G]. Les contributions méthodologiques concernent la résolution du problème inverse par optimisation d’un critère des moindres carrés pénalisé par une norme `0. Nous proposons tout d’abord de revisiter des algorithmes de déconvolution parcimonieuse pour le modèle sur- échantillonné [C, D], qui est décrit comme un cas particulier de système à entrées multiples et sortie unique (MISO). Dans un second temps, nous développons un algorithme pour l’optimisation `0 grâce à une exploration combinatoire plus complexe adaptée aux formes d’ondes 10INTRODUCTION GÉNÉRALE oscillantes [B]. Cette thèse comporte également un volet expérimental qui a permis de valider les modèles et les méthodes développés sur des cas pratiques de contrôle non destructif par ultrasons. Les différentes données ont été acquises au Laboratoire d’Acoustique de l’Université du Maine. Le traitement de ces données expérimentales apparaît dans les publications [A, C, E, F, H, I]. Organisation du document Ce mémoire est composé de cinq chapitres dont nous précisons succinctement le contenu. • Le chapitre 1 a pour but de détailler la problématique et les objectifs de notre étude. Nous présentons ce qu’est le contrôle non destructif ultrasonore dans un contexte industriel. Nous abordons ensuite l’objectif de ce travail qui est la détection de discontinuités dans les matériaux. Dans cette optique, nous exposons les verrous du problème ainsi qu’une revue bibliographique des modèles et des méthodes utilisés. • Le chapitre 2 présente la construction du modèle direct de propagation ultrasonore développé. Nous proposons un modèle linéaire pour les signaux à temps discret qui prend en compte l’atténuation et la dispersion de l’onde propagée. Ce modèle est comparé à d’autres modèles de la littérature grâce à des signaux réels obtenus à partir de matériaux atténuants (polycarbonate, huile de ricin, mousse poreuse). • Le chapitre 3 est consacré au problème inverse et aux développements méthodologiques. Nous présentons tout d’abord les différentes approches pour résoudre le problème inverse et nous nous focalisons sur l’approche pénalisée par une pseudo-norme `0. Dans un premier temps, nous présentons une approche de mouvements multiples dans une fenêtre. Ensuite, nous proposons un algorithme inspiré de SBR pour l’optimisation avec une pénalisation `0 et présentant une exploration combinatoire plus complexe adaptée aux formes d’ondes oscillantes. Appliqué à des données ultrasonores, cet algorithme est plus performant pour un accroissement restreint du coût de calcul. • Le chapitre 4 présente la déconvolution parcimonieuse lorsque le modèle de convolution est sur-échantillonné, ce qui permet de reconstruire un train d’impulsions à une résolution temporelle plus fine que celle des données. Nous montrons que ce modèle a un cadre plus général de système à entrées multiples et sortie unique. Des algorithmes classiques de déconvolution parcimonieuse sont alors adaptés pour ce type de système. • Dans le chapitre 5, des exemples concrets d’application de la déconvolution parcimonieuse au contrôle non destructif sont présentés. Nous exposons en particulier des cas de calcul d’épaisseur de plaques fines et de détection de défauts dans l’aluminium, le plexiglas et le polycarbonate. 11INTRODUCTION GÉNÉRALE Publications • Article de revue internationale publié : [A] E. Carcreff, S. Bourguignon, J. Idier et L. Simon. A linear model approach for ultrasonic inverse problems with attenuation and dispersion. IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, Vol. 61(7), Pages 1191-1203, Juillet 2014. • Article de revue internationale en cours de rédaction : [B] E. Carcreff, S. Bourguignon, J. Idier et L. Simon. Sparse deconvolution of signals containing oscillating waveforms. En cours de rédaction, 2014. • Articles de conférences avec actes et comité de lecture : [C] E. Carcreff, S. Bourguignon, J. Idier et L. Simon. Algorithmes de déconvolution impulsionnelle à résolution augmentée. Actes du 24ème colloque GRETSI, Brest, France, Septembre 2013. [D] E. Carcreff, S. Bourguignon, J. Idier et L. Simon. Resolution enhancement of ultrasonic signals by up-sampled sparse deconvolution, IEEE International Conference on Acoustics Speech and Signal Processing, pages 6511-6515, Vancouver, Canada, Mai 2013. • Articles de conférences avec actes : [E] E. Carcreff, S. Bourguignon, J. Idier et L. Simon. Contrôle non destructif des matériaux atténuants et dispersifs par déconvolution impulsionnelle. Actes du 12ème Congrès Français d’Acoustique, Poitiers, France, Avril 2014. [F] E. Carcreff, S. Bourguignon, J. Idier, L. Simon et Aroune Duclos. Including frequency-dependent attenuation for the deconvolution of ultrasonic signals, 19th International Congress on Acoustics, Montréal, Canada, Juin 2013. [G] E. Carcreff, S. Bourguignon, J. Idier et L. Simon. High-resolution deconvolution applied to non destructive testing, Acoustics 2012, Nantes, France, Avril 2012. • Articles de conférences sans actes : [H] E. Carcreff, A. Duclos, J.-P. Groby et S. Bourguignon. A dispersive attenuation model for ultrasonic wave propagation in porous materials. Symposium on the Acoustics of Poro-Elastic Materials, Stockholm, Suède, Décembre 2014. [I] E. Carcreff, S. Bourguignon, J. Idier et L. Simon. Déconvolution pour le contrôle par ultrasons des matériaux atténuants et dispersifs. Journées COFREND, Bordeaux, France, Mai 2014. 12Chapitre 1 Positionnement du problème : la détection de discontinuités en contrôle non destructif Sommaire Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.1 Le contrôle non destructif industriel . . . . . . . . . . . . . . . . . . . 14 1.1.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.1.2 Le contrôle non destructif par ultrasons . . . . . . . . . . . . . . 14 1.1.3 Transducteurs et mesures . . . . . . . . . . . . . . . . . . . . . . 15 1.2 Détection des discontinuités et des défauts . . . . . . . . . . . . . . . . 17 1.2.1 Changements d’impédance acoustique . . . . . . . . . . . . . . . 17 1.2.2 La séquence de réflectivité . . . . . . . . . . . . . . . . . . . . . 19 1.3 Modèle direct et problème inverse . . . . . . . . . . . . . . . . . . . . 20 1.3.1 Modèle direct . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.3.2 Difficultés spécifiques liées au problème inverse . . . . . . . . . 20 1.3.3 Caractère mal posé . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.4 Revue bibliographique . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.5 Axes de travail effectués pendant la thèse . . . . . . . . . . . . . . . . 24 Introduction Le but de ce chapitre est de présenter les enjeux et objectifs de la thèse. La section 1.1 décrit tout d’abord les objectifs et les modalités du contrôle non destructif industriel. Il est question ici de présenter les généralités d’un contrôle par ultrasons : transducteurs, mesures, etc. Nous décrivons ensuite dans la section 1.2 l’objectif de notre travail, qui est la détection de discontinuités. Ce point est illustré par un exemple simple de contrôle de plaque homogène immergée. La formulation du problème inverse est ensuite décrite dans la section 1.3. Nous 13CHAPITRE 1 : Positionnement du problème détaillons notamment les difficultés de sa résolution. La section 1.4 établit une revue bibliographique des modèles et des méthodes inverses utilisés. Cela permet finalement de décrire les axes de travail abordés pendant la thèse dans la section 1.5. 1.1 Le contrôle non destructif industriel 1.1.1 Généralités Le Contrôle Non Destructif (CND) a pour objectif de détecter d’éventuels défauts à l’intérieur ou à la surface de pièces industrielles sans les endommager. La différence est faite avec l’Évaluation Non Destructive (END) où le but est de mesurer des grandeurs physiques propres aux matériaux (masse volumique, vitesse des ondes acoustiques, constante diélectrique, etc.). Différents phénomènes physiques permettent cette auscultation grâce à leurs propriétés pénétrantes dans le matériau1 : résurgence d’un liquide ou d’un gaz pénétrant (ressuage), ondes ultrasonores, courants de Foucault, ondes infrarouges (thermographie), ondes électromagnétiques X ou gamma (radiographie), champ magnétique (magnétoscopie), etc. La plupart de ces phénomènes sont employés dans le domaine de l’imagerie médicale (échographie, radiologie, imagerie par résonance magnétique, etc.), qui peut aussi être considérée comme un domaine d’application du CND pour les tissus mous et les os. Nous associons également au CND les techniques d’auscultation du sol et du génie civil qui utilisent les mêmes phénomènes, mais également les ondes sismiques (sismologie) et les micro-ondes [Jonscher 1983] (radar à pénétration de sol). Le CND dans le domaine industriel intervient pendant deux phases de la vie des composants. Premièrement, il sert à vérifier que les pièces produites ne contiennent pas d’anomalies ou de défauts avant leur utilisation. Il permet ainsi d’éviter un dysfonctionnement lié à la mauvaise fabrication d’une pièce. Ce contrôle peut être appliqué au contrôle de tubes, barres, plaques, etc. mais également de pièces manufacturées comme des assemblages avec soudures ou avec des matériaux composites. Un exemple de contrôle de tube de grosse dimension est présenté sur la figure 1.1. La deuxième phase d’utilisation du CND intervient pendant l’usage des pièces. Il sert alors à contrôler leur bon fonctionnement in situ, car celles-ci peuvent subir de fortes sollicitations mécaniques, chimiques, radioactives, menant à l’apparition de craquements, fissures, etc. Les domaines d’application sont variés : transports terrestres et aériens, centrales électriques, etc. 1.1.2 Le contrôle non destructif par ultrasons Le CND par ultrasons est effectué en émettant des ondes acoustiques à l’intérieur ou à la surface des pièces à inspecter. La réception de ces ondes après propagation dans le matériau permet d’obtenir des informations sur le milieu de propagation [Krautkramer et Krautkramer 1990]. Les ondes acoustiques créent des modifications locales de la pression et de la vitesse des particules. Par exemple, l’équation d’une onde plane se propageant dans la direction x s’écrit [Bruneau 1998] ❇ 2p♣x, tq ❇x 2 ✁ 1 c 2 ❇ 2p♣x, tq ❇t 2 ✏ 0, (1.1) 1Voir le site de la COnfédération Française pour les Essais Non Destructifs (COFREND) : http://www.cofrend.com. 141.1 Le contrôle non destructif industriel FIGURE 1.1 – Contrôle d’un tube de grand diamètre par ultrasons. La sonde ultrasonore est placée directement en contact avec la pièce par l’opérateur pour l’inspecter (source : IRC Advanced NDT Services, www.indiamart.com). où p♣x, tq est la pression en x à un instant t, et c est la vitesse des ondes. La solution de ce type d’équation est de ce fait une fonction de l’espace et du temps. Les ultrasons sont non invasifs, contrairement aux rayons X notamment. Cela présente un avantage évident dans le domaine médical, mais également dans le domaine industriel lorsque l’environnement est soumis à de fortes contraintes (radioactives par exemple). Un autre avantage du contrôle par ultrasons est leur facilité d’utilisation, qui permet par exemple de créer des systèmes de faible encombrement et portatifs que les opérateurs peuvent utiliser sur le terrain. Les systèmes utilisant des rayons X ou des champs magnétiques nécessitant une puissance électrique conséquente sont plus difficilement portables. Un dernier atout est le faible coût des systèmes et des sondes de mesure par ultrasons. D’un point de vue modé- lisation, l’hypothèse de linéarité [Bruneau 1998] de la propagation ultrasonore rend possible le développement de logiciels de simulation [Lingvall 2004a, Mahaut et al. 2009, McGough 2014]. Ce travail de thèse concerne le CND par ultrasons, même si les modèles et techniques d’inversion proposés pourraient être étendus à d’autres modalités de CND. 1.1.3 Transducteurs et mesures Les transducteurs utilisés en CND et END ultrasonores sont des convertisseurs électro-acoustiques : ils convertissent un signal électrique en mouvement de la membrane du transducteur (à la manière d’un haut-parleur). Le mouvement de cette membrane provoque la mise en mouvement des particules autour d’elle et crée ainsi une onde acoustique. Les transducteurs possèdent l’effet réciproque, c’est à dire qu’un mouvement de la membrane crée un signal électrique. Un transducteur peut donc être à la fois émetteur et récepteur. Typiquement, l’effet piézoélectrique permet de réaliser ces transducteurs [Krautkramer et Krautkramer 1990, chap. 7]. La piézoélectricité est la propriété que possèdent certains corps de se polariser électriquement sous l’action d’une contrainte mécanique, et réciproquement de se déformer lorsqu’on leur applique un champ électrique. Des transducteurs mono-élément sont représentés sur la figure 1.2a. Il existe également des capteurs multi-éléments (voir figure 1.2b). Ceux-ci permettent le contrôle spécifique de chaque élément et ainsi la génération de champs acoustiques complexes (focalisation, balayage, ondes planes, etc.). Une acquisition avec une sonde mono-élément permet d’obtenir un signal numérique unidimensionnel que l’on appelle Ascan. Un exemple de A-scan est présenté sur la figure 1.6. Il est également possible d’obtenir 15CHAPITRE 1 : Positionnement du problème (a) (b) FIGURE 1.2 – Types de sondes ultrasonores. (a) : sondes mono-palpeur, (b) : sonde multi- éléments (source : Olympus, www.olympus-ims.com). des images ou B-scans en déplaçant le transducteur mono-élément ou en utilisant un transducteur multi-éléments. Pour réaliser des contrôles par ultrasons, un émetteur et un récepteur ultrasonores sont né- cessaires. Deux cas de figure sont alors possibles. Le premier cas utilise un seul transducteur qui va servir d’émetteur et de récepteur. On parle alors de mesure en réflexion ou pulseecho en anglais. Ce type de mesure est utilisé pour sa simplicité, mais également lorsque la face arrière de la pièce n’est pas accessible [Krautkramer et Krautkramer 1990]. On peut par exemple citer le cas de contrôle de tube, à l’intérieur duquel on ne peut pas accéder. La deuxième possibilité consiste à utiliser un transducteur émetteur et un transducteur récepteur. On l’appelle alors mesure en transmission ou pitch-catch en anglais. Ce procédé est par exemple appliqué pour réaliser l’évaluation de matériaux avec un transducteur de part et d’autre de la pièce de test. Ces deux dispositifs expérimentaux sont représentés sur la figure 1.3. Emetteur R´ecepteur Pi`ece Emetteur R´ecepteur Pi`ece (a) (b) FIGURE 1.3 – Configurations de mesure par ultrasons. (a) : en réflexion, (b) : en transmission. Les mesures peuvent se faire directement en contact avec la pièce à inspecter (voir fi- gure 1.1). On utilise alors un couplant entre le(s) transducteur(s) et le matériau pour réaliser une adaptation d’impédance. L’eau est également un très bon adaptateur d’impédance si bien que la majorité des contrôles est réalisée en immersion dans une cuve (voir photo 1.4). 161.2 Détection des discontinuités et des défauts FIGURE 1.4 – Cuve de mesure par ultrasons au Laboratoire d’Acoustique de l’Université du Maine. Les transducteurs et les pièces à inspecter sont immergés le plus souvent dans l’eau. 1.2 Détection des discontinuités et des défauts 1.2.1 Changements d’impédance acoustique Les ondes acoustiques sont générées grâce à un transducteur électro-acoustique. L’onde se propage alors dans le milieu et crée une onde retour à chaque changement d’impédance rencontré [Saniie et Nagle 1989]. Ces discontinuités d’impédance acoustique peuvent provenir d’interfaces entre deux milieux ou alors de défauts qui créent des ruptures dans le matériau. À titre d’exemple, nous étudions le cas d’un matériau homogène d’impédance Z1 entouré par un milieu homogène d’impédance Z2 (cf. figure 1.5). C’est typiquement le cas d’une Z1 Z2 α12 β12 α21 β21 Z1 d transducteur FIGURE 1.5 – Coefficients de réflexion aux interfaces de deux matériaux. pièce immergée dans une cuve d’eau. L’impédance acoustique d’un matériau homogène est Zi ✏ ρici , où ρi est la masse volumique et ci est la vitesse des ondes [Krautkramer et Krautkramer 1990, chap. 2]. Le coefficient de réflexion αij , entre un milieu i et un milieu j, qui 17CHAPITRE 1 : Positionnement du problème indique le rapport entre la pression réfléchie et la pression incidente, se calcule par αij ✏ Zj ✁ Zi Zi Zj . (1.2) D’un manière similaire, le coefficient de transmission βij , d’un milieu i vers un milieu j, définit le rapport entre les pressions transmise et incidente, et s’écrit βij ✏ 1 αij ✏ 2Zj Zi Zj . (1.3) Pour une mesure en réflexion, nous pouvons alors calculer les coefficients de réflexion des deux premiers échos, l’écho de surface et l’écho du fond de la pièce (voir figure 1.5), qui ont pour amplitudes respectives α12 et β12α21β21. Les ondes réfléchies sont ensuite réceptionnées par un capteur acousto-électrique et forment les échos dans le signal électrique. Pour illustrer la problématique, nous avons choisi une pièce d’aluminium immergée dans l’eau avec les paramètres suivants : c1 ✏ 1500 m.s✁1 , ρ1 ✏ 1000 kg.m✁3 , c2 ✏ 6500 m.s✁1 , ρ2 ✏ 2660 kg.m✁3 . Le premier écho est l’écho de surface qui a une amplitude α12 ✏ 0.8403. Les échos suivants proviennent des allers-retours avec le fond de la pièce. Le deuxième écho a donc une amplitude β12α21β21 ✏ ✁0.2469, le troisième β12α 3 21β21 ✏ ✁0.1744 et ainsi de suite pour les échos suivants. Des exemples de signaux simulés pour des épaisseurs d ✏ 10 mm et d ✏ 1 mm sont représentés sur la fi- gure 1.6. Dans ces signaux, les amplitudes sont identiques, mais les temps entre les échos 0 5 10 15 20 25 −1 −0.5 0 0.5 1 (a) Donn´ees pour une ´epaisseur de 10 mm y(t) t [µs] 0 5 10 15 20 25 −1 −0.5 0 0.5 1 (b) Donn´ees pour une ´epaisseur de 1 mm y(t) t [µs] FIGURE 1.6 – Exemple de A-scan simulé correspondant à la figure 1.5 avec (a) d ✏ 10 mm et (b) d ✏ 1 mm. Le matériau 1 est l’eau (c1 ✏ 1500 m.s✁1 , ρ1 ✏ 1000 kg.m✁3 ) et le matériau 2 est l’aluminium (c2 ✏ 6500 m.s✁1 , ρ2 ✏ 2660 kg.m✁3 ). sont différents. En effet, le temps d’un aller-retour dans la pièce est 2d④c2 et vaut 3.08 µs pour d ✏ 10 mm et 0.31 µs pour d ✏ 1 mm. Le but de la déconvolution est de retrouver les positions et les amplitudes des discontinuités d’impédance à partir du signal électrique reçu par le capteur ultrasonore. Retrouver 181.2 Détection des discontinuités et des défauts ces grandeurs à partir de mesures échantillonnées, incomplètes et bruitées consiste en un problème inverse mal posé [Idier 2001]. Dans les exemples de la figure 1.6, on devine qu’il sera plus facile de résoudre le problème pour d ✏ 10 mm que pour d ✏ 1 mm. 1.2.2 La séquence de réflectivité A partir de la problématique évoquée dans la section précédente, nous pouvons formaliser l’inconnue à retrouver. Il s’agit d’une séquence de réflectivité qui contient les positions spatiales et les amplitudes des changements d’impédance. De façon analogue, la séquence de transmittivité est relative à une mesure en transmission. Deux configurations sont alors possibles suivant la nature de l’objet inspecté. La première considère une distribution dans toutes les directions à partir d’un point de référence à la surface du transducteur. L’illustration de la figure 1.7a montre par exemple trois réflecteurs ponctuels répartis dans un matériau homogène. La deuxième configuration considère une séquence de réflectivité dans une direction donnée. Ce principe est adapté pour analyser des matériaux multi-couches par exemple (fi- gure 1.7b). Les deux exemples que nous montrons aboutissent à la même séquence de réflec- 1 2 3 1 2 3 (a) (b) (c) 1 2 3 d1 d2 d3 z x(z) d1 d2 d3 d1 d2 d3 FIGURE 1.7 – Séquence de réflectivité. (a) : cas de trois réflecteurs considérés ponctuels, (b) : cas de trois couches de matériaux homogènes, (c) : séquence de réflectivité équivalente. tivité illustrée sur la figure 1.7c. Ces deux conventions permettent d’obtenir des séquences composées de pics, c’est-à-dire présentant des discontinuités franches. Nous pouvons alors modéliser la séquence x♣zq sous la forme x♣zq ✏ ➳ i aiδ♣z ✁ ziq, (1.4) où ai et zi sont respectivement les amplitudes et les positions des changements d’impédance. L’hypothèse que nous faisons ici est que x♣zq est parcimonieux : il ne contient qu’un faible nombre de valeurs non nulles. Ce point est important pour le développement des méthodes d’inversion. La figure 1.8 représente les séquences de réflectivité des exemples exposés sur la fi- gure 1.5 et correspondant aux données de la figure 1.6. Ce type d’information est à haute résolution car la forme temporellement étendue d’un écho devient un pic spatial. On peut 19CHAPITRE 1 : Positionnement du problème 0 50 100 150 −0.5 0 0.5 1 (a) S´equence de r´eflectivit´e pour une ´epaisseur de 10 mm x(z) z [mm] 0 50 100 150 −0.5 0 0.5 1 (b) S´equence de r´eflectivit´e pour une ´epaisseur de 1 mm x(z) z [mm] FIGURE 1.8 – Exemple de séquences de réflectivité correspondant aux signaux de la figure 1.6 pour (a) d ✏ 10 mm et (b) d ✏ 1 mm. par conséquent en déduire des dimensions spatiales, comme ici l’épaisseur d de la pièce : la distance entre chaque pic correspond à un aller-retour dans la plaque et donc à deux fois l’épaisseur. 1.3 Modèle direct et problème inverse 1.3.1 Modèle direct Le problème inverse consiste à estimer la grandeur x, inaccessible directement, à partir des données mesurées y. La première étape pour résoudre ce problème est d’établir un modèle direct qui relie x à y. Dans notre cas, ce lien doit respecter au mieux la physique des ondes ultrasonores. Nous développons ce point dans le chapitre 2. Un modèle parfait n’existant pas, il faut prendre en compte un terme d’erreur qui représente les erreurs de modélisation, les incertitudes de mesure et les erreurs de discrétisation. D’une façon générique, le modèle direct s’écrit y ✏ Φ x, bruit✟ , (1.5) où l’opérateur Φ établit le lien direct entre l’inconnue x, le bruit et les mesures y. 1.3.2 Difficultés spécifiques liées au problème inverse Le problème inverse introduit précédemment qui consiste à retrouver les positions des changements d’impédance et les coefficients d’amplitude associés présente des difficultés de ré- solution. 1. Premièrement, les transducteurs travaillant dans une bande de fréquences limitée, l’information reçue est également à bande limitée. Néanmoins, le signal à reconstruire est un train d’impulsions qui contient toutes les fréquences. 201.4 Revue bibliographique 2. Le deuxième problème provient de la manière dont sont acquis les signaux. En effet, nous disposons de signaux quantifiés, ce qui constitue une perte d’information par rapport au signal continu. De plus, ces données comprennent un bruit de mesure qui rajoute des imprécisions dans le signal à traiter. 3. Ensuite, la propagation des ondes acoustiques est soumise à l’atténuation fréquentielle et à la dispersion, phénomènes physiques qui modifient la forme des échos en fonction de la propagation. Cette modification, de caractère passe-bas, provoque une perte plus importante des hautes fréquences des échos lorsque la distance de propagation augmente. Des phénomènes de diffraction peuvent également être présents, qui modifient la forme des échos en fonction de la géométrie des obstacles rencontrés. 4. Enfin, le dernier problème est la superposition des échos qui intervient lorsque les discontinuités sont proches. C’est le cas par exemple pour des plaques minces, pour des défauts proches les uns des autres ou proches des interfaces. 1.3.3 Caractère mal posé Un problème mathématique est dit bien posé s’il vérifie les trois conditions d’existence de la solution, d’unicité de la solution et de continuité de la solution [Idier 2001]. Dans un cas linéaire de dimension finie, cas dans lequel nous nous ramènerons, la condition de continuité est toujours vérifiée. Les conditions d’existence et d’unicité dépendent alors des dimensions du problème. Pour un système carré, ces conditions sont vérifiées. Lorsque le système est sur-déterminé, il n’y a pas existence de solutions. Il est alors d’usage de choisir une solution au sens des moindres carrés : l’inverse généralisée. Quand le système est sous-déterminé, il y a une infinité de solutions et la condition d’unicité n’est pas vérifiée. On peut alors choisir la solution de plus petite norme. Ces propriétés occasionnent un caractère mal posé suivant la définition des dimensions du modèle direct. Dans notre application, le caractère mal posé vient avant tout du fait que le signal à reconstruire est à très large bande (train d’impulsions), alors que l’information reçue est à bande limitée. De ce fait, des informations sont absentes des données et ne peuvent être obtenues par une procédure classique d’inversion. Une opération d’inversion naïve aura pour seule conséquence d’amplifier le bruit de mesure et les erreurs de modèles à cause de son caractère filtre inverse, et donc amplificateur des fréquences hors du signal utile. Ceci est lié au mauvais conditionnement du système, qui est de surcroît aggravé en présence d’atténuation. Les effets propagatifs engendrent en effet une perte supplémentaire d’information à haute fréquence. Une solution efficace consiste à régulariser le problème, c’est-à-dire à introduire une certaine connaissance a priori de la solution recherchée. Dans le cas de la recherche de discontinuités franches, la solution sera considérée parcimonieuse. 1.4 Revue bibliographique Pour résoudre le problème d’estimation des discontinuités d’un objet inspecté par ultrasons, il existe dans la littérature plusieurs familles de méthodes [Zhang et Harvey 2013]. Une première approche consiste à utiliser un modèle d’écho en fonction d’un jeu de paramètres Θ : 21CHAPITRE 1 : Positionnement du problème y ✏ Φ ♣Θq bruit, l’inconnue x étant contenue dans certains paramètres de Θ. La relation entre les données et les paramètres est le plus souvent non-linéaire. L’avantage de ce modèle est sa flexibilité en termes de variation des paramètres, qui peut permettre de modéliser des changements de forme dus à l’atténuation, à la dispersion et à la diffraction. Un autre avantage est la définition des paramètres dans des espaces continus, qui ne sont donc pas limités par une discrétisation. Demirli et Saniie [2001a] ont proposé de modéliser les mesures comme une somme d’échos gaussiens modulés et de résoudre le problème par des algorithmes d’optimisation non linéaire locale (Gauss-Newton). Ils utilisent plus particulièrement l’algorithme SAGE (Space Alternating Generalized Expectation-Maximization) [Ziskind et Wax 1988, Fessler et Hero 1993], une extension de la méthode EM, qui donne de bons résultats dans un contexte de CND et d’END [Demirli et Saniie 2001b]. Ces méthodes sont très sensibles aux initialisations des paramètres et requièrent soit une certaine connaissance de la solution, soit des routines tendant vers une optimisation globale, mais augmentant considérablement le temps de calcul. Des travaux postérieurs utilisent des modèles d’échos plus complexes [Lu et al. 2006, Demirli et Saniie 2009], permettant une plus grande flexibilité mais compliquant l’optimisation. Ces travaux ne spécifient néanmoins aucun a priori physique sur la façon dont les paramètres peuvent varier. Afin d’éviter une optimisation des moindres carrés non-linéaires, qui présente une forte sensibilité aux initialisations et aux minima locaux, plusieurs auteurs ont proposé de discrétiser les paramètres du modèle pour obtenir un modèle linéaire [Hong et al. 2006, Lu et Michaels 2008, Zhang et al. 2008, Mor et al. 2010, Bossmann et al. 2012]. Ces approches utilisent un dictionnaire de grande taille qui liste les possibilités de modélisation des échos. De nombreux travaux effectuent également un apprentissage du dictionnaire [Lewicki et Sejnowski 2000, Kreutz-Delgado et al. 2003, Aharon et al. 2006, Zhang et al. 2008; 2012]. À cause de la grande dimension du problème, ils utilisent ensuite des méthodes rapides d’approximation parcimonieuse, de type Matching Pursuit (MP) [Mallat et Zhang 1993], qui sont peu performantes lorsque les échos se mélangent. Les méthodes décrites jusqu’ici sont considérées comme aveugles, car elles n’ont besoin d’aucun signal de référence. Une autre façon d’appréhender le problème inverse est d’utiliser un modèle discret linéaire. On se retrouve alors dans le cas où y ✏ Φx bruit, utilisé par exemple dans un contexte de CND dans [Zala 1992, Sin et Chen 1992]. Bien souvent, un opérateur de convolution est utilisé tel que y ✏ h ✝ x bruit, où h est la réponse impulsionnelle du système supposée connue (Φ est alors une matrice de convolution). Le modèle direct spécifie par conséquent que les données contiennent des répliques exactes de cette réponse et décalés dans le temps. Contrairement aux approches paramétriques, ce modèle direct est très contraint et permet d’utiliser des méthodes d’inversion robustes et efficaces. D’un autre côté, la résolution temporelle est limitée par la discrétisation, et le modèle s’applique à des problèmes où la forme des échos varie extrêmement peu. Les méthodes d’estimation les plus simples sont l’inversion généralisée [Sin et Chen 1992] et les méthodes basées sur l’intercorrélation [Quazi 1981, Nandi 1995]. Ces approches naïves sont malheureusement peu performantes en présence de bruit et/ou lorsque les échos se mélangent. Une solution adaptée consiste à régulariser le problème en injectant une connaissance a priori sur l’inconnue. L’objectif est dès lors de minimiser un critère d’attache aux données auquel on ajoute une fonction de pénalisation [Idier 2001, Zhang et al. 2008, Soussen et al. 2012]. Pour des aspects pratiques d’optimisation, des fonctions convexes et différentiables ont été utilisées, telles que la norme `2 [Idier 2001]. Le filtrage de Wiener est par exemple équi- 221.4 Revue bibliographique valent à une pénalisation `2 [Chen et al. 1988, Neal et al. 1993]. L’inconvénient de ce type de régularisation est que les solutions produites ne sont pas parcimonieuses. On préfère alors utiliser une norme `1 [Taylor et al. 1979, Chen et al. 1998] qui, de par sa non différentiabilité en zéro, produit des solutions parcimonieuses [Moulin et Liu 1999]. La convexité de la norme `1 permet l’utilisation d’algorithmes rapides qui aboutissent à un minimum unique (voir une revue dans [Tropp et Wright 2010]). O’Brien et al. [1990; 1994] utilisent notamment ce type de pénalisation dans un cadre de CND. Du fait de la pénalisation linéaire des amplitudes, cette régularisation produit néanmoins des solutions avec de nombreux pics de faibles amplitudes, qui sont faiblement pénalisés. Une autre solution repose sur la formulation du problème par une pénalisation `0 [Zala 1992, Rao et Kreutz-Delgado 1999, Soussen et al. 2011], qui compte le nombre de composantes non nulles dans l’estimé et donne donc un vrai critère de parcimonie pour la solution recherchée. Cette pénalisation est discrète, non convexe, et nécessite une exploration combinatoire des solutions. Une façon optimale de procéder est de tester toutes les combinaisons des composantes non nulles de x, ce qui est prohibitif en termes de temps de calcul (sauf pour des problèmes avec un très petit nombre de pics non nuls [He et al. 2011]). Il existe des méthodes sous-optimales inspirées des méthodes gloutonnes d’approximation parcimonieuse [Mallat et Zhang 1993, Pati et al. 1993, Chen et al. 1989]. Celles-ci partent d’une solution nulle et ajoutent un élément à chaque itération. L’algorithme Single Best Replacement (SBR) proposé par Soussen et al. [2011], et inspiré de l’algorithme SMLR utilisé pour la déconvolution sous un modèle Bernoulli-gaussien [Kormylo et Mendel 1982, Mendel 1983, Goussard et al. 1990, Champagnat et al. 1996], permet l’ajout ou le retrait d’un élément à chaque itération. Il a montré de bons résultats par rapport à des approches gloutonnes et aux approches par pénalisation `1 [Bourguignon et al. 2011, Selesnick et Bayram 2014], notamment dans un contexte de CND [Soussen et al. 2012]. Les mouvements d’un seul élément à chaque itération de l’algorithme SBR peuvent néanmoins être insuffisants lorsque les échos se mélangent. Dans une optique de mouvements plus complexes, Kaaresen [1997] a proposé les algorithmes Iterative Window Maximization (IWM) qui ont donné de bons résultats pour la déconvolution en CND [Kaaresen 1998]. On retrouve également ce type de mouvements dans [Zala 1992] dans un contexte de déconvolution pour le CND. L’atténuation et la dispersion provoquent une distorsion des échos, avec pertes des hautes fréquences, qui s’amplifie au fur et à mesure que la distance de propagation augmente [Wear 2000]. La prise en compte de ces phénomènes est un problème majeur dans les méthodes d’inversion [Zhang et Harvey 2013]. Ils sont indirectement pris en compte dans les méthodes aveugles citées plus haut, car celles-ci considèrent une variation de la forme d’onde au cours de son parcours [Demirli et Saniie 2001a]. Cette flexibilité permet, dans la limite du modèle considéré, de s’adapter aux variations dues à l’atténuation. D’autres approches aveugles permettent une faible variation des échos entre des intervalles temporels voisins [Kaaresen et Bolviken 1999]. D’un autre côté, les méthodes qui considèrent un modèle de convolution discrète ne prennent pas du tout en compte l’atténuation. Des travaux existent en géophysique et modélisent l’atténuation grâce un modèle en Q [Hale 1981, Wang 2009]. La propagation des ondes sismiques est en effet similaire à celle des ultrasons [Kjartansson 1979]. Dans le domaine ultrasonore, l’atténuation a été modélisée dans le domaine temporel de façon empirique par un filtre à réponse impulsionnelle finie [Rasmussen 1994, Olofsson et Stepinski 2001], dont la réponse impulsionnelle varie en fonction de la distance de propagation. Le modèle d’Olofsson et Stepinski a notamment donné de bons résultats pour le 23CHAPITRE 1 : Positionnement du problème contrôle de composites. Cependant, les modèles paramétriques et empiriques n’exploitent pas de connaissance physique sur la propagation. Les modèles en loi de puissance fréquentielle [Kak et Dines 1978, Ophir et Jaeger 1982, Narayana et Ophir 1983], qui ont montré de bons résultats avec de nombreux matériaux [Szabo 1995, He 1999], semblent de ce fait plus adaptés pour modéliser les signaux ultrasonores. La dispersion peut notamment être ré- glée en fonction de l’atténuation grâce à des théories de la causalité [Gurumurthy et Arthur 1982, Kuc 1984, Szabo 1995]. L’utilisation de ces modèles fréquentiels dans les problèmes inverses est plus compliquée du fait de leur non-linéarité et n’a à notre connaissance pas été envisagée avant ce travail. 1.5 Axes de travail effectués pendant la thèse Le premier axe de travail a consisté à établir un modèle direct qui prend en compte un pro- fil physique d’atténuation et de dispersion (chapitre 2). Nous avons développé un modèle linéaire pour les signaux discrets qui permet l’utilisation de méthodes d’inversion robustes et efficaces. Pour résoudre des problèmes dus à l’échantillonnage, nous montrons également comment développer un modèle sur-échantillonné par rapport aux données (chapitre 4). En ce qui concerne la partie méthodologique, nous dirigeons notre étude vers l’inversion par approche pénalisée avec une norme `0 (chapitre 3). Ce choix nous paraît le plus logique en termes de performances au vu des contributions récentes dans le domaine de la déconvolution parcimonieuse (algorithme SBR). Par différentes procédures, nous avons notamment montré l’efficacité de cette approche comparée aux approches naïves et aux méthodes d’estimation paramétrique. Nous avons développé plusieurs algorithmes inspirés de SBR, mais présentant une exploration combinatoire plus complexe et adaptée aux formes d’ondes oscillantes. La déconvolution pour un modèle sur-échantillonné a également été un axe de développement méthodologique important (chapitre 4). Nous avons adapté des algorithmes de déconvolution parcimonieuse pour obtenir une meilleure résolution de la solution et ainsi résoudre des problèmes de modes locaux. Tout au long de ce travail, nous avons illustré nos modèles et méthodes avec de nombreuses expérimentations réalisées au Laboratoire d’Acoustique de l’Université du Maine (LAUM). Le chapitre 5 est spécialement dédié à l’application concrète des méthodes de dé- convolution parcimonieuse pour le CND. Toutes les acquisitions ne figurent évidemment pas dans ce manuscrit, mais nous avons testé des matériaux homogènes comme l’aluminium, le polyméthacrylate de méthyle (PMMA2 ), le polycarbonate, le caoutchouc synthé- tique et l’huile de ricin, ainsi que des matériaux hétérogènes comme des composites carbone/époxyde et des matériaux poreux. 2Le PMMA est également connu sous le nom de la marque Plexiglas®. 24Chapitre 2 Le modèle direct des signaux ultrasonores Sommaire Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.1 Modèle de signaux continus pour une cible ponctuelle . . . . . . . . . 26 2.1.1 Modèle fréquentiel . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.1.2 Écriture en fonction de la distance de propagation . . . . . . . . . 27 2.1.3 L’atténuation fréquentielle . . . . . . . . . . . . . . . . . . . . . 28 2.1.4 La dispersion et les théories causales . . . . . . . . . . . . . . . . 33 2.2 Modèle discret linéaire pour l’inversion . . . . . . . . . . . . . . . . . 38 2.2.1 Modèle de signaux à temps continu pour une distribution de cibles 38 2.2.2 Modèle de signaux à temps discret . . . . . . . . . . . . . . . . . 39 2.2.3 Différents cas pour le modèle linéaire discret . . . . . . . . . . . 40 2.2.4 Calcul numérique des réponses impulsionnelles d’atténuation . . 43 2.2.5 Modèle d’atténuation d’Olofsson . . . . . . . . . . . . . . . . . 45 2.3 Exploitation des modèles . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.3.1 Mesure en mode pulse-echo avec du polycarbonate . . . . . . . . 48 2.3.2 Mesure en transmission dans l’huile de ricin . . . . . . . . . . . . 53 2.3.3 Mesure aérienne en transmission dans un matériau poreux . . . . 56 2.3.4 Exploitation du modèle pour l’Évaluation Non Destructive . . . . 58 2.3.5 Problème de diffraction des cibles : application aux trous à fond plat 61 Introduction Ce chapitre présente le modèle direct que nous construisons pour résoudre le problème inverse. Dans la section 2.1, nous décrivons la formation du signal ultrasonore en présence 25CHAPITRE 2 : Le modèle direct d’une cible dans un milieu homogène. Ce modèle utilise la réponse instrumentale du système ainsi qu’un modèle de propagation spécifique, incluant l’atténuation. Nous détaillons plusieurs modèles d’atténuation, notamment celui qui décrit la dispersion à partir de l’atténuation grâce à des théories causales. Ensuite, dans la section 2.2, nous montrons qu’en présence de plusieurs cibles, le modèle discret échantillonné s’écrit comme un système linéaire. Nous validons dans la section 2.3 cette formulation avec des données expérimentales, tout d’abord pour comparer les modèles d’atténuation présentés. Puis le modèle est exploité pour réaliser l’évaluation non destructive d’un matériau. Enfin, nous utilisons des données acquises en présence d’un trou à fond plat et montrons les problèmes liés à la diffraction des cibles et donc les limites du modèle. Ce chapitre est en partie tiré des publications [Carcreff et al. 2013c], [Carcreff et al. 2014a] et [Carcreff et al. 2014b]. 2.1 Modèle de signaux continus pour une cible ponctuelle 2.1.1 Modèle fréquentiel Nous considérons un milieu de propagation homogène et isotrope dans lequel est placée une cible ponctuelle en rT (rT est composé des coordonnées spatiales de la cible par rapport au centre du transducteur émetteur). La cible est supposée avoir une impédance acoustique significativement différente de celle du milieu. La mesure ultrasonore peut être effectuée avec un seul transducteur en mode pulse-echo ou avec deux transducteurs utilisés en mode transmission sans que le modèle ne diffère. Les deux configurations sont illustrées sur la figure 2.1. Cibleb Emetteur R´ecepteur b Cible Emetteur R´ecepteur (a) (b) H r T (1) r H(2) r H(1) r H(2) r r T FIGURE 2.1 – Configurations possibles de mesure ultrasonore. (a) : Transmision, (b) : pulseecho. Le signal reçu par le transducteur est alors décrit dans le domaine fréquentiel par la cascade de plusieurs réponses fréquentielles [Fink et Cardoso 1984, Chen et al. 1988] : Y ♣f, rT q ✏ U♣fqHea♣fqHr♣f, rT qHae♣fq, (2.1) comme illustré sur la figure 2.2. Le signal U♣fq est l’excitation électrique fournie au transducteur électro-acoustique. Les fonctions Hea♣fq et Hae♣fq sont respectivement les réponses électro-acoustique et acousto-électrique du transducteur. La réponse instrumentale Hi♣fq ✏ U♣fqHea♣fqHae♣fq peut être définie en regroupant les fonctions qui ne dépendent pas de la propagation dans le matériau. L’équation (2.1) devient alors : Y ♣f, rT q ✏ Hi♣fqHr♣f, rT q. (2.2) 262.1 Modèle de signaux continus pour une cible ponctuelle b z Hea(f) Hae(f) U(f) Y (f, rT ) Hr Cible (f, rT ) transducteur S rT rb0 FIGURE 2.2 – Schéma de la mesure ultrasonore pour un cible ponctuelle. La fonction de transfert de propagation Hr♣f, rT q représente la fonction relative au parcours de l’onde dans le milieu de propagation [Stephanishen 1971, Fink et Cardoso 1984]. Elle prend en compte la diffraction de la source, la propagation vers la cible, la réflexion ou la transmission par la cible et la propagation vers la surface réceptrice, tout ceci incluant le cas échéant des effets visco-élastiques. Nous verrons par la suite que ces effets se traduisent sous forme d’atténuation et de dispersion. La fonction de transfert de propagation totale s’écrit alors Hr♣f, rT q ✏ H ♣1q r ♣f, rT qH ♣2q r ♣f, rT q. On peut calculer la fonction de transfert de propagation du transducteur vers la cible H ♣1q r ♣f, rT q grâce à l’intégrale de Rayleigh [Rayleigh 1945], qui est la somme de contributions ponctuelles intégrées sur la surface S [Stephanishen 1971, Harris 1981] H ♣1q r ♣f, rT q ✏ ➺ r0PS e✁jk♣fq⑤rT ✁ r0⑤ 2π⑤rT ✁ r0⑤ dS, (2.3) où k♣fq est le nombre d’onde1 (nous détaillerons ci-après sa formulation). Pour une mesure en pulse-echo, la fonction retour H ♣2q r ♣f, rT q se calcule en considérant la cible comme une nouvelle source excitée par le champ créé en son emplacement et en intégrant ensuite le champ sur la surface du transducteur récepteur [Lhemery 1991, Rhyne 1977]. Cette fonction n’est pas développée ici, mais a une forme similaire à l’équation (2.3) [Lhemery 1991]. En effet, la symétrie entre rT et r0 entraîne un principe de réciprocité entre l’émission et la ré- ception. Pour une mesure en pulse-echo, ce principe implique que H ♣1q r ♣f, rT q ✏ H ♣2q r ♣f, rT q à un facteur multiplicatif près [Lhemery 1991]. Le nombre d’onde k♣fq dépend de la fréquence et a une forme générale complexe k♣fq ✏ β♣fq ✁ jα♣fq. (2.4) Le terme β♣fq décrit le caractère propagatif de l’onde, tel que β♣fq ✏ 2πf④c♣fq, avec c♣fq la vitesse de phase des ondes acoustiques. Le terme α♣fq traduit le caractère dissipatif de l’onde et représente l’atténuation fréquentielle dans le matériau. 2.1.2 Écriture en fonction de la distance de propagation Nous considérons une distance de propagation moyenne z qui représente le trajet entre les centres des transducteurs émetteur et récepteur [Fink et Cardoso 1984] (voir les figures 2.1 et 2.2). Les effets de diffraction de la source et de la cible sont alors considérés comme 1Par convention, pour une fréquence f donnée, nous considérons e j♣2πf t✁k♣fqxq une onde plane se propageant dans le sens des x positifs. 27CHAPITRE 2 : Le modèle direct identiques en fonction de z. A partir des équations (2.3) et (2.4), ⑤rT ✁ r0⑤ ✔ z ne dépend plus de la position r0. La fonction de propagation H ♣1q r ♣f, zq peut donc s’écrire H ♣1q r ♣f, zq ✏ e✁jk♣fqz 2πz ➺ r0PS dS. (2.5) Par le principe de réciprocité évoqué plus haut, la fonction H ♣2q r ♣f, zq a une forme similaire à un facteur multiplicatif près. On peut considérer une amplitude b♣zq, indépendante de la fréquence, et qui dépend de plusieurs facteurs comme la surface ou les surfaces des transducteurs, la position de la cible et le changement d’impédance. On s’intéresse ici à la modélisation du problème pour une valeur fixée de z. Nous détaillons dans la partie 2.2.1 le modèle à plusieurs cibles. On peut donc écrire une forme générale de la fonction de propagation Hr♣f, zq ✏ b♣zqe ✁α♣fqz e ✁jβ♣fqz ✏ b♣zqe ✁α♣fqz e ✁j2πfz④c♣fq . (2.6) Elle est composée d’un facteur d’amplitude b♣zq, d’un terme de module e ✁α♣fqz qui défi- nit l’atténuation et d’un terme de phase e ✁j2πfz④c♣fq qui caractérise la vitesse de phase. Il faut noter que la fonction Hr♣f, zq est valable pour une fonction de diffraction donnée de la cible [Sin et Chen 1992], simplification nécessaire pour uniformiser l’effet de l’atténuation par rapport à z. Nous verrons dans la partie 2.3.5 l’influence de cette hypothèse. L’équation (2.2) devient donc Y ♣f, zq ✏ Hi♣fqHr♣f, zq. (2.7) Nous notons respectivement y♣t, zq, hi♣tq et hr♣t, zq les signaux temporels correspondant à Y ♣f, zq, Hi♣fq et Hr♣f, zq. Le signal temporel reçu par le capteur pour une cible est le produit de convolution à temps continu y♣t, zq ✏ hi♣tq ✝ hr♣t, zq ✏ ➺ ✽ ✁✽ hi♣τ qhr♣t ✁ τ, zqdτ. (2.8) 2.1.3 L’atténuation fréquentielle L’atténuation α♣fq de l’onde acoustique dans le milieu de propagation est due à plusieurs phénomènes [Krautkramer et Krautkramer 1990, chap. 6], [Sachse et Pao 1978]. Dans un matériau homogène, les deux principales causes d’atténuation sont la dissipation thermique et la diffusion. La dissipation thermique ou absorption traduit le fait que l’énergie de l’onde se transforme en chaleur à cause de la mise en mouvement des particules. La diffusion sousentend que le matériau n’est pas strictement homogène et que de petites discontinuités provoquent un éparpillement de l’onde dans toutes les directions. Ces deux phénomènes sont de ce fait dépendants de la longueur d’onde2 et donc de la fréquence de l’onde. En effet, les particules et discontinuités ne sont pas « vues » par une onde basse fréquence, lorsque la longueur d’onde est très supérieure à leur dimension. L’effet de l’atténuation augmente par conséquent avec la fréquence. 2La longueur d’onde λ est définie en fonction du nombre d’onde par λ♣fq ✏ 2π④k♣fq. Pour un matériau homogène non dissipatif, la longueur d’onde est seulement fonction de la fréquence de l’onde : λ♣fq ✏ c④f. 282.1 Modèle de signaux continus pour une cible ponctuelle Généralement, l’atténuation se modélise par une loi de puissance fréquentielle [Ophir et Jaeger 1982, Narayana et Ophir 1983] α♣fq ✏ α0⑤f⑤ γ , (2.9) où α0, le coefficient d’atténuation, et γ, le facteur de puissance, sont des paramètres réels positifs caractérisant un matériau homogène donné. Pour la majorité des milieux, le facteur γ (sans unité) vérifie γ P s0, 2s [Narayana et Ophir 1983, Szabo 1995]. Pour de nombreux matériaux, le choix d’un modèle linéaire (γ ✏ 1) s’est avéré une approximation satisfaisante [Serabian 1967, Kuc et al. 1976, Kak et Dines 1978, Kuc 1983; 1984]. On rencontre une atténuation non-linéaire pour des structures plus complexes de matériaux tels que le polyéthylène (γ ✓ 1.13), le caoutchouc synthétique (γ ✓ 1.38) ou l’huile de ricin (γ ✓ 1.67) [Harris et al. 1983, Szabo 1995, He 1999]. Pour les tissus mous, on peut considérer 1 ↕ γ ↕ 1.5 [Duck 1990]. Notons que les propagations sans atté- nuation (γ ✏ 0) et en régime visqueux (γ ✏ 2) présentent des équations d’onde analytiques exactes [Kelly et al. 2008]. Le coefficient d’atténuation α0 indique l’affaiblissement par unité de distance et de fré- quence et est donc exprimé en Np.MHz✁γ .m✁1 ou en dB.MHz✁γ .cm✁1 . Un coefficient α0 nul correspond à une propagation sans dissipation. Dans la réalité, α0 n’est jamais nul, même s’il peut être très faible, comme dans l’eau par exemple : α♣fq ✔ 0.025⑤f⑤ 2 Np.MHz✁2 .m✁1 [Pinkerton 1949]. De nombreuses méthodes permettent de mesurer α0 dans le cas de l’atténuation linéaire [Kuc et al. 1976, Kak et Dines 1978, Kuc 1983; 1984, Rokhlin et al. 1986] et de mesurer α0 et γ dans le cas non linéaire [Harris et al. 1983, Szabo 1995, He 1999]. Les paramètres α0 et γ peuvent également être tirés de catalogues [Selfridge 1985]. L’atténuation fréquentielle crée donc une fonction de transfert en module e ✁α0⑤f⑤ γz dans l’équation (2.6). Elle a un effet de filtrage passe-bas qui s’accentue au fur et à mesure de la propagation (quand z augmente), comme illustré sur la figure 2.3. Ceci a principalement deux effets dans une inspection par ultrasons. Premièrement, les ondes sont plus fortement 0 2 4 6 8 10 −20 −10 0 10 20 0 0.2 0.4 0.6 0.8 1 f (MHz) z (mm) |H r(f, z)| FIGURE 2.3 – Exemple de fonction d’atténuation ⑤Hr♣f, zq⑤ en fonction de la fréquence et de la distance de propagation. L’atténuation est linéaire, telle que ⑤Hr♣f, zq⑤ ✏ e ✁α0⑤f⑤z , avec α0 ✏ 50 Np.MHz✁1 .m✁1 . 29CHAPITRE 2 : Le modèle direct atténuées en amplitude lorsque z augmente, ce qui complique l’inspection pour de grandes distances de propagation. Deuxièmement, l’effet passe-bas provoque un étalement temporel des échos, ce qui diminue la résolution des mesures. Pour pallier le premier problème, il est d’usage d’utiliser des transducteurs plutôt basse fréquence pour inspecter des matériaux atténuants, au détriment de la résolution. Dans la suite de ce chapitre, en section 2.3, nous montrons comment mesurer les paramètres α0 et γ, à partir d’expériences réalisées avec des matériaux atténuants. Nous utilisons d’abord le polycarbonate qui est un polymère présentant une atténuation linéaire (partie 2.3.1). Ensuite, un cas d’atténuation non-linéaire est présenté avec l’huile de ricin (partie 2.3.2). Lien avec l’atténuation en géophysique En géophysique, les ondes sismiques ou radar sont utilisées pour inspecter le sol. Ce sont approximativement les mêmes modèles que ceux décrits précédemment [Wang 2009, chap. 2 et 3]. Les milieux sont caractérisés par un facteur de qualité Q qui correspond au rapport entre l’énergie maximale stockée et l’énergie perdue par cycle de déformation dans le milieu [Kjartansson 1979, Wang 2009]. Un facteur infini correspond donc à une propagation sans perte d’énergie et par conséquent à une atténuation nulle. Le coefficient d’atténuation est alors lié à Q par α♣fq ✏ πf Q♣fqc♣fq , (2.10) où c♣fq est la vitesse des ondes. Si Q♣fq et c♣fq sont constants en fonction de la fréquence, l’atténuation est linéaire, avec α0 ✏ π④Qc. Nous faisons ce lien car le domaine géophysique est actif en matière de développement de méthodes inverses. De nombreux travaux sont ainsi consacrés au filtre Q inverse [Hargreaves et Calvert 1991, Wang 2009]. Le but de ce procédé est d’annuler les effets de l’atténuation et de la dispersion tout en conservant la signature instrumentale. Cela permet de réduire la perte de résolution et d’amplitude des signaux. Exemple 1 : atténuation linéaire d’un écho gaussien Un modèle paramétrique couramment utilisé pour modéliser les échos ultrasonores est le modèle d’écho gaussien ou ondelette de Gabor [Kuc et al. 1976, Narayana et Ophir 1983, Wear 2000]. La réponse instrumentale s’écrit alors comme une gaussienne modulée par une sinusoïde hi♣tq ✏ Ae✁ ♣t✁t0q 2 2σ2 t cos♣2πf0♣t ✁ t0q φq, (2.11) avec A l’amplitude, t0 la position temporelle, σ 2 t la variance temporelle de la gaussienne, f0 la fréquence d’oscillation et φ le décalage de phase. On peut montrer que le module de la transformée de Fourier de hi♣tq est composé de deux gaussiennes, centrées en f0 et ✁f0 et de variance fréquentielle σ 2 f [Wear 2000]. En négligeant la contribution de la gaussienne en ✁f0, le module de la transformée de Fourier de cette forme d’onde pour les fréquences positives est ⑤Hi♣fq⑤ ✏ A ✶ e ✁ ♣f✁f0q 2 2σ2 f , (2.12) 302.1 Modèle de signaux continus pour une cible ponctuelle avec A✶ ✏ Aσt ❄ 2π et σf ✏ 1④♣2πσtq. Nous ne nous intéressons pas à la phase ici pour observer la perte d’amplitude et de résolution. Nous développerons l’étude de la phase dans la partie 2.1.4. D’après l’équation (2.7), le module de la transformée de Fourier de l’écho, après une propagation de distance z, est ⑤Y ♣f, zq⑤ ✏ ⑤Hi♣fq⑤e ✁α0⑤f⑤z et s’écrit, pour f ➙ 0, ⑤Y ♣f, zq⑤ ✏ A ✶ e ✁ ♣f✁f0q 2 2σ2 f e ✁α0fz ✏ A ✶ e ✁ f 2f 2 0 ✁2ff02α0fzσ2 f 2σ2 f ✏ A ✶ e ✁ f 2 0 f 2✁2f♣f0✁α0σ 2 f zq 2σ2 f . (2.13) En posant f1♣zq ✏ f0 ✁ α0σ 2 f z, (2.14) nous aboutissons à ⑤Y ♣f, zq⑤ ✏ A ✶ e ✁ f 2 0 f 2✁2ff1♣zqf1♣zq 2✁f1♣zq 2 2σ2 f ✏ A ✶ e f1♣zq 2✁f 2 0 2σ2 f e ✁ ♣f✁f1♣zqq2 2σ2 f . (2.15) Le spectre en module du signal transmis est donc une nouvelle gaussienne qui a la même variance σ 2 f mais une fréquence centrale f1♣zq plus petite que f0. L’atténuation crée donc un décalage linéaire de la fréquence centrale f1 en fonction de la distance de propagation z. On peut noter que f1♣zq s’annule pour une distance maximale : zmax ✏ f0 α0σ 2 f . (2.16) La fréquence f1♣zq étant inférieure à f0, le terme d’amplitude e f1♣zq 2✁f 2 0 ④2σ 2 f diminue lorsque z augmente. C’est ce terme qui crée la décroissance exponentielle en amplitude due à l’atté- nuation. Un exemple simulé est donné sur la figure 2.4. Nous traçons le module de Y ♣f, zq pour trois distances de propagation z sur la figure 2.4b. La fréquence centrale diminue quand la distance z augmente, tandis que la largeur de bande – liée à σf – reste constante. Les formes temporelles correspondantes sont également tracées sur la figure 2.4c, montrant l’étalement temporel quand z augmente. Dans la réalité, les échos sont retardés temporellement à cause des distances de propagation. Cet aspect n’est pas pris en compte ici pour bien montrer le comportement en amplitude. De plus, dans les domaines temporel et fréquentiel, les signaux sont normalisés pour plus de clarté. En réalité les signaux subissent une forte décroissance en amplitude à cause de l’atténuation. La figure 2.4d montre le décalage linéaire de la fréquence centrale en fonction de la distance de propagation, avec une pente de ✁α0σ 2 f ✏ ✁0.0465 MHz/mm. Exemple 2 : atténuation quadratique d’un écho gaussien Nous appliquons maintenant au même écho gaussien ⑤Hi♣fq⑤ une atténuation quadratique caractérisée par la fonction de transfert en module ⑤Hr♣f, zq⑤ ✏ e ✁α0⑤f⑤ 2z . En négligeant la 31CHAPITRE 2 : Le modèle direct 0 5 10 15 20 0 0.2 0.4 0.6 0.8 1 f [MHz] |Hr(f, z)| (a) Fonctions d’att´enuation z = 0mm z = 5mm z = 10mm z = 20mm 0 2 4 6 8 10 0 0.2 0.4 0.6 0.8 1 f [MHz] |Y (f, z)| (b) Spectres en module normalis´e des ´echos 1.5 2 2.5 3 −1 −0.5 0 0.5 1 t [µs] y(t,z) (c) Formes temporelles recal´ees et normalis´ees 0 5 10 15 20 3.5 4 4.5 5 5.5 z [mm] f1 [MHz] (d) Fr´equence centrale FIGURE 2.4 – Effets d’une atténuation linéaire avec α0 ✏ 50 Np.MHz✁1 .m✁1 pour plusieurs distances de propagation z ✏ 0, 5, 10, 20 mm. (a) : Modules des fonctions de transfert ⑤Hr♣f, zq⑤. (b) : modules ⑤Y ♣f, zq⑤. (c) : signaux temporels y♣t, zq, normalisés et de même retard de phase. (d) : fréquences centrales des échos en fonction de la distance de propagation. Les paramètres de l’écho gaussien hi♣tq sont A ✏ 1, f0 ✏ 5 MHz, σf ✏ 1, t0 ✏ 2.33 µs et φ ✏ 1.867 rad. contribution des fréquences négatives, nous avons donc pour les fréquences positives ⑤Y ♣f, zq⑤ ✏ ⑤Hi♣fq⑤e ✁α0f 2z ✏ A ✶ e ✁ ♣f✁f0q 2 2σ2 f e ✁α0f 2z ✏ A ✶ e ✁ f 2f 2 0 ✁2ff02α0f 2zσ2 f 2σ2 f ✏ A ✶ e ✁ f 2 0 f 2♣12α0σ 2 f zq✁2ff0 2σ2 f . (2.17) En posant f1♣zq ✏ f0 1 2α0σ 2 f z , (2.18) et σ ✶ f ♣zq ✏ σ 2 f 1 2α0σ 2 f z , (2.19) on aboutit à ⑤Y ♣f, zq⑤ ✏ A ✶ e ✁ f 2 0 ④♣12α0σ 2 f zqf 2✁2ff1♣zqf1♣zq 2✁f1♣zq 2 2σ✶ f ♣zq2 ✏ A ✶ e f1♣zq 2✁f 2 0 ④♣12α0σ 2 f zq 2σ✶ f ♣zq2 e ✁ ♣f✁f1♣zqq2 2σ✶ f ♣zq2 . (2.20) 322.1 Modèle de signaux continus pour une cible ponctuelle Pour une distance de propagation z, le module ⑤Y ♣f, zq⑤ est donc une gaussienne de fré- quence centrale f1♣zq et de variance σ ✶2 f ♣zq. Comme pour l’atténuation linéaire, la fréquence centrale de l’écho diminue lorsque la distance de propagation augmente, mais de façon plus significative. La largeur spectrale diminue également lorsque z augmente, effet qui n’apparaissait pas avec l’atténuation linéaire. Nous retrouvons ces effets sur la figure 2.5, qui reprend les mêmes simulations que dans la figure 2.4 dans le cas de l’atténuation quadratique. On remarque que ceux-ci sont plus accentués pour l’atténuation quadratique : baisse non-linéaire de la fréquence centrale et élargissement temporel dû à la baisse de la variance fréquentielle. 0 5 10 15 20 0 0.2 0.4 0.6 0.8 1 f [MHz] |Hr(f, z)| (a) Fonctions d’att´enuation z = 0mm z = 5mm z = 10mm z = 20mm 0 2 4 6 8 10 0 0.2 0.4 0.6 0.8 1 f [MHz] |Y (f, z)| (b) Spectres en module normalis´e des ´echos 1.5 2 2.5 3 −1 −0.5 0 0.5 1 t [µs] y(t,z) (c) Formes temporelles recal´ees et normalis´ees 0 5 10 15 20 1 2 3 4 5 6 z [mm] f1 [MHz] (d) Fr´equence centrale FIGURE 2.5 – Effets d’une atténuation quadratique avec α0 ✏ 50 Np.MHz✁2 .m✁1 pour plusieurs distances de propagation z ✏ 0, 5, 10, 20 mm. (a) : Module des fonctions de transfert ⑤Hr♣f, zq⑤. (b) : modules ⑤Y ♣f, zq⑤. (c) : signaux temporels y♣t, zq, normalisés et de même retard de phase. (d) : fréquences centrales des échos en fonction de la distance de propagation. Les paramètres de l’écho gaussien hi♣tq sont A ✏ 1, f0 ✏ 5 MHz, σf ✏ 1, t0 ✏ 2.33 µs et φ ✏ 1.867 rad. 2.1.4 La dispersion et les théories causales Le but est ici de décrire précisément Hr♣f, zq pour respecter la physique des ondes ultrasonores. En effet, l’atténuation et la dispersion jouent respectivement sur le module et la phase de Hr♣f, zq. La relation entre module et phase doit respecter le fait que la réponse impulsionnelle hr♣t, zq est réelle et causale. Tout d’abord, la réponse impulsionnelle correspondant à Hr♣f, zq doit être réelle, ce qui implique une symétrie hermitienne Hr♣✁f, zq ✝ ✏ Hr♣f, zq, où l’exposant ✝ indique le conjugué complexe. De ce fait, le nombre d’onde défini par l’équation (2.4) doit être à symétrie anti-hermitienne, signifiant que α♣fq est paire et β♣fq impaire. La dispersion est due au fait que la vitesse de propagation n’est pas constante en fonction de la fréquence de l’onde. Comme le montre l’équation (2.6), la dispersion provoque une 33CHAPITRE 2 : Le modèle direct distorsion de la phase en fonction de la distance et de la fréquence [Droin et al. 1998, Wear 2000, Haiat et al. 2006]. Dans les milieux homogènes, la seule cause de dispersion est l’atté- nuation décrite dans la partie précédente [Lee et al. 1990]. On parle dans ce cas d’atténuation dispersive. En effet, en présence d’atténuation (modification du module), la dispersion (modification de la phase) apparaît pour assurer la cohérence physique de la propagation. La dispersion joue donc un rôle équilibrant dans la fonction de transfert de propagation Hr♣f, zq. Plutôt que de mesurer la dispersion, il est d’usage de la déduire à partir de l’atténuation qui est décrite par un modèle fiable et relativement simple (équation (2.9)). Ce calcul met en jeu les théories causales des systèmes physiques développées pour les ondes électromagnétiques par Kramers et Kronig [Kronig 1926, Kramers 1927]. Nous allons maintenant étudier plusieurs modèles de phase de la fonction de transfert de propagation. Modèle à phase linéaire La première approche consiste à considérer une vitesse de phase constante c♣fq ✏ c0 [Carstensen et Schwan 1959]. Kak et Dines [1978] ont proposé un tel modèle pour une atténuation linéaire, aboutissant à une phase linéaire 2πfz④c0 dans la fonction de transfert. Cela correspond à un retard pur de t0 ✏ z④c0 pour chaque phase du signal. La vitesse c0 est également la vitesse de groupe. La fonction de transfert de propagation s’écrit alors Hr♣f, zq ✏ b♣zqe ✁α♣fqz e ✁j2πfz④c0 . (2.21) Dans le cas d’une atténuation linéaire α♣fq ✏ α0⑤f⑤, la réponse impulsionnelle correspondante pour b♣zq ✏ 1 est [Kak et Dines 1978] hr♣t, zq ✏ 1 π α0z④2π ♣α0z④2πq 2 ♣t ✁ z④c0q 2 . (2.22) Cette réponse est symétrique par rapport à t0 et est de ce fait non-causale (voir figure 2.7). La causalité Un système est causal si sa réponse impulsionnelle est strictement nulle pour les temps négatifs. Des conditions sont néanmoins nécessaires pour que Hr♣f, zq soit le spectre en module d’une fonction causale [Papoulis 1962], et que le calcul soit possible. Dans ce cas et pour notre problème, les parties réelles et imaginaires de Hr♣f, zq sont reliées par une paire de transformées de Hilbert pour que hr♣t, zq soit causale [Papoulis 1962] (voir le détail en annexe A.1). Premièrement, la fonction de transfert Hr♣f, zq doit être de carré intégrable [Papoulis 1962] ➺ ✽ ✁✽ ⑤Hr♣f, zq⑤2 df ➔ ✽. (2.23) Dans le cas d’une atténuation en loi de puissance ⑤Hr♣f, zq⑤ ✏ e ✁α0⑤f⑤ γz , ➺ ✽ ✁✽ ⑤Hr♣f, zq⑤2 df ✏ ➺ ✽ ✁✽ e ✁2α0⑤f⑤ γz df. (2.24) 342.1 Modèle de signaux continus pour une cible ponctuelle Cette intégrale est bien convergente pour γ → 0. Deuxièmement, Hr♣f, zq doit vérifier la relation de Paley-Wiener qui est une condition nécessaire et suffisante sur le module d’une fonction de transfert pour qu’il puisse définir une réponse impulsionnelle causale [Papoulis 1962] : ➺ ✽ ✁✽ ✞ ✞ ln ⑤Hr♣f, zq⑤ ✞ ✞ 1 f 2 df ➔ ✽. (2.25) Pour le modèle d’atténuation (2.9), nous avons ➺ ✽ ✁✽ ✞ ✞ ln ⑤Hr♣f, zq⑤ ✞ ✞ 1 f 2 df ✏ α0z ➺ ✽ ✁✽ ⑤f⑤ γ 1 f 2 df. (2.26) L’inégalité (2.25) est respectée seulement pour γ ➔ 1 [He 1999, Kelly et al. 2008, Szabo 1994], et donc hr♣t, zq n’est pas causale pour γ ➙ 1. En acoustique, plusieurs méthodes ont été développées pour calculer le terme de phase et se rapprocher d’une réponse impulsionnelle causale : le modèle nearly-local [O’Donnell et al. 1978], le modèle time-causal [Szabo 1994], le modèle à minimum de phase [Gurumurthy et Arthur 1982, Kuc 1983; 1984]. Ces modèles sont équivalents pour une atténuation linéaire [Gurumurthy et Arthur 1982, He 1999]. Nous avons choisi d’utiliser le modèle à minimum de phase car il a donné une bonne concordance avec des données expérimentales dans le cas d’une atténuation linéaire et non-linéaire [He 1999]. Il peut de surcroît être adapté à un modèle de signaux à temps discret [Kuc 1983; 1984, Oppenheim et Schafer 1989]. Définition d’un temps de vol minimal pour respecter la causalité En acoustique, la dispersion implique que la vitesse des ondes augmente avec la fréquence. Elle est appelée dispersion « anormale » (anomalous dispersion) en opposition à une dispersion « normale » (normal dispersion) pour laquelle la vitesse décroît avec la fréquence [Szabo 1995]. La dispersion « normale » est une convention établie pour les ondes électromagné- tiques. On peut donc considérer qu’il existe une vitesse c✽ obtenue lorsque fÑ ✽ [Kelly et al. 2008, Wang 2009]. Pour une distance de propagation z donnée, on a donc un temps de vol minimal t0 ✏ z④c✽. De ce fait, pour respecter la causalité, une onde émise à t ✏ 0 ne doit pas apparaître avant t0 pour une cible placée en z. On peut donc définir le nombre d’onde comme k♣fq ✏ 2πf c✽ ♣fq ✁ jα♣fq, (2.27) où ♣fq représente la partie dispersive de la propagation. La vitesse de phase s’écrit alors c♣fq ✏ ✂ 1 c✽ ♣fq 2πf ✡✁1 . (2.28) La fonction de transfert de propagation (2.6) peut de ce fait être exprimée suivant Hr♣f, zq ✏ b♣zqe ✁α♣fqz e ✁j2πfz④c✽e ✁j♣fqz . (2.29) Il est possible de regrouper les parties dépendant de l’atténuation et de la dispersion dans une même fonction de transfert : Ha♣f, zq ✏ e ✁α♣fqz e ✁j♣fqz , (2.30) 35CHAPITRE 2 : Le modèle direct le reste représentant le terme à phase linéaire b♣zqe ✁j2πfz④c✽, qui est la fonction de propagation sans atténuation, de fait causale. Ce découpage permet de séparer la partie propagation de la partie atténuation dispersive et sera utile pour construire le modèle numérique. Dans le domaine temporel, on a donc hr♣f, zq ✏ b♣zqδ♣t ✁ z④c✽q ✝ ha♣t, zq, (2.31) où ha♣t, zq est la réponse impulsionnelle correspondant à Ha♣f, zq. Modèle à phase dispersive pour les signaux à temps discret Dans le cas des signaux à temps continu, Gurumurthy et Arthur [1982] ont proposé, pour une atténuation linéaire, un modèle à minimum de phase [Papoulis 1962, Oppenheim et Schafer 1989] pour calculer la partie dispersive de Ha♣f, zq. Une fonction à minimum de phase indique que sa réponse impulsionnelle est causale et a un retard de phase minimal par rapport à l’origine [Oppenheim et Schafer 1989]. Pour respecter la condition de Paley-Wiener et calculer la phase, Gurumurthy et Arthur considèrent une fréquence au-delà de laquelle l’atténuation est sous-linéaire (γ ➔ 1). C’est un artifice de calcul permettant de satisfaire la condition aux limites (2.25). La partie dispersive ♣fq a alors une formulation analytique [Gurumurthy et Arthur 1982]. Ce modèle est équivalent à ceux établis par O’Donnell et al. [O’Donnell et al. 1978] et Szabo [Szabo 1994] dans le cas de l’atténuation linéaire [He 1999]. Le calcul de cette phase est également possible en considérant des signaux à temps discret pour une atténuation α♣fq quelconque [Oppenheim et Schafer 1989, Kuc 1984] : ♣fq ✏ ✁ 1 fS P ➺ fS 2 ✁ fS 2 α♣gq cot ✂ π fS ♣f ✁ gq ✡ dg, (2.32) où fS est la fréquence d’échantillonnage et P est la valeur principale de Cauchy de l’inté- grale3 . Le détail du calcul de l’équation (2.32) est donné en annexe A.2. Kuc a utilisé ce modèle pour calculer des réponses impulsionnelles de propagation pour une atténuation linéaire [Kuc 1983; 1984]. C’est ce modèle, parfaitement applicable à un modèle d’atténuation non-linéaire [He 1999], que nous utilisons dans notre modèle d’atténuation dispersive. Pour un modèle d’atténuation en loi de puissance (2.9), la phase s’écrit ♣fq ✏ ✁α0 fS P ➺ fS 2 ✁ fS 2 ⑤g⑤ γ cot ✂ π fS ♣f ✁ gq ✡ dg. (2.33) C’est la formulation courante de la littérature et qui est approchée par intégration numé- rique. Nous avons néanmoins montré que, pour γ ✏ 1, l’intégrale (2.33) a une expression analytique [Carcreff et al. 2014b], développée en annexe A.2.1 ♣fq ✏ ✁α0fS π 2 ✒ Cl2 ✂ 2πf fS π ✡ ✁ Cl2 ✂ 2πf fS ✡✚ , (2.34) 3La valeur principale de Cauchy de l’intégrale de f♣xq qui a une singularité en a est définie par P ➺ ✽ ✁✽ f♣xqdx ✏ limÑ0 ✂➺ a✁ ✁✽ f♣xqdx ➺ ✽ a f♣xqdx ✡ . 362.1 Modèle de signaux continus pour une cible ponctuelle où Cl2 est la fonction de Clausen à l’ordre 2 [Maximon 2003]. Nous montrons des exemples de calculs numériques dans la partie 2.2.4. Sur la figure 2.6a, un exemple de phase dispersive est donné, pour une atténuation linéaire (γ ✏ 1) et pour différentes valeurs de α0. L’équation (2.33) montre que la phase ♣fq est −500 0 500 0 0.2 0.4 0.6 0.8 1 f [MHz] |Ha(f)| (a) Module −500 0 500 −20 −15 −10 −5 0 5 10 15 20 f [MHz] ǫ(f) [rad] (b) Phase 0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 t [µs] ha(t) (c) R´eponse impulsionnelle α0 = 10 Np/m/MHz α0 = 50 Np/m/MHz α0 = 100 Np/m/MHz FIGURE 2.6 – Exemples de modèles à atténuation linéaire et phase dispersive pour plusieurs valeurs du coefficient d’atténuation α0 ✏ 10, 50, 100 Np.MHz✁1 .m✁1 et pour une distance de propagation z ✏ 1 mm. (a) : Modules ⑤Ha♣f, zq⑤ ✏ e ✁α0⑤f⑤z , (b) : phases ♣fq, (c) : réponses impulsionnelles ha♣t, zq obtenues par tranformée de Fourier inverse de Ha♣f, zq ✏ e ✁α0⑤f⑤z e ✁♣fqz . linéaire en fonction de α0, ce qui est vérifié dans la figure 2.6b. Les réponses impulsionnelles obtenues par transformées de Fourier inverse sont également tracées sur la figure 2.6c. On peut vérifier qu’elles sont causales. Il est également à noter que le retard de groupe augmente avec α0. Comparaison des réponses impulsionnelles Nous comparons ici les réponses impulsionnelles hr♣t, zq obtenues par trois modèles d’atté- nuation : 1. sans atténuation et phase linéaire : Hr♣f, zq ✏ b♣zqe ✁j2πfz④c0 2. avec atténuation linéaire et phase linéaire : Hr♣f, zq ✏ b♣zqe ✁α0⑤f⑤z e ✁j2πfz④c0 3. avec atténuation linéaire et phase dispersive : Hr♣f, zq ✏ b♣zqe ✁α0⑤f⑤z e ✁j2πfz④c✽e ✁j♣fqz 37CHAPITRE 2 : Le modèle direct Les modèles 1 et 2 ont des réponses impulsionnelles analytiques, respectivement b♣zqδ♣t ✁ z④c0q et la réponse de l’équation (2.22), tandis que celle du modèle 3 est calculée numériquement par transformée de Fourier inverse de Hr♣f, zq. Arbitrairement, la vitesse c✽ est réglée à la vitesse de groupe c0 ✏ 2000 m.s✁1 . Ce réglage nous permet de mieux observer la causalité. Dans la réalité, c0 → c✽, comme nous le verrons dans la section expérimentale 2.3 à la fin de ce chapitre. La cible est placée à une distance z ✏ 1 mm avec une amplitude b♣zq ✏ 1. Les trois réponses sont tracées sur la figure 2.7. La réponse sans atténuation est une impulsion 0.4 0.5 0.6 0.7 0 1 t [µs] hr(t, z) sans att´enuation phase lin´eaire phase dispersive FIGURE 2.7 – Réponses impulsionnelles simulées hr♣t, zq en utilisant trois modèles : sans atténuation, avec atténuation et phase linéaires, et avec atténuation linéaire et phase dispersive. Paramètres : c0 ✏ c✽ ✏ 2000 m.s✁1 , γ ✏ 1, α0 ✏ 50 Np.MHz✁1 .m✁1 , z ✏ 1 mm et b♣zq ✏ 1. Le temps de vol minimal est t0 ✏ z④c✽ ✏ 0.5 µs. placée en t0 ✏ z④c0 ✏ 0.5 µs. Nous observons que la réponse avec une phase linéaire a une forme symétrique, des deux côtés de t0, et est donc non-causale (cf. équation (2.22)). La ré- ponse avec dispersion apparaît causale, même si elle ne l’est pas au sens strict car elle viole la condition de Paley-Wiener (2.25). On observe cependant que le signal est nul numériquement avant t0. Nous étudierons le calcul numérique de cette réponse impulsionnelle dans la partie 2.2.4. 2.2 Modèle discret linéaire pour l’inversion 2.2.1 Modèle de signaux à temps continu pour une distribution de cibles Le milieu est maintenant considéré comme ayant une distribution quelconque continue b♣zq de cibles. À partir des équations (2.8) et (2.31), le signal temporel reçu est la somme des contributions de toutes les cibles y♣tq ✏ ➺ z hi♣tq ✝ hr♣t, zqdz ✏ ➺ z b♣zqhi♣tq ✝ ha♣t ✁ z④cref, zqdz ✏ ➺ z b♣zq ✂➺ τ hi♣t ✁ τ qha♣τ ✁ z④cref, zqdτ ✡ dz, (2.35) où z définit la distance de propagation et b♣zq le contenu en amplitude de la distribution. La vitesse de référence appelée cref permet de s’adapter à plusieurs modèles. Pour un modèle 382.2 Modèle discret linéaire pour l’inversion causal, il faut utiliser cref ✏ c✽, où c✽ est la vitesse de phase pour les fréquences tendant vers l’infini. Pour un modèle basé sur la vitesse de groupe, on emploie cref ✏ c0. Le but de l’inversion est d’estimer b♣zq à partir d’une version échantillonnée de y♣tq. La reconstruction est plus efficace si des connaissances sont disponibles a priori sur la distribution spatiale. Nous détaillons dans le chapitre suivant un modèle spécifique de distribution. 2.2.2 Modèle de signaux à temps discret Modèle générique Nous considérons un signal à temps discret yrns ✏ y♣nTSq, n ✏ 0, . . . , Ny ✁ 1 où TS ✏ 1④fS est la période d’échantillonnage. A partir de l’équation (2.35), ce signal s’écrit yrns ✏ y♣nTSq ✏ ➺ z b♣zq ➺ τ hi♣nTS ✁ τ qha♣τ ✁ z④cref, zqdτdz. (2.36) Pour généraliser l’écriture et ne pas être limité par la résolution de l’échantillonnage, nous discrétisons l’intégrale de la convolution temporelle (intégrale par rapport à τ ) par la méthode des rectangles avec un pas constant ∆t . Nous posons τ ✏ m∆t et aboutissons à : yrns ✔ ➺ z b♣zq∆t ➳ m hi♣nTS ✁ m∆tqha ✂ m∆t ✁ z cref , z✡ dz ✔ ∆t ➳ m hi♣nTS ✁ m∆tq ➺ z b♣zqha ✂ m∆t ✁ z cref , z✡ dz. (2.37) D’une façon similaire, l’intégrale spatiale est discrétisée en posant z ✏ p∆z : yrns ✔ ∆t∆z ➳ m hi♣nTS ✁ m∆tq ➳ p b♣p∆zqha ✂ m∆t ✁ p∆z cref , p∆z ✡ . (2.38) Modèle discret sur-échantillonné Nous définissons maintenant les pas ∆t et ∆z comme des multiples du pas de référence qui est la période d’échantillonnage. Le but de ce formalisme est de pouvoir régler la résolution de reconstruction d’une façon arbitraire, mais toujours pour des multiples de TS qui est fixé par les données. Il y a donc un facteur de sur-échantillonnage K à choisir et qui définit les résolutions du modèle ∆t ✏ TS K , (2.39) et ∆z ✏ crefTS K . (2.40) Nous aboutissons à yrns ✔ ∆t∆z ➳ m hi ♣nK ✁ m∆tq ➳ p b ♣p∆zq ha ♣♣m ✁ pq∆t , p∆zq. (2.41) 39CHAPITRE 2 : Le modèle direct Modèle compact Nous notons maintenant les signaux à temps discret ✩ ✫ ✪ hirms ✏ hi♣m∆tq har`, ps ✏ ha♣`∆t , p∆zq xrps ✏ ∆t∆zb♣p∆zq. (2.42) L’équation (2.41) devient alors yrns ✔ ➳ m hirnK ✁ ms ➳ p harm ✁ p, psxrps. (2.43) Nous considérons les vecteurs y ✏ ✑ yr0s ☎ ☎ ☎ yrNy ✁ 1s ✙T , (2.44) x ✏ ✑ xr0s ☎ ☎ ☎ xrNx ✁ 1s ✙T , (2.45) hi ✏ ✑ hir0s ☎ ☎ ☎ hirNh ✁ 1s ✙T , (2.46) et ha♣zpq ✏ ✑ har0, ps ☎ ☎ ☎ harNx ✁ 1, ps ✙T , (2.47) où T symbolise la transposition. Les tailles Nx et Ny ne sont pas nécessairement égales, Nx dépendant des hypothèses de bord de la convolution [Idier 2001]. Nous montrerons dans la partie 2.2.3 plusieurs conventions qui relient Nx à Ny et Nh. L’équation (2.43) peut alors se mettre sous la forme compacte : y ✏ HiHax ✏ Gx, (2.48) où Hi P R Ny✂Nx est la matrice de convolution correspondant à la réponse instrumentale hi . Pour K ✏ 1, cette matrice a une structure de Toeplitz [Gray 2006], c’est-à-dire que les diagonales sont composées de valeurs identiques. Pour K → 1, nous verrons qu’elle correspond, à un ordonnancement près des colonnes, à la concaténation de K matrices de Toeplitz. Ha P R Nx✂Nx est la matrice d’atténuation composée des réponses impulsionnelles ha♣zpq pour chaque colonne p ✏ 0, . . . , Nx ✁ 1. La matrice G P R Ny✂Nx combine à la fois les effets de l’instrument et de la propagation dans le milieu. Le modèle des données (2.48) est donc linéaire par rapport à x qui est l’inconnue du problème inverse. Nous détaillons ci-après plusieurs formalismes de modèle. 2.2.3 Différents cas pour le modèle linéaire discret Cas sans atténuation et sans sur-échantillonnage Dans le cas sans atténuation, la réponse impulsionnelle d’atténuation est une impulsion de Dirac : ha♣t ✁ z④cref, zq ✏ δ♣t ✁ z④crefq. Sans sur-échantillonnage (K ✏ 1), le pas de discré- tisation ∆t est réglé à la période d’échantillonnage : ∆t ✏ TS. L’équation discrète (2.43) devient de ce fait yrns ✔ ➳ m hirn ✁ ms ➳ p harm ✁ p, psxrps ✏ ➳ m hirn ✁ msxrms, (2.49) 402.2 Modèle discret linéaire pour l’inversion qui est équivalent à un produit de convolution discrète. A partir de l’équation (2.49), chaque élément yrns est donc le produit scalaire euclidien entre h T i retournée et x. Dans le modèle matriciel, chaque ligne contient donc une version retournée de hi . On obtient alors y ✏ Hix, (2.50) où la matrice Hi est de Toeplitz et peut être définie suivant des conditions de bords particulières en fonction des hypothèses sur le signal x. La matrice complète qui ne fait aucune hypothèse hors du support de x est donc Hi ✏ ✔ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✕ hirNh ✁ 1s ☎ ☎ ☎ ☎ ☎ ☎ hir0s hirNh ✁ 1s ☎ ☎ ☎ . . . . . . 0 . . . . . . ☎ ☎ ☎ hir0s hirNh ✁ 1s ☎ ☎ ☎ . . . . . . . . . . . . ☎ ☎ ☎ hir0s 0 hirNh ✁ 1s ☎ ☎ ☎ ☎ ☎ ☎ hir0s ✜ ✣ ✣ ✣ ✣ ✣ ✣ ✣ ✣ ✣ ✢ . (2.51) La taille de x est donc Nx ✏ Ny Nh ✁ 1. Dans le cadre d’un problème inverse où il faut retrouver x, le problème est sous-déterminé. On peut également utiliser une formulation qui considère x nul au-delà de ses bornes. La matrice devient alors Hi ✏ ✔ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✕ hir0s 0 . . . hir0s hirNh ✁ 1s . . . . . . hirNh ✁ 1s . . . hir0s 0 . . . . . . hirNh ✁ 1s ✜ ✣ ✣ ✣ ✣ ✣ ✣ ✣ ✣ ✣ ✢ , (2.52) définissant un problème sur-déterminé avec Nx ✏ Ny ✁ Nh 1. De plus, chaque colonne a la même norme, ce qui simplifie les calculs de certains algorithmes. Cette forme de matrice ainsi que le modèle (2.50) constituent la formulation classique des problèmes de déconvolution [O’Brien et al. 1994, Olofsson et Stepinski 2000, Idier 2001]. Les propositions de solutions – chaque colonne de Hi – sont donc des répliques de hi pour n’importe quelle distance de propagation. Cas sans atténuation et avec sur-échantillonnage Dans ce cas, le pas de discrétisation ∆t est réglé comme un multiple de la période d’échantillonnage tel que ∆t ✏ TS④K avec K → 1. L’équation discrète (2.43) devient yrns ✔ ➳ m hirnK ✁ ms ➳ p harm ✁ p, psxrps ✏ ➳ m hirnK ✁ msxrms, (2.53) qui n’est plus un produit de convolution discrète. Nous avons toujours le modèle (2.50) : y ✏ Hix, mais la matrice Hi n’est plus Toeplitz. Les lignes sont toujours des versions retournées de hi mais avec un décalage de K zéros entre chaque ligne. Par exemple, pour 41CHAPITRE 2 : Le modèle direct K ✏ 2, la matrice Hi similaire à celle de l’équation (2.51) (y est nul en dehors de ses bornes) est Hi ✏ ✔ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✕ hirNh ✁ 1s hirNh ✁ 2s hirNh ✁ 3s ☎ ☎ ☎ hir0s 0 0 ☎ ☎ ☎ 0 0 hirNh ✁ 1s ☎ ☎ ☎ hir2s hir1s hir0s 0 ☎ ☎ ☎ 0 0 0 ☎ ☎ ☎ hir4s hir3s hir2s hir1s ☎ ☎ ☎ ☎ ☎ ☎ hir6s hir5s hir4s hir3s ☎ ☎ ☎ . . . . . . . . . ☎ ☎ ☎ hir8s hir7s hir6s hir5s ☎ ☎ ☎ . . . . . . . . . . . . ☎ ☎ ☎ ✜ ✣ ✣ ✣ ✣ ✣ ✣ ✣ ✢ , (2.54) avec Nx ✏ K♣Ny ✁ 1q Nh. Dans le cas de l’équation (2.52), où x est nul en dehors de ses bornes, Hi s’écrit Hi ✏ ✔ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✕ hir0s 0 0 ☎ ☎ ☎ hir2s hir1s hir0s 0 ☎ ☎ ☎ hir4s hir3s hir2s hir1s hir0s 0 ☎ ☎ ☎ . . . . . . . . . . . . . . . . . . . . . . . . ☎ ☎ ☎ 0 hirNh ✁ 1s hirNh ✁ 2s hirNh ✁ 3s hirNh ✁ 4s hirNh ✁ 5s ☎ ☎ ☎ 0 hirNh ✁ 1s hirNh ✁ 2s hirNh ✁ 3s ☎ ☎ ☎ 0 hirNh ✁ 1s ✜ ✣ ✣ ✣ ✣ ✣ ✣ ✣ ✣ ✣ ✢ , (2.55) avec Nx ✏ K♣Ny ✁ Nh ✁ 1q 2. D’une manière générale, le vecteur x est donc environ K fois plus grand que le vecteur y. Un exemple de matrices Hi est représenté sur la figure 2.8, pour K ✏ 1 et K ✏ 4 (au format de la matrice 2.55). On remarque que le nombre de colonnes est environ K fois supérieur pour la matrice de droite. Hi (K ✏ 1) Hi (K ✏ 4) FIGURE 2.8 – Exemple de matrices Hi pour K ✏ 1 (gauche) et pour K ✏ 4 (droite). En observant les matrices (2.54) et (2.55), on remarque que toutes les K colonnes sont identiques à un décalage vertical près. On peut alors montrer que l’équation (2.53) est équivalente à K convolutions discrètes [Carcreff et al. 2012; 2013b;a] yrns ✔ ➳ K k✏1 ➳ m h k i rn ✁ msxrms, (2.56) où h k i est défini comme un sous-vecteur de hi . A partir de l’équation (2.42), on peut montrer que h k i r`s ✏ hirK` k ✁ 1s ✏ hi ♣`TS ♣k ✁ 1q∆tq. (2.57) 422.2 Modèle discret linéaire pour l’inversion Le vecteur h k i correspond donc à une résolution temporelle TS et est décalé d’un pas♣k ✁ 1q∆t . L’entrelacement des h k i forme de ce fait le vecteur hi . D’une façon analogue, la matrice Hi peut être décomposée en K sous-matrices de convolution Hk i pour k ✏ 1 . . . K, menant à y ✏ Hix ✏ ➳ K k✏1 Hk i x k , (2.58) où x k est le sous-vecteur de x, correspondant aux colonnes de Hk i par rapport à Hi . Les données y peuvent donc être modélisées par un système à plusieurs entrées et une sortie unique (Multiple Input Single Output : MISO). Le chapitre 4 est dédié au modèle et aux algorithmes adaptés à de tels systèmes MISO. Cas avec atténuation et sans sur-échantillonnage L’équation discrète (2.43) devient yrns ✔ ➳ m hirn ✁ ms ➳ p harm ✁ p, psxrps, (2.59) qui peut, comme nous l’avons montré, s’écrire y ✏ HiHax. Des formes similaires apparaissent également dans [Hale 1981, Olofsson et Stepinski 2001, Lingvall et al. 2003]. La matrice de convolution Hi peut prendre les mêmes formes que dans le cas sans atténuation. La « convolution » ➦ p harm ✁ p, psxrps est quant à elle non-stationnaire, car la réponse impulsionnelle ha a une forme différente pour chaque colonne p [Margrave 1998]. La matrice d’atténuation s’écrit alors : Ha ✏ ✔ ✖ ✖ ✖ ✖ ✖ ✕ har0, 0s har✁1, 1s har✁2, 2s ☎ ☎ ☎ har✁Nx 1, Nx ✁ 1s har1, 0s har0, 1s har✁1, 2s ☎ ☎ ☎ har✁2, Nx ✁ 1s har2, 0s har1, 1s har0, 2s ☎ ☎ ☎ har✁2, Nx ✁ 1s . . . . . . . . . . . . . . . harNx ✁ 1, 0s harNx ✁ 2, 1s harNx ✁ 3, 2s ☎ ☎ ☎ har0, Nx ✁ 1s ✜ ✣ ✣ ✣ ✣ ✣ ✢ . (2.60) Dans le cas où les réponses d’atténuation sont causales, la matrice Ha est triangulaire infé- rieure. Un exemple de matrices Hi et Ha est représenté sur la figure 2.9. La matrice instrumentale Hi est Toeplitz. La matrice Ha montre les réponses impulsionnelles d’atténuation générées avec une atténuation linéaire et une phase dispersive. 2.2.4 Calcul numérique des réponses impulsionnelles d’atténuation Si le modèle avec atténuation dispersive (2.30) est utilisé pour définir l’atténuation, la ré- ponse impulsionnelle ha♣zq est approchée par transformée de Fourier discrète inverse de Ha♣f, zq. La transformée de Fourier discrète est calculée pour f P r✁fD④2, fD④2s et est composée de Nf points. Elle est donc dépendante de deux paramètres qui sont fD et Nf . La fréquence de discrétisation fD est définie grâce à la résolution temporelle du modèle ∆t , telle que fD ✏ 1 ∆t ✏ KfS, (2.61) 43CHAPITRE 2 : Le modèle direct Hi Ha G ✏ HiHa FIGURE 2.9 – Exemple de matrices Hi , Ha et G, où chaque colonne a été normalisée. où fS est la fréquence d’échantillonnage définie par les données et K est le facteur de sur- échantillonnage du modèle. Le premier problème dans le calcul des réponses impulsionnelles concerne la résolution temporelle. Le deuxième problème vient du fait que la discrétisation de l’axe des fréquences entraîne une périodicité du signal temporel. Dans la mesure du possible, il faut disposer d’un nombre de points conséquent pour éviter le repliement temporel. Nous illustrons ces deux problèmes par des exemples simples dans la suite. Influence de la résolution temporelle Nous étudions l’influence de la résolution temporelle sur le calcul de ha♣zq, en utilisant un modèle d’atténuation linéaire avec α0 ✏ 50 Np.MHz✁1 .m✁1 et une distance z ✏ 10 mm. Le nombre de points de l’axe fréquentiel est fixé à Nf ✏ 256. En utilisant des résolutions temporelles ∆t ✏ 0.1 µs, 0.05 µs, 0.02 µs, les réponses impulsionnelles obtenues sont tracées sur la figure 2.10. Il est logique que la résolution temporelle soit plus fine lorsque ∆t diminue. On remarque aussi que la causalité est « plus » marquée quand ∆t diminue. Dans le modèle de signaux (2.48), il y a donc un intérêt certain à utiliser une discrétisation fine, par augmentation de la fréquence d’échantillonnage ou par sur-échantillonnage. Influence du nombre de points de la transformée de Fourier discrète Nous reprenons les mêmes simulations que précédemment mais avec ∆t ✏ 0.02 µs et en faisant varier la nombre de points fréquentiels Nf ✏ 64, 128, 256. Les réponses impulsionnelles correspondantes sont tracées sur la figure 2.11. Le repliement temporel crée une continuité entre les indices k ✏ 0 et k ✏ Nf ✁ 1. Pour Nf ✏ 64, la fonction ne descend pas suffisamment vers zéro et empêche donc la réponse d’être causale. Lorsque Nf augmente, les réponses tendent de plus en plus vers une fonction causale. Le nombre de points de calcul de la transformée Ha♣f, zq doit donc être le plus grand possible pour que la réponse ha♣zq tende vers une fonction causale. 442.2 Modèle discret linéaire pour l’inversion 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 ∆t = 0.1 µs ha[k, z] µs 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 ∆t = 0.05 µs ha[k, z] µs 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 ∆t = 0.02 µs ha[k, z] µs FIGURE 2.10 – Etude de l’influence de ∆t dans le calcul des réponses impulsionnelles ha♣zq obtenues par transformée de Fourier discrète inverse de Ha♣f, zq. Paramètres : γ ✏ 1, α0 ✏ 50 Np.MHz✁1 .m✁1 , z ✏ 20 mm, Nf ✏ 256, ∆t ✏ 0.1 µs, 0.05 µs, 0.02 µs. 2.2.5 Modèle d’atténuation d’Olofsson A partir de l’équation (2.6), la fonction de transfert de propagation pour zp ✏ p∆z peut s’écrire Hr♣f, zpq ✏ b♣zpqe ✁♣α♣fqjβ♣fqqp∆z ✏ b♣zpq ✏ e ✁♣α♣fqjβ♣fqq∆z ✘p ✏ b♣zpqP♣fq p . (2.62) Mise à part la constante b♣zpq, la fonction Hr♣f, zpq est donc équivalente à un noyau fréquentiel P♣fq à la puissance p. Si ρ est la réponse impulsionnelle à temps discret correspondant à P♣fq pour f P r✁fS④2, fS④2s, elle représente le changement entre deux couches élé- mentaires séparées par ∆z. La réponse impulsionnelle totale pour une distance zp ✏ p∆z correspond donc à p ✁ 1 auto-convolutions de ρ que nous notons hr♣t, zpq ✏ ρ ✝p ✏ ρ ❧♦♦♦♦♦♦♠♦♦♦♦♦♦♥ ✝ ρ ✝ . . . ✝ ρ p ✁ 1 auto-convolutions . (2.63) Olofsson et Stepinski ont proposé d’utiliser un noyau ρ très proche d’une impulsion de Dirac de façon à synthétiser une faible distorsion entre deux couches élémentaires [Olofsson et 45CHAPITRE 2 : Le modèle direct 32 64 Nf = 64 ha[k, z] k 32 64 96 128 Nf = 128 ha[k, z] k 32 64 96 128 160 192 224 256 Nf = 256 ha[k, z] k FIGURE 2.11 – Etude de l’influence de Nf dans le calcul des réponses impulsionnelles ha♣zq obtenues par transformée de Fourier discrète inverse de Ha♣f, zq. Paramètres : γ ✏ 1, α0 ✏ 50 Np.MHz✁1 .m✁1 , z ✏ 20 mm, fS ✏ 50 MHz, Nf ✏ 64, 128, 256. Stepinski 2001] ρ ✏ ✔ ✖ ✖ ✖ ✖ ✖ ✕ 0 1 ✁ a a 0 . . . ✜ ✣ ✣ ✣ ✣ ✣ ✢ , (2.64) avec a ✦ 1. On peut montrer que la transformée de Fourier de ρ est P♣fq ✏ 1 ✁ a ae✁j2π∆tf ✏ 1 ✁ a a♣cos 2π∆tf ✁ j sin 2π∆tfq. (2.65) On a alors le module au carré ⑤P♣fq⑤2 ✏ ♣1 ✁ a a cos 2π∆tfq 2 ♣a sin 2π∆tfq 2 ✏ 1 2a♣a ✁ 1q♣1 ✁ cos 2π∆tfq ✏ 1 ✁ 4a♣1 ✁ aqsin2 ♣π∆tfq. (2.66) Le module de la transformée de Fourier s’écrit alors ⑤P♣fq⑤ ✏ ❜ 1 ✁ 4a♣1 ✁ aqsin2 ♣π∆tfq, (2.67) 462.3 Exploitation des modèles qui, à partir de l’équation (2.62), correspond à une fonction d’atténuation de la forme α♣fq ✏ ✁ln ⑤P♣fq⑤ ∆z . (2.68) Enfin, la phase arg P♣fq ✏ β♣fq∆z permet de déduire la vitesse de phase c♣fq ✏ ✁ 2πf∆z arg P♣fq . (2.69) Sur la figure 2.12, nous comparons les noyaux P♣fq calculés avec l’atténuation linéaire ⑤P♣fq⑤ ✏ e ✁α0⑤f⑤∆z et par le modèle d’Olofsson (2.67). Les paramètres sont réglés de façon à donner des allures semblables aux fonctions P♣fq. Sur la figure 2.13, nous traçons un ensemble de fonctions de transfert de propagation avec le modèle d’Olofsson. En comparaison avec la figure 2.3 page 29, malgré un noyau semblable, nous observons des profils d’atténuation relativement différents. Le choix d’un tel modèle est plutôt empirique, car l’atténuation ne respecte pas un modèle physique de loi d’atténuation. L’avantage de ce modèle est qu’il −25 −20 −15 −10 −5 0 5 10 15 20 25 0.85 0.9 0.95 1 f (MHz) |P(f)| lin´eaire Olofsson FIGURE 2.12 – Comparaison des noyaux fréquentiels ⑤P♣fq⑤ pour l’atténuation linéaire (α0 ✏ 50 Np.MHz✁1 .m✁1 ) et pour le modèle d’Olofsson (a ✏ 0.06). ne dépend que d’un seul paramètre a. Il est défini dans le domaine temporel et est automatiquement causal grâce à la présence du premier zéro dans l’équation (2.64). Par conséquent, il n’y a pas de dispersion à régler, car elle est intégrée dans les réponses temporelles. La matrice Ha se construit donc simplement en plaçant la p ✁ 1 ème auto-convolution ρ ✝p à la colonne p Ha ✏ ✏ ρ ✝1 ρ ✝2 ρ ✝2 ☎ ☎ ☎ ✘ ✏ ✔ ✖ ✖ ✖ ✕ ρ ✝1 0 0 0 ☎ ☎ ☎ ρ ✝1 1 ρ ✝2 1 0 ☎ ☎ ☎ ρ ✝1 2 ρ ✝2 2 ρ ✝3 2 ☎ ☎ ☎ . . . . . . . . . . . . ✜ ✣ ✣ ✣ ✢ . (2.70) Par convention, la première colonne ρ ✝1 est une impulsion de Dirac discrète r1, 0, . . .s T . 2.3 Exploitation des modèles d’atténuation et de dispersion avec des données expérimentales Dans cette section, nous comparons les modèles décrits précédemment à l’aide de données expérimentales. Dans un premier temps, nous mesurons l’atténuation et la vitesse des ondes 47CHAPITRE 2 : Le modèle direct 0 2 4 6 8 10 −20 −10 0 10 20 0 0.2 0.4 0.6 0.8 1 f (MHz) z (mm) |H r(f, z)| FIGURE 2.13 – Exemple de fonction d’atténuation ⑤Hr♣f, zq⑤ en fonction de la fréquence et de la distance de propagation. Le noyau d’Olofsson (2.64) est défini avec a ✏ 0.06 pour générer le modèle d’atténuation (2.62). grâce à des échos atténués. Ces profils expérimentaux sont comparés à ceux produits par les modèles. Nous appliquons cette comparaison pour un matériau ayant une atténuation linéaire, le polycarbonate, et un matériau avec une atténuation non-linéaire, l’huile de ricin. Cette partie montre de ce fait comment mesurer les paramètres nécessaires pour régler les modèles. Nous montrons également la modélisation d’un signal transmis par un matériau hé- térogène, une mousse poreuse. Un deuxième exemple est l’évaluation non destructive d’un matériau. Nous montrons qu’il est possible de déduire le coefficient d’atténuation et la vitesse des ondes grâce aux modèles développés. Pour finir, nous exposons une des limites du modèle proposé dans le cas de la modélisation de l’écho provenant d’un trou à fond plat. 2.3.1 Mesure en mode pulse-echo avec du polycarbonate Pour vérifier expérimentalement la précision du modèle, nous réalisons une mesure en mode pulse-echo avec une plaque de polycarbonate d’épaisseur e ✏ 10.2 mm, comme illustré sur la Figure 2.14. Le polycarbonate présente une forte atténuation, et qui peut être considérée eau transducteur d pi`ece D FIGURE 2.14 – Schéma du dispositif expérimental d’une mesure en mode pulse-echo. linéaire en fréquence [Selfridge 1985]. Le transducteur utilisé a une surface plane circulaire de diamètre 12.7 mm et une fréquence centrale de 2.25 MHz. La plaque de polycarbonate 482.3 Exploitation des modèles est placée dans le champ lointain du transducteur en incidence normale. Les données sont échantillonnées à la fréquence fS ✏ 100 MHz et moyennées sur 100 réalisations pour réduire le niveau de bruit. Le signal reçu par le transducteur est représenté sur la figure 2.15a. Il contient un écho de surface et un écho de fond que nous notons respectivement yf et yb et que nous séparons manuellement. Ils sont respectivement représentés sur les figures 2.15b et 2.15c. Les transformées de Fourier normalisées de ces deux échos Yf ♣fq et Yb♣fq sont également représentées en module sur la figure 2.15d. On remarque le décalage quasiment uniforme vers les basses fréquences de la forme spectrale, qui sous-entend une atténuation linéaire. 0 1 2 3 4 5 6 7 8 9 10 11 −1 −0.5 0 0.5 1 t [µs] y (a) Donn´ees 0 1 2 3 −1 −0.5 0 0.5 1 t [µs] yf (b) Echo de surface ´ 8 9 10 11 −0.05 0 0.05 t [µs] yb (c) Echo de fond ´ 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 0 0.5 1 f [MHz] |Yf (f)|, |Yb(f)| (d) Spectres en module normalis´es ´echo de surface |Yf (f)| ´echo de fond |Yb(f)| FIGURE 2.15 – Signaux temporels et fréquentiels acquis à partir d’une plaque de polycarbonate de 10.2 mm d’épaisseur avec un transducteur à 2.25 MHz. (a) : Données, (b) : écho de surface, (c) : écho de fond, (d) : spectres en module. Le but est de vérifier la modélisation de l’écho de fond à partir de l’écho de surface et des modèles d’atténuation présentés dans ce chapitre. Pour cela, il faut dans un premier temps mesurer les paramètres des modèles : α0 et γ pour l’atténuation, c0 ou c✽ pour la vitesse de phase et le paramètre a pour le modèle d’Olofsson. A partir de l’équation (2.6), la transformée de Fourier de l’écho de surface yf s’écrit Yf ♣fq ✏ b♣2DqHi♣fqe ✁♣αw♣fqjβw♣fqq2D, (2.71) où ✁αw♣fq et βw♣fq sont respectivement les parties imaginaire et réelle du nombre d’onde dans l’eau. Pour simplifier, nous considérons b♣2Dq ✏ 1 comme l’amplitude de référence. D’une façon similaire, l’écho de fond yb est défini dans le domaine fréquentiel par Yb♣fq ✏ b♣2D 2dqHi♣fqe ✁♣αw♣fqjβw♣fqq2D✁♣α♣fqjβ♣fqq2d , (2.72) 49CHAPITRE 2 : Le modèle direct avec ✁α♣fq et β♣fq respectivement les parties imaginaire et réelle du nombre d’onde dans le polycarbonate. Le coefficient b♣2D 2dq est l’amplitude de l’écho de fond. Calcul de l’atténuation Le rapport des modules de Yb♣fq et Yf ♣fq caractérise la fonction de transfert pour une distance égale au double de l’épaisseur de la plaque, dans la bande passante du transducteur. Ce calcul permet de s’affranchir du terme Hi♣fq et de la propagation dans l’eau ⑤Yb♣fq⑤ ⑤Yf ♣fq⑤ ✏ b♣2D 2dqe ✁α♣fq2d . (2.73) En prenant le logarithme naturel de cette fonction, on aboutit à ln ✂ ⑤Yb♣fq⑤ ⑤Yf ♣fq⑤✡ ✏ ln ⑤b♣2D 2dq⑤ ✁ α♣fq2d. (2.74) Cette équation permet de déduire l’atténuation α♣fq à partir de la mesure des modules ✁ 1 2d ln ✂ ⑤Yb♣fq⑤ ⑤Yf ♣fq⑤✡ ✏ ✁ 1 2d ln ⑤b♣2D 2dq⑤ α♣fq. (2.75) Le tracé de ✁1④2d ln ♣⑤Yb♣fq⑤④⑤Yf ♣fq⑤q sur la figure 2.16 permet d’identifier α♣fq dans la bande de fréquences du transducteur. Cette fonction peut être considérée comme linéaire- 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3 3.2 3.4 20 40 60 80 100 120 140 160 180 200 f [MHz] [Np/m] (a) Att´enuation 53.50f − 1 2d ln|Yb(f)/Yf (f)|) r´egression mod`ele Olofsson 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3 3.2 3.4 2255 2260 2265 2270 2275 2280 2285 (b) Vitesse de phase f [MHz] c(f) [m/s] cmes(f) mod`ele phase lin´eaire mod`ele phase dispersive mod`ele Olofsson FIGURE 2.16 – Atténuation fréquentielle et vitesse de phase, mesurées et modèles, pour du polycarbonate. (a) : Atténuation, (b) : vitesse de phase. 502.3 Exploitation des modèles ment dépendante de la fréquence. Une régression linéaire également représentée sur la fi- gure 2.16 permet d’estimer le terme d’ordonnée à l’origine ✁1④2d ln ⑤b♣2D 2dq⑤ et le terme qui dépend de la fréquence, α♣fq. On aboutit à un coefficient d’atténuation α♣0 ✏ 53.5 Np.MHz✁1 .m✁1 , conforme aux valeurs que l’on trouve dans la littérature [Selfridge 1985]. Pour le modèle d’Olofsson, le paramètre a est discrétisé sur une grille fine, de manière à générer les fonctions hr♣t, zq et à modéliser l’écho. Le paramètre qui minimise l’erreur entre les données et le modèle r ✏ ⑥yb ✁ y♣b ⑥ ⑥yb ⑥ , (2.76) est choisi. Le détail de cette procédure est présenté dans la partie 2.3.1 page 52. On obtient a ✏ 0.2098. A partir de l’équation (2.68), on peut calculer la fonction d’atténuation correspondant au modèle d’Olofsson. Elle est tracée sur la figure 2.16a et arbore une allure sensiblement équivalente au modèle d’atténuation linéaire. Calcul de la vitesse de phase A partir des équations (2.71) et (2.72), nous pouvons écrire la différence de phase entre les deux spectres arg Yf ♣fq ✁ arg Yb♣fq ✏ β♣fq2d ✏ 2πf c♣fq 2d, (2.77) ce qui permet d’écrire la vitesse de phase mesurée cmes♣fq cmes♣fq ✏ 2πf 2d arg Yf ♣fq ✁ arg Yb♣fq . (2.78) Dans le cas du modèle à phase linéaire, une estimation de la vitesse constante c♣fq ✏ c0 peut se calculer en effectuant la moyenne des cmes♣fq ♣c0 ✏ ❆ cmes♣fq ❊ . (2.79) Dans le cas du modèle dispersif, à partir de l’équation (2.28), la vitesse c✽ se calcule par 1 c✽ ✏ 1 c♣fq ✁ ♣fq 2πf , (2.80) où ♣fq est calculé à partir de α0 grâce à l’équation (2.33). On peut donc estimer ♣c✽ en calculant la moyenne 1 ♣c✽ ✏ ❈ 1 cmes♣fq ✁ ♣fq 2πf ● . (2.81) Les estimations de ♣c0 et ♣c✽ donnent respectivement ♣c0 ✏ 2273.2 m.s✁1 et ♣c✽ ✏ 2379.3 m.s✁1 . Ces valeurs permettent de calculer les vitesses de phase correspondantes, représentées sur la figure 2.16b. On observe que la vitesse de phase donnée par le modèle dispersif est assez fidèle à la vitesse mesurée. Le modèle à phase linéaire est forcément inexact en présence de dispersion et fournit une valeur moyenne de la vitesse. La vitesse de phase du modèle d’Olofsson donnée par l’équation (2.69) montre une vitesse quasiment constante dans la bande passante du transducteur, de valeur très proche de la vitesse de groupe calculée ♣c0 avec le modèle à phase linéaire. La vitesse c✽ pour le modèle d’Olofsson peut être trouvée en divisant 2e par le temps de vol (nous détaillons cela dans la partie 2.3.4), ce qui mène à ♣c✽ ✏ 2749.3 m.s✁1 . 51CHAPITRE 2 : Le modèle direct Estimation des signaux temporels par un processus de filtre adapté Nous comparons maintenant les échos de fond mesurés et modélisés grâce aux paramètres obtenus précédemment. Les valeurs des paramètres sont récapitulés dans le tableau 2.1. L’écho de surface yf est la transformée de Fourier inverse de Yf ♣fq ✏ Hi♣fqe ✁♣αw♣fqjβw♣fqq2D Atténuation Vitesse (m.s✁1 ) Modèle en loi de puissance α♣0 ✏ 53.5 Np.MHz✁1 .m✁1 ♣c0 ✏ 2273.2 ♣c✽ ✏ 2379.3 Olofsson ♣a ✏ 0.2098 ♣c✽ ✏ 2749.3 TABLE 2.1 – Tableau des estimations des coefficients d’atténuation et vitesses par division spectrale. Les mesures sont réalisées avec une plaque de polycarbonate de 10.2 mm d’épaisseur grâce à un transducteur centré à 2.25 MHz. (voir équation (2.71)). A partir de l’équation (2.72), l’écho de fond est défini par Yb♣fq ✏ Yf ♣fqb♣2D 2dqe ✁♣α♣fqjβ♣fqq2d . (2.82) Suivant les modèles retenus pour α♣fq et β♣fq, on peut donc modéliser l’écho de fond y♣b par une convolution entre l’écho de surface yf et une réponse impulsionnelle de propagation. Nous utilisons la formulation matricielle (2.48) : yb ✏ Gx. Quatre modèles sont comparés pour construire la matrice G : 1. le modèle sans atténuation 2. le modèle avec atténuation linéaire et phase linéaire 3. le modèle avec atténuation linéaire et phase dispersive 4. le modèle d’Olofsson. Pour modéliser un écho, le vecteur x est composé d’une seule valeur non nulle ♣a, qui correspond à l’amplitude b♣2D 2dq – pour rappel, nous avons considéré b♣2Dq ✏ 1 –, positionné à l’indice p♣ avec p♣ P r1 . . . Nxs. L’écho modélisé est donc une colonne gp♣ de G pondérée par un facteur d’amplitude tel que y♣b ✏ gp♣♣a. Nous considérons alors la minimisation d’un critère des moindres carrés entre les données et le modèle ♣p, ♣ ♣aq ✏ arg min p✏0...Nx✁1, aPR ✎ ✎yb ✁ gpa ✎ ✎ 2 . (2.83) Le modèle étant linéairement dépendant de l’amplitude, l’amplitude optimale peut être calculée pour chaque p en annulant la dérivée en fonction de a ❇ ✎ ✎yb ✁ gpa ✎ ✎ 2 ❇a ✏ ✁2g T p yb ✁ gpa ✟ ✏ 0 ÝÑ ♣a ✏ g T p yb ✎ ✎gp ✎ ✎ 2 . (2.84) 522.3 Exploitation des modèles En insérant l’équation (2.84) dans (2.83), on obtient ✎ ✎ ✎ ✎ ✎ yb ✁ gpg T p yb ✎ ✎gp ✎ ✎ 2 ✎ ✎ ✎ ✎ ✎ 2 ✏ ✄ yb ✁ gpg T p yb ✎ ✎gp ✎ ✎ 2 ☛T ✄ yb ✁ gpg T p yb ✎ ✎gp ✎ ✎ 2 ☛ ✏ ⑥yb ⑥ 2 ✁ 2 y T b gpg T p yb ✎ ✎gp ✎ ✎ 2 y T b gpg T p gpg T p yb ✎ ✎gp ✎ ✎ ✏ ⑥yb ⑥ 2 ✁ y T b gpg T p yb ✎ ✎gp ✎ ✎ 2 ✏ ⑥yb ⑥ 2 ✁ ✎ ✎g T p yb ✎ ✎ 2 ✎ ✎gp ✎ ✎ 2 . (2.85) Le terme ⑥yb ⑥ 2 étant constant et g T p yb étant scalaire, la minimisation de l’équation (2.85) revient à maximiser ⑤g T p yb ⑤④ ✎ ✎gp ✎ ✎. La position optimale p♣est donc déterminée par : p♣ ✏ arg max pPr1...Nxs ⑤g T p yb ⑤ ✎ ✎gp ✎ ✎ . (2.86) La localisation de l’écho revient donc à sélectionner la colonne gp♣ de G la plus corrélée aux données. Dans le cas spécifique où G est une matrice de convolution, ce calcul est équivalent à un filtre adapté [Van Trees 1968] ou au maximum d’intercorrélation. En pratique, les colonnes de la matrice G sont calculées pour des distances z autour de 2d ✏ 20.4 mm, avec un pas de discrétisation assez fin : ∆z ✏ 0.0001 mm. On obtient les résultats illustrés sur la figure 2.17. Nous affichons également l’erreur r entre les données et l’estimation, dé- finie selon l’équation (2.76). On peut observer que la meilleure estimation est réalisée par le modèle avec atténuation dispersive, qui fait baisser l’erreur d’un facteur cinq par rapport au modèle sans atténuation. Viennent ensuite les modèles avec phase linéaire et d’Olofsson. Nous remarquons que les formes estimées par ces deux modèles sont très proches, ce qui était attendu au vu des profils α♣fq et c♣fq de la figure 2.16. La plus mauvaise modélisation provient du modèle qui ne considère pas d’atténuation. 2.3.2 Mesure en transmission dans l’huile de ricin D’une manière similaire, nous présentons des résultats expérimentaux effectués avec de l’huile de ricin, matériau connu pour avoir une atténuation non-linéaire [He 1999, Szabo 1995]. Les mesures sont réalisées autour de 5 MHz par deux transducteurs, un émetteur et un récepteur, immergés face à face dans l’huile de ricin (voir figure 2.18). Comme illustré sur le schéma 2.19, la distance entre les transducteurs est fixée à 2 mm puis à 5 mm pour créer une épaisseur équivalente de matériau de 3 mm. Ces deux mesures correspondent respectivement aux signaux yf et yb . Les signaux temporels ainsi que leurs transformées de Fourier respectives Yf ♣fq et Yb♣fq sont représentés sur la figure 2.20. Nous observons un décalage du spectre vers les basses fréquences dû à l’atténuation. A partir de la division spectrale (2.75) et à l’aide d’une régression non-linéaire, nous identifions un facteur de puissance γ ✓ 1.70, valeur similaire à celles que l’on trouve dans la littérature [He 1999, Szabo 1995], et un coefficient d’atténuation α0 ✏ 10.93 Np.MHz✁1.70.m✁1 . Ces valeurs permettent de calculer 53CHAPITRE 2 : Le modèle direct 8 9 10 11 −0.05 0 0.05 t [µs] (a) Sans att´enuation r =0.46698 8 9 10 11 −0.05 0 0.05 t [µs] (b) Phase lin´eaire r =0.26442 8 9 10 11 −0.05 0 0.05 t [µs] (c) Phase dispersive r =0.08895 8 9 10 11 −0.05 0 0.05 t [µs] (d) Mod`ele d’Olofsson r =0.25699 FIGURE 2.17 – Estimation de l’écho de fond acquis avec une plaque de polycarbonate grâce à plusieurs modèles d’atténuation. (a) : Estimation sans atténuation, (b) : estimation avec atténuation linéaire et phase linéaire, (c) : estimation avec atténuation linéaire et phase dispersive, (d : estimation avec le modèle d’Olofsson. ’–’ : données, ’- -’ : estimation, r : erreur définie par l’équation (2.76). FIGURE 2.18 – Photos de l’expérimentation dans l’huile de ricin. Les transducteurs sont immergés dans l’huile et positionnés face à face pour réaliser une mesure en transmission. le profil de phase ♣fq grâce à l’équation (2.33). L’atténuation provenant du modèle d’Olofsson calculée avec l’équation (2.68) est également tracée sur la figure 2.21. On remarque une allure relativement proche de celle du modèle en loi de puissance. Les vitesses de phase mesurées et estimées sont représentées sur la figure 2.21. Le modèle à phase linéaire tend à estimer une vitesse moyenne ♣c0 ✏ 1522.5 m.s✁1 . Le modèle à phase dispersive permet d’obtenir, avec ♣c✽ ✏ 1592.4 m.s✁1 , une modélisation assez précise de la 542.3 Exploitation des modèles transducteur e transducteur FIGURE 2.19 – Schéma du dispositif expérimental pour la mesure dans l’huile de ricin. Le transducteur récepteur est déplacé d’une distance e pour créer un matériau de même épaisseur. 0 1 2 −1 −0.5 0 0.5 t [µs] yf (a) Echo 1 ´ 1 2 3 −0.5 0 0.5 t [µs] yb (b) Echo 2 ´ 0 1 2 3 4 5 6 7 8 9 0 0.5 1 f [MHz] |Yf (f)|, |Yb(f)| (c) Spectres en module normalis´es ´echo 1 |Yf (f)| ´echo 2 |Yb(f)| FIGURE 2.20 – Signaux temporels et fréquentiels acquis à partir d’une épaisseur d’huile de ricin de 3 mm avec un transducteur à 5 MHz. (a) : Écho 1 acquis avec la première position du transducteur, (b) : écho 2 acquis avec la deuxième position du transducteur, (c) : spectres en module des deux échos. vitesse de phase grâce à la prise de compte de la dispersion. Nous observons également que la vitesse calculée avec le modèle d’Olofsson (2.69) a une forme relativement proche de la réalité. La modélisation des signaux temporels est effectuée de la même façon que dans la partie précédente. Ces signaux sont représentés sur la figure 2.22. En termes d’adéquation entre les données et le modèle, nous obtenons le même classement que pour le polycarbonate. La moins bonne estimation est réalisée avec le modèle sans atténuation. Ensuite, les modèles à phase linéaire et d’Olofsson donnent des résultats équivalents. Les meilleurs résultats sont obtenus pour le modèle à phase dispersive qui fait baisser le résidu d’un facteur six par rapport à l’approche classique. 55CHAPITRE 2 : Le modèle direct 4 4.5 5 5.5 6 6.5 50 100 150 200 250 300 f [MHz] [Np/m] (a) Att´enuation -9.88 +10.93f 1.70 − 1 2d ln (Yb(f)/Yf (f)) r´egression mod`ele Olofsson 4 4.5 5 5.5 6 6.5 1520.5 1521 1521.5 1522 1522.5 1523 1523.5 1524 1524.5 (b) Vitesse de phase f [MHz] c(f) [m/s] cmes(f) mod`ele phase lin´eaire mod`ele phase dispersive mod`ele Olofsson FIGURE 2.21 – Atténuation fréquentielle et vitesse de phase dans l’huile de ricin, mesurées et modèles. (a) : Atténuation, (b) : vitesse de phase. 2.3.3 Mesure aérienne en transmission dans un matériau poreux Dans cette partie, nous nous intéressons aux matériaux poreux, qui sont des matériaux hé- térogènes, contrairement au polycarbonate et à l’huile de ricin. Un matériau poreux est un milieu biphasique, c’est-à-dire constitué d’une partie solide et d’une partie fluide (les pores). Lorsqu’il est immergé, il y a donc trois ondes qui se propagent : une onde longitudinale dans la partie fluide et deux ondes, longitudinale et transversale, dans la partie solide. Nous ne nous intéressons pas à un modèle précis de propagation dans les matériaux poreux, tel qu’il est présenté par Biot [1956a;b]. Nous voulons ici tester la capacité du modèle d’atténuation dispersive à s’adapter à des matériaux hétérogènes. La mesure que nous présentons est réalisée dans l’air, de manière à avoir uniquement l’onde dans le fluide. Tout d’abord, une mesure en transmission dans l’air entre deux transducteurs, de fré- quence centrale 100 kHz, espacés de 22.1 cm, nous permet d’obtenir le signal yf représenté sur la figure 2.23a. Cette mesure permet également d’obtenir la vitesse du son dans l’air : ca ✏ 343 m.s✁1 . Ensuite, une mousse poreuse d’épaisseur d ✏ 20 mm est placée entre les deux transducteurs. Le signal obtenu yb , après propagation dans la mousse, est tracé sur la figure 2.23b. Les spectres en module normalisés des deux signaux sont représentés sur la figure 2.23c. On peut remarquer une annulation vers 50 kHz, due aux caractéristiques des transducteurs. Les points autour de cette valeur n’ont pas servi aux calculs d’atténuation et de vélocité. D’une manière similaire à ce qui a été fait précédemment, les spectres permettent de mesurer l’atténuation (figure 2.23d) dans le matériau poreux. Celle-ci ayant un profil plutôt linéaire, on peut identifier α0 ✏ 513.8 Np.MHz✁1 .m✁1 par régression linéaire. Le coefficient α0 permet de calculer la partie dispersive de la phase ♣fq. La mesure de la vi- 562.3 Exploitation des modèles 2 2.5 3 −0.5 0 t [µs] (a) Sans att´enuation r =0.16601 2 2.5 3 −0.5 0 t [µs] (b) Phase lin´eaire r =0.04419 2 2.5 3 −0.5 0 t [µs] (c) Phase dispersive r =0.02671 2 2.5 3 −0.5 0 t [µs] (d) Mod`ele d’Olofsson r =0.04372 FIGURE 2.22 – Estimation du deuxième écho acquis dans l’huile de ricin grâce à plusieurs modèles d’atténuation. (a) : Estimation sans atténuation, (b) : estimation avec atténuation linéaire et phase linéaire, (c) : estimation avec atténuation linéaire et phase dispersive, (d) : estimation avec le modèle d’Olofsson. ’–’ : données, ’- -’ : estimation, r : erreur (2.76). tesse de phase, exposée en figure 2.23e, aboutit aux estimations des vitesses ♣c0 ✏ 301.3 m.s✁1 et ♣c✽ ✏ 325.8 m.s✁1 , grâce aux équations (2.79) et (2.81), respectivement. L’estimation de la vitesse de phase par le modèle dispersif est également représentée sur la figure 2.23e. L’adéquation n’est pas parfaite mais elle est plus proche que le modèle à vitesse de phase constante. Cette différence est due à la nature hétérogène de la mousse poreuse, qui a probablement un profil de vitesse de phase différent de notre modèle. Néanmoins, celui-ci permet une bonne approximation de la vitesse. Comme dans les parties précédentes, l’écho réceptionné après propagation dans la mousse peut être estimé grâce au modèle sans atténuation et au modèle avec atténuation linéaire et phase dispersive. Ces estimations sont respectivement représentées sur les figures 2.24a et 2.24b. Le modèle avec atténuation dispersive fournit un résultat avec une erreur environ deux fois inférieure au modèle sans atténuation. Cette expérience montre que, dans une moindre mesure que pour les matériaux homogènes, le modèle avec atténuation dispersive développé permet de modéliser des signaux provenant de matériaux hétérogènes, comme les mousses poreuses. Ce travail mériterait d’être poursuivi dans le cas de matériaux poreux saturés par de l’eau, dans lesquelles trois types d’ondes se propagent et se mélangent. 57CHAPITRE 2 : Le modèle direct 0.7 0.75 0.8 0.85 −2 −1 0 1 2 t [ms] yf (a) Signal de r´ef´erence 0.7 0.75 0.8 0.85 −0.2 −0.1 0 0.1 0.2 0.3 t [ms] yb (b) Signal transmis 0 50 100 150 0 0.2 0.4 0.6 0.8 1 f [kHz] (c) Spectres en module |Yf (f)| |Yb(f)| 20 40 60 80 100 120 140 60 80 100 120 140 160 f [kHz] [Np/m] (d) Att´enuation mesure mod`ele 20 40 60 80 100 120 140 285 290 295 300 305 f [kHz] c(f) [m/s] (e) Vitesse de phase mesure mod`ele lin´eaire mod`ele dispersif FIGURE 2.23 – Signaux temporels et fréquentiels acquis à partir d’une mousse poreuse de 20 mm d’épaisseur avec deux transducteurs à 100 kHz, et . (a) : Signal de référence, (b) : signal transmis, (c) : spectres en module, (d) : atténuation mesurée et régression linéaire, (e) : vitesse de phase mesurée et modèle. 0.74 0.76 0.78 0.8 0.82 0.84 0.86 −0.2 −0.1 0 0.1 0.2 0.3 t [ms] (a) Sans att´enuation donn´ees mod`ele, r = 0.0196 diff´erence 0.74 0.76 0.78 0.8 0.82 0.84 0.86 −0.2 −0.1 0 0.1 0.2 0.3 t [ms] (b) Avec att´enuation donn´ees mod`ele, r = 0.0099 diff´erence FIGURE 2.24 – Estimation de l’écho transmis par une mousse poreuse d’épaisseur 20 mm. (a) : Estimation sans atténuation, (b) : estimation avec atténuation linéaire et phase dispersive. ’–’ : données, ’- -’ : estimation, r : erreur (2.76). 2.3.4 Exploitation du modèle pour l’Évaluation Non Destructive Le modèle linéaire introduit dans la section 2.2 permet l’usage de méthodes d’estimation rapides comme le filtre adapté (équation (2.86)). Nous proposons d’utiliser cette procédure pour réaliser l’évaluation non-destructive d’un matériau, c’est-à-dire estimer certains de ses paramètres inhérents (masse volumique, vitesse des ondes, coefficient d’atténuation, etc.). Dans cette étude, les paramètres à retrouver sont le coefficient d’atténuation et la vitesse des ondes. Le principe est de tester plusieurs configurations de modèles avec des paramètres de différentes valeurs et de sélectionner les paramètres qui minimisent l’erreur entre les données et le modèle (équation (2.76)). Nous montrons qu’il est possible d’exprimer les modèles en fonction d’un seul paramètre (à facteur de loi de puissance constant). Dans cette partie, ce procédé d’évaluation est appliqué à l’estimation des paramètres du polycarbonate. Pour un facteur γ donné dans le modèle en loi de puissance α♣fq ✏ α0⑤f⑤ γ (équation (2.9)), 582.3 Exploitation des modèles on peut écrire la fonction de propagation (2.29) comme Hr♣f, p∆zq ✏ e ✁α♣fqp∆z✁j2πf p∆z④cref✁j♣fqp∆z . (2.87) La partie dispersive de la phase ♣fq ✏ ✁ 1 fS α0P ➺ fS 2 ✁ fS 2 ⑤g⑤ γ cot ✂ π fS ♣f ✁ gq ✡ dg ✏ α0 ✶ ♣f, γq, (2.88) est linéaire par rapport à α0. Si ∆z ✏ cref∆t , on peut donc écrire Hr♣f, zpq ✏ e ✁♣⑤f⑤ γj✶ ♣f,γqqα0crefp∆t e ✁j2πf p∆t . (2.89) Pour une valeur donnée de γ, la fonction de propagation est donc paramétrée par un unique coefficient sans unité χ ✏ α0cref. Pour chaque valeur de χ, la vitesse cref peut être déduite à partir de la dimension d de l’objet et de l’estimation de la position temporelle p♣ de l’écho suivant cref ✏ d p♣∆t . (2.90) où p♣est calculé selon l’équation (2.86). Le coefficient d’atténuation correspondant est alors α0 ✏ χ cref . (2.91) En pratique, nous discrétisons χ sur une grille fine de façon à couvrir des plages réalistes de paramètres pour α0 et cref. Pour chaque valeur de χ, une matrice G♣χq est construite avec un modèle d’atténuation donné. Nous utilisons ensuite le processus de filtrage adapté (voir partie 2.3.1) pour déterminer la position optimale p♣: ♣p♣♣χq, ♣a♣χqq ✏ arg min p✏0...Nx✁1, aPR ✎ ✎yb ✁ gp ♣χqa ✎ ✎ 2 . (2.92) L’estimation de l’écho est donc y♣b ♣χq ✏ gp♣♣χq♣a♣χq. (2.93) Une fois tous les p♣♣χq calculés, nous sélectionnons la solution χ♣ qui minimise l’erreur (2.76) χ♣ ✏ arg min χ ⑥yb ✁ y♣b ♣χq⑥ ⑥yb ⑥ . (2.94) Cette valeur permet d’estimer les paramètres α♣0 et ♣cref grâce aux équations (2.90) et (2.91). Dans cet exemple, nous avons utilisé les données acquises avec une plaque de polycarbonate de 10.2 mm d’épaisseur avec un transducteur à 2.25 MHz (mêmes données que dans la partie 2.3.1). Le paramètre χ est discrétisé entre 0 et 0.2350 avec un pas de 0.000175. Nous discrétisons également le paramètre a du modèle d’Olofsson entre 0 et 0.4 avec un pas de 0.0001. La résolution temporelle choisie est 0.0025 µs, ce qui correspond à un facteur de sur- échantillonnage K ✏ 4 (avec fS ✏ 100 MHz). Pour chaque valeur de χ ou a, une matrice G est générée et le calcul de l’équation (2.86) permet de retrouver la position temporelle optimale p♣. Nous représentons sur la figure 2.25, les coefficients d’atténuation et les vitesses associés à chaque valeur de χ ou de a. Les valeurs qui minimisent l’erreur (2.76) sont réca- 59CHAPITRE 2 : Le modèle direct 0 0.05 0.1 0.15 0.2 0 0.1 0.2 0.3 0.4 0.5 (a) mod`eles fr´equentiels χ R´esidu αb0 = 54.6 αb0 = 53.7 0 0.1 0.2 0.3 0.4 0 0.1 0.2 0.3 0.4 0.5 (b) Olofsson a R´esidu aˆ = 0.210 0 0.05 0.1 0.15 0.2 2250 2300 2350 2400 2450 2500 χ Vitesse [m/s] (c) mod`eles fr´equentiels bc0 = 2328.8 bc0 = 2273.0 bc∞ = 2379.7 sans att´enuation phase lin´eaire phase dispersive 0 0.1 0.2 0.3 0.4 2300 2400 2500 2600 2700 2800 2900 3000 3100 3200 a Vitesse [m/s] (b) Olofsson bc∞ = 2749.3 sans att´enuation Olofsson FIGURE 2.25 – Evaluation non destructive d’une plaque de polycarbonate. (a) : Résidu (2.76) en fonction de χ (modèles fréquentiels), (b) : résidu en fonction de a (modèle d’Olofsson), (c) : vitesse en fonction de χ, (d) : vitesse en fonction de a. Les valeurs minimales de résidu (✌) permettent l’estimation des coefficients d’atténuation (α♣0 ou ♣a) et des vitesses (♣c0 ou ♣c✽). Modèle χ♣ ou ♣a p♣∆t (µs) ♣cref (m.s✁1 ) α♣0 (Np.MHz✁1 .m✁1 ) 1 Sans atténuation 8.76 ♣c0 ✏ 2328.8 0 2 Phase linéaire χ♣ ✏ 0.1242 8.97 ♣c0 ✏ 2273.0 54.6 3 Phase dispersive χ♣ ✏ 0.1278 8.57 ♣c✽ ✏ 2379.7 53.7 4 Olofsson ♣a ✏ 0.210 7.42 ♣c✽ ✏ 2749.3 TABLE 2.2 – Tableau des estimations des χ♣, des temps de vol p♣∆t , des vitesses et des coef- ficients d’atténuation par évaluation non destructive. Mesures acquises avec une plaque de polycarbonate de 10.2 mm d’épaisseur grâce à un transducteur centré à 2.25 MHz. Pour les modèles 2 et 3, γ ✏ 1. pitulées dans le tableau 2.2. Ces valeurs sont à comparer avec celles obtenues par division spectrale dans la partie 2.3.1 (voir tableau 2.1 page 52). On remarque que ces valeurs sont très proches sauf pour le modèle sans atténuation. Le coefficient d’atténuation α♣0 et la vitesse ♣c0 ✏ 2273.0 m.s✁1 sont conformes aux valeurs que l’on trouve dans la littérature [Selfridge 1985]. Les signaux temporels estimés avec les paramètres optimaux sont représentés sur la figure 2.26. Notons que les résidus sont très proches de celles obtenues dans la partie 2.3.1. La différence pour le modèle sans atténuation vient du fait qu’une meilleure estimation est obtenue une demi-période plus tôt par rapport 602.3 Exploitation des modèles 8 9 10 11 −0.05 0 0.05 (a) Sans att´enuation t [µs] r = 0.45677 8 9 10 11 −0.05 0 0.05 (b) Phase lin´eare t [µs] r = 0.26478 8 9 10 11 −0.05 0 0.05 (c) Phase dispersive t [µs] r = 0.08894 8 9 10 11 −0.05 0 0.05 r = 0.25686 (d) Olofsson t [µs] FIGURE 2.26 – Signaux temporels correspondant aux paramètres obtenus par évaluation non destructive (voir tableau 2.2) d’une plaque de polycarbonate d’épaisseur 10.2 mm et un transducteur à 2.25 MHz. (a) : Estimation sans atténuation, (b) : estimation avec atténuation linéaire et phase linéaire, (c) : estimation avec atténuation linéaire et phase dispersive, (d) : estimation avec le modèle d’Olofsson. ’–’ : données, ’- -’ : estimation, r : erreur (2.76). à la figure 2.17. Cela influe donc directement sur l’estimation sur-évaluée de la vitesse qui devrait être proche de la vitesse de groupe : 2273 m.s✁1 . De même que dans les parties précédentes, c’est le modèle avec atténuation en loi de puissance et phase dispersive qui fournit l’erreur la plus faible et qui peut donc être considéré comme le plus fiable dans l’estimation des paramètres dans un contexte d’évaluation non destructive. 2.3.5 Problème de diffraction des cibles : application aux trous à fond plat Nous nous intéressons ici à la fiabilité du modèle dans le cas où les échos proviennent de profils géométriques différents. C’est typiquement le cas dans un cadre de contrôle non destructif où il faut détecter des défauts de formes variées. Nous choisissons d’étudier un cas simple : le trou à fond plat (Flat Bottom Hole, FBH). Celui-ci est percé par la face arrière d’une plaque d’aluminium de 40 mm d’épaisseur. L’aluminium est reconnu pour être homogène et avoir une atténuation quasiment nulle [Selfridge 1985]. De cette façon, nous nous focalisons sur la diffraction en négligeant l’atténuation. Nous considérons le schéma de mesure de la figure 2.27. Le transducteur centré sur 5 MHz utilisé en mode pulse-echo est placé du coté opposé au FBH. Ce dernier est de diamètre 5 mm et de profondeur d ✏ 20 mm. 61CHAPITRE 2 : Le modèle direct 2 3 1 3 transducteur Plaque FBH d FIGURE 2.27 – Schéma de la mesure ultrasonore avec une plaque percée d’un trou à fond plat (FBH) par le fond. Les échos reçus par le capteur sont respectivement 1) l’écho de surface, 2) l’écho du FBH et 3) l’écho du fond de la plaque. Nous utilisons le logiciel CIVA [Mahaut et al. 2009] 4 pour simuler le signal acquis pour une telle mesure. La méthode de calcul utilisée est l’approximation de Kirchhoff, qui est une extension du principe de Huygens5 . Les données acquises sont représentées sur la figure 2.28, respectivement composées de l’écho de surface yf , de l’écho du FBH yfbh et de l’écho du fond de la plaque yb . Nous tra- çons également les spectres en module ⑤Yf ♣fq⑤ et ⑤Yfbh♣fq⑤. On observe un décalage vers les hautes fréquences de la forme d’onde et donc un effet passe-haut du FBH. Cela se confirme si on trace le rapport des modules (2.75) : ✁1④2d ln ♣⑤Yfbh♣fq⑤④⑤Yf ♣fq⑤q. Cet effet passehaut se retrouve dans la littérature lorsqu’on aborde la modélisation du signal réfléchi par un disque [Rhyne 1977, Fink et Cardoso 1984, Cassereau et al. 1988]. Une approximation linéaire de la division spectrale permet d’obtenir un coefficient d’atténuation négatif α0 ✏ ✁10.23 Np.MHz✁1 .m✁1 sous le modèle de l’équation (2.9) α♣fq ✏ exp ♣✁α0⑤f⑤zq. Ce caractère passe-haut dû à la réflexion sur le trou a été observé avec des données réelles acquises dans l’aluminium, pour plusieurs diamètres et profondeurs de trou. Cet exemple permet de montrer que la géométrie des défauts joue un rôle important dans la signature spectrale. Dans un contexte d’inversion, pour retrouver les positions des défauts, l’hypothèse d’invariance de la fonction de diffraction que nous avions supposée est incorrecte. Le modèle que nous avons développé est de ce fait applicable à des problèmes où les formes géomé- triques sont équivalentes. C’est le cas par exemple pour les surfaces planes que nous avons utilisées dans les parties 2.3.1 et 2.3.4, ou des défauts de grandes tailles. Une des perspectives de ce travail sera d’adapter le modèle à plusieurs signatures de défauts dans le but de les détecter. 4Voir également le site du logiciel CIVA : http://www-civa.cea.fr. 5Le principe de Huygens postule que chaque point d’un front d’onde peut être considéré comme un point source émettant une onde sphérique, et que le champ total est ensuite construit par la superposition des champs créés par chacun des points sources. 622.3 Exploitation des modèles 0 1 2 3 4 5 6 7 8 9 10 11 12 13 −15 −10 −5 0 5 10 15 t [µs] y (a) Donn´ees 0 1 2 −15 −10 −5 0 5 10 15 t [µs] yf (b) Echo de surface ´ 6 7 8 −2 −1 0 1 2 t [µs] yfbh (c) Echo du FBH ´ 2 3 4 5 6 7 8 0 0.5 1 f [MHz] |Yf (f)|, |Yfbh(f)| (d) Spectres en module surface FBH 2 3 4 5 6 7 8 −40 −20 0 20 40 f [MHz] [Np/m] (e) Division spectrale -10.23f − 1 2d ln (Yfbh(f)/Yf (f)) r´egression FIGURE 2.28 – Signaux reçus à partir d’une plaque d’aluminium contenant un trou à fond plat (Simulations CIVA). (a) : Données, (b) : écho de surface, (c) : écho du FBH, (d) : spectres en modules des échos, (e) : division spectrale et regression linéaire. 63Chapitre 3 Le problème inverse : la déconvolution parcimonieuse Sommaire Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.1 Approches paramétriques . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.1.1 Modèles de formes d’ondes . . . . . . . . . . . . . . . . . . . . 66 3.1.2 Méthodes locales d’optimisation . . . . . . . . . . . . . . . . . . 67 3.1.3 Quelques méthodes d’optimisation non-linéaire . . . . . . . . . . 69 3.1.4 Méthodes de type Espérance-Maximisation . . . . . . . . . . . . 71 3.2 Minimisation d’un critère pénalisé . . . . . . . . . . . . . . . . . . . . 73 3.2.1 Description du modèle direct . . . . . . . . . . . . . . . . . . . . 73 3.2.2 Inverse généralisée . . . . . . . . . . . . . . . . . . . . . . . . . 74 3.2.3 Régularisation par minimisation d’un critère pénalisé . . . . . . . 74 3.2.4 Réglage du paramètre de régularisation . . . . . . . . . . . . . . 79 3.3 Régularisation par la pseudo-norme `0 . . . . . . . . . . . . . . . . . 80 3.3.1 Formulation du problème d’optimisation . . . . . . . . . . . . . 80 3.3.2 Méthodes d’optimisation par une approche gloutonne . . . . . . . 81 3.3.3 L’agorithme Single Best Replacement . . . . . . . . . . . . . . . 84 3.3.4 Comparaison des algorithmes gloutons et SBR . . . . . . . . . . 86 3.4 Des algorithmes plus efficaces d’optimisation `0 . . . . . . . . . . . . 88 3.4.1 Mouvements plus complexes . . . . . . . . . . . . . . . . . . . . 88 3.4.2 Sélection dans une fenêtre . . . . . . . . . . . . . . . . . . . . . 89 3.4.3 Sélection basée sur un calcul d’auto-corrélation multidimensionnelle 92 65CHAPITRE 3 : Le problème inverse Introduction Le problème inverse consiste à estimer les temps de vol et les amplitudes des échos contenus dans le signal reçu par le capteur ultrasonore. Nous détaillons dans ce chapitre plusieurs méthodes pour résoudre ce problème. La première approche consiste à formuler le modèle comme la somme d’échos paramétrés et à identifier les paramètres par des méthodes d’optimisation de type moindres carrés non linéaires. Dans la section 3.1, nous donnons un aperçu des modèles et des méthodes d’estimation des paramètres. Comme nous l’avons vu dans le chapitre 2, le modèle direct peut se mettre sous une forme linéaire en discrétisant les domaines spatial et temporel. Le but est alors d’estimer un vecteur parcimonieux, c’est-à-dire qui contient peu de valeurs non nulles, permettant de localiser les temps de vol. Dans la section 3.2, nous montrons qu’une inversion directe ne permet pas d’atteindre ce but et présente des problèmes d’instabilité. Une solution efficace est alors de régulariser le problème inverse grâce à la minimisation d’un critère pénalisé qui favorise la parcimonie. Nous nous intéressons particulièrement dans la section 3.3 à la régularisation par une pseudo-norme `0. Cette norme n’est pas convexe et nécessite des heuristiques performantes d’exploration des solutions. Plusieurs algorithmes d’optimisation sont proposés dans cette section et sont comparés grâce à des exemples simulés et à des simulations de Monte-Carlo. 3.1 Approches paramétriques La façon qui semble la plus naturelle pour résoudre le problème inverse est de considérer un modèle analytique des échos et d’estimer les paramètres de ce modèle à partir des données [Demirli et Saniie 2001a]. L’utilisation des méthodes paramétriques a fait l’objet d’un stage ingénieur au sein de l’équipe ADTSI de l’IRCCyN [Rolland 2014]. Il a été consacré aux méthodes d’optimisation locales dans un contexte de contrôle non destructif par ultrasons. Cette partie reprend quelques éléments et résultats obtenus lors du stage. 3.1.1 Modèles de formes d’ondes Nous avons vu au chapitre 2 que le signal peut être modélisé par la somme de K échos à laquelle on ajoute un bruit gaussien b♣tq. Chaque écho s♣t, θkq est défini par un jeu de paramètres θk. Le modèle du signal reçu par le capteur est alors y♣tq ✏ ➳ K k✏1 s♣t, θkq b♣tq. (3.1) On notera Θ, le vecteur colonne qui représente l’ensemble des paramètres θk, tel que Θ ✏ rθ T 1 , . . . , θ T Ks T . Ce vecteur est l’inconnue du problème. Le modèle le plus utilisé dans la littérature est l’écho gaussien1 ou ondelette de Gabor [Demirli et Saniie 2000; 2001a], qui est une gaussienne modulée par un signal sinusoï- 1Dans la suite, nous utilisons cette forme d’onde pour simuler des signaux ultrasonores. Par ailleurs, nous utilisons le paramètre de facteur de largeur de bande BWRp détaillé dans l’annexe B.2 pour régler la variance des gaussiennes. Pour une bande passante à p dB ce lien s’écrit σ 2 f ✏ ✁ ♣BWRpf0q 2 8 ln ♣10p④20q avec p ➔ 0. 663.1 Approches paramétriques dal : s♣t, θq ✏ Ae✁α♣t✁τq 2 cos♣2πf0♣t ✁ τ q φq, (3.2) où A est l’amplitude de l’écho, τ est le temps de vol, α est relié à la largeur de la gaussienne, f0 est la fréquence centrale et φ est le décalage de phase. Ces paramètres forment θ ✏ rα τ f0 φ As qui est le jeu de paramètres à estimer pour un écho. D’autres modèles plus complexes existent, comme par exemple, une sinusoïde avec une enveloppe composée de la somme de gaussiennes [Demirli et Saniie 2001b], un chirp avec une enveloppe gaussienne [Lu et al. 2006], un chirp avec une enveloppe composée de la somme de gaussiennes [Demirli et Saniie 2009], un chirp avec une enveloppe asymétrique [Demirli et Saniie 2010]. Ces modèles avec davantage de paramètres permettent une plus grande flexibilité mais peuvent rendre le problème d’optimisation plus difficile à résoudre. 3.1.2 Méthodes locales d’optimisation L’objectif est de minimiser l’erreur entre les données y♣tq et le modèle au sens des moindres carrés. Pour obtenir une estimation des paramètres Θ, il faut résoudre le problème d’optimisation Θ♣ ✏ arg min Θ ✎ ✎ ✎ ✎ ✎ y♣tq ✁ ➳ K k✏1 s♣t, θkq ✎ ✎ ✎ ✎ ✎ 2 ✏ arg min Θ f♣Θq. (3.3) Pour des données à temps discret, où tn ✏ nTS avec 0TS la période d’échantillonnage, la fonction à minimiser est donc f♣Θq ✏ ➳ Ny n✏1 ✄ y♣tnq ✁ ➳ K k✏1 s♣tn, θkq ☛2 ✏ ✎ ✎ ✎ ✎ ✎ y ✁ ➳ K k✏1 s♣θkq ✎ ✎ ✎ ✎ ✎ 2 ✏ ⑥r♣Θq⑥2 , (3.4) où y est le vecteur des données, s♣θkq est le modèle pour l’écho k et r♣Θq est le résidu d’estimation (ce sont des vecteurs colonnes). La fonction f étant non-linéaire en fonction de Θ, l’équation (3.3) formule un problème d’optimisation des moindres carrés non-linéaire. Il est possible d’utiliser une méthode d’optimisation itérative qui tend à converger vers une solution locale. Ces algorithmes partent d’une solution initiale Θ♣0q et s’arrêtent lorsque la norme entre deux itérés est inférieure à une tolérance . Il est possible d’utiliser d’autres conditions d’arrêt comme lorsque la fonction à minimiser ne décroît plus ou lorsque la norme de son gradient est inférieure à une certaine valeur. La structure générale d’un algorithme itératif est donnée ici : • Initialisations : i ✏ 1, cvge ✏ 0, Θ♣0q • Tant que cvge ✏ 0 faire Θ♣iq ✏ Θ♣i✁1q ∆Θ si ✎ ✎ ✎ Θ♣iq ✁ Θ♣i✁1q ✎ ✎ ✎ ➔  cvge ✏ 1 sinon i ✏ i 1 fin si Fin tant que 67CHAPITRE 3 : Le problème inverse La différence entre les méthodes réside dans la façon dont est calculé ∆Θ à chaque itération. Cette grandeur détermine la convergence et la vitesse de celle-ci. Nous détaillons quelques algorithmes dans la partie 3.1.3. Ces algorithmes sont des méthodes d’optimisation locales en opposition aux méthodes globales qui tentent de résoudre un problème contenant plusieurs minima locaux. Nous n’abordons pas ce type de méthodes qui sont très coûteuses en temps de calcul. Étude de f en fonction des paramètres Pour illustrer la difficulté de résolution du problème d’optimisation des moindres carrés non-linéaire, nous étudions qualitativement l’évolution de la fonction à minimiser de l’équation (3.4) en fonction de chaque paramètre pour un modèle à un écho gaussien. Les données sont générées sans bruit suivant le modèle de l’équation (3.2) avec les paramètres αq ✏ 25 µs ✁2 , τq ✏ 1 µs, fq0 ✏ 5 MHz, φq ✏ 0 rad, Aq ✏ 1 et sont représentées sur la figure 3.1a. Les variations de f en fonction de chaque paramètre, avec les autres paramètres fixés à leurs 0 0.5 1 1.5 2 −1 −0.5 0 0.5 1 t [µs] (a) donn´ees y(t) = s(t, θ) 0 20 40 60 80 100 0 10 20 30 40 50 α (b) f(α, τ, ˇ ˇf0,φ, ˇ Aˇ) 0 0.5 1 1.5 2 0 20 40 60 80 100 τ (c) f(ˇα, τ, ˇf0,φ, ˇ Aˇ) 0 5 10 15 20 0 20 40 60 80 f0 (d) f(ˇα, τ, f ˇ 0,φ, ˇ Aˇ) −3 −2 −1 0 1 2 3 0 50 100 150 φ (e) f(ˇα, τ, ˇ ˇf0, φ,Aˇ) −5 0 5 0 200 400 600 800 1000 A (f) f(ˇα, τ, ˇ ˇf0,φ, Aˇ ) FIGURE 3.1 – Étude de la fonction (3.4) à minimiser par rapport à chaque paramètre (les autres paramètres sont fixés à leur vraie valeur), pour un modèle d’écho gaussien. (a) : Données, (b) : f en fonction de α, (c) : f en fonction de τ , (d) : f en fonction de f0, (e) : f en fonction de φ, (f) : f en fonction de A. La valeur minimale de la fonction est nulle et les vraies valeurs des paramètres sont représentées par des cercles. vraies valeurs, sont présentées sur les figures 3.1b-c-d-e-f. Le paramètre d’amplitude A étant linéaire par rapport au modèle, on obtient une forme quadratique, donc convexe (figure 3.1f). Les paramètres α, f0 et φ ne montrent pas de difficulté particulière non plus, car les fonctions correspondantes ont un seul minimum local. Elles ne sont cependant pas convexes. Il 683.1 Approches paramétriques faut noter que la dépendance en φ est périodique. Le problème vient essentiellement de la dépendance de la fonction par rapport au temps de vol τ qui a de nombreux minima locaux. Ceci est dû au caractère oscillant du modèle de formes d’onde, qui crée une répétition des minima locaux espacés de 1④f0. Une bonne initialisation sur le temps de vol est donc primordiale pour que l’algorithme ne converge pas vers un mauvais minimum local. Le problème est plus difficile lorsque le nombre d’échos augmente, de surcroît lorsqu’ils se mélangent. 3.1.3 Quelques méthodes d’optimisation non-linéaire Nous présentons ici quelques méthodes d’optimisation locales [Bazaraa et al. 2013]. Méthode du gradient La méthode du gradient ou méthode de la plus forte pente consiste à sélectionner les ité- rés dans la direction opposée au gradient, de manière à faire décroître la fonction au point courant. Si f est différentiable, l’estimation des paramètres à l’itération i est donc Θ♣iq ✏ Θ♣i✁1q ✁ α∇f♣Θ♣i✁1q q, (3.5) où α → 0 est le pas de descente et ∇f♣Θ♣i✁1q q est le gradient de f au point Θ♣i✁1q . Le gradient étant défini par ∇f♣Θq ✏ 2J T r♣Θq, avec J la matrice jacobienne telle que Jn,m ✏ ❇rn ❇Θm ✏ ✁ ❇ ➦K k✏1 s♣tn, θkq ❇Θm , (3.6) (où rn est le n ème élément de r♣Θq), on peut écrire Θ♣iq ✏ Θ♣i✁1q ✁ 2αJ T r♣Θq. (3.7) Le pas de descente peut être constant. Dans ce cas, l’algorithme converge lentement si le pas est trop petit ou s’éloigne du minimum s’il est trop grand. Il est de ce fait préférable de définir le pas à chaque itération par recherche de ligne, de façon à assurer une décroissance suffisante du critère à chaque itération [Chouzenoux 2010]. Cet algorithme est efficace car il garantit une décroissance de la fonction à minimiser. Il est cependant connu pour être lent à converger. D’autres extensions, comme le gradient conjugué, effectuent une recherche de pas efficace combinée au calcul du gradient (nous avons fait le choix de ne pas poursuivre l’étude ce genre d’approches). Méthode de Newton Si f est deux fois dérivable, un extremum local vérifie la condition nécessaire ∇f♣Θq ✏ 0. La méthode de Newton va permettre de chercher des solutions de ∇f♣Θq ✏ 0, autrement dit les points stationnaires de f. La loi des itérés est Θ♣iq ✏ Θ♣i✁1q ✁ H♣Θ♣i✁1q q ✁1∇f♣Θ♣i✁1q q ✏ Θ♣i✁1q ✁ 2H♣Θ♣i✁1q q ✁1J T r♣Θ♣i✁1q q, (3.8) où H♣Θ♣i✁1q q est la matrice hessienne formée des dérivées partielles secondes de f au point Θ♣i✁1q : Hn,m ✏ ❇2 fn④❇Θm❇Θn. Cet algorithme est rapide à converger mais nécessite une inversion de système à chaque itération. Des problèmes se posent alors lorsque la matrice H♣Θ♣i✁1q q est mal conditionnée. De plus, il ne garantit pas une convergence au minimum local car il peut se diriger vers un maximum local ou un point selle. 69CHAPITRE 3 : Le problème inverse Méthode de Gauss-Newton La méthode de Gauss-Newton est spécifique à la résolution de problèmes de moindres carrés non linéaires, dont l’équation (3.3) fait partie. Si on considère la linéarisation de l’équation (3.4) telle que f♣Θ ∆Θq ✓ ⑥r♣Θq ✁ J∆Θ⑥ 2 (r♣Θq est le résidu d’estimation), l’annulation du gradient de f♣Θ ∆Θq par rapport à ∆Θ aboutit à ∆Θ ✏ J T J ✟ J T r♣Θq. Si on se dirige dans le sens opposé au gradient, on obtient alors la solution au point courant Θ♣iq ✏ Θ♣i✁1q ✁ J T J ✟✁1 J T r♣Θ♣i✁1q q. (3.9) Cette approche peut être vue comme une approximation de la méthode de Newton dans laquelle la matrice hessienne H♣Θq est approchée par 2J T J, évitant ainsi le calcul des dérivées secondes. Tout comme l’algorithme de Newton, l’algorithme peut ne pas converger si J T J est mal conditionnée. Méthode de Levenberg-Marquardt La méthode de Levenberg-Marquardt se situe entre les méthodes du gradient et de GaussNewton. Le principe est de régulariser l’équation (3.9) de façon à stabiliser l’inversion Θ♣iq ✏ Θ♣i✁1q ✁ J T J λI ✟✁1 J T r♣Θ♣i✁1q q, (3.10) où λ → 0 est un paramètre de régularisation et I est la matrice identité. Lorsque λ tend vers zéro, la méthode tend vers celle de Gauss-Newton alors que quand λ est très grand, elle tend vers la méthode du gradient avec un pas α ✏ 1④2λ. Une autre version de l’algorithme utilise la diagonale de J T J à la place de la matrice identité. Le paramètre λ est modifié en permanence pour obtenir la valeur qui fait le plus décroître f. Comparaison des algorithmes en fonction de l’initialisation Nous utilisons ici les données contenant un seul écho non bruité présentées dans la partie 3.1.2, où les vrais paramètres sont notés θq ✏ r25, 1, 5, 0, 1s. Les algorithmes de Newton, Gauss-Newton et Levenberg-Marquardt sont utilisés avec plusieurs initialisations. Nous écartons la méthode du gradient qui est lente à converger. Les résultats sont regroupés dans le tableau 3.1. Les valeurs très proches de zéro indiquent la convergence au minimum global Initialisation θ0 τ ♣0q Newton Gauss-Newton Levenberg-Marquardt θq 2% 1.02 2.29. 10✁15 5.60. 10✁27 5.11. 10✁20 θq 3% 1.03 25.07 1.47. 10✁27 2.30. 10✁23 θq 5% 1.05 26.63 24.99 25.07 θq 7% 1.07 73.67 26.97 1.07. 10✁13 TABLE 3.1 – Valeurs de la fonction des moindres carrés à minimiser pour plusieurs méthodes d’optimisation et différentes valeurs d’initialisation. tandis que les valeurs supérieures à la vingtaine correspondent à des minima locaux (voir la figure 3.1 pour les variations de la fonction par rapport à chaque paramètre). Pour une initialisation très proche de la vérité (2 %), les trois méthodes convergent vers l’optimum. 703.1 Approches paramétriques Pour des valeurs légèrement plus éloignées (3 %), la méthode de Newton converge vers un minimum local. Les méthodes aboutissent toutes à un minimum local pour une mauvaise initialisation de 5 %. La méthode de Levenberg-Marquardt permet néanmoins de converger vers le minimum global dans certains cas malgré de mauvaises initialisations (7 %). La ré- gularisation établit à l’équation 3.10 permet de stabiliser l’inversion et, dans certains cas, de ne pas rester bloqué dans un minimum local. D’après cet exemple simple, où un seul écho est considéré, nous montrons que les approches d’optimisation sont très sensibles aux valeurs initiales des paramètres. Dans un contexte où plusieurs échos se mélangent, ces approches ne semblent pas robustes. 3.1.4 Méthodes de type Espérance-Maximisation L’algorithme Espérance-Maximisation (EM) (ou Expectation-Maximization en anglais) est une méthode itérative qui permet l’estimation de paramètres, sous un modèle de signaux superposés [Feder et Weinstein 1988], i.e. en adéquation avec l’équation (3.1). Il travaille ainsi en séparant le problème en plusieurs modes correspondant aux différents échos. Les données sont alors représentées par y ✏ ➦K i✏k wk où wk est la k ème contribution. L’algorithme est composé de deux étapes, une étape d’espérance (E) qui construit les différentes estimations w♣ k, et une étape de maximisation (M) qui consiste à estimer les paramètres θ♣k pour chaque w♣ k. L’étape M est effectuée grâce un algorithme local des moindres carrés non-linéaires (voir partie 3.1.3). Cet algorithme est connu pour être relativement lent à converger. Il faut noter que si tous les jeux de paramètres sont initialisés aux mêmes valeurs, les w♣ k et les θ♣k resteront identiques. L’algorithme Space Alternating Generalized EM (SAGE) [Ziskind et Wax 1988, Fessler et Hero 1994] est une légère amélioration de l’algorithme EM qui met à jour tous les θk juste après une étape M. Chung et Böhme [2001] ont montré que cela permet à l’algorithme de converger plus rapidement. Le détail de l’algorithme est donné ici • Initialisations : i ✏ 1, cvge ✏ 0, Θ♣0q ✏ rθ ♣0qT 1 , . . . , θ ♣0qT K s T • Tant que cvge ✏ 0 faire Pour k ✏ 1 à K faire Étape E : w ♣i✁1q k ✏ s♣θ ♣i✁1q k q 1 K ✁ y ✁ ➦k `✏1 s♣θ ♣iq ` ✁ ➦K `✏k1 s♣θ ♣i✁1q ` q ✠ Étape M : θ ♣iq k ✏ arg min θk ✎ ✎ ✎ w ♣i✁1q k ✁ s♣θkq ✎ ✎ ✎ 2 avec init. θ ♣i✁1q k fin pour Θ♣iq ✏ rθ ♣iqT 1 , . . . , θ ♣iqT K s T si ✎ ✎ ✎ Θ♣iq ✁ Θ♣i✁1q ✎ ✎ ✎ ➔  cvge ✏ 1 sinon i ✏ i 1 fin si fin tant que 71CHAPITRE 3 : Le problème inverse Demirli et Saniie [2001a;b] ont appliqué l’algorithme SAGE avec un modèle d’écho gaussien pour le contrôle non destructif par ultrasons. Dans [Demirli et Saniie 2001a], l’optimisation est réalisée avec cinq paramètres pour chaque écho et des initialisations arbitraires plutôt favorables. Dans [Demirli et Saniie 2001b], seuls deux paramètres sont utilisés – l’amplitude et le temps de vol – de façon à disposer d’un modèle convolutif de la forme y♣tq ✏ ➦ k Akhi♣t ✁ τkq. Sur la figure 3.2, nous montrons un exemple de déconvolution par les méthodes de Levenberg-Marquardt et SAGE (avec étape M réalisée pas la méthode de Levenberg-Marquardt). Les données sont composées de cinq échos de fréquence centrale 0 0.5 1 1.5 2 2.5 3 3.5 −1 −0.5 0 0.5 1 (a) Donn´ees et v´erit´e 0 0.5 1 1.5 2 2.5 3 3.5 −1 −0.5 0 0.5 1 (b) Initialisation 0 0.5 1 1.5 2 2.5 3 3.5 −1 −0.5 0 0.5 1 (c) Levenberg-Marquardt 0 0.5 1 1.5 2 2.5 3 3.5 −1 −0.5 0 0.5 1 (d) Levenberg-Marquardt 0 0.5 1 1.5 2 2.5 3 3.5 −1 −0.5 0 0.5 1 (e) SAGE 0 0.5 1 1.5 2 2.5 3 3.5 −1 −0.5 0 0.5 1 (f) SAGE FIGURE 3.2 – Déconvolution par des méthodes paramétriques. (a) : Données (–) et vé- rité (+), (b) : vérité (+) et initialisation (✍), (c) : données (–) et approximation par la méthode de Levenberg-Marquardt (- -), (d) : vérité (+) et estimation par la méthode de LevenbergMarquardt (✆), (e) : données (–) et approximation par l’algorithme SAGE (- -), (f) : vérité (+) et estimation par l’algorithme SAGE (✆). fixe 5 MHz. Les paramètres α ✏ 16 et φ ✏ 0 sont également fixés. Pour davantage de simplicité, le nombre d’échos recherchés est fixé à la vraie valeur. Il serait possible d’augmenter le nombre d’échos itérativement et d’utiliser un critère d’arrêt sur la norme du résidu ou grâce à un critère de sélection d’ordre [Stoica et Selén 2004]. L’étape d’initialisation des temps de vol et des amplitudes est réalisée grâce à un calcul d’enveloppe par transformée de Hilbert, puis par une détection de maxima. Cette étape permet de détecter correctement les échos séparés, mais elle faillit à détecter les échos mélangés (entre 2 et 2.5 µs). Nous utilisons ensuite les méthodes de Levenberg-Marquardt et SAGE pour estimer les temps de vol et amplitudes des échos. Les deux méthodes parviennent à estimer correctement les échos bien localisés à l’initialisation (deux à gauche et un à droite). En revanche, la méthode de Levenberg-Marquardt n’estime pas correctement les échos dans [2 µs 2.5 µs]. La méthode 723.2 Minimisation d’un critère pénalisé SAGE parvient à détecter un des deux échos. Par cet exemple simple, on observe que les méthodes paramétriques sont très dépendantes de l’initialisation et servent en fait à raffiner localement le résultat issu de l’estimation initiale. Pour remédier à ce genre de problème, [Demirli et Saniie 2001b] établissent des règles d’initialisation à partir de connaissances a priori sur l’objet inspecté. Par exemple, dans le cas du traitement de signaux issus de plaques homogènes (où on recherche des temps de vol régulièrement espacés), chaque nouvel écho est initialisé avec un écart de temps de vol constant par rapport à l’écho précédent. De plus, plusieurs initialisations différentes sont réalisées à chaque étape M pour augmenter les chances de converger vers le minimum global. Ces règles semblent délicates à appliquer pour traiter de façon robuste et automatique les signaux ultrasonores, qui plus est dans un contexte d’échos mélangés provenant d’une pièce inconnue. 3.2 La déconvolution parcimonieuse par minimisation d’un critère pénalisé 3.2.1 Description du modèle direct Pour éviter l’optimisation des paramètres d’un modèle non-linéaire sensible aux mauvaises initialisations qui aboutissent à des minima locaux, nous proposons une formulation s’appuyant sur un modèle linéaire. Nous avons vu dans la section 2.2 du chapitre 2 qu’il est possible d’aboutir à un tel modèle en discrétisant les domaines spatial et temporel. A partir de l’équation (2.48), nous considérons un modèle discret linéaire auquel un terme de perturbation est rajouté y ✏ Gx b, y P R Ny , G P R Ny✂Nx , x P R Nx , b P R Ny , (3.11) où y est le signal mesuré et x est l’inconnue du problème. La construction de la matrice G dépend du modèle physique considéré (se reporter à la partie 2.2). Le terme de perturbation b représente les erreurs de modèle, le bruit de mesure et les erreurs de discrétisation. Nous considérons ce terme comme un ensemble de réalisations aléatoires indépendantes, centrées, de même loi gaussienne de variance σ 2 b . Le signal y peut être caractérisé par un rapport signal sur bruit RSB défini par RSB ✏ 10 log ✂ P♣Gxq P♣bq ✡ , (3.12) où P♣Gxq est la puissance du signal non bruité P♣Gxq ✏ 1 Ny ⑥Gx⑥ 2 ✏ 1 Ny ♣Gxq T Gx, (3.13) et P♣bq est la puissance du bruit P♣bq ✏ 1 Ny ➳ Ny n✏1 brns 2 ✏ 1 Ny ⑥b⑥ 2 ÝÑNyÑ✽ σ 2 b . (3.14) Dans la suite de ce chapitre, nous approximons le RSB par RSB ✔ 10 log ✂ P♣Gxq σ 2 b ✡ . (3.15) 73CHAPITRE 3 : Le problème inverse 3.2.2 Inverse généralisée Une approche simple pour estimer x dans l’équation (3.11) revient à minimiser un critère des moindres carrés entre les données et le modèle : J ♣xq ✏ ⑥y ✁ Gx⑥ 2 . (3.16) Puisque le critère est quadratique et donc convexe, le minimum global est défini par l’annulation du gradient qui s’écrit : ∇J ♣xq ✏ ✁2GT y 2GTGx ✏ 0. (3.17) Si GTG est inversible, la solution qui annule le gradient est x♣ ✏ GTG ✟✁1 GT y. (3.18) En considérant xq comme la solution du système, nous obtenons l’estimation x♣ ✏ xq GTG ✟✁1 GT b. (3.19) On observe que le terme d’erreur par rapport à la vraie solution est une fonction linéaire du terme du bruit. Si le bruit est nul, l’estimation est optimale. Dans le cas contraire, l’erreur due au bruit peut être importante suivant la nature de l’inverse de GTG. En effet, lorsque la matrice GTG est mal conditionnée, son inverse prend de grandes valeurs qui ont pour effet d’amplifier le bruit. Pour illustrer ce propos, nous générons des données d’après le modèle y ✏ Gxq b, où G est la matrice de convolution associée à une réponse instrumentale gaussienne (f0 ✏ 5 MHz, BWR✁3 ✏ 0.3, φ ✏ 0), de nature passe-bande autour de f0. Nous calculons x♣ pour plusieurs niveaux de bruit : sans bruit, RSB ✏ 80 dB et RSB ✏ 50 dB. Les données et résultats d’estimation sont représentés sur la figure 3.3. D’après ces résultats, la solution est exacte dans le cas sans bruit. En présence d’un très faible bruit (RSB de 80 et 50 dB), la solution est fortement perturbée. Pour RSB ✏ 50 dB, le terme d’erreur dû au bruit est si important qu’il ne permet pas de distinguer le signal piqué, alors que le bruit n’est pas discernable dans les données. On observe ici très nettement le caractère instable de l’inversion directe dû à l’amplification des fréquences, hors de la signature instrumentale, contenues dans le bruit. Cette approche se révèle par conséquent difficilement applicable à des situation réelles où le bruit instrumental et les erreurs de modèles sont présents, et viennent de fait perturber l’estimation. Pour pallier ce problème nous allons introduire un principe de régularisation qui consiste à renforcer certaines propriétés de la solution [Idier 2001]. 3.2.3 Régularisation par minimisation d’un critère pénalisé Pour remédier au problème d’instabilité de la solution due au bruit, le critère des moindres carrés (3.16) est remplacé par un critère composite J ♣x, µq ✏ ⑥y ✁ Gx⑥ 2 µR♣xq, (3.20) où R♣xq est une fonction de régularisation qui favorise un a priori sur la solution x. Le paramètre µ règle le compromis entre l’adéquation aux données et le respect de cet a priori. Lorsque µ est nul, on retrouve le critère des moindres carrés (3.16), tandis que lorsque µ tend vers l’infini, seul l’a priori est considéré, la solution ne dépendant alors pas des données. 743.2 Minimisation d’un critère pénalisé 0 50 100 150 200 250 −0.5 0 0.5 (a) Donn´ees non bruit´ees 0 50 100 150 200 250 −0.5 0 0.5 (c) Donn´ees RSB = 80 dB 0 50 100 150 200 250 −0.5 0 0.5 (e) Donn´ees RSB = 50 dB 0 20 40 60 80 100 120 140 160 180 200 −2 −1 0 1 2 (b) v´erit´e et estimation xˇ xˆ 0 20 40 60 80 100 120 140 160 180 200 −2 −1 0 1 2 (d) v´erit´e et estimation 0 20 40 60 80 100 120 140 160 180 200 −40 −20 0 20 40 (f) v´erit´e et estimation FIGURE 3.3 – Déconvolution par une approche d’inverse généralisée. (a) : Données non bruitées, (b) : vérité (+) et estimation (–), (c) : données avec RSB ✏ 80 dB, (d) : vérité (+) et estimation (–), (e) : données avec RSB ✏ 50 dB, (f) : vérité (+) et estimation (–). Notion de parcimonie Le vecteur x est supposé parcimonieux (sparse en anglais), c’est-à-dire qu’il contient un grand nombre de valeurs nulles [Elad 2010]. À temps continu, il peut être appelé train d’impulsions (spike train). Le format vectoriel est obtenu grâce à la discrétisation du modèle présenté dans la partie 2.2. Le nombre de composantes non-nulles dans x correspond de ce fait au nombre de cibles présentes. Le vecteur x a donc une interprétation spatiale puisqu’il indique les positions et les amplitudes des cibles (voir chapitre 2) [Olofsson et Stepinski 2000]. Régularisation quadratique Le choix le plus simple est de prendre une régularisation quadratique appelée également régularisation de Tikhonov R♣xq ✏ ⑥x⑥ 2 . (3.21) Cette fonction offre l’avantage d’être convexe, c’est-à-dire qu’elle est unimodale (un seul minimum) et qu’elle est différentiable en tout point. En annulant le gradient ∇J ♣x, µq ✏ ✁2GT y 2GTGx 2µx ✏ 0, (3.22) on aboutit à la solution unique x♣ ✏ GTG µI ✟✁1 GT y. (3.23) 75CHAPITRE 3 : Le problème inverse La présence de la matrice identité a pour effet de réduire le conditionnement et donc de stabiliser l’inversion. Pour un modèle de convolution, cette approche peut être implémentée par un filtre de Wiener ou de Kalman [Fatemi et Kak 1980, Demoment et al. 1984, Jensen 1992]. Cette forme de pénalisation est pratique mais n’aboutit pas à des solutions piquées, car elle pénalise trop les grandes amplitudes [Idier 2001]. Régularisation convexe non quadratique L’utilisation d’autres fonctions de régularisation qui pénalisent moins les grandes amplitudes est possible, comme par exemple la norme `p pour 1 ➔ p ➔ 2 R♣xq ✏ ⑥x⑥ p p ✏ ➳ Nx n✏1 ⑤xrns⑤p , 1 ➔ p ➔ 2. (3.24) C’est une fonction convexe, continûment différentiable qui introduit un critère (3.20) convexe et différentiable également, ayant un minimum unique. En terme de solution algorithmique, il est par exemple possible d’utiliser un algorithme itératif de descente (voir partie 3.1.2), ou l’algorithme IRLS (Iterative Reweighted Least-Squares) [Yarlagadda et al. 1985]. Régularisation de norme `1 Une fonction qui pénalise moins les grandes amplitudes est la norme `1 [Taylor et al. 1979, Chen et al. 1998, Elad 2010] R♣xq ✏ ⑥x⑥1 ✏ ➳ Nx n✏1 ⑤xrns⑤. (3.25) Cette fonction convexe permet d’obtenir un minimum unique dans le critère (3.20). Le problème algorithmique vient de sa non différentiabilité en zéro, mais qui crée des solutions piquées [Moulin et Liu 1999]. Différentes formulations provenant de plusieurs communautés permettent de résoudre ce problème [Tibshirani 1994, Efron et al. 2002, Davies et Daudet 2003, Malioutov et al. 2005, Maria et Fuchs 2006, Tropp et Wright 2010]. Ce type de pénalisation a été très utilisée depuis une vingtaine d’années, notamment en géophysique [Taylor et al. 1979] et en contrôle non destructif [O’Brien et al. 1994]. La pénalisation étant appliquée linéairement aux amplitudes, les solutions ont tendance à contenir des pics multiples de faibles amplitudes en lieu et place d’un seul vrai pic [Soussen et al. 2012]. Pour cette raison, il est possible d’effectuer un seuillage pour supprimer ces nombreuses fausses détections. Régularisation convexe qui favorise la parcimonie Des fonctions de régularisation strictement convexes et différentiables ont été proposées pour favoriser la parcimonie, comme par exemple la fonction hyperbolique R♣xq ✏ ➳ Nx n✏1 ❛ xrns 2 δ 2 , δ → 0. (3.26) Cette dernière a le comportement de la norme `1 pour les grandes amplitudes et celui de la norme `2 pour les petites amplitudes. Elle permet ainsi de favoriser les solutions piquées tout en offrant l’avantage de la différentiabilité pour la mise en œuvre algorithmique. Lorsque δ tend vers zéro, la fonction tend vers la norme `1. 763.2 Minimisation d’un critère pénalisé Régularisation non-convexe qui favorise la parcimonie D’autres fonctions permettent de favoriser la parcimonie mais ne sont pas convexes, comme par exemple la norme `p définie à l’équation 3.24 avec 0 ➔ p ➔ 1 [Rao et Kreutz-Delgado 1999]. Ce type de régularisation produit des solutions parcimonieuses du fait de la nondifférentiablité en zéro [Moulin et Liu 1999]. Lorsque p tend vers zéro, cette dernière tend vers la pseudo-norme `0 qui compte le nombre de composantes non-nulles dans x ⑥x⑥0 ✏ ➳ Nx n✏1 ⑤xrns⑤0 , (3.27) avec par définition ⑤x⑤ 0 ✏ ✧ 0 si x ✏ 0 1 sinon . (3.28) Ce n’est pas exactement une norme car elle ne vérifie pas la propriété d’homogénéité2 : ❅λ ✘ 0 et ⑤λ⑤ ✘ 1 on a ⑥λx⑥0 ✘ ⑤λ⑤ ⑥x⑥0 . Nous utilisons ce type de régularisation et les méthodes pour résoudre le problème d’optimisation associé dans la section 3.3. Comparaison de plusieurs types de régularisation Plusieurs exemples de fonctions de régularisation sont exposés sur la figure 3.4. Pour les x R(x) ℓ2 ℓ1.5 hyperbolique x R(x) ℓ1 ℓ0.5 ℓ0 FIGURE 3.4 – Exemples de fonctions de régularisation R♣xq. A gauche : `2, `1.5, hyperbolique (❄ x 2 δ 2 avec δ ✏ 0.1), à droite : `1, `0.5, `0. données de la figure 3.3 avec RSB ✏ 20 dB, les résultats de déconvolution correspondant à plusieurs fonctions de régularisation sont présentés sur la figure 3.5. Les paramètres de régularisation sont réglés empiriquement de façon à obtenir une solution la plus proche possible de la vérité. La solution de la régularisation `2 est donnée par la formulation explicite (3.23). L’optimisation pour la régularisation `1 est effectuée par un algorithme de type homotopie [Malioutov et al. 2005]. La minimisation pour la régularisation hyperbolique est réalisée par l’algorithme IRLS [Yarlagadda et al. 1985]. Pour la régularisation `0, nous utilisons l’algorithme d’optimisation locale SBR [Soussen et al. 2011], que nous détaillons dans la partie 3.3.3. Comme vu dans la partie 3.2.2, l’inversion généralisée ne fournit pas de solution acceptable car elle amplifie le bruit. La régularisation quadratique permet de stabiliser la solution 2La propriété d’homogénéité d’une norme N est vérifiée par la condition ❅♣λ, xq ✘ 0, N ♣λxq ✏ ⑤λ⑤N ♣xq. 77CHAPITRE 3 : Le problème inverse 0 50 100 150 200 250 −0.5 0 0.5 (a) Donn´ees RSB = 20 dB 0 20 40 60 80 100 120 140 160 180 200 −1000 −500 0 500 1000 (b) Inversion g´en´eralis´ee 0 20 40 60 80 100 120 140 160 180 200 −1.5 −1 −0.5 0 0.5 1 1.5 (c) R´egularisation ℓ2 xˇ xˆ 0 20 40 60 80 100 120 140 160 180 200 −1.5 −1 −0.5 0 0.5 1 1.5 (d) R´egularisation ℓ1 0 20 40 60 80 100 120 140 160 180 200 −1.5 −1 −0.5 0 0.5 1 1.5 (e) R´egularisation hyperbolique 0 20 40 60 80 100 120 140 160 180 200 −1.5 −1 −0.5 0 0.5 1 1.5 (f) R´egularisation ℓ0 FIGURE 3.5 – Déconvolution avec plusieurs fonctions de régularisation. (a) : Données avec RSB ✏ 50 dB, (b) : déconvolution par inverse généralisée, (c) déconvolution par régularisation quadratique, (d) : déconvolution par régularisation de norme `1, (e) : déconvolution par régularisation hyperbolique, (f) : déconvolution par régularisation de norme `0. mais ne produit pas de solution piquée. La régularisation de norme `1 crée bien une solution piquée assez proche de la vérité. On remarque néanmoins quelques petits pics de faibles amplitudes. La régularisation hyperbolique fournit une solution piquée proche de celle obtenue avec une régularisation `1 mais avec des amplitudes non nulles sur tout le support de la solution. La solution fournie par la régularisation `0 permet de localiser parfaitement les pics. Il n’y a pas de valeurs de faible amplitude comparée à la norme `1 ou la norme hyperbolique. Ceci est dû à à la pénalisation de la cardinalité et non de l’amplitude. Lien entre régularisation et loi a priori Nous l’avons vu, la fonction de pénalisation a une influence directe sur l’allure de la solution. Ce lien peut être expliqué dans un cadre probabiliste [Idier 2001]. En effet, suivant la règle de Bayes, la loi a posteriori de x s’écrit pX⑤Y ♣x ⑤ yq ✾ L♣y ⑤ xqpX ♣xq, (3.29) où L♣y ⑤ xq est la vraisemblance qui s’exprime à partir de la loi du bruit et pX ♣xq est la loi a priori de x (nous notons respectivement X et Y les variables aléatoires liées à x et y). En supposant le bruit gaussien centré de variance σ 2 b , on peut écrire pX⑤Y ♣x ⑤ yq ✾ 1 σb ❄ 2π ✟Ny exp ✂ ✁ 1 2σ 2 b ⑥y ✁ Gx⑥ 2 ✡ pX ♣xq. (3.30) 783.2 Minimisation d’un critère pénalisé La solution au sens du maximum a posteriori (MAP) consiste donc à prendre une solution qui maximise cette expression, pour une certaine loi a priori sur x. En prenant l’opposé du logarithme, on aboutit à une expression à minimiser ✁ ln pX⑤Y ♣x ⑤ yq ✏ 1 2σ 2 b ⑥y ✁ Gx⑥ 2 ✁ ln pX ♣xq constante, (3.31) qui peut directement s’interpréter par le critère pénalisé J ♣x, µq ✏ ⑥y ✁ Gx⑥ 2 µR♣xq. La fonction de régularisation respecte alors R♣xq ✾ ✁ ln pX ♣xq. (3.32) Dans le tableau 3.2, nous indiquons plusieurs exemples de fonctions de régularisation et de lois a priori associées. La régularisation quadratique induit donc une loi a priori gaussienne tandis que la norme `1 correspond à une loi de Laplace. Régularisation quadratique hyperbolique `p `1 R♣xq ✏ x 2 ❄ x 2 δ 2 ⑤x⑤ p ⑤x⑤ Loi a priori gaussienne « hyperbolique » gaussienne généralisée loi de Laplace pX ♣xq✾ e ✁x 2 ④T e ✁ ❄ x2δ 2④T e ✁⑤x⑤ p ④T e ✁⑤x⑤④T TABLE 3.2 – Exemples de lien entre fonction de régularisation R♣xq et loi a priori pX ♣xq de paramètre T. La régularisation de pseudo-norme `0 est un cas limite de la norme `p, plus délicate à formaliser en termes de loi a priori en raison de la nature discrète de la pseudo-norme `0. On peut cependant la mettre en relation avec une loi Bernoulli-gaussienne [Kormylo et Mendel 1982]. Celle-ci définit la présence ou l’absence d’un pic en tout point par un ensemble de variables binaires indépendantes suivant une loi de Bernoulli de paramètre λ, représentant la probabilité a priori de présence d’un pic en chaque point. Les amplitudes de ces pics sont représentées par des lois indépendantes gaussiennes, centrées, de variances σ 2 a . Soussen et al. [2011] montrent alors que la loi a priori correspondant à la régularisation de pseudo-norme `0 est un cas limite d’une loi Bernoulli-gaussienne où σ 2 a tend vers l’infini. Le paramètre de régularisation est alors lié au paramètre de la loi de Bernoulli par µ ✏ 2σ 2 b ln ♣1④λ ✁ 1q. 3.2.4 Réglage du paramètre de régularisation Le choix du paramètre de régularisation est primordial pour obtenir une solution satisfaisante [Fortier 1990]. En général, on calcule une collection de solutions correspondant à un ensemble de valeurs de µ. Le principe est ensuite de choisir une seule solution. Très souvent, on part d’un µ très grand qui minimise uniquement R♣xq, et on le fait décroître. Dans le cas de la pénalisation `1 par exemple, la continuation homotopique permet de trouver les valeurs de µ optimales pour avoir des solutions différentes pour chaque valeur de µ [Malioutov et al. 2005]. D’une façon générale, pour les régularisations favorisant la parcimonie, les solutions ont une cardinalité croissante lorsque µ diminue. Si la variance du bruit σ 2 b est connue, on peut alors sélectionner la solution dont le résidu respecte la loi du bruit [Fortier 1990]. On pourra de ce fait choisir la solution dont la norme du résidu ⑥y ✁ Gx♣⑥ 2 avoisine la norme du bruit ⑥b⑥ 2 ✔ Nyσ 2 b . Il est également possible de 79CHAPITRE 3 : Le problème inverse choisir la solution à partir d’un nombre de pics désiré. D’autres méthodes telles que la validation croisée [Wahba 1977, Hong et al. 2003] et la validation croisée généralisée [Golub et al. 1979] permettent de sélectionner une solution à partir de prédictions. Il existe également des critères informationnels qui permettent de choisir un compromis entre adéquation aux données et cardinalité [Akaike 1974, Rissanen 1983, Fitzgibbon et al. 2004, Stoica et Selén 2004, Selén et Larsson 2006]. Un exemple avec une application en déconvolution parcimonieuse pour le CND apparaît dans [Soussen et al. 2012]. Le réglage du paramètre ne fait pas l’objet d’une étude particulière dans cette thèse. Dans les exemples que nous montrons, il a été choisi par essai-erreur ou par adéquation au bruit contenu dans les données lorsque la variance de la loi du bruit est connue. 3.3 Régularisation par la pseudo-norme `0 3.3.1 Formulation du problème d’optimisation L’utilisation de la régularisation par cette norme dans les approches pénalisées apparaît peu souvent [Zala 1992, Rao et Kreutz-Delgado 1999, Soussen et al. 2011]. C’est pourtant cette norme qui fournit le vrai critère de parcimonie de la solution. Habituellement, le problème d’optimisation se formule de façon alternative par min ⑥x⑥0 sous contrainte ⑥y ✁ Gx⑥ 2 ➔ , (3.33) ou min ⑥y ✁ Gx⑥ 2 sous contrainte ⑥x⑥0 ➔ K. (3.34) Ces problèmes combinatoires sont connus pour être NP-difficiles [Natarajan 1995]. Sous certaines conditions strictes [Donoho et Elad 2003], ils peuvent être approximés par un problème d’optimisation relaxé convexe, utilisant par exemple une norme `1 [Chen et al. 1998]. Plus rigoureusement, ces problèmes sont analogues à la minimisation d’un critère composite pénalisé par la pseudo-norme `0 [Soussen et al. 2011] qui définit le problème d’optimisation ♣P0q : x♣ ✏ arg min x ⑥y ✁ Gx⑥ 2 µ ⑥x⑥0 . (3.35) Nous utilisons cette forme de problème d’optimisation dans la suite de ce manuscrit. La méthode optimale pour résoudre le problème P0 defini par l’équation (3.35) consiste à tester toutes les combinaisons du support de x, c’est-à-dire 2 Nx combinaisons [Miller 2002]. Cet examen est impossible à appliquer en un temps réaliste lorsque la taille du problème est importante ou quand le nombre de composantes dépasse quelques unités. Des méthodes sousoptimales existent et mettent en œuvre des heuristiques pour explorer un nombre limité de solutions. On peut tout d’abord citer quelques algorithmes gloutons (ou forward), matching pursuit (MP), orthogonal matching pursuit (OMP) et orthogonal least squares (OLS), qui partent d’une solution nulle et ajoute un seul élément à chaque itération [Mallat et Zhang 1993, Pati et al. 1993, Chen et al. 1989, Blumensath et Davies 2007]. La différence entre ces algorithmes réside en leur façon de réaliser la sélection. Un algorithme inspiré de OLS, single best replacement (SBR), a été proposé par Soussen et al. [2011] pour directement traiter le problème d’optimisation `0 (P0). Nous décrivons ces approches qui ont une complexité croissante ci-après. 803.3 Régularisation par la pseudo-norme `0 3.3.2 Méthodes d’optimisation par une approche gloutonne Notations Nous notons Qi le support actif de la solution à l’itération i, qui est une sélection du support complet t1, . . . , Nx✉. La solution correspondante est x♣i . Nous notons également Gi , la matrice composée des colonnes de G indexées par Qi . Pour plus de clarté, on définit la valeur du critère pour un µ donné par la notation JQi ✏ J ♣x♣i , µq ✏ ⑥y ✁ Gx♣i⑥ 2 µ ⑥x♣i⑥0 . (3.36) Nous verrons que cette notation n’est pas exacte pour l’algorithme matching pursuit. Pour les autres méthodes et celles que nous proposerons, elle est correcte car un support Qi donné entraîne une seule solution x♣i . Le résidu à l’itération i est noté ri et vérifie ri ✏ y ✁ Gx♣i . (3.37) A l’initialisation des algorithmes (i ✏ 0), la solution est nulle : x♣0 ✏ 0, le support actif est vide : Q0 ✏ ❍ et le critère est JQ0 ✏ ⑥y⑥ 2 . Le résidu est alors égal aux données : r0 ✏ y. Paramètre de régularisation maximal Il existe un paramètre de régularisation maximal µmax au delà duquel la solution respecte uniquement l’a priori et est donc nulle. Pour le déterminer, il faut calculer le critère à la première itération (le même pour tous les algorithmes ajoutant un élément) qui s’écrit JQ1 ✏ ⑥y ✁ gna⑥ 2 µ, (3.38) où gna est une colonne de G pondérée par une amplitude a. L’amplitude optimale étant ♣a ✏ g T n y④ ⑥gn ⑥ 2 , le critère peut s’écrire (se référer à l’équation (2.85) du chapitre 2) JQ1 ✏ ⑥y⑥ 2 ✁ ✎ ✎g T n y ✎ ✎ 2 ⑥gn ⑥ 2 µ. (3.39) Pour que JQ1 soit inférieur à JQ0 , il faut donc que µ ✁ ⑥g T n y⑥ 2 ⑥gn⑥ 2 soit inférieur à zéro. Le paramètre maximal µmax vérifie donc [Soussen et al. 2011] µmax ✏ max n ⑤g T n y⑤ 2 ⑥gn ⑥ 2 . (3.40) Matching Pursuit et Orthogonal Matching Pursuit Matching Pursuit (MP) [Mallat et Zhang 1993] et Orthogonal Matching Pursuit (OMP) [Pati et al. 1993] sont des algorithmes gloutons initialement conçus pour l’approximation parcimonieuse des signaux [Elad 2010]. Le but de cette technique est de modéliser le plus fi- dèlement un signal avec quelques éléments d’un dictionnaire, référencés dans le vecteur x. Dans ce cas, le dictionnaire n’est pas imposé par le problème inverse, mais est choisi pour représenter au mieux les données. Les algorithmes ne cherchent pas à minimiser le critère pénalisé et sont arrêtés par la cardinalité de la solution (voir équation (3.34)) ou par la norme 81CHAPITRE 3 : Le problème inverse du résidu (voir équation (3.33)). Ils peuvent néanmoins servir à explorer des solutions afin de minimiser le critère pénalisé J ♣x, µq (P0). Pour ces deux algorithmes, la sélection de l’élément à rajouter se fait grâce à un filtre adapté sur le résidu ri (voir les détails dans la partie 2.3.1 du chapitre 2). A l’itération i, la position et l’amplitude optimales sont celles qui minimisent l’erreur entre le résidu et une colonne de G ♣n, ♣ ♣aq ✏ arg min n,a ⑥ri✁1 ✁ agn ⑥ 2 . (3.41) Nous avons vu dans l’équation (2.86) du chapitre 2 que la position optimale est celle qui maximise le produit scalaire entre une colonne de G et le résidu n♣ ✏ arg max n❘Qi✁1 ⑤g T n ri✁1⑤ ⑥gn ⑥ 2 . (3.42) L’amplitude optimale est alors ♣a ✏ g T n♣ ri✁1④ ⑥gn♣ ⑥ 2 . La différence entre MP et OMP vient de la façon dont est mise à jour la solution, et donc le résidu. Pour MP, seul l’élément n♣ est modifié à chaque itération x♣irn♣s ✏ x♣i✁1rn♣s ♣a, (3.43) tandis que pour OMP, on calcule une solution x♣i dont l’approximation Gx♣i est orthogonale au résidu pour tout le support actif x♣i ✏ GT i Gi ✟✁1 GT i y. (3.44) Autrement dit, toutes les amplitudes du support actif sont remises à jour à chaque itération pour OMP. Par conséquent, MP met à jour le résidu par ri ✏ ri✁1 ✁ ♣agn♣ , (3.45) et OMP par ri ✏ y ✁ Gix♣i . (3.46) En pratique, l’algorithme OMP est plus efficace que MP car il remet en cause toutes les amplitudes de la solution courante. Il est récapitulé dans la table 3.3. Orthogonal Least Squares Le principe de l’algorithme Orthogonal Least Squares (OLS) [Chen et al. 1989] est de considérer a priori des solutions dont les approximations sont orthogonales au résidu. Dans OLS, l’idée est donc d’inclure l’estimation des amplitudes optimales dans la sélection du nouveau support. A l’inverse, OMP effectue l’orthogonalisation a posteriori, une fois la sélection effectuée. L’ajout d’une composante n ❘ Qi✁1 correspond à Gi ✏ rGi✁1, gn s. Pour l’ajout de la composante n, nous notons alors la différence du critère (3.36) : ∆J n Qi✁1 ✜ JQi✁1❨n ✁ JQi✁1 ✏ µ ✎ ✎ ✎y ✁ Gi GT i Gi ✟✁1 GT i y ✎ ✎ ✎ 2 ✁ ✎ ✎ ✎y ✁ Gi✁1 GT i✁1Gi✁1 ✟✁1 GT i✁1y ✎ ✎ ✎ 2 , (3.47) 823.3 Régularisation par la pseudo-norme `0 Initialisations : Q0 ✏ ∅, G0 ✏ ∅, JQ0 ✏ ⑥y⑥ 2 , r0 ✏ y, i ✏ 1 Algorithme : 1) n♣ ✏ arg max n❘Qi✁1 ⑤g T n ri✁1⑤④⑥gn ⑥ 2 2) Gi ✏ rGi✁1, gn♣ s 3) x♣i ✏ GT i Gi ✟✁1 GT i y 4) ri ✏ y ✁ Gix♣i 5) Calculer JQi (équation (3.36)) 6) si JQi ➔ JQi✁1 Qi ✏ Qi✁1 ❨ n♣ i ✏ i 1 aller à 1) sinon terminer fin si Sortie : x♣i✁1 TABLE 3.3 – Description de l’algorithme Orthogonal Matching Pursuit (OMP). celle-ci ne dépendant que de G, des données y, de l’indice n et de µ. La sélection de la composante optimale n♣ revient donc à minimiser le critère (3.47) telle que n♣ ✏ arg min n❘Qi✁1 ∆J n Qi✁1 . (3.48) Le calcul du critère (3.47) peut se faire efficacement de façon récursive en utilisant le lemme d’inversion de matrice partitionnée ou la factorisation de Cholesky [Soussen et al. 2011]. Cette dernière met en jeu des inversions de systèmes triangulaires qui sont rapides à calculer comparé aux inversions de systèmes complets. La factorisation de Cholesky permet d’écrire GT i Gi ✏ LiL T i où Li est une matrice triangulaire inférieure [Golub et al. 1979]. Il est possible d’identifier Li en posant GT i Gi ✏ ✒ GT i✁1Gi✁1 GT i✁1gn h T nGi✁1 ⑥gn ⑥ 2 ✚ ✏ LiL T i ✏ ✒ Li✁1 0 v T n an ✚ ✒L T i✁1 vn 0 an ✚ , (3.49) où vn ✏ L ✁1 i✁1GT i✁1gn et an ✏ ❜ ⑥gn ⑥ 2 ✁ ⑥vn⑥ 2 . (3.50) La matrice Li peut donc être construite récursivement à chaque itération. Après quelques manipulations détaillées en annexe C.1, le critère (3.47) s’écrit [Soussen et al. 2011] ∆J n Qi✁1 ✏ µ ✁ v T nL ✁1 i✁1GT i✁1y ✁ g T n y ✟2 ⑥gn ⑥ 2 ✁ ⑥vn⑥ 2 . (3.51) 83CHAPITRE 3 : Le problème inverse En posant ui✁1 ✏ L ✁1 i✁1GT i✁1y, (3.52) le critère (3.47) se calcule simplement par ∆J n Qi✁1 ✏ µ ✁ v T nui✁1 ✁ g T n y ✟2 ⑥gn ⑥ 2 ✁ ⑥vn⑥ 2 . (3.53) La solution x♣ peut être calculée par x♣i ✏ GT i Gi ✟✁1 GT i y ✏ L T i ✟✁1 L ✁1 i GT i y ✏ L T i ✟✁1 ui . (3.54) Étant donné qu’elle n’est pas nécessaire pour calculer le critère à chaque itération, elle est plutôt calculée à la fin de l’algorithme pour économiser du temps de calcul. L’algorithme OLS est récapitulé dans le tableau 3.4. Initialisations : Q0 ✏ ∅, L0 ✏ ∅, u0 ✏ ∅, i ✏ 1 Algorithme : 1) Calcul de vn, ❅n ❘ Qi✁1 (3.50) 2) n♣ ✏ arg min n❘Qi✁1 ∆J n Qi✁1 (3.53) 3) si ∆J n♣ Qi✁1 ➔ 0 Qi ✏ Qi✁1 ❨ n♣ Mise à jour de Li (3.49), ui (3.52) i ✏ i 1 aller à 1) sinon terminer fin si Sortie : x♣i✁1 ✏ ♣L T i✁1 q ✁1ui✁1 TABLE 3.4 – Description de l’algorithme Orthogonal Least Squares (OLS). En terme de nombre de combinaisons testées, pour un support final Q, les algorithmes gloutons explorent ➦card♣Qq i✏0 ♣Nx ✁ iq combinaisons (très loin des 2 Nx ). 3.3.3 L’agorithme Single Best Replacement L’algorithme Single Best Replacement (SBR) [Soussen et al. 2011] est dérivé de l’algorithme Single Most Likely Replacement (SMLR) [Kormylo et Mendel 1982, Mendel 1983, Goussard et al. 1990], qui a été développé pour la déconvolution parcimonieuse sous un modèle Bernoulli-gaussien. SBR est un algorithme dédié à la résolution du problème pénalisé P0 établi à l’équation (3.35). Il est basé sur l’algorithme glouton OLS : à chaque itération, il 843.3 Régularisation par la pseudo-norme `0 propose un ajout suivant la minimisation du critère (3.47), et pour i → 2, le retrait d’une composante. Le mouvement qui est sélectionné est celui qui fait le plus décroître le critère. SBR est un algorithme bi-directionnel (ou forward-backward) car il permet d’ajouter et de retirer des éléments du support. Par rapport aux algorithmes gloutons, la robustesse vient du fait qu’une fausse détection peut être annulée grâce à la possibilité de retrait. Le test pour le retrait d’un élément d’indice m P Qi✁1 est réalisé en calculant [Reeves 1999, Miller 2002] ∆J ✁m Qi✁1 ✏ ♣x♣i✁1rmsq2 γm ✁ µ, (3.55) où γm est le mème élément de la diagonale de GT i✁1Gi✁1 ✟✁1 et x♣i✁1rms est le mème élément de la solution à l’itération i ✁ 1. Le détail des calculs qui aboutissent à l’équation (3.55) est donné en annexe C.2. Le meilleur retrait est donc m♣ ✏ arg min mPQi✁1 ∆J ✁m Qi✁1 . (3.56) On retrouve cette procédure de retraits dans les algorithmes backward [Reeves 1999, Couvreur et Bresler 2000, Miller 2002], qui partent d’un support complet (correspondant à la solution de l’inverse généralisée) et enlèvent un élément à chaque itération. Cette approche est performante seulement lorsque le niveau de bruit est très faible. Pour résumer, à chaque itération, le mouvement qui aboutit à la plus faible valeur parmi ∆J n Qi✁1 pour n ❘ Qi✁1 et ∆J ✁m Qi✁1 pour m P Qi✁1 est sélectionné. Il faut noter que le minimum de ∆J ✁m Qi✁1 étant supérieur à ✁µ, si ∆J n Qi✁1 ➔ ✁µ, alors les retraits n’ont pas besoin d’être testés. Le détail de l’algorithme est donné dans le tableau 3.5. Pour une solution de support Q, on ne peut pas, contrairement aux algorithmes gloutons, prédire le nombre de combinaisons testées tant les mouvements d’ajout et de retrait peuvent mener à différents chemins possibles. Néanmoins, si tous les retraits sont testés pour i → 2 et qu’aucun retrait n’est effectué, les nombre de combinaisons testées est card ➳ ♣Qq i✏0 ♣Nx ✁ iq card ➳ ♣Qq i✏3 ♣i ✁ 1q. (3.57) Ce nombre est le minimum de combinaisons testées et reste très faible par rapport aux 2 Nx combinaisons possibles. L’algorithme SBR est à l’origine de nos travaux méthodologiques qui sont détaillés dans la section 3.4. Nous proposons d’une part, des mouvements multiples locaux (dans une fenêtre), et d’autre part, un algorithme qui utilise une information d’autocorrélation pour sélectionner les meilleures positions. 85CHAPITRE 3 : Le problème inverse Initialisations : Q0 ✏ ∅, L0 ✏ ∅, u0 ✏ ∅, i ✏ 1 Algorithme : 1) Calcul de vn, ❅n ❘ Qi✁1 (3.50) 2) n♣ ✏ arg min n❘Qi✁1 ∆J n Qi✁1 (3.53) 3) Pour i → 2 : m♣ ✏ arg min mPQi✁1 ∆J ✁m Qi✁1 (3.55) 4) si min ✁ ∆J n♣ Qi✁1 , ∆J ✁m♣ Qi✁1 ✠ ➔ 0 Qi ✏ Qi✁1 ❨ n♣ ou Qi ✏ Qi✁1③m♣ Mise à jour de Li (3.49), ui (3.52) i ✏ i 1 aller à 1) sinon terminer fin si Sortie : x♣i✁1 ✏ ♣L T i✁1 q ✁1ui✁1 TABLE 3.5 – Description de l’algorithme Single Best Replacement (SBR). 3.3.4 Comparaison des algorithmes gloutons et SBR Nous comparons ici les algorithmes gloutons (MP, OMP, OLS) et SBR pour résoudre le problème P0 à partir de données simulées. Le signal xq P R 200 à estimer est composé de 9 pics, de positions uniformément réparties dans r1, . . . , Nxs et d’amplitudes suivant une distribution gaussienne. Les données sont générées avec le modèle y ✏ Gxq b où G est une matrice de convolution associée à une forme d’onde gaussienne illustrée sur la figure 3.6a (Nh ✏ 51). Le bruit b respecte un rapport signal à bruit fixé à 25 dB (voir partie 3.2.1). Les données sont représentées sur la figure 3.6b. Le paramètre de régularisation est déterminé par une procédure d’adéquation aux données. Il est fixé à sa valeur maximale µmax établi à l’équation (3.40) et est géométriquement diminué. Lorsque le niveau du résidu ⑥y ✁ Gx♣i⑥ 2 , obtenu par SBR, est inférieur à la vraie norme du bruit ⑥b⑥ 2 ✏ ⑥y ✁ Gxq⑥ 2 , le paramètre courant est retenu. Même si cette méthode favorise SBR, elle offre l’avantage de comparer toutes les méthodes pour une même valeur de µ. Dans la partie 3.4.3, nous réaliserons des simulations en faisant varier la valeur de µ pour chaque algorithme. Les cardinalités de la solution et normes du résidu en fonction de µ pour l’exemple présenté sont tracées sur la figure 3.7. Comme attendu, la cardinalité augmente lorsque la norme du résidu diminue. Ces grandeurs évoluent par sauts à cause de la nature discrète de la pénalisation `0. En effet, pour un support donné, la solution est identique menant à une norme de résidu constante (d’une manière similaire aux algorithmes gloutons). Les résultats de déconvolution obtenus par MP, OMP, OLS et SBR sont respectivement présentés sur les figures 3.6c-d-e-f. La valeur du critère pour chaque algorithme est également affichée. Nous observons que cette valeur décroît quand la complexité des algorithmes 863.3 Régularisation par la pseudo-norme `0 10 20 30 40 50 −1 −0.5 0 0.5 1 (a) Forme d’onde 50 100 150 200 250 −2 −1 0 1 2 (b) Donn´ees et v´erit´e 50 100 150 200 −2 −1 0 1 2 (c) MP J (xb, µ) = 0.58946 50 100 150 200 −2 −1 0 1 2 (d) OMP J (xb, µ) = 0.44553 50 100 150 200 −2 −1 0 1 2 (e) OLS J (xb, µ) = 0.31884 50 100 150 200 −2 −1 0 1 2 (f) SBR J (xb, µ) = 0.28921 FIGURE 3.6 – Déconvolution par régularisation `0. (a) : Réponse impulsionnelle instrumentale avec f0 ✏ 5 MHz, BWR✁3 ✏ 0.3, φ ✏ ✁π④4, (b) : données avec RSB ✏ 25 dB (–) et vérité (+), (c) : vérité (+) et estimation par MP (✆), (d) vérité (+) et estimation par OMP (✆), (e) : vérité (+) et estimation par OLS (✆), (f) : vérité (+) et estimation par SBR (✆). augmente : MP, OMP, OLS puis SBR. Pour résumer, MP est plus sensible aux fausses dé- tections à cause de la non remise en cause des amplitudes de la solution. OMP donne à peu près le même résultat avec quelques fausses détections en moins. Les algorithmes OLS et SBR s’en sortent mieux grâce à une sélection plus raffinée. Il y a un avantage pour SBR qui parvient à supprimer quelques fausses détections grâce à sa possibilité de retraits. Pour tous les algorithmes, il est important de noter que la détection des deux pics centraux – autour de l’indice 100 – n’est pas réalisée. Ces échecs sont dûs au fait que la somme des deux échos crée une forme d’onde proche de l’ondelette de référence. Pour des algorithmes à détection simple, la position trouvée se situe donc au milieu des deux vrais pics. A partir de cet exemple, on peut conclure que les approches basées sur la sélection d’une seule composante par itération trouvent leur limite lorsque les échos sont fortement entremêlés. Il est par conséquent intéressant d’étudier des approches à détections multiples. Dans la suite de ce chapitre, nous considérons des algorithmes dérivant d’OLS dans lesquelles les amplitudes sont marginalisées. C’est-à-dire, pour un support Qi donné, la solution est de fait x♣i ✏ GT i Gi ✟✁1 GT i y. Le problème revient par conséquent à explorer des supports. 87CHAPITRE 3 : Le problème inverse 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 0 2 4 6 8 10 12 µ (a) Cardinalit´e (SBR) vraie valeur valeur SBR 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 0 0.5 1 1.5 2 2.5 3 3.5 4 µ (b) Norme du r´esidu (SBR) vraie valeur valeur SBR FIGURE 3.7 – Sélection du paramètre de régularisation par respect de la norme du bruit correspondant à l’exemple de la figure 3.6 pour l’algorithme SBR. Le paramètre qui donne la norme du résidu juste en dessous de la norme du bruit est sélectionné. (a) Cardinalité en fonction de µ, (b) norme du résidu en fonction de µ. 3.4 Des algorithmes plus efficaces d’optimisation `0 3.4.1 Mouvements plus complexes Sur un schéma similaire à l’algorithme SBR, il est possible de considérer des ajouts multiples, des retraits multiples et des remplacements multiples. Par exemple, pour l’ajout de deux composantes n1, n2 ❘ Qi✁1 la différence de critère s’écrit ∆J n1n2 Qi✁1 ✏ JQi✁1❨tn1,n2✉ ✁ JQi✁1 ✏ JQi✁1❨n1 ✁ JQi✁1 JQi✁1❨tn1,n2✉ ✁ JQi✁1❨n1 ✏ ∆J n1 Qi✁1 ∆J n2 Qi✁1❨n1 , (3.58) avec ∆J n2 Qi✁1❨n1 ✏ JQi✁1❨tn1,n2✉ ✁ JQi✁1❨n1 . Le calcul de la différence du critère pour deux ajouts est donc équivalent à la somme de deux mouvements simples. Ce principe s’étend de ce fait pour : • K insertions de n1, . . . , nK ❘ Qi✁1 : ∆J n1,...,nK Qi✁1 ✏ ∆J n1 Qi✁1 ∆J n2 Qi✁1❨n1 . . . ∆J nK Qi✁1❨tn1,...,nK✁1✉ . (3.59) 883.4 Des algorithmes plus efficaces d’optimisation `0 • L retraits de m1, . . . , mL P Qi✁1 ∆J ✁m1,...,✁mL Qi✁1 ✏ ∆J ✁m1 Qi✁1 ∆J ✁m2 Qi✁1③m1 . . . ∆J mL Qi✁1③tm1,...,mL✁1✉ . (3.60) • K insertions et L retraits de n1, . . . , nK ❘ Qi✁1, m1, . . . , mL P Qi✁1 ∆J n1,...,nK✁m1,...,✁mL Qi✁1 ✏ ∆J n1 Qi✁1 ∆J n2 Qi✁1❨n1 . . . ∆J nK Qi✁1❨tn1,...,nK✁1✉ ∆J ✁m1 Qi✁1❨tn1,...,nK✉ ∆J ✁m2 Qi✁1❨tn1,...,nK✉③m1 . . . ∆J ✁mL Qi✁1❨tn1,...,nK✉③tm1,...,mL✁1✉ . (3.61) Le coût de calcul augmente inévitablement si on augmente K et L. Par conséquent, nous allons plutôt orienter nos approches vers une exploration d’un nombre limité de combinaisons à tester. 3.4.2 Sélection dans une fenêtre La sélection dans une fenêtre a été proposée par Kaaresen dans les algorithmes Iterative Window Maximization (IWM) [Kaaresen 1997; 1998]. Le principe est de proposer des ajouts, retraits et remplacements multiples dans une fenêtre centrée autour d’un pic donné. Kaaresen [1997] se limite néanmoins à des mouvements doubles dans une fenêtre de quelques éléments. Nous proposons d’étendre ce principe à des mouvements plus généraux pour des fenêtres plus larges, jusqu’à par exemple deux fois la taille de la forme d’onde de référence. Nous notons Nw la taille de la fenêtre de calcul des mouvements multiples. Nous proposons un premier algorithme, basé sur SBR, mais avec des mouvements simples et doubles. Nous l’appelons Single or Double Best Replacement (SDBR). Il inclut à chaque itération le test 1. des ajouts simples : ∆J n Qi✁1 pour n ❘ Qi✁1, 2. des ajouts doubles : ∆J n1n2 Qi✁1 pour n1, n2 ❘ Qi✁1 et n1 ↕ n2 ↕ n1 Nw, 3. des remplacements : ∆J n✁m Qi✁1 pour n ❘ Qi✁1 et m P Qi✁1, 4. des retraits simples : ∆J ✁m Qi✁1 pour m P Qi✁1, 5. des retraits doubles : ∆J ✁m1✁m2 Qi✁1 pour m1 P Qi✁1 et m2 P Qi✁1③m1. Cet algorithme a un coût de calcul bien plus important que SBR car il teste tous les doubles ajouts dans une fenêtre de taille Nw, les remplacements et les doubles retraits. Kaaresen [1997] à proposé deux algorithmes : IWM1 et IWM2. IWM1 réalise les mouvements 1, 3 et 4 dans une fenêtre de cinq éléments, tandis que IWM2 effectue les mouvements 2, 3 et 5 dans une fenêtre de dix éléments. IWM2 permet également de séparer un pic en deux et de fusionner deux pics, qui sont en fait des mouvements d’ordre trois. Nous proposons ici un algorithme plus général avec des mouvements d’ordre deux. 89CHAPITRE 3 : Le problème inverse 10 20 30 40 50 −1 −0.5 0 0.5 1 (a) Forme d’onde 50 100 150 200 250 −2 −1 0 1 2 (b) Donn´ees et v´erit´e 50 100 150 200 −2 −1 0 1 2 (c) SBR J (xb, µ) = 0.28921 50 100 150 200 −2 −1 0 1 2 (d) SDBR (Nw = 5) J (xb, µ) = 0.27601 50 100 150 200 −2 −1 0 1 2 (e) SDBR (Nw = 25) J (xb, µ) = 0.26451 50 100 150 200 −2 −1 0 1 2 (f) SDBR (Nw = 50) J (xb, µ) = 0.26451 FIGURE 3.8 – Déconvolution par régularisation `0. (a) : Réponse impulsionnelle instrumentale avec f0 ✏ 5 MHz, BWR✁3 ✏ 0.3, φ ✏ ✁π④4, (b) : données avec RSB ✏ 25 dB (–) et vérité (+), (c) : vérité (+) et estimation par SBR (✆), (d) vérité (+) et estimation par SDBR (✆), (e) : vérité (+) et estimation par SDBR (✆), (f) : vérité (+) et estimation par SDBR (✆). Résultats à partir d’un exemple simulé Nous reprenons l’exemple de la figure 3.6 où la taille de la réponse impulsionnelle h est Nh ✏ 51. La valeur de µ est déterminée de la même façon que dans la partie 3.3.4, par respect de la norme du bruit avec SBR. Les algorithmes SBR et SDBR avec plusieurs tailles de fenêtre Nw ✏ 5, 25, 50 sont utilisés et les résultats sont présentés sur la figure 3.8. Les résultats numériques – pour les algorithmes gloutons, SBR et SDBR – sont récapitulés dans le tableau 3.6. Comme attendu, le critère et la norme du résidu baissent quand la complexité de JQ (0.276) ⑥y ✁ Gx♣⑥ 2 (0.196) card♣Qq (9) N. comb. temps (ms) MP 0.589 0.421 19 3810 4.5 OMP 0.446 0.295 17 3447 6.1 OLS 0.319 0.203 13 2709 7.7 SBR 0.289 0.183 12 3734 11.3 SDBR (Nw ✏ 5) 0.276 0.187 10 80217 496.5 SDBR (Nw ✏ 25) 0.265 0.185 9 65815 221.5 SDBR (Nw ✏ 50) 0.265 0.185 9 87202 188.2 TABLE 3.6 – Résultats issus des figures 3.6 et 3.8. JQ : valeur finale du critère, ⑥y ✁ Gx♣⑥ 2 : norme du résidu, card♣Qq : nombre de composantes non nulles de la solution estimée, N. comb. : nombre de combinaisons testées par l’algorithme, temps : temps de calcul. Les valeurs en la vérité xq, lorsqu’elles sont connues, sont affichées entre parenthèses. 903.4 Des algorithmes plus efficaces d’optimisation `0 l’algorithme augmente tandis que le nombre de combinaisons testées et le temps de calcul croissent. La cardinalité décroît quand la complexité augmente, signe de meilleures détections. Contrairement à SBR, SDBR parvient à détecter les deux pics autour de l’indice 100 et donc à faire baisser la valeur du critère. Pour Nw ✏ 5, les deux derniers pics sont mal dé- tectés. Sur cette portion de signal, ce résultat est moins bon que pour SBR car le chemin pris par l’algorithme a été légèrement modifié et mène à une moins bonne estimation des deux derniers pics. Pour Nw ✏ 25 et Nw ✏ 50, la solution a le bon support et est très proche de la séquence attendue. La norme du résidu est même inférieure à la norme du bruit ⑥y ✁ Gxq⑥ 2 . Cette différence s’explique par le fait que le résidu ⑥y ✁ Gx♣⑥ 2 est par définition, pour un même support, le résidu de norme minimale. La différence entre les deux approches SDBR (Nw ✏ 25 et Nw ✏ 50), qui renvoient la bonne solution, est le temps de calcul. Ces bonnes solutions sont obtenues grâce à un plus grand nombre de combinaisons testées, qui correspond forcément à un plus grand temps de calcul. Résultats issus de simulations de Monte-Carlo Nous réalisons ici 1000 simulations de Monte-Carlo avec une configuration voisine de la précédente : 8 pics uniformément positionnés dans r1, . . . , Nxs et d’amplitudes de distribution uniforme entre ✁1 et 1, Nx ✏ 200, RSB ✏ 20 dB. Nous testons cette fois trois tailles de fenêtres Nw ✏ 2, 11, 51. Les résultats numériques sont récapitulés dans le tableau 3.7. Comme observé dans l’exemple précédent, la valeur moyenne du critère, la norme du résidu JQ ⑥y ✁ Gx♣⑥ 2 card♣Qq N. comb. temps (ms) MP 0.656 0.130 15.9 3227 10.0 OMP 0.551 0.115 13.9 2863 9.9 OLS 0.464 0.098 13.6 2825 14.3 SBR 0.439 0.098 11.9 3399 17.2 SDBR (Nw ✏ 2) 0.429 0.099 11.0 33782 289.9 SDBR (Nw ✏ 11) 0.427 0.099 10.5 49991 279.1 SDBR (Nw ✏ 51) 0.411 0.098 9.5 90010 207.5 TABLE 3.7 – Résultats issus de 1000 simulations de Monte-Carlo pour des données aléatoires du type de celles illustrées sur la figure 3.6 (8 pics). JQ : valeur finale moyenne du critère, ⑥y ✁ Gx♣⑥ 2 : norme moyenne du résidu, card♣Qq : nombre de composantes non nulles de la solution estimée, N. comb. : nombre moyen de combinaisons testées par l’algorithme, temps : temps de calcul moyen. et la cardinalité baissent quand la complexité de l’algorithme augmente. Le nombre de combinaisons testées, et par conséquent le temps de calcul, ont tendance à augmenter avec la complexité. On remarque néanmoins que SDBR, avec Nw ✏ 2, a un temps de calcul moyen plus important, dû à un plus grand nombre d’itérations : une fenêtre trop petite a pour effet de favoriser les ajouts et retraits multiples successifs, ne permettant pas de détections doubles importantes. L’algorithme SDBR est plus efficace mais requiert un temps de calcul plus de dix fois supérieur à SBR. Plutôt que d’orienter nos développements vers des approches avec des mouvements plus complexes, qui accroissent les temps de calcul, nous choisissons de restreindre le nombre de possibilités de la sélection grâce à des calculs préalables. C’est ce que nous détaillons dans la prochaine partie. 91CHAPITRE 3 : Le problème inverse 3.4.3 Sélection basée sur un calcul d’auto-corrélation multidimensionnelle Définition d’une fonction d’auto-corrélation multidimensionnelle (FACM) Plutôt que de choisir uniformément dans une fenêtre les éléments à rajouter ou à enlever, nous proposons de calculer les éléments les plus corrélés à la forme d’onde de référence de façon à réaliser un nombre limité de tests. Cette approche est adaptée aux formes d’ondes oscillantes car les éléments les plus corrélées ne sont pas forcément situés sur un continuum, comme pour l’approche utilisant une fenêtre. Le principe est d’utiliser une information de type auto-corrélation pour proposer les positions à sélectionner. Nous considérons une colonne gn♣ de G. Le principe est de calculer les indices n1, . . . , nK tels que gn♣ peut être approximé par gn♣ ✔ ➳ K k✏1 akgn♣nk , (3.62) pour nk ✘ 0 et ❅k ✘ `, nk ✘ n` . Les ak sont des facteurs d’amplitude. Pour cela, nous cherchons à minimiser une erreur au sens des moindres carrés définie par ✎ ✎ ✎ ✎ ✎ ✎ ✎ gnˆ ✁ ✏ gnˆn1 . . . gnˆnK ✘ ✔ ✖ ✕ a1 . . . aK ✜ ✣ ✢ ✎ ✎ ✎ ✎ ✎ ✎ ✎ 2 2 . (3.63) Pour plus de simplicité et pour pouvoir faire les calculs au préalable, nous nous plaçons dans le cas d’un modèle de convolution où G ✏ H. H est alors une matrice de convolution où les colonnes sont des répliques décalées de h. Même si nous perdons la généralité de l’approche, cette approximation peut demeurer valide pour une atténuation raisonnable. Pour calculer l’expression (3.63), nous considérons une version de la réponse impulsionnelle avec insertion de zéros hr ✏ r0Nh , hr0s, . . . , hrNh ✁ 1s, 0Nh s T , où 0Nh est un vecteur ligne composé de Nh zéros. Les versions décalées d’une valeur m sont ensuite définies par hr ♣mq ✏ r0Nhm, hr0s, . . . , hrNh ✁ 1s, 0Nh✁ms T avec m ✏ ✁Nh, . . . , Nh. H étant une matrice de convolution, la fonction de l’équation (3.63) à minimiser n’est plus dépendante de n♣ et devient ✎ ✎ ✎ ✎ ✎ ✎ ✎ hr ✁ ✑ hr ♣n1q . . . hr ♣nKq ✙ ✔ ✖ ✕ a1 . . . aK ✜ ✣ ✢ ✎ ✎ ✎ ✎ ✎ ✎ ✎ 2 2 . (3.64) Nous définissons la matrice Hr ♣n1...nKq ✏ ✑ hr ♣n1q , . . . , hr ♣nKq ✙ . Les amplitudes optimales ♣a1 . . . ♣aK peuvent alors être calculées par ✔ ✖ ✕ ♣a1 . . . ♣aK ✜ ✣ ✢ ✏ ✁ Hr ♣n1...nKqTHr ♣n1...nKq ✠✁1 Hr ♣n1...nKqThr. (3.65) 923.4 Des algorithmes plus efficaces d’optimisation `0 A partir de cette expression, on peut calculer la fonction de l’équation (3.64) qui ne dépend plus des amplitudes ✎ ✎ ✎ ✎ ✎ ✎ ✎ hr ✁ ✑ hr ♣n1q . . . hr ♣nKq ✙ ✔ ✖ ✕ a1 . . . aK ✜ ✣ ✢ ✎ ✎ ✎ ✎ ✎ ✎ ✎ 2 2 ✏ ✎ ✎ ✎ ✎ hr ✁ Hr ♣n1...nKq ✁ Hr ♣n1...nKqTHr ♣n1...nKq ✠✁1 Hr ♣n1...nKqThr ✎ ✎ ✎ ✎ 2 2 ✏ ✎ ✎ ✎ hr ✎ ✎ ✎ 2 2 ✁ ✎ ✎ ✎ ✎ Hr ♣n1...nKq ✁ Hr ♣n1...nKqTHr ♣n1...nKq ✠✁1 Hr ♣n1...nKqThr ✎ ✎ ✎ ✎ 2 2 . (3.66) La minimisation de cette expression revient en fait à maximiser une fonction, que nous appelons fonction d’auto-corrélation multidimensionnelle (FACM) FK♣n1 . . . nKq ✏ ✎ ✎ ✎ ✎ Hr ♣n1...nK ✁ Hr ♣n1...nKqTHr ♣n1...nKq ✠✁1 Hr ♣n1...nKqThr ✎ ✎ ✎ ✎ 2 2 . (3.67) Les valeurs élevées de cette fonction indiquent que les indices correspondants produisent une combinaison linéaire de formes d’onde décalées (3.62) proche de la forme d’onde initiale. Par exemple, pour K ✏ 1, la FACM est F1♣n1q ✏ ✎ ✎ ✎ ✎ hr ♣n1q ✁ hr ♣n1qT hr ♣n1q ✠✁1 hr ♣n1qT hr ✎ ✎ ✎ ✎ 2 2 ✏ ✎ ✎ ✎ hr ♣n1qT hr ✎ ✎ ✎ 2 ✎ ✎ ✎ hr ♣n1q ✎ ✎ ✎ 2 . (3.68) Maximiser F1♣n1q revient donc à maximiser ⑤hr ♣n1qT hr⑤, qui est la valeur absolue de l’autocorrélation de hr en n1. Nous illustrons des exemples de telles fonctions pour K ✏ 1 et K ✏ 2 sur les figures 3.9 et 3.10. Seuillage de la FACM Dans le but de réduire le nombre de combinaisons à tester, nous introduisons un seuillage de la FACM tel que FK♣n1 . . . nKq ➙ , (3.69) où  est la valeur du seuil de la FACM. Pour limiter encore le nombre de combinaisons à tester, nous écartons les indices qui donnent une amplitude de la FACM trop faible : ⑤♣ak♣n1, . . . , nKq⑤ ➙ δ ❅k ✏ 1, . . . , K. (3.70) Cela revient à supprimer par exemple le cas où l’une des amplitudes est quasiment nulle, et toutes les autres ont des amplitudes significatives. Ce point sera mis en évidence dans un exemple ci-après. Un exemple de fonction F1♣n1q, pour la forme d’onde de la figure 3.6, est représenté sur la figure 3.9b. On ne garde alors que les indices qui ont une valeur de FACM supérieure au seuil . Les amplitudes optimales sont tracées sur la figure 3.9c et celles supérieures a δ sont retenues. Nous observons ici que le seuillage sur les amplitudes n’a pas d’impact sur la sélection. Les positions sélectionnées qui vérifient F1♣n1q ➙  et ⑤♣a♣n1q⑤ 93CHAPITRE 3 : Le problème inverse −50 −40 −30 −20 −10 0 10 20 30 40 50 −0.4 −0.2 0 0.2 0.4 (a) Forme d’onde eh −50 −40 −30 −20 −10 0 10 20 30 40 50 0 0.2 0.4 0.6 0.8 1 n1 F1(n1) (b) Fonction F1(n1) fonction s´election seuil ǫ −50 −40 −30 −20 −10 0 10 20 30 40 50 0 0.2 0.4 0.6 0.8 1 n1 |ba(n1)| (c) Amplitudes optimales amplitudes s´election seuil δ FIGURE 3.9 – Exemple de FACM pour K ✏ 1 avec  ✏ 0.4 and δ ✏ 0.2. (a) : Forme d’onde de référence h♣, (b) : fonction F1♣n1q (–), seuil  (- -) et sélection F1♣n1q ➙  (✆), (c) : amplitudes optimales aˆ♣n1q, seuil δ (- -) et sélection (✆). sont représentées par des ronds blancs. Sur la figure 3.10, nous présentons la FACM associée à la même forme d’onde pour K ✏ 2. La fonction F2♣n1, n2q est représentée sur la figure 3.10a et les deux matrices d’amplitudes, ⑤♣a1♣n1, n2q⑤ et ⑤♣a2♣n1, n2q⑤, sont affichées sur les figures 3.10b et 3.10c. La sélection, après seuillage sur la fonction seulement, est repré- sentée par des pixels blancs sur la figure 3.10d. On observe ici qu’il y a des positions sélectionnées alors qu’elles correspondent à de très faibles amplitudes ⑤♣a1♣n1, n2q⑤ ou ⑤♣a2♣n1, n2q⑤. Cela prouve l’intérêt d’utiliser un seuillage sur l’amplitude également. C’est ce qui est réalisé sur la figure 3.10e où les positions correspondant aux amplitudes inférieures à δ sont retirées. La figure 3.10f montre les positions sélectionnées suite au retrait des doublons dûs à la symétrie entre les indices. Sur la figure 3.11, nous montrons le nombre de combinaisons sélectionnées en fonction du seuil , le seuil δ étant fixé à zéro. Comme attendu, le nombre de combinaisons sélectionnées augmente avec K. Nous proposons de choisir un nombre constant de combinaisons à tester pour chaque valeur de K. On peut par exemple définir un degré de complexité supplé- mentaire par rapport à SBR. Nous notons Nc le nombre de combinaisons supplémentaires pour chaque valeur de K. L’algorithme MOBR Nous proposons un algorithme appelé Multiple Optimized Best Replacement (MOBR) qui est similaire à SBR, mais qui propose également à chaque itération un ensemble de mouve- 943.4 Des algorithmes plus efficaces d’optimisation `0 n1 n2 (a) Fonction F2(n1, n2) −50 0 50 −50 0 50 0 0.5 1 n1 n2 (b) |ba1(n1, n2)| −50 0 50 −50 0 50 0 0.5 1 n1 n2 (c) |ba2(n1, n2)| −50 0 50 −50 0 50 0 0.5 1 n1 n2 (d) S´election 1 −50 0 50 −50 0 50 0 0.5 1 n1 n2 (e) S´election 2 −50 0 50 −50 0 50 0 0.5 1 n1 n2 (f) S´election 3 −50 0 50 −50 0 50 0 0.5 1 FIGURE 3.10 – Exemple de FACM pour K ✏ 2 avec  ✏ 0.4 and δ ✏ 0.2. (a) : fonction F2♣n1, n2q, (b) : amplitudes optimales ⑤♣a1♣n1, n2q⑤, (c) : amplitudes optimales ⑤♣a2♣n1, n2q⑤, (d) : sélection sur la fonction F2♣n1, n2q ➙ , (e) : sélection sur la fonction F2♣n1, n2q ➙  et les amplitudes ⑤♣a1♣n1, n2q⑤ ➙ δ et ⑤♣a2♣n1, n2q⑤ ➙ δ, (f) : suppression des doublons à partir de (e). 95CHAPITRE 3 : Le problème inverse 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 20 40 60 80 100 ǫ (a) K = 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 1000 2000 3000 4000 5000 ǫ (b) K = 2 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.5 1 1.5 2 x 105 ǫ (c) K = 3 FIGURE 3.11 – Nombre de combinaisons retenues à partir de la FACM en fonction du seuil  pour (a) K ✏ 1, (b) K ✏ 2 et (c) K ✏ 3 (avec δ ✏ 0). ments à K composantes basé sur le calcul de la FACM (équation (3.67)). Les tests des ajouts et retraits simples sont identiques à SBR. Néanmoins, lorsqu’un indice n♣ est ajouté, nous proposons deux types de mouvements. Dans un premier temps, il est possible de rajouter K ✁ 1 composantes à n♣, ce qui se traduit en terme de support par Qi ✏ Qi✁1 ❨ tn, ♣ n♣ n1, . . . , n♣ nK✁1✉ . (3.71) La seconde possibilité est de remplacer n♣ par K contributions telles que Qi ✏ Qi✁1 ❨ tn♣ n1, . . . , n♣ nK✉ . (3.72) Pour une valeur de K, les indices correspondants sont calculés à partir de la FCAM FK♣n1 . . . nKq. Une description de l’algorithme est donnée dans le tableau 3.8. L’algorithme MOBR est plus complexe que SBR puisqu’il autorise des ajouts multiples après la phase d’un ajout unique. Résultats à partir d’un exemple simple Nous reprenons l’exemple de la figure 3.6 où le paramètre µ est réglé par SBR pour respecter la norme du bruit (voir partie 3.3.4). L’algorithme MOBR est utilisé avec K ✏ 1 et K ✏ 2, avec  ✏ 0.9, 0.7, 0.5 et δ ✏ 0.1. Les résultats de déconvolution sont affichés sur la fi- gure 3.12. On remarque que les valeurs du critère sont inférieures à celle de SBR et baissent quand  diminue. En termes de détection des pics, les algorithmes MOBR fournissent de meilleures solutions que SBR, MOBR pour  ✏ 0.5 fournissant une solution proche de la 963.4 Des algorithmes plus efficaces d’optimisation `0 Initialisations : Q0 ✏ ∅ pour K = 1 à Kmax faire ❅k P r1, . . . , Ks : n1 . . . nK P tFK♣n1 . . . nKq ➙  & ♣ak♣n1 . . . nKq ➙ δ✉ fin pour i ✏ 1 Algorithme : 1) calculer n♣ ✏ arg min n❘Qi✁1 ∆J n Qi✁1 pour K = 1 à Kmax faire 2) Proposer Qi ✏ Qi✁1 ❨ tn, ♣ n♣ n1, . . . , n♣ nK✁1✉ 3) Proposer Qi ✏ Qi✁1 ❨ tn♣ n1, . . . , n♣ nK✉ fin pour 4) Calculer m♣ ✏ arg min mPQi✁1 ∆J ✁m Qi✁1 choisir le mouvement qui minimise JQi parmi 1, 2, 3, 4 si JQi ➔ JQi✁1 mettre à jour Qi i ✏ i 1 aller à 1) sinon terminer fin si Sortie : x♣i TABLE 3.8 – Description de l’algorithme Multiple Optimized Best Replacement (MOBR). JQ (0.276) ⑥y ✁ Gx♣⑥ 2 (0.196) card♣Qq (9) N. comb. temps (ms) SBR 0.289 0.183 12 3734 11.3 SDBR (Nw ✏ 5) 0.276 0.187 10 80217 496.5 SDBR (Nw ✏ 25) 0.265 0.185 9 65815 221.5 SDBR (Nw ✏ 50) 0.265 0.185 9 87202 188.2 MOBR ( ✏ 0.90) 0.280 0.173 12 3667 49.4 MOBR ( ✏ 0.70) 0.278 0.180 11 5336 147.7 MOBR ( ✏ 0.50) 0.265 0.185 9 3840 156.1 TABLE 3.9 – Résultats issus des figures 3.6, 3.8 et 3.12. Les valeurs réélles, lorsqu’elles sont connues, sont affichées entre parenthèses. séquence attendue. Des résultats numériques associés sont récapitulés dans le tableau 3.9. Les algorithmes MOBR ont un niveau de performance équivalent aux algorithmes SDBR, pour beaucoup moins de combinaisons testées et des temps de calcul inférieurs. Le com- 97CHAPITRE 3 : Le problème inverse 10 20 30 40 50 −1 −0.5 0 0.5 1 (a) Forme d’onde 50 100 150 200 250 −2 −1 0 1 2 (b) Donn´ees et v´erit´e 50 100 150 200 −2 −1 0 1 2 (c) SBR J (xb, µ) = 0.28921 50 100 150 200 −2 −1 0 1 2 (d) MOBR (ǫ = 0.9) J (xb, µ) = 0.27955 50 100 150 200 −2 −1 0 1 2 (e) MOBR (ǫ = 0.7) J (xb, µ) = 0.27805 50 100 150 200 −2 −1 0 1 2 (f) MOBR (ǫ = 0.5) J (xb, µ) = 0.26451 FIGURE 3.12 – Déconvolution par régularisation `0. (a) : Réponse impulsionnelle instrumentale avec f0 ✏ 5 MHz, BWR✁3 ✏ 0.3, φ ✏ ✁π④4, (b) : données avec RSB ✏ 25 dB (–) et vérité (+), (c) : vérité (+) et estimation par SBR (✆), (d) vérité (+) et estimation par MOBR pour  ✏ 0.9 (✆), (e) : vérité (+) et estimation par MOBR pour  ✏ 0.7 (✆), (f) : vérité (+) et estimation par MOBR pour  ✏ 0.5 (✆). promis entre nombre de combinaisons testées et temps de calcul est néanmoins en défaveur de MOBR, ce que nous attribuons à l’implémentation Matlab. En effet, la mise en œuvre de MOBR, qui doit réaliser une recherche et faire des tests sur des segments de positions, est plus lente que SDBR. Nous reviendrons sur ce constat dans la prochaine partie où nous réalisons des simulations de Monte-Carlo. Résultats issus de simulations de Monte-Carlo Dans cette partie, nous réalisons 5000 simulations de Monte-Carlo. Nous choisissons une séquence xq P R 200 composée de 6 pics, de positions aléatoires uniformément réparties et d’amplitudes aléatoires uniformes entre ✁1 et 1. Nous utilisons les algorithmes gloutons (MP, OMP, OLS), SBR, SDBR avec Nw ✏ 25, 50 et MOBR avec un nombre de combinaisons supplémentaires Nc ✏ 20, 200, K ✏ 1 et K ✏ 2. Les données sont générées avec un bruit gaussien (RSB ✏ 25 dB). Les données sont divisées par ❄ µmax pour avoir une nouvelle valeur maximale µmax ✏ 1 au-delà de laquelle la solution est nulle (voir équation (3.40)). Afin de comparer équitablement les algorithmes, plusieurs valeurs de µ ↕ 1 sont utilisées. Nous traçons plusieurs résultats en fonction de µ sur la figure 3.13. La valeur finale du critère en fonction de µ est tracée sur la figure 3.13a pour tous les algorithmes. Les algorithmes ayant les plus faibles valeurs de critère sont SDBR et MOBR, suivis de SBR et OLS. A partir des valeurs du cri- 983.4 Des algorithmes plus efficaces d’optimisation `0 −5 −4 −3 −2 −1 0 −2.5 −2 −1.5 −1 −0.5 0 0.5 log (µ) log J (bx, µ) (a) Crit`ere −5 −4 −3 −2 −1 0 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 log (µ) kˇx − bxk / kˇxk (b) Erreur sur xb −5 −4 −3 −2 −1 0 1 2 3 4 5 6 7 8 log (µ) (c) Classement −5 −4 −3 −2 −1 0 0 5 10 15 20 25 30 log (µ) Card( bx) (d) Cardinalit´e MP OMP OLS SBR SDBR (Nw = 25) SDBR (Nw = 50) MOBR (Nc = 20) MOBR (Nc = 200) FIGURE 3.13 – Résultats issus de simulations de Monte-Carlo en fonction du paramètre de régularisation µ (en echelle logarithmique). (a) : Critère pénalisé final J ♣x♣, µq, (b) : erreur de x♣ par rapport à xq, (c) : classement des algorithmes en fonction du critère pénalisé, (d) : cardinalité des solutions x♣. tère pour chaque algorithme, un classement moyen est établi sur la figure 3.13c (le premier ayant la plus faible valeur de critère). Comme attendu avec les valeurs des critères, l’ordre du classement est le suivant : SDBR, MOBR, SBR, OLS, OMP, MP. Sur la figure 3.13b, nous traçons l’erreur de x♣ par rapport à xq en fonction de µ. Ces courbes respectent les ré- sultats établis précédemment. Pour les méthodes OLS, SBR, MOBR et SDBR, on remarque que les valeurs optimales de µ se situent à peu près au même endroit (✒ 10✁3.5 ). On peut distinguer quatre classes de méthodes : SDBR, MOBR, SBR/OLS et OMP/MP. Les cardinalités des solutions sont également tracées sur la figure 3.13d et baissent quand la complexité de l’algorithme augmente. Un algorithme peu performant a en effet tendance à favoriser de nombreuses fausses détections. Sur les figures 3.14a et 3.14b sont tracés le temps de calcul ainsi que le nombre de combinaisons testées en fonction de µ. On remarque que les deux algorithmes MOBR ont un temps de calcul intermédiaire entre SBR et SDBR. Le nombre de combinaisons testées est lui du même ordre de grandeur que SBR. Nous traçons également, sur les figures 3.14c et 3.14d, l’erreur sur x♣ en fonction du temps de calcul et du nombre de combinaisons testées. 99CHAPITRE 3 : Le problème inverse Pour Nc ✏ 20, on remarque que les performances de MOBR sont légèrement inférieures à −5 −4 −3 −2 −1 0 0 20 40 60 80 100 120 140 160 180 log (µ) t [ms] (a) Temps de calcul −5 −4 −3 −2 −1 0 2 2.5 3 3.5 4 4.5 5 5.5 log (µ) log(Nb. comb.) (b) Nombre de combinaisons test´ees −1 −0.5 0 0.5 1 1.5 2 2.5 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 (c) Erreur sur xb log(temps de calcul) kˇx − bxk / kˇxk MP OMP OLS SBR SDBR (Nw = 25) SDBR (Nw = 50) MOBR (Nc = 20) MOBR (Nc = 200) 2 2.5 3 3.5 4 4.5 5 5.5 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 (d) Erreur sur xb log(nombre de combinaisons) kˇx − bxk / kˇxk FIGURE 3.14 – Résultats des temps de calcul et du nombre de combinaisons testées issus de simulations de Monte-Carlo pour chaque algorithme. (a) : Temps de calcul est fonction de µ, (b) : nombre de combinaisons testées en fonction de µ, (c) : Erreur sur x♣ en fonction du temps de calcul, (d) : erreur sur x♣ en fonction du nombre de combinaisons testées. celles de SDBR, mais pour un temps de calcul inférieur et un nombre de combinaisons testées de l’ordre de SBR ou OLS. Pour Nc ✏ 200, le temps de calcul est légèrement inférieur à celui de SDBR, alors que le nombre de combinaisons testées est bien inférieur. Nous attribuons cette différence à l’implémentation sous Matlab. Comme évoqué plus haut, les recherches et indexations des différentes positions dans MOBR sont plus lentes que pour SDBR. Ce dernier teste en effet de façon brute des plages « continues » d’indices alors que MOBR exploite des listes d’indices. De plus, l’algorithme MOBR fonctionne pour n’importe quelle valeur de K alors que SDBR est adapté pour K ✏ 2. Nous sommes convaincus qu’une implémentation sous un autre langage serait bénéfique pour les approches de type MOBR. Nous avons donc montré qu’il est possible d’obtenir des performances plus élevées que SBR pour un nombre de combinaisons testées du même ordre de grandeur. L’approche MOBR explore en effet une quantité limitée de supports grâce à la proposition de mouvements adaptés basée sur la connaissance a priori de la fonction d’auto-corrélation multidimensionnelle, qui ne dépend que de la réponse impulsionnelle. 100Chapitre 4 Déconvolution parcimonieuse sur-échantillonnée Sommaire Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 4.1 Modèle sur-échantillonné et MISO . . . . . . . . . . . . . . . . . . . . 102 4.1.1 Convolution discrète sur-échantillonnée . . . . . . . . . . . . . . 102 4.1.2 Système MISO . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 4.2 Facteur de sur-échantillonnage . . . . . . . . . . . . . . . . . . . . . . 104 4.3 Algorithmes de déconvolution . . . . . . . . . . . . . . . . . . . . . . 105 4.3.1 Calcul rapide de la convolution discrète . . . . . . . . . . . . . . 106 4.3.2 Détails de mise en œuvre des algorithmes . . . . . . . . . . . . . 107 4.4 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 4.4.1 Outils de mesure de l’erreur d’estimation . . . . . . . . . . . . . 108 4.4.2 Résultats issus de données simulées . . . . . . . . . . . . . . . . 110 4.4.3 Simulations de Monte-Carlo . . . . . . . . . . . . . . . . . . . . 112 4.4.4 Résultats expérimentaux . . . . . . . . . . . . . . . . . . . . . . 113 Introduction Dans ce chapitre, nous nous plaçons dans le cas d’un modèle de convolution continue entre un train d’impulsions et la réponse instrumentale, le but étant d’identifier les temps d’arrivée et les amplitudes des échos. Le train d’impulsions contient donc des pics qui ont des positions temporelles continues. Grâce à un modèle de convolution discrète, l’approche classique permet de restituer un train d’impulsions à la résolution des données, i.e. la période d’échantillonnage. Nous proposons dans ce chapitre de discrétiser la convolution continue de façon plus précise grâce à un sur-échantillonnage du modèle. On peut alors estimer le train d’impulsions à une résolution plus fine que celle des données. Dans la section 4.1, le modèle sur-échantillonné est présenté. Nous montrons qu’il est équivalent à un système à entrées multiples et sortie unique (Multiple Input Single Output), 101CHAPITRE 4 : Déconvolution parcimonieuse sur-échantillonnée où chaque voie est un filtre numérique de réponse impulsionnelle finie. Dans la troisième section, nous donnons un éclairage sur le réglage du facteur de sur-échantillonnage. Nous proposons ensuite d’adapter quelques algorithmes de déconvolution parcimonieuse pour les systèmes MISO dans la section 4.3. Enfin, la section 4.4 présente des résultats de déconvolution parcimonieuse avec des données synthétiques et réelles. Ce chapitre est en partie tiré des publications [Carcreff et al. 2012], [Carcreff et al. 2013a] et [Carcreff et al. 2013b]. 4.1 Modèle sur-échantillonné et système MISO 4.1.1 Convolution discrète sur-échantillonnée Pour un modèle sans atténuation, nous avons montré dans la section 2.2 que les données pouvaient être modélisées par la convolution continue y♣tq ✏ ➺ τ h♣t ✁ τ qx♣τ qdτ, (4.1) où h♣tq est la réponse instrumentale1 et x♣tq est le train d’impulsions à estimer. Pour des données à temps discret yrns ✏ y♣nTSq avec TS la période d’échantillonnage, une discrétisation de l’intégrale par la méthode des rectangles avec un pas ∆t aboutit à yrns ✏ ∆t ➳ m h♣nTS ✁ m∆tqx♣m∆tq. (4.2) Dans le modèle classique de convolution discrète, ∆t est égal à la période d’échantillonnage. Le vecteur x a alors la même résolution que les données. Il est néanmoins possible de considérer un pas de discrétisation plus précis ∆t ✏ TS④K où K → 1 est un facteur de sur-échantillonnage. En incluant la constante ∆t dans x, on peut dans ce cas écrire le modèle des données à temps discret sous la forme yrns ✏ ➳ m hrnK ✁ msxrms. (4.3) Cette écriture a une forme compacte y ✏ Hx. (4.4) Pour K ✏ 1, la matrice H a une structure de Toeplitz2 [Gray 2006]. Pour K ✘ 1, elle est équivalente à la concaténation des K matrices de Toeplitz que nous notons ✍H k , pour k ✏ 1, . . . , K. Sur la figure 4.1, un exemple de matrices H pour K ✏ 1 et K ✏ 4 est montré. La matrice pour K ✏ 4 a K fois plus de colonnes que celle correspondant à K ✏ 1. Le modèle est par conséquent équivalent à y ✏ ✑ ✍H 1 . . . ✍H K ✙ ✔ ✖ ✕ x 1 . . . x K ✜ ✣ ✢ ✏ ➳ K k✏1 ✍H k x k , (4.5) 1Pour davantage de clarté dans ce chapitre, la réponse instrumentale hi♣tq sera notée h♣tq et la matrice Hi , H. 2Nous notons ✍H une matrice H de Toeplitz qui est donc une matrice de convolution. 1024.1 Modèle sur-échantillonné et MISO ✍H (K ✏ 1) H (K ✏ 4) FIGURE 4.1 – Exemple de matrices H pour K ✏ 1 et pour K ✏ 4. où chaque matrice ✍H k est de Toeplitz. Une matrice de convolution ✍H k est associée à un filtre de réponse impulsionnelle h k . Les vecteurs h k et x k sont donc à la résolution de y. Les données peuvent par conséquent être modélisées par K produits de convolution yrns ✏ ➳ K k✏1 h k ✝ x k ✏ ➳ K k✏1 ➳ m h k rn ✁ msx k rms, (4.6) où chaque vecteur h k est défini par h k r`s ✏ hrK` k ✁ 1s ✏ h ♣`TS ♣k ✁ 1q∆tq. (4.7) Sur la figure 4.2, un exemple de lien entre h et les h k est exposé pour K ✏ 3. h hk , k ✏ 1 . . . K FIGURE 4.2 – Exemple de désentrelacement de h pour obtenir les h k avec K ✏ 3. En pratique, les h k peuvent être obtenus par sur-échantillonnage de la réponse instrumentale mesurée, qui est échantillonnée à la fréquence FS. Le sur-échantillonnage peut-être effectué dans le domaine temporel en insérant K ✁ 1 zéros entre chaque échantillon, puis en appliquant un filtre passe-bas de fréquence de coupure F s④2. 4.1.2 Système MISO D’après la partie précédente, les données peuvent être définies par K produits de convolution discrète y ✏ ➳ K k✏1 h k ✝ x k . (4.8) 103CHAPITRE 4 : Déconvolution parcimonieuse sur-échantillonnée De façon générique, cette écriture se rapporte à un système à entrées multiples et sortie unique où chaque voie correspond à un filtre de réponse impulsionnelle finie h k . Le schéma d’un tel système est représenté sur la figure 4.3. Dans la suite de ce chapitre, le but est h 1 h 2 h 3 h K x 1 x 2 x 3 x K y b b b FIGURE 4.3 – Schéma d’un système Multiple Input Single Output (MISO). de retrouver les entrées x k du système MISO composé de K filtres h k (k ✏ 1, . . . , K). Même si notre application est la super-résolution de la déconvolution parcimonieuse, les algorithmes développés peuvent s’adapter à d’autres types de problèmes où les filtres n’ont pas de lien entre eux. 4.2 Facteur de sur-échantillonnage Nous nous intéressons au réglage du facteur de sur-échantillonnage K. En effet, le coût de calcul des algorithmes d’estimation va naturellement augmenter en fonction de K. Il faut donc trouver un compromis entre coût de calcul et résolution de reconstruction. De surcroît, la qualité de l’estimation des temps de retard est limitée par le contenu fréquentiel de l’écho recherché et par le niveau de bruit [Quazi 1981, Demirli et Saniie 2001a]. Par exemple, dans [Quazi 1981], la variance minimale sur l’estimation d’un temps de retard pour un signal à temps continu est σ 2 ✏ 3 8π 2T 1 RSB 1 f 3 2 ✁ f 3 1 , (4.9) où T est la durée d’observation, f1 et f2 sont les bornes de la bande passante du signal et RSB est le Rapport Signal à Bruit. Pour illustrer cette partie, nous nous plaçons dans le cas discret d’une seule forme d’onde gaussienne de fréquence centrale 5 MHz et de 40 % de facteur de bande passante (figure 4.4a). Les données sont composées de cette forme d’onde retardée d’un temps continu et d’un bruit additif gaussien de RSB ✏ 0 dB, échantillonnées à 50 MHz (figure 4.4b). Nous estimons alors de façon optimale la position de l’écho par un calcul d’intercorrélation entre la forme d’onde et les données, pour 100000 réalisations de bruit. Les histogrammes de l’estimation du temps de retard, pour respectivement K ✏ 1, 4, 10, 20, sont tracés respectivement sur les figures 4.4c, 4.4d, 4.4e et 4.4f. Pour chaque valeur de K, la grille de reconstruction est également représentée sur les figures. La dispersion intrinsèque à ce problème, donnée par l’équation (4.9) est de ✟σ ✏ ✟3.43 ns. Pour K ✏ 1, l’erreur est importante comparée à σ alors que pour les modèles sur-échantillonnés, l’estimation est davantage en accord avec σ. 1044.3 Algorithmes de déconvolution 0 0.2 0.4 0.6 −1 −0.5 0 0.5 1 temps [µs] (a) Forme de r´ef´erence 0 0.5 1 1.5 2 2.5 3 3.5 4 −1 −0.5 0 0.5 1 temps [µs] (b) Une r´ealisation des donn´ees et vraie position 1.995 2 2.005 2.01 2.015 2.02 2.025 0 20 40 60 80 % temps [µs] (c) Histogramme des temps de retard pour K = 1 1.995 2 2.005 2.01 2.015 2.02 2.025 0 10 20 30 40 50 60 70 % temps [µs] (d) Histogramme des temps de retard pour K = 4 1.995 2 2.005 2.01 2.015 2.02 2.025 0 10 20 30 40 % temps [µs] (e) Histogramme des temps de retard pour K = 10 1.995 2 2.005 2.01 2.015 2.02 2.025 0 5 10 15 20 % temps [µs] (f) Histogramme des temps de retard pour K = 20 FIGURE 4.4 – Estimation du temps de retard d’un écho (RSB ✏ 0 dB). (a) : Forme d’onde, (b) : vrai temps () et données (–). Distribution des temps de retard estimés par filtre adapté pour (c) K ✏ 1, (d) K ✏ 4, (e) K ✏ 10 et (f) K ✏ 20. Les traits rouges représentent le vrai temps de retard et les barres d’erreur ✟σ où l’écart est donné par l’équation (4.9). Pour cet exemple, il serait raisonnable de régler K ✏ 10, afin que la dispersion d’écart-type σ couvre quelques éléments de la grille sur-échantillonnée de résolution TS④K. 4.3 Algorithmes de déconvolution parcimonieuse pour les systèmes MISO Pour identifier les entrées du système MISO de l’équation (4.8), nous proposons d’utiliser des algorithmes reconnus d’approximation parcimonieuse des signaux, et qui ont montré de bons résultats dans le cas d’un problème de déconvolution classique (K ✏ 1) [Bourguignon et al. 2011, Selesnick et Bayram 2014]. Les algorithmes originaux (i.e. K ✏ 1) sont détaillés dans la partie 3.3.2. Ici, le but est d’approcher le signal y par K vecteurs parcimonieux x k , k ✏ 1 . . . K d’après la connaissance des K filtres à réponse impulsionnelle finie h k . La contribution de ce travail consiste à prendre en compte le caractère générique MISO dans les algorithmes de déconvolution parcimonieuse. Nous proposons ici de revisiter cinq algorithmes : • trois algorithmes gloutons : Matching Pursuit (MP), Orthogonal Matching Pursuit (OMP) et Orthogonal Least Squares (OLS) [Blumensath et Davies 2007], • l’algorithme Single Best Replacement (SBR) [Soussen et al. 2011], qui effectue la 105CHAPITRE 4 : Déconvolution parcimonieuse sur-échantillonnée minimisation locale du critère des moindres carrés pénalisé par une pseudo-norme `0 J♣x, µq ✏ ⑥y ✁ Hx⑥ 2 µ⑥x⑥0 , (4.10) où ⑥x⑥0 est le nombre d’éléments non nuls de x ; chaque itération calcule la valeur minimale du critère pour l’ajout ou la suppression d’une composante, le meilleur mouvement étant alors exécuté, • et un algorithme de déconvolution par pénalisation de norme `1 qui minimise J♣x, λq ✏ ⑥y ✁ Hx⑥ 2 λ⑥x⑥1 , (4.11) l’optimisation étant effectuée par méthode homotopique [Malioutov et al. 2005, Maria et Fuchs 2006], de complexité analogue à celle de OMP, `1-H faisant référence à cet algorithme. La mise en œuvre de chaque algorithme a été accélérée pour les systèmes MISO, notamment grâce aux calculs de convolution effectués par des algorithmes de transformée de Fourier rapides. 4.3.1 Calcul rapide de la convolution discrète L’intérêt du produit de convolution discrète est d’être implémentable de façon rapide dans le domaine de Fourier [Golub et Van Loan 1996, p. 193]. En effet, la convolution circulaire a une équivalence temporelle/fréquentielle y ✏ h ✝ x é y˜ ✏ h˜ ☎ x˜, (4.12) où le symbole˜désigne la transformée de Fourier discrète. Ce calcul peut être implémenté par y ✏ h ✝ x ✏ FFT✁1 ♣FFT♣hq ☎ FFT♣xqq, (4.13) où FFT est un algorithme rapide de transformée de Fourier discrète (Fast Fourier Transform) [Cooley et Tukey 1965]. Le calcul est réalisé sur Nf points fréquentiels et est historiquement adapté pour des puissances entières de deux. Le nombre de points doit respecter Nf → Nx Nh ✁ 1 pour éviter de tronquer h et x. La complexité de cet algorithme est en O♣Nf ln Nf q alors que la complexité du calcul de base de la transformée de Fourier discrète s’exprime en O♣N2 f q. Un calcul de convolution est par conséquent équivalent à trois algorithmes de type FFT. Nous définissons également le calcul d’inter-corrélation R♣x, yq, qui peut également être effectué par ce type de calcul, défini par R♣x, yq ✏ x ✝ y ✝ ✁, (4.14) où y ✝ ✁ est le conjugué retourné temporellement de y. 1064.3 Algorithmes de déconvolution 4.3.2 Détails de mise en œuvre des algorithmes Algorithmes MP et OMP A chaque itération, l’étape de sélection des algorithmes MP et OMP fait appel au produit HT r, où r est le résidu entre les données y et l’approximation Hx♣i [Blumensath et Davies 2007]. Pour un système MISO, ce calcul revient à effectuer K produits ♣ ✍H k q T r où les matrices ✍H k sont de Toeplitz. Chaque produit correspond à un calcul d’intercorrélation entre h k et r, équivalent à trois calculs de type FFT. En pratique, nous calculons les K FFT des h k à l’avance. Ensuite, à chaque itération, la FFT de r et les K IFFT de ♣ ✍H k q T r sont calculées pour l’étape de sélection. En termes de coût de calcul, l’accroissement est proportionnel à K. Pour MP, l’étape de mise à jour du résidu est identique à un algorithme standard (i.e. K ✏ 1). Pour OMP, le calcul de chaque solution est défini par x♣i ✏ ♣HT QHQq ✁1HT Qy, où HQ représente les colonnes de H sélectionnées à une itération donnée. Dans notre mise en œuvre, nous utilisons une factorisation de Cholesky de HT QHQ pour effectuer l’inversion à moindre coût [Golub et Van Loan 1996]. L’inversion du système revient ici à l’inversion de deux systèmes triangulaires de complexité O♣n 2 q, où n est le nombre d’indices actifs. Algorithmes OLS et SBR Pour sélectionner l’élément à rajouter, les algorithmes OLS et SBR utilisent de façon intensive les éléments de la matrice de Gram HTH (cf. partie 3.3.2). Ce sont en fait les éléments des matrices ♣ ✍H k q T ✍H ` qui peuvent être calculés préalablement à partir des séquences d’intercorrélation entre h k et h ` . Nous avons donc besoin des K♣K 1q④2 intercorrélations entre les K filtres h k et h ` , dans le domaine de Fourier. Pour OLS et SBR, le coût de calcul dans l’algorithme lui-même reste approximativement constant en fonction de K, l’accroissement du coût étant très majoritairement associé aux pré-calculs d’intercorrélation. Le test des retraits de SBR est effectué sur le support actif et n’est donc pas concerné par l’aspect multi-voies. Algorithme de déconvolution par pénalisation `1 L’algorithme `1-H minimise le critère (4.11) en faisant progressivement décroître les valeurs du paramètre λ [Malioutov et al. 2005]. La solution optimale est alors calculée pour chaque saut de λ, signifiant un changement de support de la solution d’un élément. On a donc un comportement similaire aux stratégies gloutonnes. A chaque itération, l’ajout d’un élément nécessite deux produits HT r, ce qui correspond à 2♣K 1q FFT. Le test des retraits requiert lui l’inversion de deux systèmes HT QHQ, effectuée également par une factorisation de Cholesky. En termes de complexité, `1-H est donc à peu près équivalent au double de l’algorithme OMP. Résumé de mise en œuvre des algorithmes Tous les algorithmes exigent les K pré-calculs des h˜ k . Pour résumer, les algorithmes MP, OMP et `1-H ont une complexité proportionnelle à K pour les pré-calculs et pour chaque itération de l’algorithme. D’un autre côté, OLS et SBR nécessitent seulement les pré-calculs 107CHAPITRE 4 : Déconvolution parcimonieuse sur-échantillonnée de FFT, et le cœur de l’algorithme reste à peu près le même quand K augmente. Le détail des coûts de calcul en termes de FFT est récapitulé dans le tableau 4.1. Algorithmes MP OMP `1-H OLS SBR Pré-calculs h˜ k h˜ k h˜ k h˜ k h˜ k y˜ y˜ y˜ ♣ ✍H k q T y ♣ ✍H k q T y ♣ ✍H k q T y ♣ ✍H k q T ✍H ` ♣ ✍H k q T ✍H ` Nb. total de FFT K K 12K 12K♣K2Kq④2 12K♣K2Kq④2 cœur r˜ r˜ 2 ✂ r˜ ♣ ✍H k q T r ♣ ✍H k q T r 2 ✂ ♣ ✍H k q T r ✒idem ✒idem Nb. total de FFT K1 K1 2♣K1q 0 0 TABLE 4.1 – Pré-calculs et calculs dans le cœur des algorithmes de déconvolution pour les systèmes MISO. 4.4 Résultats 4.4.1 Outils de mesure de l’erreur d’estimation Les trains d’impulsions ont dans la réalité des positions temporelles continues. En revanche, l’estimation place les pics sur une grille discrète. Si nous considérons respectivement xq♣tq et x♣♣tq comme la vérité et l’estimation, le calcul de l’erreur basé sur une différence entre ces deux signaux mène irrémédiablement à une mauvaise approche, xq♣tq et x♣♣tq ne coïncidant jamais. Il est de ce fait nécessaire d’utiliser des outils de mesure de la différence entre deux trains d’impulsions. Les références sont relativement nombreuses dans le domaine des neurosciences où l’on parle de distance entre des trains d’impulsions binaires. Dans ce domaine, les trains sont des stimuli électriques du système nerveux, dont les valeurs varient continûment. Victor et Purpura [1996; 1997] proposent des distances métriques au sens d’une approximation discrète par intervalle. Van Rossum [2001] utilise plutôt la distance euclidienne entre les deux trains convolués par une exponentielle décroissante causale. On a dans ce cas un paramètre de décroissance τ qui joue le rôle de tolérance temporelle pour la comparaison des trains. Il est également possible d’utiliser une gaussienne dans laquelle l’écart-type σ est équivalent à τ [Schreiber et al. 2003]. Dans [Paiva et al. 2010], les auteurs établissent une revue des distances fréquemment utilisées et proposent d’autres noyaux : triangle, rectangle et laplacien. Le noyau laplacien est une exponentielle décroissante symétrique. Nous trouvons ces mesures de distance intéressantes et adaptées à nos travaux. Afin de disposer de noyaux symétriques, nous choisissons l’utilisation des noyaux laplacien et gaussien. Nous les définissons respectivement par κ♣tq ✏ e ✁ ⑤t⑤ τ et κ♣tq ✏ e ✁ t 2 2σ2 (4.15) 1084.4 Résultats −1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 Exemple de noyau pour le calcul de distance temps [µs] gaussien laplacien FIGURE 4.5 – Exemple de noyaux gaussien et laplacien pour le calcul de distance (τ ✏ σ ✏ 0.1 µs). Sur la figure 4.5, un exemple de ces deux noyaux est donné. Les paramètres τ et σ définissent la précision temporelle de comparaison et nous choisissons de les fixer à τ ✏ σ ✏ TS, de sorte que la précision de reconstruction soit de l’ordre de la période d’échantillonnage des données. Le signal filtré correspondant à un train d’impulsions x♣tq de N pics est calculé par f♣tq ✏ x♣tq ✝ κ♣tq ✏ ➳ N i✏1 aiκ♣t ✁ tiq, (4.16) où les ai et les ti sont respectivement les amplitudes et les temps d’arrivée des pics. La distance entre les trains x1♣tq et x2♣tq est ensuite définie par la distance euclidienne dx1,x2 ✏ ➺ ✽ 0 ♣f1♣tq ✁ f2♣tqq2 dt. (4.17) Cette distance peut se calculer analytiquement ou numériquement en discrétisant l’intégrale par la méthode des rectangles avec un pas très petit par rapport à TS. Dans la figure 4.6, nous montrons un exemple de calcul de distance pour deux trains d’impulsions x1♣tq et x2♣tq. Trois différences sont apparentes : une erreur d’amplitude pour le premier pic, une erreur de position pour le deuxième et une erreur d’amplitude et de position pour le troisième. Quatre paramétrages sont étudiés : 1. amplitudes inchangées et noyau laplacien, 2. amplitudes binarisées et noyau laplacien, 3. amplitudes inchangées et noyau gaussien, 4. amplitudes binarisées et noyau gaussien. Nous utilisons l’aspect binaire car c’est la formulation notamment utilisée en neurosciences. Comme attendu, on remarque que l’erreur d’amplitude sur le premier pic n’est pas prise en compte lorsqu’on binarise. Elle crée une seule forme à l’emplacement du pic. Les erreurs de position du deuxième pic crée deux formes symétriques et sont plus marquées avec le noyau gaussien car sa forme est moins resserrée que le noyau laplacien. Les erreurs d’amplitude et de position sur le troisième pic créent deux formes non symétriques. 109CHAPITRE 4 : Déconvolution parcimonieuse sur-échantillonnée 0 1 2 3 4 −1.5 −1 −0.5 0 0.5 1 1.5 (a1) x1(t) f1(t) 0 1 2 3 4 −1.5 −1 −0.5 0 0.5 1 1.5 (b1) x2(t) f2(t) 0 1 2 3 4 −0.5 0 0.5 1 1.5 2 2.5 (c1) d = 0.347 (f1(t) − f2(t))2 d= aire 0 1 2 3 4 −1.5 −1 −0.5 0 0.5 1 1.5 (a2) 0 1 2 3 4 −1.5 −1 −0.5 0 0.5 1 1.5 (b2) 0 1 2 3 4 −0.5 0 0.5 1 1.5 2 2.5 (c2) d = 0.214 0 1 2 3 4 −1.5 −1 −0.5 0 0.5 1 1.5 (a3) 0 1 2 3 4 −1.5 −1 −0.5 0 0.5 1 1.5 (b3) 0 1 2 3 4 −0.5 0 0.5 1 1.5 2 2.5 (c3) d = 0.652 0 1 2 3 4 −1.5 −1 −0.5 0 0.5 1 1.5 (a4) 0 1 2 3 4 −1.5 −1 −0.5 0 0.5 1 1.5 (b4) 0 1 2 3 4 −0.5 0 0.5 1 1.5 2 2.5 (c4) d = 0.394 FIGURE 4.6 – Exemple de calcul de distance entre trains d’impulsions. Les lettres indiquent (a) le train x1♣tq et la fonction f1♣tq associée, (b) le train x2♣tq et la fonction f2♣tq associée et (c) la distance euclidienne. Les indices correspondent à (1) amplitudes inchangées et noyau laplacien, (2) amplitudes binarisées et noyau laplacien, (3) amplitudes inchangées et noyau gaussien et (4) amplitudes binarisées et noyau gaussien. 4.4.2 Résultats issus de données simulées On considère les données présentées sur la figure 4.7c. Elles sont composées de six échos dont les temps d’arrivée sont choisis de façon continue sur toute la durée du signal : r0, 8s µs. On ne peut donc jamais retrouver les vraies positions, mais on peut s’en approcher du mieux possible. La forme d’onde de convolution est une gaussienne modulée par une sinusoïde de 5 MHz et de 40 % de facteur de bande passante (voir figure 4.7a). Les données sont échantillonnées à 25 MHz et le rapport signal à bruit est de 12 dB. Il y a dans ces données trois problèmes de superposition d’échos difficiles. La déconvolution est effectuée de façon classique (K ✏ 1) et avec sur-échantillonnage (K ✏ 6). Les algorithmes sont arrêtés lorsque la cardinalité est de l’ordre de celle de la vérité. Les résultats sont présentés respectivement sur les figures 4.7-d et 4.7-e. Nous voyons que, pour tous les algorithmes, le sur-échantillonnage permet de mieux résoudre un certain nombre de problèmes de pics proches par rapport à l’approche classique. OLS et SBR aboutissent à de bons résultats mais ne parviennent pas à détecter les deux pics centraux qui 1104.4 Résultats 0.25 0.5 0.75 1 1.25 1.5 −1 0 1 (a) Forme mesur´ee 0.25 0.5 0.75 1 1.25 1.5 −1 0 1 (b) Sur-´echantillonnage 0 2 4 6 8 −2 0 2 (c) Donn´ees et v´erit´e 0 2 4 6 8 −2 0 2 MP (d) 0 2 4 6 8 OMP 0 2 4 6 8 OLS 0 2 4 6 8 SBR 0 2 4 6 8 ℓ1 0 2 4 6 8 −2 0 2 temps [µs] (e) 0 2 4 6 8 temps [µs] 0 2 4 6 8 temps [µs] 0 2 4 6 8 temps [µs] 0 2 4 6 8 temps [µs] FIGURE 4.7 – Exemple de déconvolution de données synthétiques. (a) : Forme d’onde initiale, (b) : formes d’onde utilisées pour la déconvolution K ✏ 6, (c) : données (–) et vrais pics (✆), ligne (d) : résultats avec K ✏ 1, ligne (e) : résultats avec K ✏ 6. Vrais pics (✆) et pics estimés (). interfèrent de manière très critique. SBR réussit néanmoins à détecter un des deux pics. D’un autre côté, la déconvolution sur-échantillonnée par `1-H permet de retrouver ces deux pics, mais au prix de quelques fausses détections de faibles amplitudes, comportement typique de la pénalisation `1. Nous nous intéressons également aux calculs de distance développés dans la partie pré- cédente. Les résultats de ces calculs sont présentés dans les tableaux 4.2 et 4.3, pour respectivement K ✏ 1 et K ✏ 6. D’une manière générale, le fait de binariser est défavorable aux Algorithmes MP OMP OLS SBR `1-H d (laplacien) 0.9166 0.8889 0.8889 0.8889 0.7638 d (laplacien/bin) 0.3015 0.3015 0.3015 0.3015 0.4129 d (gaussien) 1.5799 1.5245 1.5245 1.5245 1.2723 d (gaussien/bin) 0.5144 0.5144 0.5144 0.5144 0.6776 TABLE 4.2 – Résultats des calculs de distance pour l’exemple de la figure 4.7 avec K ✏ 1. Algorithmes MP OMP OLS SBR `1-H d (laplacien) 0.7545 0.7117 0.4322 0.2665 0.3302 d (laplacien/bin) 0.2788 0.2788 0.1753 0.1005 0.1815 d (gaussien) 1.3226 1.2373 0.7703 0.4356 0.5498 d (gaussien/bin) 0.4793 0.4793 0.3065 0.1650 0.3140 TABLE 4.3 – Résultats des calculs de distance pour l’exemple de la figure 4.7 avec K ✏ 6. résultats issus de la pénalisation `1. En effet, cette pénalisation favorise les pics de faibles 111CHAPITRE 4 : Déconvolution parcimonieuse sur-échantillonnée amplitudes et crée donc des solutions avec une cardinalité plus élevée par rapport aux approches gloutonnes et à SBR. Pour K ✏ 1, dans le cas binaire, les distances les plus faibles correspondent de ce fait aux méthodes gloutonnes et à SBR. Dans le cas non binaire, c’est la pénalisation `1 qui donne les meilleurs résultats. Le sur-échantillonnage fait baisser les distances pour toutes les méthodes et pour toutes les métriques. Les diminutions sont plus significatives pour les méthodes OLS, SBR et `1-H, avec notamment une baisse d’un facteur deux pour OLS et `1-H, et d’un facteur trois pour SBR. La méthode SBR donne les distances les plus faibles en super-résolution. Cet exemple montre qu’un modèle plus précis ne permet pas seulement d’affiner la position des pics, mais permet également d’éviter des erreurs importantes. Les algorithmes l’utilisant aboutissent à des solutions plus précises en limitant les erreurs dues aux modes locaux. 4.4.3 Simulations de Monte-Carlo Nous présentons maintenant des simulations de Monte-Carlo. Les paramètres de l’exemple précédent sont repris : FS ✏ 25 MHz, f0 ✏ 5 MHz, BWR✁3 ✏ 0.3, RSB ✏ 12 dB, durée 8 µs, 6 pics aléatoirement placés et d’amplitudes uniformes. Nous appliquons les cinq algorithmes sur 1000 réalisations aléatoires en faisant varier K de 1 à 8 pour chaque réalisation. Les algorithmes sont arrêtés quand la norme du résidu ⑥y ✁ Hx♣⑥ 2 est au niveau de la norme du bruit ⑥b⑥ 2 ✓ Nyσ 2 b (cf. partie 3.2.4). Les calculs de distances sont présentés sur les figures 4.8a et 4.8b. Le noyau laplacien est utilisé avec et sans binarisation des pics. D’une manière générale, les distances baissent quand K augmente. La plus faible distance avec amplitudes inchangées est clairement celle calculée à partir de la pénalisation `1. Pour cette distance, les approches gloutonnes et SBR donnent à peu près les mêmes résultats, avec un léger avantage pour OLS et SBR. En ce qui concerne la distance calculée avec les amplitudes binaires, l’ordre de performance croissante des méthodes est nettement : MP, OMP, `1-H, OLS et SBR. Ces résultats confirment les conclusions partielles tirées de l’exemple de la partie 4.4.2. En ce qui concerne les temps de calcul exposés en figure 4.8c, ceux-ci augmentent avec K, mais de façon maîtrisée. Ces résultats sont à mettre en relation avec le nombre de pics estimés par chaque méthode (figure 4.8d). En effet, pour une méthode donnée, un plus grand nombre de pics estimés, faisant écho à un nombre d’itérations plus important, impose un temps de calcul plus élevé. Le nombre de pics obtenus baisse avec K, prouvant la meilleure performance du modèle quand K augmente. Les algorithmes les plus rapides sont MP et OMP malgré des solutions ayant une cardinalité élevée, mais avec un effet moins important pour OMP. Les méthodes ayant le plus grand temps de calcul sont SBR et `1-H. Ce dernier est censé être plus rapide que SBR, mais produit des solutions avec un plus grand nombre de pics. Les méthodes qui présentent les solutions ayant les plus faibles nombres de pics sont SBR et OLS, ce qui fait apparaître une meilleure représentation du signal avec moins de pics. La méthode OLS semble être un bon compromis entre temps de calcul et nombre de pics produits. Cette étude montre que la déconvolution sur-échantillonnée permet de réduire les distances entre la vraie séquence et la séquence estimée. Ceci est dû à un modèle plus précis grâce à une discrétisation plus fine. Cette approche provoque un surcoût de calcul limité par rapport à la déconvolution classique grâce à une implémentation efficace. 1124.4 Résultats 0 2 4 6 8 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 K (a) Distance (non binaris´e) MP OMP OLS SBR ℓ1-H 0 2 4 6 8 0.1 0.2 0.3 0.4 0.5 0.6 K (b) Distance (binaris´e) 0 2 4 6 8 2 4 6 8 10 12 14 K (c) Temps calcul (ms) 0 2 4 6 8 5 10 15 20 K (d) Cardinalit´e MP OMP OLS SBR ℓ1-H v´erit´e FIGURE 4.8 – Résultats de simulations de Monte-Carlo pour cinq méthodes de déconvolution en fonction du facteur de sur-échantillonnage K. (a) distance basée sur un noyau laplacien, (b) distance basée sur un noyau laplacien avec amplitudes binaires, (c) temps de calcul, (d) cardinalité. 4.4.4 Résultats expérimentaux Pour illustrer l’approche de déconvolution sur-échantillonnée, nous appliquons les algorithmes développés aux données acquises à partir de plaques d’aluminium. Le transducteur utilisé est à surface plane circulaire de diamètre 12.7 mm et de fréquence centrale 2.25 MHz. Les plaques sont insonifiées en incidence normale et dans le champ lointain du transducteur. Deux épaisseurs qui créent le chevauchement des échos sont utilisées : 4 et 2 mm. La section 5.2 explique plus en détail la procédure expérimentale utilisée pour acquérir ce type de données. Les données sont échantillonnées à 25 MHz, valeur qui est choisie volontairement faible pour montrer la capacité du modèle à résoudre des problèmes de chevauchement pour des fréquences d’échantillonnage basses. Dans la réalité, la fréquence d’échantillonnage pour cette fréquence de transducteur est plutôt de l’ordre de 50 ou 100 MHz. Nous choisissons un facteur de sur-échantillonnage K ✏ 4 de manière à reconstruire des signaux à 100 MHz. La réponse instrumentale est mesurée à partir d’une plaque épaisse (20 mm) dans les mêmes conditions (voir figure 4.9a). Les filtres de déconvolution, représentés sur la figure 4.9b, sont obtenus en sur-échantillonnant la réponse instrumentale par un facteur quatre. Les données et la séquence de réflectivité théorique pour la plaque de 4 mm sont représentées sur la figure 4.10a. Cette séquence est obtenue par le calcul des coefficients de réflexion et de transmission avec la connaissance de l’épaisseur, de la vitesse des ondes et de la masse 113CHAPITRE 4 : Déconvolution parcimonieuse sur-échantillonnée 0 0.5 1 1.5 −1 −0.5 0 0.5 1 (a) R´eponse instrumentale mesur´ee temps [µs] 0 0.5 1 1.5 −1 −0.5 0 0.5 1 (b) Filtres de d´econvolution temps [µs] h1 h2 h3 h4 FIGURE 4.9 – Réponse instrumentale mesurée et filtres de déconvolution obtenus par sur- échantillonnage. 0 1 2 3 4 5 6 7 8 9 10 −1 −0.5 0 0.5 1 (a) Donn´ees et vraie s´equence Donn´ees R´ef´erence 0 1 2 3 4 5 6 7 8 9 10 −0.5 0 0.5 1 (b) D´econvolution classique (K = 1) avec SBR v´erit´e d´econvolution 0 1 2 3 4 5 6 7 8 9 10 −0.5 0 0.5 1 temps [µs] (c) D´econvolution sur-´echantillonn´ee (K = 4) avec SBR v´erit´e d´econvolution FIGURE 4.10 – Déconvolution classique (K ✏ 1) et sur-échantillonnée (K ✏ 4) pour des données acquises à partir d’une plaque d’aluminium de 4 mm d’épaisseur. (a) données et vraie séquence, (b) vraie séquence et déconvolution classique, (c) vraie séquence et déconvolution sur-échantillonnée. volumique (pour plus de détails, se rapporter à la section 5.2). Le premier pic est négatif et correspond à la réflexion à la surface de la plaque. Les pics suivants correspondent aux allers-retours dans la plaque. Le but est donc d’obtenir un train d’impulsions le plus proche possible de cette séquence. Les résultats de déconvolution classique (K ✏ 1) et sur- échantillonnée (K ✏ 4), obtenus avec l’algorithme SBR, sont respectivement représentés sur les figures 4.10b et 4.10c. On remarque que la solution de la déconvolution classique aboutit 1144.4 Résultats à une solution proche de la vérité mais avec des pics doubles, dus à l’imprécision temporelle du modèle. Ces fausses détections produisent également des erreurs d’amplitude. D’un autre côté, la déconvolution sur-échantillonnée produit une solution sans pics doubles, avec des positions et des amplitudes proches de la séquence réelle. On peut expliquer ce résultat par une plus grande résolution temporelle du modèle. La sélection des formes d’onde est plus proche de la réalité grâce au choix plus large défini par les filtres du système MISO. Les données et les résultats pour la plaque de 2 mm d’épaisseur sont représentés sur la figure 4.11. Les conclusions sont à peu près les mêmes que précédemment. La différence 2 2.5 3 3.5 4 4.5 5 5.5 6 −1 −0.5 0 0.5 1 (a) Donn´ees et vraie s´equence Donn´ees R´ef´erence 2 2.5 3 3.5 4 4.5 5 5.5 6 −0.5 0 0.5 1 (b) D´econvolution classique (K = 1) avec SBR v´erit´e d´econvolution 2 2.5 3 3.5 4 4.5 5 5.5 6 −0.5 0 0.5 1 temps [µs] (c) D´econvolution sur-´echantillonn´ee (K = 4) avec SBR v´erit´e d´econvolution FIGURE 4.11 – Déconvolution classique (K ✏ 1) et sur-échantillonnée (K ✏ 4) pour des données acquises à partir d’une plaque d’aluminium de 2 mm d’épaisseur. (a) données et vraie séquence, (b) vraie séquence et déconvolution classique, (c) vraie séquence et déconvolution sur-échantillonnée. du positionnement temporel est encore plus flagrante dans ce cas. On voit que dans le cas classique, les erreurs de détection sont importantes, dès le troisième pic, et ne permettent pas de retrouver la séquence théorique. La déconvolution sur-échantillonnée parvient à détecter quatre pics en accord avec la vérité et ce aussi bien en amplitude que temporellement. Les résultats de déconvolution sur-échantillonnée nous montrent ainsi qu’il est possible de réaliser le contrôle non destructif de matériaux – en l’occurrence le calcul d’épaisseur de plaques – à partir de signaux échantillonnés à des fréquences plutôt basses. Cette modalité peut répondre à des problématiques de vitesse d’exécution, de codage et de stockage des données. 115Chapitre 5 Application au contrôle non destructif par ultrasons Sommaire Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 5.1 Estimation de la forme d’onde . . . . . . . . . . . . . . . . . . . . . . 118 5.1.1 Mesure d’un écho isolé . . . . . . . . . . . . . . . . . . . . . . . 118 5.1.2 Estimation par connaissance de la séquence de réflectivité . . . . 118 5.1.3 Moyennage dans le domaine homomorphique . . . . . . . . . . . 119 5.1.4 Construction d’un dictionnaire ou apprentissage . . . . . . . . . . 120 5.2 Plaque de matériau homogène . . . . . . . . . . . . . . . . . . . . . . 120 5.2.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 5.2.2 Calcul d’incertitude . . . . . . . . . . . . . . . . . . . . . . . . . 122 5.2.3 Estimation du temps de vol moyen par moindres carrés . . . . . . 123 5.2.4 END d’une plaque épaisse . . . . . . . . . . . . . . . . . . . . . 123 5.2.5 CND d’une plaque fine . . . . . . . . . . . . . . . . . . . . . . . 126 5.3 Matériaux atténuants . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 5.4 Plaques avec trous à fond plat . . . . . . . . . . . . . . . . . . . . . . 129 5.4.1 Cas d’un Ascan . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 5.4.2 Cas d’un Bscan . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Introduction Ce chapitre présente des résultats expérimentaux de déconvolution parcimonieuse. Les acquisitions ont été réalisées pour la majeure partie au Laboratoire d’Acoustique de l’Université du Maine. Nous abordons en préambule, dans la section 5.1, l’estimation de la forme d’onde de référence. Même si les techniques présentées ici n’ont pas toutes été utilisées en situation réelle, l’état de l’art sur celles-ci demeure intéressant pour l’utilisateur. Dans la section 5.2, nous traitons le cas de plaques homogènes. Une méthode de calcul de temps de vol 117CHAPITRE 5 : Application au CND pour les plaques par minimisation d’un critère des moindres carrés est proposée. Plusieurs méthodes de déconvolution sont comparées pour réaliser, dans un premier temps, le calcul de la vitesse des ondes, et dans un second temps, le calcul d’épaisseur de plaques fines. La déconvolution de matériaux atténuants est ensuite abordée dans la section 5.3. Le but ici est de détecter l’écho de fond d’un matériau très atténuant menant à un rapport signal à bruit très faible et à une distorsion importante liée à l’atténuation dispersive. Nous montrons dans cet exemple l’importance d’utiliser un modèle qui prend en compte l’atténuation dispersive. Pour finir, nous nous intéressons à la détection de trous à fond plat dans la section 5.4. La difficulté provient du mélange entre les échos du trou et du fond. Un cas de matériau atté- nuant contenant un trou est traité. Nous montrons également le résultat d’une image obtenue par déconvolutions successives des A-scans pour une plaque d’aluminium percée par quatre trous. Ce chapitre répond de façon pragmatique à des problèmes réels de contrôle non destructif. 5.1 Estimation de la forme d’onde de référence ou construction du dictionnaire 5.1.1 Mesure d’un écho isolé La méthode la plus simple pour obtenir la forme de référence est de réaliser une mesure en incidence normale avec une plaque de grande épaisseur placée en champ lointain [Krautkramer et Krautkramer 1990]. On obtient dans ce cas un écho de surface isolé. Lorsque le milieu de transmission entre le transducteur et la plaque est faiblement atténuant (de l’eau par exemple), on obtient la réponse instrumentale du système [Olofsson et Stepinski 2000]. Pour corriger les effets de diffraction, il est possible de modéliser la propagation entre le transducteur et la plaque grâce à une fonction de diffraction [Stephanishen 1971, Lingvall et al. 2003]. On peut ensuite retrouver la réponse instrumentale par déconvolution ou filtrage inverse [Cassereau et al. 1988]. En champ lointain, on peut montrer que la fonction de diffraction est proche d’une impulsion de Dirac. Par conséquent, l’écho de surface est équivalent à la réponse impulsionnelle instrumentale retardée du temps de propagation dans l’eau. Lorsque la mesure d’un écho isolé est impossible et qu’on dispose de signaux contenant des échos mélangés, il est nécessaire d’estimer la forme d’onde. Nous exposons quelques approches possibles comme l’estimation par connaissance de la séquence de réflectivité ou par moyennage dans le domaine homomorphique. Il est également possible de proposer un plus grand nombre de formes d’onde dans un dictionnaire. Dans ce cas, il est nécessaire de construire le dictionnaire suivant un modèle ou d’apprendre un jeu de représentations. 5.1.2 Estimation par connaissance de la séquence de réflectivité Sous un modèle de convolution, les données sont y♣tq ✏ hi♣tq ✝ x♣tq, où x♣tq représente la séquence de réflectivité ou de transmittivité. Dans le domaine fréquentiel, on a donc Y ♣fq ✏ Hi♣fqX♣fq. Si on suppose x♣tq connue, pour une pièce étalon par exemple, il est possible d’estimer la réponse instrumentale ♣hi♣tq par transformée de Fourier inverse de Y ♣fq④X♣fq. Cette inversion est bien conditionnée grâce au caractère très large bande de 1185.1 Estimation de la forme d’onde X♣fq, qui est la transformée de Fourier d’une somme d’impulsions de Dirac. Nous montrons sur la figure 5.1 un exemple simulé d’estimation de la réponse instrumentale pour trois RSB : 30 dB, 20,dB et 10 dB. Comme attendu, l’estimation de la réponse instrumentale est plutôt 0 50 100 150 200 250 −2 −1 0 1 2 (a) Donn´ees RSB = 30 dB y(t) x(t) 0 50 100 150 200 250 −2 −1 0 1 2 (c) Donn´ees RSB = 20 dB 0 50 100 150 200 250 −2 −1 0 1 2 (e) Donn´ees RSB = 10 dB 0 10 20 30 40 50 −1 0 1 (b) Estimation hi(t) hi(t) bhi (t) 0 10 20 30 40 50 −1 0 1 (d) Estimation hi(t) 0 10 20 30 40 50 −1 0 1 (f) Estimation hi(t) FIGURE 5.1 – Exemple d’estimation de la réponse instrumentale par connaissance de x♣tq pour trois niveaux de bruit. Colonne de gauche : Données y♣tq (–) et séquence x♣tq (+), colonne de droite : vérité hi♣tq et estimation ♣hi♣tq. Haut : RSB ✏ 30 dB, milieu : RSB ✏ 20 dB, bas : RSB ✏ 10 dB. bonne, même pour le cas le plus défavorable. Cette estimation peut être appliquée concrètement au cas des plaques par exemple. Nous verrons dans la section 5.2 que la séquence x♣tq a un modèle relativement simple et prédictif pour les plaques. 5.1.3 Moyennage dans le domaine homomorphique Le moyennage dans le domaine homomorphique est basé sur le cepstre d’un signal s♣tq qui correspond au logarithme naturel de sa transformée de Fourier [Oppenheim et al. 1968] ln S♣fq ✏ ln ⑤S♣fq⑤e jarg♣S♣fqq✟ ✏ ln ⑤S♣fq⑤ jarg♣S♣fqq. (5.1) Pour un modèle convolutif, les données sont modélisées par y♣tq ✏ hi♣tq ✝ x♣tq. En prenant le logarithme naturel dans le domaine fréquentiel, on obtient ln Y ♣fq ✏ ln Hi♣fq ln X♣fq. (5.2) Le principe consiste à utiliser une certaine quantité de signaux yn♣tq, n ✏ 1 . . . N pour lesquelles on considère hi♣tq invariant et x♣tq comme une réalisation aléatoire. C’est le cas 119CHAPITRE 5 : Application au CND lorsqu’on utilise un unique transducteur pour effectuer un grand nombre de mesures. La moyenne des cepstres réceptionnés est alors 1 N ➳ N n✏1 ln Yn♣fq ✏ ln Hi♣fq 1 N ➳ N n✏1 ln Xn♣fq. (5.3) Tria et al. [2007] suppose que, pour n ✏ 1 . . . N et pour chaque fréquence, ln ⑤Xn♣fq⑤ suit une même loi de probabilité de moyenne M et de variance σ, et que arg♣Xn♣fqq suit une loi uniforme sur r✁π, πs de moyenne nulle. La loi des grands nombres indique que, pour un grand nombre de réalisations, les paramètres moyennés tendent vers les paramètres de la loi de probabilité. On a par conséquent 1 N ➳ N n✏1 ln Xn♣fq ÝÑNÑ✽ ★ 1 N ➦N n✏1 ln ⑤Xn♣fq⑤ ÝÑNÑ✽ M 1 N ➦N n✏1 arg♣Xn♣fqq ÝÑNÑ✽ 0. (5.4) L’estimation de la réponse instrumentale est par conséquent ♣hi♣tq ✏ F ✁1 ★ exp ✄ 1 N ➳ N n✏1 ln Yn♣fq ☛✰ , (5.5) où F ✁1 est l’opérateur de transformée de Fourier inverse. Un exemple synthétique d’estimation est présenté sur la figure 5.2 pour plusieurs nombres de réalisations. Chaque séquence x♣tq est générée aléatoirement avec un nombre de pics allant de un à vingt, une loi uniforme pour les positions des pics et des amplitudes de loi gaussienne centrée. Le rapport signal à bruit de chaque jeu de données est fixé à 40 dB. Comme attendu, plus le nombre de réalisations augmente, plus l’estimation de la réponse instrumentale est bonne. 5.1.4 Construction d’un dictionnaire ou apprentissage L’approche par dictionnaire consiste à considérer le modèle linéaire y ✏ Dx où D P R Ny✂Nx est un dictionnaire avec beaucoup plus de colonnes que de lignes (Nx ✧ Ny). Il est possible d’utiliser un modèle d’écho particulier (voir partie 3.1.1 du chapitre 3) et de discrétiser les paramètres pour construire le dictionnaire [Lu et Michaels 2008]. Ce principe est inspiré de la construction des dictionnaires d’ondelettes utilisés en représentation parcimonieuse [Mallat et Zhang 1993, Mallat 1999]. Une autre technique pour construire le dictionnaire D et limiter sa taille consiste à réaliser un apprentissage à partir de plusieurs jeux de données [Lewicki et Sejnowski 2000, KreutzDelgado et al. 2003, Aharon et al. 2006, Zhang et al. 2008; 2012]. 5.2 Plaque de matériau homogène 5.2.1 Généralités Les matériaux considérés homogènes ne présentent ni atténuation ni dispersion. La vitesse des ondes est de ce fait indépendante de la fréquence et donc constante. Elle est notée c0. Nous considérons ici des mesures en pulse-echo en incidence normale par rapport à une 1205.2 Plaque de matériau homogène 0 20 40 60 80 100 −1 −0.5 0 0.5 1 (a) Estimation avec 10 r´ealisations hi(t) bhi (t) 0 20 40 60 80 100 −1 −0.5 0 0.5 1 (b) Estimation avec 100 r´ealisations 0 20 40 60 80 100 −1 −0.5 0 0.5 1 (c) Estimation avec 1000 r´ealisations FIGURE 5.2 – Exemple d’estimation de la réponse instrumentale par moyennage dans le domaine homomorphique. (a) : vérité hi♣tq et estimation ♣hi♣tq pour 10 réalisations, (b) : vérité hi♣tq et estimation ♣hi♣tq pour 100 réalisations, (c) : vérité hi♣tq et estimation ♣hi♣tq pour 1000 réalisations. (a) (b) d transducteur D 1 2 1 plaque FIGURE 5.3 – (a) Schéma et (b) photo d’une mesure en pulse-echo réalisée en incidence normale avec une plaque homogène immergée. plaque homogène, comme illustré sur la figure 5.3. La photo de la figure 5.3 montre une mesure effectuée avec une plaque d’aluminium. En incidence normale, seules les ondes longitudinales se propagent dans le matériau inspecté. A partir de ce type d’inspection, nous nous intéressons seulement à ce type d’ondes. Le temps de vol est équivalent à un aller- 121CHAPITRE 5 : Application au CND retour dans la plaque T ✏ 2d c0 . (5.6) Le modèle des données est alors défini par une répétition des réponses instrumentales tous les 2T [Saniie et Nagle 1989] y♣tq ✏ α12hi ✂ t ✁ 2D c0 ✡ β12β21 ➳✽ k✏1 ♣α21q 2k✁1 hi ✂ t ✁ 2D c0 ✁ kT✡ , (5.7) avec, respectivement, αij et βij les coefficients de réflexion et de transmission entre un milieu i et un milieu j (voir aussi la partie 1.2.1 du chapitre 1). Le coefficient de réflexion définit le rapport entre les pressions réfléchie et incidente, tandis que le coefficient de transmission traduit le rapport des pressions transmise et incidente [Krautkramer et Krautkramer 1990, chap. 2]. Ceux-ci sont définis par αij ✏ Zj ✁ Zi Zi Zj et βij ✏ 2Zj Zi Zj . (5.8) avec l’impédance acoustique Zi ✏ ρici . On a alors αij ✏ ✁αji et βij ✏ 1 αij [Zala 1992]. Par ailleurs, on trouve dans [Saniie et Nagle 1989] la convention Zi ✏ 1④ρici , qui n’est pas une impédance acoustique mais une admittance acoustique. Dans ce cas, Zi et Zj sont intervertis dans les expressions de αij et βij . Dans un cas de plaque immergée où Z1 ➔ Z2, les coefficients de réflexion respectent α12 → 0 et α21 ➔ 0. En se référant à l’équation (5.7), on remarque que le premier écho - l’écho provenant de la surface – a une amplitude positive α12 et que tous les autres échos, qui sont des allers-retours dans la plaque, ont des amplitudes négatives α 2k✁1 21 . Nous présentons deux exemples avec des plaques d’aluminium de même composition. Le premier est un problème d’évaluation non destructive (END), où il convient d’identifier la vitesse à partir de l’estimation de T et de la connaissance de l’épaisseur. Le deuxième exemple est le contrôle non destructif (CND) de la plaque où le but est d’identifier l’épaisseur de la plaque à partir de l’estimation de T et de la connaissance de la vitesse. Dans un contexte pratique d’inspection, l’étape d’END est généralement réalisée avant tout contrôle. 5.2.2 Calcul d’incertitude La méthode des dérivées partielles indique que l’incertitude absolue ∆f d’une fonction f♣x1, x2, . . .q est ∆f ✏ ✞ ✞ ✞ ✞ ❇f ❇x1 ✞ ✞ ✞ ✞ ∆x1 ✞ ✞ ✞ ✞ ❇f ❇x2 ✞ ✞ ✞ ✞ ∆x2 . . . , (5.9) où ∆x2, ∆x2, . . . sont les incertitudes absolues sur les variables de f. Calcul d’incertitude sur la vitesse Le calcul de la vitesse s’effectuant par c0 ✏ 2d④T, on peut écrire le logarithme ln c0 ✏ ln 2d ✁ ln T. (5.10) En prenant la dérivée de cette fonction, on obtient l’incertitude relative ∆c0 c0 ✏ ∆d d ∆T T . (5.11) 1225.2 Plaque de matériau homogène Calcul d’incertitude sur l’épaisseur D’une façon similaire, l’incertitude relative sur le calcul de l’épaisseur s’écrit ∆d d ✏ ∆c0 c0 ∆T T . (5.12) 5.2.3 Estimation du temps de vol moyen par moindres carrés Pour les matériaux homogènes, on peut considérer un modèle de convolution invariant (se reporter à la section 2.2 du chapitre 2). Le modèle de signal pour une plaque définie par l’équation (5.7) est une répétition de la réponse instrumentale tous les T [Saniie et Nagle 1989]. Pour K échos, on peut écrire un modèle équivalent y♣tq ✏ K ➳✁1 k✏0 akhi♣t ✁ kTq. (5.13) où les ak correspondent aux amplitudes de chaque écho, définies dans la partie 5.2.1. Pour les signaux discrets, il est alors possible d’écrire le modèle y ✏ HTx, (5.14) où la matrice HT est composée des K réponses hi retardées de kT et x est constitué des ak. L’estimation du temps de vol T♣ est réalisée par minimisation des moindres carrés T♣ ✏ arg min T ⑥y ✁ HTx⑥ 2 . (5.15) La solution optimale x♣ est obtenue par inverse généralisée (voir partie 3.2.2 du chapitre 3) et s’écrit x♣ ✏ HT THT ✟✁1 HT T y. (5.16) La résolution de l’équation (5.15) revient donc à T♣ ✏ arg max T y THT HT THT ✟✁1 HT T y. (5.17) Cette optimisation scalaire peut être effectuée en discrétisant T sur une grille. Cette méthode est dédiée au calcul d’un temps de vol moyen pour les plaques. Nous l’utilisons dans la suite pour réaliser l’évaluation et le contrôle d’épaisseur de plaques d’aluminium. A la différence des méthodes de déconvolution classique, elle ne peut être utilisée pour détecter des défauts. 5.2.4 END d’une plaque épaisse Les mesures sont réalisées en incidence normale avec un transducteur plan circulaire de diamètre 12.7 mm et de fréquence centrale 2.25 MHz. Les données reçues sont échantillonnées à 100 MHz. Nous étudions plusieurs plaques d’aluminium de même composition mais d’épaisseurs différentes. Le principe est de calculer la vitesse des ondes c0 à partir de la connaissance de l’épaisseur d c0 ✏ 2d T . (5.18) 123CHAPITRE 5 : Application au CND Habituellement, T est déterminé par seuillage, passage par zéro ou détection de maximum [Krautkramer et Krautkramer 1990, chap. 11]. Ces méthodes se révèlent peu précises et diffi- cilement applicables lorsque les échos se mélangent, même partiellement. La déconvolution peut être une méthode efficace et précise pour estimer T. Nous utilisons pour cela les mé- thodes • par pénalisation `1 : méthode homotopique [Malioutov et al. 2005], • par pénalisation `0 : algorithme bi-directionnel SBR [Soussen et al. 2011], • par minimisation des moindres carrés par rapport au temps de vol. Nous montrons tout d’abord les résultats obtenus à partir de données acquises avec une plaque de 20.5 mm d’épaisseur sur la figure 5.4. La réponse instrumentale est obtenue à 0 0.5 1 1.5 2 −1 −0.5 0 0.5 1 (a) R´eponse instrumentale hi(t) 0 10 20 30 −1 −0.5 0 0.5 1 (b) Donn´ees y(t) 0 10 20 30 −0.5 0 0.5 1 1.5 (c) D´econvolution ℓ1 xb(t) 0 10 20 30 −0.5 0 0.5 1 1.5 (e) D´econvolution SBR 0 10 20 30 −0.5 0 0.5 1 1.5 t [µs] (g) Optimisation T 0 10 20 30 −1 −0.5 0 0.5 1 (d) Mod´elisation r = 0.02880 0 10 20 30 −1 −0.5 0 0.5 1 (f) Mod´elisation r = 0.03768 0 10 20 30 −1 −0.5 0 0.5 1 t [µs] (h) Mod´elisation r = 0.03768 FIGURE 5.4 – Déconvolution pour l’END d’une plaque d’aluminium de 20.5 mm d’épaisseur. (a) réponse instrumentale, (b) données, (c) déconvolution par pénalisation `1 et (d) adéquation aux données, (e) déconvolution par SBR et (f) adéquation aux données, (g) optimisation T et (h) adéquation aux données. partir de l’écho de surface et est tracée sur la figure 5.4a. Sur la figure 5.4b, les échos contenus dans les données sont bien séparés et correspondent aux allers-retours des ultrasons dans la plaque. Les résultats de déconvolution sont représentés sur les figures 5.4c-e-f. Les paramètres de régularisation sont réglés de façon à obtenir un maximum de bonnes détections. La déconvolution par pénalisation `1 parvient à détecter tous les échos mais au prix de pics doubles. La déconvolution par SBR et par optimisation sur le temps de vol aboutissent aux mêmes résultats, sans pics doubles, en accord avec la séquence attendue. Nous traçons également les données modélisées y♣ ✏ Hx♣ par chaque méthode et affichons la norme du 1245.2 Plaque de matériau homogène résidu r ✏ ⑥y ✁ Hx♣⑥ 2 . La pénalisation `1 parvient à une meilleure adéquation aux données grâce à sa cardinalité plus élevée. Dans un contexte d’END, où il s’agit de retrouver des temps de vol, la déconvolution par pénalisation `1 n’est cependant pas adaptée car elle est sujette à produire des doublons ou des pics de faibles amplitudes. Ceci est dû à la pénalisation des amplitudes et non de la cardinalité. Les résultats de l’estimation de la vitesse pour quatre plaques sont affichés dans le tableau 5.1. La méthode utilisée pour la déconvolution est l’optimisation sur le temps de vol. épaisseur d (mm) temps de vol moyen T (µs) vitesse c0 (m.s✁1 ) 60.4 ✟ 0.2 18.98 ✟ 0.04 6370 ✟ 35 39.1 ✟ 0.2 12.20 ✟ 0.04 6410 ✟ 54 20.5 ✟ 0.1 6.43 ✟ 0.04 6380 ✟ 71 4.0 ✟ 0.05 1.24 ✟ 0.04 6370 ✟ 285 moyenne 6383 TABLE 5.1 – Estimation des vitesses des ondes longitudinales dans l’aluminium et calcul d’incertitude pour plusieurs épaisseurs de plaques d’aluminium. Les valeurs obtenues sont du même ordre de grandeur. Nous affichons également l’incertitude due aux imprécisions de la mesure d’épaisseur et au calcul des temps de vol (voir partie 5.2.2). Les incertitudes absolues sur l’épaisseur ont été obtenues en mesurant l’épaisseur au pied à coulisse à plusieurs endroits des plaques. Celle sur le temps de vol moyen a été arbitrairement fixée à 4TS ✏ 0.04 µs. Les valeurs des vitesses et des incertitudes sont en adéquation avec la littérature [Selfridge 1985] car, suivant la composition de l’aluminium, la vitesse des ondes longitudinales peut varier entre 6200 et 6500 m.s✁1 . Même pour une épaisseur de 4 mm, pour laquelle les échos se mélangent partiellement, on parvient à détecter les temps de vol et à en déduire correctement une vitesse. La valeur moyenne est celle que nous utiliserons pour le contrôle non destructif de ce matériau. Le problème de l’estimation de l’impédance et de la masse volumique Les amplitudes des pics permettent de calculer l’impédance acoustique, dont on déduit la masse volumique. Concrètement, à partir de l’équation (5.7), on calcule α21 pour chaque pic détecté. Ensuite, à partir de l’impédance de l’eau Z1, l’impédance de l’aluminium est donnée par Z2 ✏ Z1 ✂ 1 ✁ α21 1 α21✡ . (5.19) Une fois les valeurs moyennées, on peut estimer l’impédance acoustique et la masse volumique, dont les valeurs sont récapitulées dans le tableau 5.2 pour plusieurs épaisseurs de plaques (pour la méthode d’optimisation sur le temps de vol). D’après les données fournies par le constructeur, l’impédance théorique1 de cet aluminium se situe plutôt autour de 16.9 MPa.s.m✁1 et la masse volumique vers 2660 kg.m✁3 . Cette différence provient de l’atténuation qui, même si elle est très faible, crée un affaiblissement de l’amplitude de la 1L’impédance théorique Z ✏ ρc est calculée à partir de la vitesse des ondes longitudinales c ✏ ❜ E♣1✁νq ρ♣1νq♣1✁2νq , où E est le module d’Young et ν est le coefficient de Poisson du matériau. 125CHAPITRE 5 : Application au CND épaisseur d (mm) impédance Z2 (MPa.s.m✁1 ) ρ2 (kg.m✁3 ) 60.4 9.3 1462 39.1 10.7 1671 20.5 12.1 1891 4.0 13.7 2154 TABLE 5.2 – Estimation de l’impédance et de la masse volumique pour plusieurs épaisseurs de plaques d’aluminium, avec les vitesses du tableau 5.1. forme a♣zq ✏ a0 exp ♣✁αzq, où z est la distance de propagation dans le matériau (voir la partie 2.1.3 page 30 pour l’analogie fréquentielle). En accord avec ce modèle, on remarque que les estimations de Z2 et de ρ2 se rapprochent des valeurs théoriques lorsque l’épaisseur diminue. Ce comportement est logique car l’atténuation est plus faible quand la distance de propagation diminue. Cette décroissance due à l’atténuation n’étant pas facile à quantifier, l’estimation de l’impédance, et donc de la masse volumique, est difficile à réaliser. Malgré tout, Zala [1992] utilise cette formulation pour retrouver les impédances lors de l’inversion, en réglant empiriquement les valeurs de a0 et α. 5.2.5 CND d’une plaque fine Nous nous intéressons au contrôle d’une plaque fine d’aluminium où le but est d’estimer l’épaisseur d à partir de la connaissance de la vitesse c0 d ✏ c0T 2 . (5.20) La vitesse c0 est obtenue grâce à l’évaluation non destructive réalisée précédemment. Nous utilisons une plaque fine d’épaisseur 2 mm inspectée par le même transducteur que dans la partie 5.2.4. Les données sont représentées sur la figure 5.5b. Dans ce cas de figure, les échos sont fortement mélangés et il est nécessaire d’utiliser une méthode de séparation d’échos. Les résultats par déconvolution avec les trois approches présentées dans la partie précédente sont affichés sur les figures 5.5c-e-g. La modélisation des signaux ainsi que les résidus d’estimation sont représentés sur les figures 5.5d-f-h. Comme dans l’exemple précédent, la déconvolution par pénalisation `1 ne fournit pas de solution acceptable car elle produit de nombreuses fausses détections. Ce surplus de pics aboutit par conséquent à une meilleure adéquation aux données et à un plus faible résidu d’estimation. La solution de SBR est acceptable et permet d’identifier quatre pics en conformité avec la vérité [Saniie et Nagle 1989]. Cette solution est néanmoins moins bonne que celle fournie par l’optimisation en fonction du temps de vol. L’a priori de pics régulièrement espacés fonctionne bien ici et aboutit à une plus grande capacité de bonnes détections (huit pics). Les résultats du calcul d’épaisseur avec SBR et l’optimisation en T sont représentés dans le tableau 5.3. A partir de la partie 5.2.2, les incertitudes de mesure sont également calculées. La déconvolution par pénalisation `1 ne permet pas d’estimer une épaisseur à cause des mauvaises détections. Une telle estimation nécessiterait un post-traitement des résultats de déconvolution afin de sélectionner, par exemple, les pics régulièrement espacés. L’optimisation en fonction du temps de vol donne l’épaisseur la plus proche de la vraie valeur. 1265.3 Matériaux atténuants 0 0.5 1 1.5 2 −1 −0.5 0 0.5 1 (a) R´eponse instrumentale hi(t) 6 8 10 12 14 −1 −0.5 0 0.5 1 (b) Donn´ees y(t) 6 8 10 12 14 −0.5 0 0.5 1 (c) D´econvolution ℓ1 xb(t) 6 8 10 12 14 −0.5 0 0.5 1 1.5 2 (e) D´econvolution SBR xb(t) 6 8 10 12 14 −0.5 0 0.5 1 1.5 2 t [µs] (g) Optimisation T xb(t) 6 8 10 12 14 −1 −0.5 0 0.5 1 (d) Mod´elisation r = 0.31770 y(t) yb(t) 6 8 10 12 14 −1 −0.5 0 0.5 1 (f) Mod´elisation r = 0.75401 y(t) yb(t) 6 8 10 12 14 −1 −0.5 0 0.5 1 t [µs] (h) Mod´elisation r = 0.51781 y(t) yb(t) FIGURE 5.5 – Déconvolution pour le CND d’une plaque d’aluminium de 2 mm d’épaisseur. (a) réponse instrumentale, (b) données, (c) déconvolution par pénalisation `1 et (d) adéquation aux données, (e) déconvolution par SBR et (f) adéquation aux données, (g) optimisation T et (h) adéquation aux données. méthode temps de vol moyen (µs) épaisseur (mm) SBR 0.612 ✟ 0.1 1.952 ✟ 0.34 optimisation T 0.620 ✟ 0.1 1.979 ✟ 0.34 TABLE 5.3 – Mesure d’épaisseur dans l’aluminium par déconvolution avec c0 ✏ 6383 ✟ 50 m.s✁1 . 5.3 Matériaux atténuants Nous utilisons ici des données acquises à partir d’une plaque de polycarbonate immergée dans l’eau. Le système instrumental emploie un transducteur non focalisé de 12.7 mm de diamètre et centré à 5 MHz. Les données sont représentées sur la figure 5.6a, les deux cadres correspondant à des dynamiques différentes pour mieux visualiser l’écho de fond. Elles sont constituées d’un écho de surface et d’un écho de fond très fortement atténué. La déconvolution est utile dans ce cas de figure pour deux raisons. Premièrement, l’écho de fond est très atténué et presque noyé dans le bruit, ce qui peut rendre sa détection visuelle difficile par un opérateur. Deuxièmement, la distorsion de la phase due à la dispersion rend compliqué le positionnement précis du temps de vol de l’écho. Pour pallier ces deux problèmes, la déconvolution prenant en compte le modèle de propagation développé au chapitre 2 permet dans cet exemple la prédiction et la détection de l’écho. Nous utilisons ici l’algorithme OLS. Le 127CHAPITRE 5 : Application au CND 0 2 −1 −0.5 0 0.5 1 (a) 2 4 6 8 10 −6 −4 −2 0 2 4 6 x 10 −3 (a) Donn´ees 0 2 −1 −0.5 0 0.5 1 (b) 2 4 6 8 10 −6 −4 −2 0 2 4 6 x 10 −3 (b) D´econvolution sans att. 0 1 2 3 4 5 6 7 8 9 10 −0.01 −0.005 0 0.005 0.01 (c) R´esidu sans att. r = 1.009 10−2 0 2 −1 −0.5 0 0.5 1 t [µs] (d) 2 4 6 8 10 −6 −4 −2 0 2 4 6 x 10 −3 t [µs] (d) D´econvolution avec att. 0 1 2 3 4 5 6 7 8 9 10 −0.01 −0.005 0 0.005 0.01 t [µs] (e) R´esidu avec att. r = 1.057 10−2 FIGURE 5.6 – Déconvolution pour le CND d’une plaque de polycarbonate de 10.2 mm d’épaisseur. (a) : données, (b) : données (–), déconvolution sans atténuation (✍) et modélisation (- -), (c) : résidu, (d) : données (–), déconvolution avec atténuation (✍) et modélisation (- -), (e) : résidu. paramètre de régularisation est réglé de façon à détecter un pic dans la région de l’écho de fond. Nous nous attendons à trouver un pic positif pour la surface et un pic négatif pour le fond (voir partie 5.2.1). Pour construire les matrices G, nous utilisons deux modèles : un modèle sans atténuation où la matrice G est construite à partir de la réponse instrumentale seule et un modèle avec atténuation linéaire et phase dispersive (se rapporter à la section 2.2 du chapitre 2 pour plus d’explications). Nous utilisons les paramètres obtenus dans la partie 2.3.4 du chapitre 2 : c0 ✏ 2273 m.s✁1 , c✽ ✏ 2280 m.s✁1 et α0 ✏ 53.5 Np.MHz✁1 .m✁1 . Les résultats de déconvolution sans et avec atténuation sont respectivement représentés sur les figures 5.6b et 5.6d. Nous traçons également les résidus d’estimation y ✁ Gxˆ sur les figures 5.6c et 5.6e. Les résultats numériques sont récapitulés dans le tableau 5.4. La Vérité Sans atténuation Avec atténuation 0 0 0 1.08 ✁ 1.40 ✁ 10.2 ✁ 10.02 10.23 ✁ TABLE 5.4 – Positions spatiales en mm et signes des pics obtenus pour la déconvolution des données de la plaque de polycarbonate de 10.2 mm d’épaisseur. 1285.4 Plaques avec trous à fond plat solution sans atténuation contient quatre pics dont un dans la zone de l’écho de fond. Il est positionné à 9.12 µs et est de signe positif, ce qui est contraire à la vérité. La position du fond correspondante est 10.02 mm. Il y a également deux fausses détections entre 1 µs et 2 µs. Ces erreurs sont dues à l’imprécision du modèle sans atténuation. Le résultat de déconvolution avec atténuation dispersive présente seulement deux pics, pour la surface et pour le fond, et de signes conformes à la réalité. L’estimation de l’épaisseur est dans ce cas plus juste : 10.23 mm. Il est à noter que l’erreur quadratique est légèrement plus faible pour le modèle sans atténuation. Ceci est dû au fait que les deux fausses détections se situent dans une zone où le bruit a une énergie importante. L’erreur résiduelle est en revanche plus faible dans la zone de l’écho de fond pour le modèle avec atténuation. 5.4 Plaques avec trous à fond plat 5.4.1 Cas d’un Ascan Dans cet exemple, le signal est acquis avec un transducteur plan circulaire de diamètre 12.7 mm et de fréquence centrale 2.25 MHz. La pièce de test est une plaque de polyméthacrylate de méthyle (PMMA2 ) d’épaisseur 23.9 mm qui contient un trou à fond plat (Flat Bottom Hole, FBH) de diamètre 10 mm et de longueur percée 0.5 mm. Ce matériau possède des propriétés d’atténuation linéaire [Selfridge 1985]. Le transducteur est placé en incidence normale par rapport à la plaque, du coté non débouchant du FBH. La proximité du FBH et du fond crée le mélange des deux échos autour de 18 µs (cf. Figure 5.7a). Le but est alors de détecter les positions du trou et du fond de la plaque. Dans ce cas de figure, la déconvolution peut permettre de retrouver les positions précises des échos mélangés. Le signal x♣ est supposé avoir un pic positif pour la surface et deux pics négatifs pour le FBH et le fond. Comme précédemment, un modèle invariant (sans atténuation) est utilisé ainsi qu’un modèle avec atténuation linéaire et phase dispersive. Les paramètres des modèles sont c0 ✏ 2771 m.s✁1 , c✽ ✏ 2805 m.s✁1 et α0 ✏ 12.3 Np.MHz✁1 .m✁1 [Carcreff et al. 2014b]. Pour cet exemple, nous utilisons un algorithme issu de SBR avec détection simultanée de deux pics à chaque itération (voir algorithme SDBR section 3.4). Cette démarche est particulièrement adaptée ici afin d’obtenir la meilleure sélection de deux pics lorsque les échos sont fortement recouvrants, alors que OLS et SBR localisent plus souvent un minimum local. Les résultats sont représentés dans les figures 5.7b et 5.7d. Les résidus sont tracés sur les figures 5.7c et 5.7e, et les résultats numériques sont reportés dans le tableau 5.5. Nous Vérité Sans atténuation Avec atténuation 0 0 0 23.4 ✁ 23.26 22.99 ✁ 23.9 ✁ 23.51 23.77 ✁ TABLE 5.5 – Positions spatiales en mm et signes des pics obtenus pour les deux exemples de déconvolution des données de la plaque de PMMA contenant un trou à fond plat. observons que les deux méthodes détectent deux pics dans la zone de mélange [17 µs, 19 µs]. Le premier pic correspond à l’écho du FBH alors que le deuxième correspond au fond de 2Le PMMA est également connu sous le nom de la marque Plexiglas®. 129CHAPITRE 5 : Application au CND 0 2 4 −1 −0.5 0 0.5 1 (a) 4 6 8 10 12 14 16 18 20 −0.1 −0.05 0 0.05 0.1 (a) Donn´ees 0 2 4 −1 −0.5 0 0.5 1 (b) 4 6 8 10 12 14 16 18 20 −0.2 −0.1 0 0.1 0.2 0.3 (b) D´econvolution sans att. 0 2 4 6 8 10 12 14 16 18 20 −0.04 −0.02 0 0.02 0.04 (c) R´esidu sans att. r = 3.704 10−2 0 2 4 −1 −0.5 0 0.5 1 t [µs] (d) 4 6 8 10 12 14 16 18 20 −0.1 −0.05 0 0.05 0.1 t [µs] (d) D´econvolution avec att. 0 2 4 6 8 10 12 14 16 18 20 −0.04 −0.02 0 0.02 0.04 t [µs] (e) R´esidu avec att. r = 2.141 10−2 FIGURE 5.7 – Déconvolution pour le CND d’une plaque de PMMA contenant un FBH. (a) : données, (b) : données (–), déconvolution sans atténuation (✍) et modélisation (- -), (c) : résidu, (d) : données (–), déconvolution avec atténuation (✍) et modélisation (- -), (e) : résidu. la plaque. Le résidu plus élevé et les pics positifs obtenus par déconvolution sans atténuation montrent bien que l’approche avec le modèle d’atténuation est plus adaptée. En effet, les deux pics détectés sont négatifs et permettent une meilleure adéquation aux données. En termes de modélisation, on remarque que la différence majeure provient de l’écho provenant du trou, l’écho de fond étant relativement bien modélisé. Comme cela a été mis en évidence dans la partie 2.3.5 du chapitre2, la signature de diffraction n’est pas prise en compte dans le modèle, et mène inévitablement à une mauvaise modélisation. La prise en compte de l’atténuation dans le modèle permet néanmoins d’assurer une bonne adéquation et de détecter correctement la position du trou. Cet exemple montre qu’il est nécessaire, dans certains cas, d’allier un modèle précis avec un algorithme plus évolué. Des améliorations pourraient cependant être réalisées en intégrant des profils de diffraction des trous à fond plat. 5.4.2 Cas d’un Bscan Nous utilisons maintenant une plaque d’aluminium de 40 mm d’épaisseur percée par quatre trous à fond plat de profondeurs 10, 4, 2 et 1 mm comme illustré sur la figure 5.8. Un transducteur diamètre 12.7 mm et de fréquence centrale 5 MHz est placé en incidence normale du côté non débouchant des trous. Plusieurs A-scans sont acquis en suivant un balayage horizontal du bras mécanique portant le transducteur pour former un B-scan. Il est représenté sur la figure 5.9a. Sur chaque ligne verticale, on peut identifier les échos provenant respectivement de la surface, du FBH le cas échéant et du fond de la plaque. Pour la déconvolution, la réponse est identifiée avec l’écho de surface de façon à former un modèle invariant. Un 1305.4 Plaques avec trous à fond plat FIGURE 5.8 – Photo des quatre trous à fond plat de diamètre 10 mm percés dans la plaque d’aluminium d’épaisseur 40 mm. Les profondeurs des trous sont respectivement 10, 4, 2 et 1 mm. x [mm] z [mm] (a) Bscan brut 50 100 150 200 250 0 10 20 30 40 50 −1 −0.5 0 0.5 1 x [mm] z [mm] (b) Bscan deconvolu´e 50 100 150 200 250 0 10 20 30 40 50 0 0.2 0.4 0.6 0.8 1 FIGURE 5.9 – Déconvolution d’un B-scan issu d’une plaque d’aluminium contenant quatre trous à fond plat. (a) B-scan brut, (b) B-scan déconvolué en valeur absolue. algorithme de type OMP est ensuite utilisé sur chaque A-scan. Grâce à la vitesse des ondes mesurée dans cet aluminium dans la partie 5.2.4 – c0 ✏ 6383 m.s✁1 – il est possible de créer une image spatiale à partir des résultats de déconvolution (voir figure 5.9a). Cette image à haute résolution permet d’identifier la géométrie de la pièce et de localiser précisément chaque trou. 131Conclusion et perspectives Conclusion générale Dans ce travail de thèse, nous nous sommes intéressés à la détection de discontinuités en contrôle non destructif ultrasonore. Dans le chapitre 1, nous avons montré que cette dé- marche pouvait se formuler comme un problème inverse où il s’agit d’identifier les temps de vol et les amplitudes d’échos reçus par le capteur. Plusieurs problèmes rendent difficile cette inversion, auxquels nous avons tenté d’apporter des solutions. Tout d’abord, le modèle direct est souvent formulé par un modèle linéaire invariant : le produit de convolution entre une réponse instrumentale et un train d’impulsions. Ce dernier est composé de pics placés aux positions des discontinuités et avec des amplitudes traduisant les changements d’impédance acoustique. Ce modèle est invariant en fonction de la distance de propagation et n’est pas adapté en présence d’atténuation. En effet, ce phénomène provoque la perte des hautes fréquences au fur et à mesure que la distance de propagation augmente. Dans le chapitre 2, nous avons par conséquent développé un modèle qui prend en compte une atténuation en loi de puissance dans le domaine fréquentiel. C’est un modèle physique à deux paramètres, qui a démontré sa capacité à modéliser correctement plusieurs types de matériaux. Dans ce modèle, la dispersion est calculée à partir des paramètres de l’atténuation de façon à respecter la causalité des signaux. Dans ce cas, nous avons en particulier proposé un calcul analytique de la dispersion lorsque la loi d’atténuation est linéaire. Le modèle reste linéaire, mais ne s’écrit plus comme un produit de convolution. Dans ce modèle, la forme des signaux change en fonction de la distance de propagation et permet de prédire la forme d’un écho pour une distance donnée. À partir de données expérimentales acquises avec des matériaux atténuants (polycarbonate, huile de ricin, mousse poreuse), nous avons montré que le modèle développé est plus performant qu’un modèle ne prenant pas en compte l’atténuation. Il est également comparé au modèle empirique d’atténuation d’Olofsson et Stepinski [2001], et fournit de meilleurs résultats. Ce modèle a été exploité pour réaliser l’évaluation non destructive de matériaux. Par une procédure de type filtre adapté, nous obtenons des estimations relativement précises du coefficient d’atténuation et de la célérité des ondes longitudinales. À la fin du chapitre 2, par l’intermédiaire de mesures réalisées sur une plaque comportant un trou à fond plat, une des limites du modèle est abordée. En effet, la diffraction due à la réflexion sur le trou a une signature particulière non prise en compte par le modèle. Le chapitre 3 se consacre aux méthodes d’estimation des temps de vol et des amplitudes des échos. Le problème inverse peut être abordé par une approche de minimisation des moindres carrés non linéaires. Il s’agit alors d’estimer un jeu de paramètres pour chaque écho défini par un modèle spécifique. Dans le chapitre 3, avec des signaux synthétiques suivant un modèle d’écho gaussien, nous mettons en évidence les difficultés des approches 133Conclusion et perspectives d’optimisation non-linéaire (Gauss-Newton, Levenberg-Marquardt, SAGE), pourtant couramment utilisées en contrôle non destructif. Celles-ci sont très sensibles aux initialisations des paramètres, et mènent souvent à une convergence vers des minima locaux. Ces mé- thodes ne semblent de ce fait pas adaptées à l’identification de plusieurs échos, de surcroît s’ils sont mélangés. D’autres méthodes utilisent un modèle linéaire, comme celui que nous avons développé. Nous montrons que le caractère mal posé du problème inverse associé ne permet pas d’utiliser une inversion directe. En effet, celle-ci a pour effet d’amplifier les hautes fréquences dues au bruit contenu dans les données. Il est donc nécessaire d’introduire une régularisation qui stabilise l’inversion et favorise une connaissance a priori de la solution. Dans notre étude, les trains d’impulsions recherchés sont des solutions piquées ou parcimonieuses, c’est-à-dire contenant un grand nombre de valeurs nulles. Nous détaillons quelques fonctions de régularisation dans le chapitre 3, notamment la norme `1 qui est très utilisée en déconvolution parcimonieuse. Cette approche est efficace et a souvent été utilisée en contrôle non destructif, mais produit des solutions avec des pics dédoublés et des pics de faibles amplitudes, à cause de la pénalisation linéaire des amplitudes. Pour cette raison, nous préférons nous intéresser à la régularisation par la pseudo-norme `0, qui pénalise la cardinalité des solutions. Cette pénalisation n’offre pas de solution algorithmique rapide et optimale, et requiert des heuristiques d’exploration des solutions. Nous détaillons quelques méthodes comme les algorithmes gloutons et l’algorithme Single Best Replacement (SBR), qui surpasse les méthodes gloutonnes. Nous avons mis en évidence les performances limitées de ces méthodes à détection simple lorsque les échos interfèrent. Nous avons proposé alors plusieurs algorithmes issus de SBR qui réalisent une exploration plus complexe. Dans un premier temps, nous présentons un algorithme réalisant des mouvements multiples dans une fenêtre. La taille de la fenêtre influe directement sur les performances, mais également sur le temps de calcul. Avec des exemples simulés, nous montrons qu’il est plus efficace que SBR, mais nécessite un temps de calcul important. Nous proposons alors de restreindre le nombre de combinaisons à tester grâce à un calcul d’auto-corrélation multidimensionnelle. Ce calcul permet de proposer les positions qui produisent les estimations les plus corrélées à l’écho de référence, cherchant ainsi à éviter les minima locaux. L’algorithme associé que nous proposons permet d’obtenir des performances nettement supérieures à SBR, pour une augmentation limitée du coût de calcul et un nombre de combinaisons testées équivalent. La discrétisation à la période d’échantillonnage du modèle de convolution continue défi- nissant notre problème, peut mener à des approximations du modèle discret. En effet, le train d’impulsions réel à retrouver est à temps continu. Dans le chapitre 4, nous avons pour cela proposé de discrétiser plus finement le produit de convolution continu. Nous avons utilisé un facteur de sur-échantillonnage qui permet d’avoir une résolution temporelle multiple de la période d’échantillonnage. Dans un cadre sans atténuation, le modèle obtenu n’est plus un produit de convolution, mais équivalent à une somme de convolutions discrètes. Nous avons montré que ce modèle a une forme générique de système à entrées multiples et sortie unique (MISO). Dans ce chapitre, nous avons mis en œuvre plusieurs algorithmes d’approximation parcimonieuse adaptés pour les systèmes MISO. Ceux-ci sont accélérés par des calculs efficaces dans le domaine de Fourier. Pour comparer les solutions obtenues avec la véritable séquence continue, nous avons utilisé un calcul de distance inspiré du domaine des neurosciences. Un exemple simple et des simulations de Monte-Carlo ont mis en évidence l’augmentation de la qualité des solutions quand le facteur de sur-échantillonnage augmente, avec un accroissement maîtrisé du coût de calcul. Nous avons enfin appliqué ces méthodes au 134Conclusion et perspectives calcul d’épaisseur de plaques minces d’aluminium, où les échos se mélangent. On parvient à une meilleure estimation de l’épaisseur grâce aux méthodes de déconvolution utilisant un modèle sur-échantillonné. Le chapitre 5 est dédié au traitement de données réelles avec des applications concrètes de contrôle non destructif. Une partie de ce chapitre est consacrée à l’estimation de la réponse instrumentale. Celle-ci peut être obtenue par mesure directe ou par des méthodes indirectes comme le moyennage dans le domaine homomorphique. Le premier cas réel abordé ensuite est le traitement des plaques homogènes dans un but d’évaluation ou de contrôle. Nous proposons pour cela une approche par moindres carrés à une inconnue, pour estimer un temps de vol moyen. Elle peut être vue comme une approche avec la contrainte d’un espacement régulier des pics. Cette méthode, spécialement adaptée aux plaques, permet d’obtenir de meilleurs résultats que la déconvolution par pénalisation `1 ou SBR. Dans un premier temps, nous appliquons les algorithmes par pénalisation `1, SBR et par minimisation par rapport au temps de vol à l’évaluation de plaques d’aluminium, où il s’agit d’estimer la vitesse des ondes longitudinales. Ensuite, le but est d’estimer l’épaisseur de plaques d’aluminium de faibles épaisseurs. Dans ce cas, les échos se superposent et les méthodes de déconvolution apportent des solutions efficaces pour identifier l’épaisseur. Le deuxième cas auquel nous nous sommes intéressés est le contrôle de matériaux atténuants. Suite à la partie expérimentale développée au chapitre 2, nous montrons ici l’intérêt du modèle avec atténuation dispersive pour la dé- tection d’échos atténués dans le polycarbonate. Ce modèle a, de par son caractère prédictif, une capacité plus importante de détection dans des environnements atténuants. La dernière partie s’intéresse à la détection de trous à fond plat dans des plaques d’aluminium et de plexiglas. Pour le plexiglas, nous avons montré ici l’intérêt d’allier un modèle adapté (notre modèle avec atténuation dispersive) à un algorithme performant à détections multiples. Dans le cas contraire, on aboutit à une mauvaise localisation du trou. Pour finir, nous formons une image B-scan à partir de plusieurs A-scan déconvolués. Ce type d’image parcimonieuse ou à haute résolution permet une meilleure interprétation, et une meilleure distinction des échos originellement mélangés. Perspectives Ce travail de recherche ouvre la voie à d’autres travaux sur les modèles ultrasonores, les méthodes d’inversion et les applications en contrôle non destructif. En ce qui concerne le modèle direct, la prise en compte des effets de diffraction est un verrou important des approches de déconvolution. Pour illustrer ce point, nous avons vu, à la fin du chapitre 2, que la réflexion sur un trou à fond plat a un effet passe-haut sur l’écho reçu. Or, ce phénomène n’est pas considéré dans le modèle développé, car nous prenons en compte l’atténuation qui a une nature passe-bas. Il sera donc intéressant de prendre en compte des signatures expérimentales dans le modèle linéaire. La difficulté de ce problème reste la multitude de signatures possibles dans un contexte de détection de défauts inconnus. Une solution consistera à proposer un certain nombre de signatures, cumulées à l’atténuation dispersive, dans un dictionnaire (à la manière des travaux de Lu et Michaels [2008]). Cette approche peut également être utilisée pour s’adapter aux réflexions multiples dans un matériau multi-couches. Une telle démarche offre l’avantage de la linéarité. Néanmoins, de par la taille importante du dictionnaire, il se pourrait que l’utilisation des algorithmes d’optimisation performants, comme OLS, SBR ou les extensions que nous avons développées, ne 135Conclusion et perspectives soient pas envisageables. L’emploi de méthodes peu coûteuses comme MP ou OMP serait sans doute incontournable. Le développement de méthodes performantes et rapides pour la détection de défauts est également un enjeu important concernant ce premier point. Pour revenir aux matériaux multi-couches, il est possible d’étendre le modèle linéaire avec atténuation pour prendre en compte plusieurs milieux successifs d’atténuations différentes. Dans un contexte d’évaluation, ceci pourrait être appliqué pour identifier les paramètres d’atténuation des différents milieux, à condition que les épaisseurs des couches soient connues et que les échos soient séparés. A la suite de cette procédure, on peut envisager de construire le modèle de propagation pour réaliser le contrôle du matériau multi-couches. Les modèles et méthodes testés dans ce travail concernent les ondes longitudinales, car nous avons réalisé nos mesures en incidence normale. Il sera donc intéressant de les tester avec des ondes transversales, qui apparaissent dans les milieux solides lorsque l’incidence est oblique. Le modèle pourrait être celui de deux systèmes concaténés, car il y aura deux types de réponses instrumentales. Cette approche pourra être appliquée dans un cadre de contrôle non destructif avec des tirs d’angle, où les deux types d’ondes se propagent, voire se mélangent. Cette perspective trouve écho pour le traitement des matériaux poreux, abordé au chapitre 2. Il sera intéressant d’étudier les modèles applicables, en termes d’atténuation et de dispersion, aux matériaux biphasiques (matériaux poreux par exemple). Ensuite, les méthodes d’inversion pourront être appliquées lorsque plusieurs types d’ondes se mélangent. Au chapitre 3, nous avons montré que les méthodes des moindres carrés non-linéaires sont intéressantes pour leur flexibilité. Par conséquent, elles permettent de s’adapter à des phénomènes difficiles à prendre en compte dans un modèle linéaire (atténuation, dispersion, diffraction). Malheureusement, elles sont sensibles aux initialisations et sont difficiles à appliquer en situation réelle. Des approches d’optimisation globale pourront pas conséquent être envisagées. Celles-ci pourraient également être couplées à des méthodes d’optimisation linéaire comme OLS ou SBR, pour raffiner l’estimation. L’étude des algorithmes de minimisation du critère des moindres carrés pénalisé par une pseudo-norme `0 effectuée au chapitre 3 mérite d’être poursuivie. Elle a en effet montré son efficacité pour des problèmes simulés (chapitre 3) et des problèmes réels de CND (chapitre 5). Les progrès récents en programmation en nombres entiers pour réaliser l’optimisation globale pourront également fournir des outils efficaces de comparaison des méthodes dé- veloppées. Par ailleurs, nous avons vu qu’il est possible de restreindre le nombre de candidats par une procédure d’auto-corrélation temporelle. Cette approche mène malheureusement à une implémentation logicielle non optimale avec Matlab, à cause des recherches d’indices et d’indexations qui sont lentes à effectuer. Il sera avantageux de comparer les algorithmes avec une implémentation faite sous un autre langage. D’un point de vue applicatif, les sondes multi-éléments sont très utilisées actuellement. L’approche de déconvolution parcimonieuse pourra par conséquent être adaptée à ce type de transducteurs. Cela nécessitera par exemple d’utiliser une réponse instrumentale par élément ou des réponses inter-éléments [Kerbrat et al. 2002]. Des extensions pourront être nécessaires à l’adaptation des méthodes inverses aux spécificités des multi-éléments, comme la focalisation, le tir avec angle, etc. De nos jours, les méthodes d’imagerie Synthetic Aperture Focusing Technique (SAFT) [Karaman et al. 1995, Lingvall et al. 2003] ou Focalisation en Tout Point (FTP) [Holmes et al. 2005] sont très utilisées et demandées par les industriels. Ces méthodes d’imagerie, couplées aux approches de déconvolution parcimonieuse, pourront fournir des performances supérieures en termes de reconstruction. Elles seront notamment intéressantes 136Conclusion et perspectives pour réduire le bruit de structure grâce à la capacité de débruitage de la déconvolution. L’application des modèles et méthodes est également possible pour d’autres techniques d’imagerie, notamment dans le domaine biomédical, comme la tomographie ultrasonore [Glover et Sharp 1977, Greenleaf et Bahn 1981] ou la restauration d’images biomédicales [Fatemi et Kak 1980, Jensen 1991]. 137Annexe A Relations de causalité A.1 Relation entre la partie réelle et imaginaire d’une fonction continue causale Tout signal h♣tq réel1 peut être considéré comme la somme d’un signal pair he♣tq et d’un signal impair ho♣tq [Papoulis 1962, Oppenheim et Schafer 1989] h♣tq ✏ he♣tq ho♣tq, (A.1) avec he♣tq ✏ h♣tq h♣✁tq 2 , (A.2) et ho♣tq ✏ h♣tq ✁ h♣✁tq 2 . (A.3) Si la transformée de Fourier de h♣tq est H♣fq ✏ R♣fq jX♣fq alors ✧ he♣tq ðñ R♣fq, ho♣tq ðñ X♣fq. (A.4) Si h♣tq est causale alors h♣tq ✏ 0 pour t ➔ 0 et réciproquement h♣✁tq ✏ 0 pour t → 0. h♣tq et h♣✁tq ne se superposant pas, excepté pour t ✏ 0, on peut écrire h♣tq ✏ 2he♣tqγ♣tq ✁ he♣0qδ♣tq, (A.5) où γ♣tq est la fonction échelon telle que γ♣tq ✏ ✧ 0 ❅t ➔ 0 1 ❅t ➙ 0. (A.6) La transformée de Fourier de γ♣tq est Γ♣fq ✏ 1 2 δ♣fq 1 j2πf . D’après l’équation (A.5), on peut écrire l’expression de la transformée de Fourier de h♣tq H♣fq ✏ 2R♣fq ✝ Γ♣fq ✁ he♣0q ✏ 2R♣fq ✝ ✂ 1 2 δ♣fq 1 j2πf ✡ ✁ he♣0q ✏ R♣fq jR♣fq ✝ ✁ 1 πf ✁ he♣0q. (A.7) 1 Il est possible de généraliser pour des signaux complexes (voir [Oppenheim et Schafer 1989]). 139CHAPITRE A : Relations de causalité La partie imaginaire de H♣fq s’écrit donc X♣fq ✏ R♣fq ✝ ✁ 1 πf ✏ ✁ 1 π ➺ ✽ ✁✽ R♣fq f ✁ s ds. (A.8) Cette dernière expression qui permet de déduire la partie imaginaire d’une fonction analytique à partir de sa partie réelle n’est autre que la transformée de Hilbert de R♣fq [Papoulis 1962, Oppenheim et Schafer 1989]. Notons également que h♣0q ✏ he♣0q ✏ ➺ ✽ ✁✽ R♣fqdf. (A.9) A.2 Relation entre le module et la phase d’une fonction discrète causale Pour plus de clarté nous posons ω ✏ 2πf, où ω est la pulsation en rad/s. Oppenheim et Schafer étendent le calcul précédent à des signaux à temps discret [Oppenheim et Schafer 1989]. Nous définissons le signal échelon à temps discret γrns ✏ γ♣nTSq, où TS est la période d’échantillonnage. La transformée de Fourier de γrns est Γ♣ωq ✏ ✽ ➳ k✏✁✽ πδ♣ω 2kπq 1 1 ✁ e ✁jω . (A.10) Le terme 1 1✁e✁jω peut être réécrit 1 1 ✁ e ✁jω ✏ 1 1 ✁ cos ω j sin ω ✏ 1 2 1 ✁ cos ω ✁ j sin ω 1 ✁ cos ω ✏ 1 2 ✁ 1 ✁ j cot ω 2 ✠ . (A.11) D’après l’équation (A.5), la transformée de Fourier de h♣tq s’écrit H♣ωq ✏ 2R♣ωq ✝ Γ♣ωq ✁ hr0s ✏ 1 2π ➺ π ✁π 2R♣θqΓ♣ω ✁ θqdθ ✁ hr0s ✏ 1 π ➺ π ✁π R♣ωq ✝ ✓ ✽ ➳ k✏✁✽ πδ♣θ 2kπq 1 2 ✂ 1 ✁ j cot ω ✁ θ 2 ✡✛ dθ ✁ hr0s ✏ R♣ωq 1 2π ➺ π ✁π R♣θqdθ ✁ j 1 2π ➺ π ✁π R♣θq cot ω ✁ θ 2 dθ ✁ hr0s ✏ R♣ωq ✁ j 1 2π ➺ π ✁π R♣θq cot ω ✁ θ 2 dθ. (A.12) La partie imaginaire de H♣ωq pour des signaux à temps discret s’écrit alors X♣ωq ✏ ✁ 1 2π P ➺ π ✁π R♣θq cot ✂ θ ✁ ω 2 ✡ dθ, (A.13) où P est la valeur principale de Cauchy. Pour une singularité en a, cette dernière est définie par P ➺ ✽ ✁✽ f♣xqdx ✏ limÑ0 ✂➺ a✁ ✁✽ f♣xqdx ➺ ✽ a f♣xqdx ✡ . (A.14) 140A.2 Relations de causalité Dans l’équation A.13, la singularité est en θ ✏ ω. Si une réponse a pour transformée de Fourier H♣ωq ✏ A♣ωqe jφ♣ωq , alors ln H♣ωq ✏ ln ⑤A♣ωq⑤ jφ♣ωq. Si on considère que ln H♣ωq est le spectre d’une fonction causale, l’équation (A.13) devient φ♣ωq ✏ ✁ 1 2π P ➺ π ✁π ln ⑤A♣ωq⑤ cot ✂ θ ✁ ω 2 ✡ dθ. (A.15) Dans le cas d’un module fonction de la fréquence, de la forme A♣fq ✏ e ✁α♣fq , on aboutit à φ♣fq ✏ 1 fS P ➺ fS 2 ✁ fS 2 α♣gq cot ✂ π fS ♣f ✁ gq ✡ dg, (A.16) où fS est la fréquence d’échantillonnage. A.2.1 Calcul de la phase dispersive pour une atténuation linéaire Avec une atténuation linéaire α♣fq ✏ α0⑤f⑤, le terme de phase (2.33) est ♣fq ✏ ✁α0fS 4π 2 J ✂ 2πf fS ✡ , avec J ♣ωq ✏ P ➺ π ✁π ⑤v⑤ cot ✁ω ✁ v 2 ✠ dv, ω P r✁π, πs. (A.17) La fonction J ♣ωq est impaire avec J ♣πq ✏ 0. Nous considérons ω Ps0, πr. En posant u ✏ ω ✁ v, nous obtenons J ♣ωq ✏ P ➺ ω ω✁π ♣ω ✁ uq cot u 2 du ✁ ➺ ωπ ω ♣ω ✁ uq cot u 2 du, (A.18) où la valeur principale de Cauchy de la première intégrale exclut 0 du domaine. Soit Fω♣uq la primitive de ♣ω ✁ uq cot u 2 . La primitive de cot u 2 est 2 ln ✞ ✞sin u 2 ✞ ✞ . De ce fait, une intégration par parties aboutit pour u Ps ✁ 2π, 2πr, u ✘ 0 à Fω♣uq ✏ 2♣ω ✁ uqln ✞ ✞ ✞ sin u 2 ✞ ✞ ✞ 2 ➺ u 0 ln ✞ ✞ ✞ sin ϕ 2 ✞ ✞ ✞ dϕ. (A.19) La dernière intégrale respecte alors ➺ u 0 ln ✞ ✞ ✞ sin ϕ 2 ✞ ✞ ✞ dϕ ✏ ✁Cl2♣uq ✁ u ln♣2q, (A.20) où Cl2♣uq ✏ ✁ ➩u 0 ln ✞ ✞2 sin ϕ 2 ✞ ✞ dϕ est la fonction de Clausen à l’ordre 2, i.e., la partie imaginaire du dilogarithme de e ju [Maximon 2003]. A partir de (A.18)-(A.20), on peut montrer que J ♣ωq ✏ 2Cl2♣ω πq 2Cl2♣ω ✁ πq ✁ 4Cl2♣ωq ✏ 4 ♣Cl2♣ω πq ✁ Cl2♣ωqq. (A.21) Finalement, on peut montrer que (A.21) est également valide pour w P r✁π, 0s. 141Annexe B Modèle de réponse impulsionnelle instrumentale B.1 Modèle d’écho gaussien Nous avons vu que la réponse impulsionnelle instrumentale peut être modélisée par un écho gaussien hi♣t, θq ✏ Ae✁ ♣t✁τq 2 2σ2 t cos♣2πf0♣t ✁ τ q φq, (B.1) où A est l’amplitude de l’écho, τ est le temps de vol, σ 2 t est la variance de l’enveloppe gaussienne, f0 est la fréquence centrale et φ est le décalage de phase. On définit alors le vecteur de paramètres θ ✏ rσt τ f0 φ As. B.2 Facteur de bande passante B.2.1 Définition Il est d’usage de définir un transducteur par son facteur de bande passante (bandwidth ratio, BWR) : BWRp ✏ ∆f ♣pq f0 , (B.2) où ∆f ♣pq est la largeur de bande fréquentielle pour une perte de p dB. Un facteur proche de zéro indique un signal à bande étroite tandis qu’un facteur supérieur à un correspond à un signal large bande. La perte p est définie comme le rapport des puissances en décibels p ✏ 10 log πp ✏ 20 log πa, (B.3) où πp désigne le rapport en puissance et πa le rapport en amplitude. Quelques correspondances sont récapitulées dans le tableau B.1. La convention la plus adoptée est de prendre la bande passante à mi-puissance maximale (half power bandwidth, HPBW) [Lingvall 2004b], c’est-à-dire p ✏ ✁3 dB. 143ANNEXE B : Modèle de réponse impulsionnelle instrumentale πp πa p (dB) ❄ 2 2 ✓ 0.707 ❜❄ 2 2 ✓ 0.84 -1.5 1 2 ✏ 0.5 ❄ 2 2 ✓ 0.707 -3 1 4 ✏ 0.25 1 2 ✏ 0.5 -6 1 16 ✏ 0.0625 1 4 ✏ 0.25 -12 TABLE B.1 – Exemples de correspondance entre le rapport de puissance πp, le rapport d’amplitude πa et la perte en décibels p. B.2.2 Application à la forme d’onde gaussienne Le module de la transformée de Fourier de la forme temporelle (B.1) est la somme de deux gaussiennes centrées en ✁f0 et f0. En considérant f0 ✧ 0, on peut négliger la contribution de la gaussienne en ✁f0 sur la gaussienne en f0. Cette dernière s’écrit ⑤Hi♣fq⑤ ✏ A ✶ e ♣f✁f0q 2 2σ2 f (B.4) avec A✶ ✏ Aσt ❄ 2π et σf ✏ 1④♣2πσtq. Nous cherchons ensuite la largeur de bande qui correspond à e ♣f✁f0q 2 2σ2 f ✏ πa. Après quelques manipulations, il vient ∆f ♣pq ✏ 2 ❜ 2σ 2 f ln ♣1④πaq. (B.5) Le facteur de bande passante est donc BWRp ✏ ∆f ♣pq f0 ✏ 2 ❛ 2 ln ♣1④πaq σf f0 , (B.6) et permet d’obtenir la variance fréquentielle σ 2 f ✏ ♣BWRpf0q 2 8 ln ♣1④πaq ✏ ✁ ♣BWRpf0q 2 8 ln ♣10p④20q . (B.7) Ce calcul permet donc de générer des échos gaussiens grâce à un paramètre physique de largeur de bande . Dans la réalité, les transducteurs ultrasonores ont des facteurs BWR✁3 compris entre 0.1 et 0.9. Plusieurs exemples de signaux avec des facteurs BWR✁3 différents sont représentés sur la figure B.1. 144B.2 Facteur de bande passante −2 −1 0 1 2 −1 −0.5 0 0.5 1 (a) : BWR−3 = 0.1 −2 −1 0 1 2 −1 −0.5 0 0.5 1 (b) : BWR−3 = 0.3 −2 −1 0 1 2 −0.5 0 0.5 1 t [µs] (c) : BWR−3 = 0.1 0 5 10 15 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 f [MHz] (d) : Transform´ees de Fourier BWR−3 = 0.1 BWR−3 = 0.3 BWR−3 = 0.9 FIGURE B.1 – Exemples de formes d’onde gaussiennes pour trois valeurs de BWRp (a-bc) avec p ✏ ✁3 et transformées de Fourier normalisées correspondantes (d). Paramètres : A ✏ 1, t0 ✏ 0 µs, f0 ✏ 5 MHz, φ ✏ 0. 145Annexe C Détails des calculs algorithmiques C.1 Critère d’ajout pour OLS et SBR Il s’agit d’ajouter d’une composante n ❘ Qi✁1 à l’itération courante i telle que Gi ✏ rGi✁1, gn s où gn est une colonne de G. On calcule alors la différence de critère ∆J n Qi✁1 ✏ µ ✎ ✎ ✎y ✁ Gi GT i Gi ✟✁1 GT i y ✎ ✎ ✎ 2 ✁ ✎ ✎ ✎y ✁ Gi✁1 GT i✁1Gi✁1 ✟✁1 GT i✁1y ✎ ✎ ✎ 2 . (C.1) Notons que ✎ ✎ ✎y ✁ G GTG ✟✁1 GT y ✎ ✎ ✎ 2 2 ✏ ✁ y T ✁ y TG GTG ✟✁1 GT ✠ ✁y ✁ G GTG ✟✁1 GT y ✠ ✏ ⑥y⑥ 2 ✁ 2y TG GTG ✟✁1 GT y y TG GTG ✟✁1 GTG GTG ✟✁1 GT y ✏ ⑥y⑥ 2 ✁ y TG GTG ✟✁1 GT y. (C.2) La différence de critère est alors ∆J n Qi✁1 ✏ µ ⑥y⑥ 2 ✁ y TGi GT i Gi ✟✁1 GT i y ✁ ⑥y⑥ 2 y TGi✁1 GT i✁1Gi✁1 ✟✁1 GT i✁1y ✏ µ y T ✁ Gi✁1 GT i✁1Gi✁1 ✟✁1 GT i✁1 ✁ Gi GT i Gi ✟✁1 GT i ✠ y. (C.3) Nous utilisons ensuite la décomposition Cholesky qui permet de poser GT i Gi ✏ LiL T i avec Li ✏ ✒ Li✁1 0 v T n an ✚ , (C.4) où vn ✏ L ✁1 i✁1GT i✁1gn et an ✏ ❜ ⑥gn ⑥ 2 ✁ ⑥vn⑥ 2 . LiL T i devient alors LiL T i ✏ ✒ Li✁1L T i✁1 Li✁1vn v T nL T i✁1 ⑥gn ⑥ 2 ✚ . (C.5) En utilisant le lemme d’inversion d’une matrice partitionnée, son inverse s’écrit LiL T i ✟✁1 ✏ ✔ ✕ Li✁1L T i✁1 ✟✁1 ♣LT i✁1 q ✁1vnv T n L ✁1 i✁1 ⑥gn⑥ 2✁⑥vn⑥ 2 ✁ ♣LT i✁1 q ✁1vn ⑥gn⑥ 2✁⑥vn⑥ 2 ✁ vnL ✁1 i✁1 ⑥gn⑥ 2✁⑥vn⑥ 2 1 ⑥gn⑥ 2✁⑥vn⑥ 2 ✜ ✢ . (C.6) 147ANNEXE C : Détails des calculs algorithmiques En insérant cette expression dans l’équation (C.3), on obtient ∆J n Qi✁1 ✏ µ y T ✁ Gi✁1 GT i✁1Gi✁1 ✟✁1 GT i✁1 ✁ Gi GT i Gi ✟✁1 GT i ✠ y ✏ µ y T ✁ Gi✁1 Li✁1L T i✁1 ✟✁1 GT i✁1 ✁ rGi✁1, gn s LiL T i ✟✁1 rGi✁1, gn s T ✠ y ✏ 1 ⑥gn⑥ 2✁⑥vn⑥ 2 y TGi✁1♣L T i✁1 q ✁1vnv T nL ✁1 i✁1GT i✁1y ✁ y T gnv T nL ✁1 i✁1GT i✁1y ✁y TGi✁1♣L T i✁1 q ✁1vng T n y y T gng T n y ✟ ✏ v T nL ✁1 i✁1GT i✁1y ✁ g T n y ✟2 ⑥gn ⑥ 2 ✁ ⑥vn⑥ 2 . (C.7) En posant ui✁1 ✏ L ✁1 i✁1GT i✁1y, la différence de critère est [Chen et al. 1989, Soussen et al. 2011] : ∆J n Qi✁1 ✏ µ ✁ v T nui✁1 ✁ g T n y ✟2 ⑥gn ⑥ 2 ✁ ⑥vn⑥ 2 . (C.8) C.2 Critère de retrait pour SBR Ici, on retire une colonne gm de Gi✁1 avec m P Qi✁1 : Gi✁1 ✏ rGi , gms. Le critère à calculer est toujours ∆J ✁m Qi✁1 ✏ ✁µ y T ✁ Gi✁1 GT i✁1Gi✁1 ✟✁1 GT i✁1 ✁ Gi GT i Gi ✟✁1 GT i ✠ y. (C.9) On a alors GT i✁1Gi✁1 ✏ ✒ GT i Gi GT i gm g T mGi ⑥gm⑥ 2 ✚ , (C.10) qui, grâce au lemme d’inversion de matrice partitionnée, a pour inverse GT i✁1Gi✁1 ✟✁1 ✏ ✒Wm wm wT m γm ✚ , (C.11) avec Wm ✏ GT i Gi ✟✁1 GT i Gi ✟✁1 GT i gmγmg T mGi GT i Gi ✟✁1 , (C.12) wm ✏ ✁ GT i Gi ✟✁1 GT i gmγm, (C.13) et γm ✏ ✁ ⑥gm⑥ 2 ✁ g T mGi GT i Gi ✟✁1 GT i gm ✠✁1 . (C.14) Par identification, on obtient Wm ✏ GT i Gi ✟✁1 wmγ ✁1 m wT m. (C.15) On peut alors écrire GT i✁1Gi✁1 ✟✁1 Gi✁1 ✏ ✒Wm wm wT m γm ✚ ✒GT i g T m ✚ ✏ ✒WmGT i wmg T m wT mGT i γmg T m ✚ , (C.16) 148C.2 Critère de retrait pour SBR et ensuite, grâce à l’expression de Wm dans l’équation (C.15) Gi✁1 GT i✁1Gi✁1 ✟✁1 GT i✁1 ✏ GiWmGT i Giwmg T m gmwT mGT i gmγmg T m ✏ Gi GT i Gi ✟✁1 GT i Giwmγ ✁1 m wT mGT i Giwmg T m gmwT mGT i gmγmg T m. (C.17) Le critère s’écrit alors ∆J ✁m Qi✁1 ✏ ✁µ y T ✁ Gi✁1 GT i✁1Gi✁1 ✟✁1 GT i✁1 ✁ Gi GT i Gi ✟✁1 GT i ✠ y ✏ ✁µ γ ✁1 m y TGiwmwT mGT i y y TGiwmγmg T my y T gmγmwT mGT i y y T gmγ 2 mg T my ✟ ✏ ✁µ γ ✁1 m wT mGT i y γmg T my ✟T wT mGT i y γmg T my ✟ ✏ ✁µ γ ✁1 m wT mGT i y γmg T my ✟2 . (C.18) A partir de l’équation (C.16), le m-ème terme de la solution x♣i✁1 ✏ GT i✁1Gi✁1 ✟✁1 GT i✁1y apparaît. Le critère pour le retrait d’un élément s’écrit alors [Reeves 1999, Miller 2002, Soussen et al. 2011] ∆J ✁m Qi✁1 ✏ x♣ 2 i✁1 rms γm ✁ µ. (C.19) 149Bibliographie AHARON, M., ELAD, M. et BRUCKSTEIN, A. (2006). K-SVD : An Algorithm for Designing Overcomplete Dictionaries for Sparse Representation. IEEE Transactions on Signal Processing, 54(11):4311–4322. 22, 120 AKAIKE, H. (1974). A new look at the statistical model identification. IEEE Transactions of automatic control, 19:716–723. 80 BAZARAA, M. S., SHERALI, H. D. et SHETTY, C. M. (2013). Nonlinear programming : theory and algorithms. John Wiley & Sons. 69 BIOT, M. A. (1956a). Theory of propagation of elastic waves in a fluid-saturated porous solid. I. Low-frequency range. The Journal of the Acoustical Society of America, 28(2): 168–178. 56 BIOT, M. A. (1956b). Theory of propagation of elastic waves in a fluid-saturated porous solid. II. Higher frequency range. The Journal of the Acoustical Society of America, 28(2): 179–191. 56 BLUMENSATH, T. et DAVIES, M. E. (2007). On the difference between Orthogonal Matching Pursuit and Orthogonal Least Squares. Rapport technique, University of Edinburgh. 80, 105, 107 BOSSMANN, F., PLONKA, G., PETER, T., NEMITZ, O. et SCHMITTE, T. (2012). Sparse Deconvolution Methods for Ultrasonic NDT. Journal of Nondestructive Evaluation, 31(3):225–244. 22 BOURGUIGNON, S., SOUSSEN, C., CARFANTAN, H. et IDIER, J. (2011). Sparse deconvolution : Comparison of statistical and deterministic approaches. In IEEE Statistical Signal Processing Workshop, pages 317–320. 23, 105 BRUNEAU, M. (1998). Manuel d’acoustique fondamentale. Hermes, Paris. 14, 15 CARCREFF, E., BOURGUIGNON, S., IDIER, J. et SIMON, L. (2012). High-resolution deconvolution applied to non destructive testing. In Acoustics 2012, Nantes, France. 42, 102 CARCREFF, E., BOURGUIGNON, S., IDIER, J. et SIMON, L. (2013a). Algorithmes de déconvolution impulsionnelle à résolution augmentée. In Actes du 24e colloque GRETSI, Brest, France. 42, 102 151BIBLIOGRAPHIE CARCREFF, E., BOURGUIGNON, S., IDIER, J. et SIMON, L. (2013b). Resolution enhancement of ultrasonic signals by up-sampled sparse deconvolution. In Proceedings of the IEEE International Conference on Acoustics, Speech and Signal Processing, pages 6511– 6515, Vancouver, Canada. 42, 102 CARCREFF, E., BOURGUIGNON, S., IDIER, J. et SIMON, L. (2014a). Contrôle non destructif des matériaux attnuants et dispersifs par d ´ convolution impulsionnelle. ´ In Actes du 12e Congrès Français d’Acoustique, Poitiers, France. 26 CARCREFF, E., BOURGUIGNON, S., IDIER, J. et SIMON, L. (2014b). A linear model approach for ultrasonic inverse problems with attenuation and dispersion. IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, 61(7):1191–1203. 26, 36, 129 CARCREFF, E., BOURGUIGNON, S., IDIER, J., SIMON, L. et DUCLOS, A. (2013c). Including frequency-dependent attenuation for the deconvolution of ultrasonic signals. In 19th International Congress on Acoustics, Montréal, Québec, Canada. 26 CARSTENSEN, E. L. et SCHWAN, H. P. (1959). Acoustic properties of hemoglobin solutions. The Journal of the Acoustical Society of America, 31(3):305–311. 34 CASSEREAU, D., GUYOMAR, D. et FINK, M. (1988). Time deconvolution of diffraction effects - application to calibration and prediction of tranducer waveforms. The Journal of Acoustical Society of America, 84(3):1073–1085. 62, 118 CHAMPAGNAT, F., GOUSSARD, Y. et IDIER, J. (1996). Unsupervised deconvolution of sparse spike trains using stochastic approximation. IEEE Transactions on Signal Processing, 44(12):2988–2998. 23 CHEN, C.-H., HSU, W.-L. et SIN, S.-K. (1988). A comparison of wavelet deconvolution techniques for ultrasonic NDT. In IEEE International Conference on Acoustics, Speech, and Signal Processing, volume 2, pages 867–870, New-York, USA. 23, 26 CHEN, S., BILLINGS, S. et LUO, W. (1989). Orthogonal least squares methods and their application to non-linear system identification. International Journal of Control, 50(5): 1873–1896. 23, 80, 82, 148 CHEN, S. S., DONOHO, D. L. et SAUNDERS, M. A. (1998). Atomic decomposition by basis pursuit. SIAM J. Sci. Comput., 20(1):33–61. 23, 76, 80 CHOUZENOUX, E. (2010). Recherche de pas par Majoration-Minoration. Application à la résolution de problèmes inverses. Thèse de doctorat, École Centrale de Nantes. 69 CHUNG, P. J. et BÖHME, J. F. (2001). Comparative convergence analysis of EM and SAGE algorithms in DOA estimation. IEEE Transactions on Signal Processing, 49(12):2940– 2949. 71 COOLEY, J. W. et TUKEY, J. W. (1965). An algorithm for the machine calculation of complex Fourier series. Mathematics of computation, 19(90):297–301. 106 152BIBLIOGRAPHIE COUVREUR, C. et BRESLER, Y. (2000). On the optimality of the backward greedy algorithm for the subset selection problem. The SIAM Journal on Matrix Analysis and Applications, 21(3):797–808. 85 DAVIES, M. et DAUDET, L. (2003). Sparsifying subband decompositions. In IEEE Workshop on Applications of Signal Processing to Audio and Acoustics, pages 107–110. 76 DEMIRLI, R. et SANIIE, J. (2000). Model based time-frequency estimation of ultrasonic echoes for NDE applications. In IEEE International Ultrasonics Symposium, volume 1, pages 785–788. 66 DEMIRLI, R. et SANIIE, J. (2001a). Model-based estimation of ultrasonic echoes. Part I : Analysis and algorithms. IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, 48(3):787–802. 10, 22, 23, 66, 71, 72, 104 DEMIRLI, R. et SANIIE, J. (2001b). Model-based estimation of ultrasonic echoes. Part II : Nondestructive evaluation applications. IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, 48(3):803–811. 22, 67, 72, 73 DEMIRLI, R. et SANIIE, J. (2009). A generic parametric model for ultrasonic signal analysis. In IEEE International Ultrasonics Symposium, pages 1522–1525. 22, 67 DEMIRLI, R. et SANIIE, J. (2010). Asymmetric gaussian chirplet model for ultrasonic echo analysis. In IEEE International Ultrasonics Symposium, pages 124–128. 67 DEMOMENT, G., REYNAUD, R. et HERMENT, A. (1984). Range resolution improvement by a fast deconvolution method. Ultrasonic Imaging, 6(4):435–451. 76 DONOHO, D. L. et ELAD, M. (2003). Optimally sparse representation in general (nonorthogonal) dictionaries via `1 minimization. In Proc. Natl Acad. Sci., volume 100, pages 2197–2202, USA. 80 DROIN, P., BERGER, G. et LAUGIER, P. (1998). Velocity dispersion of acoustic waves in cancellous bone. IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, 45(3):581–592. 34 DUCK, F. A. (1990). Physical properties of tissue. Academic Press, London. 29 EFRON, B. T., HASTIE, T., JOHNSTONE, L. et TIBSHIRANI, R. (2002). Least angle regression. Annals of Statistics, 32:407–499. 76 ELAD, M. (2010). Sparse and Redundant Representations : From Theory to Applications in Signal and Image Processing. Springer. 75, 76, 81 FATEMI, M. et KAK, A. C. (1980). Ultrasonic B-scan imaging : Theory of image formation and a technique for restoration. Ultrasonic Imaging, 2(1):1–47. 76, 137 FEDER, M. et WEINSTEIN, E. (1988). Parameter estimation of superimposed signals using the EM algorithm. IEEE Transactions on Acoustics, Speech and Signal Processing, 36(4): 477–489. 71 153BIBLIOGRAPHIE FESSLER, J. et HERO, A. (1993). Complete-data spaces and generalized EM algorithms. In IEEE International Conference on Acoustics, Speech, and Signal Processing, volume 4, pages 1–4, Minneapolis, USA. 22 FESSLER, J. A. et HERO, A. O. (1994). Space-alternating generalized expectationmaximization algorithm. IEEE Transactions on Signal Processing, 42(10):2664–2677. 71 FINK, M. et CARDOSO, J.-F. (1984). Diffraction effects in pulse-echo measurement. IEEE Transactions on Sonics and Ultrasonics, 31(4):313–329. 26, 27, 62 FITZGIBBON, L. J., DOWE, D. L. et VAHID, F. (2004). Minimum message length autoregressive model order selection. In International Conference on Intelligent Sensing and Information Processing, pages 439–444. 80 FORTIER, N. (1990). Détermination des hyperparamètres dans les méthodes linéaires de restauration d’image. Thèse de doctorat, Université de Paris Sud, Centre d’Orsay. 79 GLOVER, G. H. et SHARP, J. C. (1977). Reconstruction of ultrasound propagation speed distributions in soft tissue : Time-Of-Flight tomography. IEEE Transactions on Sonics and Ultrasonics, 24(4):229–234. 137 GOLUB, G. H., HEATH, M. et WAHBA, G. (1979). Generalized cross-validation as a method for choosing a good ridge parameter. Technometrics, 21:215–223. 80, 83 GOLUB, G. H. et VAN LOAN, C. F. (1996). Matrix Computations, volume 3. The Johns Hopkins University Press, Baltimore and London. 106, 107 GOUSSARD, Y., DEMOMENT, G. et IDIER, J. (1990). A new algorithm for iterative deconvolution of sparse spike trains. In IEEE International Conference on Acoustic, Speech and Signal Processing, pages 1547–1550, Albuquerque, NM, USA. 23, 84 GRAY, R. M. (2006). Toeplitz and circulant matrices : A review. now publishers inc. 40, 102 GREENLEAF, J. F. et BAHN, R. C. (1981). Clinical imaging with transmissive ultrasonic computerized tomography. IEEE Transactions on Biomedical Engineering, 28(2):177– 185. 137 GURUMURTHY, K. V. et ARTHUR, R. M. (1982). A dispersive model for the propagation of ultrasound in soft tissue. Ultrasonic Imaging, 4(4):355–377. 24, 35, 36 HAIAT, G., PADILLA, F., CLEVELAND, R. et LAUGIER, P. (2006). Effects of frequencydependent attenuation and velocity dispersion on in vitro ultrasound velocity measurements in intact human femur specimens. IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, 53(1):39–51. 34 HALE, D. (1981). An inverse Q-filter. Stanford Exploration Project, 26:231–244. 23, 43 HARGREAVES, N. et CALVERT, A. (1991). Inverse Q-filtering by Fourier transform. Geophysics, 56:519–527. 30 154BIBLIOGRAPHIE HARRIS, G. R. (1981). Review of transient field theory for a baffled planar piston. The Journal of the Acoustical Society of America, 70(1):10–20. 27 HARRIS, G. R., HERMAN, B. A., SMITH, S. W. et BODINE, W. J. (1983). Through transmission technique for ultrasonic attenuation measurement using broadband, plane wave pulses. In Ultrasonics Symposium, pages 778–781. 29 HE, H., IDIER, J., BALTAZART, V. et WANG, Y. (2011). Déconvolution impulsionnelle par optimisation combinatoire exacte et application au CND radar. In Actes du 23e colloque GRETSI, Bordeaux. 23 HE, P. (1999). Experimental verification of models for determining dispersion from attenuation. IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, 46(3):706–714. 10, 24, 29, 35, 36, 53 HOLMES, C., DRINKWATER, B. W. et WILCOX, P. (2005). Post-processing of the full matrix of ultrasonic transmit-receive array data for non-destructive evaluation. NDT&E International, 38(8):701–711. 136 HONG, J.-C., SUN, K. H. et KIM, Y. Y. (2006). Waveguide damage detection by the matching pursuit approach employing the dispersion-based chirp functions. IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, 53(3):592–605. 22 HONG, X., SHARKEY, P. et WARWICK, K. (2003). Automatic nonlinear predictive modelconstruction algorithm using forward regression and the PRESS statistic. IEE Proceedings - Control Theory and Applications, 150:245–254. 80 IDIER, J. (2001). Approche bayésienne pour les problèmes inverses. Traité IC2, Série traitement du signal et de l’image, Hermès, Paris. 19, 21, 22, 40, 41, 74, 76, 78 JENSEN, J. A. (1991). Estimation of pulses in ultrasound B-scan images. IEEE Transactions on Medical Imaging, 10(2):164–172. 137 JENSEN, J. A. (1992). Deconvolution of ultrasound images. Ultrasonic Imaging, 14(1):1–15. 76 JONSCHER, A. K. (1983). Dielectric relaxation in solids. Chelsea Dielectrics Press, London. 14 KAARESEN, K. F. (1997). Deconvolution of sparse spike trains by iterated window maximization. IEEE Transactions on Signal Processing, 45(5):1173–1183. 23, 89 KAARESEN, K. F. (1998). Evaluation and applications of the iterated window maximization method for sparse deconvolution. IEEE Transactions on Signal Processing, 46(3):609– 624. 23, 89 KAARESEN, K. F. et BOLVIKEN, E. (1999). Blind deconvolution of ultrasonic traces accounting for pulse variance. IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, 46(3):564–573. 23 155BIBLIOGRAPHIE KAK, A. C. et DINES, K. A. (1978). Signal processing of broadband pulsed ultrasound : Measurement of attenuation of soft biological tissues. IEEE Transactions on Biomedical Engineering, 25(4):321–344. 24, 29, 34 KARAMAN, M., LI, P.-C. et O’DONNELL, M. (1995). Synthetic aperture imaging for small scale systems. IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, 42(3):429–442. 136 KELLY, J. F., MCGOUGH, R. J. et MEERSCHAERT, M. M. (2008). Analytical time-domain Green’s functions for power-law media. The Journal of the Acoustical Society of America, 124(5):2861–2872. 29, 35 KERBRAT, E., PRADA, C., CASSEREAU, D. et FINK, M. (2002). Ultrasonic nondestructive testing of scattering media using the decomposition of the time-reversal operator. IEEE Transactions on Ultrasonics, Ferroelectrics, and Frequency Control, 49(8):1103–1113. 136 KJARTANSSON, E. (1979). Constant Q-Wave Propagation and Attenuation. Journal of Geophysical Research, 84(B9):4737–4748. 23, 30 KORMYLO, J. J. et MENDEL, J. M. (1982). Maximum likelihood detection and estimation of Bernoulli - Gaussian processes. IEEE Transactions on Information Theory, 28(3):482– 488. 23, 79, 84 KRAMERS, H. A. (1927). La diffusion de la lumière par les atomes. In Atti del Congresso Internatzionale dei Fisici, volume 2, pages 545–557, Como-Pavia-Roma, Italy. Zanichelli. 34 KRAUTKRAMER, J. et KRAUTKRAMER, H. (1990). Ultrasonic Testing of materials. Springer-Verlag, Berlin. 9, 14, 15, 16, 17, 28, 118, 122, 124 KREUTZ-DELGADO, K., MURRAY, J. F., RAO, B. D., ENGAN, K., LEE, T. W. et SEJNOWSKI, T. J. (2003). Dictionary learning algorithms for sparse representations. Neural Computation, 15:592–396. 22, 120 KRONIG, R. d. L. (1926). On the theory of dispersion of x-rays. Journal of the Optical Society of America, 12(6):547–556. 34 KUC, R. (1983). Generating a minimum-phase digital filter model for the acoustic attenuation of soft tissue. In Ultrasonics Symposium, pages 794–796. 29, 35, 36 KUC, R. (1984). Modeling acoustic attenuation of soft tissue with a minimum-phase filter. Ultrasonic Imaging, 6(1):24–36. 24, 29, 35, 36 KUC, R., SCHWARTZ, M. et MICSKY, L. V. (1976). Parametric estimation of the acoustic attenuation coefficient slope for soft tissue. In Ultrasonics Symposium, pages 44–47. 29, 30 LEE, C., LAHHAM, M. et MARTIN, B. (1990). Experimental verification of the KramersKronig relationship for acoustic waves. IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, 37(4):286–294. 34 156BIBLIOGRAPHIE LEWICKI, M. S. et SEJNOWSKI, T. J. (2000). Learning overcomplete representations. Neural Computation, 12:337–365. 22, 120 LHEMERY, A. (1991). Impulse-response method to predict echo-responses from targets of complex geometry. Part I : Theory. The Journal of the Acoustical Society of America, 90(5):2799–2807. 27 LINGVALL, F. (2004a). The DREAM toolbox. http ://www.signal.uu.se/Toolbox/dream. 15 LINGVALL, F. (2004b). Time-domain Reconstruction methods for ultrasonic array imaging. Thèse de doctorat, Signals and systems, Uppsala University, Sweden. 143 LINGVALL, F., OLOFSSON, T. et STEPINSKI, T. (2003). Synthetic aperture imaging using sources with finite aperture : Deconvolution of the spatial impulse response. The Journal of the Acoustical Society of America, 114(1):225–234. 43, 118, 136 LU, Y., DEMIRLI, R., CARDOSO, G. et SANIIE, J. (2006). A successive parameter estimation algorithm for chirplet signal decomposition. IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, 53(11):2121–2131. 22, 67 LU, Y. et MICHAELS, J. (2008). Numerical implementation of matching pursuit for the analysis of complex ultrasonic signals. IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, 55(1):173–182. 22, 120, 135 MAHAUT, S., DARMON, M., CHATILLON, S., JENSON, F. et CALMON, P. (2009). Recent advances and current trends of ultrasonic modelling in CIVA. Insight : Non-Destructive Testing & Condition Monitoring, 51(2):78. 15, 62 MALIOUTOV, D. M., CETIN, M. et WILLSKY, A. S. (2005). Homotopy continuation for sparse signal representation. In IEEE International Conference on Acoustics, Speech, and Signal Processing, volume 5, pages 733–736, Philadelphia, USA. 76, 77, 79, 106, 107, 124 MALLAT, S. (1999). A wavelet tour of signal processing. Academic press. 120 MALLAT, S. et ZHANG, Z. (1993). Matching pursuits with time-frequency dictionaries. IEEE Transactions on Signal Processing, 41(12):3397–3415. 22, 23, 80, 81, 120 MARGRAVE, F. (1998). The theory of non-stationary linear filtering in the Fourier domain with application to time-variant filtering. Geophysics, 63(1):244–259. 43 MARIA, S. et FUCHS, J.-J. (2006). Application of the global matched filter to stap data : an efficient algorithmic approach. In IEEE International Conference on Acoustics, Speech, and Signal Processing, volume 4, Toulouse, France. 76, 106 MAXIMON, L. C. (2003). The dilogarithm function for complex argument. Proceedings of the Royal Society of London. Series A : Mathematical, Physical and Engineering Sciences, 459(2039):2807–2819. 37, 141 MCGOUGH, R. J. (2014). Fast Object-oriented C++ Ultrasound Simulator (FOCUS). http ://www.egr.msu.edu/ fultras-web. 15 157BIBLIOGRAPHIE MENDEL, J. M. (1983). Optimal Seismic Deconvolution : an Estimation Based Approach. Academic Press, New York. 23, 84 MILLER, A. J. (2002). Subset Selection in Regression, volume 2nd ed. Chapman & Hall, London, U.K. 80, 85, 149 MOR, E., AZOULAY, A. et ALADJEM, M. (2010). A matching pursuit method for approximating overlapping ultrasonic echoes. IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, 57(9):1996–2004. 22 MOULIN, P. et LIU, J. (1999). Analysis of multiresolution image denoising schemes using generalized gaussian and complexity priors. IEEE Transactions on Information Theory, 45(3):909–919. 23, 76, 77 NANDI, A. K. (1995). On the subsample time delay estimation of narrowband ultrasonic echoes. IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, 42(6): 993–1001. 22 NARAYANA, P. A. et OPHIR, J. (1983). A closed form method for the measurement of attenuation in nonlinearly dispersive media. Ultrasonic Imaging, 5:117–21. 24, 29, 30 NATARAJAN, B. (1995). Sparse approximate solutions to linear systems. SIAM Journal on Computing, 24(2):227–234. 80 NEAL, S. P., SPECKMAN, P. L. et ENRIGHT, M. A. (1993). Flaw signature estimation in ultrasonic nondestructive evaluation using the wiener filter with limited prior information. IEEE transactions on ultrasonics, ferroelectrics, and frequency control, 40(4):347–353. 23 O’BRIEN, M. S., SINCLAIR, A. N. et KRAMER, S. M. (1990). High resolution deconvolution using least-absolute-values minimization. In Ultrasonics Symposium, volume 2, pages 1151–1156. 23 O’BRIEN, M. S., SINCLAIR, A. N. et KRAMER, S. M. (1994). Recovery of a sparse spike time series by `1 norm deconvolution. IEEE Transactions on Signal Processing, 42(12): 3353–3365. 10, 23, 41, 76 O’DONNELL, M., JAYNES, E. T. et MILLER, J. G. (1978). General relationships between ultrasonic attenuation and dispersion. The Journal of the Acoustical Society of America, 63(6):1935–1937. 35, 36 OLOFSSON, T. et STEPINSKI, T. (2000). Maximum a posteriori deconvolution of ultrasonic signals using multiple transducers. The Journal of the Acoustical Society of America, 107(6):3276–3288. 41, 75, 118 OLOFSSON, T. et STEPINSKI, T. (2001). Minimum entropy deconvolution of pulse-echo signals acquired from attenuative layered media. The Journal of the Acoustical Society of America, 109(6):2831–2839. 10, 23, 43, 45, 133 OPHIR, J. et JAEGER, P. (1982). Spectral shifts of ultrasonic propagation through media with nonlinear dispersive attenuation. Ultrasonic Imaging, 4:282–289. 10, 24, 29 158BIBLIOGRAPHIE OPPENHEIM, A. et SCHAFER, R. (1989). Discrete-time signal processing. Prentice-Hall signal processing series. Prentice Hall. 35, 36, 139, 140 OPPENHEIM, A. V., SCHAFER, R. W. et STOCKHAM, T. G. (1968). Nonlinear filtering of multiplied and convolved signals. Proceedings of the IEEE, 56(8):1264–1291. 119 PAIVA, A. R. C., PARK, I. et PRÍNCIPE, J. C. (2010). A comparison of binless spike train measures. Neural Computing and Applications, 19(3):405–419. 108 PAPOULIS, A. (1962). The Fourier integral and its applications. McGraw-Hill electronic sciences series. McGraw-Hill. 34, 35, 36, 139, 140 PATI, Y., REZAIIFAR, R. et KRISHNAPRASAD, P. (1993). Orthogonal matching pursuit : recursive function approximation with applications to wavelet decomposition. In Conference Record of The Twenty-Seventh Asilomar Conference on Signals, Systems and Computers, volume 1, pages 40–44. 23, 80, 81 PINKERTON, J. M. M. (1949). The absorption of ultrasonic waves in liquids and its relation to molecular constitution. Proceedings of the Physical Society. Section B, 62(2):129. 29 QUAZI, A. (1981). An overview on the time delay estimate in active and passive systems for target localization. IEEE Transactions on Acoustics, Speech and Signal Processing, 29(3):527–533. 22, 104 RAO, B. D. et KREUTZ-DELGADO, K. (1999). An affine scaling methodology for best basis selection. IEEE Transactions on Signal Processing, 47(1):187–200. 23, 77, 80 RASMUSSEN, K. (1994). Maximum likelihood estimation of the attenuated ultrasound pulse. IEEE Transactions on Signal Processing, 42(1):220–222. 23 RAYLEIGH, J. W. S. (1945). Theory of sound, volume 2. Dover, New-York. 27 REEVES, S. J. (1999). An efficient implementation of the backward greedy algorithm for sparse signal reconstruction. IEEE Signal Processing Letters, 6(10):266–268. 85, 149 RHYNE, T. L. (1977). Radiation coupling of a disk to a plane and back or disk to a disk : an exact solution. The Journal of Acoustical Society of America, 61(2):318–324. 27, 62 RISSANEN, J. (1983). A universal prior for integers and estimation by minimum description length. The Annals of statistics, pages 416–431. 80 ROKHLIN, S. I., LEWIS, D. K., GRAFF, K. F. et ADLER, L. (1986). Real-time study of frequency dependence of attenuation and velocity of ultrasonic waves during the curing reaction of epoxy resin. The Journal of the Acoustical Society of America, 79(6):1786– 1793. 29 ROLLAND, G. (2014). Algorithmes d’optimisation pour l’estimation des paramètres d’ondes ultrasonores en contrôle non destructif. Rapport de stage de 2ème année d’école d’ingénieur ESEO. 66 SACHSE, W. et PAO, Y.-H. (1978). On the determination of phase and group velocities of dispersive waves in solids. Journal of Applied Physics, 49(8):4320–4327. 28 159BIBLIOGRAPHIE SANIIE, J. et NAGLE, D. (1989). Pattern recognition in the ultrasonic imaging of reverberant multilayered structures. IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, 36(1):80–92. 17, 122, 123, 126 SCHREIBER, S., FELLOUS, J. M., WHITMER, D., TIESINGA, P. et SEJNOWSKI, T. J. (2003). A new correlation-based measure of spike timing reliability. Neurocomputing, 52-54:925– 931. 108 SELÉN, Y. et LARSSON, E. G. (2006). Parameter estimation and order selection for linear regression problems. In IEEE European Signal Processing Conference, Florence, Italy. 80 SELESNICK, I. et BAYRAM, I. (2014). Sparse signal estimation by maximally sparse convex optimization. IEEE Transactions on Signal Processing, 62(5):1078–1092. 23, 105 SELFRIDGE, A. R. (1985). Approximate material properties in isotropic materials. IEEE Transactions on Sonics and Ultrasonics, 32(3):381–394. 29, 48, 51, 60, 61, 125, 129 SERABIAN, S. (1967). Influence of attenuation upon the frequency content of a stress wave packet in graphite. The Journal of the Acoustical Society of America, 42(5):1052–1059. 29 SIN, S.-K. et CHEN, C.-H. (1992). A comparison of deconvolution techniques for the ultrasonic nondestructive evaluation of materials. IEEE Transactions on Image Processing, 1(1):3–10. 22, 28 SOUSSEN, C., IDIER, J., BRIE, D. et DUAN, J. (2011). From Bernoulli Gaussian Deconvolution to Sparse Signal Restoration. IEEE Transactions on Signal Processing, 59(10):4572– 4584. 10, 23, 77, 79, 80, 81, 83, 84, 105, 124, 148, 149 SOUSSEN, C., IDIER, J., CARCREFF, E., SIMON, L. et POTEL, C. (2012). Ultrasonic non destructive testing based on sparse deconvolution. Journal of Physics : Conference Series, 353:012018 (10 pages). 22, 23, 76, 80 STEPHANISHEN, P. R. (1971). Transient radiation from pistons in an infinite baffle. The Journal of American Society of America, 49(5):1629–1638. 27, 118 STOICA, P. et SELÉN, Y. (2004). Model-order selection : a review of information criterion rules. IEEE Signal Processing Magazine, 21(4):36–47. 72, 80 SZABO, T. (1994). Time domain wave equations for lossy media obeying a frequency power law. The Journal of the Acoustical Society of America, 96:491–500. 35, 36 SZABO, T. L. (1995). Causal theories and data for acoustic attenuation obeying a frequency power law. The Journal of the Acoustical Society of America, 97:14–24. 24, 29, 35, 53 TAYLOR, H. L., BANKS, S. C. et MCCOY, J. F. (1979). Deconvolution with the `1 norm. Geophysics, 44(1):39–52. 10, 23, 76 TIBSHIRANI, R. (1994). Regression shrinkage and selection via the lasso. Journal of the Royal Statistical Society, Series B, 58:267–288. 76 160BIBLIOGRAPHIE TRIA, M., Van der BAAN, M., LARUE, A., et J., M. (2007). Wavelet estimation in homomorphic domain by spectral averaging for deconvolution of seismic data. In 5th international conference in Physics in signal and image processing, Mulhouse, France. 120 TROPP, J. et WRIGHT, S. (2010). Computational methods for sparse solution of linear inverse problems. Proceedings of the IEEE, 98(6):948–958. 23, 76 VAN ROSSUM, M. C. W. (2001). A novel spike distance. Neural Computation, 13(4):751– 763. 108 VAN TREES, H. L. (1968). Detection, estimation and modulation, part I. Wiley, New-York. 53 VICTOR, J. D. et PURPURA, K. P. (1996). Nature and precision of temporal coding in visual cortex : a metric-space analysis. Journal of neurophysiology, 76(2):1310–1326. 108 VICTOR, J. D. et PURPURA, K. P. (1997). Metric-space analysis of spike trains : theory, algorithms and application. Network : computation in neural systems, 8(2):127–164. 108 WAHBA, G. (1977). Practical approximate solutions to linear operator equations when the data are noisy. SIAM Journal on Numerical Analysis, 14(4):651–667. 80 WANG, Y. (2009). Seismic Inverse Q-filtering. ISTE Ltd and John Wiley & Sons Inc, London, U.K. 23, 30, 35 WEAR, K. (2000). The effects of frequency-dependent attenuation and dispersion on sound speed measurements : applications in human trabecular bone. IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, 47(1):265–273. 23, 30, 34 YARLAGADDA, R., BEDNAR, J. et WATT, T. (1985). Fast algorithms for `p deconvolution. IEEE Transactions on Acoustics, Speech and Signal Processing, 33(1):174–182. 76, 77 ZALA, C. (1992). High-resolution inversion of ultrasonic traces. IEEE Transactions on Ultrasonics, Ferroelectrics, and Frequency Control, 39(4):458–463. 10, 22, 23, 80, 122, 126 ZHANG, G.-M. et HARVEY, D. M. (2013). Contemporary ultrasonic signal processing approaches for nondestructive evaluation of multilayered structures. Nondestructive testing and evaluation, 27(1):1–27. 9, 21, 23 ZHANG, G.-M., HARVEY, D. M. et BRADEN, D. R. (2008). Signal denoising and ultrasonic flaw detection via overcomplete and sparse representations. The Journal of the Acoustical Society of America, 124(5):2963–2972. 22, 120 ZHANG, G.-M., ZHANG, C.-Z. et HARVEY, D. M. (2012). Sparse signal representation and its applications in ultrasonic NDE. Ultrasonics, 52(3):351–363. 22, 120 ZISKIND, I. et WAX, M. (1988). Maximum likelihood localization of multiple sources by alternating projection. IEEE Transactions on Acoustics, Speech and Signal Processing, 36(10):1553–1560. 22, 71 161Thèse de Doctorat Ewen CARCREFF Déconvolution adaptative pour le contrôle non destructif par ultrasons Adaptative deconvolution for ultrasonic non destructive testing Résumé Nous nous intéressons au contrôle non destructif par ultrasons des matériaux industriels. En pratique, les signaux réceptionnés par le transducteur ultrasonore sont analysés pour détecter les discontinuités de la pièce inspectée. L’analyse est néanmoins rendue difficile par l’acquisition numérique, les effets de la propagation ultrasonore et la superposition des échos lorsque les discontinuités sont proches. La déconvolution parcimonieuse est une méthode inverse qui permet d’aborder ce problème afin de localiser précisément les discontinuités. Ce procédé favorise les signaux parcimonieux, c’est à dire ne contenant qu’un faible nombre de discontinuités. Dans la littérature, la déconvolution est généralement abordée sous l’hypothèse d’un modèle invariant en fonction de la distance de propagation, modalité qui n’est pas appropriée ici car l’onde se déforme au cours de son parcours et en fonction des discontinuités rencontrées. Cette thèse développe un modèle et des méthodes associées qui visent à annuler les dégradations dues à l’instrumentation et à la propagation ultrasonore, tout en résolvant des problèmes de superposition d’échos. Le premier axe consiste à modéliser la formation du signal ultrasonore en y intégrant les phénomènes propres aux ultrasons. Cette partie permet de construire un modèle linéaire mais non invariant, prenant en compte l’atténuation et la dispersion. L’étape de modélisation est validée par des acquisitions avec des matériaux atténuants. La deuxième partie de cette thèse concerne le développement de méthodes de déconvolution efficaces pour ce problème, reposant sur la minimisation d’un critère des moindres carrés pénalisé par la pseudo-norme L0. Nous avons développé des algorithmes d’optimisation spécifiques, prenant en compte, d’une part, un modèle de trains d’impulsions sur-échantillonné par rapport aux données, et d’autre part le caractère oscillant des formes d’onde ultrasonores. En utilisant des données synthétiques et expérimentales, ces algorithmes associés à un modèle direct adapté aboutissent à de meilleurs résultats comparés aux approches classiques pour un coût de calcul maîtrisé. Ces algorithmes sont finalement appliqués à des cas concrets de contrôle non destructif où ils démontrent leur efficacité. Abstract This thesis deals with the ultrasonic non destructive testing of industrial parts. During real experiments, the signals received by the acoustic transducer are analyzed to detect the discontinuities of the part under test. This analysis can be a difficult task due to digital acquisition, propagation effects and echo overlapping if discontinuities are close. Sparse deconvolution is an inverse method that aims to estimate the precise positions of the discontinuities. The underlying hypothesis of this method is a sparse distribution of the solution, which means there are a few number of discontinuities. In the literature, deconvolution is addressed by a linear time-invariant model as a function of propagation distance, which in reality does not hold. The purpose of this thesis is therefore to develop a model and associated methods in order to cancel the effects of acquisition, propagation and echo overlapping. The first part is focused on the direct model development. In particular, we build a linear time-variant model that takes into account dispersive attenuation. This model is validated with experimental data acquired from attenuative materials. The second part of this work concerns the development of efficient sparse deconvolution algorithms, addressing the minimization of a least squares criterion penalized by a L0 pseudo-norm. Specific algorithms are developed for up-sampled deconvolution, and more robust exploration strategies are built for data containing oscillating waveforms. By using synthetic and experimental data, we show that the developed methods lead to better results compared to standard approaches for a competitive computation time. The proposed methods are then applied to real non destructive testing problems where they confirm their efficiency. Mots clés Contrôle non destructif, ultrasons, modélisation acoustique, atténuation dispersive, problème inverse, déconvolution, parcimonie. Key Words Non destructive testing, ultrasound, acoustic modeling, dispersive attenuation, inverse problem, deconvolution, sparsity. L’UNIVERSITÉ NANTES ANGERS LE MANS Adaptation des services sensibles au contexte selon une approche intentionnelle Najar Salma To cite this version: Najar Salma. Adaptation des services sensibles au contexte selon une approche intentionnelle. Ubiquitous Computing. Universit´e Panth´eon-Sorbonne - Paris I, 2014. French. HAL Id: tel-00989775 https://tel.archives-ouvertes.fr/tel-00989775 Submitted on 12 May 2014 HAL is a multi-disciplinary open access archive for the deposit and dissemination of scientific research documents, whether they are published or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers. L’archive ouverte pluridisciplinaire HAL, est destin´ee au d´epˆot et `a la diffusion de documents scientifiques de niveau recherche, publi´es ou non, ´emanant des ´etablissements d’enseignement et de recherche fran¸cais ou ´etrangers, des laboratoires publics ou priv´es.THESE DE DOCTORAT DE L’UNIVERSITE DE PARIS I – PANTHEON-SORBONNE Spécialité : Informatique Salma Najar Pour l’obtention du titre de : DOCTEUR DE L’UNIVERSITE PARIS I – PANTHEON-SORBONNE Adaptation des services sensibles au contexte selon une approche intentionnelle Soutenu le 11 Avril 2014 devant le jury composé de : Mme Carine SOUVEYET Directeur de Thèse Mme Manuele KIRSCH-PINHEIRO Co-Directeur de Thèse Mme Isabelle MIRBEL Rapporteur Mr Jérôme GENSEL Rapporteur Mme Corine CAUVET Membre de Jury Mme Bénédicte LE-GRAND Membre de Jury« Chercher n'est pas une chose et trouver une autre, mais le gain de la recherche, c'est la recherche même. » de Saint Grégoire de Nysse A mes parents, mon amour sans faille, A Sana et Omar, ma sœur et mon frère adorés, A Aymen, mon amour et ma source d’inspiration v Remerciements La thèse est une aventure extraordinaire qui nous pousse au bout de nous-mêmes et qui nous construit... C’est une belle expérience, difficile par moment et agréable par d’autres… Je me suis sentie complètement transformée et grandie par cette expérience… J’ai vécu mon doctorat comme une véritable aventure, un enrichissement personnel et professionnel considérable…C’est l’aboutissement d’une étape importante dans ma vie et le commencement d’une autre que j’espère aussi attractive… Un énorme Merci à toutes les personnes qui ont contribué pour que cette expérience soit si exceptionnelle. Je tiens à remercier en premier lieu, Carine Souveyet, Professeur à l’Université Paris 1 Panthéon - Sorbonne pour m’avoir accordée sa confiance en acceptant de diriger mes recherches. Je la remercie infiniment de m’avoir fait bénéficier tout au long de ce travail de sa grande compétence, de sa rigueur intellectuelle et de ses précieux conseils. Sa revendication constante du travail sérieux m’a aidée à progresser. Que le fruit de ces longues années de travail soit à la hauteur de ce qu’elle a semé en moi. J’exprime également toute ma gratitude à Manuele Kirsch-Pinheiro, Maître de Conférence à l’Université de Paris 1 Panthéon - Sorbonne qui m’a épaulée tout au long de la réalisation de ce travail de recherche et prodiguée de précieux conseils qui m’ont permis d’aller constamment de l’avant. Elle m’a encouragée par ses orientations sans cesser d’être une grande source de motivation et de persévérance. Son exigence m’a permise de progresser dans l’élaboration de ma recherche. Qu’elle trouve dans ce travail l’expression de ma profonde et sincère reconnaissance. Je souhaiterais adresser mes remerciements les plus sincères à Isabelle Mirbel, Maître de Conférence Habilitée à Diriger des Recherches à l’Université de Nice Sophia Antipolis, et Jérôme Gensel, Professeur à l’Université de Pierre Mendès France - Grenoble 2, pour m’avoir fait l’honneur d’être les rapporteurs de ce travail. Je les remercie pour leur application et leurs précieux commentaires et recommandations. Je voulais également remercier les examinateurs de ce travail, Madame Corine Cauvet, Professeur à l’Université d’Aix-Marseille et Madame Bénédicte Le Grand, Professeur à l’Université de Paris 1 Panthéon – Sorbonne pour avoir accepté de faire partie de mon jury de thèse et d’évaluer mon travail. Je remercie profondément Bénédicte qui a eu la gentillesse de me consacrer du temps pour échanger avec moi autour de mon sujet de thèse. Ses remarques et ses conseils m’ont été d’une aide précieuse. J’ai pu travailler dans un cadre particulièrement agréable, grâce à l’ensemble des membres de l’équipe du Centre de Recherche en informatique (CRI). J’exprime toute ma gratitude envers tous ceux qui m’ont aidée et encouragée tout au long de mon séjour au sein de l’équipe et surtout l’ensemble des thésards pour leur enthousiasme et leur soutien vi quotidien. Merci à tous pour votre bonne humeur, pour toutes ces séances de rires et de sourires, et pour toutes ces discussions autour d’un café. Cet aboutissement n’aurait jamais pu se faire sans l’encouragement, le soutien et l’amour de tous les membres de ma famille et de mes amis. A mes chers parents, à ma sœur Sana et à mon frère Omar : Merci d’avoir cru en moi… Merci pour votre patience et pour l’affection que vous m’avez manifestée durant ces années… A ma belle famille : Merci du fond du cœur pour votre soutien et pour vos précieux conseils… A mes amis : Merci d’être là et de m’avoir toujours soutenue et m’avoir changée les idées quand j’en avais besoin … Une dédicace toute particulière à Sonda et Fatma, deux amies très spéciales qui m’ont soutenue dès le début et m’ont aidée dans les périodes de doute. Je garde pour la fin un remerciement particulier pour mon mari, Aymen. Je te remercie infiniment de m’avoir aidée, soutenue, encouragée et surtout aimée... Ces dernières années n’ont pas été si simples, tu m’as supportée dans les périodes les plus difficiles… Tu m’as aidée à garder le moral haut et surtout à surmonter les difficultés. Merci d’avoir été toujours là… Pour finir, je souhaiterais dédier ce travail à tous ceux que j’aime. Qu’ils y trouvent ici l’expression de ma profonde affection et de mes plus sincères remerciements. vii Résumé L’émergence des nouvelles technologies a fait évoluer l’usage de ces technologies dans la perspective d’accéder aux différents systèmes qui prennent place dans notre vie quotidienne à n'importe quel endroit et à tout moment. En effet, la démocratisation des dispositifs et l’évolution des technologies mobiles ont bouleversé la manière dont on utilise ces systèmes dans un environnement pervasif. Dans le cadre de l’entreprise, ces nouvelles technologies ont élargi les frontières des Systèmes d'Information (SI) bien au-delà des frontières physiques de l’organisation. Les directeurs des Systèmes d’Information (DSI) sont ainsi confrontés à de nouveaux modes d’interaction entre le SI et son environnement. Les Systèmes d’Information sont ainsi confrontés à un environnement pour lequel ils n’ont pas été particulièrement conçus. Ces systèmes doivent maintenant faire face à un environnement pervasif, et à l'avenir, intégrer des éléments physiques ainsi que logiques et organisationnels. Nous assistons donc aujourd’hui à l’émergence d’une nouvelle génération de Systèmes d’Information : les « Systèmes d’Information Pervasifs » (SIP). Les Systèmes d’Information Pervasifs se veulent alors une réponse à cette importante évolution des SI. Par contre, ils se doivent de gérer l’hétérogénéité et le dynamisme de l’environnement de manière transparente afin de satisfaire au mieux les besoins des utilisateurs. Nous ainsi sommes face à un problème de conception et de réalisation d’un SIP répondant à tous les besoins de transparence, d’adaptation à l’environnement et d’adaptation à l’utilisateur d’un SIP. Or les SIP constituent aujourd’hui une nouvelle génération des SI qui est difficile à conceptualiser, avec peu de méthodes et de modèles disponibles. Ainsi, il devient essentiel de mettre en place un cadre plus formel permettant d’aider les concepteurs à mieux comprendre les SIP et surtout à mieux les maîtriser, tout en assurant la transparence nécessaire à ces systèmes. Dans ce travail de thèse, nous proposons une nouvelle vision intentionnelle et contextuelle des SIP. Cette nouvelle vision représente une vision centrée utilisateur d’un SIP transparent, non intrusif et compréhensible à l’utilisateur. Elle se base sur l’orientation service, la sensibilité au contexte et sur une approche intentionnelle afin de résoudre les problèmes de transparence, d’adaptation à l’environnement et d’adaptation aux utilisateurs. Par la suite, nous proposons une solution plus globale pour concrétiser cette vision intentionnelle et contextuelle des SIP. Nous proposons un cadre conceptuel des SIP décrivant et formalisant l’ensemble de ses éléments afin d’aider la DSI dans sa conception du système. Nous proposons ensuite des mécanismes de découverte et de prédiction de services qui sont intégrés dans une architecture de gestionnaire de SIP qui est conforme à ce cadre conceptuel. Finalement, nous proposons une démarche méthodologique de conception et de réalisation d’un SIP qui supporte le passage entre le cadre conceptuel et l’implémentation de l’architecture proposée. viii Abstract The emergence of new technologies has changed the use of these technologies in order to access to the various systems that take place in our daily life anywhere and anytime. Indeed, the democratization of devices and the evolution of mobile technologies have changed the way these systems are used in a pervasive environment. As part of the company, these new technologies have expanded the boundaries of Information Systems (IS) beyond the physical boundaries of the organization. Chiefs Information Officers (CIOs) are confronted with new modes of interaction with their SI. Information Systems are thus faced with an environment for which they were not specifically designed. These systems must now face a pervasive environment, and in the future, integrate physical as well as logical and organizational elements. We are now witnessing the emergence of a new generation of Information Systems: « Pervasive Information Systems« (PIS). The Pervasive Information Systems want an answer to this important evolution of SI. Against, they must manage the heterogeneity and dynamism of the environment in a transparent manner to best meet the users needs. Thus, currently we are facing a problem of design and implementation of PIS that meets all the needs of transparency, adaptation to the environment and adaptation to the user. Although, PIS represent today a new generation of SI that is difficult to conceptualize, with few methods and models available. Thus, it becomes essential to establish a more formal framework to help designers better understand PIS and especially to the better control of it, while ensuring the necessary transparency to these systems. In this thesis, we propose a new intentional and contextual vision of PIS. This new vision represents a user centric vision of PIS, which is transparent, non-intrusive and understandable to the user. It is based on service orientation, context-awareness and intentional approach to solve the problems of transparency, adaptation to the environment and adaptation to users. Subsequently, we propose a more comprehensive solution to achieve this intentional and contextual vision of PIS. We propose a conceptual framework for describing and formalizing PIS and all its elements to help CIOs in their system design. We then propose mechanisms for services discovery and prediction that are integrated in the architecture of PIS manager. Finally, we propose a methodological approach for the design and the implementation of PIS that supports the transition between the conceptual framework to its implementation with the proposed architecture. ix Table des matières Remerciements..............................................................................................................!v Résumé.........................................................................................................................vii Abstract.......................................................................................................................viii Table1des1matières........................................................................................................ ix Chapitre!1. Introduction!Générale ..............................................................................!1 1.1. Contexte!de!Recherche :!La!vision!d’un!Système!d’Information!Pervasif................................!1 1.1.1. Informatique-Pervasive..............................................................................................................................-1 1.1.2. Impact-de-l’Informatique-Pervasive-sur-les-Systèmes-d’Information-(SI)............................-2 1.1.3. Les-Systèmes-d’Information-Pervasifs-(SIP)......................................................................................-3 1.2. Problématique ...................................................................................................................................................!4 1.3. Hypothèses ..........................................................................................................................................................!8 1.4. Aperçu!de!la!proposition............................................................................................................................10 1.5. Organisation!de!la!thèse .............................................................................................................................11 Chapitre!2. Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte ..................... 13 2.1. Introduction.....................................................................................................................................................13 2.2. L’Informatique!Pervasive et!les!Systèmes!Sensibles!au!Contexte............................................13 2.2.1. Définition-et-historique-du-domaine-de-l’Informatique-Pervasive ........................................14 2.2.2. Systèmes-Sensibles-au-Contexte............................................................................................................15 2.3. Le!contexte .......................................................................................................................................................17 2.3.1. La-notion-de-contexte :-définitions,-caractéristiques-et-dimensions.....................................17 2.3.2. Modélisation-de-contexte ........................................................................................................................23 2.3.3. Gestion-de-contexte....................................................................................................................................32 2.3.4. Cadre-d’analyse-et-de-comparaison-des-modèles-existants......................................................35 2.4. Les!Systèmes!d’Information!Pervasifs!et!caractéristiques ..........................................................41 2.5. Conclusion ........................................................................................................................................................44 Chapitre!3. Systèmes d’Information!Pervasifs!et!l’orientation!service ....................... 46 3.1. Introduction.....................................................................................................................................................46 3.2. La!notion!de!service......................................................................................................................................47 3.3. L’architecture!Orientée!Services :!SOA.................................................................................................!48 3.4. L’orientation!service!sous!ses!différentes!formes...........................................................................50 3.4.1. Services-Web :-vers-une-vision-technologique ................................................................................51 3.4.2. Services-Sémantiques :-vers-une-vision-sémantique ....................................................................53 3.4.3. Services-Intentionnels :-vers-une-vision-intentionnelle...............................................................58 3.5. Les!challenges!pour!les!systèmes!d’Information!Pervasifs!Orientés!Services....................64 3.5.1. Les-challenges..............................................................................................................................................64 3.5.2. La-découverte-de-services .......................................................................................................................65 3.5.3. La-prédiction-de-services.........................................................................................................................81 3.6. Conclusion!et!considérations!finales.....................................................................................................87 Chapitre!4. Vision intentionnelle!et!contextuelle!des!systèmes!d’information!pervasifs 90 4.1. Introduction.....................................................................................................................................................90 4.2. Rappel!du!contexte!de!recherche!et!de!la!problématique ...........................................................90 4.2.1. Contexte-de-recherche ..............................................................................................................................90 4.2.2. Problématique .............................................................................................................................................91x 4.3. Aperçu!de!la!solution ...................................................................................................................................92 4.3.1. Notre-vision-intentionnelle-et-contextuelle-des-SIP :-couplage-entre-services,-contexteet intention...........................................................................................................................................................................93 4.3.2. Solution-globale :-de-la-conception-à-la-mise-en-œuvre-d’un-SIP-transparent-et-centré- utilisateurV-............................................................................................................................................................................94 4.3.3. Contributions-attendues..........................................................................................................................99 4.4. Conclusion ..................................................................................................................................................... 100 Chapitre!5. Cadre!conceptuel!d’un!SIP :!Espace!de!Services..................................... 101 5.1. Introduction.................................................................................................................................................. 101 5.2. Formalisation!de!la!notion!de!service!dans!un!SIP ...................................................................... 103 5.2.1. Les-fonctionnalités-du-service ............................................................................................................104 5.2.2. Les-intentions-du-service ......................................................................................................................105 5.2.3. Le-contexte-du-service............................................................................................................................107 5.3. Formalisation!de!la!notion!de!contexte............................................................................................. 110 5.3.1. Modélisation-de-contexte .....................................................................................................................111 5.3.2. Formalisation-de-la-notion-d’observation-et-de-capteur ........................................................116 5.4. Formalisation!de!l’espace!de!services ............................................................................................... 118 5.4.1. Entités-actives-...........................................................................................................................................120 5.4.2. Entités-passives.........................................................................................................................................120 5.4.3. Etat-de-l’espace-de-services-et-son-évolution ...............................................................................121 5.5. Conclusion ..................................................................................................................................................... 123 Chapitre!6. Description!intentionnelle!et!contextuelle!des!services......................... 124 6.1. Introduction.................................................................................................................................................. 124 6.2. Vers!un!descripteur!intentionnel!et!contextuel :!OWLTSIC ...................................................... 125 6.3. La!dimension!intentionnelle!d’un!service........................................................................................ 127 6.3.1. Le-service-et-son-intention-principale.............................................................................................128 6.3.2. La-composition-intentionnelle ...........................................................................................................134 6.4. La!dimension!Contextuelle!d’un!service!........................................................................................... 139 6.4.1. Le-modèle-de-contexte ...........................................................................................................................141 6.4.2. Le-contexte-d’exécution-d’un-service-(Cx)-.....................................................................................145 6.4.3. Le-contexte-requis-par-un-service-(CxR)-.........................................................................................146 6.5. Conclusion ..................................................................................................................................................... 147 Chapitre!7. Découverte!de!services!guidée!par!l’intention!et!le!contexte ................ 148 7.1. Introduction.................................................................................................................................................. 148 7.2. Processus!de!découverte!de!services!guidé!par!l’intention!et!le!contexte......................... 149 7.2.1. Principe........................................................................................................................................................149 7.2.2. Algorithme-de-découverte-de-services-guidée-par-le-contexte-et-l’intention .................150 7.3. Implémentation!et!évaluation............................................................................................................... 170 7.3.1. Les-Technologies-utilisées....................................................................................................................170 7.3.2. Implémentation-du-processus-de-découverte-de-services ......................................................171 7.3.3. Evaluation-du-processus-de-découverte-de-services.................................................................-174 7.3.4. Le-passage-à-l’échelle-(Performance-sur-plusieurs-configurations)..................................177 7.4. Conclusion ..................................................................................................................................................... 184 Chapitre!8. Prédiction!de!services!guidée!par!l’intention et!le!contexte .................. 185 8.1. Introduction.................................................................................................................................................. 185 8.2. Processus!de!prédiction!de!services!guidée!par!le!contexte!et!l’intention........................ 186xi 8.2.1. La#gestion#des#traces#(historiques)..................................................................................................188 8.2.2. Le#processus#d’apprentissage.............................................................................................................190 8.2.3. Le#processus#de#prédiction...................................................................................................................201 8.3. Implémentation!et!Evaluation .............................................................................................................. 206 8.3.1. Implémentation........................................................................................................................................206 8.3.2. Evaluation ..................................................................................................................................................212 8.4. Conclusion ..................................................................................................................................................... 220 Chapitre)9. Architecture)de)gestionnaire)de)SIP)...................................................... 221 9.1. Introduction.................................................................................................................................................. 221 9.2. Les!prérequis!de!l’architecture!de!gestionnaire!de!SIP.............................................................. 221 9.3. L’architecture!de!gestionnaire!de!SIP................................................................................................ 222 9.3.1. Module#de#gestion#de#requête#(1).....................................................................................................224 9.3.2. Module#de#gestion#de#contexte#(2)...................................................................................................225 9.3.3. Répertoire#de#services#sémantiques................................................................................................227 9.3.4. Module#de#découverte#de#services....................................................................................................229 9.3.5. Module#d’apprentissage........................................................................................................................231 9.3.6. Module#de#prédiction#de#services......................................................................................................232 9.4. Conclusion ..................................................................................................................................................... 234 Chapitre)10. Démarche)methodologique)de)conception)d’un)SIP ............................ 235 10.1. Introduction ............................................................................................................................................... 235 10.2. Présentation!de!la!démarche!méthodologique ........................................................................... 235 10.3. Les!étapes!du!processus!de!conception!D’un!SIP....................................................................... 239 10.3.1. Etape#1 :#Spécification#des#espaces#de#services........................................................................239 10.3.2. Etape#2 :#Identification#des#fonctionnalités#pertinentes......................................................239 10.3.3. Etape#3 :#Identification#du#couple#intention#et#contexte......................................................241 10.3.4. Etape#4 :#Description Sémantique#des#Services#selon#le#contexte#et#l’intention ........245 10.4. Cas!d’étude!sécurité!et!accès!au!SI!pour!des!employés!mobiles.......................................... 248 10.4.1. Introduction#du#cas#d’étude..............................................................................................................248 10.4.2. Conception#de#l’espace#de#services................................................................................................249 10.4.3. Description#du#cas#d’étude................................................................................................................258 10.5. Conclusion................................................................................................................................................... 262 Chapitre)11. Conclusions)et)Perspectives................................................................ 263 11.1. Conclusions................................................................................................................................................. 263 11.1.1. Rappel#de#la#problématique .............................................................................................................263 11.1.2. Bilan#du#travail#réalisé .......................................................................................................................265 11.2. Perspectives ............................................................................................................................................... 267 Bibliographie ............................................................................................................. 270 Annexes).................................................................................................................... 288Introduction)Générale 1 Chapitre 1. INTRODUCTION GENERALE Le travail réalisé dans le cadre de cette thèse se situe dans le domaine de l’Ingénierie des Services, de l’Informatique Ubiquitaire (ou Pervasive) et de l’ingénierie des Systèmes d’Information. Il présente une approche centrée utilisateur permettant de concevoir et de construire la nouvelle génération des Systèmes d’Information, qu’on appelle Systèmes d’Information Pervasifs. 1.1. CONTEXTE DE RECHERCHE : LA VISION D’UN SYSTEME D’INFORMATION PERVASIF 1.1.1. Informatique Pervasive Depuis plusieurs années, nous assistons à l’émergence des nouvelles technologies. Nous sommes témoins de l’évolution de l’usage de ces technologies afin d’accéder aux différents systèmes qui prennent place dans notre quotidien. En effet, la démocratisation des dispositifs utilisés dans notre vie quotidienne (Smartphones, tablettes, etc.), ainsi que l’évolution des technologies mobiles (3G, géolocalisation, Bluetooth, etc.) et des autres technologies ont bouleversé la manière dont on utilise ces systèmes. Selon Musolesi (Musolesi, 2011), les Smartphones, par exemple, sont considérés comme la plateforme informatique de l'avenir, où l’informatique peut être fortement décentralisée et répartie sur les différents terminaux utilisés par les utilisateurs pour fournir des solutions hautement évolutives. Ces avancées technologiques, qui nous donnent le pouvoir d'interagir avec le monde d’une manière naturelle, ont contribué à l'amélioration de nos capacités quotidiennes, fournissant, ainsi, des avantages à long-terme pour la société dans son ensemble (Cheng, 2010). Grâce à ces avancées, l’informatique s’est intégrée à l’environnement d’une façon invisible. Schmidt (Schmidt, 2010) illustre ceci par l’usage du GPS dans différentes situations et d’une manière presque inconsciente. Plus précisément, il utilise trois récepteurs GPS différents : le premier dans son téléphone, fournissant aux réseaux sociaux sa localisation, le second intégré dans le système de navigation de la voiture et le dernier dans l’appareil photo, afin de géo-localiser les photos prises. Cet auteur démontre à travers son exemple, que cette technologie est devenue invisible, comme d’autres technologies intégrées à notre environnement. Cette réalité a été soutenue depuis plusieurs années par l’Informatique Ubiquitaire (ou Pervasive) (Weiser, 1991). Weiser (Weiser, 1991) soutient que « les technologies les plus profondément enracinées sont les technologies invisibles. Elles s’intègrent dans la trame de la vie quotidienne jusqu’à ne plus pouvoir en être distinguées ».Introduction!Générale 2 A l’instar de Bell et Dourish (Bell et Dourish, 2007), nous pensons que l’Informatique Ubiquitaire est déjà une réalité et non pas un avenir proche. Elle fait partie intégrante de notre quotidien, notamment à travers les nouvelles technologies. Celles-ci sont devenues presque invisibles à nos yeux, à tel point qu’il nous est désormais impossible d’imaginer notre vie personnelle et professionnelle sans elles. Selon ces auteurs, l'Informatique Ubiquitaire a pris une forme différente de celle attendue par Weiser, dans laquelle les dispositifs mobiles représentent l'élément central de notre vie quotidienne. Ces auteurs soutiennent que nous sommes continuellement en train d’utiliser des ressources informatiques dans notre vie courante sans forcément les percevoir en tant qu’ordinateurs. L’informatique Ubiquitaire est ainsi une réalité sous la forme d’un environnement densément peuplé de ressources informatiques et de communication. 1.1.2. Impact de l’Informatique Pervasive sur les Systèmes d’Information (SI) La dernière décennie a été remarquablement marquée par le changement dans la manière dont nous travaillons et dans la manière dont nous nous appuyons sur les technologies. Nous passons d’un modèle statique, dans lequel les travailleurs n’interagissent avec un processus métier que durant leur « temps de travail » et dans des circonstances bien définies (e.g. assignés à leur ordinateur de bureau), à un modèle dynamique, dans lequel ils se caractérisent par leur mobilité, permise par l’évolution des réseaux sans fil et des dispositifs mobiles. Ainsi, les SI sont confrontés à un environnement pour lequel ils n’ont pas été prévus. En effet, l’arrivée de l’Informatique Ubiquitaire, au sein des organisations, a directement impacté les Systèmes d’Information (SI). La mobilité qu’apportent ces nouvelles technologies a étendu les SI bien au-delà des frontières physiques de l’organisation. Ceci revient à dire que l’évolution de ces technologies mobiles et pervasives a ouvert de nouvelles perspectives et a changé le mode d’accès à ces systèmes. Nous assistons au passage graduel d’un paradigme entièrement fondé sur les desktops à un paradigme mixte, intégrant des dispositifs multiples et très hétérogènes : desktops, dispositifs mobiles et ressources intégrées à l’environnement physique (Kourouthanassis et Giaglis, 2006). Depuis leur apparition, les Systèmes d’Information n’ont cessé d’évoluer et de progresser dans la perspective d’améliorer la productivité et l’efficacité au sein de l’organisation, comme l’illustre la Figure 1. Au début, un Système d’Information (SI) a été conçu comme une combinaison de pratiques de travail, d’information, d’individus, et de technologies de l’information en vue d’atteindre certains objectifs (Alter, 1992). Par la suite, un SI a été défini comme un ensemble organisé de ressources (individus, matériel, logiciel, progiciel, bases de données, procédures) qui permettent d’acquérir, de traiter, de stocker, et de communiquer l’information sous différentes formes au sein d’une organisation (Reix, 2004). Récemment, Nurcan (Nurcan, 2012) a synthétisé toutes ces définitions en présentant les Systèmes d’Information comme étant le cœur stratégique de l’entreprise, rassemblant un ensemble organisé de ressources technologiques et humaines visant à (i) aider la réalisation des Introduction!Générale 3 activités de l'organisation, et (ii) faciliter/servir l’accomplissement des objectifs métier fixés pour et par cette organisation. Figure 1. L'émergence des Systèmes d'Information Pervasifs Les Systèmes d’Information sont devenus un élément clé des organisations. Selon Henderson et Venkatrama (Henderson et Venkatraman, 1993), « posséder un système d'information efficace et efficient supportant les stratégies métiers et les processus qui y sont rattachés est rapidement devenu un facteur clé de succès ». Ainsi, le rôle des SI est devenu plus stratégique au sein des organisations : ils contribuent à la mise en place des différents processus métiers propres à ces organisations, dont le succès ou l’échec peut avoir d’importantes conséquences pour leur survie. Avec le développement des nouvelles technologies, les directeurs des Systèmes d’Information (DSI) sont confrontés à de nouveaux modes d’interaction avec leur SI. L’évolution des SI devient ainsi inévitable. Ces systèmes doivent s’adapter aux nouvelles technologies et aux nouveaux modes d’accès mis à disposition de leurs utilisateurs. Or, cette évolution ne doit pas être subie, mais choisie. Nous assistons donc aujourd’hui à l’émergence d’une nouvelle génération de Systèmes d’Information : les « Systèmes d’Information Pervasifs » (SIP). Nous assistons aujourd’hui au passage progressif des technologies de l’information (IT) à l’arrière-plan. En d’autres termes, les Systèmes d’Information sont là aujourd’hui pour surveiller les activités des utilisateurs, pour assembler et traiter les informations et pour intervenir lorsque cela est nécessaire (au lieu d’être uniquement déclenchés et manipulés directement par l’utilisateur) (Kourouthanassis et Giaglis, 2006) . 1.1.3.Les Systèmes d’Information Pervasifs (SIP) La notion de Système d’Information Pervasif est au cœur de l’évolution mentionnée cidessus. Cette nouvelle classe de SI représente l’avenir de ces systèmes. Elle apporte de Introduction!Générale 4 nouvelles opportunités, notamment par la prise en compte de l’environnement et la possibilité d’offrir des services innovants. A l’inverse des SI traditionnels, les Systèmes d’Information Pervasifs s’intègrent progressivement à l’environnement physique (Kourouthanassis et Giaglis, 2006). Cette nouvelle classe de SI se distingue des SI traditionnels par l’environnement pervasif dans lequel ils émergent. Contrairement aux SI traditionnels, intégrés notamment à un environnement desktop classique qui limite le mode d’interaction de l’utilisateur (modes d’accès stationnaires), les SIP s’ouvrent à d’autres dispositifs plus évolués, offrant à l’utilisateur des espaces plus étendus d’interaction avec le SI : des dispositifs mobiles transportables par l’utilisateur, dispositifs directement intégrés à l’environnement autour. Ainsi, comme le mentionnent Kourouthanassis et al. (Kourouthanassis et al., 2007), en dehors des interactions physiques uniquement avec le système, un SIP peut également intégrer des éléments d'interactions mobiles avec des dispositifs ou des objets de l'environnement physique d'une manière naturelle et discrète. Par conséquent, à l’opposé des SI traditionnels, complétement maîtrisés et bornés, les futurs SIP visent à s’intégrer à un environnement dynamique et hétérogène. D’une part, selon (Kourouthanassis et Giaglis, 2006), ces SIP s’inscrivent dans un environnement particulièrement dynamique, composé d’une multitude d’artefacts capables de percevoir le contexte de l’utilisateur et de gérer sa mobilité. D’autre part, ces SIP offre, par cette intégration à un environnement hétérogène, une interaction continue avec le SI là où on est et quand on le souhaite. Toujours selon (Kourouthanassis et Giaglis, 2006), contrairement aux SI traditionnels, dont l’intelligence réside dans l’ordinateur desktop, les SIP doivent faire résider cette intelligence au-delà de l’ordinateur en l’intégrant dans le monde physique. De plus, les SIP doivent être proactifs, réagissant aux stimuli de l’environnement, à l’encontre des SI traditionnels, dans lesquels une réponse du système est forcément précédée d’une action de l’utilisateur. Cette nouvelle génération des SI, avec les nouvelles opportunités qu’elle apporte, représente l’avenir de ces systèmes. Mais il est à noter que cette nouvelle génération apporte également son lot de défis : hétérogénéité, dynamisme, accès ubiquitaire aux SI, etc. À ce jour, les DSI sont livrés à eux-mêmes. Ils ne disposent d’aucun moyen leur permettant de concevoir, de construire et de mieux comprendre cette nouvelle classe de SI. 1.2. PROBLEMATIQUE A travers ces nouvelles technologies, de nouvelles opportunités de services peuvent s’offrir aux utilisateurs. Selon (Kourouthanassis et Giaglis, 2006), les SIP se caractériseraient non seulement par l’hétérogénéité des dispositifs impliqués, mais également par l’interaction continue rendue possible par ces dispositifs, mobiles ou intégrés à l’environnement physique, ce qui ouvre la possibilité d’offrir aux utilisateurs de nouveaux services innovants. Introduction!Générale 5 Toutefois, afin de concevoir de tels SI évoluant dans un environnement pervasif, il est nécessaire de bien comprendre les caractéristiques et les exigences auxquelles ces nouveaux systèmes seraient soumis. Bien évidemment, les caractéristiques principales des SIP sont l’hétérogénéité des ressources, des infrastructures, des terminaux. Cette hétérogénéité vient justement de l’environnement pervasif dans lequel ces systèmes sont intégrés. Cette hétérogénéité se retrouve également au niveau des services offerts par le SI, avec de multiples technologies possibles (services Web traditionnels, composants OSGI, pour ne citer qu’eux). Les utilisateurs s’orientent ainsi vers un monde de plus en plus hétérogène avec des données et des services répartis à différents niveaux. Il est illusoire d’imaginer que cette hétérogénéité disparaîtra avec le temps. Ces environnements resteront toujours complexes et extrêmement denses d’un point de vue technologique. Les SIP doivent gérer cette hétérogénéité et veiller à la bonne interaction entre l'utilisateur et l'environnement physique (Kourouthanassis et Giaglis, 2006). Se pose alors la question : comment l’utilisateur peut-il faire face à cette hétérogénéité et se concentrer sur son propre objectif et non sur la technologie elle-même ? Effectivement, il faut masquer cette hétérogénéité et cacher la complexité de l’environnement. L’élément clé devient ainsi la gestion de la transparence. Or il nous paraît impossible d’homogénéiser toutes les technologies existantes, même dans un cadre plus contrôlé comme celui des SI. Par ailleurs, les offres de services risquent d’augmenter significativement. Selon Savidis (Savidis, 2010), dans un environnement pervasif, nous sommes confrontés à une évolution rapide du spectre et du nombre de services disponibles pour tout type d’utilisateur, à n'importe quel endroit et à tout moment. Dans la vie quotidienne, le temps moyen passé dans l’utilisation de ces services varie d’une dizaine de secondes à quelques minutes, alors qu'ils sont impliqués dans un nombre croissant d’activités quotidiennes, hebdomadaires ou mensuelles (Savidis, 2010). En effet, il y a une claire tendance à développer et à offrir de plus en plus de services et notamment de services personnalisés, comme le mentionne Wolisz (Wolisz, 2010). Les Systèmes d’Information sont ainsi confrontés à un environnement pour lequel ils n’ont pas été particulièrement conçus (hétérogénéité, offre de services grandissante, etc.). Les Systèmes d’Information Pervasifs se veulent alors une réponse à cette importante évolution des SI. Par contre, ils se doivent de gérer l’hétérogénéité de l’environnement et l’offre de services de manière transparente afin de rassurer les utilisateurs. Or les concepteurs des SIP se trouvent, aujourd’hui, démunis face à une notion relativement nouvelle. Effectivement, les SIP constituent une nouvelle génération des SI qui est difficile à conceptualiser, avec peu de formalismes disponibles. Autant dire qu’ils n’ont rien à leur disposition pour les aider à concevoir de tels systèmes. Partant de ce fait, il est nécessaire de mettre en place un cadre plus formel permettant d’aider les concepteurs à mieux comprendre les SIP et surtout à mieux les maîtriser, tout en assurant la transparence nécessaire à ces systèmes. Par ailleurs, force est de constater que l’environnement pervasif est un environnement hautement dynamique qui varie en fonction de l’utilisateur (ses actions, sa mobilités, etc.) et Introduction!Générale 6 de ses éléments. Ceci ajoute aux SIP une autre caractéristique, au-delà de l’hétérogénéité : le dynamisme. Selon (Hagras, 2011), la nature dynamique des environnements pervasifs impose une capacité d’adaptation à des conditions d’opération changeantes et à des utilisateurs dont les préférences et le comportement sont également variables. Un système pervasif doit être capable d’accomplir les fonctionnalités sollicitées, malgré les changements dans les conditions environnantes ou dans l’état du système (Römer et Friedemann, 2010). En d’autres termes, les SIP doivent s’adapter aux changements de l’environnement afin de gérer son dynamisme. Ainsi, afin d’assurer la transparence nécessaire, les SIP doivent être sensibles au contexte, permettant la prise en compte de l’environnement pervasif. Selon Baldauf et al. (Baldauf et al., 2007), les systèmes sensibles au contexte se caractérisent par leur capacité à adapter leur fonctionnement, par la prise en compte du contexte environnant, afin d’augmenter leur utilisabilité et leur efficacité. Dans ce cadre, la notion de contexte représente « l’ensemble des caractéristiques de l'environnement physique ou virtuel qui affecte le comportement d'une application et dont la représentation et l’acquisition sont essentielles à l’adaptation des informations et des services » (Gensel et al., 2008). Pour (Kourouthanassis et al., 2008), la sensibilité au contexte représente la capacité d’un système à percevoir les informations contextuelles relatives à l’utilisateur, au système lui-même et à l’environnement afin de pouvoir adapter ses fonctionnalités de manière dynamique et proactive, réagissant aux stimuli de l’environnement. Cependant, cette sensibilité au contexte ne doit pas se faire au dépend de la transparence. Selon Dey (Dey, 2011), lorsque les utilisateurs ont des difficultés à former un modèle mental de l’application, ils ont moins envie de l’adopter et de l’utiliser. En plus de leurs capacités d’adaptation au contexte et d’un comportement proactif, les SIP doivent rester compréhensibles à leurs utilisateurs, d’autant plus qu’il s’agit, avant tout, de Systèmes d’Information. Les SI sont là pour répondre aux besoins des utilisateurs. Il est primordial de rassurer les utilisateurs afin qu’ils gardent leur confiance sur ces systèmes. De ce fait, il faut avoir une vision globale du fonctionnement des SI afin d’assurer un tel niveau de compréhension. Ainsi, il est nécessaire de représenter ce fonctionnement global du système à travers une modélisation de haut niveau. Selon (Hagras, 2011), ces modèles doivent être euxmêmes transparents et d’interprétation facile aux utilisateurs afin que ceux-ci puissent mieux analyser le système et ses performances. Partant de ces faits, les SIP se doivent d’être sensibles au contexte et compréhensibles à leurs utilisateurs afin d’assurer la transparence nécessaire et de gérer l’hétérogénéité, sans pour autant perdre complétement le caractère maîtrisé et prédictible propre aux SI. En tant que Systèmes d’Information, les SIP doivent être conçus afin de mieux satisfaire les besoins de leurs utilisateurs en prenant en considération leur environnement pervasif. De plus, au contraire des SI traditionnels, les SIP doivent désormais s’adapter à l’environnement et au contexte de l’utilisateur afin de lui offrir le service le plus approprié. Cependant, cette adaptation doit respecter certains critères et ne doit pas se faire n’importe comment et à n’importe quel prix. Effectivement, le comportement d’un SIP, même s’il doit tirer profit de l’environnement dynamique et des opportunités qu’un tel environnement peut lui offrir, se Introduction!Générale 7 doit de rester prédictible, afin d’assurer la gouvernance de ces systèmes et la confiance des utilisateurs en eux. Le développement d’un SIP répondant à ces besoins est aujourd’hui un problème encore non résolu. Il n’existe pas à l’heure actuelle de modèle ou de méthode permettant aux concepteurs et aux développeurs de prendre en compte ces besoins lors de la conception d’un SIP. D’une part, les recherches au niveau des systèmes pervasifs se sont essentiellement concentrées sur le niveau technique. Des efforts importants ont été consacrés sur l’adaptation au contexte (Baldauf et al., 2007) (Chaari et al., 2008b) (Preuveneers et al., 2009), surtout à la localisation (Coronato et al., 2009) (Varshavsky et Patel, 2009) et aux terminaux (Lemlouma, 2004) (Yang et Shao, 2007). Nous constatons aujourd'hui les limitations de ces approches qui ne tiennent pas compte des exigences derrière l’expérience de l’utilisateur. Plusieurs possibilités peuvent être offertes à l’utilisateur, qui n’est toujours pas capable de comprendre ce qui lui a été proposé, ce qui nuit à la transparence d'utilisation de ces systèmes. Pour nous, la clé du succès serait donc d’assurer un certain niveau de compréhension à ces systèmes pervasifs sensibles au contexte. D’autre part, les recherches autour de la conception des SI ont été nombreuses, et nombreux sont les chercheurs à souligner l’importance de la notion d’intention (Santos et al., 2009)(Rolland et al., 2010)(Deneckere et Kornyshova, 2010). Une intention représente ce qu’attend l’utilisateur de l’exécution du service. Elle représente donc la vision de l’utilisateur sur les fonctionnalités qu’il désire dans un service (Fensel et al., 2011). Cette vision intentionnelle place la notion de service à un niveau d’abstraction plus élevé : le service est là afin de conduire son utilisateur à la satisfaction d’une intention. Il s’agit, selon (Rolland et al., 2010), de combler le fossé qui sépare une vision purement technique d’une vision purement métier des services, centrée sur l’utilisateur et ses besoins. La notion d’intention place donc le service à un niveau plus proche de celui de l’utilisateur final : quelle que soit la technologie utilisée, le service est défini pour satisfaire un besoin, un but exprimé par l’utilisateur. La notion d’intention a été souvent reliée à la notion de service. Plusieurs travaux ont, en effet, considéré la notion de service sous un angle intentionnel (Rolland et al., 2010) (Mirbel et Crescenzo, 2010a) (Santos et al., 2009) (Fensel et al., 2011). Ces approches considèrent qu’un utilisateur cherche, avant tout, à satisfaire une intention, et que les services constituent seulement un moyen de l’atteindre. Mais on constate que cette notion n’a été confrontée à la notion de contexte que rarement (Mirbel et Crescenzo, 2010a) (Santos et al., 2009) (Deneckere et Kornyshova, 2010). En effet, même si la notion d’intention permet au système de mieux comprendre les besoins réels des utilisateurs, l’influence d’un environnement pervasif dans l’émergence et la satisfaction des intentions reste encore peu explorée. Ainsi, nous pouvons résumer notre problématique à un problème de conception et de réalisation d’un SIP qui répond à tous les besoins de transparence, d’adaptation à l’environnement et d’adaptation à l’utilisateur d’un SIP. En effet, avec le manque de modèle et de méthode permettant de prendre en compte tous ces besoins, la DSI (concepteur du SIP) se trouve face à de grandes difficultés rendant difficiles la conception et la réalisation d’un Introduction!Générale 8 SIP transparent et centré utilisateur. Elle se trouve démunie face à une nouvelle génération de SI qui jusqu’à présent n’a pas été véritablement mise en place avec des formalismes appropriés dans l’objectif d’aider et d’orienter les concepteurs de ce système. En somme, nous pensons que la conception et la réalisation d’un SIP doit impérativement répondre aux problèmes suivants : • Transparence : contrairement aux SI traditionnels, les SIP doivent gérer l’hétérogénéité des environnements et des services, et ils doivent le faire de manière transparente à l’utilisateur. Or, à ce jour, peu d’outils, de formalismes et de méthodes destinés aux SIP sont à dispositions de leurs concepteurs. • Adaptation à l’environnement : contrairement aux SI traditionnels, les SIP doivent être conçus pour opérer dans un environnement pervasif. Ils doivent s’adapter au caractère dynamique de ces environnements, sans pour autant perdre la maitrise propre aux SI. L’équation est délicate et, à nouveau, peu d’outils ou de formalismes s’offrent aux concepteurs de ces systèmes. • Adaptation aux utilisateurs : les SIP doivent être conçus de manière à s’adapter non seulement à leur environnement, mais également à leurs utilisateurs. Ceux-ci ont des besoins auxquels les SIP doivent répondre de la manière la plus adaptée possible, tout en gardant la transparence nécessaire pour que le système disparaisse derrière la satisfaction des besoins. 1.3. HYPOTHESES Afin de traiter les problèmes soulevés dans la section précédente, nous considérons les hypothèses de travail suivantes : • Hypothèse principale : Une approche centrée utilisateur permettrait de garantir un environnement pervasif transparent au sein des SIP. Le développement d’une couche de haut niveau centrée utilisateur permettrait aux SIP de cacher la complexité de l’environnement pervasif qui se caractérise par son hétérogénéité et son dynamisme. Ceci permettrait alors de garantir la transparence de cet environnement pour l’utilisateur final. Nous croyons qu’une telle approche doit se concentrer à la fois sur l’adaptation (la prise en compte de l’environnement afin que celui-ci puisse devenir plus transparent à l’utilisateur) et sur les besoins de l’utilisateur (considérer aussi bien la raison pour laquelle il sollicite une action que la manière dont elle est réalisée). Les hypothèses ci-dessous détaillent cette vision. • Hypothèse 1 : La prise en compte de l’intention permettrait de mieux répondre aux besoins de l’utilisateur dans un Système d’Information Pervasif Introduction!Générale 9 Dans un Système d’Information, le but principal est de répondre aux besoins de l’utilisateur. L’expression de ces besoins sous la forme d’intention permettrait aux SIP de comprendre le ‘pourquoi’ d’une action, de mieux assimiler ce que l’utilisateur cherche réellement, et de répondre au mieux à ces besoins en proposant le service le plus approprié. • Hypothèse 2 : La sensibilité au contexte permettrait de mieux gérer le dynamisme de l’environnement pervasif dans les SIP Dans un environnement pervasif, la sensibilité au contexte joue un rôle central. Dans le cadre d’un SIP, elle permettrait de mieux gérer le dynamisme de l’environnement en percevant les informations contextuelles relatives à l’utilisateur et à l’environnement afin de pouvoir mieux adapter ses fonctionnalités de manière dynamique et proactive. • Hypothèse 3 : L’intention de l’utilisateur émerge dans un contexte donné L’intention n’est pas le fruit du hasard. Elle représente le besoin d’un utilisateur. Or ce besoin émerge dans un contexte donné. En d’autres termes, la notion d’intention est directement liée à la notion de contexte. Nous pensons qu’une intention n’a de sens que lorsqu’on la considère dans un contexte donné. • Hypothèse 4 : La réalisation de l’intention est valide dans un contexte, le contexte influence le choix de la réalisation Le contexte dans lequel émerge une intention peut influencer considérablement la manière dont cette intention peut être satisfaite, et donc influencer sa réalisation. • Hypothèse 5 : La prise en compte de l’intention et du contexte permettrait d’assurer un Système d’Information Pervasif transparent et compréhensible à l’utilisateur Un Système d’Information Pervasif doit être considéré comme étant un SI qui évolue dans un environnement pervasif. La prise en compte de leurs besoins respectifs en termes d’intentionnalité et de sensibilité au contexte permettrait de répondre au mieux aux besoins de l’utilisateur en assurant la transparence nécessaire pour un SIP. • Hypothèse 6 : Un mécanisme de prédiction de services, capable d'anticiper les besoins de l'utilisateur, pourra améliorer la transparence générale du système Le développement d’un mécanisme de prédiction de services qui permet d’anticiper les besoins des utilisateurs et de répondre à leurs intentions futures dans un contexte donné, permettrait aux SIP de cacher la complexité de l’environnement pervasif et d’améliorer la transparence de cet environnement pour l’utilisateur final. Introduction!Générale 10 Toutes ces hypothèses représentent le fondement de notre vision intentionnelle et contextuelle des Système d’Information Pervasif. Cette vision est présentée dans la section suivante et sera mise en place en présentant un cadre conceptuel des SIP, une démarche de conception d’un SIP et une architecture de gestionnaire de SIP conforme au cadre conceptuel. 1.4. APERÇU DE LA PROPOSITION Afin de répondre à notre problématique, nous proposons notre vision des SIP. Cette vision se base sur l’orientation service, la sensibilité au contexte et sur une approche intentionnelle afin de résoudre les problèmes de transparence, d’adaptation à l’environnement et d’adaptation aux utilisateurs que nous avons soulevés ci-dessus. Notre vision vise à concevoir un SIP transparent qui (i) gère l’hétérogénéité et la dynamique de l’environnement pervasif ; (ii) assure un certain niveau de contrôle et de maitrise nécessaire dans le cadre d’un SI ; et (iii) comprend les exigences et les besoins réels des utilisateurs derrière leur demande d’un service donné. Les hypothèses énumérées ci-dessus représentent le fondement de cette vision des SIP basée sur les notions d’intention, de contexte et de services. Ceci représente une vision centrée utilisateur des SIP, permettant de gérer l’hétérogénéité et le dynamisme de l’environnement à travers une approche intentionnelle et contextuelle. En effet, dans la perspective d’assurer la transparence et la compréhension nécessaire pour la conception d’un SIP, nous considérons les SIP et leurs éléments à la fois sous l’angle des SI et celui des environnements pervasifs, en observant leurs besoins respectifs de contrôle, d’intentionnalité et de sensibilité au contexte. Cette vision est orientée services, car elle permet de répondre au besoin de gestion de l’hétérogénéité technique de l’environnement dans lequel évoluent les SIP et des actions que le système propose afin de satisfaire les besoins des utilisateurs. Ce choix repose sur la caractéristique principale des services, à savoir leur indépendance par rapport aux aspects technologiques et à leur implémentation, ce qui nous permet ainsi de masquer l’hétérogénéité technologique des environnements pervasifs. De plus, notre vision est orientée contexte, car elle permet d’adapter les SIP au contexte de l’utilisateur et à l’environnement. Elle permet également de mieux gérer l’hétérogénéité et le dynamisme de l’environnement pervasif. Enfin, notre vision est orientée intention, permettant de répondre d’une façon personnalisée aux besoins de l’utilisateur. Cette notion d’intention formalise les besoins de l’utilisateur. Nous pensons que, dans le cadre des SIP, cette notion est nécessaire pour que ces systèmes comprennent mieux l’utilisateur et répondent à son besoin de la manière la plus appropriée. Par ailleurs, nous mettons l’accent, dans le cadre de notre vision centrée utilisateur des SIP, sur l’étroite relation entre les notions d’intention, de contexte et de service. Comme l’illustre Introduction!Générale 11 nos hypothèses, l’intention de l’utilisateur émerge dans un contexte donné. De plus, les réalisations de ses intentions ne sont valides que dans un contexte d’utilisation bien défini. Dans ce cadre, la notion de contexte représente un élément important dans le processus d'adaptation d’un système à l'utilisateur, auquel nous souhaitons ajouter la notion d’intention. En se basant sur ces notions d’intention, de contexte et de service et en exploitant la relation qui les lie, nous proposons une nouvelle vision centrée utilisateur d’un SIP transparent, non intrusif et compréhensible à l’utilisateur. Par la suite, nous proposons une solution plus globale pour concrétiser notre vision intentionnelle et contextuelle des SIP orientés services. Nous proposons une solution pour aider la DSI à concevoir un SIP en présentant un cadre conceptuel des SIP (cf. Chapitre 5) décrivant et formalisant l’ensemble de ses éléments. Nous proposons ensuite des mécanismes de découverte (cf. Chapitre 7) et de prédiction (cf. Chapitre 8) de services qui sont intégrés dans une architecture de gestionnaire de SIP (cf. Chapitre 9) qui est conforme à ce cadre conceptuel. Finalement, nous proposons une démarche méthodologique (cf. Chapitre 10) de conception et de réalisation d’un SIP qui supporte le passage entre le cadre conceptuel et l’implémentation de l’architecture proposée. Notre vision centrée utilisateur est déclinée sur quatre dimensions : • Dimension conceptuelle, à travers un cadre conceptuel dans la perspective d’aider la Direction des Systèmes d’Information (DSI) à mieux conceptualiser de tels systèmes et ses éléments (i.e. le service qu’ils offrent et les éléments de contexte observés) ; • Dimension fonctionnelle, grâce aux mécanismes de découverte de services et de prédiction de services en utilisant l’approche intentionnelle et sensible au contexte des SIP proposée ; • Dimension système, par l’architecture de gestionnaire de SIP en mettant en œuvre la vision intentionnelle et contextuelle conforme au cadre conceptuel. Elle intègre également des mécanismes de découverte et de prédiction de services ; • Dimension support, avec la démarche méthodologique de conception guidant le design des SIP du cadre conceptuel jusqu’à la description des services au dessus de l’architecture du système. Notre vision centrée utilisateurs des SIP, ainsi que sa concrétisation selon les quatre dimensions citées ci-dessus, seront présentées plus en détails dans le Chapitre 4. 1.5. ORGANISATION DE LA THESE Ce travail est organisé comme suit : • Le deuxième chapitre, représente un état de l’art sur les Systèmes d’Information Pervasifs et sur la notion de contexte. Nous évoquons, dans ce chapitre, les principaux Introduction!Générale 12 thèmes liés à notre travail, à savoir la sensibilité au contexte et les Systèmes d’Information Pervasifs ; • Le troisième chapitre, représente un état de l’art sur l’orientation service. Dans ce chapitre, nous évoquons les principaux thèmes liés à notre travail, à savoir les systèmes orientés services et les différentes tendances existantes, les systèmes intentionnels, etc. Par la suite, nous présentons les challenges pour les Systèmes d’Information Pervasifs orientés services, plus spécifiquement la découverte et la prédiction dynamique de services ; • Le quatrième chapitre, résume notre problématique et présente plus en détail notre proposition et la solution globale ; • Le cinquième chapitre, présente le cadre conceptuel des SIP, qu’on a appelé « espace de services ». Dans ce chapitre, nous présentons une conceptualisation des différents éléments constituant l’espace de services, à savoir les services et les capteurs ; • Le sixième chapitre, détaille la description sémantique des services. Ce chapitre explique notre extension de OWL-S pour inclure les informations intentionnelles et contextuelles des services en conformité avec l’espace de services ; • Le septième chapitre, présente le mécanisme de découverte de services guidé par le contexte et l’intention. Dans ce chapitre nous présentons notre algorithme de découverte dynamique des services intentionnels et contextuels, ainsi que notre implémentation et évaluation de cet algorithme ; • Le huitième chapitre, illustre le mécanisme de prédiction de services basé sur l’intention et le contexte. Dans ce chapitre nous présentons notre processus d’apprentissage et de prédiction dynamique des services intentionnels et contextuels, ainsi que notre implémentation et évaluation de ce processus ; • Le neuvième chapitre, illustre notre architecture de gestionnaire de SIP et présente ses différents composants et les interactions entre eux, afin de mettre en œuvre les différents concepts de l’espace de services ; • Le dixième chapitre, expose notre démarche méthodologique supportant le passage du cadre conceptuel des SIP vers l’architecture de gestionnaires des SIP. Nous illustrons, par la suite, cette méthodologie à travers un cas d’étude ; • Finalement, nous finalisons ce manuscrit par le onzième chapitre qui conclut ce travail de recherche et ouvre de nouvelles perspectives. Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 13 Chapitre 2. SYSTEMES D’INFORMATION PERVASIFS ET LA NOTION DE CONTEXTE 2.1. INTRODUCTION L’émergence des nouvelles technologies et la démocratisation des terminaux mobiles ont impacté remarquablement notre quotidien et notre façon d’utiliser les systèmes et les services disponibles. Ceci représente l’apparition de l’Informatique Pervasive, laquelle vise à intégrer les technologies d’une façon invisible dans notre vie, rendant les services offerts par les systèmes disponibles n’importe où et n’importe quand. Cette arrivée de l’Informatique Pervasive impacte sérieusement les Systèmes d’Information (SI) au sein des organisations. Au cœur de l’Informatique Pervasive se trouve la notion de sensibilité au contexte. La notion de contexte a été largement étudiée et discutée dans ce domaine. Elle représente un concept très vague qui fait apparaître diverses définitions selon différents points de vue allant des plus généraux, applicables à tous les domaines, au plus spécifiques s’appliquant à un type d’application ou domaines précis. Cette variété de définition a fait émerger de multiples modèles dans la perspective de représenter et de limiter la notion de contexte. Ces modèles de contexte ont fait l’objet de plusieurs années de recherche qui ont conduit à une modélisation sémantique plus compréhensible et plus significative, faisant appel aux ontologies et à de techniques de raisonnement plus puissantes. Ces modèles de contexte sont utilisés dans les processus d’adaptation et de personnalisation au sein des Systèmes Sensibles au Contexte afin d’offrir les services les plus appropriés et les mieux adaptés à l’utilisateur. Ce chapitre présente un état de l’art sur la notion de contexte et sur les Systèmes d’Information Pervasifs (SIP). Nous commençons par illustrer l’émergence et l’historique du domaine de l’Informatique Pervasive et des Systèmes Sensibles au Contexte. Nous présentons, par la suite, la notion de contexte, nécessaire à ces systèmes, exposée sous différentes définitions, caractéristiques et dimensions. Dans cette partie, nous attribuons une attention particulière aux différentes modélisations de contexte illustrées à la littérature et au processus de gestion de contexte qui représentent le fondement des Systèmes Sensibles au Contexte. De plus, face à la multitude de modèles de contexte, nous proposons, à la fin de cette partie, un cadre d’analyse et de comparaison des modèles existants. Finalement, nous présentons l’impact de l’émergence de l’Informatique Pervasive sur les SI faisant apparaître une nouvelle classe de SI appelée les Systèmes d’Information Pervasifs (SIP). 2.2. L’INFORMATIQUE PERVASIVE ET LES SYSTEMES SENSIBLES AU CONTEXTE Dans cette section, nous présentons l’historique de l’apparition du domaine de l’Informatique Pervasive et des Systèmes d’Information Pervasifs. Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 14 2.2.1. Définition et historique du domaine de l’Informatique Pervasive Depuis plusieurs années, nous sommes témoins d’une importante évolution des nouvelles technologies (Smartphones, tablettes, 3G, etc.) et de la façon dont nous les utilisons pour accéder aux différents systèmes et services qui prennent place dans notre quotidien. Ceci représente l’ère de l’Informatique Pervasive, dorénavant invisible à nos yeux, faisant partie intégrante de notre quotidien, à tel point qu’il nous est désormais impossible d’imaginer notre vie personnelle et professionnelle sans elle. Cette nouvelle ère vise à intégrer discrètement les ordinateurs dans la vie de tous les jours des utilisateurs à la maison et au travail (Che et al. 2007). L’objectif est de rendre plus confortable la vie au quotidien des utilisateurs. Elle a tendance vers la miniaturisation des dispositifs électroniques et leur intégration à n'importe quel objet du quotidien, favorisant ainsi l'accès aux informations dont nous avons besoin partout et à tout moment. Ainsi, l'Informatique Pervasive émerge comme un nouveau paradigme fournissant des services informatiques à tout moment et n'importe où. Cette vision d’une Informatique invisible et intégrée à l’environnement a été soutenue depuis plusieurs années par l’Informatique Pervasive (ou Ubiquitaire) (Weiser 1991). Selon plusieurs observations, Weiser a constaté que le ratio d’ordinateur par personne n’a cessé d’augmenter considérablement. Dans son article (Weiser 1991), il soutient que « Les technologies les plus profondément enracinées sont les technologies invisibles. Elles s’intègrent dans la trame de la vie quotidienne jusqu’à en devenir indiscernables ». Cette vision des technologies présentes mais non intrusives, qui accompagnent les usages du quotidien et les déplacements des utilisateurs, a guidé vingt années de recherche en Informatique Pervasive (Bell et Dourish, 2007). L’Informatique Pervasive a été envisagée par Weiser (Weiser, 1991) comme la troisième ère de l’informatique moderne, dans laquelle l’utilisateur est confronté à une multitude d’ordinateurs sans fil communiquant entre eux discrètement. En effet, un changement radical dans l’informatique a été souligné par Weiser (Weiser, 1991) : partant de l’époque ou plusieurs utilisateurs partagent le même ordinateur (ère de l’ordinateur central « mainframe »), vers l’époque de la relation personnelle avec l’ordinateur (ère de l’ordinateur personnel), en arrivant à l’émergence d’un monde où l’utilisateur interagit en toute transparence avec une multitude d’ordinateurs. L’ère de l’Informatique Pervasive représente l'époque actuelle qui est caractérisée par l’évolution des technologies mobiles et par la démocratisation des dispositifs et des réseaux mobiles. Ceci a entraîné progressivement la croissance remarquable des ordinateurs intégrés dans la vie quotidienne. Selon Satyanarayana (Satyanarayana 2001), l’Informatique Pervasive englobe l’informatique mobile, mais elle va beaucoup plus loin. L'informatique mobile s'appuie sur les fondations de systèmes distribués, des réseaux mobiles et des systèmes sensibles à l'énergie. Elle englobe tout ceci en y intégrant quatre axes de recherche complémentaires : les espaces intelligents, l’invisibilité, le passage à l’échelle localisée et le conditionnement inégal (Satyanarayana 2001). Le premier axe, les espaces intelligents, est l’utilisation efficace des Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 15 espaces intelligents qui embarquent le monde physique dans le monde conceptuel. Le deuxième axe, l’invisibilité, renvoie à ce que Weiser décrit comme une intégration transparente de l'informatique dans le tissu de notre vie quotidienne. Ceci signifie, comme l’a mentionné Weiser (Weiser 1991), la disparition de la technologie dans la conscience de l’utilisateur. Le troisième axe, le passage à l’échelle localisée, comprend l’emploi de méthodes qui réduisent l’intensité des interactions de l'utilisateur avec les services offerts par le système (basées sur la distance entre eux). Finalement, le quatrième axe, le conditionnement inégal, fait référence aux techniques permettant de masquer le conditionnement intégral de l’environnement. Ceci nécessite un espace de transition, où les applications informatiques traditionnelles et les infrastructures sont peu à peu remplacées par d'autres, présentant les caractéristiques de l'Informatique Pervasive. Toutefois, une certaine confusion persiste quant à savoir si cette vision est une réalité ou un avenir proche. Bell et Dourish (Bell et Dourish, 2007) avancent l’idée selon laquelle l’Informatique Pervasive est déjà une réalité. Pour ces auteurs, elle fait partie intégrante de notre quotidien, notamment à travers les nouvelles technologies. Celles-ci sont effectivement devenues presque invisibles à nos yeux, à tel point qu’il nous est désormais impossible d’imaginer notre vie personnelle et professionnelle sans ces technologies. Selon Bell et Dourish (Bell et Dourish, 2007), l'Informatique Pervasive a pris une forme différente de celle attendue par Weiser, à travers les dispositifs mobiles centraux à notre vie quotidienne. Ces auteurs soutiennent que nous sommes continuellement en train d’utiliser des ressources informatiques dans notre vie courante sans forcément les percevoir en tant qu’ordinateurs. L’Informatique Pervasive est ainsi une réalité sous la forme d’un environnement densément peuplé de ressources informatiques et de communication (Bell et Dourish, 2007). Ce point de vue est partagé par Greenfield (Greenfield, 2006) selon qui l’Informatique Pervasive représente une informatique sans ordinateur, dans laquelle le traitement de l'information est omniprésent dans la vie quotidienne. De part l’intégration des différents dispositifs à l’environnement et à notre vie quotidienne, on peut caractériser l’Informatique Pervasive par son hétérogénéité, hétérogénéité des ressources et de l’infrastructure. Il est illusoire d’imaginer que cette hétérogénéité disparaîtra avec le temps. Ces environnements resteront toujours complexes et extrêmement denses d’un point de vue technologique. Au-delà de cette hétérogénéité, les environnements pervasifs se caractérisent également par leur dynamique. Selon (Hagras, 2011), la nature dynamique de ces environnements leur impose une capacité d’adaptation à des conditions d’opération changeantes et à des utilisateurs dont les préférences et le comportement sont également variables. L’informatique Pervasive implique donc la sensibilité au contexte. 2.2.2.Systèmes Sensibles au Contexte Les années quatre-vingt-dix ont été caractérisées par l’émergence des Systèmes Sensible au Contexte. Cette nouvelle notion est apparue à travers notamment les travaux de Schilit et Theimer (Schilit et Theimer, 1994), Schilit et al. (Schilit et al., 1994), Hull (Hull et al., 1997) et Dey (Dey, 2000). Schilit et Theimer (Schilit et Theimer, 1994) définissent la sensibilité au Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 16 contexte comme la capacité d'une application à découvrir et à réagir aux modifications dans l'environnement où se trouve l'utilisateur. Selon Schilit et al. (Schilit et al., 1994), les Systèmes Sensibles au Contexte sont définis comme des systèmes qui s'adaptent à la localisation de l'utilisateur et à l'ensemble des personnes, des machines et des dispositifs proches ou accessibles, ainsi qu'aux changements dans le temps de ces éléments. Quelques années plus tard, d’autres définitions de la sensibilité au contexte sont apparues avec les travaux de (Hull et al., 1997) et (Dey, 2000), pour ne citer qu’eux. Hull et al. (Hull et al., 1997) définissent la sensibilité au contexte comme la capacité des dispositifs informatiques à détecter, capturer, interpréter et répondre aux aspects de l’environnement de l’utilisateur et aux dispositifs informatiques. Dey (Dey, 2000), quant à lui, présente une définition plus générale. Il considère qu'un système est sensible au contexte s'il utilise le contexte pour fournir à l'utilisateur des informations ou des services pertinents, où la pertinence dépend de la tâche exécutée par l'utilisateur (Dey, 2000). Ainsi, l'une des prémisses essentielles des systèmes sensibles au contexte est d’être conscient des circonstances dans lesquelles se trouve l'utilisateur, d'être capable d'interpréter et de réagir à toute interaction conformément à ces circonstances (O’Hare et O’Grady, 2002). Dans ce cadre, le contexte est un élément clé, car il est au centre des mécanismes d’adaptation prônés par ces systèmes dits sensibles au contexte. Ces systèmes se caractérisent, en effet, par leur capacité à adapter leur fonctionnement afin d’augmenter leur utilisabilité et leur efficacité, par la prise en compte du contexte environnant (Baldauf et al., 2007). En d’autres termes, un Système Sensible au Contexte est un système qui supporte une certaine variabilité, le choix de la variante dépendant du contexte qui entoure l’exécution du système et son interaction avec les utilisateurs. Le contexte agit ainsi comme un élément extérieur au système qui influence sa variabilité intérieure, une sorte de contrainte qui guiderait le choix de la variante la plus appropriée et le processus d’adaptation la concernant (Najar et al., 2009). La sensibilité au contexte est une des propriétés les plus importantes d’un système pervasif caractérisant la capacité d’un système à prendre en compte l’environnement, à acquérir des informations sur ce dernier, puis à réagir en conséquence. Il s’agit d’un des piliers pour construire des systèmes mobiles et pervasifs modernes (Schilit et al., 1994) (Dey et Abowd, 2000) (Jones et Grandhi, 2005) (Bolchini et al., 2009). La mobilité de l'utilisateur apportée par l'évolution des nouvelles technologies représente un aspect important conduisant à l’apparition de ces Systèmes Sensibles au Contexte. Selon Dourish (Dourish, 2004), lorsque l'informatique est sortie de l'environnement du bureau (fixe) traditionnel, il est devenu important de suivre à la trace la situation dans laquelle la technologie est utilisée. Par exemple, les utilisateurs mobiles ont besoin d'un contenu informatif qui convient à leur utilisation sous des conditions changeantes (temporelles, spatiales, matérielles, physiques et environnementales) (Carrillo-Ramos et al., 2009). Ces besoins d'adaptation ont guidé la proposition des Systèmes Sensibles au Contexte. Dans ces systèmes, le contexte guide les mécanismes d'adaptation utilisés pour personnaliser le contenu et les services en conséquence. Même si des solutions sensibles au contexte sont apparues dans différents domaines de recherche, la sensibilité au contexte atteint son utilité maximale lorsqu'elle est appliquée à des Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 17 systèmes pervasifs mobiles. La sensibilité au contexte permet également aux services de s'adapter dynamiquement et efficacement à la fois : (i) à la situation actuelle, tels que le lieu physique actuel et/ou l'activité sociale ; et (ii) aux conditions complexes et variables de déploiement typiques des environnements mobiles (rareté des ressources, la connectivité, etc.). Cette capacité à rassembler et à livrer à un service toutes les informations pertinentes pouvant caractériser son environnement d’exécution (les ressources/capacités informatiques, l'emplacement du dispositif physique, les préférences des utilisateurs, etc.) est ainsi devenue une fonction fondamentale pour le développement de systèmes mobiles modernes. Finalement, il est important de souligner que la notion de contexte est considérée comme l’élément clé des Systèmes Sensibles au Contexte et, ainsi des Systèmes d’Information Pervasifs. En effet, le contexte est au centre des mécanismes d’adaptation de ces systèmes. Nous discutons, dans la section suivante, les différentes facettes de la notion de contexte. 2.3. LE CONTEXTE Dans cette section, nous allons procéder à l’étude de la notion de contexte. Nous commençons par présenter, dans la section 2.3.1, les différentes définitions, caractéristiques et dimensions, et nous détaillons, par la suite, les différentes modélisations dans la section 2.3.2. La section 2.3.3 englobe une présentation de la gestion de contexte nécessaire aux processus d’adaptation des Systèmes Sensibles au Contexte. Nous conclurons cette section par une analyse comparative des différents modèles de contexte existants. 2.3.1.La notion de contexte : définitions, caractéristiques et dimensions La notion de « contexte » est un concept très large, exploré depuis plusieurs années dans plusieurs domaines de recherche tel que l’Intelligence Artificielle et l’Informatique Pervasive (Kirsch-Pinheiro, 2006). Cette notion permet, entre autres, de mieux comprendre les interactions des utilisateurs mobiles avec le système et leurs attentes vis-à-vis du même système. La notion de contexte est ainsi utilisée par certains systèmes dans leur processus d’adaptation. Ce processus d’adaptation permet de fournir une réponse plus appropriée à l’utilisateur, potentiellement répondant au mieux à ses besoins dans un contexte donné. Dans cette perspective, la notion de contexte apparaît comme un élément central dans une démarche d'adaptation dans un tel système (Najar et al., 2009). Au regard de la littérature, nous pouvons constater qu’elle fait par ailleurs l'objet de nombreuses définitions et interprétations. Plusieurs travaux de recherche (Schilit et Theimer, 1994) (Brown et al., 1997) (Dey, 2001) (Strang et Linnhoff-Popien, 2004) se sont focalisés sur la définition et l’utilisation de contexte. Cette section aborde les différents travaux et les définitions portés sur la notion de contexte, ainsi que ses différentes caractéristiques et dimensions proposées dans la littérature. Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 18 2.3.1.1. Définitions Afin d’utiliser efficacement la notion de contexte, il faut commencer par comprendre la signification de contexte et comment il peut être utilisé (Dey, 2001). La définition précise de contexte et de ses caractéristiques s’est avérée une question assez délicate. En effet, la notion de contexte est utilisée et interprétée différemment selon le domaine de recherche dans lequel elle est employée et selon les perspectives offertes. Les premiers travaux dans les Systèmes Sensibles au Contexte ont proposé une vision et une utilisation particulièrement limitée du contexte. Initialement, de nombreux chercheurs, tels que (Schilit et Theimer, 1994) (Brown et al., 1997) (Ryan et al., 1997), représentent la définition de contexte comme une énumération des différents types d’informations portées sur l’utilisateur ou l’environnement dans lequel s’intègre l’application et qui sont jugés pertinents. Schilit et Theimer (Schilit et Theimer, 1994) présentent l’une des premières tentatives de formulation de la notion de contexte. Ces auteurs limitent la définition de contexte à l’observation de la localisation de l’utilisateur, de l’ensemble des utilisateurs présents, des objets à proximités, et des changements apportées à ces éléments (Schilit et Theimer, 1994). Schilit et al. (Schilit et al., 1994) ne cherchent pas à comprendre la nature du contexte. Ils affirment tout simplement que les aspects les plus importants de la notion de contexte peuvent être déterminés en répondant aux questions « où se trouve l’utilisateur ? », « avec qui se trouve-t-il ? » et « quelles sont les ressources à proximité ? ». Une autre définition est ensuite proposée par Brown et al. (Brown et al., 1997). Ces derniers considèrent que le contexte regroupe la localisation de l’utilisateur, les identités des personnes qui l’accompagnent, le temps représentant un moment de la journée, la saison, la température, etc. (Brown et al., 1997). Pour Ryan et al. (Ryan et al., 1997), qui appliquent la sensibilité au contexte dans le cas d'un logiciel de prise de note pour l'archéologie, le contexte se définit de façon plus générale comme la localisation, l'environnement, l'identité et le temps relatifs à l'utilisateur. Toujours dans le même principe de définir la notion de contexte en énumérant ses différents types d’information, Dey (Dey et al., 1998) apportent une autre définition qui présente le contexte comme étant l’état émotionnel de l’utilisateur, le focus de l’attention, la localisation et l’orientation, la date et le temps, les objets et les personnes dans l’environnement de l’utilisateur comme les éléments constituant la définition de contexte. Enfin, Chen et Kotz (Chen et Kotz, 2000) définit le contexte comme l’ensemble des états et des paramètres environnementaux qui soit déterminent le comportement d'une application soit dans lesquels un événement d'application se produit et est intéressant pour l’utilisateur. Nous observons que ces premiers travaux de recherche se sont focalisés plus précisément sur l’identification des éléments décrivant le contexte d’usage d'un système, plutôt que de comprendre sa réelle signification. Ils demeurent assez vagues sur la nature de la notion de contexte elle même. Toutefois, suite à ces premiers travaux, une plus grande attention a été accordée à la notion de contexte. Pascoe 1998 (Pascoe, 1998) et Dey (Dey, 2001), par exemple, ont proposé des définitions de contexte plus générales et largement acceptées. Ces définitions donnent un sens plus opérationnel à la notion de contexte, employée pour leSystèmes!d’Information!Pervasifs!et!la!notion!de!contexte 19 développement d'applications pervasives (ubiquitaires) et mobiles. Leur objectif est d’abstraire les précédents travaux sur le contexte de leurs liens aux expérimentations et aux scénarii bien spécifiques. Ainsi, Pascoe 1998 (Pascoe, 1998) voit le contexte comme le sousensemble mesurable d'un environnement porté à l'intérêt des utilisateurs. Cette définition ne se limite pas à un domaine en particulier et a comme objectif de pouvoir être dérivée et applicable à différents types d’application et de scénarii. Par contre, de part sa généricité, cette définition est parfois difficilement applicable à un cas concret. Quelques années plus tard, apparaît la définition la plus connue proposée Dey (Dey, 2000) qui décrit le contexte comme étant « toute information qui peut être utilisée pour caractériser la situation d'une entité. Une entité est une personne, un endroit ou un objet considérés comme pertinents pour l'interaction entre un utilisateur et une application, y compris l'utilisateur et les applications elles-mêmes ». Cette définition a été illustrée et utilisée par la suite comme une référence dans plusieurs travaux de recherche. La pertinence de cette définition émerge de sa capacité à être dérivée selon différents degrés de granularité, en plus d’être utilisée dans n'importe quel scénario. Elle concerne plus particulièrement la conception des Systèmes Sensibles au Contexte, puisqu’elle prend en compte la pertinence des éléments pour les interactions entre l’utilisateur et le système. Cet auteur (Dey, 2001) estime d’ailleurs que les précédentes définitions étaient trop précises, car il est impossible d'énumérer les aspects qui sont importants pour toutes les situations, ceux-ci pouvant changer d'une situation à une autre. La notion de contexte s’est étendue avec (Mostefaoui et al., 2004) (Brézillon, 2005) (Kirsch-Pinheiro, 2006). Désormais, elle ne se limite plus à l’utilisateur qui a effectué une action ou à sa localisation, mais elle s’étend aux informations physiques (localisation, temps, etc.), aux informations sociales et même organisationnelles (rôle de l’utilisateur, etc.). D’une manière plus générale, Mostefaoui et al. (Mostefaoui et al., 2004) définissent le contexte comme ce qui entoure le centre d'intérêt de l'individu et qui apporte des informations additionnelles capables d'aider à la compréhension de ce centre d'intérêt. Dans ce même cadre, Brézillon (Brézillon, 2005) précise que le contexte dépend également de l’activité courante de l’utilisateur. L’activité est considérée, par ces auteurs, comme un élément clé de contexte : elle détermine les informations, les connaissances, les objets de l’environnement, etc. qui représentent les éléments les plus pertinents autour d’elle et qui sont nécessaires à son accomplissement. Selon cet auteur, le contexte entoure un focus (par exemple, la tâche à accomplir ou l'interaction) et donne un sens aux éléments liés à ce focus sans intervenir explicitement dans celui-ci. La notion de contexte est ainsi employée afin d’orienter le focus d'attention, à savoir les sous-ensembles d'un terrain d'entente jugé pertinent pour l’activité en cours (Brézillon, 2005). Sous cette optique, nous pouvons voir le contexte comme étant l’ensemble des caractéristiques de l'environnement dans lequel se déroule l'activité, mais qui sont séparés de l'activité elle-même. Toutefois, malgré le fait que la définition proposée par Dey (Dey, 2000) soit une référence dans le domaine de l’informatique sensible au contexte, elle demeure débattue (Tamminen et al., 2004). Certains auteurs, comme (Greenberg, 2001), la trouvent trop générale et révèlent un problème important d’adaptation au processus de conception. D’autres auteurs, dont Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 20 (Chaari et al., 2005), trouvent que le problème essentiel dans cette définition est l'identification des éléments composant la notion de contexte. De plus, selon ces auteurs, la définition proposée par Dey ne distingue pas les données contextuelles des données de l'application. Ces auteurs considèrent que cette séparation est très importante pour la modélisation de contexte. Selon Chaari et al. (Chaari et al., 2004), la notion de contexte correspond à un ensemble de paramètres qui sont externes à l'application et qui influencent le comportement de celle-ci en définissant de nouvelles vues sur ses données et ses services. Dans la même ligne, Gensel et al. (Gensel et al., 2008) définissent la notion de contexte comme étant l’ensemble des caractéristiques de l'environnement physique ou virtuel qui affecte le comportement d'une application et dont la représentation et l’acquisition sont essentielles à l’adaptation des informations et des services. Elle devient un élément clé de l’Informatique Pervasive, car elle est au centre des mécanismes d’adaptation prônés par les Systèmes Sensibles au Contexte. Selon cet aperçu de la littérature, nous pouvons observer que le contexte a été défini de multiples façons, selon des points de vue différents. Ceci a engendré les multiples définitions de contexte présentées ci-dessus. Toutefois, la définition proposée par (Dey, 2000) demeure la référence dans le domaine de l’informatique sensible au contexte. 2.3.1.2. Caractéristiques La notion de contexte expose un certain nombre de caractéristiques dans l’Informatique Pervasive. A partir des travaux de (Henricksen et al., 2002) (Gu et al., 2004) (Baldauf et al., 2007), nous soulignons ici celles qui nous semblent les plus pertinentes : • Hétérogénéité : Les informations de contexte peuvent provenir de diverses sources (Gu et al., 2004). Elles peuvent être capturées (à travers des capteurs physiques, logiques ou virtuels), dérivées (en se basant sur des mécanismes de raisonnement ou de transformation), statiques (qui ne varient pas avec le temps), ou fournies par l’utilisateur (décrivant son profil). De plus, le contexte se définit par toute sorte d’information capable de décrire les objets physiques, les applications et les utilisateurs dans différents domaines. Ceci conduit à une hétérogénéité remarquable des informations contextuelles ; • Statique vs dynamique : Les informations de contexte peuvent être définies en tant qu’informations statiques ou dynamiques de contexte. Cette caractéristique dépend du niveau de variabilité des valeurs de cette information contextuelle. D’une part, les informations dites statiques sont celles qui décrivent les aspects ne variant pas avec le temps, tel que la date de naissance de l’utilisateur. D’autre part, les informations dites dynamiques sont celles qui varient avec le temps selon les changements capturés, tel que la localisation d’un utilisateur. En effet, les Systèmes Sensibles au Contexte se caractérisent par leurs changements fréquents, ce qui implique que la majorité des informations contextuelles est dynamique. Brézillon (Brézillon, 2002), Rey et Courtaz (Rey et Coutaz, 2004) ont souligné ce caractère dynamique, dit aussi évolutif, de la notion de contexte. Selon Brézillon et al. (Brézillon, 2002), le contexte doit être Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 21 considéré comme étant un espace qui dépend fortement de la situation et qui est en continuelle évolution. Pour Chaari et al. (Chaari et al., 2004), les paramètres qui composent le contexte évoluent durant l'exécution du système ; • Interdépendance : Les informations de contexte peuvent être dépendantes entre elles (Henricksen et al., 2002)(Gu et al., 2004). Certaines informations peuvent être interdépendantes par raisonnement et par dérivation de règles par exemple. En effet, par raisonnement sur le contexte, une information peut être inférée à partir d’une ou de plusieurs autres informations capturées, définies ou agrégées. Cette dérivation démontre certaines dépendances internes entre les éléments de contexte. Par exemple, dans certains cas, l’activité de l’utilisateur ne peut être dérivée que de sa localisation et de son planning numérique ; • Imperfection : L’acquisition des informations contextuelles se fait à travers divers capteurs qui peuvent fournir des informations défectueuses ou être même la déconnection ou l’échec de communication entre le fournisseur et le consommateur de contexte, peuvent conduire à l’imperfection des éléments de contexte (Henricksen et al., 2002). En effet, certaines informations contextuelles peuvent être incorrectes si elles ne reflètent pas la situation réelle de ce qu’elles modélisent. De plus, elles peuvent être incomplètes dans le cas où certains éléments de contexte demeurent inconnus. Ceci est dû, par exemple, à l’arrêt d’un capteur ou à un échec de communication entre le fournisseur et le consommateur de contexte. En outre, certaines informations de contexte peuvent être inconsistantes si elles contiennent des informations contradictoires par exemple. La prise en compte de la notion de contexte pour gérer la caractéristique dynamique d’un Système Sensible au Contexte dépend de la nature de chaque type d’éléments de contexte, de sa pertinence et de son utilisation dans le système. Ainsi, étant donnée la diversité des informations de contexte, il est utile de bien les classifier par dimension afin de faciliter leur utilisation et compréhension. C’est pour cette raison que nous présentons dans la section suivante les dimensions potentielles de contexte. 2.3.1.3. Dimensions Les difficultés rencontrées à définir d’une manière unique et non ambiguë la notion de contexte ont encouragé différentes interprétations des dimensions. Ces dimensions regroupent les informations contextuelles qui appartiennent à une même catégorie. En d’autres termes, ils représentent la classification des éléments de contexte afin de faciliter leur interprétation, leur compréhension ainsi que leur utilisation. Il est possible de classifier les éléments de contexte de différentes manières. Henricksen et al. (Henricksen et al., 2002) notent que la catégorisation des éléments de contexte en un ensemble de dimensions est utile pour gérer la qualité de contexte. En outre, cette classification est également utile pour la modélisation (Soylu et al., 2009), que nous discuterons dans la section 2.3.2. La description de ces dimensions a fait l’objet de plusieurs propositions résumées dans multiples travaux (Baldauf et al., 2007) (Banâtre et al., 2007) (Han et al., 2008) (Soylu et al., Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 22 2009). Ces travaux proposent des dimensions de contexte représentées à un niveau élevé de granularité. Cette classification des éléments de contexte, selon Soylu et al. (Soylu et al., 2009), permet une stratification claire pour le développement des Systèmes Sensibles au Contexte. Elle peut servir comme un premier pas vers une conceptualisation générique des éléments de contexte. Nous présentons certaines de ces dimensions : • Dimension temporelle caractérise, selon (Soylu et al., 2009), des éléments de contexte dont l’existence ou l’importance dans la perception du contexte est liée à un moment donné. Cette dimension peut être utilisée pour décrire le temps associé aux différents types d’information de contexte, par exemple : le fuseau horaire, l’heure actuelle de l’utilisateur, le début et la fin d’une situation, la durée d’un évènement, d’une activité, ainsi que d’un planning de travail, ou d’utilisation d’une ressource ... Par ailleurs, le temps est un élément très important pour établir et gérer l’historique des contextes ou des situations passées permettant d’enrichir le contexte ; • Dimension spatiale définit, selon (Soylu et al., 2009), la localisation. Cette localisation peut déterminer un espace précis dans lequel s’organise certains dispositifs ou objets de l’environnement, comme elle peut décrire l’emplacement des utilisateurs qui se déplacent d’un endroit à un autre. Cette dimension regroupe la localisation physique, tels que la position absolue (adresse géographiques), le lieu (à la maison, chez le client, etc.), coordonnées GPS, ainsi que la localisation virtuelle, tel que l’adresse IP considérée comme une localisation dans un réseau ; • Dimension relative aux dispositifs permet de mesurer les caractéristiques de la plateforme cliente (Van Welie et De Ridder, 2001) (Groot et Welie, 2002). Cette dimension est appropriée dans le cas où le système doit s’adapter aux capacités et aux conceptions très hétérogènes de ces dispositifs. Cette dimension caractérise les dispositifs mobiles (i.e. smartphone, ordinateur portable, tablette, etc.), les dispositifs fixes (i.e. écrans LCD, des capteurs fixes, des hauts parleurs, etc.), ainsi que d’autres ressources informatiques. Les caractéristiques de ces dispositifs (taille, résolution, puissance de calcul, etc.) peuvent varier beaucoup, ainsi que leur disponibilité. Par conséquent, le système doit adapter son contenu en fonction des caractéristiques de ces dispositifs. Les dispositifs fixes peuvent communiquer et échanger des données avec d’autres types de dispositifs. Pour les ressources informatiques, certains systèmes prennent en compte la charge et la puissance du processeur de l’ordinateur, des périphériques, la charge du réseau en fonction de sa bande passante, etc. ; • Dimension relative à l’utilisateur représente les informations de contexte relatives à un représentant du public cible du système, décrit par ses capacités physiques et cognitives (i.e. profil de l’utilisateur, les personnes à proximité, la situation sociale actuelle, etc.) (Schilit et al., 1994) (Chen et Kotz, 2000) ; • Dimension relative à l’environnement regroupe les informations contextuelles portant sur les informations périphériques à la tâche de l’utilisateur, mais susceptibles de l’influencer (Calvary et al., 2002). Pour certains systèmes, il est intéressant voire nécessaire de mesurer les caractéristiques de l’environnement autour de l’utilisateur afin de s’adapter et de réagir en conséquence. Par exemple, en mesurant le niveau de bruit, nous pouvons ajuster le niveau sonore du haut parleur d’un dispositif mobile ; Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 23 • Dimension relative à l’infrastructure caractérise les impacts de la communication entre les composants distribués sur l’activité fonctionnelle du système et sur l’interaction avec le ou les utilisateur(s) (Rodden et al., 1998). Selon Rodden et al. (Rodden et al., 1998), dans les systèmes mobiles la nature de l’infrastructure est susceptible de changer pendant son usage. Cette variabilité dans l'infrastructure peut avoir un impact sur l’interaction. Il est essentiel que les styles et les interfaces des interactions soient compatibles avec l'état de l'infrastructure. Les propriétés particulières de l’infrastructure, comme la topologie du système, doivent ainsi être intégrées lors de la conception d’un système mobile ; • Dimension relative au système évalue l'utilisation des ressources, par exemple la mémoire, le processeur et le réseau, des composants du système et des capacités du dispositif mobile de l'utilisateur. Malgré ces différentes définitions et visions de la notion de contexte, l’informatique sensible au contexte a su adopter des démarches pragmatiques pour proposer différentes modélisations de contexte. En effet, la gestion de contexte et de ses différentes caractéristiques nécessite de représenter le contexte explicitement dans le système. Nous décrivons dans la section suivante la modélisation de cette notion de contexte. 2.3.2.Modélisation de contexte Dans les Systèmes Sensibles au Contexte, la notion de contexte joue un rôle central qui guide le mécanisme d'adaptation utilisé pour personnaliser le contenu et les services en conséquence. La façon dont les informations de contexte sont utilisées dans ces systèmes dépend de : (i) quelle information est observée ; et (ii) comment elle est représentée. Pour (Brézillon, 2002), une représentation efficace du contexte en machine, tant en termes de modélisation de connaissances que de raisonnement à partir de celles-ci, est un problème à résoudre, et ce, aussi bien du point de vue de la programmation que de son utilisation. Un modèle de contexte est une représentation explicite de l’information de contexte dans le système afin qu’il puisse stocker, interpréter, gérer et raisonner sur ces informations contextuelles pour un objectif précis. Dans un environnement pervasif, la modélisation de ces informations contextuelles dans un système est nécessaire car elle permet de gérer la sensibilité au contexte et l’adaptation. En d'autres termes, les capacités d'adaptation d'un Système Sensible au Contexte dépendent du modèle de contexte utilisé (Najar et al., 2009). Ainsi, un modèle de contexte bien conçu est le fondement d'un Système Sensible au Contexte (Strang et Linnhoff-Popien, 2004). De toute évidence, le formalisme choisi pour représenter ce modèle est important, car il détermine les méthodes de raisonnement que le système peut utiliser pour effectuer certaines adaptations. Grâce à la littérature, nous pouvons observer que de nombreux modèles de contexte ont été proposés par la communauté de recherche (Strang et Linnhoff-Popien, 2004) (Najar et al., 2009) (Bettini et al., 2010). Chaque modèle présente différents points de vue de la notion de contexte qui ont été étudiés dans différents domaines d'application (e.g. intelligence ambiante, systèmes mobiles de tourisme). Un modèle de contexte assure la définition de processus d'adaptation indépendant et isole ce processus des Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 24 techniques d'acquisition de contexte, représentant ainsi la première exigence pour la maintenance et l'évolution des Systèmes Sensibles au Contexte (Najar et al., 2009). L'évolution des Systèmes Sensibles au Contexte de la dernière décennie a été suivie par une importante évolution des modèles de contexte, allant des simples structures clé-valeur aux modèles basés sur des ontologies. Les approches existantes de modélisation de contexte diffèrent ainsi par la puissance d’expression des modèles de contexte, par le support qu'ils peuvent fournir pour raisonner sur des informations de contexte, et par la performance de calcul de ce raisonnement. Strang et Linnhoff-Popien (Strang et Linnhoff-Popien, 2004) et Bettoni et al. (Bettini et al., 2010) ont souligné les approches les plus pertinentes. Ces auteurs classifient les modèles de contexte en fonction de leurs structures de données utilisées pour maintenir et échanger les informations contextuelles dans un système donné. Dans les prochaines sections, nous présentons les structures de données les plus couramment utilisées. 2.3.2.1. Modélisation de contexte basée sur les paires clé-valeur La modélisation de contexte constituée de paires « clé-valeur » correspond au formalisme le plus simple pour représenter le contexte. Il s'agit de représenter le contexte d'utilisation comme un ensemble de paires contenant chacune une clé et la valeur qui lui correspond. Dans cette approche, un élément observé de l’environnement est considéré comme une clé, et la valeur de cet élément représente les données de l’information contextuelle. Schilit et Theimer (Schilit et Theimer, 1994) se basent sur ce formalisme pour modéliser des informations de contexte tel que la localisation. Cette représentation est également adoptée par le Context Toolkit (Salber et al., 1999) (Dey, 2000). Les approches de modélisation constituée des paires clé-valeur se caractérisent par leur simple représentation, leur gestion facile des paires (dans le cas d’un nombre raisonnable de paire) et leur facilité de stockage. La simplicité des pairs clé-valeur peut être un avantage d’un point de vue gestion, mais ils représentent un inconvénient majeur lors de l’interprétation sémantique et si le critère d’ambiguïté est à considérer. La modélisation par les paires clé- valeur ne permet de représenter que la valeur capturée pour un élément observé de l’environnement. Avec cette simple modélisation, la qualité des informations contextuelles n’est pas prise en compte. Ce type de modélisation ne permet pas de déterminer si les informations contextuelles capturées sont incomplètes, ambiguës ou même incertains. De ce fait, l’ambiguïté des informations contextuelles ne peut pas être prise en compte par ce modèle. De plus, cette modélisation manque de capacités pour des structurations assez sophistiquées. En effet, plus le nombre de paires possibles évolue, plus difficile sera la gestion de ces paires et des aspects sémantiques liés à ces paires. Cette augmentation entraine avec elle un risque d'avoir des doublons, entrainant ainsi une incohérence entre les paires contenant des informations sur un même élément de contexte. Cette modélisation est également confrontée à un autre problème, à savoir la difficulté de sa réutilisation dans d'autres systèmes que celui d'origine, car l'interprétation des paires clé-valeur dépend de l'application. Ceci entraine un problème d’interopérabilité si les clés et les valeurs ne sont pas standardisées. Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 25 2.3.2.2. Modélisation de contexte basée sur les schémas de balisage Une seconde approche soulignée dans la littérature est l'approche utilisant les modèles de schéma de balisage. Ces modèles formalisent les informations de contexte selon une structure de données fixe et hiérarchique (un arbre syntaxique). Cette structure est constituée de balises avec des attributs et de contenu permettant d'exprimer des relations plus complexes tels que les associations. Cette approche de modélisation de contexte est sérialisée dans des documents XML ou RDF (Lassila et Swick, 1999) afin d’améliorer l'interopérabilité. Ces modèles de contexte sont souvent utilisés pour représenter des informations statiques portant sur des « profils » d'entités. Ils peuvent formaliser par exemple des profils de l’utilisateur, tel que l’approche Friend-Of-A-Friend (FOAF) (Brickley et Miller, 2005), et des profils des dispositif, tels que les approche Composite Capabilities/Preferences Profile (CC/PP) (Klyne et al., 2004) (Lemlouma, 2004) (Kiss, 2010), User Agent Profile (UAProf) (WAP FORUM, 2006) et Comprehensive Structured Context Profile (CSCP) (Buchholz et al., 2004), qui ont pu atteindre un certain niveau d’expressivité par la sérialisation XML et RDF. Par exemple, le standard CC/PP (Klyne et al., 2004) est une recommandation W3C permettant de créer des « profils » décrivant non seulement les caractéristiques logicielles et matérielles d'un dispositif, mais également les préférences de l'utilisateur. Un profil CC/PP est utilisé pour personnaliser le contenu et adapter la présentation sur la base des capacités des dispositifs et des préférences des utilisateurs. Chaque profil est constitué d’un ensemble d’attributs et de valeurs associées. Le standard CC/PP est lui-même basé sur un autre standard, RDF (Manola et al., 2004). Le point important que relève l'utilisation de RDF, par rapport à l'utilisation d'un ensemble de paires clé/valeur, est la possibilité de décrire des métadonnées sur ces paires et de définir un vocabulaire commun réunissant les propriétés susceptibles d'être décrites. Plus spécifiquement, Lemlouma (Lemlouma, 2004) propose un modèle de contexte se basant sur CC/PP pour représenter le contexte d'utilisation. Ce modèle est utilisé par son architecture NAC (Negociation Adaptation Core) qui assure, dans un environnement hétérogène, la transmission au client d’un contenu dont la présentation est adaptée aux contraintes des dispositifs mobiles. Cet auteur utilise le modèle CC/PP pour décrire les capacités physiques (capacité mémoire, taille écran, etc.) et logicielles (systèmes d’exploitation, navigateur, etc.) d’un terminal. La Figure 2 illustre un exemple de modélisation de profil CC/PP, présenté par Lemlouma et al. (Lemlouma, 2004). Cet exemple décrit les capacités d'affichage d'un terminal en particulier, à travers les valeurs de l'élément HardwarePlatform (largeur 320 et hauteur 200), ainsi que la description du système d'exploitation et du navigateur Web installé dans le dispositif (élément SoftwarePlatform). Dans ce travail, Lemlouma et al. 2004 (Lemlouma, 2004) propose deux mécanismes de capture (extraction de contexte) à savoir l’extraction statique qui fait appel à une interrogation paramétrée d’une base des profils ou l’extraction dynamique qui calcule la valeur de certaines caractéristiques de l’environnement. Cet auteur propose dans ce cadre un mode d’interaction optimisé avec un répertoire de profil permettant de maintenir une base des profils CC/PP. Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 26 Figure 2. Exemple de profil CC/PP (d’après (Lemlouma, 2004)) Après l’apparition de CC/PP, plusieurs autres extensions de ce standard ont été proposées. Le forum WAP, par exemple, (WAP FORUM, 2006) a proposé UAProfile come une autre approche de modélisation qui adopte la spécification de CC/PP. A l’instar de CC/PP, un profil UAProf présente une hiérarchie à deux niveaux composée d'éléments et de leurs propriétés. En revanche, contrairement à CC/PP, la spécification UAProf propose également un vocabulaire concret, représenté par un ensemble spécifique d'éléments et d'attributs, pour décrire la prochaine génération de téléphones WAP. Une autre extension de ce langage CC/PP a été proposée par Held et al. (Held et al., 2002). Cette extension nommée CSCP (Comprehensive Structured Context Profiles) ne définit aucune hiérarchie fixe, au contraire de la modélisation de CC/PP. Le CSCP s’appuie sur la flexibilité de RDF/S pour exprimer la structure naturelle des informations d’un profil requises pour l’information contextuelle. Cette modélisation de contexte est un métalangage basé aussi sur RDF et hérite de ce dernier, l’interopérabilité, la décomposition et l’extensibilité. Il est plus flexible que CC/PP concernant la structuration des documents et étend le mécanisme pour exprimer les préférences de l’utilisateur. Par rapport aux modèles de paires clé-valeur, les modèles de schéma de balisage fournissent un langage plus expressif pour structurer l'information de contexte qui peut, dans certain cas, être adapté à un domaine d'application plus spécifique. 2.3.2.3. Modélisation de contexte graphique et orientée objet L'évolution de la modélisation de contexte se poursuit avec l'émergence de modèles graphiques (ORM, CML, UML, etc.) et des modèles orientés objets, dont la force est leur structure. Une des propositions les plus pertinentes dans cette approche est le langage de modélisation de contexte (CML) (Context Modelling Language), décrit au départ par Henricksen et al. (Henricksen et al., 2002) et affiné dans des travaux ultérieurs (Henricksen et Indulska, 2004)(Henricksen et Indulska, 2006). CML est une approche de modélisation Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 27 graphique de contexte destinée à la modélisation des bases de données. CML représente une extension de la modélisation ORM (Object-Role Modeling) (Halpin, 2001) qui est une approche basée sur les « faits ». Cette approche (ORM), qui a été conçue pour la modélisation conceptuelle des bases de données, modélise les faits représentant les informations vraies ou correctes dans une application, et les types des faits définissant les types de l’information. CML fournit une notation graphique (visible sur la Figure 3) conçue pour soutenir le concepteur dans l'analyse et la spécification formelle des exigences d'une application sensible au contexte. Ce langage propose des constructions de modélisation pour : la capture des différentes classes et sources de faits, la capture des informations imparfaites en utilisant des métadonnées de qualité, la capture des dépendances entre les types des faits, la capture des historiques de certains types de faits et des contraintes sur ces historiques (Bettini et al., 2010). Les concepts modélisés fournissent une base formelle pour la représentation et le raisonnement sur certaines propriétés de l’information contextuelle (persistance, qualité, interdépendances, etc.). Chaque entité modélisée décrit un objet physique ou conceptuel, comme une personne, un dispositif ou un moyen de communication. Les attributs représentent les propriétés des entités auxquelles ils sont attachés par le biais des associations. Les associations connectent également les entités entre elles. Figure 3. Exemple de modélisation CML (d’après (Henricksen et al., 2002)) La Figure 3 illustre un exemple d’une modélisation de contexte selon le modèle CML (Henricksen et Indulska, 2006). Le modèle représente les utilisateurs (Person), leurs activités (Activity), les terminaux utilisés (Device), la localisation des utilisateurs et des terminaux (Location), les canaux de communication (Communication Channel) et les modes de communication (Communication Mode). Chaque ellipse de la Figure 3 représente un type d'objet avec la valeur entre parenthèses décrivant le schéma de représentation utilisé pour le type d'objet, tandis que chaque case représente un rôle joué par un type d'objet dans un type de fait. Ainsi les activités sont associées à un fait temporel. La localisation d'un utilisateur ou d’un dispositif est une information capturée et a une valeur de certitude associée correspondant à un indice de confiance en fonction de l’endroit de capture. Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 28 La modélisation CML permet d’interroger des informations incertaines (ambiguës) en utilisant une logique à trois valeurs, en plus des assertions et des conditions complexes exprimées en utilisant une forme de logique de prédicat (Henricksen et Indulska, 2006). Le point faible de cette approche est sa modélisation des informations jugées « plates » par Bettini et al. (Bettini et al., 2010). De plus, même si CML peut être utilisé pour le développement d’une application en particulier, il ne fournit pas de support pour l’interopérabilité entre applications. Par ailleurs, nous observons dans la littérature l’émergence des modélisations de contexte basées sur les modèles orientés objets. Ces modèles peuvent être visualisés en utilisant UML. Ces diagrammes reposent sur une méthode de notation standard et générique. Grâce à sa structure générique, UML est approprié pour modéliser le contexte selon un ensemble de classes, d’objets et d’associations. Ceci est illustré, par exemple, dans Bauer (Bauer, 2003), dans lequel les aspects contextuels pertinents à la gestion du trafic aérien sont modélisés comme des extensions UML. Les approches de modélisation de contexte orientée objets tirent profit de l’encapsulation et de la réutilisation propre l’approche objets afin de couvrir une partie des problèmes liés à la dynamique de la gestion de contexte dans les environnements pervasifs. Les détails concernant le traitement des éléments de contexte sont encapsulés au niveau de l’objet, et ainsi ils sont masqués aux autres composants. Selon (Bouzy et Cazenave, 1997), la modélisation objets permet de définir le plus petit nombre de propriétés, fonctions et règles [...] afin de simplifier la représentation des connaissances dans des domaines et de systèmes très complexes. Par exemple, Kirsch-Pinheiro et al. (Kirsch-Pinheiro et al., 2004) (KirschPinheiro, 2006) proposent une approche orientée objets pour la structuration des éléments de contexte et de leurs relations. Un tel modèle est utilisé pour personnaliser le contenu fourni par des systèmes collaboratifs basés sur le Web : le contenu fourni est sélectionné selon le contexte et les préférences de l'utilisateur. L'originalité de ce modèle est la proposition d’éléments de contexte qui sont liés aux aspects collaboratifs (rôle de l'utilisateur, activités, etc.) en plus des aspects physiques (la localisation de l'utilisateur, le dispositif, etc.). Néanmoins, la capture et la maintenance de ces éléments de contexte sont en dehors du modèle. Les auteurs (Kirsch-Pinheiro et al., 2004) supposent l'existence de composants externes qui observent les éléments de contexte correspondants et alimentent ainsi le modèle. Toutefois, les modèles de contexte orientées objets demeurent peu adaptées au partage des connaissances dans un environnement ouvert et dynamique. Elles nécessitent certains accords d’exécution de bas niveau entre les applications pour assurer l’interopérabilité. 2.3.2.4. Modélisation de contexte basée sur les ontologies Dans le cadre de la modélisation de contexte, nous observons l’émergence de nouvelles approches impliquant la modélisation sémantique, en fournissant une description plus structurée et plus riche de contexte basée sur les ontologies. Les ontologies, selon Grubber (Gruber, 1993) et Uschold (Uschold et al., 1996), se basent sur l’idée de spécifier un Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 29 vocabulaire décrivant un ensemble de concepts et les relations pertinentes entre eux. L’ontologie représente ainsi une spécification explicite d’une conceptualisation. Plus spécifiquement, dans la modélisation de contexte, les ontologies fournissent une description formelle et sémantique des informations de contexte en termes d'objets, concepts, propriétés et relations. Elles sont largement acceptées pour la modélisation des informations de contexte dans le domaine de l'Informatique Pervasive. La principale raison de leur acceptation est la popularité et la maturité des langages venus du Web sémantique. Dans le Web sémantique, plusieurs langages de spécification et de description des ontologies existent, tels que RDFS/OWL (Beckett, 2004) et OWL (Horrocks et al., 2003). Le standard OWL définit une ontologie comme une collection d’informations, notamment des informations sur des classes et des propriétés (Smith et al., 2004). La modélisation à base d’ontologies exploite la puissance de la représentation et du raisonnement des logiques de description pour de multiples raisons énumérées par Bettini et al. (Bettini et al., 2010) : (i) l’expressivité du langage est utilisée pour décrire des données de contexte plus complexes qui ne peuvent pas être représentées en CC/PP ; (ii) en fournissant une sémantique formelle aux données de contexte, il devient ainsi possible de partager et/ou intégrer le contexte de différentes sources ; et (iii) les moteurs de raisonnement disponibles peuvent être utilisés afin de vérifier, d’une part, la consistance de l’ensemble des relations entre les éléments de contexte et de dériver des informations de contexte de plus haut niveau. Ainsi, à part la richesse et, d’autre part, l’expressivité des représentations sémantiques apportées par les ontologies, ces dernières se caractérisent également par leur capacité de partage de connaissance et de réutilisation. Ceci est particulièrement important dans un environnement pervasif caractérisé par son hétérogénéité et son dynamisme. De ce fait, et dans la perspective d’une modélisation de contexte plus riche et avec un fort contenu sémantique, plusieurs travaux ont choisi l'utilisation d'ontologies (Strang et LinnhoffPopien, 2004) (Chen et al., 2003) (Gu et al., 2004). Nous détaillons certains de ces travaux dans les sections qui suivent. 2.3.2.4.1. L’ontologie CONON L’ontologie de contexte CONON (CONtext ONtology) est une proposition de Wang et al. (Wang et al., 2004) laquelle repose sur les capacités de partage des connaissances et de réutilisation des ontologies afin de définir ses éléments de contexte. Wang et al. (Wang et al., 2004) se sont concentrés sur la classification et la représentation des éléments de contexte et sur le raisonnement sur ses éléments. Ils ont représenté l’ontologie CONON en OWL-DL sous une forme hiérarchique à deux niveaux. Le plus haut niveau (upper onotology) décrit l’ensemble de concepts les plus généraux et qui sont communs à tous les domaines, tels que la localisation, l’activité la personne, etc. Chacune de ces classes est associée à des propriétés afin d’exprimer ses relations avec les autres classes. Le bas niveau (domain-specific ontologies) représente une collection d’ontologies, qui définit les détails des concepts généraux et leurs propriétés dans chaque sous-domaine. Ces ontologies représentent des concepts de contexte plus spécifiques qui sont dépendants du domaine. Ce niveau étend les classes abstraites en classes plus spécifiques, permettant ainsi une certaine flexibilité par Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 30 l’extension de l’ontologie de haut niveau aux différents domaines. Figure 4. L’ontologie de contexte CONON (d’après (Wang et al., 2004)) Comme l’illustre la Figure 4, Wang et al. (Wang et al., 2004) définissent 4 concepts de base : Personne, Localisation, Activité et Entité de calcul (service, application, réseau, dispositif, etc.). Ainsi, à partir de cette ontologie de haut niveau, il est possible de développer un ensemble d’ontologies qui sont spécifiques à un domaine précis. Pour ce faire, les ontologies dépendantes du domaine peuvent étendre les classes abstraites, définies dans l’ontologie de haut niveau, avec le constructeur subClassOf du langage OWL-DL qui va permettre de définir une certaine hiérarchie des classes. Dans le cadre de ce travail, ces auteurs (Wang et al., 2004) se basent sur un ensemble de règles afin d’exprimer des situations qui sont implémentées avec des prédicats en logique de premier ordre. Ainsi, à travers la création de règles de raisonnement, des connaissances de contexte peuvent être inférées à partir des informations contextuelles de bas niveau. Concrètement, les travaux de Wang et al. (Wang et al., 2004) reposent sur Jena 2 pour le raisonnement sur les ontologies. Alors que les performances d’exécution des méthodes de raisonnement sur le contexte dépendent de la taille de l’ontologie et de la complexité des règles de raisonnement, Wang et al. (Wang et al., 2004) concluent qu’un raisonnement puissant basé sur la logique demeure un calcul assez intensif. 2.3.2.4.2. L’ontologie CoDaMoS L’approche de modélisation de contexte CoDaMoS (Context-Driven Adaptation of Mobile Services) (Preuveneers et al., 2004) a été proposée afin de représenter les informations contextuelles utilisées dans un processus d’adaptation et de personnalisation de services selon les capacités des dispositifs et les préférences de l’utilisateur. CoDaMoS représente une ontologie de contexte adaptable et extensible pour la création des infrastructures sensibles au contexte. Comme l’illustre la Figure 5, cette ontologie de contexte est conçue autour de quatre Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 31 principaux concepts : utilisateur, service, plateforme et environnement qui représentent, selon Preuveneers (Preuveneers, 2009), les aspects les plus importants des informations de contexte. A part ces concepts de base, CoDaMos inclut également des propriétés telles que la localisation courante, les préférences de l’utilisateur, les dispositifs disponibles, etc. Figure 5. L’ontologie de contexte CoDaMoS (d’après (Preuveneers et al., 2004)) Ces auteurs (Preuveneers et al., 2004) proposent des méthodes de transformation et de raisonnement afin de déduire des informations de contexte de plus haut niveau. La technique utilisée dérive de nouvelles informations contextuelles à partir des règles de dérivation et des faits existants. Ils utilisent Jena 2 pour la description des ontologies et le raisonnement. 2.3.2.4.3. L’ontologie MUSIC Reichle et al. (Reichle et al., 2008) et Paspallis (Paspallis, 2009) proposent une ontologie de contexte extensible, bien structurée et facile à comprendre. Celle-ci, à l’instar de SOUPA (Chen et al., 2004a) et CONON (Wang et al., 2004), est composée de deux niveaux hiérarchiques. D’une part, le haut niveau définit les éléments de contexte communs à tous les domaines. D’autre part, le bas niveau décrit les éléments de contexte spécifiques à un domaine en particulier. La Figure 6 illustre la modélisation des éléments de contexte proposée par Reichle et al. (Reichle et al., 2008). L’originalité de cette modélisation repose sur trois concepts de base : (1) l’entité à laquelle l’information de contexte se réfère ; (2) le scope représentant le périmètre sémantique de l’entité sous forme d’un attribut ; et (3) la représentation utilisée en tant que structure interne de l’information de contexte. Ces concepts sont par la suite décrits lors de la modélisation de l’ontologie dans différents domaines d’application. Cette ontologie de contexte entre dans le cadre du projet IST-MUSIC (IST-MUSIC, 2010), englobant une architecture extensible qui permet de collecter, de stocker, d’organiser et d’accéder aux informations de contexte. Cette architecture repose sur des plug-ins agissant comme des fournisseurs de contexte. Chaque plug-in se charge de la capture dynamique d’une catégorie d’information contextuelle correspondant au triplet ou de l’interprétation de ces informations (Paspallis, 2009). Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 32 Figure 6. La structure principale de l'ontologie de contexte MUSIC (d’après (Reichle et al., 2008) (Paspallis, 2009)) Finalement, comme nous l’avons mentionné au début de cette section, la prise en compte du contexte dans un Système Sensible au Contexte nécessite l’utilisation d’un modèle de contexte afin de formaliser et de limiter la notion de contexte. La dépendance entre les informations de contexte observées et le comportement d'un Système Sensible au Contexte peut expliquer la grande variété des modèles de contexte (Najar et al., 2009). Par ailleurs, afin de recueillir des informations de contexte, les Systèmes Sensibles au Contexte utilisent généralement des capteurs physiques et/ou logiques. Ces informations sont ensuite interprétées, traitées et mémorisées pour pouvoir réagir à l’environnement en utilisant le modèle de contexte. Ceci représente le processus de gestion de contexte qui sera détaillé dans la section suivante. 2.3.3. Gestion de contexte Le processus de gestion de contexte est le cœur des Systèmes Sensibles au Contexte. Il est constitué d’un processus itératif qui capture et diffuse les informations contextuelles ainsi que ses changements, les traite et les mémorise. De plus, il permet de prendre des décisions concernant le déclenchement ou non de certaines actions en fonction du contexte observé. Les interactions de l’utilisateur avec le système et avec l’environnement peuvent déclencher des changements du contexte. Il est donc nécessaire que ce processus de gestion de contexte prenne en compte ces changements afin que les processus d’adaptation puissent prendre ces changements en considération. Selon (Preuveneers, 2009), il y a une nécessité croissante d'applications et de services qui sont plus sensibles aux besoins des utilisateurs, mais moins dépendants de l'attention que cet utilisateur leur porte. La prise en compte d’une large gamme de dispositifs, tels que les téléphones mobiles et les tablettes, représente un facteur essentiel de réussite d'une architecture sensible au contexte. De ce fait, le système de gestion de contexte doit gérer, d’une part, l’hétérogénéité de l’environnement d’exécution, et assurer, d’autre part, l’acceptation de cette adaptation par les utilisateurs. Plusieurs architectures ont été proposées Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 33 dans la littérature : Context Toolkit (Salber et al., 1999), GAIA (Ranganathan et Campbell, 2003), Contexteur (Rey et Coutaz, 2004), COSMOS (Conan et al., 2007) (Rouvoy et al., 2008), pluggable middleware architecture (Paspallis, 2009). Plusieurs Systèmes Sensibles au Contexte se basent sur ces architectures complexes, lesquelles intègrent des sous composants responsables de la représentation, de la gestion, du raisonnement et de l’analyse des informations contextuelles. Même si ces architectures différent entre elles, nous constatons que la plupart d’entre elles se composent de trois étapes essentielles : (i) l’acquisition ; (ii) la modélisation ; et (iii) la manipulation des informations contextuelles. La première étape représente la phase d’acquisition de contexte. En se basant sur des capteurs physiques et logiques, le système est capable de capturer des informations contextuelles de nature hétérogène. Après la collecte des informations contextuelles, le système se charge de modéliser ces informations, de les traiter et éventuellement de les stocker. Cette deuxième étape représente la modélisation des informations contextuelles, dans laquelle le bon choix d’un modèle de contexte est un élément clé. Finalement, le système contrôle le niveau d’abstraction des données de contexte en interprétant les données de contexte brutes et en les transformant en information contextuelle de plus haut niveau d’abstraction. Ceci illustre la troisième étape du processus de gestion de contexte, laquelle représente la manipulation des informations de contexte en se basant sur des mécanismes de transformation et de raisonnement sur les données collectées. 2.3.3.1. Acquisition des informations contextuelles L’acquisition des informations contextuelles repose sur la capacité d’un système à capturer des informations de l’environnement et à détecter les changements effectués. En d’autres termes, elle consiste à acquérir de l’environnement les informations jugées pertinentes en fonction des besoins du système. Ceci se base sur un module d’acquisition de contexte qui (i) capture directement les informations de l’environnement intégrant l’utilisateur et le système au travers de différentes sources hétérogènes, et (ii) les envoie à la couche supérieure pour différents usages. Les sources de contexte représentent les différents capteurs utilisés. Un capteur est une source matérielle ou logicielle qui peut générer un certain type d’information contextuelle. On distingue trois types de capteurs : les capteurs physiques directement installés dans l’environnement, les capteurs virtuels qui fournissent des informations contextuelles à partir d'applications ou de services logiciels, et les capteurs logiques qui utilisent plusieurs sources d'information contextuelles pour définir une autre information (Indulska et Sutton, 2003). Plus en détails, ces capteurs sont définis comme suit : • Le capteur physique représente un dispositif matériel capable de fournir des données contextuelles de l’environnement autour de l’utilisateur et du système lui-même. Ceci peut se faire par le biais de différentes technologies. Par exemple, un capteur photodiode permet de capturer l’information sur la lumière. La localisation d’un utilisateur peut être capturée par la technologie GPS (Global Positionning System), laquelle permet de le localiser en utilisant un récepteur approprié ; Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 34 • Le capteur virtuel correspond à une application et à un service logiciel capable de fournir des informations sur le contexte. Par exemple, il est possible de capturer la tâche actuelle d’un employé en consultant son planning numérique. Ces capteurs, qui sont basés sur des composants logiciels, sont généralement moins coûteux que les capteurs physiques ; • Le capteur logique repose sur plusieurs types d’information pour proposer une information dérivée de haut niveau. Selon Chaari (Chaari, 2007), ce type de capteur peut réutiliser des capteurs physiques et virtuels pour fournir un contexte de plus haut niveau, tel que les caractéristiques sociales, économiques, les compétences, etc. Cette information, dans certains travaux, peut être acquise à travers des méthodes de raisonnement. Par exemple, le système peut analyser l’historique d’un utilisateur afin de mettre à jour ses préférences. Après avoir collecté les données contextuelles, ces informations doivent être représentées selon une structure bien déterminée, que nous présentons dans la section suivante. 2.3.3.2. Modélisation des informations contextuelles L’étape de modélisation des informations contextuelles organise et modélise les informations de contexte capturées selon le modèle de contexte choisi et peut, par la suite, les stocker dans un répertoire. Un tel répertoire de contexte permet d’assurer la persistance des informations de contexte. Pour pouvoir stocker et transmettre au reste du système les informations contextuelles, il est impératif de définir un modèle de contexte pour les décrire. Ainsi, un modèle de contexte est requis pour pouvoir l'utiliser dans le système. En d’autres termes, le choix du modèle de contexte est l’élément clé de cette étape qui peut jouer un rôle central dans le traitement et l’interprétation de ces informations. La modélisation des informations contextuelles est présentée plus en détails dans la section 2.3.2. 2.3.3.3. Manipulation des informations contextuelles Les données de contexte capturées lors de la première étape sont souvent des données brutes. Les capteurs interrogés remontent le plus souvent des données techniques qui ne sont pas appropriées à être utilisées par le concepteur du système (Baldauf et al., 2007). L’étape de manipulation consiste à traiter ces données afin de déduire et d’inférer des données de plus haut niveau. Les capteurs collectent les données de contexte de l’utilisateur et du système lui même. Ces données représentent des informations contextuelles qui sont directes, explicites et de bas niveau (e.g. la localisation de l’utilisateur est exprimée sous forme de longitude et latitude). Le manipulateur de contexte (ou interpréteur de contexte) est responsable du raisonnement et de l’interprétation de ces données et d’en déduire/inférer des informations contextuelles qui sont implicites, indirectes et de plus haut niveau. Ces informations contextuelles de haut niveau rajoutent de la connaissance sur le contexte acquis. Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 35 L’interprétation des données de contexte de bas niveau peut être faite par plusieurs opérations comme : opérations de calcul et de transformation, opérations de raisonnement, etc. Nous pouvons séparer ces opérations en deux catégories distinctes : • La transformation de contexte : ce type d’opération permet de modifier la représentation de certaines informations de contexte en se basant sur des méthodes de classification, des calculs mathématiques, etc. Par exemple, la représentation d’une localisation exprimée sous forme de longitude et latitude peut être transformée en représentation sous forme d’adresse postale, plus significative, en utilisant des méthodes de transformation (Preuveneers, 2009). D’autres méthodes de transformation peuvent se baser sur des méthodes de calcul mathématique, telle que la transformation d’une représentation de la température exprimée en degré Celsius C° en une représentation exprimée en Fahrenheit F°. • Le raisonnement sur le contexte : cette opération permet de dériver de nouvelles connaissances sur le contexte en se basant sur des faits existants et sur des règles de dérivations (Preuveneers, 2009). Le raisonnement sur le contexte peut combiner plusieurs règles de dérivation permettant de raisonner sur plusieurs informations contextuelles afin d’en déduire d’autres plus expressives ou plus précises par rapport au système. Dans ce sens, il est possible, par exemple, de déterminer l’activité courante de l’utilisateur en combinant plusieurs informations contextuelles, telle que le planning numérique de l’utilisateur, sa localisation, etc. Finalement, face à la grande variété des modèles de contexte que nous avons détaillés dans la section 2.3.2 et aux différents moyens de capture et de gestion de contexte, nous proposons dans la section suivante, un cadre permettant d’analyser ces différents modèles de contexte. 2.3.4. Cadre d’analyse et de comparaison des modèles existants Selon Mostéfaoui et al. (Mostefaoui et al., 2004), la pertinence des informations contextuelles diffère d’un domaine à un autre selon leur utilisation. Cette affirmation peut être observée dans les différents travaux de modélisation de contexte qui ont été présentés dans la section 2.3.2, dans lesquels divers éléments de contexte (profil de l’utilisateur, préférences de l’utilisateur, localisation, dispositif, etc.) sont observés pour différentes raisons (découverte et configuration de services, personnalisation et adaptation du contenu, etc.). L’immense diversité présente par les modèles de contexte, autant en termes d’éléments de contexte observés, que de formalismes utilisés, rend souvent difficile leur évaluation. Nous proposons ainsi, dans le cadre de cette thèse, un cadre qui analyse et compare les différents modèles de contexte. Ce cadre a comme objectif d'aider à la compréhension et à l’analyse de ces modèles. Il permet d'étudier et de classifier les modèles de contexte, selon différents critères, dans la perspective d’aider le concepteur à choisir le modèle qui lui convient ou de le guider à en déduire un nouveau modèle à partir de l’existant. Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 36 2.3.4.1. Les critères d’analyse des modèles de contexte Les différents critères d’évaluation que nous proposons sont utilisés pour l’analyse des modèles de contexte. Ces critères sont choisis afin de mettre en avant les caractéristiques de chaque modélisation, aidant ainsi l’utilisateur à faire son choix. Ces critères sont : • Information : Quelles sont les informations de contexte qui doivent être observées ? Ce critère permet d’identifier les informations les plus pertinentes qui vont être observées et ensuite utilisées par une application particulière. Ces informations forment le contexte qui doit être modélisé ; • Action : Quelles sont les actions prises par le système sur la base des informations contenues dans un modèle de contexte ? Ce critère représente l’ensemble d'actions qui peuvent être entreprises par le système s’appuyant sur le modèle de contexte. Il montre comment le modèle de contexte est utilisé ; • Structure (Str) : Comment cette information est-elle représentée ? Ce critère représente la structuration interne de l'information contextuelle. Il permet de mesurer le degré de formalisation des informations contextuelles ; • Capture (Capt) : Quelle est la méthode utilisée pour capturer l’information contextuelle ? Pour chaque application, afin d'obtenir des informations sur le contexte d'utilisation, il faut avoir une stratégie de capture qui détecte les informations contextuelles et notifie le reste du système lorsqu’il y a un changement ; • Maintenance (Maint) : Comment pouvons-nous mettre à jour cette information et garder sa pertinence ? L'objectif de ce critère est de préciser les techniques utilisées pour la mise à jour de l'information contextuelle et de définir les stratégies utilisées pour cela ; • Raisonnement (Rais) : Est-ce qu’il existe un moteur de raisonnement capable d'interpréter les informations de contexte ? Ce critère permet de vérifier si des techniques sont mises en place afin de dériver de la connaissance contextuelle de haut niveau à partir des données de contexte de bas niveau ; • Expressivité (Exp) : Est-ce que le modèle peut représenter des informations complexes ? Ce critère mesure la capacité de représenter des entités et des relations complexes. Ceci va permettre d’améliorer l’interopérabilité qui demande une compréhension commune de l’information obtenue. Ce critère est généralement en conflit mutuel avec l'efficacité du raisonnement ; • Efficacité (Eff) : Est-ce qu’il y a un équilibre entre l’expressivité du modèle de contexte et la complexité du traitement mis en place ? Ce critère permet de mesurer la performance d'un type de modèle de contexte en termes de quantité d'informations qui doit être traitée et de complexité du modèle de contexte lui-même ; • Ambiguïté et Incomplétude (Ambig) : Est-ce que les informations de contexte capturées sont de bonne qualité ? Ce critère permet de déterminer si les informations contextuelles capturées sont incomplètes, ambiguës ou incertaines. Il permet de mesurer la qualité et la pertinence des informations de contexte ; Systèmes!d’Information!Pervasifs!et!la!notion!de!contexte 37 • Effort de Programmation (Prog) : Est-ce que les développeurs ont fourni un effort remarquable pour la définition et l’utilisation d’un modèle de contexte particulier au sein de l'application ? Ce critère reflète l’effort dépensé par les développeurs afin de mettre en place leur modèle de contexte. 2.3.4.2. Analyse comparative des modèles de contexte Les modèles de contexte que nous avons étudiés dans la section 2.3.2 ont d'abord été classifiés selon leur approche de modélisation, avant d’être analysés selon les critères précédemment énoncés. Un aperçu de cette analyse comparative est illustré au Tableau 1. Pour les deux critères information et action, nous avons décrit textuellement les informations contextuelles utilisées et les actions entreprises faisant appel au modèle de contexte pour chaque approche. Les autres critères sont évalués par un indicateur d’évaluation qualitatif : (++) score élevé ; (+) score acceptable ; (-) score médiocre. Par exemple, le critère de structure indique le degré de formalisation du modèle de contexte. Ainsi, nous indiquons (++) si l'information est très structurée, comme dans les modèles basés sur les ontologies ; (+) si elle est semi-structurée, généralement XML ou autres modèles orientés objets ; ou (-) si elle n'est pas structurée, comme dans les modèles clé-valeur. Le critère de capture se réfère au degré d'automatisation du processus d'acquisition de contexte. Nous indiquons (++) si l'information est capturée périodiquement ; (+) si elle répond aux changements de contexte suite à une approche basée sur les événements ; ou (-) si elle est acquise manuellement. Le critère de maintenance évalue la stratégie utilisée pour mettre à jour les informations de contexte. Nous indiquons (++) si l'information est maintenue automatiquement ; (+) si elle est semi-automatique (sur demande) ; ou (-) si elle est maintenue manuellement. Le critère de raisonnement montre une évaluation des techniques de raisonnement. Nous désignons par (++) le fait qu’elle dispose d'un moteur de raisonnement ; (+) qu’elle ait un mécanisme de raisonnement ad-hoc lequel est codé en dur ; ou (-) qu’elle dispose d'un mécanisme de raisonnement assez faible. De même, les critères d’expressivité, d’efficacité, d’ambiguïté et d’effort de programmation sont évalués de la même façon. Ils sont évalués (++) pour les modèles qui sont les plus expressifs et assurant un niveau élevé d’interopérabilité, qui sont les plus efficaces, qui offrent le moyen de détecter et de gérer l’ambiguïté et l’incomplétude des informations contextuelles, et qui ne demandent pas beaucoup d’effort de programmation pour les réutiliser. Ils sont ainsi évalués (-) pour les modèles les moins expressifs, les moins efficaces, qui ne gèrent pas la qualité des données de contexte et qui demandent un effort remarquable de programmation. Systèmes(d’Information(Pervasifs(et(la(notion(de(contexte 38 Tableau 1. Cadre d'analyse et de comparaison des modèles de contexte (Najar et al., 2009) Approche de modélisation de Contexte Information Action Str Capt Maint Rais Exp Eff Ambig Prog Approche Schilit (Schilit et al., 1994) - Localisation - Identité des personnes et objets à proximité - Sélection approximative - Reconfiguration automatique de contexte - ++ ? - - ++ - ++ Approche CC/PP (Lemlouma, 2004) - Utilisateur - Terminal - Adaptation de la présentation du contenu pour les dispositifs mobiles + - - - + + - + Approche Kirsch-Pinheiro (Kirsch-Pinheiro, 2006) - Info physique de l’utilisateur -Info collaborative de l’utilisateur - Adaptation du contenu d’un utilisateur mobile dans un groupe + - - + + + + ++ Approche CML (Henricksen et al., 2002) (Henricksen et Indulska, 2006) - Préférence utilisateur - Situation utilisateur - Prise de décision dépendante du contexte et des préférences - Invocation automatique des actions selon changement de contexte + + - - ++ - + + Approche MUSIC (Reichle et al., 2008) - Utilisateur - Dispositif - Environnement - Entité de calcul - Découverte de services - Composition de services ++ ++ ++ + ++ - ++ + Systèmes(d’Information(Pervasifs(et(la(notion(de(contexte 39 Le modèle de contexte proposé par Schilit et al. (Schilit et al., 1994), par exemple, est structuré selon un formalisme clé-valeur, présentant une structuration assez simple, laquelle ne permet pas des structures complexes (-). Les informations de contexte incluent la localisation et l’identité des personnes et des objets à proximité. Le système déploie différentes technologies pour capturer périodiquement la localisation des objets mobiles, le plus souvent la localisation des personnes au voisinage (++). Ce modèle de contexte ne se base que sur des mises en correspondance (matching ) exactes entre les valeurs capturées, représentant ainsi un modèle de contexte avec un niveau de raisonnement très faible (-), mais qui gagne en terme d’efficacité (++). De plus, l'interprétation dans les modèles de contexte utilisant une structure simple de clé-valeur dépend de l'application, ce qui signifie que l’interopérabilité devient un problème si les clés et les valeurs ne sont pas standardisées, affectant ainsi l’expressivité de ce modèle (-). En outre, la simplicité des paires clé-valeur ne permet pas de gérer l’ambiguïté des informations contextuelles (-), mais présente une certaine facilité en terme d’effort de programmation (++). Nous analysons de même les travaux de Lemlouma (Lemlouma, 2004) qui propose un modèle de contexte se basant sur la structure CC/PP (+) pour décrire sous forme de profil les préférences de l’utilisateurs et les capacités physiques et logicielles d’un terminal. Cet auteur utilise le modèle CC/PP basé sur RDF permettant ainsi d’améliorer le niveau d’expressivité de ce modèle (+) et d’améliorer l’interopérabilité entre les différents terminaux et ressources. De plus, le modèle proposé repose sur un mécanisme manuel de capture (-) dans lequel le dispositif client donne, au départ, une description de ses caractéristiques qui peut être, par la suite complétée, par le système. Néanmoins, les informations contextuelles ou ses changements ne sont pas capturées automatiquement. Les profils contenant les informations de contexte sont mis à jour régulièrement, mais manuellement, afin d’intégrer de nouveaux terminaux et logiciels ou pour changer les préférences des utilisateurs (-). En outre, dans ses travaux, Lemlouma (Lemlouma, 2004) ne supporte pas de mécanismes de raisonnement et d’interprétation (-). De plus, cet auteur traite l’ambiguïté et l’incomplétude des informations contextuelles exclusivement au niveau de l’application (+). L’approche proposée par Kirsch-Pinheiro et al. (Kirsch-Pinheiro et al., 2004), quant à elle, repose sur une structure de modélisation orientée objets (+) pour la description des éléments de contexte, telle que les informations physiques (la localisation de l'utilisateur, le dispositif, etc.) et collaboratives (rôle de l'utilisateur, activités, etc.), dans le but de personnaliser le contenu fourni par des systèmes collaboratifs basés sur le Web. Néanmoins, la capture et la maintenance de ces éléments de contexte sont considérées comme extérieures au modèle et ne sont pas prises en compte (-). Par ailleurs, ces auteurs proposent également une méthode de raisonnement ad-hoc (+), à travers un ensemble de mesures de similarité permettant de comparer les éléments de contexte et leurs relations. Comparée à d’autres modèles, cette approche gagne en expressivité (+), avec cette nouvelle modélisation orientée objets, mais demeure peu adaptée au partage des connaissances dans un environnement ouvert et dynamique. De plus, elle nécessite certaines normes d’exécution de bas niveau entre les applications pour assurer l’interopérabilité. Enfin, ce modèle de contexte offre la possibilité de représenter une information contextuelle incomplète ou même ambiguë (+). Systèmes(d’Information(Pervasifs(et(la(notion(de(contexte 40 Nous continuons cette étude comparative par l’analyse du modèle de contexte CML, proposé par (Henricksen et al., 2002), lequel profite de la structuration de la modélisation graphique (+). Henricksen et al. (Henricksen et al., 2002) gèrent la capture de contexte de diverses sources en mettant en place un composant de contexte qui collecte les informations dès qu’il y a un changement (+). De plus cette modélisation permet l’interprétation des informations contextuelles, à travers de conditions simples, notamment l’évaluation des assertions ainsi que des requêtes SQL. Pour traiter des conditions plus complexes, Henricksen et al. (Henricksen et al., 2002) définit une grammaire pour la formulation des situations qui sont exprimées en utilisant la logique des prédicats (+). Par ailleurs, l’implémentation de ce modèle conduit à un code plus propre qu'un modèle non structuré (+), mais à des applications plus difficiles à maintenir (-). En outre, CML fournit également un soutien plus complet à la saisie et à l'évaluation de l'information imparfaite et ambiguë que d’autres approches de modélisation de contexte (+). Reichle et al. (Reichle et al., 2008) ont contribué avec la proposition du modèle de contexte utilisé dans le projet IST-MUSIC (IST-MUSIC, 2010). Cette ontologie pour assurer l’adaptation de systèmes à base de composants OSGI, en prenant en considération les éléments de contexte énumérés. Le modèle, basé sur une ontologie, est extensible, bien structuré et facile à comprendre (++), composé de deux niveaux hiérarchiques, afin de faciliter sa réutilisation dans divers domaines. L’acquisition de contexte sur la plateforme MUSIC repose sur des plug-ins de contexte (Paspallis, 2009) agissant comme des fournisseurs de contexte qui capturent dynamiquement des informations contextuelles (++) et les modélisent sémantiquement. Ces plug-ins de contexte assurent aussi l’interprétation et le raisonnement sur les informations contextuelles, afin de dériver de la connaissance de plus haut niveau, en se basant sur d’autres plug-ins (+). De plus cette ontologie se caractérise principalement par son expressivité et son interopérabilité facilitant ainsi son usage et ses modifications (++) mais impactant ainsi son efficacité en terme de complexité de traitement et de quantité d’informations à traiter (-). A la fin de cette analyse comparative des différents modèles de contexte, nous concluons que, même si d'autres modèles pourraient aussi être adaptés à certaines applications, les approches basées sur l'ontologie semblent en général être les plus prometteuses en termes de raisonnement et d’expressivité, mais l'impact sur l’efficacité et la complexité de programmation sont les deux principaux obstacles à franchir. Dans un environnement pervasif, la notion de contexte, que nous avons explorée dans les sections précédentes, représente les informations capables d’être observées dans cet environnement. Ainsi, les Systèmes d’Information intégrés dans un tel environnement pervasif se doivent de prendre en considération cette notion de contexte (cf. section 2.3.1) afin de s’adapter à la dynamique de l’environnement. En d’autres termes, ils se doivent d’être sensibles au contexte (cf. section 2.2.2). Cette nouvelle classe de SI, qui s’intègre dans cet environnement pervasif, est fondée sur cette notion de contexte et de sensibilité au contexte afin d’assurer, d’une part, la gestion de l’hétérogénéité et de la dynamique de l’environnement, et d’autre part, la transparence de ce système. De plus, afin de représenter Systèmes(d’Information(Pervasifs(et(la(notion(de(contexte 41 les informations contextuelles capturées et de s’adapter en conséquence, ces systèmes doivent définir au préalable un modèle de contexte, comme nous l’avons discuté dans la section 2.3.2. Dans la section suivante, nous présentons cette nouvelle vision des SI, présentée sous le nom de Systèmes d’Information Pervasifs (SIP). 2.4. LES SYSTEMES D’INFORMATION PERVASIFS ET CARACTERISTIQUES Au sein des organisations, les Systèmes d’Information (SI) sont directement impactés par l’arrivée de l’Informatique Pervasive. La mobilité qu’apportent ces nouvelles technologies a étendu les SI bien au-delà des frontières physiques de l’organisation. De ce fait, émerge une nouvelle classe de Systèmes d’Information, les Systèmes d’Information Pervasifs (SIP) (Birnbaum, 1997). Cette nouvelle génération de SI est le fruit d’un important changement dans la manière dont nous travaillons et dont les technologies nous supportent dans notre quotidien. Nous passons d’un modèle statique, dans lequel les travailleurs n’interagissent avec un processus métier que durant leur « temps de travail » et dans des circonstances bien définies (e.g. assignés à leurs ordinateurs de bureau), à un modèle dynamique, assuré par l’évolution des réseaux sans fil et des dispositifs mobiles, dans lequel les travailleurs se caractérisent par leur mobilité. Les Systèmes d’Information Pervasifs (SIP) représentent une classe émergente de SI dans laquelle les technologies de l’information (IT) sont graduellement intégrées à l’environnement physique (Kourouthanassis et Giaglis, 2006). A l’inverse des SI traditionnels, les Systèmes d’Information Pervasifs s’intègrent progressivement à l’environnement physique, passent à l’arrière-plan, gardent une trace des activités des utilisateurs, analysent les informations et interviennent lorsque cela est nécessaire, afin de mieux répondre aux besoins de ces utilisateurs (Kourouthanassis et Giaglis, 2006). Il s’agit d’intégrer l’informatique dans l’environnement physique de manière invisible, telle que soutenue depuis plusieurs années par l’Informatique Pervasive (Weiser, 1991). Les Systèmes d’Information Pervasifs se veulent alors une réponse à cette importante évolution des SI. Selon (Kourouthanassis et Giaglis, 2006), les SIP revisitent la manière dont nous interagissons avec les SI : le paradigme d’interaction passe du simple bureau classique et complétement maîtrisé à un ensemble de dispositifs multiples, très hétérogènes et intégrés dans un environnement hautement dynamique. Toujours selon ces auteurs, les SIP se caractérisent par l’hétérogénéité des terminaux qui permettent d’accéder à leurs services. Ces terminaux peuvent être eux-mêmes mobiles ou intégrés directement à l’environnement. A l’opposé des SI traditionnels, dans lesquels les dispositifs d'accès sont stationnaires, les SIP supportent des dispositifs mobiles qui peuvent être transportés partout par les utilisateurs. Néanmoins, les SIP doivent ainsi gérer cette hétérogénéité et veiller à la bonne interaction entre l'utilisateur et l'environnement physique (Kourouthanassis et Giaglis, 2006). En d’autres termes, les SIP revoient la façon dont nous interagissons avec les ordinateurs par l'introduction de nouvelles modalités d’accès à ces systèmes. Selon (Kitsios et al., 2010), les Systèmes(d’Information(Pervasifs(et(la(notion(de(contexte 42 SIP ont pris du recul par rapport aux interactions originales d’un utilisateur avec son SI et ils considèrent les dispositifs comme entièrement intégrés, d’une manière transparente, à l’environnement physique. Avec cette évolution, le SI traditionnel de bureau (DSI - Desktop Information System) est considéré alors comme un des dispositifs d’accès mis à disposition de leurs utilisateurs. Par conséquent, des interactions continues sont rendues possibles par ces dispositifs, qu’ils soient mobiles ou intégrés dans l’environnement physique (Kourouthanassis et Giaglis, 2006). En découle ainsi la possibilité d’offrir aux utilisateurs des nouveaux services innovants, mais également un système qui serait capable de percevoir son contexte d’utilisation, de gérer la mobilité des utilisateurs et des services, afin de mieux s’accommoder aux besoins et aux désirs de ces utilisateurs. Les SIP s’opposent aux SI traditionnels en s’intégrant de plus en plus dans le monde physique. Les SI traditionnels intègrent l’intelligence uniquement à l’intérieur du système. Dans le cas des SIP, l'intelligence du système ne réside plus uniquement dans l'ordinateur, mais elle est aussi intégrée dans le monde physique (Kourouthanassis et al., 2008). Au-delà de l’hétérogénéité, l’environnement dans le quel s’intègre les SIP se caractérise également par sa dynamique. Selon (Kourouthanassis et Giaglis, 2006), les SIP s’inscrivent dans un environnement particulièrement dynamique, composé d’une multitude d’artefacts capables de percevoir le contexte de l’utilisateur et de gérer sa mobilité. Il s’agit, par opposition aux environnements de bureau qui caractérisent traditionnellement les SI, d’un environnement hautement dynamique, dont l’état varie en fonction non seulement des actions et de la mobilité de leurs utilisateurs, mais également de l’état de ses éléments, eux-mêmes très variables. Selon (Hagras, 2011), la nature dynamique des environnements pervasifs leur impose une capacité d’adaptation à des conditions d’opération changeantes et à des utilisateurs dont les préférences et le comportement sont également variables. Quelques soient les variations auxquelles il est exposé, un système opérant sur un tel environnement se doit d’être adaptable. En d’autres termes, un système dit pervasif doit être capable d’accomplir les fonctionnalités sollicitées, malgré les changements dans les conditions environnantes ou dans l’état du système (Römer et Friedemann, 2010). Ainsi, la dynamique des environnements pervasifs apporte aux SIP une autre caractéristique importante : la sensibilité au contexte (cf. section 2.2.2). Plusieurs auteurs (Vanrompay et al., 2011) (Baldauf et al., 2007) soulignent le rôle central de la sensibilité au contexte dans les systèmes pervasifs. Pour (Kourouthanassis et al., 2008), contrairement aux SI traditionnels, dans lesquels une réponse du système est précédée d’une action de l’utilisateur, les SIP doivent être proactifs, réagissant aux stimuli de l’environnement. Ils doivent s’adapter aux préférences de l’utilisateur et au contexte d’utilisation. A l’opposé, ces nouveaux Systèmes d’Information Pervasifs se distinguent également des applications et des plateformes sensibles au contexte, traditionnellement proposées dans le domaine de l’Informatique Pervasive (Baldauf et al., 2007) (Preuveneers et al., 2009) (Geihs et al., 2009). Nous discuterons ces applications dans le prochain chapitre (cf. chapitre 3) qui s’intéresse aux systèmes orientés services sensibles au contexte. Contrairement à ces derniers, Systèmes(d’Information(Pervasifs(et(la(notion(de(contexte 43 dans lesquels le caractère dynamique et l’autogestion sont des caractéristiques essentielles, les SIP se doivent de rester maîtrisables et maîtrisés. En réalité, cette sensibilité au contexte ne doit pas se faire au dépend de la transparence. Selon (Dey, 2011), lorsque les utilisateurs ont des difficultés à former un modèle mental de l’application, ils ont moins envie de l’adopter et de l’utiliser. Malgré les capacités d’adaptation au contexte et un comportement proactif, les SIP doivent rester compréhensibles à leurs utilisateurs, d’autant plus qu’il s’agit, avant tout, des Systèmes d’Information. Les utilisateurs doivent garder leur confiance en ces systèmes qui sont là pour répondre à leurs besoins. Les SIP doivent ainsi faire coexister deux mondes aux antipodes. Ils se doivent d’être sensibles au contexte, de prendre en compte le caractère dynamique des environnements pervasifs, sans pour autant perdre complétement le caractère maîtrisé et prédictible propre aux SI. En tant que Systèmes d’Information, les SIP doivent être conçus afin de mieux satisfaire les besoins de leurs utilisateurs. Leur objectif est de rendre ces utilisateurs plus performants par une meilleure prise en compte de l’environnement pervasif dans lequel ils se trouvent. Il s’agit de répondre aux besoins des utilisateurs de manière adaptée, quelques soient les conditions d’usage. La satisfaction de l’utilisateur est une priorité pour les SIP. Contrairement aux SI traditionnels, dans lesquels c’était à l’utilisateur de s’adapter au système, les SIP doivent désormais prendre en compte l’environnement et le contexte d’utilisation afin de mieux s’adapter et de fournir aux utilisateurs le service qui correspond au mieux à ses besoins et à son contexte. Cependant, cette adaptation ne doit pas se faire à n’importe quel prix. Même s’il doit tirer profit de l’environnement dynamique et des opportunités qu’un tel environnement peut lui offrir, le comportement d’un SIP, avec les services et les fonctionnalités qu’il offre à ses utilisateurs, doit rester prédictible, afin d’assurer la gouvernance de ces systèmes et la confiance des utilisateurs en eux. De plus, certains auteurs, tels que Kourouthanassis et al. (Kourouthanassis et al., 2008), considèrent ainsi le degré d’omniprésence (pervasiveness) d’un SIP donné. Ces auteurs définissent l’omniprésence comme la mesure dans laquelle un Système d’Information est constitué d'artefacts technologiques interconnectées, diffusés dans l’environnement qui les entoure, qui travaillent ensemble pour soutenir de façon ubiquitaire les tâches et les objectifs de l'utilisateur à un niveau, organisationnel, de groupe, ou individuel d'une manière sensible au contexte. En se basant sur cette définition, les SIP s’organisent selon trois dimensions principales : (i) la sensibilité au contexte représente la capacité à percevoir l'information contextuelle en observant l'utilisateur, le système et l'environnement dans le but d'adapter ses fonctionnalités d'une façon dynamique et proactive ; (ii) l’ubiquité représente la capacité à fournir aux utilisateurs un accès continu aux ressources d'information indépendamment de leur localisation à l'intérieur des limites du système ; et (iii) la diffusion représente la capacité d’un système à intégrer des éléments invisibles à l'utilisation dans l'environnement physique, et dont l'interaction se fait par le biais d'interfaces physiques. Afin d’assurer ces trois dimensions, les Systèmes d’Information Pervasifs (SIP) doivent faire face à un ensemble de challenges, dont : Systèmes(d’Information(Pervasifs(et(la(notion(de(contexte 44 • l’adaptabilité : les SIP doivent s’adapter aux changements de l’environnement afin de gérer sa dynamique. S’ils souhaitent augmenter leur utilisabilité et leur efficacité, ces systèmes sont amenés à adapter leur fonctionnement par la prise en compte du contexte environnant. Comme l'environnement d'exécution change en raison de la mobilité de l'utilisateur et du dynamisme de l’environnement, le système doit changer son comportement pour prendre en considération cette mobilité et ce dynamisme. Ainsi, les SIP doivent désormais s’adapter à l’environnement et au contexte de l’utilisateur en toute transparence afin de lui offrir les services les plus appropriés ; • l’interopérabilité : un environnement pervasif intègre divers types de dispositifs informatiques, de réseaux et d’entités logicielles et matérielles. Tous ces éléments se caractérisent par leur hétérogénéité. Ainsi, en raison du grand nombre de services hétérogènes offerts par l’environnement pervasif, l'interopérabilité est devenue une nécessité à tous les niveaux pour les SIP. Par exemple, la découverte et la composition de services au sein de ces systèmes doivent pouvoir tirer profit des fonctionnalités et des services de différentes natures, et pour cela ils doivent être interopérables ; • la sécurité : dans le cadre d’un SI, les mécanismes de sécurité représentent un défi important. Un SIP demeure un système fermé, qui nécessite un certain niveau de maîtrise et de contrôle. Toutefois, l’immersion des fonctionnalités d’un SI dans l’environnement pervasif expose celui-ci à un risque de perdre le contrôle et la maitrise du SI dans un tel environnement hétérogène et hautement dynamique. En effet, un comportement totalement dynamique, avec une prise en compte opportuniste des ressources et des services disponibles dans l’environnement et l’autogestion des services offerts, peut être vu comme une menace pour le SI. Le défi ici est de fournir les mécanismes de sécurité adéquats pour contrôler intelligemment l'accès aux ressources informatiques et aux services offerts par le SIP, sans pour autant perdre la confiance des utilisateurs. Toutefois, nous observons à travers la littérature, que cette nouvelle notion de SIP demeure une vision conceptuellement étudiée mais qui n’est pas mise en place par de vrais formalismes de conception, ni d’architecture pour les réaliser. Ceci ouvre de nouvelles opportunités pour traiter les SIP et les mettre en place dans un environnement pervasif et de les concevoir de telle sorte qu’ils soient acceptés par les DSI. 2.5. CONCLUSION Dans le cadre de ce premier chapitre de l’état de l’art, nous avons introduit l’émergence de l’Informatique Pervasive. Celle-ci a pour but de rendre accessible toutes sortes de services, n'importe où et à tout moment. Cette volonté d'affranchir l'utilisateur des contraintes actuelles d'utilisation d'un ordinateur lui rend sa liberté d'actions, notamment sa liberté de mobilité. Au cœur de l’Informatique Pervasive se trouve la notion de sensibilité au contexte. Cette notion représente la prise en compte du contexte d’utilisation lors du développementSystèmes(d’Information(Pervasifs(et(la(notion(de(contexte 45 d’applications qui fournissent, en conséquence, des solutions mieux adaptées à leur usage. Nous avons signalé, que dans ce cadre, le contexte représente un élément clé dans les mécanismes d’adaptation prônés par ces systèmes dits sensibles au contexte. A travers les différentes définitions discutées dans ce chapitre, nous avons souligné que la notion de contexte est une notion très large et vague, qui peut varier selon le domaine, par exemple. Ainsi, face à ces différentes définitions de contexte, se pose la question de la modélisation de contexte afin de pouvoir le représenter et le limiter. Différents modèles de contexte ont été présentés allant des plus simples modèles à paires clés-valeurs, aux plus expressifs modèles basés sur les ontologies. Nous avons ainsi constaté que les ontologies sont de plus en plus utilisées. Ceci est principalement dû aux propriétés formelles et à l’expressivité des ontologies, ainsi qu’aux moteurs d’inférence associés. Les ontologies permettent également d’assurer l’interopérabilité souhaitée au niveau sémantique, et donc la réutilisation de ces modèles avec une certaine cohérence sémantique. Ceci facilite donc la gestion de contexte. Ensuite, nous observons que cette Informatique Pervasive a impacté l’usage des Systèmes d’Information (SI) existants et a fait apparaître une nouvelle génération de SI, nommé les Systèmes d’Information Pervasifs. En effet, la dernière décennie a été remarquablement marquée par le changement dans la manière dont nous travaillons. Les différents travaux de recherches menés dans cette thématique ont montré que la mobilité qu’apportent les nouvelles technologies a étendu les SI bien au-delà des frontières physiques de l’organisation. Par la prise en compte de la notion de contexte et de sensibilité au contexte, les SIP répondent à la problématique d’adaptation à l’environnement physique dans lequel ils s’intègrent et qui se caractérise par sa haute dynamique et son changement fréquent. Toutefois, ces SIP doivent faire face à d’autres problématiques à savoir la gestion de l’hétérogénéité et la compréhension des besoins des utilisateurs afin d’assurer une certaine transparence nécessaire dans le cadre des SIP. Nous abordons ces sujets dans le chapitre suivant de l’état de l’art. Systèmes(d’Information(Pervasifs(et(l’orientation(service 46 Chapitre 3. SYSTEMES D’INFORMATION PERVASIFS ET L’ORIENTATION SERVICE 3.1. INTRODUCTION Depuis des années, la notion de service a été largement étudiée dans la littérature. Cette notion peut être vue, d’une manière générale, comme étant des composants logiciels qui sont désignés de telle sorte qu’ils supportent des demandes métiers évolutives. Cette notion de service n’a cessé d’évoluer avec l’apparition des services Web et du Web sémantique permettant de garantir un meilleur niveau d’interopérabilité, d’intégration, de compréhension et d’automatisation. Cette évolution a encouragé d’autres chercheurs à étudier la notion de services sous un angle plus proche de l’utilisateur. Ceci a fait apparaître les services sensibles au contexte, qui doivent s’adapter aux changements de l’environnement, et les services intentionnels, qui décrivent les intentions qu’ils peuvent satisfaire. Dans le cadre des Systèmes d’Information Pervasifs (SIP), l’orientation service permet de répondre au besoin de gestion de l’hétérogénéité technique de l’environnement dans lequel évoluent ces systèmes et des actions que ces systèmes proposent afin de satisfaire les besoins des utilisateurs. En effet, l’indépendance des services par rapport aux aspects technologiques et à leurs implémentations est un des moyens permettant de masquer l’hétérogénéité technologique des environnements pervasifs. Avec l’évolution des SI vers les SIP, de nouveaux challenges sont apparus ou ont pris une forme différente. En effet, afin de construire un SIP qui prend en considération à la fois le caractère dynamique des environnements pervasifs et le caractère contrôlé et maîtrisé des SI, il est important de répondre à certains défis, tels que l’adaptabilité, la découverte, la composition et la prédiction dynamique des services. Dans le cadre de cette thèse, nous soulevons la problématique de la découverte et de la prédiction de service dans le cadre d’un SIP transparent, proactif et centré utilisateur. Ce chapitre présente un état de l’art sur l’orientation service. Nous commençons par présenter la notion de services et l’émergence des visions techniques, sémantiques et intentionnelles de cette notion. L’orientation service, selon nous, est un concept clé dans la conception des SIP qui doivent faire face à un ensemble de défis. Nous présentons, par la suite, les différents défis auxquels un SIP orienté service doit répondre. Nous nous focalisons sur deux d’entre eux : la découverte de services et la prédiction de services. Nous attribuons une attention particulière aux différentes approches de découverte de services apparues dans la littérature. Nous commençons par analyser quatre types d’approches, à savoir : (i) la découverte de services sémantiques ; (ii) la découverte de services sensibles au contexte ; (iii) la découverte de services intentionnels ; et (iv) la découverte de services sensibles au contexte et intentionnels. Par la suite, nous nous concentrons sur deux approches de prédiction de Systèmes(d’Information(Pervasifs(et(l’orientation(service 47 services, à savoir : (i) la prédiction de contexte ; et (ii) la recommandation de services selon le contexte. Finalement, nous présentons un récapitulatif suite à cette analyse des approches de découverte et de prédiction de services. 3.2. LA NOTION DE SERVICE A travers la littérature, la notion de services correspond à un concept largement répandu. Originairement, la notion de service est apparue avec l’émergence de l’informatique orientée services (SOC) (Service Oriented Computing) afin de gérer le problème d’interopérabilité entre des applications et des architectures hétérogènes (Papazoglou et Georgakopoulos, 2003) (Papazoglou, 2003). Le paradigme SOC utilise les services comme étant les éléments fondamentaux afin de supporter un développement rapide, fiable et à moindre coût d’applications logicielles distribuées dans des environnements hétérogènes avec une facilité de composition (Papazoglou et al., 2008). La notion de service est employée afin de fournir des abstractions de haut niveau pour l’organisation d’applications à grande échelle sur des environnements ouverts. L’usage des services contribue à implémenter et à configurer des applications logicielles d’une manière qui améliore leur productivité et leur qualité (Huhns et Singh, 2005). Plus spécifiquement, ces services diffèrent des artefacts traditionnels par leur nature autonome, auto-descriptive, réutilisable et portable. Ils sont conçus comme un ensemble de modules logiciels autonomes qui peuvent être exposés, publiés, découverts, composés et négociés à la demande d’un client et invoqués par d’autres applications (Papazoglou et al., 2008). Dans le paradigme SOC, la notion de service est matérialisée par un composant logiciel souvent associé à un ensemble de fonctionnalités particulières dont l’interface est clairement définie, voir standard, et dont le fonctionnement interne est inconnu des clients (Papazoglou et al., 2008). En d’autres termes, toujours selon ces auteurs, les services exécutent des fonctions qui peuvent être aussi bien de simples requêtes dans un formulaire, que des processus métiers complexes. En effet, les processus métiers sont supportés par des fonctionnalités qui sont implémentées comme des services. Ces services représentent des composants logiciels qui sont désignés de telle sorte qu’ils supportent les demandes métiers qui sont évolutives. Dans la même lignée, Alonso et al. (Alonso et al., 2004) définissent les services comme des éléments logiciels auto-décrits, indépendants de la plateforme et accessibles par une interface standard. Une définition plus générale est donnée par Issarny et al. (Issarny et al., 2007), qui considèrent un service comme une entité indépendante, dotée d’interfaces bien définies et pouvant être invoquée de manière standard, sans requérir de son client une quelconque connaissance sur la manière dont le service réalise réellement ses tâches. Quelle que soit la définition utilisée, il est important de souligner que les fonctionnalités (ou tâches) attachées aux services peuvent se trouver à des niveaux de granularité très différents. Même si, bien souvent, la notion de service fait référence aux Services Web, celle-Systèmes(d’Information(Pervasifs(et(l’orientation(service 48 ci est, en réalité, bien plus large, allant d’une vision orientée technologie à une vision orientée « business » (les services offerts par une organisation, par un SI). Même dans une optique purement technologique, cette notion dépasse le cadre des Services Web et peut correspondre à des technologies variées telles que les ESB (Roshen, 2009) ou les composants OSGi (souvent vus comme de « micro-services ») (Hall et al., 2011). Un autre aspect clé se dégage de ces multiples définitions : le faible couplage entre le client et le fournisseur de service. En effet, l’absence de dépendance entre les fournisseurs de services et leurs consommateurs permet d’ordonner les services dans de nombreux flux réalisant différents processus métiers (Fremantle et al., 2002) (Papazoglou et al., 2008). Le client n’a pas besoin de connaître la manière dont le service fonctionne ou est implémenté pour faire appel à ses fonctionnalités. C’est ce faible couplage qui rend la notion de service particulièrement attractive pour les environnements pervasifs, puisque ces environnements se caractérisent par la volatilité de leurs éléments (Vanrompay et al., 2011). La notion de service se comporte ainsi comme une « boîte noire » : rien de son contenu interne n’est visible aux clients, seule son interface l’est. La notion de service joue un rôle clé dans l’architecture SOA, introduite dans la section 3.3, et devient l’unité informatique de base pour supporter le développement et la composition de services de plus en plus complexes, qui à leur tour peuvent être utilisés pour créer des applications flexibles et dynamiques. 3.3. L’ARCHITECTURE ORIENTEE SERVICES : SOA Pour soutenir l’intégration des applications basées sur différents processus métiers, la modélisation de services est supportée par l’architecture orientée service (SOA – Service Oriented Architecture) (Papazoglou et al., 2008). L'orientation service s’est introduite à différents niveaux organisationnels au sein des entreprises. Elle s'appuie sur la technologie pour faire face à la demande croissante d’une plus grande intégration, flexibilité et agilité au sein de l'entreprise. Depuis la fin des années 1990, de nombreuses définitions de l’architecture SOA ont été publiées (Allen et Frost, 1998) (Alonso et al., 2004). Keith et al. (Keith et al., 2006) considèrent SOA comme un concept de modélisation métier et une architecture technique présentée sous la forme d’une infrastructure standardisée basée sur XML et sur des Services Web utilisés pour supporter des processus métiers. Ces auteurs proposent une définition très technique de SOA, laquelle est particulièrement attachée à une seule technologie. Cependant, pour apporter plus de clarté, le modèle de référence d’OASIS (Organization for the Advancement of Structured Information Standards) définit l’architecture SOA comme un paradigme pour l'organisation et l'utilisation de capacités de diffusion qui peuvent être sous le contrôle de différents auteurs. Il fournit un moyen uniforme pour offrir, découvrir, interagir avec et utiliser les capacités afin de produire les effets désirés en conformité avec les prés conditions et les attentes mesurables (MacKenzie et al., 2006). Selon ce modèle, illustré par la Figure 7, un fournisseur de services peut publier une interface bien définie sur un répertoire Systèmes(d’Information(Pervasifs(et(l’orientation(service 49 qui permet à d'autres parties prenantes de le récupérer et de coupler faiblement ce service offert à leurs propres services. Selon cette définition, les caractéristiques principales d’une architecture SOA sont le faible couplage, l’indépendance par rapport aux aspects technologiques et l’extensibilité. Le faible couplage permet de garantir la réutilisation et l’interopérabilité des services. L’indépendance aux technologiques est garantie grâce aux contrats d’utilisation qui sont indépendants de la plateforme technique utilisée par les fournisseurs de services. Enfin, l’extensibilité est rendue possible par le fait que de nouveaux services peuvent être découverts et invoqués à l’exécution. Figure 7. L’Architecture Orientée Service (SOA) et les technologies des Services Web (d’après (O’Sullivan et al., 2002)) L’architecture orientée services se base sur une collection de politiques, principes, interfaces et patrons de conception qui permettent l’intégration des différentes fonctionnalités exposées comme des services (Papazoglou et Heuvel, 2007) (Van Der Aalst et al., 2007). Selon (Papazoglou et Heuvel, 2007), l’architecture SOA fournit la capacité d’adresser les exigences de l’informatique distribuée, à savoir : indépendance des protocoles, faible couplage, réutilisation et standardisation. L’architecture SOA est ainsi mise en place afin de garantir, d’une part, la flexibilité dans la maintenance et l’évolution des systèmes, et d’assurer, d’autre part, un niveau élevé d’interopérabilité entres des systèmes hétérogènes et d’adaptation aux changements (Papazoglou et al., 2008). Cette évolution a encouragé beaucoup d’entreprises à adopter l’architecture SOA afin de permettre une réponse rapide aux changements et une réduction sur le coût de remplacement des systèmes hérités qu’ils avaient, ainsi que l’intégration de nouveaux systèmes basés sur cette architecture permettant à toutes les informations d’être accessibles et partagées par tous les systèmes (Keen et al., 2004) (Minoli, 2008). L’architecture SOA, comme elle a été définit par (MacKenzie et al., 2006), est utilisée afin de permettre d’une part l’identification et la publication de services pour les rendre réutilisables par les autres systèmes et d’autre part la découverte et la localisation de services déjà existants. La Figure 7 illustre ainsi les trois principaux acteurs qui interviennent dans cette architecture : le fournisseur, le consommateur (client) et le répertoire de services. Le Consommateur de services Fournisseur de services Répertoire de services Découvrir et localiser UDDI WSDL Publier Invoquer et Intéragir SOAPSystèmes(d’Information(Pervasifs(et(l’orientation(service 50 fournisseur de services se charge de décrire les fonctionnalités offertes par un service ainsi que les informations nécessaires pour permettre à un client de l’utiliser. Ceci représente la description de services qui sera par la suite publiée par le fournisseur dans un répertoire de services (ou annuaire de services). Ce dernier joue le rôle d’intermédiaire entre le fournisseur et le consommateur de services. Ce consommateur peut interagir avec le répertoire de services afin de retrouver le service qui répond à ses besoins. Cette étape correspond à la phase de découverte de services, laquelle se base sur les descriptions publiées afin de ne sélectionner que celles qui pouvant satisfaire le client (consommateur de service). Si le client trouve le service désiré, alors il peut mettre en place un contrat avec le fournisseur de services, afin de consommer le service. Le principe de conception derrière l’architecture SOA est qu'un service est une unité faiblement couplée composée d'une interface et d’une implémentation. L’architecture SOA se caractérise ainsi par la séparation entre la description de service (interface) et sa mise en œuvre (implémentation). L’interface définit l'identité d'un service, ses moyens d’invocation et ses capacités fonctionnelles, tandis que l’implémentation représente la mise en œuvre des opérations internes que le service doit exécuter. Cette séparation a permis aux fournisseurs et aux consommateurs de services d’être faiblement couplés. En outre, les services peuvent être facilement réutilisés. Parce que les interfaces de services sont indépendantes de la plateforme et que la mise en œuvre est transparente pour les consommateurs de services, un client devrait être capable d'utiliser le service à partir de n'importe quel terminal de communication en utilisant n'importe quelle plateforme informatique, système d'exploitation et n'importe quel langage de programmation. Ainsi, l’architecture SOA introduit essentiellement une nouvelle philosophie pour le développement d’applications distribuées, où les services peuvent être découverts, composés, publié, réutilisés, et invoqués au niveau de l'interface, indépendamment de la technologie spécifique utilisée en interne pour implémenter chaque service (Granell et al., 2010). Depuis son apparition, l’orientation service n’a cessé de progresser dans la perspective de satisfaire au mieux les besoins des utilisateurs. Cette évolution peut être analysée selon différentes visions, à savoir la vision technologique, la vision sémantique et la vision intentionnelle. Nous les détaillons dans la section suivante. 3.4. L’ORIENTATION SERVICE SOUS SES DIFFERENTES FORMES L’orientation service, telle que présentée dans les sections précédentes, n’a cessé d’évoluer. Cette notion a été impactée par une vision purement technologique, faisant apparaître les services Web afin de garantir l’interopérabilité et l’intégration des fonctionnalités métiers dans le Web. Cette vision a été étendue, par la suite, avec l’appariation du Web Sémantique. Nous avons assisté à l’émergence des services sémantiques qui se basent sur une description sémantique, plus expressive et plus compréhensible. Cette vision vient répondre aux lacunes en termes de recherche d’information et d’extraction de l’information pertinente des pages Web, par exemple. Nous avons vu apparaître également une vision intentionnelle qui place la notion de service à un niveau d’abstraction plus élevé, dans lequel Systèmes(d’Information(Pervasifs(et(l’orientation(service 51 le service est conçu afin de satisfaire une ou des intention(s) (but) précis de l’utilisateur. Cette vision soulève l’importance d’exploiter la notion d’intention dans la description des services, représentant l’émergence des services dits intentionnels. Ces services sont décris selon l’intention qu’ils arrivent à satisfaire, laquelle représente ce qu’attend l’utilisateur de l’exécution du service. Dans la suite de cette section, nous discuterons ces visions technologiques, sémantiques et intentionnelles de la notion de service. 3.4.1.Services Web : vers une vision technologique Depuis son apparition, la notion de services Web a été présentée comme la technologie la plus prometteuse qui va permettre d’assurer l’interopérabilité et l’intégration des fonctionnalités métiers dans le Web. Les services Web représentent une suite logique des intergiciels, comme DCE (Distributed Computing Environment) (Harold et Lochart, 1994), CORBA (Common Object Request Broker Architecture) (Pope, 1998) et DCOM (Distributed Component Object Model) (Redmond, 1997), vers plus d’interopérabilité (chose que ces intergiciels n’ont pas réussis à garantir). Cette interopérabilité peut être assurée grâce à la plateforme Web et aux différents standards utilisés. Dans la littérature et à travers le consortium W3C, nous observons qu’il existe diverses définitions de la notion de services Web allant des plus génériques, qui présentent un service Web comme une application modulaire accessible à d’autres applications sur le Web (Almeida et Menasce, 2002) (Curbera et al., 2001), au plus spécifiques, qui mettent en évidence les technologies et leurs rôles pour mettre en œuvre un service Web (Booth et al., 2004). Par exemple, le consortium OASIS considère un service Web comme une application métier modulaire, formant un tout qui a des interfaces basées sur des standards, orientées Internet et ouvertes (OASIS, 2001). Cette définition présente les services Web en mettant l’accent sur les standards utilisés sur le Web et sur les interfaces qui permettent d’invoquer les services ouvertement. Par la suite, le consortium W3C (Austin et al., 2002) a proposé une définition plus précise des services Web. Pour la W3C, un service Web représente une application logicielle identifiée par une URI (Uniform Resource Identification), dont les interfaces et les liaisons sont définies, décrites et découvertes comme des objets XML. Un Service Web supporte les interactions directes avec d’autres agents logiciels en utilisant le passage de messages basé sur XML via les protocoles de l’Internet. Austin et al. (Austin et al., 2002) mettent ainsi l’accent sur la façon dont les services Web doivent fonctionner. Dans cette définition, un service Web est définit en fonction de son moyen d’identification (URI), de son interopérabilité à travers les interfaces et les liaisons en XML et des interactions possibles (au travers de protocoles basés sur XML). Nous pouvons observer à ce niveau l’importance du standard XML dans cette dernière définition. Toutefois, ceci peut apporter une certaine confusion dans la mesure où n’importe quelle application sur le Web qui soit fondée sur des technologies basées sur XML peut être considérée comme un Service Web. Systèmes(d’Information(Pervasifs(et(l’orientation(service 52 Une nouvelle définition a ainsi été proposée par le consortium W3C (Booth et al., 2004) mettant plus l’accent sur l’ensemble des technologies utilisées. Ces auteurs définissent un Service Web comme un système logiciel conçu pour supporter l’interaction interopérable de machine à machine sur un réseau. Il possède une interface décrite dans un format exploitable par la machine, i.e. décrite en WSDL (Web Services Description Language). D’autres systèmes interagissent avec le Service Web d’une façon prescrite par sa description en utilisant des messages SOAP (Simple Object Access Protocol), typiquement en utilisant HTTP (HyperText Transfer Protocol) avec une sérialisation XML en même temps que d’autres normes du Web (Booth et al., 2004). Cette définition apporte un niveau plus élevé de granularité en précisant les technologies et leurs rôles pour mettre en œuvre un service Web. Elle spécifie WSDL (Christensen et al., 2001) comme la technologie utilisée pour la description des Services Web et SOAP (Mitra et Lafon, 2007) comme la technologie de communication et de messagerie assurant l’interaction avec le Service Web en question. Toutefois, nous remarquons que cette définition ne précise pas, dans le même contexte, la technologie utilisée pour permettre à un consommateur de services de rechercher un service, et au fournisseur de services de publier son service dans le répertoire de services. Une réponse à cela est déjà présentée par (OASIS, 2001) à travers la technologie UDDI comme une API et un modèle de données standard permettant l’enregistrement des informations sur les entreprises et fournisseurs de services. Nous pouvons dégager ici, une vision des services totalement concentrée sur les technologies utilisées, à savoir : (i) WSDL pour la description des services ; (ii) UDDI pour la publication des services dans un répertoire de services et pour la localisation des services recherchés ; et (iii) SOAP pour communiquer et transporter les données. Nous résumons ces technologies dans les prochaines sections. La Figure 7 illustre l’usage de ces technologies de services Web par les différents acteurs de l’architecture SOA : • Le fournisseur de services décrit les services en WSDL. Par la suite, il enregistre et publie ces services à l’aide d’un répertoire UDDI en fournissant certains détails sur le service, tels que les informations de contact sur le fournisseur, le pointeur vers le service et sa description WSDL ; • Une fois le répertoire est rempli d’informations sur les services, le consommateur de services (client) peut accéder au répertoire ; • Les requêtes UDDI sont envoyées par le consommateur de services. Si un service pertinent est trouvé, alors le répertoire fournit au consommateur les informations nécessaires pour accéder au service ; • Le consommateur, à ce stade, a encore besoin de comprendre comment accéder et invoquer réellement le service. Ces informations sont généralement disponibles dans la description WSDL du service. Il peut alors négocier avec le fournisseur le contrat d’accès au service. Ces interactions sont assurées à travers le protocole SOAP. Systèmes(d’Information(Pervasifs(et(l’orientation(service 53 Le langage WSDL (version 1.0 (Christensen et al., 2001) et version 2.0 (Chinnici et al., 2007)) permet ainsi de décrire les interfaces des services Web, en représentant de manière abstraite les opérations que les services peuvent réaliser, et cela indépendamment de l’implémentation qui en a été faite. L’Universal Description, Discovery and Integration (UDDI) (Bellwood, 2002) représente une plateforme destinée à stocker les descriptions des services Web disponibles. Il fournit, d’une part, au fournisseur de services des mécanismes pour enregistrer leurs services Web, et d’autre part, au consommateur de services les mécanismes pour les retrouver. Le mécanisme de recherche se base sur les mots-clés fournis par les fournisseurs proposant les services. La plateforme UDDI permet d’héberger un ensemble de descriptions de services Web sur un seul serveur. Toutefois, cette plateforme ne permet pas une recherche efficace de service. Ceci est dû à la simplicité de cette architecture où la sémantique des données est inexistante et où la description des services se limite à de simples mots-clés sur lesquels aucun traitement plus approfondi tel que l’approximation n’est possible. Le Simple Object Access Protocol (SOAP) (Mitra et Lafon, 2007) est un format de message basé sur XML pour l’échange d’informations dans un environnement distribué et décentralisé (Newcomer, 2002). SOAP est désigné pour gérer le problème de transport et de messagerie dans de larges environnements distribués. Il définit comment organiser les informations en utilisant XML, de sorte qu'il peut être échangé entre les machines. Cette vision purement technologique ne propose qu’une conception limitée des services et ne permette pas un réel partage des informations et du savoir. Ces technologies permettent de présenter les informations et la connaissance, mais en aucun cas de les rendre facilement utilisables et exploitables. Ainsi émerge un réel besoin d’automatisation de certaines fonctionnalités nécessaires aux Services Web, dont la découverte, la composition l’invocation et la surveillance de l’exécution des services. Ces lacunes ont conduits à la naissance des services Web sémantiques. Cette nouvelle vision apporte avec elle de nouvelles technologies et outils qui peuvent certainement compléter les technologies des services Web. L’objectif ici est, entre autres, de rendre les informations et les services plus compréhensibles afin de faciliter leur réutilisation et exploitation et de répondre au problème de l'automatisation. Nous présentons les services Web sémantique dans la section suivante. 3.4.2.Services Sémantiques : vers une vision sémantique Dès son appariation, le Web n’a cessé de croître remarquablement. Dans la perspective d’extraire du Web les informations les plus pertinentes et de les réutiliser, il a été proposé le Web sémantique (Berners-Lee et al., 2001). Celui-ci se base sur une description formelle de la sémantique des informations et des services. Grâce à cette nouvelle vision du Web, les machines arrivaient à comprendre et potentiellement à satisfaire la demande de l’utilisateur en Systèmes(d’Information(Pervasifs(et(l’orientation(service 54 se basant sur la sémantique. De manière générale, la notion de services sémantiques vise à créer un Web sémantique qui intègre des services décrit de manière non ambiguë et exploitable par des machines. Selon le consortium W3C (W3C, 2001), le Web sémantique se rapporte à deux choses différentes. D'abord, il s'agit de formats communs pour l'intégration des données provenant de sources hétérogènes, alors que le Web initial s'était focalisé principalement sur l'échange de documents. Ensuite, il s'agit d’un ensemble de langages pour enregistrer comment les données se rapportent à des objets du monde réel. Selon McIlraith et al. (McIlraith et al., 2001), l’association d’une information de nature sémantique au descripteur d’un Service Web a pour objectif la localisation, la composition et l’utilisation automatique des services distribués. La description sémantique fait référence à l’usage des ontologies qui représente une arborescence de concepts liés entre eux avec des relations bien spécifiques. Ainsi, les recherches dans le domaine du Web Sémantique se sont plus accentuées sur la définition de langages et d’outils pour la représentation des informations et des services de telle sorte qu’il soient facilement partagés, réutilisés, combinés et traités sur le Web. Ces recherches ont conduit à de multiples standards tels que RDF(S) (Brickley et Guha, 2004) et OWL (Patel-Schneider et al., 2004), ainsi qu’à des outils d’édition comme Protégé (Noy et al., 2001) et des raisonneurs comme Racer (Haarslev et Möller, 2003) et Jena (Carroll et al., 2004). De plus, plusieurs initiatives sont apparues dans l’objectif d’annoter et de décrire sémantiquement des services Web. Ces initiatives ont conduit à de multiples approches facilitant les tâches d'automatisation, dont les principales ont été standardisées par le W3C, telles que OWL-S (Martin et al., 2004), WSMO (Lausen et al., 2005) ou encore WSDL-S (Akkiraju et al., 2005) et SAWSDL. (Farrell et Lausen, 2007). Dans cette section, nous nous concentrons sur les deux standards OWL-S et SAWSDL, utilisés pour enrichir sémantiquement la description des services. Le standard WSMO sera introduit dans la section suivante (cf. section 3.4.2.1). 3.4.2.1. OWL-S (OWL-based Web service ontology) Le langage OWL-S (Semantic Markup for Web Services) (Martin et al., 2007), initialement connu sous le nom de DAML-S, permet de spécifier et décrire les services Web de façon compréhensible, non ambiguë et facilement interprétable. Ce langage, basé sur le langage d’ontologie OWL (Smith et al., 2004), est représenté aussi comme une ontologie basée sur OWL, définie afin de décrire les services Web sémantiques. Son objectif est de permettre aux utilisateurs et aux agents logiciels de découvrir, d’invoquer, de composer et de contrôler automatiquement les ressources Web offrant des services (Martin et al., 2004). OWL-S définit les capacités des services Web en trois parties, comme l’illustre la Figure 8. Ces trois parties représentant trois ontologies interdépendantes nommées « Service Profile », « Process Model » et « Service Grounding » (Martin et al., 2007). Chacune décrit un aspect important d’un service Web sémantique. Systèmes(d’Information(Pervasifs(et(l’orientation(service 55 Figure 8. La structure du haut niveau de l'ontologie OWL-S (d’après (Martin et al., 2004)) Le « service profile » exprime ce que le service réalise (Martin et al., 2004). Il donne une description de haut niveau d'un service, comme l’illustre la Figure 9, à des fins de description, de publication et de découverte de services. Le « service profile » est utilisé à la fois par les fournisseurs de services pour publier leurs services et par les consommateurs pour spécifier leurs besoins afin de découvrir le service le plus pertinent. Figure 9. Classe et propriétés de l'ontologie du profil de service de OWL-S (d’après (Martin et al., 2004)) Le « process model » répond à la question : comment est-il utilisé ? (Martin et al., 2004). Il définit les comportements d’un service en tant que processus défini par les entrées/sorties et décrit comment cela fonctionne. Le « process model » est utilisé, entre autres, à des fins de composition de services. En OWL-S, il existe trois types de processus illustrés à la Figure 10 : les processus atomiques (AtomicProcess), les processus simples (SimpleProcess) et les processus composites (CompositeProcess). Un processus atomique représente le niveau le plus fin pour un processus et correspond à l’action qu'un service peut effectuer en une seule interaction. C’est un processus qui peut être directement invocable sans sous-processus. Les processus composites représentent des processus qui sont décomposables en d’autres Systèmes(d’Information(Pervasifs(et(l’orientation(service 56 processus, qui peuvent être eux mêmes des composites. Un processus composite se base sur un ensemble de structures de contrôles telles que : « sequence », « split », « choice », afin de spécifier sa décomposition. Figure 10. La structure de l'ontologie de haut niveau du modèle de processus de OWL-S (d’après (Martin et al., 2004)) Enfin, le « service grounding » expose comment on peut accéder au service (Martin et al., 2004). Il indique comment accéder concrètement au service et fournit les détails concernant les formats de messages, les protocoles, entre autres. Cette information est particulièrement utile pour l’invocation automatique de services et elle est souvent exprimée en WSDL. La description proposée par OWL-S permet une découverte basée sur la sémantique, grâce à des outils et des algorithmes de mise en correspondance, tels que OWLS-Matcher (Jaege, 2001). De plus, OWL-S offre une grande expressivité ainsi que la possibilité d’inférer de nouvelles connaissances grâce notamment aux nombreux moteurs de raisonnements proposés pour OWL, tels que Jena (Carroll et al., 2004b), Pellet (Parsia et Sirin, 2004) et Racer (Haarslev et Möller, 2003). Enfin, même si OWL-S est conçue pour les services Web, elle est riche et suffisamment générale pour décrire tout type de services (Suraci et al., 2007). 3.4.2.2. SAWSDL (Semantic Annotations for WSDL) L’annotation sémantique de WSDL, nommé SAWSDL (Semantic Annotations for WSDL) (Farrell et Lausen, 2007) est une recommandation W3C qui a fait suite à l’approche WSDL-S Systèmes(d’Information(Pervasifs(et(l’orientation(service 57 (Akkiraju et al., 2005). SAWSDL est une approche utilisant les ontologies pour enrichir la description standard d’un service en se basant sur des mécanismes d'annotation sémantique. Figure 11. Présentation de SAWSDL avec ces deux formes d’annotations (d’après (Farrell et Lausen, 2007)) A l’encontre de OWL-S, SAWSDL ne définit pas de nouveaux langages pour modéliser sémantiquement les services, mais il fournit un mécanisme de référencement vers des modèles sémantiques souvent externes comme des ontologies. L’extension SAWSDL, comme l’illustre la Figure 11, se présente sous deux formes d’annotation. La première est le modèle de référence. Celui-ci est utilisé pour associer aux interfaces/ports, opérations, entrées, sorties, des concepts sémantiques d'une ou plusieurs ontologies. Il peut être appliqué à n’importe quel élément de WSDL, dans le but d’y associer un ou plusieurs concepts sémantiques. La valeur est un ensemble d’URI (Uniform Resource Identifier), identifiant chacun un fragment de cette description sémantique. En tant que tel, le modèle de référence sert comme un crochet où la sémantique peut être fixée (Fensel et al., 2011). Ainsi, il peut être utilisé pour décrire la sémantique des données ou afin de spécifier celle d’une opération d’un service Web. La deuxième forme d’annotation est le mappage de schémas lequel spécifie les transformations de données entre les structures de données XML des messages et le modèle sémantique associé. Cette transformation d’une représentation de données à une autre permet d’assurer l'interopérabilité nécessaire entre formats de données hétérogènes lors de l'invocation (e.g. contenu d'un message SOAP). L’inconvénient de l’approche SAWSDL est qu’elle se base sur la simple annotation qui mélange la description technique avec une description de plus haut niveau. Ainsi, plus la taille des informations à annoter devient importante, plus il devient difficile de les analyser. Systèmes(d’Information(Pervasifs(et(l’orientation(service 58 3.4.3.Services Intentionnels : vers une vision intentionnelle Les services Web, ainsi que les services Web sémantiques, sont là pour répondre aux requêtes et aux besoins de l’utilisateur. Différentes approches (Lausen et al., 2005) (Kaabi, 2007) ont soulevé ainsi l’importance de l’exploitation de la notion d’intention dans la description des services. Une intention représente ce qu’attend l’utilisateur lors de l’exécution d’un service, représentant la vision de l’utilisateur sur les fonctionnalités qu’il désire dans un service (Fensel et al., 2011). Ceci représente une nouvelle vision des services : la vision intentionnelle. Cette vision place la notion de service à un niveau d’abstraction plus élevé où le service est conçu afin de conduire à la satisfaction d’une intention de l’utilisateur. Selon (Rolland et al., 2010), cette vision permet de combler le fossé séparant une vision purement technique d’une vision purement métier des services, centrée sur l’utilisateur et ses besoins. Nous présentons, dans la suite de cette section, la définition de la notion d’intention, ainsi que deux approches orientées intentions, à savoir WSMO et l’architecture iSOA (Intentional Service Oriented Architecture). 3.4.3.1. La notion d’intention Les approches intentionnelles ont été proposées dans le domaine de l’ingénierie des exigences dans la perspective de capturer l’intentionnalité derrière les exigences logicielles (Yu et Mylopoulos, 1998). Dans ce cadre, les intentions représentent une abstraction utile pour décrire les besoins et les attentes des parties prenantes d’un système et elles offrent une façon très intuitive pour obtenir et analyser ces besoins. D’une manière générale, une intention exprime un but, un objectif que l’on souhaite atteindre et que le système doit réaliser. Plihon et al. (Plihon et al., 1998) définit une intention comme quelque chose que certains intervenants espèrent réaliser à l'avenir. Selon Antón et al. (Antón et al., 1994), une intention se réfère aux objectifs de haut niveau du métier, de l’organisation ou du système. Dans le même contexte, Van Lamsweerde (van Lamsweerde, 2000) rajoute que l’intention se présente comme un objectif que le système doit atteindre à travers une coopération d’agents dans le futur logiciel et dans l’environnement. Cet auteur souligne une distinction entre la notion d’intention et celle d’exigence. Il affirme qu’une intention est une assertion prescriptive que doit satisfaire le système considéré, alors que l’exigence est une assertion prescriptive que doit satisfaire la partie logicielle du système uniquement (van Lamsweerde, 2001). Le terme intention a plusieurs significations différentes. Selon (Jackson, 1995), l'intention est une déclaration « optative », exprimant un état qui devrait être atteint ou maintenu. En d’autres termes, l'intention représente l'objectif ou le but que nous voulons atteindre sans dire comment l'exécuter (Jackson, 1995). Cette intention peut être traduite comme le but qu’un utilisateur souhaite atteindre sans avoir à spécifier comment y parvenir ou encore comme le but à atteindre pour mener à bien un processus, celui-ci étant composé d'une séquence de sous-intentions et de stratégies pour l’atteindre (Kaabi et Souveyet, 2007). Santos et al. Systèmes(d’Information(Pervasifs(et(l’orientation(service 59 (Santos et al., 2009) définissent une intention comme un objectif à atteindre par l'exécution d'un processus présenté comme une séquence d'intentions et des stratégies à l'intention cible. Même si elles diffèrent, toutes ces définitions nous permettent de considérer l'intention comme une exigence de l'utilisateur représentant l'intention qu’il souhaite être satisfaite par un service sans dire comment l'exécuter (Najar et al., 2009). Cette intention représente donc la demande de l'utilisateur quand il est à la recherche d'un service répondant à ses besoins. Figure 12. Modèle d'intention (d’après (Prat, 1997)) Avec l’émergence de cette notion d’intention dans le domaine de l’ingénierie des exigences, Prat (Prat, 1997) a proposé une modélisation de cette notion. Ce modèle d’intention est dérivé de l'approche linguistique, laquelle est inspirée par la grammaire des cas de Fillmore (Fillmore, 1968) et des extensions de Dik (Dik, 1989). Selon ce modèle, illustré par la Figure 12, une intention est décrite sous la forme d’un verbe associé à une cible et complété par un ensemble de paramètres optionnels. Une déclaration d'intention est alors représentée par un verbe, cibles et les différents paramètres qui jouent des rôles spécifiques par rapport au verbe. Dans cette modélisation, le verbe expose l'action permettant la réalisation de l'intention, tandis que la cible représente soit l'objet existant avant la réalisation de l'intention, soit le résultat découlant de la satisfaction de l'intention. Les paramètres (façon, direction, quantité, qualité et bénéficiaire) sont utiles pour clarifier l'intention et pour exprimer les informations supplémentaires. Le paramètre direction, par exemple, caractérise la source et la destination des entités. La destination identifie l'emplacement des entités produites par la satisfaction de l'intention, alors que la source identifie l'emplacement initial des entités. Le paramètre façon, quant à lui, fait référence à l'instrument de la satisfaction de l'intention. Il représente le moyen et la manière. Le moyen indique l'entité qui sert d'instrument pour atteindre l'intention, tandis que la manière identifie une approche dans laquelle l'intention peut être satisfaite. Enfin, le paramètre de qualité définit une propriété qui doit être atteinte ou maintenue. Par exemple l’intention, I1 = {#préparer, #proposition, ∅} est composée du verbe « préparer » et de la cible « proposition » qui représente le résultat découlant de la satisfaction de l’intention. Systèmes(d’Information(Pervasifs(et(l’orientation(service 60 La notion d’intention a été utilisée dans différents modèles intentionnels, tels que KAOS (Dardenne et al., 1993), i* (Yu, 1996), Map (Rolland et al., 1998) et Tropos (Bresciani et al., 2004). Ces modèles offrent une représentation intentionnelle utilisée au début de la phase d'analyse des exigences dans le but d'expliquer le pourquoi d'un système logiciel. Elles fournissent des constructions utiles pour analyser les objectifs et les moyens de les satisfaire. Par exemple, le framework i* (Yu, 1996) propose une approche orientée agent de l'ingénierie des exigences qui est centrée sur les caractéristiques intentionnelles des agents. Dans ce framework, les agents s’attribuent les propriétés intentionnelles et raisonnent sur les relations stratégiques qui les lient. La modélisation orientée intention i* est ainsi utilisée afin de comprendre le domaine du problème. Tropos (Bresciani et al., 2004), quant à lui, est destiné à soutenir les activités d'analyse et de conception dans le processus de développement logiciel, de l'analyse du domaine d'application jusqu'à la mise en œuvre du système. Dans une perspective intentionnelle, Penserini et al. (Penserini et al., 2007) propose une approche de développement se basant sur la méthodologie de développement Tropos (Bresciani et al., 2004). Cette approche cherche à analyser les utilisateurs et à identifier leurs intentions dans la perspective de guider la conception du futur système. Cette conception est composée d’agents logiciels qui ont leurs propres capacités et qui sont destinés à supporter la réalisation des intentions du client. Le formalisme de la Carte (Map) (Rolland et al., 1998) décrit le niveau métier selon une perspective intentionnelle en fournissant les directives nécessaires pour la représentation d’un processus métier. Plus spécifiquement, la carte représente un graphe orienté et étiqueté, dont les nœuds représentent les intentions et les liens entre les nœuds forment les stratégies. Une stratégie représente une manière de réaliser une intention. Dans ce cadre, l'intention est définie comme une condition qui peut être atteinte selon différentes stratégies. Selon (Rolland et al., 2010), la Carte permet de capturer la variabilité en mettant l'accent sur la stratégie visant à atteindre une intention et les alternatives possibles pour accomplir la même intention. Cette représentation explicite de la variabilité offerte par les cartes est absente dans d'autres formalismes d'ingénierie des exigences tel que Tropos. La notion d’intention a été appliquée, sur différents travaux, à l’orientation de service. Dans la suite de cette section, nous mettons l’accent sur deux intéressantes approches WSMO et ISOA qui reposent sur la notion d’intention qu’un service est capable de satisfaire. 3.4.3.2. WSMO (Web Service Modeling Ontology) L’ontologie WSMO (Web Service Modeling Ontology) (Lausen et al., 2005) est utilisée afin de migrer la gestion des processus métier (BPM) du niveau IT (technique) au niveau utilisateur (Business) (Super Project, 2006). La notion d’intention est utilisée ici afin de préciser les processus et les tâches pour lesquels les services Web les plus appropriés puissent être découverts dynamiquement. Systèmes(d’Information(Pervasifs(et(l’orientation(service 61 L’ontologie WSMO se base sur le framework WSMF (Web Service Modeling Framework) (Fensel et al., 2002), lequel est présenté comme un cadre conceptuel à part entière pour décrire les différents aspects liés aux Services Web. Ce framework spécifie les principaux éléments pour décrire les services Web sémantiques. De tels éléments incluent : • Les ontologies qui définissent la terminologie, utilisée lors de la description, en termes de concepts, relations, fonctions, instances et axiomes ; • La description d’un service Web qui décrit formellement les fonctionnalités offertes par le service, en termes de capacité et de méthode d’interaction et en termes d’interface ; • Les intentions qui spécifient ce que l’utilisateur attend du service ; • Les médiateurs qui décrivent les différents éléments permettant de résoudre le problème d’interopérabilité entre les différents composants hétérogènes. WSMO (Web Service Modeling Ontology) (Lausen et al., 2005) représente ainsi une ontologie de modélisation des services Web sémantiques proposant un modèle conceptuel pour ces services. Les concepts de cette ontologie sont décrit formellement par le langage WSML (Web Service Modeling Langage) (de Bruijn et al., 2006). Les descriptions WSMO, formalisées en WSML, sont exécutées par l’environnement d’exécution WSMX (Web Service Modeling eXecution environement) (Bussler et al., 2005), lequel permet également la découverte, la médiation, l’invocation et l’interopérabilité des services sémantiques. WSMO est bien connu par son approche basée sur les intentions. Cette approche suppose qu’un utilisateur est à la recherche d'un service afin de satisfaire une intention spécifique. Selon Roman et al. (Roman et al., 2005), une intention décrit les aspects liés aux désirs de l'utilisateur par rapport à la fonctionnalité demandée. Ensuite, Keller et al. (Keller et al., 2004) présentent un mécanisme de découverte de services WSMO reposant sur un processus de mise en correspondance entre l’intention de l'utilisateur et les capacités de ces services. Dans WSMO, l’intention de l'utilisateur et les capacités de services ne sont pas formulées selon un modèle spécifique. Cette information est représentée uniquement comme un ensemble d'objets. Par conséquent, WSMO ne permet pas d'identifier le rôle réel que joue chaque objet dans la spécification de l'intention. En effet, les intentions dans WSMO n’ont pas une structure bien définie, tel que le modèle de Prat (Prat, 1997) présenté précédemment. Ceci empêche l’exploration de la sémantique propre à chaque objet formant l’intention. Enfin, comparé à OWL-S, WSMO ne dispose que de quelques outils d’édition, tel que WSML Editor (Kerrigan, 2005) et pas d’autant de moteurs de raisonnement puissants. Ainsi, le développement d’outils pour WSMO s’avèrent une tâche plus difficile à développer que OWL-S, puisque OWL-S s’appuient sur le langage RDF et OWL qui sont plus utilisés que WSML (M’bareck et Tata, 2008). Systèmes(d’Information(Pervasifs(et(l’orientation(service 62 3.4.3.3. L’architecture iSOA Rolland et al. (Rolland et al., 2008) soulèvent le problème de la correspondance entre les besoins exprimés par les utilisateurs, à un niveau élevé, et les services logiciels, exprimés à un bas niveau. Selon ces auteurs, afin d’atteindre le vrai potentiel de SOA au niveau de l'entreprise, il est nécessaire de combler le fossé entre les services métiers de haut niveau, compréhensibles par les acteurs métiers, et les services logiciels de bas niveau, compréhensible par le personnel technique. Ces services métiers doivent être exprimés d'une manière intentionnelle, en termes d'objectifs et de stratégies pour pouvoir les atteindre. Ceci représente une approche intentionnelle de description de services proposée par (Kaabi, 2007) (Rolland et al., 2010), appelée l’architecture orientée service intentionnel (iSOA - intentionnal Service Oriented Architecture). Figure 13. Le service intentionnel : la correspondance entre l'agent métier et le service logiciel (d’après (Kaabi et Souveyet, 2007)) L’architecture iSOA introduit la migration de l’architecture SOA centrée sur les fonctionnalités vers une architecture équivalente centrée sur les intentions. En réalité, iSOA représente une surcouche intentionnelle de l’architecture SOA, laquelle représente une approche « top-down ». Cette approche se base sur deux niveaux d’abstraction, à savoir le niveau opérationnel, décrivant les services logiciels, et le niveau intentionnel, décrivant les services intentionnels. La Figure 13 illustre cette correspondance entre l’agent métier (le haut niveau) et le service logiciel (le bas niveau). En effet, l’architecture iSOA permet d’abstraire les détails du service technique et de ses fonctionnalités, grâce au concept de service intentionnel. Ce service intentionnel correspond aux exigences fonctionnelles des agents métiers : il se concentre sur l’essence du service, à savoir l’intention qu’il permet d’atteindre. Ce service intentionnel exprimé à un haut niveau d'abstraction, se réfère à l'intention qu'il permet de satisfaire plutôt qu’aux fonctionnalités qu'il offre. Ces services, appelés services intentionnels, sont exprimés en termes d'intentions et de stratégies pour les atteindre. De plus, iSOA supporte l’opérationnalisation du service intentionnel vers les services logiciels. Agents Métiers Objectifs et intentions Service Intentionnel Description intentionnelle Service technique Description Fonctionnelle Abstraction Mise en Correspondance Niveau Intentionnel Niveau OpérationnelSystèmes(d’Information(Pervasifs(et(l’orientation(service 63 Selon Kaabi et Souveyet (Kaabi et Souveyet, 2007), l’architecture iSOA permet une prise en compte directe des objectifs métiers de l’utilisateur. En faisant la distinction avec SOA, dans iSOA les agents métiers viennent remplacer les agents logiciels au niveau des interactions, et la description intentionnelle des services vient remplacer la description technique. L’agent métier qui cherche un ou plusieurs services coïncidant avec ses besoins effectue ainsi une recherche basée sur les intentions métier. En iSOA, le fournisseur métier décrit le service de manière intentionnelle et le publie dans un répertoire de services intentionnels. La découverte de service est alors guidée par l'intention, en faisant correspondre l'intention de l'utilisateur avec les intentions que les services disponibles peuvent satisfaire. Afin d'assurer la puissante mise en correspondance de l'intention, celle-ci est formulée selon le modèle de Prat (Prat, 1997) présente dans la section 3.4.3.1. Dans le cadre de l’architecture iSOA, Kaabi et Souveyet (Kaabi et Souveyet, 2007) et Rolland et al. (Rolland et al., 2010) ont proposé un modèle de service intentionnel (ISM – Intentional Service Model) qui permet de décrire un service intentionnel selon trois différents aspects : l’interface, le comportement et la composition. L’interface expose les principales caractéristiques du service intentionnel aux clients potentiels, permettant sa réutilisation dans un processus de composition de services. Le comportement correspond aux pré/postconditions, alors que la composition permet de distinguer les services selon leur granularité (agrégat ou atomique). Selon Rolland et al. (Rolland et al., 2010), le service atomique est celui qui ne peut être composé d’autres services intentionnels. Il est lié aux intentions opérationnelles qui peuvent être satisfaites par les services fonctionnels de l’architecture SOA. Ainsi, l’opérationnalisation de service intentionnel atomique peut être assurée par l’exécution d’un service logiciel ou d’une composition de services logiciels. En revanche, les services agrégats ont des intentions de haut niveau qui doivent être décomposées jusqu'à ce que des services intentionnels atomiques se trouvent. Cette agrégation est déterminée à partir des liens d’affinement et/ou de l’intention du service. La composition intentionnelle admet deux types de services agrégats : un service composite et un service variable. D’un côté, le service composite reflète la relation de précédence ou de succession entre les intentions qu’il satisfait (reliées par un lien Et). Dans ses travaux, Kaabi (Kaabi, 2007) propose trois types de services composites. Le premier représente le service séquentiel, défini lorsqu’un ordre dans l’appel des services composants est nécessaire. Le deuxième illustre le service parallèle qui peut être réalisé selon n’importe quel ordre. Le troisième représente le service itératif défini lorsqu’un service intentionnel peut être exécuté récursivement. De l’autre côté, le service à variation correspond à différentes manières de réaliser une intention (reliées par un lien OU). Kaabi (Kaabi, 2007) propose trois types de services à variation. Le premier représente le service à choix alternatif qui exprime un choix parmi plusieurs services composants, lesquels sont mutuellement exclusifs. Le deuxième porte sur le service à choix multiple qui exprime un choix non-exclusif entre les services composants. Le dernier illustre le service multi-chemin qui introduit une variation portant sur des enchaînements alternatifs d’intentions. Systèmes(d’Information(Pervasifs(et(l’orientation(service 64 Néanmoins, nous plaidons que cette vision ne tient pas compte de l'évolution de la technologie des services, qui peut se tenir maintenant aux petits logiciels encapsulant des fonctionnalités réutilisables, ainsi que pour de grands systèmes hérités (Legacy System), dont le processus complexe est caché par des technologies telles que les services Web ou ESB (Roshen, 2009). En considérant que seuls les services atomiques peuvent être opérationnalisés à travers le service logiciel, l'architecture iSOA limite la réutilisation de ces systèmes hérités dans une approche intentionnelle. En fait, les systèmes hérités englobent souvent des processus complexes, qui subsument les satisfactions de multiples intentions ou une variabilité intensive sur leur satisfaction. Ces systèmes peuvent être comparés aux intentions agrégats, mais ils ne peuvent pas être assimilées à des intentions atomiques simples. Les trois visions que nous venons de discuter (technique, sémantique et intentionnelle) représentent le fondement de divers travaux portés sur les systèmes orientés services. Les nouveaux Systèmes d’Information Pervasifs peuvent ainsi s’inspirer de ces trois visions pour adopter une orientation service. Cependant, ceux-ci seront confrontés à différents challenges, que nous discuterons dans les sections suivantes. Nous nous focalisons ensuite sur certaines approches de découverte et de prédiction de services dans les différentes visions. 3.5. LES CHALLENGES POUR LES SYSTEMES D’INFORMATION PERVASIFS ORIENTES SERVICES Les Systèmes d’Information Pervasifs (cf. section 2.4) se présentent comme une nouvelle génération des SI dans un environnement pervasif hautement dynamique et hétérogène, dans laquelle l'interopérabilité est devenue une nécessité à tous les niveaux. Ainsi, la vision technologique de l’orientation service (cf. section 3.4.1) permettra de répondre à cette problématique d’interopérabilité. Ces SIP se doivent, de plus, d’être capable d’intégrer, de réutiliser et d’exploiter facilement et d’une manière compréhensible l’ensemble des services qui sont disponibles. Ils doivent fournir des mécanismes de découverte et de composition de services ne nécessitant pas forcément l’intervention d’un utilisateur. Dans ce cadre, la vision sémantique (cf. section 3.4.2) pourrait être vue comme une solution pour aider les SIP à répondre à ce besoin. Finalement, les SIP doivent être conçus dans la seule perspective de répondre aux besoins des utilisateurs de la manière la plus appropriée. Ainsi, une prise en compte des besoins des utilisateurs s’avère un principe fondamental de cette nouvelle génération de SI. La vision intentionnelle (cf. section 3.4.3) peut contribuer dans ce cadre en mettant en avant les besoins des utilisateurs qui sont formulés sous forme d’intention. Dans la suite de cette section, nous présentons un ensemble de challenges auxquels les SIP doivent répondre. Nous nous focalisons sur les approches de découverte et de prédiction de services que nous estimons primordiales pour un SIP transparent et proactif. 3.5.1.Les challenges L'Informatique Pervasive a apporté aux SI de nouveaux défis liés au dynamisme, à l’hétérogénéité et à l’accès ubiquitaire à l’environnement (cf. section 2.2.1). Elle a apporté Systèmes(d’Information(Pervasifs(et(l’orientation(service 65 également de nouveaux challenges dans l’usage des services au sein des SIP. Ces challenges concernent les aspects suivants : • La découverte dynamique des services : les SIP doivent satisfaire au mieux les besoins des utilisateurs mobiles. Ceci nécessite la prise en compte de l’utilisateur et de ses besoins ainsi que de son contexte courant, afin de lui proposer le service le plus approprié en toute transparence. La découverte de services est ainsi un des défis majeurs des SIP. Ce mécanisme doit assurer un certain niveau de transparence et d’efficacité tout en s’adaptant au contexte (gestion de l’hétérogénéité et du dynamisme) et en prenant en considération les besoins de l’utilisateur (afin de garantir une meilleure compréhension de l'utilisation réelle des services). Le challenge ici est de retrouver le mécanisme le plus adéquat pour répondre à tous ces besoins ; • La composition dynamique des services : face à l'hétérogénéité des services, les SIP se retrouvent devant le challenge de développer des modèles, des techniques et des algorithmes afin de composer dynamiquement les services hétérogènes et de les exécuter d’une manière transparente tout en prenant en considération l’adaptation aux changements fréquent de l’environnement ; • La prédiction (recommandation) dynamique des services : un des challenges des SIP est d’introduire des techniques de recommandation dans la perspective d’augmenter le caractère dynamique et proactif du système en proposant à l’utilisateur le service le plus approprié qui pourra l’intéresser. Un utilisateur, même dans le cadre d’un SIP, peut suivre un modèle de comportement qui évoluent avec le temps. Ces schémas de comportement représentent certaines habitudes de l’utilisateur lorsqu’il interagit avec son système. La prise en compte de ces habitudes nous permet d’anticiper ses besoins, et ainsi rendre les SIP plus proactifs. Le défi est de faire ceci de la manière la plus transparente possible. Il faut donc retrouver les moyens pour mieux comprendre les besoins des utilisateurs et observer le contexte dans lequel ils évoluent et sollicitent certains services. L’objectif ici est de trouver le mécanisme qui va permettre d’offrir une meilleure pro-activité au système, notamment par la compréhension de la relation entre la notion de contexte et des besoins des utilisateurs. Les Systèmes d’Information Pervasifs doivent faire face à l’ensemble des challenges que nous avons évoqués dans cette section. Dans la suite de ce chapitre et dans le cadre de cette thèse, nous allons nous concentrer essentiellement sur les deux challenges : la découverte et la prédiction de services. Nous nous intéressons ainsi aux différentes approches mises en place par les systèmes orientés services soient-elles techniques, sémantiques ou intentionnelles. 3.5.2.La découverte de services Durant les dernières années, de grands efforts de recherche ont été menés sur le sujet de la découverte des services. Effectivement, la pertinence d’un mécanisme de découverte de Systèmes(d’Information(Pervasifs(et(l’orientation(service 66 services dépend de comment son algorithme de mise en correspondance (matching) permet d’aller au-delà de ce que fournissent déjà les mécanismes standards comme UPnP, Jini, etc. Ce sujet a ainsi été largement traité selon une vision sémantique. Différents travaux, tels que (Paolucci et al., 2002) (Klusch et al., 2006) (Martin et al., 2007), ont concentré leurs efforts sur la mise en correspondance sémantique entre les capacités d’un service et la requête d’un utilisateur. Ces travaux ont servi de base pour d’autres travaux, tels que les travaux dans le domaine de la découverte de services sensibles au contexte (Suraci et al., 2007) (Ben Mokhtar et al., 2008) (Toninelli et al., 2008). Ceux-ci prennent en considération le contexte d’un service et le contexte courant de l’utilisateur lors de la découverte du service le plus approprié. De plus, d’autres travaux suivant une approche intentionnelle ont proposé des mécanismes de découverte de services selon l’intention (Mirbel et Crescenzo, 2010a) (Aljoumaa, 2011) (Olsson et al., 2011). Ceux-ci prennent en considération l’intention qu’un service est capable de satisfaire lors du processus de découverte. 3.5.2.1. La découverte de services sémantiques Les premiers travaux de découverte de services sémantiques, tels que (Klusch et al., 2006) et (Martin et al., 2007), se sont focalisés sur la mise en correspondance entre les entrées et les sorties pour la découverte du service le plus pertinent face à une requête donnée. Ces auteurs proposent des mécanismes de mise en correspondance sémantique (Paolucci et al., 2002) (Martin et al., 2007) et hybride (Klusch et al., 2009) en se basant sur les signatures des capacités fournies par les services. Ces mécanismes comprennent notamment l’identification des relations de subsomption entre les concepts décrivant les entrées et les sorties d’un service (Zaremski et Wing, 1995). Ces relations, semblables aux relations d’héritages, permettent de relier des concepts plus spécifiques à des concepts plus généraux explorant ainsi les hiérarchies entre les concepts dans une ontologie. 3.5.2.1.1. L’approche proposée par Paolucci et al. Une des approches les plus connues de découverte de services sémantiques a été proposée par Paolucci et al.(Paolucci et al., 2002) et Sycara et al. (Sycara et al., 2003). Ces auteurs se basent sur une description de services en DAML-S (OWL-S), dans laquelle un profil de service est décrit afin de refléter les fonctionnalités qu’il souhaite fournir à la communauté. Ils proposent, ensuite, un mécanisme de découverte de services se basant sur un algorithme de mise en correspondance sémantique entre une capacité demandée, décrite sous la forme d’un ensemble d’entrées fournies et de sorties requises, avec un ensemble de capacités fournies, décrites elles aussi sous la forme d’un ensemble d’entrées et de sorties. Cet algorithme se base sur une ontologie DAML (OWL), dans laquelle les entrées et les sorties d’un service sont sémantiquement décrites comme des concepts dans cette ontologie. En se basant sur cette ontologie, le processus de mise en correspondance peut faire des inférences sur les relations hiérarchiques de subsomption, conduisant ainsi à une mise en correspondance sémantique malgré les différences syntaxiques. Dans cet algorithme, Paolucci et al. (Paolucci et al., 2002)Systèmes(d’Information(Pervasifs(et(l’orientation(service 67 analyse les correspondances entre les capacités des services, fournies et demandées, selon quatre niveaux distincts : • Exact : si le concept demandé correspond exactement au concept proposé ou s’il représente une sous classe directe du concept proposé ; • Plug-In : si le concept proposé subsume celui qui est requis et celui-ci n'est pas une sous-classe directe du premier ; • Subsume : si le concept demandé subsume le concept proposé et celui-ci n'est pas une sous-classe directe du premier ; • Fail : s’il n’y a aucune relation entre les deux concepts. Dans cet algorithme, Paolucci et al. (Paolucci et al., 2002) reposent sur une première étape de mise en correspondance entre les sorties. Cette étape retourne, pour chaque sortie évaluée, un score représentant le degré de mise en correspondance obtenu. Ainsi, le service ayant le score le plus élevé sera sélectionné à la fin de cette étape. Toutefois, selon cet algorithme, la mise en correspondance entre les entrées n’est effectuée qu’en deuxième étape et sous condition que le résultat de la première étape retourne une égalité. Cette approche a été la base de différentes approches de découverte de services, telles que OWLS-MX (Klusch et al., 2006) que nous présentons dans la section suivante. 3.5.2.1.2. Les approches OWLS-MX, WSMO-MX et SAWSDL-MX Klusch et al. (Klusch et al., 2006) (Klusch et Kaufer, 2008) (Klusch et al., 2009) proposent différentes approches de découverte de services utilisant différents langages de description de services (OWL-S, WSMO et SAWSDL). Ces approches retournent le service le plus pertinent qui répond au mieux à la requête de l’utilisateur. Elles sont dites hybrides car elles se basent sur une combinaison de mécanismes de mise en correspondance syntaxique et sémantique. Chacune de ces approches a abouti à la proposition d’un outil de Matchmaker : OWLS-MX (Klusch et al., 2006), WSMO-MX (Klusch et Kaufer, 2008) et SAWSDL-MX (Klusch et al., 2009). Dans les trois approches, l’algorithme de mise en correspondance reçoit comme requête une description du service voulu en OWL-S, en WSMO ou en SAWSDL et retourne en conséquence les services les plus pertinents, qui se rapprochent au mieux de cette description. A chaque service est associé le degré de mise en correspondance et une valeur de similarité syntaxique par rapport à la requête. L’utilisateur peut spécifier le degré de mise en correspondance souhaité, ainsi qu’un seuil pour la valeur de similarité syntaxique. La différence entre les approches réside dans les formats de services utilisés et dans les degrés de mise en correspondance appliqués. L’approche OWLS-MX (Klusch et al., 2006) propose cinq degrés de mise en correspondance en plus des degrés Exact et Fail, dont trois basés uniquement sur la logique (Plug-In, Subsumes et Subsumed-By) et deux de type hybrides (Logic-based Fail et Nearest-Systèmes(d’Information(Pervasifs(et(l’orientation(service 68 neighbor). Le degré Logic-based Fail est utilisé lorsque le service ne parvient pas à répondre à la demande en fonction des critères de filtrage basés sur la logique, tandis que le degré Nearest-neighbor indique une certaine similarité entre un service S et une requête R définie comme :∀ INS ∃ INR : INs ≥ INR ET ∀ OUTR ∃ OUTs : OUTR ≥ OUTS V SIMIR (SnR) ≥α. Contrairement au précédent, le Matchmaker WSMO-MX (Klusch et Kaufer, 2008) utilise WSML à la place de OWL-S. La spécificité de ce Matchmaker réside dans l’usage de la notion d’intention (goal) dans la mise en correspondance, par l’application récursive de différents filtres sur les pré-conditions et les post-conditions associées à un service. Ces filtres représentent les mises en correspondance intentionnelles et syntaxiques, ainsi que ceux sur les relations, sur les contraintes et sur les paramètres. Le résultat est une mise en correspondance de l’intention selon sept degrés : equivalence, plug-in, inverse plug-in, intersection, disjonction, similarité floue (mise en correspondance basée sur la non logique), et neutre (lorsqu’aucune correspondance n’est déterminée ou lors d’un échec, le seuil de tolérance d’un échec de mise en correspondance est déclaré). L’approche SAWSDL-MX (Klusch et al., 2009) accepte, quant à elle, des services spécifiés en SAWSDL. Le processus de mise en correspondance se situe au niveau de l’interface de service en évaluant toutes les combinaisons des opérations d’un service offert et du service demandé. Cette évaluation repose sur le raisonnement par subsomption (exact, subsumes et subsumedBy) mais également sur une mise en correspondance syntaxique similaire à OWLSMX. Celle-ci compare la moyenne de similitude entre les vecteurs d'entrées et les vecteurs de sorties pour chaque opération offerte et requise à l’aide des mesures de similarité de texte (Loss-of-Information, Extended Jaccard, cosinus ou Jensen-Shannon) (Klusch et al., 2009). Ces approches précédemment citées (Paolucci et al., 2002) (Klusch et al., 2006) (Klusch et Kaufer, 2008) (Klusch et al., 2009) se caractérisent par une mise en correspondance sémantique entre les services disponibles et la requête de l’utilisateur. Dans la section suivante, nous présentons les approches de découverte de services qui, en plus de leur caractère sémantique, prennent en considération aussi le contexte d’utilisation. 3.5.2.2. La découverte de services sémantiques sensibles au contexte La sensibilité au contexte est la base pour différentes approches de découverte de services, à l’instar de (Suraci et al., 2007) (Ben Mokhtar et al., 2008) et (Vanrompay et al., 2011). Ces approches se basent, dans leur majorité, sur des descriptions sémantiques des services. La sensibilité au contexte étant une des caractéristiques de SIP (cf. section 2.4), ces approches sont ainsi particulièrement pertinentes pour les SIP, puisque ceux-ci doivent adapter leurs offres de services à l’environnement et au contexte d’utilisation. 3.5.2.2.1. L’approche DAIDALOS Suraci et al. (Suraci et al., 2007) proposent une approche orientée contexte pour la découverte de services Web. Celle-ci s’inscrit dans le cadre du projet européen DAIDALOS Systèmes(d’Information(Pervasifs(et(l’orientation(service 69 II1 . Suraci et al. (Suraci et al., 2007) considèrent la découverte de services sensibles au contexte comme la capacité d’utiliser l’information contextuelle pour découvrir et sélectionner les services les plus pertinents pour l’utilisateur. Ils considèrent que l’utilisateur et le service ont des exigences sur les informations de contexte dont ils ont besoin pour fonctionner correctement. Un utilisateur peut avoir des exigences sur le contexte d’un service qu'il recherche (disponibilité, localisation, etc.), ainsi que sur le contexte fourni par l'environnement (connexion sans fil, etc.). Un service peut demander à son tour des informations contextuelles sur l'utilisateur (lieu, les capacités du terminal, etc.) et de l'environnement (réseau, etc.). Figure 14. Les trois phases du mécanismes de filtrage lors du processus de découverte de service (d’après (Suraci et al., 2007)) Dans le cadre de cette approche, illustrée par la Figure 14, l’utilisateur débute le processus de découverte de services en fournissant au serveur de découverte de services (SDS – Service Discovery Server) sa requête et le pointeur vers sa description de contexte. Cette requête est composée de deux parties : (i) la requête basique (Basic Query) exprimée dans un des langages de découverte de services de bas niveau, tels que SLP, UPnP, UDDI, etc. ; (ii) la requête sémantique (Semantic Query) exprimée en utilisant un langage de requête sémantique de haut niveau. Du côté fournisseur, le service est décrit selon le contexte auquel il doit répondre. Celui-ci est décrit et publié par le fournisseur de service dans le gestionnaire de contexte. Ce contexte 1 Designing'Advanced'network'Interfaces'for'the'Delivery'and'Administration'of'Location' independent,'Optimised'personal'Services : http://www.ist-daidalos.org/ UTILISATEUR SDS SP GESTIONNAIRE DE CONTEXT CONTEXTE DE SERVICE CONTEXTE DE L'UTILISATUER CONTEXTE DE L'ENVIRONNEMENT Requête Basique Filtre Basique Description de Service Basique Requête Sémantique Filtre Sémantique Description de Service Sémantique Exigences de l'utilisateur sur le contexte du service Exigences de l'utilisateur sur le contexte de l'Env Filtre du Contexte Etape 1 Filtre du Contexte Etape 2 Filtre du Contexte Etape 3 Exigences du service sur le contexte de l'utilisateur Exigences du service sur le contexte de l'Env BASIC SEMANTIC CONTEXTESystèmes(d’Information(Pervasifs(et(l’orientation(service 70 inclut les conditions d’utilisation du service en fonction de la description de l’utilisateur (localisation, dispositif, mémoire disponible, taille de l’écran, etc.) et de son environnement (la température, le taux de pollution, etc.). Il agit donc comme une contrainte pour l’usage de chaque service. La description d’un service est elle aussi organisée en description basique, exprimée en XML ou WSDL, et en description sémantique, exprimée en OWL-S. Après la réception de la requête utilisateur, le SDS invoque le moteur de filtrage de services qui effectue la recherche de services en plusieurs phases, comme l’illustre la Figure 14 : • Le filtre de base compare la requête basique de l’utilisateur aux descriptions basiques des services stockés dans un répertoire de services ; • Le filtre sémantique compare la requête sémantique de l’utilisateur et les descriptions sémantiques des services qui n’ont pas été filtrées lors de la première étape. Le résultat de ce filtre est une liste de services qui répondent aux besoins de l’utilisateur mais sans aucune restriction sur les informations contextuelles ; • Le filtre de contexte compare le contexte associé au service aux attentes de l’utilisateur en termes de contexte de service. Il compare également le contexte de l’utilisateur avec les conditions d’utilisation de chaque service analysé et le contexte de l’environnement avec les exigences de l'utilisateur et du service en termes de contexte de l'environnement. L’originalité de ce travail réside dans la représentation de contexte associé à un service grâce à l’extension de OWL-S. Plus spécifiquement, le profil du service a été étendu par un attribut contexte qui représente une URL pointant vers le contexte réel du service décrit en OWL. Cette séparation entre les deux descriptions facilite la mise à jour des informations contextuelles caractérisées par leur nature dynamique. 3.5.2.2.2. L’approche AIDAS Toninelli et al. (Toninelli et al., 2008) considèrent que, dans les environnements pervasifs, les utilisateurs ont besoin de services sensibles au contexte adaptés à des paramètres tels que la localisation, l'environnement d'exécution, etc. Ces auteurs proposent alors un mécanisme de découverte de services personnalisé intégrant une représentation sémantique des données de contexte ainsi qu’une mise en correspondances de ces données. Ce mécanisme de découverte de services a été développé dans le cadre du middleware AIDAS (Adaptable Intelligent Discovery of Context-Aware Services). Celui-ci propose un mécanisme de découverte de services destiné aux utilisateurs mobiles. Le middleware AIDAS exploite la sensibilité au contexte sous forme de métadonnées, contenant les informations contextuelles. Ce modèle de métadonnées est composé des métadonnées de services, de l'utilisateur et de son dispositif. Chacun de ces composants est décrit par un profil statique qui contient les informations d'identification, ainsi que les capacités, les exigences et les interfaces des services, et un profil dynamique qui décrit les propriétés des services qui Systèmes(d’Information(Pervasifs(et(l’orientation(service 71 peuvent varier dans le temps. Ce profil dynamique comprend essentiellement des informations sur les conditions d'exploitation du service (état du service). Dans cette approche, le mécanisme de découverte de services considère en entrée les capacités offertes par les services et celles requises par l’utilisateur et offre en sortie le degré de la similarité sémantique entre eux. Pour chaque capacité requise, l’algorithme est capable de reconnaître les relations de subsomption possibles avec la capacité offerte, à l’instar de Paolucci et al. (Paolucci et al., 2002), à savoir la capacité offerte peut être une instance de la classe de la capacité requise (exact), ou une instance d'une classe qui subsume celle-ci (subsume) ou une instance d'une classe qui est subsumé par celui-ci (plug-in). Ces relations sémantiques sont déterminées en considérant les valeurs de propriétés et les classes des capacités offertes et requises. En cas de correspondance exacte pour toutes les capacités du service, alors le service offert est compatible avec la demande de l'utilisateur. Dans le cas où la correspondance n'est pas exacte, la compatibilité est évaluée en fonction des préférences de l’utilisateur. S'il existe une préférence indiquant que la contrainte sur cette propriété peut être assouplie, un plug-in ou un subsume peut être considéré comme compatible 3.5.2.2.3. L’approche EASY Similairement aux approches précédentes, Ben Mokhtar et al. (Ben Mokhtar et al., 2008) proposent un middleware sémantique et orienté services, nommé EASY, illustré à la Figure 15, pour la découverte et la composition de services dans un environnement pervasif. Figure 15. Aperçu de l'architecture du middleware EASY (d’après (Ben Mokhtar et al., 2008)) Cette proposition inclut le langage EASY-L basé sur OWL, pour la spécification sémantique, non ambiguë, de propriétés fonctionnelles et non-fonctionnelles des services. De plus, elle présente EASY-M (EASY-Matching) qui représente un ensemble de relations de conformité pour la mise en correspondance entre les services en termes de leurs propriétés EASY-enhanced SDP EASY Descriptions de EASY-L SDP-L Reg/adv EASY-L + SDP-L Reg/adv E A S Y - M Indexer ontology au group Indexer EASY-L à SDP-L Legacy SDP S Descriptions de SPD-L D P - MSystèmes(d’Information(Pervasifs(et(l’orientation(service 72 fonctionnelles et non fonctionnelles. EASY-M fournit les moyens pour découvrir le service qui correspond au mieux aux exigences non-fonctionnelles des utilisateurs en prenant en considération leurs préférences. Ben Mokhtar et al. (Ben Mokhtar et al., 2008) adoptent des niveaux de mise correspondance similaires à ceux proposés par Paolucci et al. (Paolucci et al., 2002) (cf. section 3.5.2.1.1). Ils présentent ainsi leurs trois relations pour la mise en correspondance des propriétés fonctionnelles des capacités requises et des capacités offertes : ExactCapabilityMatch, InclusiveCapabilityMatch et WeakCapabilityMach. La relation ExactCapabilityMatch permet de trouver les capacités offertes qui correspondent exactement à une capacité requise. La relation InclusiveCapabilityMatch permet de trouver des capacités qui peuvent être plus génériques que la capacité requise, tandis que la relation WeakCapabilityMach représente la relation la moins restrictive, où les concepts des capacités requises soit subsument, soit sont subsumés par les concepts offerts. Ceci permet de découvrir des services fournissant des sorties plus spécifiques que celle requises. En se basant sur EASY-L et EASY-M, le middleware EASY utilise un algorithme d’encodage hors ligne lequel réalise un encodage des concepts des ontologies utilisés et permet ainsi de réduire le coût du raisonnement sémantique sur les ontologies à une comparaison numérique de codes. Selon Ben Mokhtar et al. (Ben Mokhtar et al., 2008), cet algorithme s'appuie sur les nombres premiers et prend en charge un encodage progressif et sans conflit, permettant ainsi de faciliter la réutilisation et l’extension des ontologies existantes. Le middleware EASY se base sur cette technique d’encodage pour d’organiser efficacement les spécifications des services sémantiques dans les répertoires de services. Cette organisation permet de réduire considérablement le nombre de mises en correspondance sémantiques effectuées lors de la découverte de services. 3.5.2.2.4. L’approche proposée par Vanrompay et al. Vanrompay et al. (Vanrompay et al., 2011) proposent un mécanisme de découverte de services basé sur une mise en correspondance contextuelle, lequel prend en compte l'incertitude des informations de contexte lors du classement des variantes de services. Ce mécanisme se base sur des descriptions de services en OWL-S enrichies avec des propriétés contextuelles. Ces propriétés représentent le contexte requis du service, lesquelles sont non fonctionnelles et liées à l'environnement d'exécution le plus adapté pour le service. A l’instar de Suraci et al. (Suraci et al., 2007), la description de contexte requis est incluse dans un fichier XML extérieur référencé à l’intérieur du profil de service OWL-S. L’originalité de cette approche réside dans l’analyse de cette description contextuelle sous forme de graphe. Dans ce graphe, les objets représentent les concepts et les propriétés, alors que les arêtes représentent les relations reliant ces concepts. Cette approche par graphe permet de comparer les informations contextuelles en se basant sur des mesures de similarité. Le mécanisme de découverte de services utilise des mesures de similarité locale combinées à des mesures de similarités globales dans le but de comparer les exigences liées au contexte de chaque variante de service avec les valeurs du contexte courant d’exécution. Les mesures locales comparent deux nœuds individuellement, en considérant Systèmes(d’Information(Pervasifs(et(l’orientation(service 73 seulement le concept qu'il représente et ses propriétés. Les mesures globales prennent en compte le graphe dans son ensemble, évaluant, par exemple, la proportion des éléments similaires dans les deux graphes. Ces mesures sont basées sur l'analyse des valeurs moyennes et des degrés d'incertitude. Le degré d’incertitude est représenté comme une métadonnée associée au contexte observé. Plus le degré d’incertitude est faible, plus l’information contextuelle est fiable. Les résultats de ces mesures globales sont utilisés pour classer les services selon leur pertinence dans le contexte courant. 3.5.2.2.5. L’approche proposée par Petit Petit (Petit, 2010) propose une approche spatiale pour la modélisation et la conception d’un Système d'Information mobile et distribué par l’analyse du contexte. Cet auteur propose un modèle décrivant l'espace géographique d’un système utilisé pour différencier un ensemble de contextes d'exécution. Son but principal est d’aider et de guider les concepteurs à caractériser les évolutions possibles de la mobilité du systèmes lors de sa future exécution. La description de contexte permet de mettre en correspondance les attentes des utilisateurs avec les capacités techniques de la plateforme afin de leur offrir les fonctionnalités les plus adéquates. Dans ce modèle, les composants de la plateforme génèrent une seule région d'exécution définie selon une certaine couverture spatiale. Cette région d’exécution présente l'espace dans lequel ce composant agit au sein du système. Ce modèle définit également des régions d'intérêt qui sont définies par rapport à des informations relatives à des lieux ou des évènements de l'environnement du système. Dans ces travaux, Petit (Petit, 2010) propose un cadre de conception unifié permettant d’identifier et de prendre en compte les besoins des utilisateurs et leurs attentes futures. Ce cadre se définit selon les deux étapes suivantes : (1) définition des objectifs des utilisateurs ; et (2) identification des étapes nécessaires à l’accomplissement de ces objectifs (tâches). Ce cadre de conception est utilisé comme support pour l’intégration des contextes d’exécution décrits par l’étude géographique de l’environnement et des relations entre régions. Le cadre de conception résultant est dit cadre de conception étendu. Il considère les variations du contexte d’exécution au niveau de chaque composant. Il ajoute ainsi une description géographique de l’environnement comme entrée du processus de modélisation. La modélisation des contextes d’exécution est fournie en entrée d’un processus de conception étendu, centré sur l’analyse des tâches des utilisateurs pour l’écriture de scénario. 3.5.2.3. La découverte de services sémantiques intentionnels En plus des approches sémantiques et sensibles au contexte citées précédemment, une autre vision est proposée par des travaux tels que (Rolland et al., 2010) (Aljoumaa et al., 2011) (Olsson et al., 2011). Ces approches, dites guidées par l'intention, prônent l'importance des besoins de l'utilisateur lors du choix des services. Systèmes(d’Information(Pervasifs(et(l’orientation(service 74 3.5.2.3.1. L’approche SATIS L’approche SATIS (Semantically AnnotaTed Intentions for Services) (Mirbel et Crescenzo, 2010b) a été proposée dans la perspective d’offrir à des utilisateurs finaux le moyen de représenter leurs démarches de recherche de Services Web pour opérationnaliser des parties d’un processus métier. Cette approche permet, d’une part, aux utilisateurs finaux d’exprimer leurs besoins selon une perspective intentionnelle, et d’autre part, de les aider à rechercher les Services Web disponibles qui correspondent à leurs besoins. Cette approche est dépendante d’un domaine particulier pour lequel des connaissances du domaine et des descriptions de services Web sont disponibles. L’approche SATIS (Mirbel et Crescenzo, 2010b) repose sur les technologies du Web sémantique pour représenter : (i) les besoins intentionnels de haut niveau des utilisateurs ; (ii) les patrons de spécifications de services Web ; ainsi que (iii) les spécifications des services Web. Dans leur approche, ces auteurs adoptent le modèle de la Carte (Rolland, 2007) pour la description des besoins intentionnels des utilisateurs finaux. Le modèle de carte met en avant les intentions et les stratégies possibles pour atteindre celles-ci. Celles-ci sont rassemblées dans une ontologie spécifiée en RDFS (Brickley et Guha, 2004), dédiée à la représentation des processus intentionnels et à l’annotation du processus de recherche (Corby et al., 2009). En plus de cette ontologie, l’approche SATIS repose sur deux autres ontologies, une ontologie OWL-S utilisée pour la description de Services Web, et une ontologie de domaine, notamment une ontologie décrivant les images médicales et les traitements d’image associés (Mirbel et Crescenzo, 2010b). Finalement, les patrons de spécifications de service Web sont définis à l’aide du langage de requête SPARQL. Ces patrons de spécifications des services Web sont ainsi modélisés comme des patrons de graphes qui sont projetés sur les graphes des annotations de Services Web (Mirbel et Crescenzo, 2010a). L’approche SATIS propose ainsi un modèle de réutilisation et de partage de requêtes dans une communauté permettant de construire les démarches d’une façon dynamique. Ces requêtes sont organisées sous la forme d’un ensemble de fragments de démarche de recherche. Un fragment de démarche représente un morceau autonome et cohérent du processus de recherche de Services Web (Mirbel et Crescenzo, 2010a), modélisé sous forme de requêtes SPARQL. Chaque fragment permet de supporter l’opérationnalisation d’une partie du processus métier (e.g. une chaîne de traitement d’images) à l’aide de Services Web (Mirbel et Crescenzo, 2010b). Ces fragments seront par la suite réutilisés et partagés à l’intérieur d’une communauté d’utilisateurs partageant les mêmes centres d’intérêts dans un domaine. L’approche SATIS (Mirbel et Crescenzo, 2009) passe par quatre phases, comme l’illustre la Figure 16. La première phase est la phase d’élicitation dans laquelle les utilisateurs finaux définissent leurs fragments de démarches selon le modèle de la Carte (Rolland, 2007). La deuxième phase représente la phase de formalisation comportant deux activités. Tout d’abord, elle se charge de raffiner certaines sections (composées d’une intention source, d’une intention cible et d’une stratégie) de la Carte décrite lors de la phase d’élicitation. Ce raffinement permet de détailler la manière d’atteindre une intention cible. Ensuite, elle se Systèmes(d’Information(Pervasifs(et(l’orientation(service 75 charge de générer les requêtes SPARQL afin de concrétiser chaque section par un service Web approprié ou par un ensemble de spécification de services Web. La troisième phase est la phase de fragmentation, laquelle transforme toutes les spécifications capturées pendant la phase de formalisation en un ensemble de règles (Corby et al., 2009). Finalement, la quatrième phase est la phase de population. Cette phase consiste à dériver les spécifications sémantiques des services Web pour opérationnaliser l’ensemble des intentions et des stratégies associées à la requête en cours de réalisation. Figure 16. L’approche SATIS (d’après (Mirbel et Crescenzo, 2009)) Dans approche (Mirbel et Crescenzo, 2010b), la phase de recherche comporte deux alternatives : (i) rechercher parmi les besoins intentionnels décrits explicitement dans la mémoire sémantique de la communauté ; ou (ii) créer lui-même une nouvelle spécification de besoin. La création d’une nouvelle spécification consiste à spécifier des besoins intentionnels selon le modèle de la Carte (Rolland, 2007), sous forme d’intentions et de stratégies pour les atteindre. Cette modélisation permet de spécifier des intentions suffisamment précises pour qu’elles soient associées à des patrons de spécifications de Services Web. Par la suite, l’étape de mise en œuvre de la démarche de découverte de Services Web va permettre l’opérationnalisation du processus métier. Quant au mécanisme de recherche de services, il s’appuie sur un moteur de chaînage arrière qui exploite les règles SPARQL implémentant les fragments de démarches. Plus spécifiquement, l’approche SATIS s’appuie sur le moteur sémantique CORESE (Corby et al., 2009), lequel représente un moteur de recherche sémantique basé sur le modèle des graphes conceptuels. CORESE intègre un moteur de chaînage arrière exploitant des règles implémentées par des requêtes SPARQL représentant les fragments de la forme construct-where. Selon cette formalisation, la clause construct est un patron de graphe permettant de construire la représentation RDF de la section de la carte et la clause where est un patron de graphe qui représente soit une carte (règle abstraite) soit un critère de recherche de ressources pertinentes (règle concrète). Elicitation Formalisation Fragmentation Population Requêtes SPARQL Règles CORESE RDF Annotation RDF Approche intentionnelle Ontologies Domaine métier Modèle de Carte pour les services Services WebSystèmes(d’Information(Pervasifs(et(l’orientation(service 76 Le point fort de SATIS est qu’elle s’appuie sur les modèles et langages du Web sémantique pour enrichir la description des besoins des utilisateurs et ainsi proposer des moyens de raisonnement et d’explications des Services Web trouvés pour implémenter un besoin métier. 3.5.2.3.2. L’approche PASiS Aljoumaa et al. (Aljoumaa et al., 2011) proposent une approche sémantique orientée services basée sur l’architecture iSOA (Kaabi et Souveyet, 2007) (Rolland et al., 2010) (cf. section 3.4.3.3). A partir du modèle de services intentionnels (ISM - Intentional Services Model), Aljoumaa et al. (Aljoumaa et al., 2011) proposent l’approche PASiS (Publishing And Searching intentional Services) dont l’objectif est de permettre aux utilisateurs finaux d’exprimer leurs besoins sous forme de requêtes basées sur le modèle d’intention de Prat (Prat, 1997) (cf. section 3.4.3.1). A l’aide d’un processus de reformulation, l’approche PASiS vise à assister les utilisateurs lors de la formulation de leur requête. Ces auteurs se basent essentiellement sur le principe de guidage méthodologique pour formuler les besoins des utilisateurs sous forme d’intention et découvrir et sélectionner les services intentionnels les plus proches des besoins de l’utilisateur. Cette approche vise ainsi à rendre opérationnels les travaux de (Kaabi et Souveyet, 2007) (Rolland et al., 2010) en implémentant, entre autres, le mécanisme de découverte de services intentionnels de l’architecture iSOA. Ce mécanisme repose sur une description des services en SAWSDL étendue afin de prendre en considération l’aspect intentionnel (Aljoumaa et al., 2011). Le mécanisme de découverte de services guidé par l’intention, se base sur un ensemble d’ontologies : (i) iOnto décrivant les services intentionnels ; (ii) vOnto représentant les verbes du domaines ; et (iii) pOnto représentant l’ontologie de domaine. Ce mécanisme de découverte applique un algorithme de mise en correspondance sémantique entre une requête formulée sous forme d’intention et les intentions des services disponibles dans le répertoire étendu de services. Cette mise en correspondance s’inspire particulièrement de Paolucci et al. (Paolucci et al., 2002). Elle détermine un possible lien d’héritage entre deux concepts dans l’ontologie et ensuite, en fonction du nombre de niveaux hiérarchiques qui les séparent, elle détermine si les deux intentions correspondent. L’architecture iSOA (cf. section 3.4.3.3), comme pour PASiS (Aljoumaa, 2011), considère qu’un service intentionnel est attaché directement à un service technique (une relation 1 à 1). Ces auteurs ne prennent pas en charge non plus la dynamique de l’environnement technique par rapport à la réalisation de l’intention, ni le fait que dans des contextes différents, une intention peut être réalisée par différents services techniques. 3.5.2.3.3. L’approche proposée par Olsson et al. Olsson et al. (Olsson et al., 2011) défendent également l'utilisation de l'intention pour décrire les services selon un nombre arbitraire de niveaux d'abstraction. Ces auteurs proposent une approche de découverte de services orientée intention. Dans cette approche, un utilisateur Systèmes(d’Information(Pervasifs(et(l’orientation(service 77 doit être capable de spécifier une intention de haut niveau, exprimée en WSML, en termes de QoS, d’indicateurs clés de performance et, bien sûr, de fonctionnalités spécifiques. Cette intention décrit un état souhaité du système, ce qui va permettre au mécanisme de découverte de découvrir les services les plus pertinents qui peuvent satisfaire l’intention de l’utilisateur. Cette approche se base sur une méthodologie ascendante (bottom-up) pour la modélisation sémantique des services Web, en se basant sur l’annotation des fichiers WSDL avec des informations sémantiques pour chaque opération. Ainsi, ces auteurs représentent un service Web comme un ensemble d’opérations annotées sémantiquement. Chaque opération est modélisée comme un ensemble de variables d’entrée et de sortie, et d’états de transition constitués d’une assomption (assumption) et d’un effet. Dans le mécanisme de découverte de services, une intention est mise en correspondance avec les effets des opérations, et les assomptions peuvent alors, à leur tour, être considérées comme des intentions supplémentaires qui infèrent des dépendances entre les opérations. Ce mécanisme se base sur un algorithme de mise en correspondance, également inspiré des travaux de Paolucci et al. (Paolucci et al., 2002). Cette mise en correspondance entre une intention et l’effet d’une opération est déterminée ainsi selon les mêmes niveaux que Paolucci et al. (Paolucci et al., 2002) (exact, plug-in, subsume et fail), alors que la mise en correspondance des opérations s’effectue par une vérification de la requête dans le framework WSML2Reasoner (Grimm et al., 2007). De plus, cette approche de découverte de services intègre un algorithme de raffinement d’intention. Cet algorithme décompose une intention en sous intentions plus spécifiques avec lesquelles on peut avoir un résultat de mise en correspondance plus précis. Cet algorithme de raffinement d’intentions permet de déterminer également l’ensemble d’opérations qui sont nécessaires pour l’accomplissement d’une intention. Selon ces auteurs (Olsson et al., 2011), cet algorithme de raffinement permet non seulement la description des services, mais aussi l'amélioration de la performance de la découverte de ces services. Cette approche se concentre uniquement sur les aspects fonctionnels, permettant de découvrir avec les opérations des services qui devraient être utilisées lors d’une composition. 3.5.2.4. La découverte de services sémantiques sensibles au contexte et intentionnels Aucun de travaux précédemment cités (Mirbel et Crescenzo, 2010b) (Aljoumaa et al., 2011) (Olsson et al., 2011) ne combine la notion de contexte à celle d’intention, contrairement à Santos et al. (Santos et al., 2009), Ramadour et Fakhri (Ramadour et Fakhri, 2011) et Ma et al. (Ma et al., 2011) qui ont relevé l’importance d’exploiter l’étroite relation entre ces deux notions dans les processus de découverte de services. Systèmes(d’Information(Pervasifs(et(l’orientation(service 78 3.5.2.4.1. L’approche proposée par Santos et al. Santos et al. (Santos et al., 2009) proposent le framework GSF (Goal-Based Service Framework), qui permet une découverte et une composition dynamique de services guidée par l'intention et le contexte. Cette approche se base sur la notion d’intention afin d’analyser les besoins exprimés par les utilisateurs. Pour cela, ces auteurs identifient à priori un ensemble d'intentions spécifiques à un domaine et les différentes tâches qui permettent leur accomplissement. Les services sont aussi associés à ces tâches, permettant une découverte guidée par l'intention. Le concept d’intention est utilisé afin d’exprimer l’objectif de l’utilisateur vis à vis du service. Le framework GSF illustré à la Figure 17 propose ainsi une ontologie des services basée sur les intentions (GSO) (Goal Service Based-Ontology) décrivant les concepts indépendants du domaine tels que le service, le client, le fournisseur, l’intention, la tâche et leurs relations. Ces concepts sont par la suite utilisés et spécialisés dans les ontologies de tâche et de domaine. L’ontologie de domaine inclut les concepts spécifiques à un domaine, les relations entre ces concepts et les intentions valides que les utilisateurs de ce domaine peuvent avoir, tandis que l’ontologie de tâche utilise les concepts définis dans l’ontologie de domaine et fournit les définitions spécifiques à ce domaine des tâches et comment elles peuvent être liées à l'accomplissement des intentions de l'utilisateur. Le framework GSF fournit également une plateforme des services sensibles au contexte supportant l'interaction entre les fournisseurs et les clients de services. Du point de vue fournisseur, la plateforme prend en charge la publication des descriptions de services. Du point de vue client, celle-ci fournit des mécanismes de découverte, de composition et d’invocation de services. Cette plateforme comprend des composants de gestion de contexte qui se chargent de fournir des informations contextuelles de l'utilisateur. Ces informations représentent des données d'entrée pour les services découverts, et sont utilisées autant pour la sélection de la tâche qui répond à une intention donnée, que pour réduire l'interaction de l'utilisateur avec la plateforme soutenant ainsi un comportement plus autonome. Figure 17. Les principaux composants de GSF (d’après(Santos et al., 2009)) A travers cette plateforme (Santos et al., 2008) (Santos et al., 2009), un client peut soumettre soit une intention, en demandant à la plateforme de lui retourner le service qui satisfait celle-ci, soit directement une tâche. Si l’utilisateur décrit sa demande sous forme Spécification de Domaine "Utilisé par" Ontologie de Domaine Ontologie de tache Ontologie de services basée les intentions Méta-model de services basée les intentions Plateforme Services sensibles au contexte Service "Représenté par" "Instance" "Annoter" "Interagir avec" "Utilisé par"Systèmes(d’Information(Pervasifs(et(l’orientation(service 79 d’intention, alors un processus de découverte de services en deux phases démarre. La première phase effectue une mise en correspondance entre l’intention de l'utilisateur et les intentions définies dans l'ontologie de domaine. Si une intention est trouvée, le processus déclenche la deuxième phase qui va chercher les tâches définies dans l'ontologie de tâche pouvant répondre à cette intention. Ce processus identifie alors les services qui implémentent la tâche satisfaisant l’intention demandée, grâce à une correspondance entre les services et les tâches fixées à l'étape précédente. Par contre, si l’utilisateur choisit de soumettre une tâche, alors la plateforme tente de trouver la mise en correspondance entre la tâche demandée et celles dans l'ontologie de tâches, puis les services qui implémentent les tâches choisies. Cette approche semble particulièrement restrictive car elle demande l’association au préalable des intentions aux tâches dans l’ontologie de tâches. Par ailleurs, la notion de contexte n’est utilisée que comme un paramètre d'entrée pour les services recherchés, sans avoir une réelle relation avec l'intention. Ces auteurs ne considèrent le contexte que comme un filtre pour la découverte de services, le contexte étant décrit comme une partie des entrées nécessaires aux services, et les intentions comme de simples étiquettes permettant de relier les demandes des utilisateurs aux services. 3.5.2.4.2. L’approche proposée par Ramadour et Fakhri Ramadour et Fakhri (Ramadour et Fakhri, 2011) proposent une méthode de découverte et de composition de services nommée PAX (Pattern-Based Approach for Composition of Services). Cette approche se base sur la notion d’intention et de contexte afin de formaliser les besoins des utilisateurs et de représenter les aspects environnementaux (culturel, organisationnel, spatial, temporel) et non fonctionnels (qualitatif, sécuritaire) liés aux utilisateurs (rôle, compétence). Dans leur travaux, ces auteurs proposent l’utilisation des patrons de compositions afin d’assurer l’accessibilité, la réutilisation et l’adaptabilité des compositions. Ces patrons réalisent une certaine intention dans un contexte donné. D’un côté, l’intention est structurée selon le modèle de Prat (Prat, 1997). De l’autre côté, le contexte est exprimé sous la forme d’assertions contextuelles exprimées sous forme de type (temporelle, financière, rôle, compétence, etc.) et de sa formulation. Ces deux notions sont basées sur les concepts de l’ontologie contextuelle proposée par (Ramadour et Fakhri, 2011). Les assertions contextuelles sont combinées à travers les connecteurs logiques AND et NOT. Pour découvrir les compositions de services nécessaires pour répondre aux besoins des utilisateurs, Ramadour et Fakhri (Ramadour et Fakhri, 2011) se basent sur la notion de rapprochement entre l’intention et le contexte de l’utilisateur avec ceux des patrons disponibles. Ce rapprochement comporte essentiellement deux types de traitements : (i) la similarité des intentions ; et (ii) la compatibilité de contexte. Ces deux traitements se basent sur une ontologie linguistique. D’une part, la similarité des intentions repose sur la similarité sémantique entre les actions et les objets. Ainsi, deux intentions sont similaires si leurs actions (verbes) et leurs objets sont sémantiquement équivalents selon l’ontologie Systèmes(d’Information(Pervasifs(et(l’orientation(service 80 linguistique. Cette équivalence comporte les liens d’hyponymie et de synonymie, et est évaluée soit à une mesure exacte, soit à un poids entre [0..1] reflétant l’équivalence sémantique. D’autre part, la compatibilité de contexte se base sur des assertions contextuelles. Les assertions contextuelles sont séparées en deux groupes. Le premier groupe comporte les assertions positives, celles qui sont combinées par l’opérateur AND. Le deuxième groupe comporte les assertions négatives, celles qui sont combinées par l’opérateur NOT. Ainsi, la compatibilité de deux contextes commence par comparer séparément les assertions positives et négatives. Cette comparaison se base sur l’équivalence sémantique, selon l’ontologie linguistique, entre le type et la formulation de deux assertions contextuelles. La découverte des services composites représente un des trois opérateurs de l’approche proposée par Ramadour et Fakhri (Ramadour et Fakhri, 2011), en plus de l’opérateur de spécialisation qui permet de descendre dans le niveau d’abstraction et d’opérationnalisation qui permet d’assembler les compositions fournies par les patrons d’une manière abstraite. Ces opérateurs représentent le processus de manipulation des compositions de services, lequel prend comme entrée le besoin à satisfaire et comme sortie la composition de services retrouvée à l’aide du processus de découverte décrit ci-dessus. 3.5.2.4.3. Extension de WSMO pour la sensibilité au contexte Afin de suivre l’évolution des applications mobiles, l’approche WSMO a été étendue afin de prendre en considération divers éléments non fonctionnels, tels que la notion de contexte (Grenon, 2009). L’incorporation des informations contextuelles dans WSMO a été traitée dans le cadre du projet européen SOA4ALL2 . L'objectif principal de ce projet est de fournir un cadre global qui intègre les avancées technologiques (i.e. SOA, gestion de contexte, Web 2.0 et Web sémantique) dans une plateforme de prestation de services cohérente et indépendante du domaine. Dans ce cadre, Grenon (Grenon, 2009) propose des mécanismes et des directives pour spécifier des dimensions structurant et uniformisant les informations contextuelles. Ces dimensions fournissent un ensemble d’informations contextuelles pertinentes dont certaines on été introduites dans une extension minimale de WSMO. Cette extension repose d’abord sur la relation entre l’intention et ces dimensions, considérées comme aspects non fonctionnels de l’intention. Pour cela, une nouvelle classe d’éléments a été ajoutée à WSMO et spécialisée dans les relations ci-dessus. Enfin, une notion d’agent pour la collecte de l’information contextuelle a aussi été ajoutée. Outre l’approche de Grenon (Grenon, 2009), Saadon et Mohamad (Saadon et Mohamad, 2011) propose également une extension de WSMO, appelée WSMO-M, destinée à l’Informatique Mobile. Celle-ci considère le contexte en tant que propriété non fonctionnelle. Ces auteurs considèrent que l’ensemble des propriétés non fonctionnelles (NFP – NonFunctional Properties) proposé par WSMO, tel que description, relation, sécurité, exactitude, couverture, version, passage à l’échelle, etc., ne sont pas suffisamment expressives et 2 http://www.soa4all.eu/Systèmes(d’Information(Pervasifs(et(l’orientation(service 81 flexibles pour prendre en considération l’attribut contexte. Par conséquence, et comme l’illustre la Figure 18, ils proposent une nouvelle catégorie de la classe NFP appelée contexte. Celle-ci contient toutes les informations contextuelles qui peuvent être associées à la classe service Web, telles que ressource, moyen de paiement, localisation et temps, ainsi qu’à la classe intention, telles que le profil de l’utilisateur et du dispositif, la localisation et le temps. Figure 18. Extension des propriétés non fonctionnelles du modèle conceptuel de WSMO (d’après (Saadon et Mohamad, 2011)) De plus, ces auteurs proposent un mécanisme de découverte de services qui repose sur une mise en correspondance des propriétés fonctionnelles (pré-conditions et post-conditions), mais également des éléments de contexte liés au service et à l’utilisateur et une mise en correspondance sémantique entre l’intention qu’un service permet de satisfaire et la requête de l’utilisateur exprimée sous la forme d’intention. Celle-ci repose sur les mêmes degrés de mise en correspondance proposés par (Paolucci et al., 2002) : exact, plug-in, subsume et fail. Les approches précédemment citées visent la satisfaction immédiate d’une requête directe de l’utilisateur. Il s’agit d’un comportement réactif et non proactif. Dans la section suivante, nous présentons ces approches proactives, de la prédiction de services, lesquelles représentent le deuxième challenge de SIP auquel nous nous intéressons. 3.5.3.La prédiction de services A ce jour, une majorité de systèmes sensibles au contexte sont simplement réactifs, prenant les décisions en se basant seulement sur le contexte courant. Les recherches dans les systèmes anticipatoires et proactifs, notamment par la prédiction de la situation future de l’utilisateur, sont encore à leurs débuts. Dans de tels systèmes, un utilisateur peut avoir un ensemble d’habitudes. En exploitant celui-ci, nous pouvons améliorer la transparence des systèmes en réduisant l'effort de compréhension de l'utilisateur par l’anticipation de ces besoins. Plusieurs approches ont été proposées afin d’atteindre ce caractère anticipatoire soit des services, par la recommandation (Abbar et al., 2009) (Xiao et al., 2010)(Yu et al., 2012), soit du contexte Service Web * Intention Capacité Interface Axiome Orchestration Chorégraphie Prop. non Fonctionnelle Contexte QoWS Variable Partagée * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * "hasAssumption" "hasPrecondition" "hasPostcondition" "hasEffect"Systèmes(d’Information(Pervasifs(et(l’orientation(service 82 d’utilisation, par la prédiction (Meiners et al., 2010)(Boytsov et Zaslavsky, 2011). Les prochaines sections introduisent certaines de ces approches. 3.5.3.1. Prédiction de contexte Dans l’Informatique Pervasive, plusieurs recherches ont été menées dans le cadre de la prédiction de contexte d’utilisation. Ces contributions visent à introduire de nouvelles techniques de prédiction afin d’augmenter le caractère dynamique des systèmes pervasifs. 3.5.3.1.1. L’approche proposée par Mayrhofer et al. Une des premières contributions dans la prédiction de contexte a été proposée par Mayrhofer (Mayrhofer, 2004). Cet auteur propose une architecture et un cadre pour la prédiction de contexte. Il est basé sur une classification non supervisée, qui tente de trouver des clusters de contexte, jusque-là inconnues à partir des données d'entrée, représentant des patrons récurrents. Cette approche interprète le contexte comme des états, dans lesquels un utilisateur ou un dispositif avance d’un état à un autre. Ainsi, l’interprétation d’un changement de contexte, comme une trajectoire d’état, permet de prévoir le développement futur de la trajectoire, et par conséquent prédire le contexte attendu. Figure 19. Architecture de prédiction de contexte ( d’après (Mayrhofer, 2004)) Mayrhofer (Mayrhofer, 2004) propose un processus en cinq étapes illustré à la Figure 19, qui prend en entrée des séries temporelles (ensembles d’observations, chacune enregistrée à un temps précis) et qui offre en sortie le contexte courant de l’utilisateur (ou d’un dispositif) ainsi que son contexte futur prédis. L’étape d’acquisition de contexte se charge de collecter les informations contextuelles à partir d’un ensemble de capteurs physiques ou logiques. Les données ainsi capturées sont transformées en des caractéristiques (features) plus significatives lors de l’étape d’extraction des caractéristiques afin de mieux les interpréter. Ensuite l’étape de classification se charge de reconnaître les patrons récurrents, appelés clusters, dans l'espace des caractéristiques définies lors de l’étape précédente. Cette approche de classification utilise un vecteur de caractéristiques lequel peut éventuellement être affecté à plusieurs clusters avec certains Extraction Caractéristiques Classification Etiquetage Capteurs PredictionSystèmes(d’Information(Pervasifs(et(l’orientation(service 83 degrés d'appartenance. Ce degré représente la probabilité que le vecteur de caractéristiques appartienne à un cluster. Cette étape repose sur une extension de l’algorithme de classification LLGNG (Lifelong Growing Neural Gas) (Hamker, 2001). Enfin, l’étiquetage affecte des noms descriptifs aux clusters individuels ou aux combinaisons de clusters. Une fois les clusters identifiés, l’étape de prédiction va essayer de prédire le cluster de contexte futur sur la base de l'historique observé. Cette étape s'appuie sur le vecteur de clusters généré par l'étape de classification. Cela permet de prévoir plus qu'une future meilleure correspondance de contexte en exploitant les degrés appartenance aux clusters. L'objectif est de générer des vecteurs de cluster pour des points dans le futur, qui correspondent au vecteur de cluster courant fourni par l'étape de classification. Cela permet d’alimenter les vecteurs de clusters prévus (prédis) dans l'étape d'étiquetage pour fournir des étiquettes de contextes prévus pour une utilisation dans des applications dynamiques. 3.5.3.1.2. L’approche proposée par Sigg et al. Semblable à Mayrhofer (Mayrhofer, 2004), Sigg et al. (Sigg, 2008) (Sigg et al., 2010) proposent une définition formelle de la tâche de prédiction de contexte répondant à la problématique posée sur la qualité de contexte et sur la prise en compte de l’ambiguïté de cette information qui peut être incomplète (cf. section 2.3.4.1). Ils proposent une architecture de prédiction de contexte basée sur une méthode d'alignement, à partir de laquelle les informations de contexte manquantes sont déduites. L’architecture proposée par Sigg et al. (Sigg et al., 2010), à l’instar de Mayrhofer (Mayrhofer, 2004), est aussi basée sur des patrons de contexte type que l’algorithme d’apprentissage construit pour guider le module de prédiction. Ceux-ci sont composés de séries temporelles auxquelles on attribue des poids décrivant l’importance attachée à chacune. Ainsi, si la série temporelle observée est identique ou similaire à un patron de contexte, alors le poids attaché à l’alignement dans la base est renforcé. Dans le cas contraire, un nouvel alignement est rajouté à la base et les poids des autres patrons de contexte qui sont différents du nouveau patron de contexte observé sont réduits. Ces séries temporelles représentent l'historique de contexte. Elles sont alimentées par toutes les sources de contexte disponibles dans la couche d'acquisition de contexte de l’architecture. Le module de prédiction de contexte se base sur une méthode d’alignement, permettant de prédire la continuation la plus probable d’une série temporelle à partir du suffixe de la séquence observée. Cette approche de prédiction par alignement cherche à aligner deux chaînes à l'aide de leurs écarts de sorte que le nombre de positions correspondant aux deux chaînes soit maximisé. Enfin Sigg et al. (Sigg et al., 2010) proposent également un module d’apprentissage continu dans le but de s’adapter à l'évolution des environnements ou des habitudes des utilisateurs. Il surveille en permanence les séries temporelles enregistrées dans l'historique de contexte et met à jour les patrons enregistrés. Cependant, dans le cadre de ces travaux, ces auteurs ne proposent aucune implémentation spécifique pour ce module d’apprentissage. Seules les conditions requises pour celui-ci sont indiquées, notamment Systèmes(d’Information(Pervasifs(et(l’orientation(service 84 l'interface spécifiée par l'historique de contexte et le langage de description des règles, représentant les patrons. 3.5.3.1.3. L’approche SCP Meiners et al. (Meiners et al., 2010) proposent une approche de prédiction de contexte nommée SCP (Structured Context Prediction). Celle-ci est basée sur deux principes clés. Le premier repose sur l’utilisation des connaissances du domaine d'application que les développeurs peuvent intégrer au moment du design. Ces connaissances sont décrites selon un modèle de prédiction qui spécifie la manière dont les prédictions doivent être exécutées et qui configure le système de prédiction. Le deuxième principe expose l’application de plusieurs méthodes de prédiction, qui sont échangeables. Ces méthodes sont proposées afin d’assurer l'exactitude et l'efficacité des prédictions spécifiques à un domaine. Elles peuvent être choisies et combinées par les développeurs d'applications. D’après (Meiners et al., 2010), le modèle de prédiction attribue une méthode pour chaque variable afin de prédire sa valeur. La méthode utilise comme entrée les valeurs d'autres variables qui sont soit prédites par leurs propres méthodes, soit connues (mesurables par des capteurs). Figure 20. Architecture du système de prédiction selon l'approche SCP (d’après (Meiners et al., 2010)) De plus, ces auteurs proposent une architecture pour un système de prédiction qui peut être utilisé comme un composant réutilisable par des applications sensibles au contexte. Cette architecture, comme l’illustre la Figure 20, se base sur quatre éléments principaux. Le premier représente le composant de connaissances, lequel contient les connaissances sur les relations, les caractéristiques et les régularités qui déterminent le contexte. Ce composant est constitué d’un modèle de prédiction et des instances de données. Ensuite, cette architecture comporte le composant d'acquisition de données qui se charge d'acquérir des données de contexte. Un troisième composant, celui de l'apprentissage, obtient régulièrement des données de contexte du composant d'acquisition et les affecte aux méthodes de prédictions comme des données d'apprentissage. Ensuite, ce composant crée et met à jour les connaissances en utilisant les Application Apprentissage Prediction Connaissance Acquisition de données Instance de données Modèle de prediction methode methode methode Modèle de prédiction ... Développeurs d'application données de contexte relation d'utilisation lire / stocker / transmettre flux de données de contexte Systeme de prédictionSystèmes(d’Information(Pervasifs(et(l’orientation(service 85 résultats de l’exécution de ces méthodes. Le dernier composant représente celui de la prédiction. Il utilise les connaissances acquises pour la prédiction effectuée sur demande. Ce composant repose sur un algorithme proposé par (Meiners et al., 2010) qui se charge de coordonner l’ensemble de méthodes. Cet algorithme est inspiré de l’algorithme « Stochastic Simulation » (Jensen, 2001) initialement développé pour les réseaux bayésiens. 3.5.3.2. Systèmes de recommandation centrés sur le contexte Dans le cadre de la prédiction de services, nous avons souligné, à travers la littérature, des contributions dans le domaine de la recommandation de services. Ces contributions sont similaires aux approches de prédiction puisqu’elles cherchent à proposer les prochains services qui peuvent intéresser l’utilisateur et répondre à son besoin futur. 3.5.3.2.1. L’approche proposée par Abbar et al. Abbar et al. (Abbar et al., 2009) fournissent une approche, dans laquelle les services sont recommandés sur la base des fichiers log de l'utilisateur et de son contexte courant. Ces auteurs proposent un système de recommandation sensible au contexte nommé CARS – (Context-Aware Recommender System), qui se base sur le profil de l’utilisateur et sur son contexte. Cette approche utilise une architecture, sur laquelle un ensemble de concepts génériques (profil de l’utilisateur, utilisateur actif, contexte, contexte actif, profil contextualisé et profil opérationnel) et de services de personnalisation (découverte de services, contextualisation des services, service de liaison, service de mise en correspondance) sont déployés afin de rendre une application sensible au contexte. Figure 21. Architecture du système de recommandation sensible au contexte (d’après (Abbar et al., 2009)) Cette architecture, comme l’illustre la Figure 21, se répartie en deux processus. Le premier est le processus d’acquisition de la connaissance qui se charge d’acquérir et de gérer les connaissances (profil de l’utilisateur, description du contenu et du contexte) dont CARS a Profils Profils Contextualisés Contenu Liste Recommandations Logs/ Feedbacks Acquis. Profil Contextualisation Acquis. Contexte Acquis. Contenu Moteur de Recommandation Processus de Recommandation Personnalisée Processus d'Acquisition de Connaissances ContexteSystèmes(d’Information(Pervasifs(et(l’orientation(service 86 besoin pour la recommandation des services. Dans ce processus, l’acquisition de contexte se base sur les logs contenant un ensemble d’enregistrements lesquels contiennent à leur tour les informations contextuelles (date, temps, dispositif, etc.). Ces enregistrements sont regroupés en un ensemble de clusters qui représentent le contexte régulier. Ce processus utilise d’abord l’algorithme « Agglomerative Hierarchical Clustering » (AHC) pour estimer le nombre de clusters. Le nombre de clusters retrouvés ainsi que les enregistrements représentent, par la suite, l’entrée de l’algorithme « K-means » utilisée pour déterminer les clusters. De plus, ce processus inclut une étape de contextualisation du profil de l’utilisateur laquelle se charge de découvrir les relations entre les éléments de contexte et les profils de l’utilisateur. Le deuxième processus représente le processus de recommandation personnalisée proprement parlé. Le moteur de recommandation accepte comme entrée le profil contextualisé de l’utilisateur ainsi que son contexte courant. Au cours de ce processus, un algorithme appelé « Top Contextual K Neighbors » est appliqué afin de déterminer un nombre « K » d’utilisateurs qui sont les plus similaires à l’utilisateur actif par rapport à son profil. Ensuite, dès que les K plus proches des voisins sont déterminés, les classements attribués aux éléments à recommander sont agrégés. Le résultat d’agrégation permet de décider s’il est pertinent ou pas de recommander un certain item représentant le service à recommander à l’utilisateur. Comme pour les autres approches de prédiction de contexte, cette approche nécessite, afin de sélectionner et de recommander des services, des données historiques (log), qui ne sont pas toujours disponibles. En effet, elle a besoin d’une première phase de collecte afin d’obtenir suffisamment de données qui vont être traitées par la suite. De ce fait, les premières recommandations de services peuvent être biaisées et surtout peuvent ne pas intéresser l’utilisateur puisqu’elles ne sont pas déduites à partir de ses habitudes. 3.5.3.2.2. Approche proposée par Xiao et al. A l’encontre de l’approche précédente, l’approche proposée par (Xiao et al., 2010) propose une procédure de recommandation de services sans compter sur des fichiers logs. Ces auteurs (Xiao et al., 2010) proposent une approche qui détermine dynamiquement un modèle de contexte. Ce modèle gère divers types et valeurs contextuels, et recommande ensuite des services en utilisant ces informations. Cette approche utilise les ontologies pour améliorer la sémantique des valeurs de contexte associées à un utilisateur et identifie automatiquement les relations entre ces différentes valeurs. Ces auteurs se basent sur les relations entre les valeurs de contexte afin de trouver les services potentiels dont l'utilisateur pourrait avoir besoin. Une relation définit la façon dont les classes ou les individus peuvent être associés entre eux dans une ontologie. Elle peut être soit une relation prédéfinie par l’ontologie (subclass, partOf, complement ou equivalence), soit une relation spécifique représentée par les propriétés de l’ontologie. Au lieu de définir manuellement les règles de type si-alors en utilisant des types de contexte spécifiques ou des valeurs prédéfinies, cette approche utilise les relations entre les valeurs de contexte afin de déduire le contexte dans lequel émerge les besoins des utilisateurs. Systèmes(d’Information(Pervasifs(et(l’orientation(service 87 La Figure 22 présente un aperçu de cette approche. Pour identifier les relations, une recherche des ontologies disponibles pour étendre la sémantique des valeurs de contexte est effectuée. Les relations identifiées sont utilisées afin de découvrir le contexte dans lequel les besoins des utilisateurs sont exprimés. Ceci conduit à la génération des critères de recherche des services correspondants. Ces critères sont utilisés à leur tour pour la recherche de nouveaux services, permettant au système de recommander ces services aux utilisateurs. Figure 22. Les étapes de l'approche de recommandation de services sensibles au contexte (Xiao et al., 2010) Les relations de contexte sont de deux types, les relations entre deux valeurs de contexte et les relations entre multiples valeurs. Les relations entre deux valeurs de contexte identifient deux entités appartenant à des ontologies différentes, en se basant sur la similarité entre elles. Cette similarité peut être entre deux propriétés atomiques (si elles ont le même nom et la même valeur de propriété), ou entre deux classes ou deux propriétés non atomiques (si elles ont le même nom ou n’importe quelle propriété définie dans l’une est similaire à une propriété dans l’autre). En se basant sur cette similarité, quatre relations peuvent être identifiées entre deux valeurs de contexte, à savoir : intersection, complémentaire, équivalence et indépendance. Les relations entre multiples valeurs de contexte sont décrites à l’aide du modèle E-R (Entity Relationship). Pour chaque relation entre deux valeurs, les valeurs sont converties en entités du modèle et les types de relations en nœuds de relation dans le modèle. Concernant la génération des critères de recherche, cette approche définie des règles génériques pour inférer les besoins des utilisateurs à partir du modèle E-R. Ensuite, elle extrait les critères de recherche (mots clés) de la description des besoins des utilisateurs pour rechercher les services à recommander. 3.6. CONCLUSION ET CONSIDERATIONS FINALES Dans ce deuxième chapitre de l’état de l’art, nous avons introduit la notion de service. Ces services se caractérisent essentiellement par leur indépendance par rapport aux aspects technologiques et à leur implémentation et ont été conçue principalement pour répondre à des besoins de réutilisation et d’interopérabilité (Papazoglou et Georgakopoulos, 2003). Dans le cadre des systèmes sensibles au contexte, multiples travaux (Maamar et al., 2006) (Baldauf et al., 2007) (Toninelli et al., 2008) (Preuveneers et al., 2009) démontrent l’intérêt de la notion de service pour l’adaptabilité d’un système. La notion de service permet ici de masquer l’hétérogénéité technologique des environnements pervasifs. Ainsi, l’orientation service permet ainsi de répondre au besoin de gestion de l’hétérogénéité des SIP et notamment des actions que ces systèmes pourront proposer pour satisfaire les besoins des utilisateurs. Types & Valeurs de contexte Services Ontologies Services Détecter contexte Recherche ontologies Identifier relations contexte Recherche services Calculer critères de recherche de servicesSystèmes(d’Information(Pervasifs(et(l’orientation(service 88 Nous avons également souligné un ensemble de challenges auxquels les SIP orientés services doivent faire face. Ces challenges représentent les éléments clés pour la construction d’un SIP proactifs et réactifs aux changements de l’environnement et aux besoins des utilisateurs. Nous nous sommes ainsi focalisés sur d’eux d’entre eux, à savoir la découverte et la prédiction de services. Nous avons ainsi exposé une multitude d’approches de découverte et de prédiction de services. Avec l’apparition du Web sémantique, différentes approches de découverte de services sémantiques, telles que (Paolucci et al., 2002) (Sycara et al., 2003) (Klusch et al., 2009), ont été proposées. Celles-ci, même si elles sont prometteuses, demeurent assez limitées quant à son emploi dans le cadre d’un environnement pervasif et donc dans les SIP. En effet, ces approches se limitent aux capacités des services en termes d’entrée et de sortie et ne prennent pas en considération le caractère dynamique de l’environnement par la prise en compte de l’information contextuelle. De plus, elles ne tiennent pas compte du besoin réel de l’utilisateur derrière sa demande d’un service. Les approches suivantes même si elles sont différentes, représentent une évolution des SI vers des SI centrés utilisateur, soit par une approche intentionnelle (Mirbel et Crescenzo, 2010b) (Aljoumaa et al., 2011) (Olsson et al., 2011), soit par une approche contextuelle (Suraci et al., 2007) (Toninelli et al., 2008) (Vanrompay et al., 2011). Cependant, les approches sensibles au contexte requièrent des connaissances techniques complexes de l’utilisateur s’il veut comprendre le choix suggéré, alors que normalement ces utilisateurs demandent simplement un service qui répond à leurs besoins. Cette problématique, est évoquée par les approches intentionnelles. Celles-ci focalisent sur les besoins des utilisateurs décrits sous forme d’intention. Toutefois, la satisfaction de ces intentions par les services peut varier selon le contexte dans lequel se situe l’utilisateur. Ces approches ne prennent pas en considération cet aspect, ce qui peut nuire au résultat proposé à l’utilisateur en lui offrant un service mal adapté à son contexte d’usage. Nous pensons que ces approches sont en réalité complémentaires, et qu’une telle évolution ne peut être atteinte véritablement que par la combinaison de ces deux approches. À notre avis, seulement un mécanisme de découverte de services basé à la fois sur le contexte et sur l'intention de l'utilisateur est en mesure de répondre à des questions telles que « pourquoi un service est utile dans un contexte donné ? » ou « dans quelles circonstances émerge le besoin d'un service ? ». Cette vision a commencé à se développer dans la littérature. Quelques auteurs, dont (Santos et al., 2009) (Ramadour et Fakhri, 2011) (Ma et al., 2011), proposent déjà d’associer ces deux notions lors de la découverte et de la composition de services. Cependant, pour beaucoup d’entre eux, cette association reste assez floue. Le contexte reste souvent confiné à un rôle de filtre pour la découverte de services, étant présenté comme une partie des entrées nécessaires aux services, alors que les intentions sont vues comme de simples étiquettes permettant de relier les demandes des utilisateurs aux services. Nous croyons, au contraire, que le contexte ne peut être réduit à de simples paramètres d’entrées ou de sorties. Non seulement il influence l’exécution du service, mais il caractérise le service luimême et les intentions affichées par le service. Systèmes(d’Information(Pervasifs(et(l’orientation(service 89 Selon notre analyse, aucun des travaux cités ne propose un mécanisme de découverte de services qui combine et exploite réellement le contexte et l'intention. Un tel mécanisme de découverte de services est essentiel dans le cadre d’un SIP transparent et centrée utilisateur, lequel doit se caractériser par son adaptabilité au contexte et sa compréhension de l’utilisateur et de ses besoins. Le même constat peut être fait pour les mécanismes de prédiction de services. Nous avons souligné deux familles d’approches intéressantes, à savoir les approches de prédiction de contexte et les approches de recommandation de services. Les approches de prédiction de contexte dans les environnements pervasifs, tels que (Mayrhofer, 2004) (Sigg, 2008) (Meiners et al., 2010), tentent de prédire le prochain contexte de l'utilisateur en fonction de son contexte courant et de son historique. Tous ces auteurs proposent des architectures et des méthodes intéressantes qui assurent la prédiction de contexte de haut et de bas niveau. Cependant, aucun de ces travaux n’associent à ce contexte les services ou les activités qu'un utilisateur invoque. Ils se focalisent uniquement sur la prédiction de contexte suivant ou la prédiction de la continuité de celui-ci, sans pour autant souligner comment ce contexte prédit est utilisé pour découvrir ou prédire le service. A l’opposé les approches de recommandation de services selon le contexte, tels que (Abbar et al., 2009) et (Xiao et al., 2010), proposent des mécanismes pour recommander le service suivant selon le contexte de l’utilisateur. La plupart de ces approches tiennent compte uniquement des informations contextuelles, sans prendre en considération les besoins réels de l'utilisateur derrière un service, c'est-à-dire, de ses objectifs. Ils proposent une mise en œuvre à l'utilisateur, en ignorant pourquoi celle-ci est nécessaire. Aujourd'hui, un enjeu important dans le domaine des SIP est de se positionner au niveau de l'utilisateur et de prendre en considération sa mobilité et la dynamique de l’environnement qui l’entoure. Les approches que nous avons présentées, que ce soit la découverte ou la prédiction de services, n’exploitent pas vraiment l’étroite relation entre la notion d’intention, qui représente le besoin de l’utilisateur, et la notion de contexte. En conséquence, plusieurs possibilités sont offertes à l'utilisateur, qui n’est pas toujours en mesure de les utiliser proprement, ni de comprendre ce qui lui est proposé. Afin de répondre aux exigences des SIP, il nous semble nécessaire de concevoir et de développer des mécanismes de découverte et de prédiction de services qui doivent être guidés à la fois par le contexte et par l’intention. Vision(intentionnelle(et(contextuelle(des(Systèmes(d’Information(Pervasifs 90 Chapitre 4. VISION INTENTIONNELLE ET CONTEXTUELLE DES SYSTEMES D’ INFORMATION PERVASIFS 4.1. INTRODUCTION Après une analyse de la littérature (cf. Chapitre 2 et Chapitre 3), nous pouvons constater que les SI traditionnels ne sont plus adaptés à l’environnement pervasif dans lequel évolue l’utilisateur actuellement. Aucun des éléments caractérisant un environnement pervasif (hétérogénéité, dynamisme, etc.) n’est particulièrement pris en compte dans ces systèmes, conçus pour les environnements de bureau stables et contrôlés. Ceci à fait apparaître une nouvelle génération des SI, les Systèmes d’Information Pervasifs. Nous proposons dans cette thèse une nouvelle vision intentionnelle et contextuelle pour la gestion de ces nouveaux Systèmes d'Information Pervasifs orientés services. Cette vision répond aux problématiques de transparence, d’adaptation à l’environnement et d’adaptation aux utilisateurs relevés dans le premier chapitre (cf. section 1.2). Notre vision est centrée utilisateur, qui devient le centre des nouveaux Systèmes d'Information Pervasifs. Ce chapitre rappelle notre contexte de recherche, à savoir les SIP, et notre problématique de départ, laquelle a conduit à notre proposition d’une vision intentionnelle et contextuelle des SIP. Nous présentons ensuite un aperçu détaillé de la solution répondant à la problématique et la mise en place des hypothèses en pratique. 4.2. RAPPEL DU CONTEXTE DE RECHERCHE ET DE LA PROBLEMATIQUE Dans cette section, nous rappelons notre contexte de recherche et la problématique qui a conduit à notre proposition (cf. Chapitre 1). 4.2.1. Contexte de recherche Comme nous l’avons présenté dans le Chapitre 2, l’Informatique Pervasive est devenue une réalité grâce à l'intégration transparente de plusieurs périphériques dans notre vie quotidienne. Les nouvelles technologies ont élargi les frontières des Systèmes d'Information (SI) en dehors de l'environnement des entreprises. Le BYOD (Bring Your Own Device) illustre assez bien cette tendance : les employés apportent leurs propres dispositifs au bureau et continuent à les utiliser pour accéder au SI, même quand ils sont en déplacement. La conséquence de cette évolution technologique est que les SI doivent maintenant faire face à un environnement pervasif, et à l'avenir, intégrer des éléments physiques ainsi que logiques et Vision(intentionnelle(et(contextuelle(des(Systèmes(d’Information(Pervasifs 91 organisationnels. Par ailleurs, dans les dernières années, les SI ont massivement adoptés une approche basée sur les services, devenant ainsi des systèmes orientés services exposant ses fonctionnalités en tant que services. Ainsi, émerge une nouvelle génération de Systèmes d'Information, appelée les Systèmes d'Information Pervasifs (SIP). Les SIP ont l'intention d’améliorer la productivité de l'utilisateur en permettant aux services d’un SI d’être disponibles à tout moment et à n’importe quel endroit. Ces systèmes déplacent le paradigme d'interaction de l'informatique de bureau aux nouvelles technologies, passant d'un environnement entièrement contrôlé (le bureau) vers un environnement pervasif hautement dynamique. 4.2.2.Problématique Les Systèmes d'Information Pervasifs doivent faire face à des environnements pervasifs, sans laisser derrière le fait qu'ils demeurent des Systèmes d'Information. Les SIP doivent faire face à l'hétérogénéité qui caractérise les environnements pervasifs. La transparence est donc nécessaire afin de cacher aux utilisateurs cette hétérogénéité des dispositifs, des infrastructures et des services. Cette transparence est d'autant plus nécessaire en raison du rôle central que jouent les SI dans les entreprises. Ces systèmes sont conçus pour aider les utilisateurs à atteindre des objectifs métiers bien précis. Par conséquent, lors de l’utilisation de tels systèmes, les utilisateurs doivent se concentrer sur leurs propres tâches/activités et non sur la technologie elle-même. Sans transparence, tout Système d'Information Pervasif ne sera pas en mesure de remplir avec succès son rôle de SI. Au cours de la dernière décennie, beaucoup de recherches ont été effectuées sur les systèmes et principalement sur les services sensibles au contexte (Maamar et al., 2006) (Toninelli et al., 2008) (Vanrompay et al., 2011) (Bronsted et al., 2010) (Truong et Dustdar, 2009). Ces travaux de recherche proposent un comportement sensible au contexte pour la découverte et la composition de services. La sensibilité au contexte devient un élément clé pour soutenir de tels environnements pervasifs. Ainsi, les Systèmes d'Information Pervasifs devraient fournir des capacités de sensibilité au contexte afin de faire face aux changements dynamiques de l'environnement et d’améliorer l'efficacité de l'utilisateur. Néanmoins, les SIP, contrairement aux systèmes pervasifs, doivent aussi se comporter comme des Systèmes d'Information traditionnels, gérant les services en fonction de l'utilisateur et des objectifs métiers. Les SIP représentent la prochaine génération des SI et ils doivent aussi faire face à ce rôle de SI. En raison de leur rôle stratégique, les SIP ne peuvent pas être conçus comme des systèmes pervasifs « normaux ». Les SIP doivent être « contrôlables » et « maîtrisables ». En d'autres termes, ils doivent être gérés et contrôlés par la Direction des Systèmes d’Information (DSI), puisqu’une exposition inappropriée d'un service interne peut avoir des conséquences importantes pour l'activité de l'entreprise. Ainsi, les comportements exploratoires et opportunistes, tels que ceux proposés par (Preuveneers et Berbers, 2010) et (Khan, 2010) ne peuvent pas être pleinement acceptés par la DSI. Ils représentent un risque pour le SI vu le rôle qu’il joue dans l’entreprise. Vision(intentionnelle(et(contextuelle(des(Systèmes(d’Information(Pervasifs 92 La conception des Systèmes d'Information Pervasifs qui réponde aux exigences des SI et des systèmes pervasifs est un défi. Les SIP sont censés être conçus pour améliorer l'efficacité de l'utilisateur en tenant compte de l’environnement pervasif dans lequel l'utilisateur émerge. Pour réussir, les SIP doivent tirer profit des opportunités offertes par les environnements pervasifs, et notamment la mobilité de l'utilisateur, tout en offrant aux utilisateurs des services du Système d'Information de manière transparente. Les SIP doivent être conçus afin de fournir les services les plus appropriés que les utilisateurs ont besoin pour satisfaire leurs objectifs dans leur situation courante. Pour récapituler, nous résumons notre problématique à un problème de conception et de réalisation d’un SIP transparent, s’adaptant à l’environnement (sensibilité au contexte) et à l’utilisateur (prise en compte des intentions et de la mobilité de l’utilisateur). A l’heure actuelle, il existe peu de modèles ou de méthodes permettant aux concepteurs et aux développeurs de prendre en compte ces besoins lors de la conception d’un SIP. Ainsi, nous avons privilégié l’axe conceptualisation du système à développer pour élaborer notre solution, à l’instar de Mathieu Petit (Petit, 2010), qui propose un cadre conceptuel pour les Systèmes d’Information mobiles et distribués (cf. section 3.5.2.2.5) exploitant des modèles géographiques. La cible du système à développer, dans notre cas, ne prend pas en considération uniquement l’aspect géographique mais s’étend plus généralement à l’adaptation à l’environnement et à l’utilisateur. 4.3. APERÇU DE LA SOLUTION La conception de Systèmes d'Information Pervasifs est un défi pour lequel la DSI n’a aucune aide. Nous soutenons que l'utilisateur doit être au centre de cette nouvelle génération de Systèmes d'Information, étant donné que ces systèmes doivent être conçus pour aider l’utilisateur à mieux satisfaire ses objectifs en fonction de l'environnement dans lequel il se trouve. En outre, cette vision devrait examiner tous les aspects des nouveaux SIP : leur besoin de transparence, l'hétérogénéité et la dynamique des environnements pervasifs, ainsi que les intentions qu'ils doivent satisfaire à partir du point de vue SI. Ainsi, nous proposons notre vision des Systèmes d’Information Pervasifs. Après notre analyse de la littérature dans le Chapitre 2 et Chapitre 3, nous avons constaté que l’orientation service, la sensibilité au contexte, ainsi que l’approche intentionnelle représentent des approches très prometteuses à prendre en considération afin de concevoir un SIP transparent, non intrusif et compréhensible à l’utilisateur. Ces approches représentent des solutions pour résoudre les problèmes que nous avons soulevés ci-dessus. Les prochaines sections résument notre vision intentionnelle et contextuelle des SIP et les différents éléments composant notre solution. Vision(intentionnelle(et(contextuelle(des(Systèmes(d’Information(Pervasifs 93 4.3.1. Notre vision intentionnelle et contextuelle des SIP : couplage entre services, contexte et intention Notre vision des Système d’Information Pervasif est basée sur les notions d’intention, de contexte et de services. Elle représente notre solution pour répondre à la problématique de recherche soulevée et pour mettre en place les hypothèses, énumérées dans la section 1.3, en pratique. Cette solution représente une vision centrée sur l’utilisateur des SIP. Elle permet, d’une part, de se focaliser plus sur les besoins réels des utilisateurs à travers une approche intentionnelle, assurant ainsi une meilleure compréhension du système des objectifs de l’utilisateur derrière sa demande de services. Elle permet, d’autre part, de gérer l’hétérogénéité et la dynamique de l’environnement pervasif à travers une approche contextuelle. En effet, nous considérons les SIP et leurs éléments à la fois sous l’angle des SI et celui des environnements pervasifs, en observant leurs besoins respectifs de contrôle, d’intentionnalité et de sensibilité au contexte. Ceci est dans la perspective d’assurer la transparence nécessaire pour la conception d’un SIP. Notre vision se caractérise par son orientation service. Selon notre analyse de l’état de l’art (cf. section Chapitre 3), nous avons soulevé la caractéristique principale de la notion de service, à savoir son indépendance par rapport aux aspects technologiques et à leur implémentation. Ainsi, une orientation service va permettre de répondre au besoin de gestion de l’hétérogénéité technique de l’environnement dans lequel évoluent les SIP et des actions que le système propose afin de satisfaire les besoins des utilisateurs. Dans notre vision, la notion de service permet de masquer l’hétérogénéité technologique des environnements pervasifs. Le concept « service » a été conçu pour répondre à des besoins de réutilisation et d’interopérabilité (Papazoglou et Georgakopoulos, 2003). Ses multiples usages dans les systèmes sensibles au contexte (cf. section Chapitre 3) démontrent également l’intérêt de la notion de service pour l’adaptabilité d’un système. De plus, afin de mieux gérer l’hétérogénéité et la dynamique qui caractérisent l’environnement pervasif, notre vision se base sur une orientation contexte. Ceci va permettre d’adapter les SIP au contexte de l’utilisateur et à l’environnement. A partir de notre analyse de la littérature, nous avons soulevé le rôle central que joue cette notion de contexte dans les systèmes sensibles au contexte (cf. Chapitre 2). Notre approche présente les SIP comme des systèmes sensibles au contexte, qui s’adaptent aux changements sans pour autant demander à l’utilisateur de s’adapter lui-même à l’environnement. Enfin, et dans la perspective de répondre au mieux aux exigences des utilisateurs et de se situer à leur niveau, notre vision des SIP est orientée intention. Ainsi, les SIP peuvent, d’une part, mieux comprendre les besoins des utilisateurs, et d’autre part, répondre d’une façon plus appropriée à ces besoins. Comme nous l’avons présentée dans la littérature (cf. section 3.4.3.1), la notion d’intention formalise, en général, les besoins de l’utilisateur. Une intention peut être considérée comme le but que nous voulons atteindre sans dire comment l'exécuter (Kaabi et Souveyet, 2007). Dans le cadre de notre vision, la notion d’intention est nécessaire afin que le système puisse mieux comprendre les besoins des utilisateurs et donc de répondre Vision(intentionnelle(et(contextuelle(des(Systèmes(d’Information(Pervasifs 94 à ses besoins de la manière la plus appropriée. En effet, l'approche intentionnelle nous permet de considérer le service du point de vue des exigences de l'utilisateur, en se concentrant sur pourquoi un service est nécessaire, et pas seulement sur comment il est exécuté. En fait, nous considérons que l'utilisateur ne nécessite pas un service uniquement parce qu'il est dans un contexte donné. Il requiert un service parce qu'il a une intention qu'un service peut satisfaire dans ce contexte d’usage (Najar et al., 2012a). Figure 23. Contexte et intention dans l'orientation service Par ailleurs, nous considérons que l’intention de l’utilisateur émerge dans un contexte donné et que ses réalisations ne sont valides que dans un contexte d’utilisation bien défini. Dans ce cadre, la notion de contexte représente un élément important dans le processus d'adaptation d’un système à l'utilisateur et à l’environnement, auquel nous souhaitons ajouter la notion d’intention. Ainsi, nous exploitons, dans notre vision des SIP, l’étroite relation entre les notions d’intention, de contexte et de service, illustrée à la Figure 23. Nous considérons que la satisfaction des intentions de l'utilisateur dans un SIP dépend du contexte dans lequel se trouve cet utilisateur. Pour nous, le contexte impacte directement la manière de satisfaire les intentions, et ainsi le choix des services qui seront exécutés. Ainsi, en combinant les approches intentionnelles et contextuelles dans une orientation service et en exploitant la relation qui les lie, nous proposons une nouvelle vision centrée utilisateur d’un SIP transparent, non intrusif et compréhensible à l’utilisateur. Nous proposons, par la suite, des solutions pour mettre en œuvre cette vision intentionnelle et contextuelle des SIP centrés utilisateur. 4.3.2.Solution globale : de la conception à la mise en œuvre d’un SIP transparent et centré utilisateurNous proposons, dans le cadre de cette thèse, une solution globale pour mettre en place notre vision intentionnelle et contextuelle des SIP orientés services. Nous proposons celle-ci dans la perspective d’aider la DSI à concevoir un SIP transparent et centrée utilisateur. Nous commençons par introduire un cadre conceptuel des SIP appelé « espace de services » (cf. Chapitre 5) afin de conceptualiser le SIP et ses différents éléments. Nous proposons ensuite une architecture de gestionnaire de SIP (cf. Chapitre 9) qui interagit avec l’espace de services afin d’assurer les fonctionnalités de découverte (cf. Chapitre 7) et de prédiction (cf. Chapitre 8) des services pour l’utilisateur. Finalement, nous proposons une démarche méthodologique Vision(intentionnelle(et(contextuelle(des(Systèmes(d’Information(Pervasifs 95 de conception et de réalisation d’un SIP qui supporte le passage du cadre conceptuel vers les descriptions de services à l’intérieur du système. Figure 24. Vision intentionnelle et contextuelle des Systèmes d'Information Pervasifs Nous proposons ainsi de présenter, comme l’illustre la Figure 24, notre solution globale selon quatre dimensions différentes : conceptuelle, fonctionnelle, système et support. Nous détaillons, dans les sections suivantes, chacune de ses dimensions. 4.3.2.1. Dimension conceptuelle : cadre conceptuel des SIP nommé « Espace de services » Dans cette thèse, nous soutenons que la conception d’un SIP est devenue un problème difficile à gérer, en raison notamment de l’immersion des fonctionnalités d’un SIP dans un environnement pervasif. Il nous faut donc un cadre conceptuel permettant de masquer l’hétérogénéité de cet environnement et de spécifier les fonctionnalités qui seront proposées par le SIP et sous quelles conditions, et ceci de manière indépendante des technologies. La notion d’espace de services que nous proposons (cf. Chapitre 5) s’attaque à cette question. Dans un espace de services s’intègrent, de manière transparente, l’ensemble des services offerts par le SI traditionnel (services logiques) et ceux offerts par l’environnement physique, grâce à l’intégration de différentes technologies dans cet environnement (services physiques), ainsi qu’un ensemble de capteurs qui renseignent l’utilisateur et le système sur cet environnement. La notion d’espace de services est un outil conceptuel permettant de gérer l’hétérogénéité des environnements pervasifs et des SIP déployés sur ces environnements, ce qui offre aux concepteurs des SIP les moyens d’analyser de manière abstraite l’interaction entre un utilisateur et le système. Ce cadre conceptuel vise à aider le concepteur à identifier les descriptions des services que l’utilisateur a besoin dans son SIP. Cet espace de services représente la partie générique de cette dimension conceptuelle puisqu’il représente un cadre conceptuel indépendant de la mise en œuvre des SIP et donc des modèles de contexte et des approches de services choisis pour son implémentation. Toutefois, Vision intentionnelle et contextuelle des SIP Dimension Fonctionnelle (2) Découverte de services & Prédiction de services Dimension Support (4) Dimension Conceptuelle (1) Espace de Services Dimension Système (3) Architecture de gestionnaire des SIP Démarche Méthodologique de conception d'un SIP - Ontologie multi-niveaux de contexte - OWL-SICVision(intentionnelle(et(contextuelle(des(Systèmes(d’Information(Pervasifs 96 cette dimension conceptuelle intègre une partie spécifique nécessaire pour mettre en place notre vision intentionnelle et contextuelle des SIP. Nous proposons ainsi de décrire sémantiquement, selon cet espace de services, les services en incluant ces informations intentionnelles et contextuelles. L’objectif ici est de proposer des services de haut niveau, permettant de cacher la complexité technique de l’environnement due, entre autres, aux différentes technologies et services proposés. Ces services sont décrits selon le contexte dans lequel ils s’adaptent au mieux et les intentions qu’ils peuvent satisfaire. Ceci est basé sur une extension de OWL-S nommée OWL-SIC (OWL-S Intentional & Contextual) (cf. Chapitre 6). De plus, nous proposons dans ce cadre conceptuel de modéliser sémantiquement les informations contextuelles relatives aux éléments de l’espace de services et à l’utilisateur. Nous proposons une ontologie multi-niveaux de contexte (cf. section 6.4.1). L’espace de services est présenté plus en détails, dans le cadre du Chapitre 5 qui illustre une conceptualisation de cet espace à travers la formalisation de ses différents éléments, services et capteurs de contexte, et la présentation de ses différentes caractéristiques, dynamisme et perméabilité. 4.3.2.2. Dimension fonctionnelle : Découverte et prédiction de services selon l’intention et le contexte Un utilisateur interagit avec son SIP à travers l’espace de services. Il souhaite, dans le cadre d’un SIP, avoir des services qui répondent à ses besoins dans un contexte donné et en toute transparence. Ainsi, l’utilisateur expose son besoin au système, qui se charge de lui proposer des services en réponse à ce besoin et éventuellement à des besoins futurs (subséquents au besoin présent). Les services proposés sont sélectionnés comme étant ceux qui répondent au mieux à ses intentions dans son contexte courant et ceux considérés comme les plus appropriés en fonction de l’usage de l’utilisateur. L’intention de l’utilisateur est valable dans un contexte donné tout comme le contexte influence la satisfaction de cette intention. Nous pensons, ainsi, que les deux approches, sensibles au contexte et intentionnelles, sont complémentaires et ne doivent pas être isolées les unes des autres. Nous pensons que, en tenant compte de ces deux aspects dans le cadre d’un SIP orienté services, il est possible de proposer à l’utilisateur des services qui peuvent mieux satisfaire ses intentions dans son contexte courant, renforçant ainsi la transparence du SIP. Cela peut être fait par la proposition de nouveaux mécanismes de découverte de services qui adoptent cette approche duale (intentionnelle et sensible au contexte), mais aussi par la proposition de nouveaux mécanismes de prédiction qui ont l'intention d'anticiper les besoins de l'utilisateur en fonction de ses intentions antérieures sur des contextes similaires. Aujourd'hui, un enjeu important dans le domaine des SIP est de se positionner au niveau de l'utilisateur et de prendre en considération sa mobilité et le dynamisme de l’environnement qui l’entoure, sans pour autant perdre les moyens en termes de maîtrise et de contrôle. Ainsi, après une analyse de la littérature, nous avons constaté également que parmi les importants challenges des SIP, la découverte et la prédiction dynamique des services représentent deux Vision(intentionnelle(et(contextuelle(des(Systèmes(d’Information(Pervasifs 97 mécanismes permettant de satisfaire les besoins de l’utilisateur en lui offrant le service le plus approprié assurant ainsi la dynamique et la pro-activité des SIP. Toutefois, aucune des approches étudiées, par exemple (Toninelli et al., 2008)(Vanrompay et al., 2011)(Mirbel et Crescenzo, 2010a)(Olsson et al., 2011)(Santos et al., 2009)(Ramadour et Fakhri, 2011), n’exploite réellement l’étroite relation entre les approches intentionnelles et contextuelles. En conséquence, plusieurs possibilités sont offertes à l'utilisateur, qui n’est pas toujours en mesure de comprendre ce qui lui est proposé. Selon notre étude de l’état de l’art, aucun des travaux analysés dans la section 3.5.2 ne propose un mécanisme de découverte de services qui combine et exploite réellement le contexte et l'intention. Un tel mécanisme de découverte de service guidé par le contexte et l’intention est nécessaire dans le cadre d’un SIP transparent et centrée utilisateur, et qui se caractérise par son adaptabilité au contexte et sa compréhension des besoins réels de l’utilisateur et de ses besoins. À notre avis, seulement un mécanisme de découverte de services basé à la fois sur le contexte et sur l'intention de l'utilisateur est en mesure de répondre à des questions telles que « pourquoi un service est utile dans un contexte donné ? » ou « dans quelles circonstances émerge le besoin d'un service ? ». Une découverte dynamique des services est un mécanisme essentiel pour les SIP parce qu’il permet de répondre au mieux aux besoins de l’utilisateur. La prise en compte de la notion d’intention dans ce mécanisme permet de bien comprendre le réel besoin derrière la demande de l’utilisateur, appuyant ainsi le caractère centré utilisateur des SIP. De plus, la prise en compte de la notion de contexte, permet à ce mécanisme de découvrir le service qui pourra être réellement exécuté, lors de l’invocation du service, en se basant sur le contexte de l’utilisateur et sur le contexte dans lequel ce service est exécutable, assurant ainsi une meilleure adaptation à l’environnement. Ainsi la découverte de service joue un rôle important dans l’amélioration de la transparence des SIP, en proposant à l’utilisateur le service le plus approprié selon son intention et son contexte courant. Toujours d'après notre analyse de la littérature (cf. section 3.5.3) les approches de prédiction se concentrent plus sur les mécanismes de prédiction de contexte suivant ou de prédiction de la continuité de contexte, sans pour autant souligner comment ce contexte prédit est utilisé pour découvrir et prédire le service suivant, par exemple. De plus, la plupart des systèmes de recommandation qui ont été étudiés se basent uniquement sur les informations contextuelles afin de proposer le service suivant aux utilisateurs, sans pour autant tenir compte des besoins réels de l'utilisateur derrière sa demande du service, c'est-à-dire, de ses objectifs. Ils proposent une certaine réalisation du service à l'utilisateur, tout en ignorant pourquoi ce service est nécessaire. Nous soulevons ainsi le besoin de concevoir de nouveaux mécanismes de prédiction pour les SIP afin d'anticiper les besoins futurs de l'utilisateur en fonction de ses intentions antérieures sur des contextes similaires. Ce mécanisme introduit des techniques de recommandation afin d’augmenter le caractère dynamique et proactif des SIP en suggérant à l’utilisateur, d’une manière transparente, le service le plus approprié qui pourra, par la suite, Vision(intentionnelle(et(contextuelle(des(Systèmes(d’Information(Pervasifs 98 l’intéresser. L’objectif est de mieux comprendre les besoins de l’utilisateur afin de l’aider à y répondre d’une manière non intrusive. Ceci nous permettra d’offrir une meilleure pro-activité du système par la prise en compte de la relation entre la notion de contexte et les intentions, permettant ainsi de contribuer à l’amélioration de la transparence nécessaire des SIP. Ainsi, afin de construire un SIP transparent, centré utilisateur et proactif, il est essentielle de se positionner au niveau de l’utilisateur afin de lui proposer les services les mieux adaptés à son contexte et qui répondent au mieux à ses besoins, ceci en se basant sur des mécanismes de découverte et de prédiction de services guidées par le contexte et l’intention. 4.3.2.3. Dimension système : Architecture de gestionnaire de SIP Pour mettre en place notre vision intentionnelle et contextuelle des SIP conformément à l’espace de services, nous proposons une architecture de gestionnaire de SIP (cf. Chapitre 9) offrant essentiellement des modules de gestion de contexte, de découverte de services et de prédiction de services nécessaires pour l’utilisateur. Cette architecture intègre nos différentes propositions pour la construction d’un SIP transparent et centré utilisateur : • Un gestionnaire de contexte conforme à l’espace de services qui se chargera de l’acquisition des données contextuelles, à travers un ensemble de capteurs, et de la dérivation et de la modélisation de toutes les informations contextuelles des différents éléments de l’espace de services (services et capteurs) et celui de l’utilisateur (cf. section 9.3.2) ; • La mise en œuvre du processus de découverte de services (cf. section 9.3.4), dont l’objectif est de satisfaire au mieux les besoins de l’utilisateur (formulés en termes d’intentions) dans son contexte courant, en lui proposant le service le plus approprié en toute transparence. Cette mise en œuvre se base sur l’implémentation d’un algorithme de mise en correspondance (matching) qui calcul le degré de mise en correspondance entre l’intention et le contexte courant de l’utilisateur et l’ensemble des services sémantiques décrit selon OWL-SIC (cf. Chapitre 6) et disponible dans le répertoire de services sémantique (cf. section 9.3.3) ; • La mise en œuvre du processus de prédiction de services (cf. section 9.3.6), dont l’objectif est d’introduire des techniques de recommandation afin d’augmenter le caractère dynamique de l’architecture en suggérant à l’utilisateur, d’une manière transparente, le service le plus approprié qui pourra, par la suite, l’intéresser. 4.3.2.4. Dimension support : démarche méthodologique de conception des SIP Pour la mise en œuvre et la réalisation de notre vision des SIP et afin de faciliter et d’organiser la conception de l’espace de services, nous proposons une démarche méthodologique de conception à destination des concepteurs des SIP. Cette démarcheVision(intentionnelle(et(contextuelle(des(Systèmes(d’Information(Pervasifs 99 supporte le passage du cadre conceptuel vers la description des services proposés au sein de l'architecture de gestionnaire de SIP. Notre objectif est d’aider la DSI à spécifier les fonctionnalités attendues de leur système, ainsi que les informations contextuelles qui seront capturées par celui-ci pour une meilleure adaptation. Il s’agit d’un processus de conception d’un espace de services et de ses différents éléments dans la perspective de garder le contrôle sur la définition du système et de ses services, tout en permettant la prise en compte d’un environnement hautement dynamique. 4.3.3. Contributions attendues A travers ces différentes propositions, cette thèse vise à contribuer au domaine des SIP à différents niveaux : • Au niveau conceptuel de notre vision d’un SIP : o D’abord par la notion d’espace de services qui constitue un cadre conceptuel indépendant d’une approche spécifique de modélisation de contexte et de services, permettant la spécification des fonctionnalités proposées par un SIP à ses utilisateurs ; o La proposition d’un cadre d’analyse et de comparaison des modèles de contexte. L’objectif est d’aider à la compréhension et à l’analyse de la notion de contexte afin de mieux la représenter et la prendre en charge ; o L’extension de la description sémantique des services OWL-SIC, permettant la prise en considération de l’intention que le service permet d’atteindre et du contexte dans lequel ce service est valide et exécutable, ainsi que ces conditions contextuelles, dans les descriptions des services. • Au niveau de l’implémentation de notre vision d’un SIP : o La définition d’une architecture de gestionnaire de SIP orientée services, intention et contexte. Cette architecture intègre des modules de gestion de contexte, de découverte et de prédiction de services. Ces services, plus précisément leurs descriptions, sont enregistrés dans un répertoire sémantique de services, alors que les traces de leur usage sont enregistrées dans un répertoire de traces ; ! La proposition et le développement d’un processus de découverte de services. Ce processus permet de découvrir et de sélectionner le service le mieux adapté afin de satisfaire le besoin de l’utilisateur dans un contexte donné, tout en masquant la complexité de l’environnement et en assurant une meilleure compréhension de l’utilisateur ; ! La proposition et le développement d’un processus de prédiction de services, permettant de prédire, à partir de l’historique de l’utilisateur et Vision(intentionnelle(et(contextuelle(des(Systèmes(d’Information(Pervasifs 100 à partir de son intention et de son contexte courant, les services répondant à son intention future, avant même de le demander. • Au niveau de la mise en œuvre de notre vision d’un SIP : o La définition d’une démarche méthodologique permettant d’aider les concepteurs à définir leurs espaces de services, le modèle de contexte nécessaire, ainsi que la description sémantique de ces services ; o La proposition d’un cas d’étude permettant d’illustrer le déroulement des différentes étapes de ce travail de thèse et d’évaluer notre proposition. 4.4. CONCLUSION Dans ce chapitre nous avons présenté un aperçu de la solution proposée dans cette thèse. L'objectif auquel doit répondre celle-ci est de concevoir et mettre en place un SIP transparent et centré utilisateur, permettant ainsi à un SI maitrisable d’évoluer dans le cadre d’un environnement pervasif. Pour ce faire, nous avons d'abord introduit une nouvelle vision intentionnelle et contextuelle des SIP. Cette vision présente les SIP orientés services qui exploitent l’étroite relation entre l’intention et le contexte. Cette vision a été concrétisée, par la suite, selon quatre dimensions. La première dimension expose l’aspect conceptuel de notre solution. Nous proposons, dans cette partie, un cadre conceptuel permettant de guider la conception des SIP et de ses différents éléments. La deuxième dimension présente l’aspect fonctionnel de notre vision. Nous proposons dans ce cadre de nouveaux mécanismes de découverte et de prédiction de services répondants mieux aux attentes des utilisateurs selon leurs intentions et contexte. La troisième dimension expose l’aspect architectural de notre solution par la présentation d’une architecture de gestionnaires des SIP. Finalement, la quatrième dimension supporte le passage du cadre conceptuel à la mise en place de cette vision intentionnelle et contextuelle des services, par la proposition d’une démarche méthodologique. Les chapitres suivants de cette thèse détaillent le contenu de cette solution et sont organisés de la façon suivante : • Le Chapitre 5 présente le cadre conceptuel à travers notre notion d’espace de services ; • Le Chapitre 6 explique notre description des services intentionnels et contextuels qui composent notre espace de services, en présentant notre extension de OWL-S ; • Le Chapitre 7 et Chapitre 8 discutent et évaluent nos mécanismes de découverte et de prédiction de services selon l’intention et le contexte ; • Le Chapitre 9 décrit l'architecture de gestionnaire de SIP en présentant les composants essentiels qui la constituent et les interactions possibles entre ses composants ; • Le Chapitre 10 illustre notre démarche méthodologique de conception des SIP et présente un cas pratique d'application de notre approche. Cadre(conceptuel(d’un(SIP :(Espace(de(services 101 Chapitre 5. CADRE CONCEPTUEL D’UN SIP : ESPACE DE SERVICES 5.1. INTRODUCTION Le but d’un Système d’Information Pervasif (SIP) est de rendre accessibles les fonctionnalités offertes par le SI à travers un environnement pervasif. Pour ce faire, les SIP doivent faire face à un certain nombre de problèmes, qu’on a cités dans le Chapitre 4, à savoir le problème de transparence lors de la gestion de l’hétérogénéité des environnements et des services, le problème d’adaptation à l’environnement dynamique tout en gardant la maitrise du SIP et le problème d’adaptation à l’utilisateur afin de répondre à ses besoins de la manière la plus appropriée et de manière complètement transparente pour l’utilisateur. Face à ces problèmes, la spécification d’un tel SIP devient ainsi un problème complexe à gérer. C’est d’autant plus vrai que l’immersion des fonctionnalités du SI dans un environnement pervasif expose celui-ci aux risques de perte de contrôle et de maitrise du SI dans un environnement pervasif fortement hétérogène et hautement dynamique. Appliquer un comportement totalement dynamique, avec (i) une prise en compte opportuniste des ressources disponibles dans l’environnement et (ii) l’autogestion des services offerts, peut constituer une menace pour le SI (par exemple, l’utilisation d’un composant non-certifié ou tout simplement, nonaligné aux stratégies de l’entreprise). Avec le manque de modèle et de formalisme permettant de prendre en compte tous ces besoins de transparence, d’adaptation à l’environnement et d’adaptation à l’utilisateur d’un SIP, la DSI se trouve face à de grandes difficultés qui rendent difficile la conception et la réalisation d’un SIP transparent et centré utilisateur. Nous proposons pour lever ces difficultés un cadre conceptuel, que nous appelons « espace de services », facilitant le passage d’un SI existant vers un SIP. Nous partons du principe qu’un SI traditionnel est déjà mis en place et que le futur SIP ne sera pas construit à partir de rien. Il s’agit surtout d’une évolution d’un SI vers un SIP en se basant sur un espace de services. Celui-ci permet, d’une part, de masquer l’hétérogénéité caractérisant l’environnement pervasif et, d’autre part, de comprendre et de décrire les fonctionnalités proposées et leurs conditions d’usage indépendamment des technologies utilisées. Ce cadre conceptuel, appelé espace de services, est construit selon le point de vue du SI en mettant en avant les composants majeurs de celui-ci qui sont (1) les services offerts à l’utilisateur et (2) les capteurs qui renseignent sur le contexte de l’utilisateur. Il est à noter que ces deux types de composants sont décrits d’une manière conceptuelle et indépendamment des aspects implémentations. De plus, ce cadre préconise aux fournisseurs de décrire les services qu’ils proposent en fonction des objectifs qu’ils permettent de satisfaire indépendamment de la manière dont ils sont réalisés. Cadre(conceptuel(d’un(SIP :(Espace(de(services 102 Ce cadre conceptuel, appelé espace de services, représente un outil guidant la conception d’un SIP et l’identification des différents éléments qui le constituent, indépendamment de l’implémentation. Cette notion d’espace de services est définie dans l’optique de présenter un cadre conceptuel indépendant de la mise en œuvre des SIP et donc des modèles de contexte et des approches de services choisis pour son implémentation. Ce cadre conceptuel peut fonctionner sur n’importe quelle réalisation de SIP puisqu’il est générique et indépendant de la couche technique. Selon notre analyse de la littérature (cf. section 2.3.2), nous avons souligné quatre approches de modélisation de contexte, à savoir la modélisation basée sur les clés-valeurs (cf. section 2.3.2.1), la modélisation basée sur le balisage (cf. section 2.3.2.2), la modélisation orientée objet (cf. section 2.3.2.3) et la modélisation basée sur les ontologies (cf. section 2.3.2.4). De plus, nous avons détectés différentes approches de services, à savoir les approches des services Web (cf. section 3.4.1), des services sémantiques (cf. section 3.4.2) et des services intentionnels (cf. section 3.4.3). Ainsi, nous proposons un cadre conceptuel qui décrit d’une manière générique la notion de contexte et de service afin de fonctionner sur l’ensemble des modélisations de contexte et des approches de services citées ci-dessus. Cet espace de services représente une vision conceptuelle de la dynamique et de l’évolution d’un SIP. Selon notre analyse de la littérature (cf. section 2.4), nous avons constaté que les SIP demeurent une nouvelle génération de SI sans un usage concret dans le milieu professionnel et qui jusqu’à présent n’ont pas été véritablement mis en place avec des formalismes appropriés. Ainsi, l’espace de services va permettre, d’une manière conceptuelle, de rendre explicite la dynamique de SIP, en représentant les différents éléments qui le composent à différents niveaux d’abstraction. Ceci va permettre d’avoir une idée sur le SIP à mettre en place ainsi que ses différents éléments, indépendamment de l’implémentation. Dans le cadre de cette thèse, l’espace de services est un cadre conceptuel offrant un guide de conception pour identifier, décrire et valider les différents composants constituant l’espace de services en fonction des souhaits de l’entreprise et des utilisateurs ciblés par le SIP. Il représente un outil conceptuel pour aider le concepteur des SIP (la DSI), dont le but est d’assurer le maintien et le contrôle du Système d’Information même dans un environnement pervasif dynamique. Ce cadre de base est ensuite utilisé pour définir l’architecture de gestionnaire de services (cf. Chapitre 9) qui intègrera les mécanismes de découverte et de prédiction de services. Cette notion d’espace de services nous permet d’analyser de manière abstraite l’interaction d’un utilisateur avec un SIP, comme l’illustre la Figure 25. L’utilisateur interagit avec le SI à travers l’espace de services dans lequel s’intègrent, de manière transparente, l’ensemble des services offerts par le SI et l’ensemble de capteurs qui renseignent l’utilisateur et le système sur le contexte. Cadre(conceptuel(d’un(SIP :(Espace(de(services 103 Figure 25. Dans un SIP, l'utilisateur interagit avec le système à travers un espace de services pervasif Dans le cadre de ce chapitre, nous définissons la notion d’espace de services ainsi que les différents éléments qui le composent. L’ordre de présentation des éléments suit le point de vue du concepteur du SIP. Nous commençons par les fonctionnalités du système, qui seront représentées par le terme de services. L’environnement dans lequel évoluent ces services étant primordial dans un système pervasif, nous décrivons ensuite la manière dont nous modélisons cet environnement, sous le terme de contexte. Un service est choisi par rapport à son contexte et au contexte de l’utilisateur. Nous commençons par observer le contexte courant de l’utilisateur. Ce contexte correspond à l’observation d’un ensemble d’éléments qui entoure l’utilisateur à un instant t. Grâce à cette observation, nous sélectionnons par la suite le service qui répond au mieux à ce contexte de l’utilisateur. Le contexte courant de l’utilisateur est ainsi comparé aux conditions contextuelles associées aux services afin de sélectionner ceux qui peuvent opérer dans l’environnement courant de l’utilisateur. Ces informations relatives au contexte sont obtenues grâce à des capteurs sensibles à l’environnement. Ces capteurs font, selon nous, partie intégrante de l’espace de services et nous proposons une manière de les inclure dans cet espace au même titre que les services. L’espace de services formalise le support contextuel que le SIP fournit à l’utilisateur. Ce support se concrétise à travers un ensemble de services offerts et un ensemble de capteurs permettant l’observation de contexte. Il est à noter que la formalisation de l’espace de services se focalise sur ces entités fournies par le SIP et l’utilisateur n’en est que le bénéficiaire. 5.2. FORMALISATION DE LA NOTION DE SERVICE DANS UN SIP La notion de service correspond à un concept largement répandu dans la littérature, défini de multiples façons. Parmi les nombreuses définitions existantes, et que nous avons présentées dans la section 3.2, nous citons, par exemple, la définition proposée par (Papazoglou et Georgakopoulos, 2003) (Papazoglou et al., 2008) qui considèrent le service comme un ensemble de modules logiciels autonomes apparu avec l’émergence du paradigme SOC comme une réponse au problème d’interopérabilité entre des applications et des Cadre(conceptuel(d’un(SIP :(Espace(de(services 104 architectures hétérogènes. Une définition plus générale est donnée par (Issarny et al., 2007), qui considèrent un service comme une entité indépendante, dotée d’interfaces bien définies et pouvant être invoquée de manière standard, sans requérir de son client une quelconque connaissance sur la manière dont le service réalise réellement ses tâches. Quelle que soit la définition utilisée, les aspects clés qui se dégagent des multiples définitions présentées dans la section 3.2 sont : le faible couplage entre le client et le fournisseur de service, l’interopérabilité et la réutilisation. En effet, ce faible couplage rend la notion de service particulièrement attractive pour les environnements pervasifs qui se caractérisent par la volatilité de leurs éléments (Vanrompay et al., 2011). De plus, la" caractéristique principale des services est leur indépendance par rapport aux aspects technologiques, ce qui nous permet ainsi de masquer l’hétérogénéité technologique des environnements pervasifs. En effet, la notion de service a été conçue pour répondre à des besoins de réutilisation et d’interopérabilité (Papazoglou et Georgakopoulos, 2003). Ses récents usages dans les systèmes sensibles au contexte (Maamar et al., 2006)(Baldauf et al., 2007)(Toninelli et al., 2008) démontrent aussi l’intérêt de la notion de service pour l’adaptabilité dans les SIP. Dans le cadre de notre espace de services, la notion de service représente une entité très importante. La notion de service est définie, d’une manière générale et dans toutes les approches orientées services, sous forme d’un ensemble de fonctionnalités F. Comme nous l’avons montré dans le Chapitre 4, l’orientation intentionnelle et contextuelle permet de répondre aux problèmes de transparence, d’adaptation à l’environnement et d’adaptation à l’utilisateur auxquels les SIP sont confrontés. Ainsi, nous proposons dans ce cadre conceptuel des SIP de définir les notions d’intention et de contexte pour enrichir le concept de service. 5.2.1.Les fonctionnalités du service Malgré les multiples définitions de la notion de service (cf. section 3.2) et les différentes approches de services proposées (cf. section 3.4), nous pouvons décrire, d’une manière générique, un service comme un ensemble de fonctionnalités F dont l’interface est clairement définie, voire standard, et dont le fonctionnement interne est inconnu des clients. La Définition 1 résume cette vision fonctionnelle d’un service. Définition 1 : Chaque fonctionnalité fj ∈ F se définit en fonction des entrées inj et des sorties outj attendues par les clients du service. F = { fj ( inj , outj ) } Définition 1. La notion de fonctionnalité relative à un serviceCadre(conceptuel(d’un(SIP :(Espace(de(services 105 D’un point de vue fonctionnel, chaque fonctionnalité fj est définie en fonction de l’ensemble d’entrées in et de l’ensemble de sorties out attendues. La Définition 1 résume cet aspect de la notion de service. On remarquera qu’à aucun moment la nature exacte du service n’est révélée au client qui cherche et invoque un service svi. Seule l’interface fonctionnelle du service, représentée par l’ensemble de fonctionnalités fj avec leurs données entrantes (in) et sortantes (out), est indiquée. Ce point est très important car il nous permet de gérer l’hétérogénéité de l’environnement, en gardant une certaine transparence dans la définition des services qui y sont offerts. Une découverte de services par les aspects fonctionnels est donc possible sans que le client ait besoin de connaître les technologies impliquées pour les réaliser. Par ailleurs, la nature atomique ou composite du service devient également transparente pour le client. En effet, les fonctionnalités exposées correspondent à celles offertes par le service. Un client peut alors les invoquer indistinctement, quelque soit leur origine, qu’elles viennent d’un service atomique ou d’une composition de services complexe. Toutefois, afin d’améliorer la découverte de services et de proposer à l’utilisateur le service qui le satisfait au mieux, il est important de prendre en compte d’autres aspects, tels que les intentions que le service permet de satisfaire et le contexte dans lequel le service est valide et exécutable. Ces aspects jouent un rôle essentiel dans la découverte du service le plus approprié aux besoins de l’utilisateur. L’aspect intentionnel qui peut être associé à un service sv i est introduit dans la section 5.2.2. Par contre, les aspects non-fonctionnels du service sv i sont considérés sous l’angle contextuel, ci-dessous dans la section 5.2.3. 5.2.2.Les intentions du service Les fonctionnalités proposées par un service permettent aux utilisateurs de répondre à un besoin précis. A partir de notre analyse de la littérature (cf. section 3.4.3.1), on peut associer ce besoin à l’expression d’une intention par les utilisateurs. Un service est ainsi proposé afin de satisfaire une (ou plusieurs) intention(s) de ces utilisateurs. La notion d’intention, présentée dans la section 3.4.3.1, formalise, en général, les besoins de l’utilisateur. Elle a été définie par Jackson (Jackson, 1995) comme étant une déclaration ‘optative’ qui exprime ce que l’on veut, un état ou un résultat que l’on cherche à atteindre. Ensuite, Kaabi et al. (Kaabi et Souveyet, 2007) présente l’intention comme un but qu’on veut atteindre sans indiquer comment le faire. Enfin, Bonino et al (Santos et al., 2009) l’a défini comme étant un but à atteindre en effectuant un processus présenté comme une séquence de sous-buts et de stratégies vers le but cible. En d’autres termes, une intention représente un besoin que l’utilisateur souhaite satisfaire, sans se soucier vraiment de quelle implémentation permet de le satisfaire ou de la façon de l’exécuter. La notion d’intention a souvent été associée, par le passé, à la notion de service. Plusieurs travaux ont, en effet, considéré la notion de service sous un angle intentionnel (Santos et al., 2009) (Rolland et al., 2010) (Mirbel et Crescenzo, 2010a) et (Fensel et al., 2011), comme nous l’avons mentionné dans la section 3.4.3.1. Cette notion d’intention place donc le service à un niveau plus proche de l’utilisateur final : quelle que soit la technologie utilisée, le service est défini pour satisfaire un besoin exprimé par l’utilisateur sous forme d’intention, telle que Cadre(conceptuel(d’un(SIP :(Espace(de(services 106 le présente la Définition 2. En tant que SI, les SIP doivent être conçus afin de mieux satisfaire les besoins des utilisateurs. Ainsi, les fonctionnalités d’un service doivent être soigneusement choisies afin de répondre aux besoins métiers exprimés sous forme d’intention. Une intention peut être représentée selon une structure basée sur les travaux de (Prat, 1997), composée d’un verbe, une cible et un ensemble de paramètres relatifs au verbe (Rolland et al., 2010). Le verbe v caractérise l’action décrivant l’intention. Cette action agit sur une cible tg, pouvant être aussi bien l’objet affecté par l’action que le résultat obtenu par cette action. L’ensemble des paramètres par spécifient d’autres aspects de l’action tels que le bénéficiaire, la direction, la quantité, pour ne citer qu’eux. Ces paramètres sont, bien entendu, optionnels et dépendent directement du verbe utilisé. Par exemple, un service offrant à un agent commercial la possibilité de consulter une fiche client peut être associé à l’intention I1 = {#consulter, #fiche_client, ∅}. Ici, le verbe « consulter » est utilisé en compagnie de la cible « fiche client » sans qu’un paramètre soit indiqué. La formalisation de l’intention qu’un service permet de satisfaire est introduite dans la Définition 2. Par exemple le service « AccèsFicheClientServiceVPN » est un service qui répond à l’intention principale I1 = {#consulter, #fiche_client, ∅}. Cette intention nécessite la réalisation d’autres intentions : I1.1 = {#connecter, #VPN, ∅}, I1.2 = {#afficher, #liste_client, ∅} et I1.3 = {#sélectionner, #client, ∅}. Ces intentions représentent les intentions qui vont être satisfaites par la mise en œuvre du service. Chaque élément de cette définition doit être lui-même sémantiquement défini au préalable. En d’autres termes, nous supposons l’existence d’une ontologie d’intentions, qui décrit sémantiquement ces éléments. Cette ontologie, qui représente une ontologie du domaine, se compose, en réalité, de multiples ontologies, chacune décrivant un élément : une ontologie de verbes, une ontologie de cibles rendues accessibles par le SIP, ainsi qu’un ensemble d’ontologies spécifiant chacun des paramètres acceptés par le SIP. Ces ontologies établissent de manière non-ambiguë la sémantique des actions acceptées par le SIP dans l’espace de services et l’ensemble des cibles atteignables par le biais de cet espace. Définition 2 : Chaque intention I est définie par un verbe v, qui caractérise son action, une cible tg, sur laquelle l’action agit, et un ensemble optionnel de paramètres par. I = { < v , tg , par > } Définition 2. Formalisation d'une intention qu'un service permet de satisfaire Une telle définition, basée sur une ontologie préétablie, n’est envisageable que dans le cadre fermé d’un Système d’Information. En effet, ces systèmes n’autorisent pas un comportement ouvert sur des intentions et des cibles non-autorisées ou inconnues. D’autre Cadre(conceptuel(d’un(SIP :(Espace(de(services 107 part, dans un environnement pervasif ouvert, l’expression de l’intention à l’aide d’un ensemble prédéfini de termes est difficilement imaginable, laissant une part trop importante à l’ambigüité. Cette ambigüité vient, en réalité, des utilisateurs : dans un environnement pervasif ouvert, le profil des utilisateurs n’est pas forcément connu à l’avance et le mode d’expression de ces utilisateurs peut être très différent. 5.2.3.Le contexte du service Une intention n’est pas le fruit du hasard. Elle représente le besoin d’un utilisateur. Or ce besoin émerge dans un contexte donné. En d’autres termes, la notion d’intention est directement liée à la notion de contexte. Nous pensons qu’une intention n’a de sens que lorsqu’on la considère dans un contexte donné. Selon nous, et comme l’illustre la partie A de la Figure 26, un utilisateur invoque un service parce que celui-ci lui permettra de satisfaire une intention. Cependant, le contexte dans lequel émerge cette intention est lui-aussi significatif. Il peut influencer considérablement la manière dont cette intention peut être satisfaite, et donc influencer l’exécution même du service (par exemple, par le choix d’une implémentation qui s’adapte au contexte courant de l’utilisateur). Inversement, un utilisateur n’invoque pas un service uniquement parce qu’il est dans un contexte donné. Il le fait parce que ce service lui permettra d’atteindre ses objectifs dans ce contexte précis. La partie A Figure 26 schématise cette vision, selon laquelle un service est proposé afin de satisfaire une intention de l’utilisateur émergeant dans un contexte précis. Cette vision commence à se développer dans la littérature, comme nous l’avons discuté dans la section 3.5.2.4. Quelques auteurs, dont Santos et al. (Santos et al., 2009), proposent déjà d’associer ces deux notions. Cependant, pour beaucoup d’entre eux, cette association reste assez floue. Par exemple, Santos et al. (Santos et al., 2009) ne considèrent le contexte que comme un filtre pour la découverte de services, le contexte étant vu comme une partie des entrées nécessaires aux services, et les intentions comme de simples étiquettes permettant de relier les demandes des utilisateurs aux services. Nous croyons, au contraire, que ces deux notions sont complémentaires et indissociables. Le contexte ne peut être réduit à de simples paramètres d’entrées ou de sorties. Non seulement il influence l’exécution du service, mais il caractérise aussi le service lui-même et les intentions ciblées par le service. Figure 26. Relation entre l'intention, le contexte et les services.Cadre(conceptuel(d’un(SIP :(Espace(de(services 108 A partir de la partie B de la Figure 26, on observe que l’impact de la notion de contexte sur le service est double : il influence son exécution et caractérise le service. Nous considérons qu’un service svi se trouve lui aussi immergé dans l’espace de services. Par conséquent, il se place lui-même dans un contexte Cxsvi donné. Ainsi, à l’instar de (Vanrompay et al., 2011), nous considérons qu’un service peut être associé à deux contextes complémentaires. Tout d’abord, un service s’exécute lui-même dans un contexte Cxsvi donné. Celui-ci représente un ensemble non vide d’observations contextuelles qui sert non seulement à indiquer les observations de contexte dans lesquelles le service est exécuté par son fournisseur, mais également à caractériser le positionnement de ce service dans l’espace de services. Le service est un objet dynamique qui bouge dans le temps et qui doit être observé. Ensuite, nous considérons également qu’un service sv i peut avoir un contexte requis CxRsvi représentant un ensemble non vide de conditions contextuelles dans lesquelles le service est le plus apte à atteindre ses objectifs, i.e. les conditions de contexte auxquelles il peut s’adapter. En d’autres termes, le contexte requis CxRsvi représente un ensemble de conditions de contexte permettant au service une meilleure possibilité de satisfaction des intentions qui lui sont associées. Il s’agit d’un filtre défini sur les observations de contexte de l’utilisateur : plus le contexte courant observé pour l’utilisateur correspond au contexte requis, plus le service aura de chance de s’adapter à cette situation et de satisfaire au mieux l’utilisateur. Ainsi, dans le cadre des mécanismes de découverte (cf. Chapitre 7) et de prédiction (cf. Chapitre 8) de services, le contexte requis est exploité dans le cadre de la sélection des services les plus appropriés au contexte courant de l’utilisateur (cf. section 7.2.2.4). Il faut mettre en correspondance le contexte requis du service (CxRsvi) avec le contexte courant l’utilisateur (CxU), afin de sélectionner les services qui peuvent s’adapter au mieux à la situation courante de l’utilisateur. Dans le cadre de notre espace de services, la notion de contexte doit être modélisée d’une manière générique afin de permettre à n’importe quel modèle de contexte (cf. section 2.3.2) de fonctionner avec notre cadre conceptuel des SIP. Pour ce faire, nous avons besoin d’une modélisation de contexte de plus haut niveau qui peut être instanciée par n’importe quelle approche de contexte. Ainsi, afin de formaliser la notion de contexte nous proposons de définir avant un méta-modèle de contexte qui va être utilisé dans notre cadre conceptuel des SIP. Ce méta-modèle de contexte représente une modélisation générique de contexte Cx. Il permet à toute approche orientée contexte d’utiliser notre méta-modèle pour représenter ses informations contextuelles, quelque soit le modèle de contexte qu’elle va utiliser au niveau implémentation. Quant au contexte requis CxRsvi, il aura une structure similaire à Cxsvi, mais il doit exprimer des conditions contextuelles, lesquelles nécessitent un langage sémantique pour pouvoir les représenter sous la forme la plus adéquate. Ce langage sémantique va essentiellement dépendre du modèle de contexte choisi et mis en place au niveau implémentation. Ainsi, il est plus approprié de garder le choix de la modélisation de contexte CxRsvi au niveau implémentation et de spécifier ses conditions contextuelles en langage naturel au niveau conceptuel. En conséquence, au niveau conceptuel, il faut spécifier en langage naturel les conditions contextuelles qui vont être attachées à chaque service. Par la suite, en Cadre(conceptuel(d’un(SIP :(Espace(de(services 109 choisissant le langage adéquat au niveau implémentation qui correspond au modèle de contexte choisi, il faudra traduire ces conditions pour pouvoir les traiter. Nous présenterons le méta-modèle de contexte dans la section 5.3.1. Nous formalisons, dans la section 5.3.2, la notion de contexte à travers la notion d’observation et de capteur. Ainsi, à partir de ce qu’on vient de présenter, il nous paraît évident qu’un service ne peut être défini sans tenir compte de ces éléments qui lui permettent de mieux se situer dans son environnement et de réagir à celui-ci. A ces éléments, on ajoute les notions préalablement mises en évidence : les intentions (Définition 2) et les fonctionnalités (Définition 1) offertes par le service. Nous formalisons ainsi la notion de service comme l’illustre la Définition 3 Définition 3 : Un service sv i correspond à un ensemble de fonctionnalités F fournies par cette entité sv i dans un contexte Cx afin de satisfaire un ensemble d’intentions I. La satisfaction de ces intentions dépend également d’un contexte favorable, décrit comme un contexte requis CxR pour le bon déroulement du service. sv i = Définition 3. Formalisation de la notion de service de l’espace de services Derrière la notion de contexte, il existe une autre notion importante pour l’univers des services : les aspects non-fonctionnels qui caractérisent ces services. Beaucoup de recherches ont été menées autour de ces aspects (Liu et Issarny, 2004) (Chaari et al., 2008a) (Vanrompay, 2011)(Xin et Hao, 2012) (Ait Ali Slimane, 2012), pour ne citer qu’eux. Par exemple la notion de qualité présente l’un des aspects non-fonctionnels des services. Nous soulignons deux importantes tendances de travaux dans cette thématique, à savoir : la qualité des service (QoS – Quality of Service) et la qualité de contexte (QoC - Quality of Context). D’un côté, Vanrompay (Vanrompay, 2011), dans ces travaux de recherche, a souligné l’importance de la qualité de contexte (QoC) pour les applications, qui permet une utilisation efficace des informations contextuelles fournies. Cet auteur propose un ensemble de mesures de qualité des informations de contexte, telles que la probabilité d’exactitude, certitude, taux d’erreur standard, granularité, temps de réponse, etc. Plus spécifiquement, ces mesures représentent la qualité du futur contexte qui a été prédit (QoFC – Quality of Future Context) et elles sont classifiées en trois catégories de qualité de prédiction de contexte : mesure individuelle, mesure globale et mesure dépendante des entrées. De l’autre côté, Ait Ali Slimane (Ait Ali Slimane, 2012) a proposé une autre dimension qualitative des services sous un angle intentionnel, la qualité des services intentionnels (QoiS – Quality of intentional Service). L’objectif principal derrière l’introduction de la QoiS est de résoudre les problèmes de discordance conceptuelle entre les exigences non-fonctionnelles des utilisateurs finaux et la qualité des services logiciels, celui des dépendances fonctionnelles entre les services. Dans Cadre(conceptuel(d’un(SIP :(Espace(de(services 110 ces travaux, Ait Ali Slimane (Ait Ali Slimane, 2012) propose un méta-modèle de la qualité, et un référentiel qualité. Cependant, il faut noter que le contexte est lui-même un de ces aspects. Le contexte peut être considéré comme un élément extérieur au service, capable de l’influencer. En tant que tel, il peut être considéré comme un ensemble d’aspects non-fonctionnels caractérisant le service. Inversement, beaucoup d’éléments traditionnellement pris en compte sous un angle d’analyse non-fonctionnelle peuvent également être vus comme des conditions contextuelles à l’exécution du service. A travers la spécification explicite du contexte offert Cxsvi et requis CxRsvi par un service, nous espérons également offrir une possibilité de représentation des aspects non-fonctionnels dans le cadre de l’espace de services. 5.3. FORMALISATION DE LA NOTION DE CONTEXTE La notion de contexte, qu’on a discuté dans la section 2.3.1, est un concept très large, exploré depuis plusieurs années dans l’Informatique Pervasive (Masmoudi et Conan, 2013) (Najar et al., 2009) (Villalonga et al., 2010). Selon (Gensel et al., 2008), le contexte est « l’ensemble des caractéristiques de l'environnement physique ou virtuel qui affecte le comportement d'une application et dont la représentation et l’acquisition sont essentielles à l’adaptation des informations et des services ». Le contexte est un élément clé de l’Informatique Pervasive, car il est au centre des mécanismes d’adaptation prônés par les systèmes dits sensibles au contexte. Ces systèmes se caractérisent, en effet, par leur capacité à adapter leur fonctionnement afin d’augmenter leur utilisabilité et leur efficacité, par la prise en compte du contexte environnant (Baldauf et al., 2007). Figure 27. Vue schématique d'un système sensible au contexte (d’après (Najar et al., 2009)) De manière schématique, et comme l’illustre la Figure 27, un système sensible au contexte est un système qui supporte une certaine variabilité, le choix de la variante dépendant du contexte qui entoure l’exécution du système et son interaction avec les utilisateurs. Le contexte agit ainsi comme un élément extérieur au système qui influence sa variabilité intérieure, une sorte de paramètre qui guiderait le choix de la variante la plus appropriée et le processus d’adaptation la concernant (Najar et al., 2009). Cadre(conceptuel(d’un(SIP :(Espace(de(services 111 Dans la section suivante, nous présentons une modélisation de contexte qui nous semble la plus générale permettant ainsi son exploitation et son extension dans différents domaines. Cette modélisation est le fruit de l’analyse des différentes approches de modélisation de contexte existantes, mentionnées à la section 2.3.2, et qui sont utilisées pour l’abstraction et l’encodage des informations de contexte dans une forme non ambiguë. 5.3.1.Modélisation de contexte La notion de contexte (cf. section 2.3.1) est un élément essentiel pour la réalisation de systèmes sensibles au contexte. Or, tout Système d’Information Pervasif (SIP) doit également être sensible au contexte pour pouvoir s’adapter à l’environnement pervasif dans lequel évoluent ses utilisateurs. La maîtrise des SIP passe donc par la maîtrise de la notion de contexte. Celle-ci étant particulièrement extensible, une représentation formelle est nécessaire afin d’en définir les contours et d’identifier les informations pertinentes, qui influenceront effectivement le comportement du système (Gensel et al., 2008). Ce constat, effectué par différents auteurs (Gensel et al., 2008) (Masmoudi et Conan, 2013) (Chaari et al., 2007) (Brézillon et Brézillon, 2007) a conduit à la proposition de multiples modèles de contexte (Najar et al., 2009) (Bettini et al., 2010). Même si ceux-ci varient par leur forme et leur formalisme, nous pouvons dégager certains éléments clés, qui caractérisent l’immense majorité de ces modèles. D’après l’analyse des différentes définitions et approches de modélisation de contexte, que nous avons exposées dans la section 2.3.2, nous remarquons certains éléments communs. En se basant sur la définition référence de Dey, « toute information qui peut être utilisée pour caractériser la situation d’une entité » (Dey, 2000), deux concepts clés peuvent être dégagés : (i) « entité » qui fait référence à quelque chose observable dans l’environnement et (ii) « toute information » qui est présentée comme tout attribut observé de cette entité. Ces concepts ont été soulignés dans la plupart des approches de modélisation de contexte, telles que (Lemlouma, 2004) (Kirsch-Pinheiro, 2006) (Paspallis, 2009) (Masmoudi et Conan, 2013). En effet, dans la plupart des définitions de contexte, on parle de l’observation de quelque chose afin de déterminer les informations de contexte. Nous introduisons ainsi le concept « sujet observé » dans notre méta-modèle de contexte. Ce concept représente ce qu’on observe concrètement dans l’environnement afin de collecter un certain nombre d’informations contextuelles. C’est un élément important puisqu’il permet de déterminer à qui ou à quoi s’attache les informations de contexte que nous allons détecter. Lemlouma (Lemlouma, 2004), par exemple, dans sa modélisation de contexte se base sur l’observation de l’utilisateur et du dispositif afin de déterminer des informations sur leurs profils. L’utilisateur et le dispositif sont considérés comme des « sujets observés » dans sa modélisation de contexte CC/PP. Masmoudi et Conan (Masmoudi et Conan, 2013), ont souligné aussi l’importance de ce concept en introduisant dans leur méta-modèle la notion d’entité observable qui décrit une entité physique ou logique qui peut être observée. Cadre(conceptuel(d’un(SIP :(Espace(de(services 112 De plus, la majorité des approches de modélisation de contexte expose et énumère dans leur modèle les éléments de contexte qu’ils souhaitent observer et acquérir pour pouvoir adapter leur système. Nous introduisons la notion « élément de contexte » qui représente l’attribut observé permettant de caractériser la situation du « sujet observé » en question. Kirsch-Pinheiro (Kirsch-Pinheiro, 2006), par exemple, propose une approche orientée objet pour la structuration des éléments de contexte et de leurs relations. Ce modèle propose une classe élément de contexte qui est spécialisée avec l’énumération des différents éléments de contexte qui sont liés aux aspects collaboratifs (rôle de l'utilisateur, activités, etc.) en plus des aspects physiques (la localisation de l'utilisateur, le dispositif, etc.). Dans cette modélisation l’élément de contexte est le concept central qui tourne autour des éléments qui semblent indispensables à l’auteur (Kirsch-Pinheiro, 2006), soit de par leur importance à l'utilisateur, soit de par leur pouvoir de caractériser une situation. De même, Reichle et al. (Reichle et al., 2008) soulignent aussi l’importance de ce concept « élément de contexte » dans la modélisation de contexte. Ils le présentent dans leurs travaux comme étant un « scope » identifiant l'attribut exact de l'entité sélectionnée qui le caractérise. Selon ce modèle de contexte, Reichle et al. (Reichle et al., 2008) associent directement leur notion du scope observé avec l'entité à laquelle il se réfère. Dans un système sensible au contexte, l’observation d’un élément de contexte pour un sujet observé donné, permet de lui déterminer une valeur. Cette valeur est soit acquise dynamiquement à travers des capteurs, soit définie statiquement au départ ou dérivée ensuite à travers un processus d’interprétation. Compte tenu de l’importance de cette valeur dans le processus d’adaptation des systèmes sensibles au contexte, nous introduisons la notion de « valeur observée » dans notre méta-modèle qui est associée à un « élément de contexte ». Dans la littérature, par exemple, la modélisation de contexte constituée de paires « clé- valeur », qu’on a présentée à la section 2.3.2.1, permet de représenter le contexte d'utilisation comme un ensemble de paires contenant chacune une clé et la valeur qui lui correspond. Dans cette approche, un élément de contexte est considéré comme clé, et la valeur associée à cet élément représente la valeur observée. Finalement, nous avons constaté à travers la littérature que certaines informations supplémentaires sont associées aux informations de contexte modélisées pour les décrire. Paspallis (Paspallis, 2009), par exemple, souligne l’importance de la représentation des éléments de contexte lors de la modélisation. La représentation est utilisée pour préciser la structure interne utilisée pour encoder les informations de contexte dans des structures de données. Cet auteur propose ainsi de rajouter la représentation comme un concept clé de sa modélisation de contexte. De plus, Vanrompay (Vanrompay, 2011), souligne dans ces travaux l’importance de la prise en compte de la qualité de l’information de contexte utilisée. Cette qualité de contexte permet de déterminer la pertinence de l’information qui peut jouer sur le processus d’adaptation dans les systèmes sensibles au contexte. Dans cette optique, Pierrick et al. (Pierrick et al., 2013), ont proposé dans leurs travaux un méta-modèle de contexte qui souligne l’importance de la qualité de contexte lors de sa modélisation. Ils proposent le métamodèle QoCIM qui offre un support de modélisation générique de critères de la qualité de contexte (QoC) en introduisant le concept QoCIndicator. Ainsi, une information de contexte Cadre(conceptuel(d’un(SIP :(Espace(de(services 113 (ContextData) est qualifiée par des indicateurs de qualité (QoCIndicator). Suite à ces propositions, nous soulignons de même l’importance de ces concepts, entre autres. Nous introduisons, en conséquence, le concept « métadonnée » comme étant les informations pertinentes qui peuvent être associées à la valeur observée d’un élément de contexte. Nous présentons ainsi un méta-modèle flexible, illustré à la Figure 28. Ce méta-modèle permet de décrire comment les informations de contexte générales peuvent être modélisées. Il fournit une vue des structures de base qui peuvent être utilisées lors de la définition d’un modèle de contexte spécifique à un domaine donné. Il nous permet de « réduire » un modèle de contexte à l’observation d’un ou plusieurs sujets observés (un utilisateur, un dispositif, etc.) pour lequel (lesquels) on observe un ensemble d’éléments de contexte (localisation, activité, mémoire disponible, etc.), obtenant ainsi, pour chacun de ces concepts, des valeurs observées qualifiées par leur métadonnée (représentation, indicateurs de qualité, etc.). Figure 28. Méta-modèle de contexte. Ce méta-modèle est fondé sur le principe de la séparation claire entre le sujet observé et l’élément de contexte. Le sujet observé représente le sujet de contexte auquel l’élément de contexte se réfère. L’élément de contexte fait référence à l’attribut ou à la propriété de contexte qu’on souhaite observer pour un sujet donné. Par exemple, on pourrait observer l’élément de contexte « mémoire » du sujet observé « dispositif ». Pour chaque sujet observé, on peut observer de zéro à plusieurs éléments de contexte. Un élément de contexte peut être associé à zéro ou plusieurs autres éléments de contexte. La représentation de cette association entre éléments de contexte, dans notre méta-modèle, permet d’exprimer les relations sémantiques qui peuvent exister entre ces éléments dans les approches orientées objets, par balisage ou sous forme d’ontologie. Cette relation entre éléments de contexte peut être une composition, une spécialisation, une simple association, etc. Ainsi, lors de l’instanciation de notre méta-modèle, il faut capturer la sémantique de ce lien qui peut exister entre les éléments de contexte dans le modèle de contexte au moment de son implémentation. Par exemple, dans une modélisation de contexte sous forme d’ontologie, on souhaite observer l’élément de contexte « profil » du sujet observé « utilisateur ». Cet élément de contexte se caractérise par d’autres éléments comme « âge », « expérience », etc. De ce fait, notre méta-modèle de contexte répond aux faiblesses des autres modèles de contexte à gérer l’aspect hiérarchique entre les éléments de contexte. Par exemple, (Kirsch-Pinheiro, 2006) propose un modèle de contexte très détaillé, où tous les éléments de contexte sont exposés directement dans le modèle. Ce modèle gère difficilement la hiérarchie entre les éléments de contexte. En métadonnée << Classifier >> Element de Contexte << Classifier >> * 1 caractérise Valeur Observée << Classifier >> Observation Sujet Observé << Classifier >> * 0..1 * * * 1Cadre(conceptuel(d’un(SIP :(Espace(de(services 114 conséquence, des éléments de contexte comme « LocalisationParGPS » et « LocalisationParAdresse », par exemple, sont représentés comme deux éléments de contexte totalement distincts, alors qu’en réalité ils ne sont que des éléments composant de l’élément de contexte « localisation ». Ceci peut entrainer certaine confusion lors du traitement du modèle de contexte. Chaque élément de contexte est composé de plusieurs valeurs observées. Chaque valeur observée représente une donnée de contexte capturée à un instant donné. Par exemple, pour le sujet observée « dispositif » et l’élément de contexte « mémoire », on pourrait avoir une valeur observée égale à « 1024 Mo ». Chaque valeur peut avoir des représentations différentes, des indicateurs de qualité, de confiance, etc. Ces derniers indiquent les aspects extra-fonctionnels des informations contextuelles représentées, dans le méta-modèle (Figure 28) comme des métadonnées. Ainsi une valeur observée peut avoir plusieurs métadonnées. Par exemple, on peut associer à une valeur donnée de la localisationGPS (élément de contexte) d’un utilisateur (sujet observé) la représentation ReprésentationLocalisationGPS et comme indicateur de qualité, la confiance à 80%. Le méta-modèle que nous proposons dans le cadre de ce chapitre, peut s’appliquer aux quatre approches de modélisation de contexte citées dans la section 2.3.2. Par exemple, la modélisation de contexte basée sur les paires clé-valeur peut être instanciée par notre métamodèle de contexte, où la clé est représentée par l’élément de contexte et la valeur est définie par la valeur observée. Si on prend, par exemple, la modélisation de contexte suivante : ‘température’ = ‘25’. Dans ce cas, la clé « température » représente l’élément de contexte auquel on associe une valeur égale à 25 qui peut être la valeur observée pour l’élément de contexte défini. Dans la modélisation clé-valeur, on n’a pas de relation entre éléments de contexte. De plus, les valeurs observées ne sont pas associées à des métadonnées. La cardinalité [0..n] entre éléments de contexte et entre une valeur observée et les métadonnées permet à notre méta-modèle de contexte d’être instancié par le modèle de contexte clé-valeur même s’il ne permet pas d’exprimer de relation sémantique entre les éléments de contexte et de lien entre les valeurs observées et les métadonnées. Dans le cadre de la modélisation de contexte basée sur le balisage, nous prenons l’exemple de profil CC/PP présenté par Lemlouma (Lemlouma, 2004), et qui illustré à la Figure 29. Ce modèle de contexte représente une description des capacités physiques et logicielles d’un type de terminal donné. Ainsi, le type du terminal représente le sujet observé dans notre métamodèle de contexte. Ensuite, pour chaque type de terminal une description de ces capacités lui est attribuée. Cette description porte sur un ensemble de composants (e.g terminalHardware, hardwarePlatform, terminalSoftware, terminalBrowser, etc.) auxquels est associé un ensemble de valeurs. Par exemple, pour le composant hardwarePlatform on lui associe comme nom EPOC et comme version 2.0. A partir de cet exemple, nous pouvons affirmer que les composants représentés dans le modèle de contexte CC/PP représente les éléments de contexte de notre méta-modèle auxquels on va associer un ensemble de valeurs observées. De plus le lien hiérarchique entre éléments de contexte peut être représenté par le lien de composition entre composant dans le fichier CC/PP. Par exemple, le composant terminalHardware est composé du composant hardwarePlatform. Cadre(conceptuel(d’un(SIP :(Espace(de(services 115 Figure 29. Extrait de profil CC/PP (Lemlouma, 2004) Dans le cadre de la modélisation de contexte orientée objet, nous prenons l’exemple proposé par kirsch-Pinheiro (Kirsch-Pinheiro, 2006). Dans sa modélisation de contexte, cet auteur représente une classe description de contexte à laquelle on associe un ensemble de valeurs des éléments de contexte observés. Comme l’illustre la Figure 30, cette description de contexte décrit le contexte d’un élément de contexte donné (par exemple, le membre Alain). Ainsi, cette description de contexte peut être vue comme une réunion d’un ensemble d’observation d’éléments de contexte (e.g. session, rôle, application, etc.) autour d’un sujet donné. En conséquence, le lien entre un sujet observé et un ensemble d’éléments de contexte dans notre méta-modèle peut représenter cette description de contexte. Figure 30. Extrait du modèle de contexte orienté objet de (Kirsch-Pinheiro, 2006) : lien entre sujet observé et élément de contexte De plus, dans le modèle de contexte orienté objet de kirsch-Pinheiro (Kirsch-Pinheiro, 2006), et comme l’illustre la Figure 31, un élément de contexte peut avoir un lien avec un autre élément de contexte. Ce lien peut être un « is-A » ou une simple association entre deux éléments de contexte, par exemple l’élément de contexte « session » (ayant comme valeur session Alain) a un lien « espace_d’éxécution » avec l’élément de contexte « disposition » (ayant comme valeur treo650). Ceci représente le lien hiérarchique entre les éléments de contexte de notre méta-modèle de contexte. Dans cette modélisation de contexte, aucune métadonnée n’est prise en compte. Contexte Alain : Description de contexte Alain : Membre Alain : Membre Session Alain : Session Comité : Groupe Président : Rôle treo650 : Dispositif +Description +Cible décrit_contexte_de élémentCadre(conceptuel(d’un(SIP :(Espace(de(services 116 Figure 31. Extrait du modèle de contexte orienté objet de (Kirsch-Pinheiro, 2006) : lien entre éléments de contexte Finalement, Reichle et al. (Reichle et al. 2008), par exemple, proposent une modélisation de contexte sous forme d’ontologie décrivant les informations contextuelles en se basant sur trois concepts principaux : 1) l'entité se référant à l'élément sur lequel l'information de contexte se rapporte ; 2) le scope identifiant l'attribut exact de l'entité sélectionnée qui le caractérise ; et 3) la représentation utilisée pour préciser la représentation interne utilisée pour encoder les informations de contexte dans des structures de données. En faisant le lien avec notre méta-modèle de contexte, l’entité peut représenter le sujet observé, le scope peut définir l’élément de contexte, la valeur associée au scope peut faire référence à la valeur associée à l’élément de contexte, et la représentation peut être une instance des métadonnées. De plus, la représentation du modèle de contexte sous forme d’ontologie permet de lier deux éléments de contexte ensemble. Ce lien peut être de type « is-A », « Part-Of » ou une relation de type « property » entre deux éléments de contexte. Ce lien représente une instance du lien hiérarchique entre éléments de contexte représenté dans notre méta-modèle de contexte Dans la section, nous proposons une instanciation de notre méta-modèle de contexte en présentant notre modèle de contexte basé sur les ontologies. 5.3.2.Formalisation de la notion d’observation et de capteur 5.3.2.1. Formalisation de la notion d’observation Selon notre analyse de la littérature (cf. section 2.3.2.4), nous avons conclu que les approches basées sur l'ontologie semblent être les plus prometteuses en termes de raisonnement et d’expressivité. Ainsi, le rattachement de notre méta-modèle de contexte à une description sémantique peut s’appliquer aussi bien aux éléments de contexte qu’aux sujets observés : avant toute observation d’un sujet ou d’un élément de contexte, la nature de celuici doit d’abord être clairement identifiée dans une ontologie de domaine propre au SI en question (cf. section 6.4.1). En d’autres termes, un SIP n’est pas sensé observer n’importe quel sujet, sans rapport avec son activité, de la même façon qu’il ne doit pas observer un élément de contexte inconnu, qu’il ne saura pas interpréter. Le fait de considérer uniquement des éléments spécifiés dans une ontologie présuppose que des éléments de contexte inconnus Alain : Membre répertoire partagé : Application +espace +participant est_localisé_dans Session Alain : Session treo650 : Dispositif +espace +outil espace_applicatif +outil conçu_pour +dispositif +dispositif +espace espace_d'exécutionCadre(conceptuel(d’un(SIP :(Espace(de(services 117 jusqu’à alors ne seront pas pris en compte par le SIP, car ils risquent de ne pas être correctement interprétés par ce dernier. Ce n’est qu’après avoir été reconnu dans l’ontologie, et donc reconnu par le système lui-même, qu’un élément de contexte pourra être pris en compte. En effet, l’ontologie de contexte établit de manière non-ambiguë la sémantique des sujets et des éléments de contexte observables et acceptées par le SIP. Les SIP se situent avant tout dans le cadre fermé des Systèmes d’Information qui doivent rester maitrisés et contrôlés par la DSI. Par conséquence, ils n’autorisent pas un comportement ouvert sur des sujets et des éléments de contexte non-autorisés ou inconnus. Une fois cette description sémantique rendue possible par le modèle de contexte, nous pouvons nous concentrer sur l’observation de contexte par un capteur donné. La notion d’observation est nécessaire parce qu’elle permet d’instancier notre métamodèle de contexte au niveau instance avec des valeurs capturées à travers les capteurs et remontées ensuite au système. Nous pouvons ainsi dégager la Définition 4, qui établit la notion d’observation réalisée par un capteur. Pour un sujet donné sj, on peut observer un ensemble d’élément de contexte Eso. Une observation donnée s’attache à un seul élément de contexte eo observé pour le sujet sj. Ainsi, pour déterminer l’ensemble des éléments de contexte que nous pouvons observer pour un sujet sj, nous définissons la fonction suivante : ElementsContexte (sj) = Eso. La fonction ElementsContexte retourne pour un sujet donné sj l’ensemble de ces éléments de contexte observables. Au cœur de cette fonction, le type so du sujet observé sj est déterminé. De ce fait, l’association entre les éléments de contexte d‘un sujet donné peut être formalisée selon cette fonction, mais sera différente selon les approches de contexte utilisées. Ainsi, cette relation entre les éléments de contexte sera plutôt exploitée au moment de la gestion de contexte. Définition 4 : Une observation Ocpi se réfère au capteur cpi pour lequel on a observé, pour le sujet sj, un élément de contexte eo à un instant tj. Ainsi, chaque observation est un n-uplet composé du sujet sj, de l’élément de contexte eo, ainsi que de la valeur v observée à un moment tj et décrite par l’ensemble de métadonnées M. Ocpi = { < obj , tj > }, obj = < sj , eo , v , M >, où - sj correspond au sujet observé ∈ so ; - eo correspond à un élément de contexte ∈ Eso ; - v correspond à une valeur observée pour ce concept ; - t représente l’instant (timestamp) auquel cette observation a été réalisée ; et - M correspond à l’ensemble des métadonnées m et de leur valeur d décrivant cette observation : M = {m = d}. Définition 4. Formalisation de la notion d'observationCadre(conceptuel(d’un(SIP :(Espace(de(services 118 5.3.2.2. Formalisation de la notion de capteur Un capteur offre au SI et aux utilisateurs un ensemble d’informations contextuelles correspondant à des valeurs observées dans l’environnement. Les capteurs, de différentes natures, permettent l’observation d’éléments caractérisant aussi bien l’environnement physique (GPS, température, etc.), que logique (mémoire disponible sur le terminal, préférences de l’utilisateur, etc.) et organisationnel (rôle de l’utilisateur, état d’exécution d’un processus, etc.). Ces capteurs sont importants puisqu’ils sont responsables de la capture des informations contextuelles dont le système aura besoin pour l’adaptation. Les valeurs observées correspondent à l’observation d’éléments de contexte clairement identifiés sur une ontologie de domaine (cf. section 6.4.1). Ces capteurs alimentent ainsi le SIP en informations contextuelles qu’il utilisera afin d’adapter son offre de services aux utilisateurs et à leurs besoins dans le contexte observé. Un capteur cpi est défini par l’ensemble d’observations Ocpi qu’il réalise, ainsi que par le contexte Cxcpi dans lequel il se trouve. Ce contexte est lui aussi décrit par un ensemble d’observations d’éléments de contexte relatifs à un sujet donné, qui est, dans ce cas précis, le capteur lui-même. Le contexte de capteur Cxcpi est un aspect important à prendre en considération car il permet de déterminer le positionnement du capteur dans l’espace de service. En effet, ce contexte Cxcpi permet de déterminer à quel espace de services ces capteurs peuvent être attachés. La Définition 5 ci-dessous synthétise cette position. Définition 5 : Un capteur cpi se définit en fonction d’un ensemble d’observations Ocpi qu’il réalise et d’un contexte Cx, également décrit par un ensemble d’observations. cpi = { Ocpi , Cxcpi } Définition 5. Formalisation de la notion de capteur 5.4. FORMALISATION DE L’ESPACE DE SERVICES Grâce à tous les éléments identifiés précédemment, nous proposons enfin de conceptualiser un espace de services, en définissant de manière générale chacun de ses éléments. L’espace de services est un cadre conceptuel qui permet de définir et de spécifier tous ce qui est jugé important et pertinent d’un point de vue utilisateur. Nous introduisons ainsi la notion d’entité comme une généralisation des différents éléments de l’espace : services (cf. section 5.2) et capteurs (cf. section 5.3). De plus, notre espace de services peut être étendu ou utilisé dans différents contextes. Cette généralisation va permettre ainsi de ne pas limiter cet espace aux notions de services et de capteurs mais de laisser la possibilité de prendre en compte d’autres éléments jugés pertinents dans d’autres usages. Cadre(conceptuel(d’un(SIP :(Espace(de(services 119 Il est à noter que l’espace de services n’inclut pas l’utilisateur dans sa formalisation comme une entité mais les services et les capteurs de SIP doivent être définis pour supporter les intentions de l’utilisateur et capturer son contexte. Plus spécifiquement, un espace de services ξ est un ensemble d’éléments, nommées entités (ei.), qui entourent l’utilisateur dans son environnement. Celui-ci est à la fois physique (localisation de l’utilisateur, dispositifs qui l’entourent, etc.), logique (ensemble des outils et des applications qui composent habituellement un SI) et organisationnel (organisation dans laquelle s’intègre le SIP). Dans cet environnement, nous pouvons considérer deux types d’entités distinctes : les entités actives, capables d’offrir aux utilisateurs un (ou plusieurs) service(s), et les entités passives, capables de renseigner les utilisateurs (et le système luimême) sur cet environnement. En d’autres termes, nous proposons de généraliser la notion de service en la présentant comme une entité active dans un espace qui est capable d’agir sur l’environnement et la notion de capteur comme une entité passive permettant l’observation de cet environnement. A partir de cette considération, nous dégageons la Définition 6 suivante : Définition 6 : Un Espace de Services ξ est un environnement pervasif composé d’un ensemble d’entités ei ξ = {ei | ei ∈ A ∨ ei ∈ P}, où - A correspond à l’ensemble des entités actives, et - P correspond à l’ensemble des entités passives disponibles sur l’espace . Définition 6. Formalisation de l'espace de service Présentes dans l’espace de services, ces entités passives et actives se situent elles-mêmes dans un contexte donné, qui caractérise leur positionnement (au sens large du terme) dans l’espace de services ξ. Ainsi, et comme le synthétise la Définition 7, chaque entité possède un contexte Cx dans lequel on l’observe et qui lui est associé. Définition 7 : Toute entité ei, qu’elle soit active ou passive, est associée à un contexte Cx qui la caractérise dans l’espace de services ξ. Définition 7. la notion d'entité dans l'espace de services De plus, grâce à la notion de contexte discutée précédemment et à la Définition 4, nous pouvons désormais définir le contexte Cx qui caractérise une entité (passive ou active) dans l’espace de services ξ. Nous considérons, dans la Définition 8, que les entités qui composent Cadre(conceptuel(d’un(SIP :(Espace(de(services 120 l’espace de services ξ se trouvent elles-mêmes dans cet espace et peuvent donc être caractérisées par les informations contextuelles que l’on peut y capter à leur sujet. Définition 8 : Une entité ei (ei ∈ A ou ei ∈ P) est caractérisée, dans l’espace de services ξ, par un contexte Cx. Celui-ci est constitué d’un ensemble d’observations. Chaque observation se réfère à l’entité ei observée et contient une valeur v pour un élément de contexte eo observé à un instant t, ainsi que l’ensemble de métadonnées M caractérisant cette observation. Cx = { < obj , tj > }, obj = < ei , eo , v , M > Définition 8. Le contexte qui caractérise une entité dans l'espace de services 5.4.1. Entités actives Le concept de service permet d’évoquer le caractère actif des entités capables d’offrir à l’utilisateur et aux autres entités placées dans l’espace de services un ensemble de fonctionnalités agissant sur l’environnement qui les entoure. Ainsi, nous pouvons généraliser la notion de service en une entité active. A travers la notion de service, la nature réelle des entités actives demeure cachée derrière une interface bien définie, représentant les fonctionnalités pouvant être rendues par ces entités, sans spécifier comment elles le sont. En définissant les entités actives en tant que services, nous pouvons gérer l’hétérogénéité qui les caractérise dans l’espace de services. L’ensemble des entités actives ei ∈ A correspond à l’ensemble des services offerts aux utilisateurs par le SI dans un environnement pervasif. Une entité active est une entité capable de réaliser une action (atomique ou composée de plusieurs actions) pour un client quelconque à travers une interface clairement définie. Le client n’a pas besoin de connaître les détails de l’implémentation du service, mais uniquement son interface. Les entités actives sont en mesure d’agir sur l’environnement, qu’il soit physique (gestion de la température d’un dépôt de stockage, par exemple), logique (invocation d’un service Web ou d’une fonctionnalité d’un ERP) ou organisationnel (e.g. intervention sur un processus métier). La nature exacte de l’entité active est ainsi transparente : qu’il s’agisse d’un service Web, une imprimante ou un fax, l’entité sera toujours vue à travers les services qu’elle offre à ces clients. 5.4.2. Entités passives Le concept de capteur permet d’évoquer le caractère passif des entités capables d’observer l’environnement et de renseigner l’utilisateur et le SI sur les informations contextuelles observées de cet environnement. Ainsi, nous pouvons généraliser la notion de capteur en une Cadre(conceptuel(d’un(SIP :(Espace(de(services 121 entité passive. Ces entités passives sont importantes puisqu’elles sont responsables de la détection des informations contextuelles dont le système aura besoin pour l’adaptation. Leur définition délimite la notion de contexte, spécifiant les informations considérées comme pertinentes. L’objectif est de permettre la prise en compte de ce contexte afin de proposer aux utilisateurs les services qui leur correspondent le mieux. L’ensemble des entités passives ei ∈ P correspond à un ensemble de capteurs capables d’observer l’environnement de l’utilisateur et son interaction avec le SIP. En d’autres termes, une entité passive est une entité capable d’offrir au SI et aux utilisateurs un ensemble d’informations contextuelles correspondant à des valeurs observées dans l’environnement, qu’il soit physique, logique ou organisationnel. Il s’agit d’une source d’information qui alimente les autres éléments de l’espace de services en informations contextuelles. Ces informations peuvent, par la suite, être utilisées pour l’adaptation des services offerts à l’utilisateur, voire l’adaptation de l’espace de services lui-même. En d’autres termes, ces entités passives alimentent le SIP en informations contextuelles qu’il utilisera afin de mieux adapter son offre de services aux utilisateurs et à leurs besoins dans le contexte observé. 5.4.3. Etat de l’espace de services et son évolution L’espace de services représente un espace conceptuel et non technique constitué d’un ensemble d’entités (services et capteurs) à un instant t. En réalité, cet espace de services ne forme pas un espace discret et fermé. Bien au contraire, nous proposons un espace de services dynamique qui n’est pas formalisé ou défini par une description propre à lui mais par la description des différentes entités qui le constituent à un instant donné. En conséquence, un espace de services peut évoluer dans le temps, avec de nouvelles entités qui s’ajoutent aux entités déjà présentes et d’autres entités qui disparaissent ou deviennent simplement indisponibles. On peut ainsi distinguer deux visions à partir de cette définition. D’abord, une vision statique qui conceptualise l’espace de services par la définition des entités dont l’intégration à l’espace est prévue, voire souhaitée par l’entreprise. Or, la nature fortement dynamique des environnements pervasifs oblige cette conceptualisation à évoluer avec cet environnement. Une vision dynamique est donc nécessaire. Celle-ci doit tenir compte des entités effectivement disponibles dans l’espace de services à un instant t. Cette distinction est nécessaire afin de mieux capturer la dynamique propre à cet espace. La notion d’espace de services se présente ainsi comme un conteneur conceptuel permettant aux concepteurs de SIP de mieux décrire ces systèmes. Dans les faits, les SIP sont confrontés à la dynamique propre aux environnements pervasifs, caractérisée par la volatilité des ressources qui s’y trouvent. Cependant, contrairement aux environnements purement pervasifs, pour lesquels la découverte et la prise en compte opportuniste des entités est recherchée, les SIP requièrent le maintien d’un certain contrôle et maîtrise. Il s’agit, avant tout, d’un système d’information, et la prise en compte de nouvelles entités sans une validation ou un accord au préalable de la part de l’entreprise (typiquement, de sa DSI), n’est pas toujours possible, voire n’est pas souhaitable. La notion d’espace de services permet aux concepteurs de mieux imaginer les environnements optimaux, maîtrisés et pourtant dynamiques. Les concepteurs peuvent ainsi décrire leur SIP sous la forme de multiples espaces de services perméables, comme l’illustre Cadre(conceptuel(d’un(SIP :(Espace(de(services 122 la Figure 32. En d’autres termes, un espace de services n’est pas un espace fermé totalement déconnecté des autres espaces. Bien au contraire, c’est un espace qui n’a pas de frontières claires qui l’empêchent de communiquer avec les autres espaces et qui demeure accessible. Ainsi, ces espaces de services peuvent se partager des entités (actives ou passives) communes (voir Figure 32). Les entités actives ou passives d’un espace peuvent ainsi exister sur d’autres espaces. De plus, l’utilisateur évolue entre ces multiples espaces qui se superposent et évoluent dans le temps. Figure 32. Multiples espaces de services perméables Afin de permettre aux visions statiques et dynamiques de coexister de manière harmonieuse, nous considérons l’état d’un espace de services en plus de sa définition statique, selon la Définition 9. L’état d’un espace de services  à un instant t, notét , correspond aux entités, passives ou actives, effectivement disponibles sur l’espaceà cet instant. Ceci équivaut à dire qu’une entité ei possède elle aussi un état à un instant t. Cet état de l’entité, noté ei t , indique la disponibilité de celle-ci dans l’espace  à l’instant t. Définition 9 : L’état d’un espace de services  à un instant t, noté t , se définit comme l’ensemble des états des entités ei présentes à cet espace : ! ! ⊆ !, ! ! = !! !! ∈ ! ∧ !! !! , où ei ξt indique l’état de l’entité ei à l’instant t (disponible ou indisponible). Définition 9. Etat d'un espace de services Service Préférences Rôle Service Service Service Service Service mémoire réseaux GPS humidité Service Service Service TempératureCadre(conceptuel(d’un(SIP :(Espace(de(services 123 5.5. CONCLUSION Dans ce cinquième chapitre, nous avons proposé la notion d’espace de services, cadre conceptuel pour la conception d’un SIP. Celui-ci permet la définition d’un SIP par la spécification d’un ensemble d’espaces, dans lesquels cohabitent les services offerts par le système aux utilisateurs et les capteurs qui l’alimentent avec des informations récoltées à partir de l’environnement (physique, logique ou organisationnel). Ces éléments sont définis par rapport à un contexte dans lequel ils se situent, permettant ainsi une meilleure prise en compte de l’environnement dans lequel évolue l’utilisateur. Cette notion, représentant notre vision des SIP, permet aux DSI de spécifier les fonctionnalités attendues de leur système, ainsi que les informations qui seront capturées par celui-ci pour une meilleure adaptation. Il s’agit de garder le contrôle sur la définition du système et de ses services, tout en permettant la prise en compte d’un environnement hautement dynamique. Ce compromis entre dynamisme et spécification au préalable est une nécessité pour les SIP, car, même s’ils veulent tirer profit d’un environnement pervasif, ils restent néanmoins des SI. Cette possibilité de spécifier le système tout en permettant l’expression de sa dynamique constitue une des forces de cette proposition. L’espace de services est défini comme un cadre conceptuel, lequel formalise d’une manière générique la notion de contexte et de service. Ce cadre est conçu indépendamment de la couche technique, ainsi que des approches de modélisation de contexte et des approches de services choisies pour son implémentation. En réalité, l’objectif principal de cet espace de services est de représenter une vision conceptuelle de la dynamique d’un SIP, offrant ainsi un guide de conception pour identifier, décrire et valider les différents composants constituant cet espace en fonction des souhaits de l’entreprise et des utilisateurs ciblés par le SIP. Nous avons formalisé cette notion d’espace de services et présenté ses composants dans l’ordre qui nous semble le plus pertinent du point de vue d’un DSI. Le cadre conceptuel proposé dans ce chapitre s’inscrit dans une approche de recherche plus large. D’une part, cette approche inclut la mise en œuvre de cette vision des SIP à travers la description sémantique des services, intégrant les notions d’intention et de contexte (cf. Chapitre 6), la découverte (cf. Chapitre 7) et la prédiction de services (cf. Chapitre 8) basées sur les notions de l’espace de services. Cette mise en œuvre a été mise en place par la réalisation d’une architecture que nous avons développée dans le cadre de cette thèse pour définir les différents espaces de services et leurs entités, et que nous avons nommée architecture de gestionnaire d’un SIP (cf. Chapitre 9). D’autre part, cette approche inclut une démarche de mise en œuvre et de réalisation de cet espace à l’intention des concepteurs de SIP (cf. Chapitre 8). Cette démarche supporte le passage du cadre conceptuel « espace de services » vers l’implémentation de l’architecture de gestionnaire de SIP contenant les modules de description, découverte et prédiction de services, que nous proposons dans la suite de cette thèse. Descripteur(intentionnel(et(contextuel :(OWLASIC 124 Chapitre 6. DESCRIPTION INTENTIONNELLE ET CONTEXTUELLE DES SERVICES 6.1. INTRODUCTION La vision intentionnelle et contextuelle des SIP que nous proposons dans le cadre de ce travail de thèse (cf. section 4.3.1) met l’accent sur l’étroite relation entre l’intention, le contexte et le service. Nous considérons qu’un service est là pour répondre à une intention particulière dans un contexte donné. Ce contexte peut influencer la satisfaction de cette intention. Cette vision a été mise en place conceptuellement par la notion d’espace de services, que nous avons présentée dans le chapitre précédent (cf. Chapitre 5). L’espace de services présente un cadre conceptuel qui intègre les différents services et capteurs qui entourent l’utilisateur dans son environnement. Nous décrivons cet espace par une description formelle qui lui est propre laquelle considère l’ensemble de services potentiellement disponibles à un instant donné. Ceci est dans le but de gérer l’aspect dynamique et perméable de cet espace. Une description de services selon une vision intentionnelle et contextuelle est un élément clé pour la réalisation de cette vision. Un service doit être décrit selon l’intention qu’il est capable de satisfaire. Il doit être décrit également par le contexte dans lequel il est valide et exécutable. Une telle description reflète l’étroite relation entre la notion d’intention, celle de contexte et le service. Son rôle est d’apporter plus de signification au service (intention) et de prendre en considération son adaptation à l’environnement (contexte). Ce descripteur de services représente une extension de OWL-S, que nous avons appelé OWL-SIC (OWL-S Intentional & Contextual), laquelle considère le service comme une entité unique avec de multiples dimensions : dimensions intentionnelles, techniques et contextuelles. Le descripteur intentionnel et contextuel que nous allons décrire dans ce sixième chapitre permet la description de l’espace de services à travers la description de l’ensemble des services qu’il intègre. De plus, ce descripteur représente le point d’entrée pour le mécanisme de découverte (cf. Chapitre 7) et celui de prédiction (cf. Chapitre 8) de services. Ces mécanismes interagissent avec un répertoire de services contenant ces descripteurs pour satisfaire les besoins des utilisateurs. Dans le cadre de ce chapitre, nous argumentons notre choix d’étendre le langage OWL-S pour prendre en considération les notions de contexte et d’intention. Par la suite, nous détaillons notre descripteur de services et nos extensions de OWL-S.Descripteur(intentionnel(et(contextuel :(OWLASIC 125 6.2. VERS UN DESCRIPTEUR INTENTIONNEL ET CONTEXTUEL : OWLSIC Selon notre vision intentionnelle et contextuelle des Systèmes d’Information Pervasifs (cf. section 4.3.1), les services sont sélectionnés et exécutés dans un contexte donné et sont censés satisfaire certaines intentions particulières. Ces services forment les entités actives de notre espace de services (cf. section 5.4.1). Cet espace de services représente un cadre conceptuel, non technique, qui se définit, entre autres, à travers les différents services qu’il englobe. Ainsi, il est important de présenter une description des services selon cette perspective intentionnelle et contextuelle. Les descriptions de services actuelles ne décrivent pas nécessairement les deux aspects. Pour beaucoup de travaux, cette association reste floue et pas assez exploitée. Ce constat se base sur l’analyse des approches de découvertes de services détaillée dans la section 3.5.2. Ainsi, nous proposons un descripteur intentionnel et contextuel de services qui supporte notre notion d’espace de services. Ce descripteur correspond à la définition et à la description des différentes entités actives (services) qui cohabitent dans un ou plusieurs espaces de services. Pour cela, nous proposons de relever les services à un niveau plus élevé en proposant une description sémantique qui inclut la description intentionnelle et contextuelle des services. Un utilisateur n'a pas besoin d'un service parce qu'il est situé dans un endroit donné ou dans un contexte donné. Il nécessite un service parce qu'il a une intention particulière qu'un service peut satisfaire dans ce contexte. Cette description sémantique étendue des services, permet de gérer l’hétérogénéité de l’environnement. L’objectif ici est de proposer des services de haut niveau, permettant de cacher la complexité technique de l’environnement dû, entre autres, aux différentes technologies et services proposés. Afin de proposer une telle description sémantique, nous avons besoin d’un langage assez riche et suffisamment extensible pour prendre en considération les aspects intentionnels et contextuels dans la description d’un service. Dans le Chapitre 3, nous avons évoqué deux langages de description de services correspondants à ces critères. Le premier est le langage WSMO (cf. section 3.4.3.2) qui représente une ontologie décrivant sémantiquement les différents aspects relatifs à un service Web. WSMO (Keller et al., 2004) se caractérise essentiellement par son approche basée sur les intentions. Celle-ci prend en considération les intentions spécifiques derrière une recherche de services de l’utilisateur. Le deuxième langage est le langage OWL-S (Martin et al., 2007). Celui-ci (cf. section 3.4.2.1) définit les capacités des services Web en trois parties représentées par des ontologies interdépendantes : le profil de services, le modèle de processus et le grounding. Face à ces deux propositions, nous avons considéré la question suivante : quel langage parmi les deux cités ci-dessus (OWL-S et WSMO) permettrait de décrire, d’une façon claire, expressive et sans perte d’informations, l’intention que le service est capable de satisfaire et le contexte de validité et d’exécution de ce service, et qui permet également de raisonner dessus. Selon Roman et al. (Roman et al., 2005), dans WSMO, une intention décrit les aspects Descripteur(intentionnel(et(contextuel :(OWLASIC 126 liés aux désirs de l'utilisateur par rapport à la fonctionnalité demandée. Toutefois, cette intention n’est pas formulée selon un modèle bien spécifique. Comme nous l'avons mentionné dans la section 3.4.3.2, cette information est représentée uniquement comme un ensemble d'objets. Par conséquent, WSMO ne permet pas d'identifier le rôle réel que joue chaque objet dans la spécification de l'intention. En d’autres termes, ce langage n'exploite pas la sémantique des verbes, des cibles et des paramètres qui peuvent représenter une intention, comme présenté dans les travaux de (Kaabi et Souveyet, 2007) et (Rolland et al., 2010). Nous concluons ainsi, que cette représentation d’intention perd une partie de son expressivité avec une telle modélisation. Dans notre vision, l’intention représente un élément clé très riche et qui apporte une réelle compréhension au service associé. Il est important de décrire la sémantique de tous éléments composant cette intention pour tout éventuel usage, tel que la découverte et la prédiction de service. De plus, une des reproches de WSMO est qu’il ne s’appuie pas sur des moteurs de raisonnement qui soient assez performants et puissants pour raisonner sur l’intention et le contexte. Cette phase de raisonnement est très importante dans nos mécanismes de découvertes (cf. Chapitre 7) et de prédictions de services (cf. Chapitre 8), étant donné que nous raisonnons sur les ontologies et sur les descriptions de services. Concernant le langage OWL-S (cf. section 3.4.2.1), les dernières recherches dans l’Informatique orientée services recommandent l'utilisation de ce langage pour décrire sémantiquement les services. Selon (Suraci et al., 2007), même si OWL-S est conçu pour les services Web, il est riche et suffisamment général pour décrire tout type de services. Le langage OWL-S représente un langage souple et facilement extensible, tel que démontré par les travaux de Suraci et al. (Suraci et al., 2007) et Vanrompay et al. (Vanrompay et al., 2011). De plus, OWL-S offrent un très grand pouvoir d’expressivité ainsi que la possibilité d’inférer de nouvelles connaissances grâce au nombre de constructeurs de ce langage ainsi qu’au nombre de raisonneurs proposés, tels que Jena (Carroll et al., 2004), Pellet (Parsia et Sirin, 2004) et Racer (Haarslev et Möller, 2003). Ainsi, nous avons choisi de nous baser sur OWL-S puisque, d’une part, il est assez souple et extensible pour inclure d’autres types d’informations dans la description de services, et d’autre part, parce qu’il offre des moteurs de raisonnement assez puissants nécessaires pour la découverte et la prédiction de ces services. Nous proposons ainsi d'étendre OWL-S afin d’inclure les informations concernant à la fois le contexte et l'intention qui caractérisent un service. Cette extension est présentée sous le nom de OWL-SIC (Intentional & Context aware Services Web Ontology Language). Elle a fait l’objet de plusieurs publications (Najar et al., 2011a) (Najar et al., 2011b) (Najar et al., 2012c) et sera utilisée, dans la suite de cette thèse, pour la découverte (cf. Chapitre 7) et prédiction de services (cf. Chapitre 8). Pour inclure l’aspect intentionnel à la description de services, nous avons différentes manières de faire et différentes extensions possibles. La première extension, et la plus simple, consiste à étendre la description du profil de services. La problématique ici est que cette description intentionnelle peut rapidement devenir complexe si on prend en considération la description de la variabilité dans l’expression de l’intention (cf. section 6.3). Ainsi, par soucis d’interopérabilité, nous avons choisi d’apporter des modifications minimes à la partie du Descripteur(intentionnel(et(contextuel :(OWLASIC 127 profil de service, laquelle est utilisée par les mécanismes de découverte traditionnels, afin de garder son caractère souple et flexible. Nous rajoutons ainsi un nouveau bloc « Intention service » dans la description de services, lequel se concentre uniquement sur la description intentionnelle des services. Par ailleurs, et à l’instar de Kirsch-Pinheiro et al. (Kirsch-Pinheiro et al., 2008), nous avons choisi de décrire les informations relatives au contexte par une URL qui fait référence à une ressource externe, permettant ainsi une mise à jour facile des informations de contexte liées à la description du service (cf. section 6.4). Avec notre extension OWL-SIC, nous pouvons décrire l'intention qu'un service est capable de satisfaire et les conditions de contexte dans lesquelles ce service est valable et peut être exécuté. Par ailleurs, contrairement à Rolland et al. (Rolland et al., 2010), nous ne considérons pas que le service intentionnel doive être observé comme une entité distincte du service technique. Cette séparation conduit à des descriptions techniques pauvres qui sont sémantiquement incomplètes, car ils ne comprennent pas de description intentionnelle. Nous proposons, dans cette section, un descripteur sémantique complet, qui considère le service comme une entité unique aux multiples dimensions (dimension intentionnelle, technique et contextuelle), qui s’intègrent dans une description sémantique unique. Chacune de ces dimensions est décrite plus en détails dans les sections suivantes. 6.3. LA DIMENSION INTENTIONNELLE D’UN SERVICE Un service est décrit avec une intention principale qu’il est capable de satisfaire. Celle-ci représente l’intention décrite par la communauté dans un domaine précis et qui va être analysée lors du processus de découverte de services (cf. Chapitre 7). D’un domaine à un autre, une même intention peut être exprimée de différentes manières. Cette variabilité d’expression de l’intention dépend de la communauté d'expert qui a établi l’ontologie d’intention et qui partage une vision commune de leur domaine, comme les ontologies soutenues par la communauté proposés par Mirbel et Crescenzo (Mirbel et Crescenzo, 2010). Ainsi, nous avons trouvé intéressant de prendre en considération cette variabilité dans notre descripteur de services. De plus, comme nous l’avons souligné dans la section 3.4.3.3, une intention peut être atomique ou agrégat. Une intention atomique représente une intention qui ne se décompose pas en d’autres sous-intentions, tandis qu’une intention agrégat représente une intention qui se compose d’un ensemble de sous-intentions, qui à leur tour peuvent être décomposables. Nous introduisons, dans la section 6.3.1, notre extension de OWL-S pour inclure les informations sur l’intention principale du service et sa variabilité d’expression. Ensuite, nous détaillons dans la section 6.3.2, notre prise en compte de la composition intentionnelle dans notre descripteur de services. Descripteur(intentionnel(et(contextuel :(OWLASIC 128 6.3.1.Le service et son intention principale L'information relative à l'intention est décrite, comme l’illustre la Figure 33, dans une ontologie « Intention Service ». Cette ontologie représente une description de l'intention principale que le service est censé satisfaire. Elle se base sur une ontologie de domaine qui est établie par une communauté d'expert partageant un même domaine. Cette vision s'intègre parfaitement avec les SIP, puisque les services offerts par ces systèmes doivent s’adapter à une communauté d'utilisateurs spécifique. Figure 33. Extension de OWL-S pour représenter l'intention du service Notre extension intentionnelle rajoute à OWL-S une nouvelle propriété au service, nommée « satisfait » et sa classe respective « IntentionService » (cf. Figure 33). Chaque instance de « service » permet ainsi de satisfaire une description intentionnelle de celui-ci. L’ontologie « Intention Service » fournit les informations nécessaires pour découvrir le service approprié qui satisfait au mieux une ou plusieurs intention(s) particulière(s). L’objectif ici est de mentionner l’intention qu’un service permet de satisfaire de manière à ce que ce service puisse être retrouvé à partir de l’intention de l’utilisateur. La prise en compte de cet aspect intentionnel dans la description de services conduit à des modifications dans l’ontologie de services, pour faire référence à l’ontologie d’intention de services, et dans l’ontologie de profil, pour faire appel à l’ontologie d’intention lors du mécanisme de découverte de services par exemple. Nous introduisons dans les sections suivantes ces modifications ainsi que la nouvelle ontologie d’intention. Service Profil Service Modèle Service Grounding Service Intention Service "Supporte" (Comment y accéder?) "Présente" (Qu'est ce qu'il fait?) "Satisfait" (Qu'est ce qu'il satisfait?) "DécritPar" (Comment il fonctionne?)Descripteur(intentionnel(et(contextuel :(OWLASIC 129 6.3.1.1. Extension de l’ontologie de service Les parties constituant la description d’un service en OWL-S (cf. Figure 33) sont organisés dans une ontologie. Cette ontologie représente la structure de cette description exposant ces trois parties de base, à savoir le profil, le modèle et le grounding du service. Nous y rajoutons une quatrième partie, représentant la dimension intentionnelle d’un service. Nous étendons ainsi cette ontologie de services, comme l’illustre la Figure 34, afin de mettre en avant le lien entre un service et une intention. Cette extension a été établie par l’ajout d’une classe « Service Intention » qui fournit une superclasse à la description intentionnelle du service (ligne 7-10 de la Figure 34). Figure 34. Extension de l'ontologie de services La classe « Service Intention » ne mentionne aucune représentation des services, mais elle impose les informations de base permettant de lier une intention avec une instance de service. Il existe une relation réciproque entre un service et une intention de service, de sorte qu'un service peut être lié à une intention et une intention à un service. Ces relations sont exprimées par les propriétés « satisfait » (satisfies) et « satisfaitPar » (satisfiedBy). D’une part, la propriété « satisfait » décrit une relation entre une instance de service et une instance d'intention (ligne 14-18 de la Figure 34), indiquant ainsi que le service est capable de satisfaire cette intention. D’autre part, la propriété « satisfaitPar » représente l'inverse de « satisfait » (ligne 20-28 de la Figure 34). Elle spécifie qu'une intention donnée peut être satisfaite par un service. 6.3.1.2. Extension de l’ontologie de profil L’ontologie de profile, comme nous l’avons mentionné dans la section 3.4.2.1, exprime ce que le service réalise. Cette ontologie donne une description de haut niveau d'un service, à Descripteur(intentionnel(et(contextuel :(OWLASIC 130 des fins de description, de publication et de découverte des services. Ainsi, afin d’inclure l’aspect intentionnel de notre descripteur de services, nous avons dû étendre l’ontologie du profil de services, comme l’illustre la Figure 35. Dans la description du « Profil Service », nous avons introduit un pointeur vers la sousontologie qui présente la description intentionnelle de service (ligne 44-47 de la Figure 35). Pour cela, nous proposons la propriété « has_intention ». Celle-ci a comme domaine la classe profil (Profile) et comme classe respective (range) la classe « intention ». Figure 35. Extension de l’ontologie de description de profil de service La classe intention représente une spécialisation de la classe de profil de service (Service Profile). Cette nouvelle classe utilise le caractère flexible et extensible de OWL-S. En effet, nous y ajoutons une nouvelle classe tout en gardant en perspective la possibilité de représenter l’ontologie d’intention de différentes manières. Figure 36. Description du service « Edition_Proposal_Service » en OWL-SICDescripteur(intentionnel(et(contextuel :(OWLASIC 131 Pour mieux comprendre cette description intentionnelle de services proposée à travers OWL-SIC, nous présentons, dans la Figure 36, un exemple de description de service. Dans cet exemple, nous présentons la description d’un service d’édition de proposition nommé « Edition_Proposal_Service » (ligne 5). Dans cette description, le service satisfait l’intention « prepare proposition » (ligne 9). Cette ligne représente l’identifiant de la description intentionnelle du service qui est détaillée dans le bloc de description des intentions (ligne 27- 29). De plus, dans la partie de description de profile du service, nous rajoutons un pointeur vers la description de cette intention (ligne 21), afin de l’explorer dans un processus de découverte de services. On observe que le changement que nous avons apporté au profil de service est minimal, puisque l’intention n’y est pas détaillée, étant décrite par l’ontologie d’intention. Ceci est particulièrement important pour maintenir une certaine compatibilité entre cette nouvelle description de services et les mécanismes de découverte. 6.3.1.3. Ajout d’une ontologie d’intention Nous proposons, dans le cadre de cette extension, une ontologie d’intentions, laquelle propose une description des intentions qu’un service est capable de satisfaire. Nous considérons qu’un service satisfait une intention principale, qu’elle soit atomique ou composite. Cette intention est formulée selon le modèle de Prat (Prat, 1997) (cf. section 3.4.3.1). Ce modèle présente l’intention sous forme de verbe, de cible qui peut être un objet ou un résultat et un ensemble de paramètres qui sont optionnels. Les paramètres représentent la façon, la quantité, la qualité, la direction, la qualité et le bénéficiaire. La Figure 37 illustre les classes et les propriétés qui composent cette description intentionnelle d’un service. Figure 37. Les classes et les propriétés de l'ontologie d’intention Selon Prat (Prat, 1997), le verbe expose l'action permettant la réalisation de l'intention. La cible représente soit l'objet existant avant la réalisation de l'intention ou le résultat découlant Moyen Manière Source Destination Objet Résultat Façon Quantité Direction Qualité Bénéficiaire Verbe Cible Paramètre Intention Intention Service Légende owl : Class rdfs : subClassOf owl : Property "aParamètre" "aCible" "aVerbe" "aSens" Sens "aSynonym"Descripteur(intentionnel(et(contextuel :(OWLASIC 132 de la satisfaction de l'intention. Les paramètres sont utiles pour clarifier l'intention et pour exprimer les informations supplémentaires. Le paramètre direction caractérise la source ou la destination des entités. D’un côté, la destination identifie l'emplacement des entités produites par la satisfaction de l'intention. De l'autre côté, la source identifie l'emplacement initial des entités. En outre, ce modèle d'intention représente le paramètre façon, faisant référence à l'instrument de la satisfaction de l'intention. Il représente le moyen ou la manière de satisfaire l’intention. Le moyen indique l'entité qui sert d'instrument pour atteindre l'intention, tandis que la manière identifie une approche dans laquelle l'intention peut être satisfaite. Enfin, le paramètre de qualité définit une propriété qui doit être atteinte ou maintenue. Dans leurs travaux, Corby et al. (Corby et al., 2009) proposent une ontologie d’intention qui organise l’intention par section, selon le modèle de la carte (Rolland et al., 1998). Dans nos travaux, nous nous concentrons sur la description de l’intention elle-même. Toutefois, nous pouvons dégager certains points communs entre les deux ontologies, que nous avons entouré dans notre ontologie d’intention à la Figure 38. Par exemple, dans les deux ontologies nous suivons la même description des paramètres qui sont la façon, la quantité, la qualité, la direction, la qualité, etc. Ainsi, nous attachons dans ces deux travaux une cible à l’intention, appelée objet dans l’ontologie proposée par Corby et al. (Corby et al., 2009). Par contre, la description des verbes dans notre ontologie d’intention est plus riche. En effet, nous exploitons plus d’éléments autour du verbe, tels que le synonyme et le sens, que dans l’ontologie de Corby et al. (Corby et al., 2009). Notre ontologie d’intention représente une description sémantique du modèle d’intention de Prat (Prat, 1997), alors que l’ontologie de Corby et al. représente une description sémantique du modèle de la carte. Figure 38. Comparaison avec l'ontologie d'intention de Corby et al. (Corby et al., 2009) Chaque élément de cette description intentionnelle doit être lui-même sémantiquement défini au préalable dans des ontologies d’intentions qui sont dépendantes du domaine. En réalité, ces ontologies intentionnelles décrivent chacune un élément de l’intention : une ontologie de verbes, une ontologie de cibles rendues accessibles par le SIP et des ontologies de paramètres. Les ontologies de verbes et de cibles établissent de manière non-ambiguë la Moyen Manière Source Destination Quantité Façon Qualité Direction Bénéficiaire Requête Générique Carte Directive Réalisation Intention Paramètre Section "aStratégie" "OpérationnaliséPar" "ComposéDe" "aRessource" Ressource "aVerbe" Localisation Temps Référence Intention Verbe "aSource" "aCible" Start Stop Objet "aObjet" Moyen Manière Source Destination Objet Résultat Façon Quantité Direction Qualité Bénéficiaire Verbe Cible Paramètre Intention Intention Service "aParamètre" "aCible" "aVerbe" "aSens" Sens "aSynonym" Ontologie d'intention Ontologie pour les démarches de recherche d'information (Corby et al., 2009) "isA" "isA" "isA"Descripteur(intentionnel(et(contextuel :(OWLASIC 133 sémantique des actions acceptées par le SIP dans l’espace de services, représentant le verbe de l’intention, et l’ensemble des cibles atteignables par le biais de cet espace. Une telle définition, basée sur une ontologie prédéfinie, n’est envisageable que dans le cadre fermé d’un Système d’Information. En effet, ces systèmes n’autorisent pas un comportement ouvert sur des intentions et des cibles non-autorisées ou inconnues auparavant, de par leur importance stratégique dans les entreprises. L’ontologie de verbe (OntoV) contient un ensemble de verbes liés à un domaine précis, celui du SIP, leurs significations et les relations entre ces verbes. OntoV établit une description sémantique des actions acceptées par les SIP. Elles présentent des liens d’héritage entre les verbes reflétant des relations de hyponymie (plus spécifique) et d’hyperonymie (plus général). A part ces deux liens, cette ontologie de verbes décrit la relation de synonyme entre deux verbes. Deux verbes synonymes représentent deux verbes identiques ou très voisins (ayant le même sens ou deux sens très proches). De plus, un verbe peut avoir un sens bien défini. En conséquence, nous décrivons le verbe, dans l’ontologie (OntoV), avec son sens. Le sens du verbe est introduit par le fournisseur de ce service afin de rajouter plus d’expressivité au verbe. En d’autres termes, il n’est là que pour aider l’utilisateur à mieux comprendre la signification des verbes qui existent dans l’ontologie des verbes (OntoV). Par exemple, le verbe « consulter » peut être décrit par plusieurs sens, à savoir « examiner quelque chose » ou « interroger quelque chose ». L’ontologie des cibles (OntoT) représente des concepts sémantiques relatifs aux cibles pouvant être utilisées avec une intention. Cette ontologie établit de manière non-ambiguë la sémantique de l’ensemble des cibles atteignables par le biais de l’espace de services. Elle présente une vue hiérarchique de plusieurs types de cibles du domaine en question, en présentant les liens de spécialisations et de généralisation entre elles. Figure 39. Exemple de description intentionnelle d'un service d'édition de propositionDescripteur(intentionnel(et(contextuel :(OWLASIC 134 La Figure 39 illustre un exemple de description intentionnelle du service d’édition de proposition. Ce service satisfait l’intention principale « prepare proposition » (ligne 5). Cette intention se compose du verbe « prepare » (ligne 6-9). La cible de l’intention représente le résultat obtenu par la satisfaction de cette intention, à savoir « proposal » (ligne 11-18). Comme nous l’avons souligné précédemment, une même intention peut être exprimée de différentes manières selon la communauté. Ceci exprime la variabilité dans l’expression de l’intention que nous introduisons dans notre description intentionnelle des services. Pour un même service, nous pouvons associer différentes intentions, dont une est représentée comme principale et les autres comme ses alternatives dans des domaines différents. Par exemple, le service d’édition de proposition a comme intention principale « prepare proposition ». Cette intention est décrite dans le cadre d’une entreprise qui peut configurer ses propositions (e.g. logiciels) selon les appels d’offre. Cette même intention peut être exprimée différemment dans le cadre d’une autre entreprise qui propose ses produits sans configuration à ses clients. Dans ce cas, l’intention qui sera associée à ce service sera plutôt « propose product ». Ces multiples variations d’intention sont décrites dans le bloc de la description intentionnelle de la même manière que l’intention principale est décrite dans la Figure 39. En plus de cette variabilité dans l’expression, une intention associée à un service peut être soit une intention simple, appelée intention atomique, soit une intention décomposable en plusieurs sous intentions, appelée intention agrégat (cf. section 3.4.3.3). Nous estimons qu’il est important de prendre en compte cette composition intentionnelle qui peut être exploitée dans d’éventuel mécanisme de composition de services. Nous discutons cette composition intentionnelle dans la section suivante. 6.3.2.La composition intentionnelle Un service satisfait une intention particulière. Cette intention, et comme nous l’avons introduit précédemment, peut être atomique ou agrégat. Une intention atomique représente une intention simple et non décomposable, tandis que l’intention agrégat représente une intention qui est composée d’autres intentions. La satisfaction d’une intention agrégat nécessite la satisfaction de toutes ses sous intentions. Cet aspect intentionnel reflète la composition des intentions introduites dans les travaux de Kaabi et Souveyet (Kaabi et Souveyet, 2007) et Rolland et al. (Rolland et al., 2010). Néanmoins, et comme nous l’avons souligné dans la section 3.4.3.3, la vision de ces auteurs ne prend pas en considération l'évolution de la technologie de services qui peut supporter des logiciels avec des fonctionnalités réutilisables, ainsi que des systèmes hérités (legacy system) avec des processus complexes cachés par des technologies. Dans leurs travaux, Kaabi et Souveyet (Kaabi et Souveyet, 2007) et Rolland et al. (Rolland et al., 2010) considèrent que seuls les services intentionnels atomiques peuvent être opérationnalisés à travers le service logiciel. Ceci limite la réutilisation des systèmes hérités, puisque ces systèmes peuvent être associés à des intentions agrégats, mais ils ne peuvent pas être assimilés à des intentions atomiques simples. Descripteur(intentionnel(et(contextuel :(OWLASIC 135 Dans notre descripteur, nous nous sommes inspirés de ces travaux (Kaabi, 2007) (Rolland et al., 2010) et nous admettons ainsi l’importance de la composition intentionnelle dans la description d’un service. Par contre, et dans la perspective de suivre cette évolution technologique et de prendre en considération des systèmes complexes tels que les systèmes hérités, nous estimons qu’un service atomique peut satisfaire des intentions complexes qui peuvent être agrégats. Ainsi, puisqu’un service peut être assez complexe en soi, d’un point de vue intentionnel, nous avons décidé d’inclure la composition intentionnelle dans la description de services. Ceci nous distingue également de WSMO qui ne gère pas cet aspect. En effet, un service englobe un certain processus intentionnel lequel peut être aussi simple que la satisfaction d’une seule intention atomique, mais qui peut être également assez complexe encapsulant une véritable composition intentionnelle. Que le service soit simple ou composite, l’intention qu’il satisfait peut être également atomique ou agrégat. Nous avons donc deux compositions orthogonales, représentées sur deux dimensions séparées : une technique et l’autre intentionnelle. Dans le cas d’une composition traditionnelle, l’agrégation technique fournit des éléments techniques nécessaires à l'exécution du service. Par contre, l’agrégation intentionnelle permet de mieux comprendre, du point de vue utilisateur final, le service et les différentes façons de satisfaire son intention principale. Ainsi, nous proposons d'étendre le modèle de processus de OWL-S en incluant la spécification d'un processus intentionnel. Cette nouvelle spécification est décrite indépendamment de l’agrégation traditionnelle, étant donné que cette dernière dépasse le cadre de cette thèse. Notre extension est inspirée de la spécification technique des processus de services décrits en OWL-S et de la composition de services intentionnels proposée par (Kaabi et Souveyet, 2007) et (Rolland et al., 2010). La Figure 40 présente notre extension de OWL-S pour inclure l’aspect de composition intentionnelle. Cette extension considère deux types de processus : le processus intentionnel atomique et le processus intentionnel agrégat. Le processus intentionnel atomique représente la spécification d’une intention qui est indécomposable. Ce processus intentionnel atomique est ainsi décrit uniquement par son intention principale qui n’est pas décomposable. Par exemple, le service « LaunchConnexionVPN_service » est un service qui permet de répondre à l’intention principale de lancement de connexion I5 = {#connecter, #VPN, ∅}. Cette intention peut être satisfaite directement et n’a pas besoin d’être décomposée en sousintentions pour être satisfaite. A l’opposé, le processus intentionnel agrégat est un processus dont l’intention principale peut être décomposée en des intentions plus fines qui contribuent à sa satisfaction. Par exemple, le service « AccessClientView_Service » est un service qui répond à l’intention principale I6 = {#consulter, #fiche_client, ∅}. Cette intention se compose d’autres intentions : I6.1 = {#connecter, #VPN, ∅}, I6.2 = {#afficher, #liste_client, ∅} et I6.3 = {#sélectionner, #client, ∅}. Ces intentions représentent les intentions qui devront être satisfaites pour que l’intention principale le soit. Descripteur(intentionnel(et(contextuel :(OWLASIC 136 Figure 40. Extension de OWL-S pour prendre en considération la composition intentionnelle des services Par ailleurs, notre extension du modèle de processus considère un processus intentionnel simple, lequel fournit une vue abstraite d’un processus intentionnel pouvant être atomique ou agrégat. Comme l’illustre la Figure 40, un processus intentionnel simple est réalisé par un processus intentionnel atomique et s’étend en un processus intentionnel agrégat. Un processus intentionnel agrégat peut être soit un processus intentionnel composite (qui établit des liens ET entre les intentions et affine l’intention principale en sous intentions qui lui sont associées), soit un processus intentionnel à variante (lequel établit des liens OU entre les intentions et offre le choix dans la satisfaction de l’intention principale) (cf. section 3.4.3.3). Ces processus, comme l’illustre la Figure 40, relient les intentions entre elles par des constructeurs bien spécifiques. Ces constructeurs, appelé constructeur de composition intentionnelle et constructeur de variation intentionnelle, sont inspirés des liens de choix et de composition proposés par Kaabi (Kaabi, 2007). Ces liens répondent parfaitement aux liens de composition et de variation qui peuvent exister entre les intentions. Dans la cadre du processus intentionnel composite, le lien séquentiel a été choisi parce qu’il représente, dans le cadre de notre processus intentionnel composite, le cas le plus typique dans lequel il y a un ordre séquentiel entre les intentions qui contribuent à la satisfaction de l’intention principale. Nous avons choisi de représenter le lien parallèle parce qu’il reflète le cas dans lequel la satisfaction de l’intention principale nécessite la réalisation de certaines intentions en parallèle. Finalement, le lien itératif a été choisis parce qu’il existe des cas où l’intention principale ne peut être satisfaite que par l’itération de certaines de ces intentions composites. Dans la cadre du processus intentionnel à variation, nous avons choisi de représenter le lien multiple parce qu’il reflète un choix non exclusif dans la manière de satisfaire l'intention principale par les intentions composites. Parmi ces intentions composites, au moins une sera choisie. De plus, nous avons décidé de garder le lien alternatif parce qu’il présente le cas exigeant un choix exclusif dans la manière de satisfaire l'intention principale Descripteur(intentionnel(et(contextuel :(OWLASIC 137 par les intentions composites. Parmi ces intentions composites, uniquement une sera choisie. Nous gardons également le lien chemin parce qu’il offre un choix dans la façon d'atteindre l’intention principal. Dans ce cas, la variation intentionnelle porte sur un chemin d’intentions qui représente un ensemble d’alternatifs entre elles. Figure 41. Exemple d’un processus intentionnel composite Afin d’illustrer la composition intentionnelle dans la description de services, nous considérons le service « Edition_ Proposal_Service » qui permet de décrire une proposition commerciale et de l'envoyer au client. La Figure 41 décrit le processus intentionnel associé à ce service. Il représente un séquencement entre quatre processus intentionnels (ligne 5-16) dont l’ordre de composition doit être pris en compte lors de la satisfaction de l’intention principale. Plus précisément, d’un point de vue intentionnel, cette intention principale se compose de trois processus intentionnels atomiques, à savoir les intentions atomiques « Launch Connection » (ligne 8), « Encrypt Data » (ligne 10) et « Edit Proposal » (ligne 12). Celles-ci contribuent à la satisfaction directe de l’intention principale associée au service « Edition_ Proposal_Service ». De plus, celui-ci, et toujours d’un point de vue intentionnel, comporte une variante représentée par le processus intentionnel à variation décrit par l’intention « Send Proposal » (ligne 14). Figure 42. Exemple de processus intentionnel à variationDescripteur(intentionnel(et(contextuel :(OWLASIC 138 Cette intention « Send Proposal », comme l’illustre la Figure 42, représente un processus intentionnel présentant un choix non exclusif dans la manière de satisfaire cette intention par les deux intentions « Send Mail » (ligne 30) et « Send Fax » (ligne 32). Parmi ces deux intentions composites, au moins une devra être satisfaite. Ces deux dernières représentent deux processus intentionnels simples. Cet exemple (Figure 42) montre que pour satisfaire l’intention principale d’envoi de proposition, nous avons deux choix, soit l’envoi de la proposition par Mail et/ou l’envoi de la proposition par Fax. Dans le cadre du processus intentionnel à variation, nous croyons que la variabilité sur la réalisation de l'intention peut dépendre de certains facteurs externes. Ces facteurs concernent des informations contextuelles. Tel un service, chaque variante peut avoir des conditions contextuelles dans lesquelles elle est la plus appropriée à être satisfaite. Ainsi, nous attribuons, pour chaque variante à l’intérieur d’un processus intentionnel, une description des conditions contextuelles (cf. section 6.4). Cette description de contexte représente les circonstances dans lesquelles il est le plus approprié de satisfaire une intention à variation plutôt qu’une autre. Figure 43. Extension de OWL-S pour décrire les ressources d'un service intentionnel et les conditions contextuelles Afin de considérer l'influence du contexte sur les variantes intentionnelles, nous étendons le processus de services de OWL-S pour inclure les informations contextuelles dans la description de la variabilité du processus intentionnel mis en place par le service, comme l’illustre la Figure 43. Nous associons ainsi les conditions contextuelles pour chaque variante de ce processus. Cette description contextuelle permettra de rendre le plus explicite possible le processus intentionnel mis en place par le service. Il s’agit d’une démarche descriptive ouvrant de nouvelles possibilités à des mécanismes de découverte et de composition de services. Ainsi, une telle extension pourrait aider à choisir la variante en fonction des conditions de contexte. Nous étendons le modèle de processus OWL-S en intégrant les conditions contextuelles, comme nous allons le décrire dans la section 6.4. Grâce à notre extension OWL-SIC, nous permettons une description de la composition intentionnelle, du point de vue utilisateur final. Cette extension expose la variabilité représentant les différentes manières de satisfaire les intentions de l'utilisateur. Cette description de la composition intentionnelle ouvre la porte pour des processus de composition Processus Paramètre Entrée Sortie Condition Contextuelle aEntrée aParamètre aSortie aContext Légende owl : Class rdfs : subClassOf owl : PropertyDescripteur(intentionnel(et(contextuel :(OWLASIC 139 de services guidée par l’intention et le contexte, présenté à un haut niveau d’abstraction. Même si un tel processus dépasse le cadre de cette thèse, nous jugeons important que le descripteur OWL-SIC puisse permettre ces évolutions. Après avoir introduit notre extension de OWL-S pour inclure l’aspect intentionnel des services, nous détaillons dans la section suivante le deuxième volet de cette extension laquelle inclut l’aspect contextuel. 6.4. LA DIMENSION CONTEXTUELLE D’UN SERVICE Une intention que l'utilisateur souhaite satisfaire émerge dans un contexte donné. Cette constatation soulève l’étroite relation entre la notion de contexte et celle d'intention. Cette relation représente notre troisième hypothèse décrite dans le Chapitre 1 et doit ainsi s’exprimer dans la description de services afin de mieux satisfaire les utilisateurs en leur proposant des services qui s’adaptent à leur contexte. Nous croyons que l’intention de l'utilisateur devient moins significative si nous ne la prenons pas avec son contexte d'usage. Ceci est dû à l’influence que peut avoir le contexte sur la satisfaction de l’intention. En effet, nous croyons que le contexte joue un rôle important dans le choix de la meilleure réalisation pour satisfaire l’intention de l’utilisateur (cf. hypothèse 4 dans la section 1.3). Dans notre formalisation de l’espace de services, nous avons définit deux types de contexte auxquels un service est associé (cf. section 5.3.2.1) : le contexte dans lequel se place et s’exécute un service (Cx) et le contexte requis représentant les conditions contextuelles dans lesquelles le service est le plus apte à atteindre ses objectifs (CxR). Le contexte Cx sert non seulement à indiquer les conditions dans lesquelles le service est exécuté par son fournisseur, mais également à caractériser le positionnement de ce service dans l’espace de services. Tandis que, le contexte requis CxR représente les conditions de contexte permettant au service une meilleure possibilité de satisfaction des intentions qui lui sont associées. Nous proposons ainsi d’étendre le langage de description de services OWL-S, en incluant, d’une part, la description des conditions contextuelles dans lesquelles un service est valide et exécutable (CxR), et d’autre part, le contexte dans lequel le service se place et s’exécute (Cx). Cette extension est introduite dans la description du profil de service « Service Profile ». Ceci est parce que le profil de services représente la partie de la description qui décrit ce que fait le service et comprend également une description des exigences que le demandeur de service doit satisfaire pour utiliser le service avec succès. Ainsi, étant donné que les conditions contextuelles d’un service (CxR) doivent correspondre au contexte de l’utilisateur afin de sélectionner ce service dans le processus de découverte de services (cf. Chapitre 7), nous concluons que ces conditions contextuelles doivent faire partie de ces exigences à l’intérieur du profil de services. De plus, puisqu’un service est décrit par un contexte (Cx) qui reflète les conditions dans lesquelles il s’exécute, nous concluons que ce contexte peut être décrit également dans cette partie afin de refléter non seulement ce que fait le service mais également dans quelles conditions il l’a fait. Descripteur(intentionnel(et(contextuel :(OWLASIC 140 Selon Najar et al. (Najar et al., 2011c), une condition contextuelle (CxR) peut être considérée comme faisant partie de la description du service, car elle indique des situations auxquelles le service est mieux adapté. Toutefois, selon Kirsch-Pinheiro et al. (KirschPinheiro et al., 2008), les informations de contexte (Cx) ne peuvent pas être statiquement enregistrées dans le profil de service puisque certaines de ces informations sont capturées dynamiquement. En effet, les propriétés de contexte liées à l'exécution du service peuvent évoluer dans le temps, alors que le profil de service est censé être une description statique plutôt stable d’un service. Figure 44. Inclusion de la description contextuelle dans la description du profil de services en OWL-S Dans l’objectif d’inclure les informations de contexte, qui sont dynamiques, dans la description d’un service, nous adoptons l'approche proposée par Kirsch-Pinheiro et al. (Kirsch-Pinheiro et al., 2008). Ceci consiste à enrichir le profil de service de OWL-S par un attribut de contexte. Cet attribut introduit dans la description une URL qui fait référence à une ressource externe, laquelle contient la description de contexte. Prenons, par exemple, la description de contexte d’un service qui est contenue dans un fichier externe se trouvant à l’URI suivante : http://www.crinfo.univ-paris1.fr/ExtensionOWL-S/ContextDescription.xml. Notre extension de OWL-S revient à inclure, comme l’illustre la Figure 44, cette URI dans la description du profil à travers la balise . Cette alternative permet aux fournisseurs de services de mettre à jour plus facilement, voir d’une manière automatique, les informations de contexte sans pour autant modifier la description de service elle-même. Afin d’arriver à cette description de contexte, il nous faut donc un modèle de contexte à suivre permettant de décrire comment ces informations de contexte peuvent être représentées. Dans le cadre de notre espace de services, nous avons présenté un méta-modèle de contexte (cf. section 5.3.1) représentant une modélisation générique de contexte Cx et qui peut être instancié par les différentes approches de modélisation de contexte analysées dans la section 2.3.2. Ainsi, afin de représenter notre description de contexte, nous instancions ce métamodèle de contexte. Dans les sections suivantes, nous présentons une instanciation de notre méta-modèle de contexte qui va être utilisée, par la suite, pour représenter le contexte Cx. En se basant sur cette modélisation, nous introduisons notre description des conditions contextuelles de CxR.Descripteur(intentionnel(et(contextuel :(OWLASIC 141 6.4.1.Le modèle de contexte L’ensemble des sujets et des éléments de contexte observés dans un espace de services varient, bien évidemment, en fonction du système et du modèle de contexte mis en place. Depuis quelques années, une tendance se dégage sur les modèles de contexte les plus récents : la description sémantique de ces éléments (Najar et al., 2009). Comme nous l’avons conclu dans la section 2.3.2, de plus en plus de modèles utilisent les ontologies pour décrire ces éléments. Ces ontologies fournissent un vocabulaire représentant de la connaissance sur les informations de contexte selon le domaine (Wang et al., 2004) (Preuveneers et al., 2004) (Reichle et al., 2008). La structuration des informations contextuelles dans des ontologies a de multiples avantages. Ceci permet de partager une compréhension commune de la structure de l’information de contexte (Gu et al., 2004). De plus, la définition d’une ontologie assez riche, permet la réutilisation des connaissances représentées du domaine. Les ontologies ont également comme avantage aussi d’être extensible, permettant ainsi la réutilisation de concepts de base d’une ontologie et de l’étendre selon le domaine auquel elle s’applique. Finalement, la représentation explicite des concepts de contexte dans des ontologies permet également de raisonner sur l’ensemble de concepts. C’est pour toutes ces raisons que de plus en plus de modèles de contexte se basent sur les ontologies pour définir ces éléments. Figure 45. Concept de base de notre Modèle de contexte soutenu par une ontologie Nous proposons, dans cette section, un modèle de contexte soutenu par une ontologie. Malgré, la multitude de modélisation de contexte sous forme d’ontologie, telle que SOUPA (Chen et al., 2004), COBrA (Chen et al., 2003), CoDaMos (Preuveneers et al., 2004), entre autres, nous proposons une autre modélisation de contexte qui prend en considération tous les éléments qu’on a mis en avant lors de notre méta-modélisation de contexte. Les concepts de base de notre ontologie de contexte sont illustrés à la Figure 45. Ce modèle de contexte représente une instanciation de notre méta-modèle de contexte, présentée dans la section 5.3.1, où les concepts du modèle de contexte sont dérivés et compatibles avec les éléments clés de notre méta-modèle. Plus concrètement, nous introduisons le concept « entité de contexte » comme une instanciation du concept « sujet observé », nous gardons la même dénomination pour l’« élément de contexte » et finalement nous dérivons le concept « représentation » du concept « métadonnée ». L’ontologie de contexte que nous proposons se base sur le langage d’ontologie Web OWL (OWL - Web Ontologie Langage), ainsi tous ses concepts héritent des propriétés du concept « owl : Thing » qui représente la racine de la description OWL. Au cœur de cette ontologie, se trouve l’entité de contexte qui représente à qui/quoi l’information de contexte fait référence : utilisateur, dispositif, etc. De plus, cette Descripteur(intentionnel(et(contextuel :(OWLASIC 142 ontologie tourne autour des éléments de contexte, qui correspondent à tout élément détectable et calculable statiquement ou dynamiquement, tels que température, localisation, etc. De plus, afin de fournir une ontologie extensible qui est bien structurée et facile à comprendre, intégrer et étendre, nous utilisons une ontologie multi-niveaux. Cette ontologie, basée sur l’ontologie de contexte MUSIC (Paspallis, 2009), est conçue pour être facilement extensible par des sous-ontologies, dépendantes du domaine, en fonction du système dans lequel le modèle s’applique. Ces ontologies sont construites par niveaux que nous pouvons étendre facilement. L’utilisation d’ontologies offre une description sémantique particulièrement riche et fournit de nouvelles perspectives pour les mécanismes d’adaptation grâce aux différentes possibilités de raisonnement. Ainsi, les concepts de base de notre métamodèle sont décrits sémantiquement dans une ontologie multi-niveaux, qui étend les concepts de base de notre ontologie de contexte aux éléments les plus communs et les plus utilisés. A la Figure 46, nous représentons, à ce niveau, l’ensemble des concepts que nous avons identifiés comme couramment utilisés dans la littérature. Par exemple, « GPS » représente un héritage du concept « localisation » qui représente lui même une spécification du concept « environnement ». Cette ontologie multi-niveaux est structurée comme suit : • Ontologie générique (Niveau supérieur) décrit les informations de base de contexte dans un environnement pervasif. Ces informations sont assez génériques et communes à plusieurs domaines. A ce niveau, les concepts de base sont définis. Trois concepts de niveau supérieur sont ainsi définis (voir Figure 46) : l’utilisateur, l’environnement et l’entité informatique. Ces concepts sont organisés autour du concept « Element de Contexte » qui représente le point d’entrée pour déclarer l’ontologie de haut-niveau. L’Element de Contexte est spécialisé par la suite afin d’y représenter les concepts les plus spécifiques relatifs aux notions de l’utilisateur, l’environnement et l’entité informatique. Cette ontologie de haut-niveau est en suite spécialisée à un niveau inférieur. En effet, dans la conception de cette ontologie, le niveau supérieur de l’ontologie générique peut par la suite être étendu selon le domaine en un ensemble d’ontologies de niveau inférieur ; • Ontologie spécifique du domaine (Niveau inférieur) comporte des informations de contexte spécifiques à un domaine d’application. Le détail des informations de base de contexte, représentées dans le niveau supérieur de cette ontologie, est défini dans ce niveau inférieur qui est spécifique à un domaine donné et qui varie d’un domaine à un autre. En d’autres termes, les informations du concept représenté dans ce niveau de l’ontologie sont divisées en plusieurs sous-domaines, à l’instar du modèle de contexte proposé par Wang et al. (Wang et al., 2004). Chacun définit les détails et les propriétés spécifiques pour un domaine d'application donné. Par exemple, le concept « localisation » de l’ontologie de haut niveau peut être spécifié en « localisation Architecturale » qui est de même spécifiée en « bâtiment », « chambre » et « passage », entres autres. Dans un autre domaine, ce concept « localisation » peut être spécifié en « localisation GPS » qui a comme propriétés : « longitude », « latitude » et « altitude ».Descripteur*intentionnel*et*contextuel :*OWL3SIC 143 Figure 46. Ontologie multi-niveaux de contexte Element de Contexte Utilisateur Environnement Entité de Calcul Profile Activité Rôle ... Temps Condition physique Localisation ... Ressource Dispositif Réseau Application ... Ontologie générique : Ontologie de haut niveau Ontologie-spécifique du domaine : Ontologie de bas niveau Rôle Condition physique Profile name age expertise Activité Déplacement Réunion Conférence Commercial Directeur Technicien température humidité bruit Localisation Architecturale Batiment Chambre Passage Localisation GPS longitude lattitude altitude << Espace de service au travail >> << Espace de service à la maison >> owl : Thing Entité de Contexte Représentation Représentation par Défaut Utilisateur Dispositif Homme Femme Représentation Localisation Représentation Localisation GPS Représentation Architecturale ... ... Dispositif de communication Ordinateur ... ... ... Légende owl : Class (haut niveau) owl : Class (bas niveau) rdfs : subClassOf owl : PropertyDescripteur!intentionnel!et!contextuel :!OWL3SIC 144 A partir des éléments définis sur l’ontologie de haut niveau, nous pouvons distinguer trois catégories pour les éléments de contexte qui y sont représentés : • L’utilisateur joue un rôle central au sein de l’environnement pervasif, puisque bien souvent les systèmes pervasifs cherchent à s’adapter à l’utilisateur. Cette adaptation à l’utilisateur représente d’ailleurs un des principes fondateurs de l’Informatique Pervasive, laquelle soutient que l’informatique doit s’adapter à l’utilisateur et non l’inverse. Les concepts de cette catégorie décrivent ainsi l’utilisateur et tout ce qui lui est rattaché. Ces éléments de contexte sont ainsi observés à partir d’un sujet représentant l’utilisateur. Parmi les concepts plus importants de cette catégorie, on peut citer : profil, rôle, activité, etc. ; • L’environnement représente un élément clé dans la spécification de contexte puisque l’utilisateur est représenté dans un environnement avec lequel il interagit. L’environnement peut être de différentes natures : physique (GPS, température, localisation, etc.), logique (mémoire disponible sur le terminal, préférences de l’utilisateur, etc.) et organisationnel (rôle de l’utilisateur, état d’exécution d’un processus, etc.). Cette catégorie comporte des informations sur la localisation, le temps, et de manière plus générale, le contexte physique représentant les conditions environnementales. De manière générale, ces éléments de contexte correspondent à l’observation d’un environnement physique autour d’un sujet donné, le plus souvent l’utilisateur, même si d’autres entités seraient également possibles (la localisation d’un terminal ou d’un capteur, par exemple). ; • L’entité de calcul représente la description du matériel et du logiciel dans l’environnement observé bien souvent, spécifique à un dispositif (sujet). Cela comprend la spécification du type du réseau, de la bande passante disponible, de la taille de la mémoire d’un dispositif, etc. Cette modélisation va nous permettre de décrire le contexte dans lequel s’exécute le service (Cx) (cf. section 6.4.2). Quant au contexte requis (CxR) (cf. section 6.4.3), il va être structuré de la même manière que Cx. Par contre, puisqu’il représente des conditions contextuelles, ceci nécessite un langage sémantique adéquat pour pouvoir représenter ces conditions. Ainsi, nous répartissons la description globale de contexte du service, qui est enregistrée dans le fichier externe, en deux parties. D'un côté, nous décrivons les informations de contexte qui se réfèrent aux conditions contextuelles (CxR) dans lesquelles il est plus utile de sélectionner et appeler ce service. Cette partie sera décrite dans un bloc intitulé « condition ». De l'autre côté, nous décrivons le contexte dans lequel un service s’exécute (Cx). Cette partie sera décrite dans un bloc intitulé « state » et fera référence aux conditions de contexte dans lesquelles un service est exécuté par le fournisseur de services (l'état dans lequel le service est exécuté). Nous détaillons la description de contexte d’exécution Cx ainsi que le contexte requis CxR d’un service dans les sections suivantes. Descripteur!intentionnel!et!contextuel :!OWL3SIC 145 6.4.2.Le contexte d’exécution d’un service (Cx) Selon cette modélisation de contexte, présentée dans la section précédente, nous représentons le contexte d’exécution d’un service Cx dans une partie nommée « state » du fichier de description contextuelle. Ce contexte Cx est décrit comme un ensemble d’observations acquises par des capteurs (cf. section 5.3.2.1). Chaque observation est décrite par l’entité que nous avons observée, l’élément de contexte attribué à cette entité, ainsi que la valeur associée à cet élément et sa représentation. Pour illustrer cette description de contexte Cx, nous penons l’exemple de l’intention « prepare proposal » satisfaite par le service « edition proposal service ». Ce service a été exécuté dans un contexte décrivant, entre autre, l’observation de la taille de l’écran de son dispositif qui était égale à 10 pouces et l’observation de sa localisation qui était en France. Nous représentons, dans la Figure 47, l’observation de la localisation de l’utilisateur. Figure 47. Exemple d'une observation de contexte du service Cx Cette observation est décrite dans la partie « context state » (ligne 3-25 de la Figure 47). Elle décrit l’élément de contexte localisation (ligne 6-7) de l’entité observé utilisateur (ligne 4-5). Plus spécifiquement, cette observation capture la ville dans laquelle se trouve l’utilisateur (ligne 10-12). L’élément de contexte ville représente une spécification de l’élément de contexte localisation dans l’ontologie multi-niveaux de contexte (cf. section 6.4.1). Ceci représente l’association qui peut exister entre les éléments de contexte représentée dans notre méta-modèle de contexte (cf. section 5.3.1). Dans cette observation, la valeur associée à la localisation de l’utilisateur est France (ligne 20). Cette valeur est représentée sous la forme d’une localisation par ville (ligne 13-15). Inspiré de cette modélisation et description contextuelle de Cx, nous décrivons dans la section suivante le contexte requis d’un service (CxR). Descripteur!intentionnel!et!contextuel :!OWL3SIC 146 6.4.3.Le contexte requis par un service (CxR) En se basant sur la modélisation de contexte Cx, nous représentons le contexte requis d’un service CxR dans une partie nommée « condition » du fichier de description contextuelle. Ce contexte CxR est décrit comme un ensemble de conditions contextuelles (cf. section 5.3.2). Chaque condition contextuelle est décrite par l’entité sur laquelle porte la condition, l’élément de contexte attribué à cette entité, ainsi que la condition. Cette condition est exprimée par un ensemble d’opérateurs. D’une part, ces opérateurs peuvent être des opérateurs simple, tels que l’égalité, la différence, l’intervalle, la supériorité et l’infériorité. D’autre part, ces opérateurs peuvent être plus complexes, par exemple un opérateur permettant de déterminer si la localisation de l’utilisateur se trouve dans une zone particulière. Il est à noter que certains de ces opérateurs nécessitent des opérations de transformation d’une représentation à une autre pour pouvoir évaluer la satisfaction de la condition. Figure 48. Exemple d'une condition de contexte CxR Pour illustrer cette description de contexte CxR, nous penons le même exemple utilisé dans la section précédente. Notre objectif est de porter une condition qui permet d’évaluer la satisfaction de l’observation décrite dans la Figure 47. D’une manière générale, cette condition permet d’évaluer si la localisation de l’utilisateur (France) satisfait la condition qui indique que ce service exige que la localisation soit en Europe. Cette condition contextuelle est décrite dans la partie « context condition » (ligne 3-26 de la Figure 48). Elle porte sur l’élément de contexte localisation (ligne 6-7) de l’entité utilisateur (ligne 4-5). Plus spécifiquement, cette condition emploie un opérateur « Location-In » (ligne 20) sur une valeur de localisation qui est l’Europe (ligne 21). Ceci veut dire que la condition portée sur la Descripteur!intentionnel!et!contextuel :!OWL3SIC 147 localisation observée par Cx doit être en Europe. Si cette localisation observée se trouve en Asie par exemple, alors cette condition du service ne sera pas satisfaite. Dans ce cadre, nous rappelons que les conditions contextuelles d’une intention à variation, décrite dans la section 6.3.2, sont décrites de la même manière que le contexte CxR du service. D’une manière conceptuelle, un contexte requis CxR peut être attribué soit à un service soit à une intention à variation. 6.5. CONCLUSION Nous avons proposé, dans le cadre de ce chapitre, un descripteur sémantique des services intentionnels et sensibles au contexte. Ce descripteur, à l’encontre des différentes approches présentées dans le Chapitre 3, propose une extension de OWL-S qui combine et exploite la relation entre le contexte et l'intention dans la description du service. Une telle description guidée par le contexte et l’intention est essentielle dans le cadre d’un SIP transparent et centré utilisateur, celui-ci doit se caractériser par son adaptabilité au contexte et sa compréhension de l’utilisateur et de ses besoins. Cette description complète notre proposition de l’espace de services, puisqu’elle permet de décrire l’ensemble de services qu’il englobe. Ainsi, avec la description de l’ensemble des services disponibles dans cet espace, nous pouvons avoir une réelle visibilité et une description de celui-ci. De plus, ce descripteur intentionnel et contextuel sera exploité par les mécanismes de découverte (cf. Chapitre 7) et de prédiction (cf. Chapitre 8) de services puisqu’ils interagissent avec un répertoire de services décrit selon ce descripteur. Cependant, il convient de souligner que les mécanismes de découverte et de prédiction, que nous allons présenter dans le Chapitre 7 et le Chapitre 8 n’exploitent pas, pour autant, toute la description intentionnelle et contextuelle que nous avons présentée dans ce chapitre. Ces deux mécanismes vont interagir notamment avec le profil de service de OWL-SIC, la partie de la description de services qui indique ce que fait le service. Cette partie comprend une description de contexte et des intentions possibles de ce service. C’est elle qui va être traitée dans le processus de découverte et de prédiction de services. Ceci n’empêche pas que l’extension décrivant le processus intentionnel peut être exploitée par un mécanisme de composition de services lequel pourrait gérer la variabilité et la composition dans la satisfaction de l’intention de l’utilisateur, selon des contraintes contextuelles spécifiques. Cette partie est en dehors de la portée de notre travail de thèse et reste ici en tant que travaux futurs. Découverte!de!services!guidée!par!l’intention!et!le!contexte 148 Chapitre 7. DECOUVERTE DE SERVICES GUIDEE PAR L’ INTENTION ET LE CONTEXTE 7.1. INTRODUCTION Aujourd’hui, nous constatons que l’utilisateur interagit avec une panoplie de dispositifs et de services offerts par l’ensemble des SI qui nous entourent. Alors que de grands efforts ont été concentrés sur la recherche sémantique et sur l'adaptation au contexte, surtout à la localisation et aux dispositifs utilisés, nous constatons aujourd'hui les limitations de ces approches, notamment une certaine surcharge de l’utilisateur dû aux « faux-positifs ». Les utilisateurs se voient proposer plusieurs implémentations pour un même service, sans avoir pour autant le bagage nécessaire pour comprendre ces implémentations, ce qui nuit à la transparence d'utilisation de ces systèmes. La clé du succès serait donc d'offrir à l'utilisateur le service qui satisfait ses besoins, sans qu'il soit forcé de comprendre des détails sur l'implémentation ou sur les contraintes des dispositifs utilisés. Nous pensons que seulement une approche centrée sur l'utilisateur sera capable d'apporter des services adaptés au contexte d'utilisation tout en gardant un niveau de transparence convenable. C'est dans ce souci que nous proposons, dans le cadre de ce chapitre, un processus de découverte de services guidé non seulement par le contexte de l’utilisateur, mais également par son intention. Ce processus s’encadre donc dans une vision plus globale, celle avancée par la notion d’espace de services (cf. Chapitre 5), laquelle soutient une vision centrée utilisateur pour les SIP. Tel que nous l’avons défini à travers la notion d’espace de services, une intention représente les exigences formulées par l'utilisateur, qui sait ce qu'il attend d'un service mais qui ne sait pas indiquer comment y parvenir. Ces intentions émergent dans un contexte d’utilisation précis. Il s'agit d'un élément important dans le processus d'adaptation d’un système, processus que nous souhaitons enrichir par la notion d’intention. Nous pensons non seulement que la satisfaction des intentions de l'utilisateur dans un SIP dépend du contexte dans lequel se trouve cet utilisateur, mais aussi que le contexte impacte la manière dont les intentions sont satisfaites, tout comme le contexte impacte le choix des services qui seront exécutés. Cette relation peut être exploitée dans la découverte de services : grâce à l'observation de l'intention et du contexte d’utilisation, un processus de découverte plus précis peut être mis au point, offrant aux utilisateurs les services les plus adaptés à leurs besoins. Dans ce chapitre, nous présentons un processus de découverte de services à la fois contextuel et intentionnel. Ce processus se base sur un principe de mise en correspondance entre l’intention de l’utilisateur, formulée dans sa requête, et les intentions des services, d’une part, et entre le contexte courant de l’utilisateur et les conditions contextuelles associées aux services, d’autre part. Nous présentons, par la suite, une implémentation de ce mécanisme et Découverte!de!services!guidée!par!l’intention!et!le!contexte 149 analysons les résultats des expérimentations menées notamment par rapport au passage à l’échelle, à la précision et au rappel. Ces trois critères nous semblent particulièrement importants, puisqu'ils démontrent non seulement la faisabilité de l'approche, mais également son intérêt pour une découverte plus appropriée aux utilisateurs. 7.2. PROCESSUS DE DECOUVERTE DE SERVICES GUIDE PAR L’ INTENTION ET LE CONTEXTE 7.2.1.Principe Un utilisateur interagit avec un SIP à travers l’espace de services. Cette interaction reflète le désir de l’utilisateur d’avoir un SIP qui soit capable de satisfaire ses besoins (formulés en termes d’intentions) selon son contexte d’usage. Ceci consiste à lui offrir, en toute transparence, le service le plus adapté à son contexte courant et le plus approprié à ses intentions. Ainsi, découle le besoin de présenter un nouveau processus de découverte de services qui prend en considération le contexte et l’intention de l’utilisateur lors de cette phase de découverte du service le plus approprié. Par conséquence, nous proposons un processus de découverte de services guidée par l'intention et le contexte. Ce processus se base sur un algorithme de mise en correspondance (matching) des services. Cet algorithme va permettre de comparer sémantiquement, et en se basant sur un ensembles de mesures de similarité, l’intention et le contexte de l’utilisateur avec chaque service disponible dans le répertoire de services (cf. Chapitre 9). Dans ce cadre, le concept d'intention est utilisé pour exposer les services et mettre en œuvre une vision centrée utilisateur des SIP dans un contexte donné. Nous soutenons qu’une meilleure prise en compte de l'intention de l'utilisateur peut conduire à une meilleure compréhension de l'utilisation réelle des services, ce qui par conséquent peut améliorer la précision et le rappel des services choisis pour satisfaire les besoins des utilisateurs. Par ailleurs, les informations contextuelles jouent un rôle central dans ce processus de découverte de services car elles influencent le choix des meilleures stratégies de satisfaction de l'intention. Ce processus de découverte est proposé afin de masquer la complexité de la mise en œuvre des services dans un environnement hétérogène et dynamique, et par conséquent d'atteindre la transparence promise et l'efficacité souhaitée des Systèmes d'Information Pervasifs (Najar et al., 2012a) (Najar et al., 2012b). En d’autres termes, ce processus est proposé afin d’assurer un certain niveau de transparence et d’efficacité des systèmes, en s’adaptant au contexte (permettant ainsi une meilleure gestion de l’hétérogénéité) et en prenant en considération l’intention (permettant ainsi une meilleure compréhension de l’utilisateur et de l'utilisation réelle des services). Ceci permet, par conséquent, d’améliorer la sélection des services en réduisant les services « faux-positifs » offerts à l’utilisateur. Découverte!de!services!guidée!par!l’intention!et!le!contexte 150 Figure 49. Interaction avec le module de découverte de services dans le cadre de l’architecture de gestionnaire de SIP Dans l’architecture proposée dans le Chapitre 9, le processus de découverte de services, comme l’illustre la Figure 49, se déclenche lorsqu’il reçoit une demande de la part du module de gestion de requête. Plus précisément, lorsqu’un utilisateur envoie sa requête sous forme d’intention, cette requête est prise en compte par le module de gestion de requête. Ce dernier communique, ensuite, avec le module de gestion de contexte afin d’enrichir l’intention de l’utilisateur avec son contexte courant. Par la suite, il envoie cette requête enrichie au module de découverte de services. Dès lors, le module de découverte de services interagit avec le répertoire de services intentionnels et contextuels pour charger les services disponibles. Par la suite, il lance son mécanisme de découverte pour trouver le service qui répond au mieux à l’intention et au contexte de l’utilisateur. Le processus de découverte de services, en fonction de ces deux concepts de contexte et d’intention, aidera les utilisateurs à découvrir le service le plus approprié pour eux. Ce processus représente celui qui répond aux besoins immédiats de l'utilisateur dans un contexte donné. Il utilise la description de services sémantiques, que nous avons présentée dans le Chapitre 6, dans un algorithme de découverte de services guidé par l’intention et le contexte, qui sera présenté dans la suite de ce chapitre. Cet algorithme effectue une mise en correspondance sémantique afin de sélectionner le service le plus approprié à l'utilisateur. Le but de cet algorithme est de classer les services disponibles en fonction de leurs informations contextuelles et intentionnelles. Il sélectionne, ensuite, celui qui répond au mieux à l’intention immédiate de l’utilisateur dans son contexte courant. 7.2.2. Algorithme de découverte de services guidée par le contexte et l’intention Dans cette section, nous présentons l’algorithme de découverte de services selon une vision intentionnelle et contextuelle, comme l’illustre la Figure 50. Cet algorithme se compose d’une première phase de mise en correspondance intentionnelle (cf. section 7.2.2.3), qui permet de déterminer si l’intention du service correspond sémantiquement à l’intention de l’utilisateur, et d’une deuxième phase de mise en correspondance contextuelle (cf. section Découverte!de!services!guidée!par!l’intention!et!le!contexte 151 7.2.2.4), qui permet de déterminer si la description de contexte associée à un service correspond à la description de contexte courant de l’utilisateur. Le résultat final représente le service qui répond au mieux à l’intention et au contexte de l’utilisateur. Figure 50. Principe de la découverte de services selon une vision intentionnelle et contextuelle 7.2.2.1. Concepts préliminaires : les mesures de similarités et la mise en correspondance sémantique Une mesure de similarité représente une métrique qui calcule une distance entre deux éléments en se basant sur des fonctions plus ou moins adaptées au type des éléments utilisés. Parmi ces mesures de similarités, nous pouvons citer, par exemple : • La mesure de similarité euclidienne (d) représente une mesure qui calcule la distance entre deux vecteurs x et y de dimension n, comme l’illustre la Formule 1. ! (!, !) = !! − !! ! ! !!! Formule 1. Mesure de similarité euclidienne • La mesure de similarité cosinus (θ) représente une mesure qui permet de calculer, comme l’illustre la Formule 2, la similarité entre deux vecteurs A et B à n dimension en déterminant un angle θ entre eux. Cet angle s'obtient par le produit scalaire et la norme des vecteurs. ! (!, !) = !"##$% ! . ! ||!||. ||!|| Formule 2. Mesure de similarité cosinus • La mesure de similarité sémantique (ds) représente une mesure qui calcule la distance sémantique (normalisée) entre deux concepts en se basant sur leur lien sémantique dans une ontologie. Ce lien représente les relations de généralisation et de spécialisation entre les concepts. Cette distance est calculée selon la Formule 3, où l représente le nombre de liens qui séparent un concept a d’un concept b. Découverte!de!services!guidée!par!l’intention!et!le!contexte 152 !" (!, !) = 1 (! + 1) Formule 3. Mesure de similarité sémantique Un certain nombre de travaux de recherche utilisant ces mesures ont été menés dans la découverte des services sémantiques, tel que nous l'avons détaillé dans la section 3.5.2. La plupart de ces travaux, tels que (Paolucci et al., 2002) et (Klusch et al., 2009), se basent sur le principe de la mise en correspondance sémantique entre deux concepts. Ceci correspond à une comparaison entre deux concepts en se basant sur leur niveau hiérarchique dans une ontologie. Plus précisément, la mise en correspondance sémantique se base sur la mesure de la similarité sémantique afin de calculer la distance sémantique qui sépare ces deux concepts. Cette mise en correspondance permet ainsi de déterminer la relation de subsomption entre deux concepts dans une ontologie. Cette relation de subsomption permet de lier des concepts spécifiques à des concepts plus génériques dans une ontologie. Dans l’algorithme de mise en correspondance de services, que nous proposons dans la section suivante, nous appliquons différents types de mesures de similarité : (i) des mesures de similarité sémantique entre les intentions (entre les cibles décrites dans l’ontologie des cibles (cf. section 7.2.2.3.1) et entre les verbes dans l’ontologie des verbes (cf. section 7.2.2.3.2)) ; (ii) des mesures de similarité sémantique entre les contextes (entre les entités, les éléments et les représentation de contexte dans l’ontologie multi-niveaux de contexte (cf. section 7.2.2.4.1)) ; et (iii) d’autres types de mesures de similarité appliqués essentiellement sur les valeurs des éléments de contexte observés (cf. section 7.2.2.4.1). 7.2.2.2. L’algorithme de mise en correspondance de services guidée par le contexte et l’intention D’une manière générale, l’algorithme de mise en correspondance que nous proposons se décompose en quatre étapes, comme indiqué schématiquement dans la Figure 51. Pour chaque service disponible, l'intention de l'utilisateur est d’abord comparée à l'intention principale associée à ce service (étape 1.1). Ensuite, le contexte courant de l’utilisateur est comparé, sémantiquement et en se basant sur des mesures de similarités, aux conditions de contexte associées au service (CxR) (étape 1.2). Finalement, le score du degré de mise en correspondance final entre la requête de l'utilisateur (représentant son intention enrichie par son contexte courant) et chacun des services disponibles dans le répertoire de services est calculé (étape 1.3). Ce score va définir le classement de chaque service répondant à l’intention et au contexte de l’utilisateur. À partir de ce classement, le service qui obtient le score le plus élevé est proposé à l'utilisateur. Découverte!de!services!guidée!par!l’intention!et!le!contexte 153 Figure 51. Aperçu du processus de découverte de service guidée par le contexte et l'intention Plus en détails, nous présentons, dans la Figure 52, notre algorithme de mise en correspondance de services. Cet algorithme prend en entrée une intention présentant le besoin de l’utilisateur (Iu), une description du contexte courant de l’utilisateur (Cxu) et un ensemble de services disponibles (Sv) dans le répertoire de services intentionnels et contextuels, décrit en OWL-SIC (cf. Chapitre 6). De plus, il prend en entrée un ensemble d’ontologies, à savoir une ontologie de cibles (OntoT), une ontologie de verbes (OntoV) (cf. section 6.3.1.3) et une ontologie multi-niveaux de contexte (OntoCX) (cf. section 6.4.1). L’algorithme de mise en correspondance produit à la sortie, une liste qui contient les couples . Le service svi représente le service candidat qui peut répondre à l’intention de l’utilisateur dans son contexte. Le degré de similarité Sscore représente le degré de similarité entre l’intention et le contexte du service svi et de l’utilisateur U. Procedure Service Discovery (Cx u, I u, Sv, OntoT, OntoV, OntoCX ) (1) Sranked = Ø /* Liste des services classés avec leur score de mise en correspondance */ (2) Iscore = 0 /* Degré de similarité entre Iu et l’intention du service (Isvi) */ (3) Cscore = 0 /* Degré de similarité entre Cxu et le contexte du service (Cxsvi) */ (4) Sscore = 0 /* Score final de la mise en correspondance entre (Iu, Cxu) et (Isvi, Cxsvi) */ (5) For each svi ∈ Sv Do (6) Cxsvi = GetContext (svi) (7) Isvi = GetIntention (svi) (8) Iscore = IntentionMatching (Iu, Isvi, OntoT, OntoV) /* Mise en correspondance intentionnelle */ (9) If Iscore > α Then (10) Cscore = ContextMatching (Cxu, Cxsvi, OntoCX) /* Mise en correspondance contextuelle */Découverte!de!services!guidée!par!l’intention!et!le!contexte 154 (11) If Cscore > β Then (12) Sscore = (Iscore + Cscore)/2 (13) Sranked = Sranked ∪ {} (14) End If (15) End If (16) End For (17) svselected = GetBestService (Sranked) /* Retourne le service ayant le score le plus élevé */ (18) Return svselected (19) End Procedure Figure 52. Algorithme de découverte de services basée sur l’intention et le contexte Dans cet algorithme, nous précisons deux paramètres α et β qui prennent leurs valeurs dans l’intervalle [0,1]. Le paramètre α représente le seuil au-delà duquel l’algorithme procède à la mise en correspondance contextuelle. Si le degré de similarité des intentions est supérieur ou égal au seuil α, alors l’algorithme lance la mise en correspondance entre les contextes. Le paramètre β représente le seuil au-delà duquel l’algorithme procède au calcul du score global de la mise en correspondance et de l’ajout du service parmi la liste des services candidats. Si le degré de similarité des descriptions de contexte est supérieur ou égal au seuil β, alors l’algorithme considère ce service comme service candidat potentiel répondant au contexte de l’utilisateur. Le paramètre α permet de configurer de manière indirecte la distance d’expression de l’intention de l’utilisateur avec celle associée à un service. Le seuil β, quant à lui, permet de paramétrer la distance d’expression du contexte de l’utilisateur avec le contexte requis du service. La configuration d’un seuil α très élevé, proche de un, implique inévitablement que l’utilisateur connaît exactement la formulation des intentions associées aux services et l’utilisateur ne peut pas être dans un mode exploratoire ou dynamique. Par contre, la configuration d’un seuil α très bas, permet un meilleur mode exploratoire mais peut conduire à la sélection de services qui n’intéressent pas l’utilisateur. Ainsi, il est important de bien définir le seuil de paramétrage α en fonction de l’usage qu’on souhaite faire du système. Un seuil β très élevé correspond à un couplage fort entre la description contextuelle des services et celle du contexte courant de l’utilisateur. Ce couplage fort entraîne un coût de maintenance élevé lorsque le modèle de contexte évolue ou freine la réutilisation potentielle des services en fonction d’un contexte. Par contre, un seuil β très bas peut engendrer la sélection d’un service inapproprié au contexte. C’est pour cette raison qu’il faut bien spécifier le seuil de paramétrage β en fonction de la complexité de la description du modèle de contexte et de son niveau de généralisation/spécialisation. Ces deux paramètres α et β sont définis au préalable par le concepteur du système de manière empirique en fonction des scénarios. Ainsi, le concepteur est amené à tester l’algorithme avec son propre jeux de tests en utilisant son répertoire de services et ses ontologies. A chaque fois, il doit modifier les seuils et évaluer les résultats obtenus. Ceci va Découverte!de!services!guidée!par!l’intention!et!le!contexte 155 lui permettre de trouver le seuil le plus approprié sélectionnant les résultats les plus pertinents. Ainsi, l’avantage d’un tel seuil de paramétrage est son adaptation au cas par cas. Toutefois, cette évaluation empirique demande un effort supplémentaire du concepteur. L’algorithme de mise en correspondance, comme l’illustre la Figure 52, commence par sélectionner un service (svi) parmi les services disponibles dans le répertoire (ligne 5). Ensuite, le contexte (Cxsvi) et l’intention (Isvi) du service (svi) sont récupérés (ligne 6-7). Après avoir récupéré toutes ces informations, l’intention (Isvi) est mise en correspondance sémantiquement avec l’intention de l’utilisateur (Iu). Le degré de similarité résultant est par la suite stocké dans la variable Iscore (ligne 8). Le score Iscore est par la suite comparé au seuil  (ligne 9). Si le score est inférieur au seuil alors l’algorithme ne traite pas la mise en correspondance contextuelle et passe directement au service suivant. Ceci est parce que le service en cours de traitement n’est pas capable de satisfaire l’intention de l’utilisateur. Ainsi, même si ce service peut correspondre au contexte courant de l’utilisateur, il ne sera pas sélectionné puisqu’il ne répond pas au besoin de l’utilisateur. Ce choix va nous permettre de gagner en performance en évitant un traitement (mise en correspondance contextuelle) inutile. Par contre, si le degré de similarité Iscore est supérieur ou égal au seuil  alors le contexte de l’utilisateur (Cxu) est évalué par rapport au contexte requis du service (CxRsvi). Le degré de similarité résultant est par la suite stocké dans la variable Cscore (ligne 10). Le score Cscore est ensuite comparé au seuil (ligne 11). Si le score est inférieur au seuil alors l’algorithme ne sélectionne pas le service comme service candidat et passe directement au service suivant. Dans le cas contraire, le degré de similarité final (Sscore) est, par la suite calculé selon la formule suivante Sscore = (Iscore + Cscore) / 2 (ligne 12). Par la suite, le service et son degré de similarité sont enregistrés dans la liste des services candidats (Sranked) (ligne 13). Finalement, si un autre service est toujours disponible, alors l’algorithme relance la même démarche décrite ci-dessus. Sinon, l’algorithme sélectionne le service (svselected) ayant le score le plus élevé (ligne 17) et le retourne comme résultat final (ligne 18). Les sections suivantes détaillent chacune des étapes de l’algorithme de mise en correspondance de services guidé par l’intention et le contexte. 7.2.2.3. La mise en correspondance intentionnelle des services La correspondance intentionnelle (Intention Matching) représente la première étape de l’algorithme de mise en correspondance guidée par l’intention et le contexte. Celle-ci consiste à comparer sémantiquement l’intention de l’utilisateur (IU), qui représente son besoin lors de sa demande d’un service, et l’intention principale (Isvi) qu’un service peut satisfaire. Dans le cadre de ce processus de découverte de services, nous formulons l’intention selon le modèle de Prat (Prat, 1997). Nous avons choisi de représenter l’intention sous forme de verbe et de cible puisqu’ils représentent les éléments de base d’une intention et qui sont obligatoires lors de sa représentation. Nous estimons que la prise en compte des paramètres dans cette étape peut nuire à la qualité des résultats obtenus. Par exemple, Frioui (Frioui, https://hal.archives-ouvertes.fr/tel-00989775/document Analyse de d´ependances ML pour les ´evaluateurs de logiciels critiques. Vincent Benayoun To cite this version: Vincent Benayoun. Analyse de d´ependances ML pour les ´evaluateurs de logiciels critiques.. Software Engineering. Conservatoire national des arts et metiers - CNAM, 2014. French. . HAL Id: tel-01062785 https://tel.archives-ouvertes.fr/tel-01062785 Submitted on 10 Sep 2014 HAL is a multi-disciplinary open access archive for the deposit and dissemination of scientific research documents, whether they are published or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers. L’archive ouverte pluridisciplinaire HAL, est destin´ee au d´epˆot et `a la diffusion de documents scientifiques de niveau recherche, publi´es ou non, ´emanant des ´etablissements d’enseignement et de recherche fran¸cais ou ´etrangers, des laboratoires publics ou priv´es.CONSERVATOIRE NATIONAL DES ARTS ET MÉTIERS École Doctorale Informatique, Télécommunication et Électronique CEDRIC - Centre d’Étude et De Recherche en Informatique et Communications THÈSE DE DOCTORAT présentée par : Vincent BENAYOUN soutenue le : 16 MAI 2014 pour obtenir le grade de : Docteur du Conservatoire National des Arts et Métiers Discipline / Spécialité : Informatique / Preuve formelle Analyse de dépendances ML pour les évaluateurs de logiciels critiques THÈSE dirigée par Mme. DUBOIS Catherine Professeur, ENSIIE - CEDRIC M. PESSAUX François Maître de conférences, ENSTA ParisTech RAPPORTEURS M. DI COSMO Roberto Professeur, Université Paris Diderot Mme. BLAZY Sandrine Professeur, Université de Rennes 1 EXAMINATEURS M. RAJCHENBACH-TELLER David Ingénieur R&D, Mozilla M. POTET Marie-Laure (Présidente) Professeur, Ensimag - VERIMAG2Remerciements Je tiens tout d’abord à remercier vivement Catherine Dubois, qui m’a guidé tout au long de mon parcours depuis mon passage à l’école d’ingénieur jusqu’à aujourd’hui. Elle m’a fait découvrir OCaml sous un nouveau jour et m’a ainsi permis d’apprécier à leur juste valeur les bienfaits du typage fort. Elle m’a ensuite donné le goût des méthodes formelles et m’a introduit dans l’équipe CPR du CNAM où j’ai découvert le monde de la recherche en réalisant ma première véritable modélisation formelle sous la direction de Maria-Virginia Aponte et de Marianne Simonot, que je remercie également pour cette expérience très inté- ressante. Catherine a ensuite pris la direction de ma thèse lors mon entrée à MLstate jusqu’à la rédaction de ce manuscrit. Elle a su gérer les nombreuses péripéties de mon parcours de thèse et m’accompagner jusqu’au bout en me prodiguant de nombreux conseils précieux. Je remercie Roberto Di Cosmo et Sandrine Blazy d’avoir accepté le rôle de rapporteurs de cette thèse et d’avoir fourni les efforts nécessaires à compréhension fine de mon travail. Merci pour leurs remarques judicieuses et leurs questions pertinentes. Je remercie également Marie-Laure Potet pour son implication dans mon jury de thèse en tant que présidente. Mon parcours de thèse à commencé à MLstate. Je remercie donc Henri Binsztok de m’avoir proposé de rejoindre MLstate en thèse CIFRE. J’ai eu l’occasion d’y travailler avec une équipe géniale. Je souhaite tout particulièrement remercier mes encadrants Catherine, David Teller, Pierre Courtieu et Adam Koprowski qui m’ont beaucoup apporté. David m’a guidé au quotidien dans toutes mes activités à MLstate, il s’est battu sans cesse pour la réussite de ma thèse, comme il l’a fait pour tout le projet OPA en géné- ral. C’est un homme qui a les épaules pour être partout à la fois et s’occuper de chaque chose avec intelligence et efficacité. Pierre et Adam m’ont appris à maîtriser Coq, ce qui m’a beaucoup aidé pour réaliser les preuves que je présente dans ce manuscrit. Je remercie également tous les membres de l’équipe avec qui j’ai travaillé à MLstate, en particulier Mikołaj Konarski avec qui j’ai eu grand plaisir à travailler et pour qui j’ai un grand respect. Catherine m’a donné toute sa confiance et ses encouragements en me permettant de continuer mon parcours de thèse après mon départ de MLstate. Elle m’a proposé avec le concours de Thérèse Hardin un nouveau sujet de thèse que je présente aujourd’hui dans ce manuscrit. Je tiens à remercier sincèrement Thérèse qui a suivi mon parcours d’un œil bienveillant et m’a donné des conseils judicieux aux moments opportuns. Sur son conseil, je me suis dirigé vers MLstate et sur son conseil, j’ai pris la suite de la thèse de Philippe Ayrault. Je remercie d’ailleurs Philippe pour le temps qu’il m’a consacré afin de m’expliquer les dé- tails de son analyse de dépendances ainsi que les besoins spécifiques, en tant qu’évaluateur de logiciels critiques, qui l’ont amené à faire certains choix. Je remercie François Pessaux d’avoir assuré l’encadrement de ma thèse aux côtés de Catherine. Il a su me transmettre son expérience et sa rigueur intellectuelle. En particulier il m’a permis de mieux comprendre les besoins des évaluateurs de logiciels critiques en partageant son expérience dans le domaine. Ces remerciements ne pourraient être complets sans remercier mes parents et mon frère qui m’ont toujours apporté leur soutien et leurs encouragements ainsi que ma chère femme qui me soutient par son amour et ses délicates attentions et nos deux petites princesses, qui par leurs jolies voix m’ont aidé à ne pas somnoler devant l’ordinateur pendant les nombreuses nuits passées en compagnie de Coq et de Latex.REMERCIEMENTS 4Résumé Les logiciels critiques nécessitent l’obtention d’une évaluation de conformité aux normes en vigueur avant leur mise en service. Cette évaluation est obtenue après un long travail d’analyse effectué par les évaluateurs de logiciels critiques. Ces derniers peuvent être aidés par des outils utilisés de manière interactive pour construire des modèles, en faisant appel à des analyses de flots d’information. Des outils comme SPARK-Ada existent pour des sousensembles du langage Ada utilisés pour le développement de logiciels critiques. Cependant, des langages émergents comme ceux de la famille ML ne disposent pas de tels outils adaptés. La construction d’outils similaires pour les langages ML demande une attention particulière sur certaines spécificités comme les fonctions d’ordre supérieur ou le filtrage par motifs. Ce travail présente une analyse de flot d’information pour de tels langages, spécialement conçue pour répondre aux besoins des évaluateurs. Cette analyse statique prend la forme d’une interprétation abstraite de la sémantique opérationnelle préalablement enrichie par des informations de dépendances. Elle est prouvée correcte vis-à-vis d’une définition formelle de la notion de dépendance, à l’aide de l’assistant à la preuve Coq. Ce travail constitue une base théorique solide utilisable pour construire un outil efficace pour l’analyse de tolérance aux pannes. Mots clés : analyse de dépendances, logiciels critiques, langages fonctionnels, Coq, preuve de correction, analyse statique, interprétation abstraite 5Abstract Critical software needs to obtain an assessment before commissioning in order to ensure compliance with standards. This assessment is given after a long task of software analysis performed by assessors. They may be helped by tools, used interactively, to build models using information-flow analyses. Tools like SPARK-Ada exist for Ada subsets used for critical software. But some emergent languages such as those of the ML family lack such adapted tools. Providing similar tools for ML languages requires special attention on specific features such as higher-order functions and pattern-matching. This work presents an information-flow analysis for such a language specifically designed according to the needs of assessors. This analysis is built as an abstract interpretation of the operational semantics enriched with dependency information. It is proved correct according to a formal definition of the notion of dependency using the Coq proof assistant. This work gives a strong theoretical basis for building an efficient tool for fault tolerance analysis. Keywords : dependency analysis, critical software, functional languages, Coq, proof of correctness, static analysis, abstract interpretation 7Table des matières Introduction 19 Évaluation des logiciels critiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Outils automatiques, interactifs et corrects . . . . . . . . . . . . . . . . . . . . . . 20 Pourquoi une analyse de dépendances pour ML ? . . . . . . . . . . . . . . . . . . 21 Contribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Plan de la thèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1 État de l’art 27 1.1 Analyse de dépendances pour les logiciels critiques . . . . . . . . . . . . . . 27 1.1.1 Les langages ML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1.1.2 SPARK/Ada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 1.2 Analyse de flot pour les langages fonctionnels . . . . . . . . . . . . . . . . . 32 1.3 Analyse de teintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 1.4 Interprétation abstraite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2 Notion de dépendance 41 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.2 Le langage : algèbre des expressions . . . . . . . . . . . . . . . . . . . . . . . 43 2.3 Sémantique opérationnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.3.1 Valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 9TABLE DES MATIÈRES 2.3.2 Environnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.3.3 Règles d’inférence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.3.4 Sémantique des programmes mal typés et filtrage par motif . . . . . 45 2.4 Points d’injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.4.1 Dans le programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.4.2 Dans l’environnement . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.5 Sémantique opérationnelle avec injection . . . . . . . . . . . . . . . . . . . . 49 2.5.1 Règles d’inférence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.5.2 Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 2.5.2.1 Énoncé informel du théorème . . . . . . . . . . . . . . . . . 51 2.5.2.2 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . 51 2.5.2.3 Énoncé formel du théorème . . . . . . . . . . . . . . . . . . 54 2.5.2.4 Preuve de correction . . . . . . . . . . . . . . . . . . . . . . 54 2.6 Impact d’une injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 2.6.1 Impact sur la terminaison . . . . . . . . . . . . . . . . . . . . . . . . 57 2.6.2 Impact sur la valeur . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 2.7 Dépendances d’une expression . . . . . . . . . . . . . . . . . . . . . . . . . . 57 2.7.1 Dépendances de terminaison . . . . . . . . . . . . . . . . . . . . . . . 58 2.7.2 Dépendances de valeur . . . . . . . . . . . . . . . . . . . . . . . . . . 58 2.7.3 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . . . . . . 58 3 Analyse dynamique 61 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.2 Sur-instrumentation des valeurs . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.2.1 Valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 3.2.2 Ensembles de dépendances . . . . . . . . . . . . . . . . . . . . . . . . 65 10TABLE DES MATIÈRES 3.2.3 Environnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 3.2.4 Valeur de référence d’une valeur sur-instrumentée . . . . . . . . . . . 66 3.2.5 Instanciation d’une valeur sur-instrumentée . . . . . . . . . . . . . . 67 3.2.6 Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 3.3 Sémantique avec injection dans un t-environnement sur-instrumenté . . . . . 70 3.3.1 Règles d’inférence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 3.3.2 Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 3.3.2.1 Énoncé informel du théorème . . . . . . . . . . . . . . . . . 72 3.3.2.2 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . 74 3.3.2.3 Énoncé formel du théorème . . . . . . . . . . . . . . . . . . 76 3.3.2.4 Preuve de correction . . . . . . . . . . . . . . . . . . . . . . 76 3.4 Sémantique sur-instrumentée . . . . . . . . . . . . . . . . . . . . . . . . . . 78 3.4.1 Règles d’inférence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 3.4.1.1 Explication des règles avec dépendances indirectes . . . . . 85 3.4.1.2 Spécification des dépendances indirectes . . . . . . . . . . . 93 3.4.2 Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 3.4.2.1 Énoncé informel du théorème . . . . . . . . . . . . . . . . . 102 3.4.2.2 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . 103 3.4.2.3 Énoncé formel du théorème . . . . . . . . . . . . . . . . . . 113 3.4.2.4 Preuve de correction . . . . . . . . . . . . . . . . . . . . . . 113 3.5 Sémantique instrumentée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 3.5.1 Algèbre des valeurs instrumentées . . . . . . . . . . . . . . . . . . . . 121 3.5.1.1 Valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 3.5.1.2 Ensembles de dépendances . . . . . . . . . . . . . . . . . . 121 3.5.1.3 Environnements . . . . . . . . . . . . . . . . . . . . . . . . 122 11TABLE DES MATIÈRES 3.5.2 Règles d’inférence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 3.5.3 Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 3.5.3.1 Énoncé informel du théorème . . . . . . . . . . . . . . . . . 127 3.5.3.2 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . 127 3.5.3.3 Énoncé formel du théorème . . . . . . . . . . . . . . . . . . 131 3.5.3.4 Preuve de correction . . . . . . . . . . . . . . . . . . . . . . 134 3.6 Correction de l’analyse dynamique . . . . . . . . . . . . . . . . . . . . . . . 138 3.6.1 Énoncé informel du théorème . . . . . . . . . . . . . . . . . . . . . . 138 3.6.2 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . . . . . . 138 3.6.3 Énoncé formel du théorème . . . . . . . . . . . . . . . . . . . . . . . 140 3.6.4 Preuve de correction . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 4 Analyse statique 145 4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 4.2 Sémantique instrumentée multiple . . . . . . . . . . . . . . . . . . . . . . . 147 4.2.1 Présentation informelle . . . . . . . . . . . . . . . . . . . . . . . . . . 147 4.2.2 Définition formelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 4.3 Sémantique collectrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 4.3.1 Algèbre des valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 4.3.1.1 Valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 4.3.1.2 Ensembles de dépendances . . . . . . . . . . . . . . . . . . 150 4.3.1.3 Environnements . . . . . . . . . . . . . . . . . . . . . . . . 150 4.3.2 Règles d’inférence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 4.3.3 Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 4.3.3.1 Énoncé informel du théorème . . . . . . . . . . . . . . . . . 157 4.3.3.2 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . 158 12TABLE DES MATIÈRES 4.3.3.3 Énoncé formel du théorème . . . . . . . . . . . . . . . . . . 159 4.3.3.4 Preuve de correction . . . . . . . . . . . . . . . . . . . . . . 162 4.4 Sémantique abstraite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 4.4.1 Algèbre des valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 4.4.1.1 Valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 4.4.1.2 Ensembles de dépendances . . . . . . . . . . . . . . . . . . 173 4.4.1.3 Environnements . . . . . . . . . . . . . . . . . . . . . . . . 176 4.4.2 Règles d’inférence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 4.4.3 Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 4.4.3.1 Énoncé informel du théorème . . . . . . . . . . . . . . . . . 182 4.4.3.2 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . 182 4.4.3.3 Énoncé formel du théorème . . . . . . . . . . . . . . . . . . 183 4.4.3.4 Preuve de correction . . . . . . . . . . . . . . . . . . . . . . 184 4.5 Correction de l’analyse statique . . . . . . . . . . . . . . . . . . . . . . . . . 192 4.5.1 Énoncé informel du théorème . . . . . . . . . . . . . . . . . . . . . . 192 4.5.2 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . . . . . . 193 4.5.3 Énoncé formel du théorème . . . . . . . . . . . . . . . . . . . . . . . 194 4.5.4 Preuve de correction . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 5 Implémentation et preuve 197 5.1 Prototypes implémentés en OCaml . . . . . . . . . . . . . . . . . . . . . . . 197 5.2 Développement Coq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 5.2.1 Contenu du développement . . . . . . . . . . . . . . . . . . . . . . . 198 5.2.2 Intérêt du choix de Coq . . . . . . . . . . . . . . . . . . . . . . . . . 199 5.3 Extraction de Coq vers OCaml . . . . . . . . . . . . . . . . . . . . . . . . . 200 13TABLE DES MATIÈRES Conclusion 203 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Bibliographie 205 Annexes 213 A Définitions des sémantiques en Coq 213 A.1 Sémantique opérationnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 A.2 Sémantique avec injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 A.3 Sémantique sur-instrumentée . . . . . . . . . . . . . . . . . . . . . . . . . . 217 A.4 Sémantique instrumentée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 A.5 Sémantique instrumentée multiple . . . . . . . . . . . . . . . . . . . . . . . 221 A.6 Sémantique collectrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 A.7 Sémantique abstraite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 B Énoncés des théorèmes en Coq 229 B.1 Correction de la sémantique avec injection . . . . . . . . . . . . . . . . . . . 229 B.2 Correction de la sémantique sur-instrumentée . . . . . . . . . . . . . . . . . 230 B.3 Correction de la sémantique instrumentée . . . . . . . . . . . . . . . . . . . 230 B.4 Correction de la sémantique collectrice . . . . . . . . . . . . . . . . . . . . . 231 B.5 Correction de la sémantique abstraite . . . . . . . . . . . . . . . . . . . . . . 231 Index 233 14Table des figures 2.1 Algèbre des expressions du langage . . . . . . . . . . . . . . . . . . . . . . . 43 2.2 Règles d’inférence de la sémantique opérationnelle . . . . . . . . . . . . . . 46 2.3 Règles d’inférence du filtrage de la sémantique opérationnelle . . . . . . . . 46 2.4 Sémantique opérationnelle avec injection : règles d’inférence identiques à la sémantique usuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.5 Sémantique opérationnelle avec injection : règles d’inférence spécifiques . . . 50 2.6 Prédicat de non-apparition d’un label lors d’une évaluation . . . . . . . . . 55 2.7 Prédicat de non-apparition d’un label dans une valeur . . . . . . . . . . . . 55 3.1 Sémantiques intermédiaires pour l’analyse dynamique . . . . . . . . . . . . . 62 3.2 Enchaînement des preuves des sémantiques intermédiaires pour l’analyse dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.3 Sémantique avec injection dans un t-environnement sur-instrumenté : règles d’inférence identiques à la sémantique usuelle . . . . . . . . . . . . . . . . . 73 3.4 Sémantique avec injection dans un t-environnement sur-instrumenté : règles d’inférence spécifiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 3.5 Sémantique sur-instrumentée . . . . . . . . . . . . . . . . . . . . . . . . . . 80 3.6 Sémantique sur-instrumentée : règles de filtrage . . . . . . . . . . . . . . . . 81 3.7 Valeurs sur-instrumentées : suppression des t-dépendances . . . . . . . . . . 81 3.8 Valeurs sur-instrumentées : ajout de t-dépendances . . . . . . . . . . . . . . 82 15TABLE DES FIGURES 3.9 Exemple 1 : arbre de dérivation du jugement d’évaluation sur-instrumentée 105 3.10 Exemple 1 : arbre de dérivation du jugement d’évaluation avec injection si l = l ′ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 3.11 Exemple 1 : arbre de dérivation du jugement d’évaluation avec injection si l ̸= l ′ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 3.12 Exemple 2 : arbre de dérivation du jugement d’évaluation sur-instrumentée 109 3.13 Exemple 2 : sous-arbre de dérivation sur-instrumentée du filtrage . . . . . . 109 3.14 Exemple 2 : arbre de dérivation du jugement d’évaluation avec injection sur l1110 3.15 Exemple 2 : sous-arbre de dérivation du filtrage avec injection sur l1 . . . . 110 3.16 Exemple 2 : arbre de dérivation du jugement d’évaluation avec injection sur l2111 3.17 Exemple 2 : sous-arbre de dérivation du filtrage avec injection sur l2 . . . . 111 3.18 Exemple 2 : arbre de dérivation du jugement d’évaluation avec injection sur l ̸∈ {l1, l2} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 3.19 Exemple 2 : sous-arbre de dérivation du filtrage avec injection sur l ̸∈ {l1, l2} 112 3.20 Sémantique instrumentée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 3.21 Sémantique instrumentée : règles de filtrage . . . . . . . . . . . . . . . . . . 123 3.22 Valeurs instrumentées : suppression des t-dépendances . . . . . . . . . . . . 124 3.23 Valeurs instrumentées : ajout de t-dépendances . . . . . . . . . . . . . . . . 125 3.24 Exemple 1 : arbre de dérivation du jugement d’évaluation instrumentée . . . 128 3.25 Exemple 2 : arbre de dérivation du jugement d’évaluation instrumentée . . . 130 3.26 Exemple 2 : sous-arbre de dérivation instrumentée du filtrage . . . . . . . . 130 3.27 Prédicat de non-apparition d’un label lors d’une évaluation instrumentée . . 140 3.28 Prédicat de non-apparition d’un label dans une valeur instrumentée . . . . . 141 3.29 Prédicat de non-apparition d’un label dans un environnement instrumenté . 141 4.1 Sémantiques intermédiaires pour l’analyse statique . . . . . . . . . . . . . . 146 16TABLE DES FIGURES 4.2 Enchaînement des preuves des sémantiques intermédiaires pour l’analyse statique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 4.3 Sémantique collectrice : première partie . . . . . . . . . . . . . . . . . . . . 151 4.4 Sémantique collectrice : seconde partie . . . . . . . . . . . . . . . . . . . . . 152 4.5 Sémantique collectrice : règles de filtrage . . . . . . . . . . . . . . . . . . . . 152 4.6 Sémantique collectrice : prédicat d’application instrumentée multiple . . . . 154 4.7 Sémantique collectrice : Définition de la fonction d’abstraction . . . . . . . . 160 4.8 Sémantique collectrice : Définition de la fonction de concrétisation . . . . . 161 4.9 Relation d’ordre sur les valeurs et environnements instrumentés . . . . . . . 161 4.10 Relation d’ordre sur les valeurs et environnements instrumentés multiples . 161 4.11 Sémantique abstraite : Définition de la fonction d’abstraction (partie 1/2) . 174 4.12 Sémantique abstraite : Définition de la fonction d’abstraction (partie 2/2) . 175 4.13 Sémantique abstraite : Définition de la fonction de concrétisation . . . . . . 175 4.14 Sémantique abstraite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 4.15 Sémantique abstraite : v-dépendances des identificateurs libres d’une expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 4.16 Sémantique abstraite : règles de filtrage . . . . . . . . . . . . . . . . . . . . 178 4.17 Valeurs abstraites : suppression des t-dépendances . . . . . . . . . . . . . . 179 4.18 Valeurs abstraites : ajout de t-dépendances . . . . . . . . . . . . . . . . . . 180 4.19 Relation d’ordre sur les valeurs collectrices . . . . . . . . . . . . . . . . . . . 184 4.20 Prédicat de non-apparition d’un label lors d’une évaluation abstraite . . . . 195 4.21 Prédicat de non-apparition d’un label dans une valeur abstraite . . . . . . . 195 4.22 Prédicat de non-apparition d’un label dans un environnement abstrait . . . 195 17TABLE DES FIGURES 18Introduction Depuis son apparition jusqu’à aujourd’hui, l’informatique s’est développée à une vitesse phénoménale. Les systèmes informatiques sont devenus de plus en plus complexes et « l’intelligence » de ces systèmes a progressivement migré du matériel vers le logiciel. Les logiciels sont maintenant présents partout et s’occupent de tâches de plus en plus importantes et complexes. On les retrouve aussi bien dans nos téléphones portables que dans nos voitures. Ils nous permettent de nous divertir, de communiquer mais aussi de piloter des avions ou de gérer des systèmes bancaires. Compte tenu des conséquences dramatiques que peut engendrer une défaillance dans certains logiciels, une rigueur particulière doit être exigée pour la conception et le développement de ces logiciels dits « critiques ». Les logiciels critiques sont présents dans divers domaines dont le nucléaire, le transport (aéronautique, ferroviaire et automobile), le médical, le bancaire et l’armement. Certains dysfonctionnements peuvent causer des pertes financières de l’ordre de plusieurs centaines de millions d’euros, comme le montrent les exemples récents de dysfonctionnements [Kni12] dans des logiciels automatiques de spéculation boursière. D’autres peuvent mettre en jeu des vies humaines, comme on a pu en être témoin lors des accidents de voiture provoqués par des dysfonctionnements du régulateur de vitesse du véhicule. Les conséquences d’un dysfonctionnement dans le logiciel de pilotage d’un train, d’un avion ou d’une fusée peuvent se révéler dramatiques. La destruction de la fusée Arianne V lors de son vol inaugural en 1996 est un exemple bien connu de catastrophe provoquée par un dysfonctionnement logiciel. Le domaine médical n’est pas non plus épargné. La machine de radiothérapie Therac-25 a provoqué le décès de plusieurs patients à cause d’un dysfonctionnement logiciel passé inaperçu pendant plusieurs années. 19INTRODUCTION Évaluation des logiciels critiques La prise de conscience de l’importance d’un haut niveau de sûreté de fonctionnement des logiciels critiques a conduit les autorités à établir différentes normes selon les différents domaines d’application (EN-50128 [Sta99] pour le ferroviaire, DO-178B/C [RTC92] pour l’avionique, . . . ). Ces normes spécifient les exigences que doivent respecter les logiciels critiques de la conception à la mise en fonctionnement voire au démantèlement, en fonction de leur niveau de criticité. La vérification de la conformité d’un logiciel aux normes en vigueur nécessite de faire appel à un évaluateur indépendant engageant personnellement sa responsabilité pénale. Celui-ci va alors produire une démonstration du respect des normes par le système critique évalué. Cette démonstration est constituée d’un ensemble de documents ayant pour but de justifier un certain niveau de confiance. La justification est basée sur l’utilisation de méthodes de développement rigoureuses, de tests unitaires et d’intégration (avec un taux de couverture raisonnable) voire de preuves mathématiques dans les cas les plus critiques. La démonstration produite sera alors soumise à l’approbation d’une autorité de tutelle qui délivre alors l’autorisation de mise en exploitation. Outils automatiques, interactifs et corrects La tâche d’évaluation d’un logiciel critique est particulièrement coûteuse en temps et en main d’œuvre. On estime [Ayr11] le coût du développement d’un logiciel critique entre 6 et 10 hommes-années pour mille lignes de code dont environ 60% sont attribuables aux phases de vérification, validation et évaluation. Des outils automatiques permettant de simplifier une partie de ce travail de vérification peuvent donc être fortement appréciés, moyennant le respect de certaines contraintes dues à leur utilisation. Ces outils automatiques doivent être utilisés uniquement comme une aide pour l’évaluateur. L’interactivité est primordiale dans ce type d’outil pour que l’évaluateur puisse utiliser son expertise pour guider l’outil et obtenir ainsi les résultats dont il a besoin. La question de la correction des outils utilisés par l’évaluateur de logiciels critiques est une question essentielle. Pour que l’évaluateur puisse faire confiance à l’outil et utiliser les résultats fournis par celui-ci pour prendre des décisions, il faut que cet outil bénéficie d’un 20INTRODUCTION haut niveau de fiabilité. Par exemple une preuve formelle de la correction de l’outil peut être un gage de fiabilité acceptable par l’évaluateur. Pourquoi une analyse de dépendances pour ML ? Divers outils peuvent permettre d’alléger le travail d’évaluation d’un logiciel critique. Parmi ces outils, l’analyse des dépendances dans le code source du logiciel a une importance particulière. En effet, ce type d’analyse peut permettre à l’évaluateur d’identifier les parties du programme qui n’ont aucune influence sur la partie critique du système évalué. L’évaluateur peut alors se reposer sur la fiabilité de l’outil d’analyse pour s’épargner un long travail de vérification sur les parties du programme pour lesquelles il a une garantie qu’elles ne peuvent en aucune manière influencer les fonctionnalités critiques du système : elles ne font alors pas partie de la « cible d’analyse » (Target of Analysis). D’autre part, l’analyse des dépendances du code source peut permettre à l’évaluateur de visualiser les interactions entre les différentes parties du logiciel. Il acquiert ainsi une meilleure compréhension du logiciel et de sa structure. En particulier, ces informations se révèlent être précieuses pour construire la « modélisation fonctionnelle du système » qui constitue une des étapes de l’AMDEC [X6086, MSA80], méthode d’analyse utilisée fréquemment par les évaluateurs de systèmes critiques. Les analyses de dépendances, comme les analyses de flots d’information, les analyses de non-interférence, ou encore les analyses d’impact, sont des analyses opérant sur le code source des logiciels. Elles sont dépendantes du langage de programmation utilisé pour dé- velopper le logiciel à évaluer. Certains langages de programmation sont mieux outillés que d’autres. Des outils d’analyse de dépendances existent pour le langage C, particulièrement répandu. On peut citer par exemple le plug-in d’analyse d’impact de l’environnement d’analyse de code source Frama-C [CKK+12]. Même si cet outil n’est pas conçu spécifiquement pour répondre aux besoins des évaluateurs de logiciels critiques, il peut être utilisé dans une certaine mesure pour aider à la construction d’une modélisation fonctionnelle. Le langage SPARK [Bar03], sous-ensemble du langage ADA, est lui aussi équipé d’un outil permettant de spécifier les dépendances d’un programme et de les vérifier. 21INTRODUCTION D’autres langages, quant à eux, ne bénéficient pas d’un tel outillage. C’est le cas notamment des langages fonctionnels de la famille ML qui voient leur utilisation commencer à se répandre dans le cadre du développement de logiciels critiques. Certains développements industriels utilisent d’ores et déjà des langages de la famille ML. La société Jane Street Capital développe des logiciels critiques d’investissements financiers en OCaml ([MW08]) manipulant des centaines de millions de dollars chaque jour. Le générateur de code embarqué certifié SCADE [PAC+08] est lui aussi écrit en OCaml. De nombreux autres logiciels critiques sont développés en utilisant les langages de la famille ML comme l’analyse statique Goanna [FHJ+06] permettant de rechercher des erreurs dans du code source critique écrit en C/C++, ou encore la plate-forme logicielle Apropos [JES00] développée par LexiFi pour la tarification et la gestion de produits financiers. Contribution Dans cette thèse, nous nous intéressons à l’analyse des dépendances d’un logiciel. Le langage sur lequel opère notre analyse est un langage comprenant les principales fonctionnalités présentes dans les langages de la famille ML, c’est-à-dire des fonctions d’ordre supérieur, des constructeurs de données algébriques et du filtrage par motif. Nous participons ainsi à combler le manque d’outils associés aux langages de la famille ML. L’analyse que nous présentons a été spécifiquement conçue dans le but de répondre aux besoins particuliers des évaluateurs de logiciels critiques. Ces besoins, présentés ci-dessous, ont été identifiés suite au retour d’expérience de Philippe Ayrault, lui-même évaluateur de logiciels critiques dans le domaine ferroviaire [ABDP12, Ayr11]. Interactivité et souplesse Notre analyse permet à l’évaluateur d’analyser n’importe quelle partie du code source du logiciel critique à évaluer, en fournissant un environnement d’analyse qui est une spécification plus ou moins précise de l’environnement d’évaluation. Cet environnement d’analyse offre à l’évaluateur la possibilité de paramétrer l’analyse en donnant pour chaque identificateur présent dans l’environnement une valeur plus ou moins abstraite. Il est ainsi possible pour l’évaluateur d’analyser les programmes à différents niveaux d’abstraction, de manière à avoir tantôt une vision globale des différents composants 22INTRODUCTION du système, tantôt une vision plus fine d’un composant en particulier. C’est l’expertise de l’évaluateur qui donne la ligne directrice du processus de vérification en utilisant l’analyse à différentes étapes du processus, à chaque fois en utilisant le niveau d’abstraction qui convient. Haut niveau de confiance Pour garantir la fiabilité de notre analyse, nous sommes remontés jusqu’aux fondements de la notion de dépendance. Nous donnons une définition formelle de la notion de dépendance en nous appuyant directement sur la sémantique opé- rationnelle du langage. Nous avons ensuite construit, étape par étape, une preuve formelle permettant de fournir à l’évaluateur une garantie de la propriété de correction dont il a besoin en établissant formellement le lien entre notre analyse et la notion de dépendance. Une grande partie de la preuve a été réalisée et vérifiée à l’aide de l’assistant à la preuve COQ. Nous fournissons dans le présent manuscrit une preuve papier de la partie restantes. L’intégralité du développement Coq réalisé est disponible librement à l’adresse suivante : https://github.com/vincent-benayoun/PhD-thesis. Notre analyse possède une spécificité supplémentaire : la prise en compte de l’impact d’un dysfonctionnement sur la terminaison du programme. En consultant le résultat de l’analyse d’un programme, on peut savoir non seulement quelles sont les parties du programme ayant une influence sur les valeurs calculées mais également celles ayant une in- fluence sur la terminaison. Cette dernière information est intéressante pour l’évaluateur de logiciels critiques dans la mesure où la non-terminaison d’un programme peut constituer un réel risque de dysfonctionnement. Plan de la thèse La structure du manuscrit est la suivante : Chapitre 1 : État de l’art Nous présentons le contexte scientifique de cette thèse en mettant en relation notre analyse de dépendances avec d’autres travaux. En premier lieu, nous expliquons en quoi notre travail s’inscrit dans la continuité de travaux existants dans le domaine. Puis nous explicitons les liens entre notre analyse de dépendances et 23INTRODUCTION quelques travaux similaires portant sur la non-interférence et l’analyse de teintes. Enfin montrons en quoi notre analyse s’inscrit dans le cadre général de l’interprétation abstraite de programmes. Chapitre 2 : Notion de dépendance Après avoir présenté le langage sur lequel opère notre analyse ainsi que sa sémantique opérationnelle, nous présentons une définition formelle des notions de base utilisée pour exprimer ce que nous appelons dépendances d’un programme. Nous commençons par présenter l’injection de valeur qui nous permet de représenter formellement les points de programme dont on veut connaître l’impact. Nous définissons alors formellement la notion d’impact en elle-même, qui est double : l’impact sur la terminaison et l’impact sur la valeur du programme. Nous pouvons ensuite introduire la notion de dépendance qui se divise également en deux : les dépendances de terminaison et les dépendances de valeur. Chapitre 3 : Analyse dynamique Une fois la notion de dépendance formalisée, nous définissons une analyse dynamique permettant de calculer les dépendances d’un programme. Ces dépendances seront fournies par l’analyse dynamique sous forme d’annotations sur chacun des sous-termes de la valeur du programme. Nous appelons cette analyse dynamique sémantique instrumentée et nous l’introduisons à l’aide de deux sémantiques intermé- diaires qui nous permettent d’établir la correction de cette sémantique instrumentée. Chapitre 4 : Analyse statique Ce chapitre touche enfin au but de cette thèse : présenter notre analyse statique des dépendances d’un programme. Afin d’atteindre ce résultat, nous partons de l’analyse dynamique présentée au chapitre précédent. Nous introduisons alors, à l’aide de deux nouvelles sémantiques intermédiaires, une interprétation abstraite de l’analyse dynamique que nous appelons sémantique abstraite. C’est cette dernière sémantique qui constitue notre analyse statique de dépendances. Chapitre 5 : Implémentation et preuve Nous présentons dans ce dernier chapitre les développements effectués autour de l’analyse de dépendances. D’une part, nous exposerons le développement au sein de l’atelier de preuve Coq, qui a permis de formaliser les différentes 24INTRODUCTION sémantiques présentées dans cette thèse ainsi que de construire et vérifier leurs preuves de correction. D’autre part, nous discuterons des différents prototypes réalisés. Conclusion et perspectives Enfin, nous présentons un bilan du travail réalisé en ouvrant la voie vers de possibles développements futurs. En particulier, nous parlerons des possibilités d’extension du langage analysé et des pistes d’optimisation de l’analyse (performance et précision). 25INTRODUCTION 26Chapitre 1 État de l’art 1.1 Analyse de dépendances pour les logiciels critiques 1.1.1 Les langages ML Cette thèse s’inscrit dans la suite de la thèse de P. Ayrault [Ayr11, ABDP12] soutenue en 2011. Elle reprend l’analyse statique de dépendances qui y était présentée, la rend plus générale en y apportant un certain nombre de modifications et en propose une preuve formelle vérifiée mécaniquement à l’aide de l’assistant à la preuve Coq. La première modification réside en la manière d’annoter les programmes pour permettre à l’évaluateur de logiciel critique de désigner les points de programme dont il souhaite connaître l’impact. Dans l’analyse de P. Ayrault, on ne pouvait annoter que les sous-expressions du programme explicitement nommées par une instruction de liaison (let x = e). Dans l’analyse que nous présentons, toute sous-expression du programme peut être marquée pour analyser son impact sur l’évaluation du programme. La notion de marquage concret/abstrait présentée par P. Ayrault effectuait simultanément deux opérations distinctes. Premièrement, elle permettait de désigner une sousexpression pour connaître son impact. Deuxièmement, elle cachait la valeur de la sousexpression désignée pour la considérer comme une boîte noire. Autrement dit, elle lui appliquait une sorte d’abstraction. Notre approche est plus générale et permet une souplesse accrue quant à l’utilisation de ces deux opérations. Il est maintenant possible de réaliser ces deux opérations séparément. Plus précisément, il est toujours possible de consi- 271.1. ANALYSE DE DÉPENDANCES POUR LES LOGICIELS CRITIQUES dérer comme une boîte noire toute sous-expression marquée pour l’analyse d’impact, mais il est également possible de suivre l’impact d’une sous-expression tout en utilisant sa valeur pour affiner l’analyse d’impact. Il est aussi possible de considérer une partie du programme comme une boîte noire en cachant sa valeur sans pour autant nous intéresser à son impact. Cette amélioration apporte une solution au problème de perte de la structure des valeurs. Ce problème avait été soulevé dans [ABDP12] au sujet de l’analyse de dépendances qui y était présentée. La seconde modification est la distinction entre deux types de dépendance correspondant aux deux types d’impact que peut avoir la valeur d’une sous-expression sur l’évaluation du programme : impact sur la valeur du programme ou impact sur la terminaison de son évaluation. L’analyse présentée par P. Ayrault n’effectuait pas de distinction entre ces deux notions d’impact. Ainsi, si un identificateur se trouvait uniquement dans un certain sous-terme du résultat de l’analyse, on ne savait pas si cet identificateur avait uniquement un impact sur la valeur de ce sous-terme ou bien si celui-ci avait un impact global sur la terminaison de l’évaluation du programme. L’analyse statique que nous présentons dans cette thèse apporte une réponse plus précise quant au type d’impact. Si un identificateur se trouve uniquement dans un certain sous-terme du résultat de l’analyse et qu’il n’apparaît pas dans les dépendances de terminaison du programme, alors on peut être sûr qu’il n’a d’impact que sur la valeur de ce sous-terme précis et qu’il ne peut aucunement affecter les autres sous-termes de la valeur, ni la terminaison du calcul. Considérons un exemple simple pour illustrer les différences entre les deux approches : l e t a = 3 2 ; ; l e t b = 1 8 ; ; l e t c = b + 8 ; ; l e t f x = ( a + 1 , x ) ; ; l e t d = f c ; ; Supposons que nous souhaitons analyser l’impact de a, de b et de c. Dans l’analyse de P. Ayrault, nous marquons les trois premières définitions top-level à l’aide d’un tag « abstrait ». Dans notre analyse, nous annotons les trois définitions correspondantes à 281.1. ANALYSE DE DÉPENDANCES POUR LES LOGICIELS CRITIQUES l’aide de trois labels la, lb et lc. On obtient alors les résultats suivants : Analyse de P. Ayrault Notre analyse statique a : a a : [ ∅ | [ la | ⊤ ] ] b : b b : [ ∅ | [ lb | ⊤ ] ] c : c c : [ ∅ | [ lb, lc | ⊤ ] ] f : < λx.(a + 1, x),(a, a); . . . > f : [ ∅ | [ ∅ | < λx.(a + 1, x),(a, . . .); . . . > ] ] d : (a, c) d : [ ∅ | [ ∅ | ( [ la | ⊤ ], [ lb, lc | ⊤ ]) ] ] L’analyse de P. Ayrault nous apprend que l’identificateur a ne dépend que de lui-même. Elle nous apprend la même chose pour l’identificateur b et pour c. On remarque que l’identificateur b n’apparaît pas dans le résultat de c. Ceci est dû à la notion de marquage « abstrait » qui coupe en quelque sorte les dépendances d’un identificateur marqué. C’est pour cette raison que le théorème exprimé dans la thèse de P. Ayrault n’est en général pas valable s’il y a plus d’un identificateur marqué. Le résultat obtenu pour f est simplement une fermeture. Enfin, le résultat pour d nous apprend qu’il s’agit d’un couple dont la première composante dépend de a et la seconde composante dépend de c. Notre analyse fournit des résultats un peu différents. Pour a (resp. b), on apprend qu’aucune injection ne peut empêcher l’évaluation de cette partie de programme de terminer. Par contre, une injection sur a (resp. b) peut provoquer une modification du résultat de cette évaluation. Le symbole ⊤ indique que la valeur a été abstraite. Pour l’identificateur c, l’analyse fournit à la fois la dépendance lb (car la valeur de c dépend de celle de b) et la dépendance lc (car on a annoté la définition de c avec ce label). Le résultat pour f est une fermeture. Celui pour d nous indique qu’aucune injection ne peut empêcher la terminaison du programme et que la valeur de d est un couple dont la première composante dépend de la et la seconde dépend de lb et lc. Un autre apport important par rapport à la thèse de P. Ayrault concerne la preuve de correction de l’analyse. Dans le chapitre 3 de sa thèse, P. Ayrault présente une preuve formelle de son analyse de dépendances. Cette preuve, complexe à vérifier, a été réalisée sur papier, bien que l’assistant à la preuve Coq ait été utilisé pour vérifier formellement certaines propriétés (formalisation du langage et de l’analyse, preuve du déterminisme de l’analyse). De plus, la preuve de correction proposée n’est valable que dans le cas particulier où le programme analysé n’est marqué qu’en un unique point. Il n’est donc pas possible de 291.1. ANALYSE DE DÉPENDANCES POUR LES LOGICIELS CRITIQUES se reposer sur ce théorème lors de l’analyse d’un programme marqué en plusieurs points (il est facile de trouver des contre-exemples). Nous apportons dans cette thèse une preuve formelle réalisée en Coq. Cette preuve a été réalisée par étapes successives en « instrumentant » (c’est-à-dire en enrichissant) la sémantique opérationnelle du langage pour qu’elle transporte toutes les informations nécessaires au calcul des dépendances, puis en prouvant formellement des abstractions successives de cette sémantique jusqu’à obtenir l’analyse statique désirée. Nous obtenons ainsi une plus grande clarté en mettant en exergue des résultats intermédiaires importants et compréhensibles permettant de composer la preuve finale de façon modulaire. Un avantage certain de cette approche est de pouvoir prouver une version modifiée de l’analyse statique en réutilisant une grande partie des preuves déjà effectuées. On pourra ainsi proposer par la suite de modifier l’analyse statique pour obtenir des résultats plus précis (à l’aide d’une représentation plus fine pour les types sommes, les entiers ou encore les fonctions) ou pour améliorer les performances de calcul (en ajoutant des approximations). La preuve de correction d’une telle analyse sera alors obtenue à moindre frais puisqu’il faudra uniquement prouver la toute dernière abstraction, toutes les autres preuves étant réutilisables telles quelles. 1.1.2 SPARK/Ada Des analyses statiques de dépendances adaptées aux évaluateurs de logiciels critiques existent déjà. C’est notamment le cas pour SPARK [Bar03], un sous-ensemble du langage Ada, spécialement conçu pour le développement de logiciels critiques. Il embarque toute une série d’analyses statiques prenant en compte les annotations de l’utilisateur afin de garantir que le programme fonctionne conformément à ses spécifications. En particulier, SPARK est doté d’un langage d’annotations [CH04] permettant à l’utilisateur de spécifier diverses contraintes sur les flots d’information et de contrôle de son programme. Il est tout d’abord possible de préciser pour chaque paramètre d’une fonction s’il s’agit d’une entrée, d’une sortie ou d’une entrée/sortie, ce qui permet de donner une direction aux flots d’information possibles et de vérifier certaines erreurs statiquement. C’est également une information précieuse pour l’évaluateur de logiciels critiques pour lui permettre de comprendre de façon simple et sûre le comportement du programme. Nous ne nous sommes 301.1. ANALYSE DE DÉPENDANCES POUR LES LOGICIELS CRITIQUES pas intéressés à ce type d’annotation puisque la distinction entre les entrées et les sorties ainsi que la nécessité d’initialiser une variable avant son utilisation découle naturellement des propriétés intrinsèques des langages purement fonctionnels. Une autre fonctionnalité importante concernant la spécification du flot d’information est la possibilité de spécifier pour chaque sortie, quelles sont les entrées utilisées pour le calcul de sa valeur. Voici un exemple de code annoté en SPARK spécifiant que la seule variable globale utilisée est Count et qu’après l’appel de la fonction, la nouvelle valeur de Count dépend de son ancienne valeur et de celle de X et la nouvelle valeur de X dépend uniquement de sa valeur précédente. p ro c e d u r e Inc remen t (X : i n out Counter_Type ) ; −−# g l o b a l Count ; −−# d e r i v e s −−# Count from Count , X & −−# X from X; Le développeur peut ainsi spécifier avec précision le flot d’information pour détecter d’éventuelles erreurs au plus tôt dans le cycle de développement. Cette spécification est alors vérifiée statiquement par une analyse du code source. Ce type d’annotation est un élément important dans la phase de vérification d’un logiciel critique. L’évaluateur peut alors se reposer sur les annotations du développeur puisqu’il sait qu’une analyse du code source a été faite par un outil logiciel fiable afin d’assurer la correction de ces annotations. Cette garantie de fiabilité des annotations permet à l’évaluateur de logiciels critiques de s’épargner une vérification manuelle fastidieuse et coûteuse. Cet outil de spécification et de vérification de propriétés sur le flot d’information du programme disponible pour SPARK (SPARK Examiner) est un outil puissant et fiable que l’évaluateur de logiciels critiques voudrait retrouver pour d’autres langages de programmation. Notre travail s’inscrit dans la satisfaction de ce besoin concernant les langages de la famille ML qui commencent à être utilisés pour des développements critiques, soit pour la construction de logiciels nécessitant un haut niveau de fiabilité [MW08], soit pour la construction d’outils logiciels nécessitant d’être qualifiés pour leur utilisation dans le développement de logiciels critiques régis par des normes (EN-50128, DO-178B/C, . . . ) [PAC+08, FHJ+06, JES00]. 311.2. ANALYSE DE FLOT POUR LES LANGAGES FONCTIONNELS Nous présentons dans cette thèse une analyse statique des dépendances d’un programme ML qui pourra être utilisée comme une base théorique solide afin de développer un outil de spécification et de vérification de propriétés sur le flot d’information adapté aux spécificités des langages ML, en s’inspirant de l’outil analogue disponible pour SPARK. 1.2 Analyse de flot pour les langages fonctionnels L’analyse de flot pour les langages fonctionnels d’ordre supérieur est un sujet qui a fait l’objet de nombreux travaux dont nous mentionnons les principaux dans la suite. En 1996, M. Abadi, B.W. Lampson et J.J. Lévy [ALL96] proposent une analyse de flot d’information pour un lambda calcul. Le but de leur analyse est alors l’optimisation du temps d’exécution en stockant des valeurs déjà calculées. Lors de l’évaluation d’une expression, si celle-ci a déjà été évalué et que depuis cette première évaluation les seules valeurs mofidiées depuis sont indépendantes, alors on utilise la valeur déjà calculée au lieu de ré- évaluer l’expression. Dans le langage qu’ils considèrent, n’importe quelle sous-expression du programme analysé peut être annotée avec un label. Leur analyse est construite comme une extension de la sémantique opérationnelle usuelle du lambda calcul en ajoutant une règle manipulant les labels. Ainsi, il s’agit d’une analyse dynamique qui évalue le programme pour obtenir une valeur contenant certains des labels présents en tant qu’annotation dans le programme. Si un label n’est pas présent dans la valeur, cela signifie que la sous-expression correspondante n’a pas d’influence sur le calcul de la valeur du programme. Pour illustrer le fonctionnement de cette analyse, reprenons l’exemple suivant que nous avons déjà présenté plus haut : l e t a = 3 2 ; ; l e t b = 1 8 ; ; l e t c = b + 8 ; ; l e t f x = ( a + 1 , x ) ; ; l e t d = f c ; ; l e t d1 = f s t d ; ; l e t d2 = snd d ; ; 321.2. ANALYSE DE FLOT POUR LES LANGAGES FONCTIONNELS Analyse dynamique de M. Abadi et al. Notre analyse statique a : la : 32 a : [ ∅ | [ la | ⊤ ] ] b : lb : 18 b : [ ∅ | [ lb | ⊤ ] ] c : lb, lc : 26 c : [ ∅ | [ lb, lc | ⊤ ] ] f : λx.(32 + 1, x) f : [ ∅ | [ ∅ | < λx.(a + 1, x),(a, . . .); . . . > ] ] d : (la : 32 + 1, lb, lc : 26) d : [ ∅ | [ ∅ | ( [ la | ⊤ ], [ lb, lc | ⊤ ]) ] ] d1 : la : 33 d1 : [ ∅ | [ la | ⊤ ] ] d2 : lb, lc : 26 d2 : [ ∅ | [ lb, lc | ⊤ ] ] L’analyse dynamique de M. Abadi et al. est définie par une sémantique small-step et les couples sont encodés sous forme de fonctions, ce qui explique pourquoi la valeur de d n’est pas complètement réduite. Outre les dépendances de terminaison qui ne sont pas présentes dans l’analyse de M. Abadi et al. et les valeurs numériques qui sont abstraites dans notre analyse, les dépendances calculées sont identiques dans cet exemple. M. Abadi et al. [ABHR99] montrent ensuite que plusieurs formes d’analyses de flot d’information peuvent être construites en utilisant le même calcul de dépendances. Ils proposent alors un cadre générique pour ces diverses formes d’analyses. F. Pottier et S. Conchon [PC00] ont alors transformé l’analyse dynamique de [ALL96] en une analyse statique en utilisant une « simple » traduction et un système de types standard. Ils affirment qu’en combinant leur travail avec celui de [ABHR99], leur analyse statique peut aussi être utilisée pour toutes les formes d’analyse de dépendances présentées dans [ABHR99]. Plus tard, François Pottier et Vincent Simonet [PS02] ont proposé une technique pour l’analyse de flot sur un lambda calcul étendu par la gestion des références et des exceptions. C’est une nouvelle approche, basée sur un système de types spécifique, qui a été proposée pour combler les manques de l’approche précédente [PC00]. Cette dernière approche, utilisée comme base pour la construction de l’outil FlowCaml [SR03, Flo03], utilise un treillis représentant des niveaux de sécurité dans le but d’assurer des propriétés de non-interférence. Comme il a été montré précédemment dans [ABHR99], ce type d’analyse à base de treillis peut être utilisé pour effectuer diverses analyses de dépendances en utilisant un treillis adapté. La notion de non-interférence a été introduite en 1982 par J.A. Goguen et J. Meseguer [GM82]. Il s’agit d’une propriété sur un programme manipulant des données et ayant des 331.2. ANALYSE DE FLOT POUR LES LANGAGES FONCTIONNELS interaction avec son environnement. En langage simple, cette propriété s’exprime de la manière suivante : « Un comportement du programme ayant un niveau de sécurité faible n’est pas affecté par une donnée ayant un niveau de sécurité élevé ». Cette propriété permet en particulier de ne pas révéler d’information confidentielle à des personnes non-autorisées. On retrouve par exemple cette notion sous la forme de propriétés d’isolation sur les programmes embarqués dans les cartes à puce [ACL03]. L’analyse de non-interférence de FlowCaml est une analyse de flot d’information pré- sentant des similarités avec notre analyse de dépendances. On peut attribuer à certaines valeurs du programme des niveaux de sécurité et définir un treillis spécifiant une relation d’ordre entre les différents niveaux de sécurité. Un système de types permet alors d’inférer les niveaux de sécurité des valeurs calculées par le programme et de vérifier la cohérence avec les annotations de l’utilisateur. On peut ainsi vérifier qu’aucune valeur confidentielle n’a d’influence sur une valeur moins confidentielle. Dans l’analyse de dépendances dont nous avons besoin, la préoccupation sous-jacente est de savoir si une défaillance quelconque à un point donné du programme peut ou non avoir des répercussions sur une valeur considérée comme critique. Cette analyse est particulièrement utile pour garantir qu’un point de programme (une sous-expression donnée) n’a aucune influence sur une certaine valeur critique. On peut alors certifier que cette valeur restera valide en cas de défaillance au point de programme. On constate que, bien que le vocabulaire soit différent, notre besoin est assez proche de ce que propose l’analyse de non-interférence de FlowCaml. D’après nos expérimentations, il est possible d’utiliser FlowCaml pour calculer les dé- pendances dont nous avons besoin (du point de vue de l’évaluateur de logiciels critiques) en obtenant des résultats plutôt bons, jusqu’à un certain point. Pour cela, on utilise un treillis plat (relation d’ordre vide) dont les éléments sont des identifiants désignant les points de programmes dont nous souhaitons connaître l’impact. L’inférence de type fournit alors l’analyse de dépendances désirée. Cependant, certains aspects de l’analyse ne sont pas adaptés. Premièrement, le système d’annotation manque de souplesse. Par exemple, on ne peut annoter que des valeurs mutuellement indépendantes, sans quoi il serait nécessaire d’expliciter dans le treillis les relations entre les valeurs annotées, ce qui nous ferait 341.2. ANALYSE DE FLOT POUR LES LANGAGES FONCTIONNELS perdre la traçabilité des différentes dépendances. Il n’est pas non plus possible d’annoter une valeur structurée (par exemple un couple) par un label unique. On notera également qu’il n’est pas possible d’annoter un point de programme quelconque, mais uniquement les valeurs nommées. Deuxièmement, l’analyse de FlowCaml ne permet pas d’abstraire un morceau de programme en le considérant comme une boîte noire. C’est un besoin important pour l’évaluateur de logiciels critiques pour lui permettre de se concentrer sur l’analyse d’un composant particulier du programme, en considérant les autres composants comme opaques. Cette fonctionnalité peut aussi lui permettre d’analyser facilement un composant isolé du programme sans connaître l’implémentation des autres composants utilisés. Par exemple, un évaluateur peut vouloir effectuer l’évaluation d’un programme faisant appel à des librairies dont il n’a pas accès au code source. De plus, l’analyse de dépendances que nous présentons permet à la fois l’analyse d’impact sur la terminaison du programme et l’analyse d’impact sur les valeurs calculées lors de l’évaluation du programme. Cette distinction entre dépendances de terminaison et dé- pendances de valeurs n’est pas présente dans FlowCaml. Toujours sur le même exemple, voici une comparaison entre l’analyse de FlowCaml et notre analyse statique : flow ! b < ! c ; ; l e t a : ! a i n t = 3 2 ; ; l e t b : ! b i n t = 1 8 ; ; l e t c : ! c i n t = b + 8 ; ; l e t f x = ( a + 1 , x ) ; ; l e t d = f c ; ; Analyse statique FlowCaml Notre analyse statique a : !a int a : [ ∅ | [ la | ⊤ ] ] b : !b int b : [ ∅ | [ lb | ⊤ ] ] c : [> !b, !c] int c : [ ∅ | [ lb, lc | ⊤ ] ] f : ’a -> !a int * ’a f : [ ∅ | [ ∅ | < λx.(a + 1, x),(a, . . .); . . . > ] ] d : !a int * [> !b, !c] int d : [ ∅ | [ ∅ | ( [ la | ⊤ ], [ lb, lc | ⊤ ]) ] ] FlowCaml calcule les dépendances pendant le typage et fournit les résultats de types annotés par des informations de dépendances. Les résultats nous indiquent que la valeur de 351.2. ANALYSE DE FLOT POUR LES LANGAGES FONCTIONNELS l’identificateur a (resp. b) est un entier qui ne dépend que de lui-même. Pour la définition de c, FlowCaml rejette cette définition si nous n’indiquons pas explicitement la relation entre b et c à l’aide de la directive flow !b < !c ;; qui signifie que l’on autorise un flot d’information allant d’une valeur de niveau !b vers une valeur de niveau !c. Le résultat de c correspond au type d’une fonction prenant un paramètre et retournant un couple dont la première composante est un entier dépendant de a et dont la seconde composante a le même type et les mêmes dépendances que l’argument. C’est un résultat bien plus concis et explicite que le résultat de notre analyse qui embarque le corps de la fonction ainsi que son environnement. Le résultat de d nous fournit les mêmes informations de dépendances que notre analyse. Dans notre analyse, nous représentons tous les nombres entiers par la valeur ⊤ qui représente n’importe quelle valeur. Nous pourrions ajouter à notre algèbre de valeurs abstraites une valeur permettant de représenter uniquement les nombres entiers, mais il n’est pas évident que ceci ait un réel intérêt. Par contre, au sujet de la représentation des fonctions au sein de notre algèbre de valeurs abstraites, il serait sans doute intéressant de trouver une représentation plus compacte, à l’image du type retourné par FlowCaml. Nous nous sommes inspirés de la méthode utilisée par M. Abadi et al. [ALL96] pour annoter à l’aide de labels les sous-expressions du programme dont nous souhaitons suivre l’impact. Notre analyse dynamique suit le même principe que leur analyse en calculant la valeur du programme tout en y accumulant les labels utilisés pour son élaboration. Il faut cependant remarquer deux différences fondamentales. Premièrement, nous utilisons une sé- mantique big-step contrairement à M. Abadi et al. qui utilisent une sémantique small-step. L’avantage d’une sémantique big-step est de pouvoir lier directement une expression avec le résultat de son évaluation, ce qui nous est d’une grande aide lorsque l’on veut parler de plusieurs évaluations simultanées d’une même expression. Le choix de la sémantique bigstep nous a permis d’exprimer les définitions de nos sémantiques de façon plus naturelle, en particulier pour la sémantique collectrice. Ce choix nous a également permis d’obtenir des preuves plus simples, en particulier pour les sémantiques collectrice et abstraite. Deuxiè- mement, nous produisons des valeurs structurées dont chaque sous-terme est annoté par ses propres dépendances, contrairement à leur analyse qui regroupe en tête de la valeur 361.3. ANALYSE DE TEINTES produite une liste globale de tous les labels utilisés pour produire la valeur. Notre analyse permet ainsi d’obtenir un résultat plus précis. Nous avons ensuite transformé notre analyse dynamique en une analyse statique. Nous avons alors marqué une rupture avec les autres travaux présentés dans cette section, puisque contrairement à F. Pottier et S. Conchon, nous n’avons pas formalisé notre analyse statique sous forme d’un système de types. Nous avons fait le choix d’utiliser le formalisme de l’interprétation abstraite qui nous a permis plus de souplesse dans la définition d’une analyse adaptée à nos besoins. En particulier, ce cadre nous a permis de définir avec aisance l’abstraction d’une partie de programme sous forme de boîte noire. 1.3 Analyse de teintes L’analyse de teintes telle que présentée dans [XBS06] est un cas particulier d’analyse de flot d’information [Kri07]. Ce type d’analyse permet d’identifier les entrées (contrôlables par l’utilisateur) ayant un impact sur certaines opérations dites « critiques » ou « dangereuses » du point de vue de la sécurité. Par exemple, si une valeur contrôlable par l’utilisateur est utilisée sans précaution particulière en tant qu’indice lors de la modification d’une case de tableau, il peut y avoir une vulnérabilité de type buffer overflow. Dans ce cas, l’utilisateur peut modifier des valeurs en mémoire auxquelles il ne devrait pas avoir accès. Pour détecter ce type de vulnérabilité, l’analyse de teinte permet d’identifier tout au long du programme les valeurs dites teintées (ie. contrôlables par l’utilisateur) afin de donner une alerte si une telle valeur est utilisée pour effectuer une opération dangereuse (accès à un tableau, instruction jump, requête SQL, . . . ). Notre analyse a pour but, quant à elle, d’identifier tout au long du programme les valeurs possiblement impactées par certains points de programmes (parties non vérifiées d’un programme ou bien valeurs possiblement issues d’un dysfonctionnement). Cette information peut alors nous permettre d’alerter l’utilisateur si une valeur critique du programme peut être impactée par un dysfonctionnement éventuel. On peut ainsi apercevoir la similarité entre les deux approches en considérant un point de programme annoté pour notre analyse comme une valeur teintée. L’analyse de teinte 371.4. INTERPRÉTATION ABSTRAITE permettrait alors de faire la distinction entre les valeurs impactées par ce point de programme et celles qui ne le sont pas. Cependant, elles diffèrent par plusieurs aspects. Dans l’analyse de teintes, une valeur est soit « teintée » soit « non teintée ». Il n’y a aucune distinction entre les différents points d’entrée de l’utilisateur, Bien qu’il soit possible de relier une valeur teintée à un point d’entrée précis en utilisant des informations supplémentaires au sujet des chemins d’exécution, l’analyse de teintes en elle-même ne le permet pas. Notre analyse permet d’indiquer pour chaque valeur quels sont les points d’entrée dont elle dépend. C’est une information importante pour aider l’évaluateur à comprendre la structure du programme et les dépendances entres ses différentes parties. De plus, comme nous l’avons montré plus haut dans la comparaison avec les analyses de flot d’information, nous avons besoin de pouvoir considérer certaines parties du programme comme opaques, ce qui n’est pas le cas des analyses de teintes en général. Enfin, notre analyse s’effectue sur un langage fonctionnel dans lequel les préoccupations de sécurité sont différentes de celles de la plupart des analyses de teintes effectuées sur des langages impératifs. En effet, les accès à des tableaux ou les instructions jump ne sont pas courants dans les langages fonctionnels purs. Une piste intéressante détaillée dans [CMP10] pour une analyse de teintes est la possibilité de garder trace des chemins d’exécution permettant de relier un point d’entrée à l’instruction impactée. Ce type d’information pourrait être particulièrement utile pour notre analyse de dépendances. Ce sujet a d’ailleurs été abordé dans la thèse de P. Ayraut [Ayr11] (Partie III, chapitre 4). 1.4 Interprétation abstraite L’interprétation abstraite est un cadre mathématique permettant de formaliser des analyses de programmes et de prouver leur correction. L’idée principale est d’exécuter des programmes sur un domaine abstrait dont les éléments représentent des propriétés sur le domaine d’évaluation standard. Pour cela, on définit explicitement des fonctions d’abstraction et de concrétisation pour établir le lien entre le domaine d’évaluation standard et le domaine abstrait. Une méthode générique permet alors de prouver la correction de ce 381.4. INTERPRÉTATION ABSTRAITE genre d’analyses de programmes en prouvant certaines propriétés sur la composition des fonctions d’abstraction, de concrétisation et d’évaluation abstraite. À l’origine, la théorie de l’interprétation abstraite a été conçue par P. et R. Cousot [CC77, CC79] pour des langages impératifs. Les analyses de programmes décrites par cette méthode sont exprimées sous forme d’une sémantique opérationnelle. Par la suite, le cadre de l’interprétation abstraite a été adapté aux langages fonctionnels du premier ordre par A. Mycroft [Myc81]. La théorie sous-jacente est alors différente. Contrairement au travail de P. et R. Cousot basé sur une description sous forme de sé- mantique opérationnelle, A. Mycroft fait le choix d’utiliser une sémantique dénotationnelle pour décrire les analyses de programmes. G. Burn, C. Hankin et S. Abramsky [BHA86] ont alors étendu l’analyse de programmes de A. Mycroft en l’adaptant aux langages fonctionnels d’ordre supérieur. En plus d’étendre cette analyse qui est un cas particulier d’interprétation abstraite, ils ont également étendu le cadre général de l’interprétation abstraite aux langages fonctionnels d’ordre supérieur. Dans la lignée de A. Mycroft, leur travail fait usage d’une sémantique dénotationnelle pour définir leur analyse. D’autres travaux, comme ceux de S. Hunt [Hun91] ont appliqué l’interprétation abstraite à des langages de programmation fonctionnels en utilisant des sémantiques dénotationnelles. D’autres approches sont présentées par N.D. Jones et F. Nielson dans [Jon94]. Nous présentons ici une approche originale de l’interprétation abstraite pour un langage fonctionnel d’ordre supérieur. Notre analyse de programme est exprimée sous forme d’une sémantique opérationnelle, comme pour les langages impératifs. De plus, notre analyse opère sur un langage de programmation comprenant des constructeurs de données récursives ainsi que du filtrage par motifs. Pour ce qui est des fonctions récursives, nous nous affranchissons du problème de la terminaison et de la recherche d’un point fixe à l’aide d’une approximation permettant de casser la récursion. Cependant, le problème pourrait resurgir en recherchant une meilleure représentation des fonctions récursives dans l’algèbre des valeurs abstraites. En effet, il serait souhaitable d’améliorer notre analyse en trouvant une meilleure représentation des fonctions, ce qui pourrait apporter de nombreux avantages 391.4. INTERPRÉTATION ABSTRAITE autant du point de vue de la précision de l’analyse que du point de vue de la performance. 40Chapitre 2 Notion de dépendance 2.1 Introduction La notion de dépendance est souvent utilisée de manière intuitive. De nombreuses analyses de dépendances se contentent d’une définition informelle. Et quand une définition formelle est donnée, elle est parfois incomplète et ne reflète que partiellement la notion utilisée dans l’analyse correspondante. Nous nous appliquons dans ce chapitre à donner une définition formelle à cette notion de dépendance. Une particularité de la notion de dépendance que nous proposons est la distinction entre 2 types de dépendances : – les dépendances concernant la valeur d’une expression, – les dépendances concernant la terminaison d’une évaluation. Les dépendances de terminaison sont rarement prises en compte dans les analyses de dépendances. Pourtant, la modification d’une partie d’un programme peut provoquer une boucle infinie ou une erreur lors de son évaluation. Dès lors, la connaissance des dépendances de terminaison constitue une information importante, en particulier pour les évaluateurs de logiciels critiques. Après avoir présenté la sémantique opérationnelle de notre langage (qui est la sémantique usuelle d’un programme ML purement fonctionnel), nous expliquerons comment annoter un programme dont on veut connaître les dépendances. Nous verrons ensuite comment annoter les valeurs du langage avec des informations de dépendance. Nous pourrons alors définir la sémantique opérationnelle avec injection qui nous permettra d’introduire 412.1. INTRODUCTION les notions d’injection de valeur et d’impact d’une injection. Nous aurons alors à notre disposition toutes les notions sous-jacentes nécessaires à la définition formelle de la notion de dépendance. Nous présenterons alors la définition de la notion de dépendance que nous proposons. 422.2. LE LANGAGE : ALGÈBRE DES EXPRESSIONS 2.2 Le langage : algèbre des expressions Le langage sur lequel nous définissons notre analyse est un noyau purement fonctionnel de la famille ML. Il contient les principales caractéristiques des langages purement fonctionnels : les fonctions d’ordre supérieur, les constructeurs de données (types algébriques), le filtrage par motif (pattern-matching), la liaison (let-binding). En plus des constructions habituelles, on ajoute la possibilité d’annoter une sousexpression à l’aide d’un label. Cette annotation permet de définir un point d’injection (cf. section 2.4). e := n | C | D(e) | (e1, e2) Constructeurs de données x Identificateur λx.e | recf.x.e Fonctions (récursive ou non) e1 e2 Application let x = e1 in e2 Liaison if e then e1 else e2 Expression conditionnelle match e with p → e1 | x → e2 Filtrage par motif l : e Annotation d’un point d’injection p := C | D(x) | (x1, x2) Filtres des données structurées Figure 2.1 – Algèbre des expressions du langage Etant donné un ensemble de constantes numériques noté Z, un ensemble de constructeurs de donnée sans paramètre est noté Constr0 un ensemble de constructeurs de données avec paramètre est noté Constr1 . 2.3 Sémantique opérationnelle Il s’agit de la sémantique opérationnelle usuelle. Nous ajoutons une seule règle supplé- mentaire permettant d’ignorer les annotations dans les programmes. 2.3.1 Valeurs L’algèbre des valeurs comprend les valeurs constantes (entières et booléennes), des constructeurs de données structurées (paramétrés ou non), un constructeur de couple et des fermetures (récursives ou non). 432.3. SÉMANTIQUE OPÉRATIONNELLE v := n | b | C | D(v) | (v1, v2) Constructeurs de données < λx.e, Γ > Fermeture < recf.x.e, Γ > Fermeture récursive 2.3.2 Environnements Un environnement d’évaluation est une liste associative identificateurs → valeur. Γ := (x1, v1) ⊕ . . . ⊕ (xn, vn) Environnement 2.3.3 Règles d’inférence Le jugement d’évaluation de la sémantique opérationnelle prend la forme suivante : Γ ⊢ e →→ v Hormis la règle de l’évaluation d’une expression annotée par un label que nous avons ajoutée, les règles d’inférence définissant la sémantique opérationnelle de notre langage sont usuelles. Ces règles sont récapitulées dans les figures 2.2 et 2.3. Nous donnons ci-dessous quelques explications concernant l’évaluation des fonctions et de leur application, du filtrage par motif et des expressions annotées. Évaluation et application des fonctions Une fonction non-récursive est évaluée en une fermeture. Celle-ci contient la définition de la fonction ainsi que l’environnement dans lequel elle a été définie (ce qui permet de retrouver la valeur de chaque identificateur libre de la définition de la fonction). Une fonction récursive est évaluée en une fermeture récursive, similaire à une fermeture non-récursive. Les deux types de fermeture permettent de déterminer quelle règle d’inférence appliquer lors de l’application d’une fonction. Dans notre sémantique, l’application d’une fonction (récursive ou non) se fait en appel par valeur. C’est-à-dire que la valeur de l’argument est calculée systématiquement avant l’évaluation du corps de la fonction (même si l’argument n’est pas utilisé dans le corps de la fonction). 442.3. SÉMANTIQUE OPÉRATIONNELLE Filtrage à motif unique Une particularité du filtrage par motif dans notre langage est qu’il ne filtre que sur un seul motif. Si la valeur filtrée correspond au motif, alors l’évaluation passe par la première branche, sinon, l’évaluation passe par la seconde branche. Bien que cette restriction contraigne la forme des programmes, elle n’affecte en rien l’expressivité du langage. En effet, il est toujours possible d’écrire des filtrages imbriqués, ce qui donne la possibilité de réécrire tout programme contenant des filtrages à plusieurs motifs en un programme équivalent contenant uniquement des filtrages à motif unique en cascade. Notre langage peut donc être vu comme un langage noyau n’étant pas directement manipulé par l’utilisateur. Une phase de réécriture simple sera nécessaire entre le langage utilisé en pratique par l’utilisateur et le langage sur lequel l’analyse sera effectuée. Expressions annotées Les annotations sont utilisées pour définir des points d’injection (cf. section 2.4). Ces points d’injection serviront à calculer les dépendances du programme. En ce qui concerne la sémantique opérationnelle, ils n’ont aucune signification et sont donc ignorés. Techniquement, évaluer une expression annotée revient à évaluer sa sous-expression sans tenir compte de l’annotation. 2.3.4 Sémantique des programmes mal typés et filtrage par motif Le filtrage par motif que nous présentons est défini par les règles op-match et opmatch-var ainsi que par le jugement v, p ⊢p •. On considère que le typage garantit que toute valeur filtrée est soit un constructeur de donnée, soit un couple. Dans ces cas-là, les règles d’inférence définissent la sémantique du filtrage. Par contre, nous ne donnons pas de sémantique à l’évaluation des programmes mal typés pour lesquels l’expression filtrée ne s’évalue pas en une valeur filtrable (constructeur de donnée ou couple). Par exemple, si l’expression filtrée s’évalue en une fermeture, le filtrage n’a pas de sens et l’expression n’a donc pas de sémantique d’évaluation. Ce choix est cohérent avec la sémantique d’une expression conditionnelle. En effet, nous n’explicitons pas la sémantique d’une expression conditionnelle dans le cas où la condition s’évalue en autre chose qu’un booléen. Dans un compilateur réel, la sémantique des programmes mal typés peut dépendre du 452.3. SÉMANTIQUE OPÉRATIONNELLE op-num Γ ⊢ n →→ n op-ident v = Γ[x] Γ ⊢ x →→ v op-abstr Γ ⊢ λx.e →→< λx.e, Γ > op-abstr-rec Γ ⊢ recf.x.e →→< recf.x.e, Γ > op-apply Γ ⊢ e1 →→< λx.e, Γ1 > Γ ⊢ e2 →→ v2 (x, v2) ⊕ Γ1 ⊢ e →→ v Γ ⊢ e1 e2 →→ v op-apply-rec Γ ⊢ e1 →→ v1 v1 =< recf.x.e, Γ1 > Γ ⊢ e2 →→ v2 (f, v1) ⊕ (x, v2) ⊕ Γ1 ⊢ e →→ v Γ ⊢ e1 e2 →→ v op-if-true Γ ⊢ e →→ true Γ ⊢ e1 →→ v1 Γ ⊢ if e then e1 else e2 →→ v1 op-if-false Γ ⊢ e →→ f alse Γ ⊢ e2 →→ v2 Γ ⊢ if e then e1 else e2 →→ v2 op-constr-0 Γ ⊢ C →→ C op-constr-1 Γ ⊢ e →→ v Γ ⊢ D(e) →→ D(v) op-couple Γ ⊢ e1 →→ v1 Γ ⊢ e2 →→ v2 Γ ⊢ (e1, e2) →→ (v1, v2) op-match Γ ⊢ e →→ v v, p ⊢p Γp Γp ⊕ Γ ⊢ e1 →→ v1 Γ ⊢ match e with p → e1 | x → e2 →→ v1 op-match-var Γ ⊢ e →→ v v, p ⊢p ⊥ (x, v) ⊕ Γ ⊢ e2 →→ v2 Γ ⊢ match e with p → e1 | x → e2 →→ v2 op-letin Γ ⊢ e1 →→ v1 (x, v1) ⊕ Γ ⊢ e2 →→ v2 Γ ⊢ let x = e1 in e2 →→ v2 op-annot Γ ⊢ e →→ v Γ ⊢ l : e →→ v Figure 2.2 – Règles d’inférence de la sémantique opérationnelle opm-constr-0 C, C ⊢p {} opm-constr-1 D(v), D(x) ⊢p {(x, v)} opm-couple (v1, v2),(x1, x2) ⊢p {(x1, v1); (x2, v2)} opm-constr-0-not p ̸= C C, p ⊢p ⊥ opm-constr-1-not p ̸= D′ (_) D(v), p ⊢p ⊥ opm-couple-not p ̸= (_, _) (v1, v2), p ⊢p ⊥ Figure 2.3 – Règles d’inférence du filtrage de la sémantique opérationnelle 462.3. SÉMANTIQUE OPÉRATIONNELLE choix de l’implémentation du compilateur. Il est en effet possible que pour des raisons de performance, le compilateur se repose sur le typage pour limiter le nombre d’opérations effectuées. Dans le cas de l’évaluation d’une expression conditionnelle par exemple, on pourrait ne tester que l’égalité entre la valeur de la condition est la valeur true pour passer dans la première branche et que dans tous les autres cas, on passe dans la seconde branche, même si la valeur de la condition n’est pas f alse mais un couple, une fermeture ou toute autre valeur. De même, dans le cas de l’évaluation d’une expression de filtrage, on pourrait se reposer sur le typage pour passer dans la seconde branche dans tous les cas où la valeur filtrée ne correspond pas au motif, même dans les cas mal typés où la valeur de l’expression filtrée n’est ni un constructeur de donnée, ni un couple. Ces choix d’optimisation du compilateur se reposant sur le typage n’ont évidemment pas d’influence sur le résultat de l’évaluation des programmes bien typés. Cependant, notre approche de l’analyse de dépendances considère à la fois l’impact des injections bien typées et l’impact des injections mal typées. Une injection mal typée peut survenir à diverses occasions, par exemple lors du dysfonctionnement d’un capteur ou bien lors d’une perturbation électromagnétique qui modifierait la mémoire de façon imprévisible. 472.4. POINTS D’INJECTION 2.4 Points d’injection 2.4.1 Dans le programme On souhaite analyser un programme pour calculer ses dépendances vis-à-vis de certains points du programme. Ces points de programmes sont appelés « points d’injection » et sont représentés formellement par des annotations sur les sous-expressions du programme. Par exemple, si l’utilisateur veut analyser l’impact d’une sous-expression sur l’évaluation complète d’un programme, il suffira alors d’annoter cette sous-expression à l’aide d’un label unique et de lancer l’analyse. L’utilisateur de l’analyse (évaluateur de logiciels critiques) choisira d’après son expertise quels sont les points de programmes qu’il souhaite annoter. Ces points d’injection peuvent en particulier correspondre à des parties du programmes non-critiques dans le but de s’assurer qu’un dysfonctionnement dans une partie non-critique du programme ne peut pas se propager à une partie critique de celui-ci. 2.4.2 Dans l’environnement La valeur d’une fonction est représentée par une fermeture contenant le corps de la fonction. Celui-ci est une expression contenant possiblement des points d’injection. Au cours de l’évaluation d’un programme, les points d’injection vont donc naturellement se retrouver dans l’environnement d’évaluation. 482.5. SÉMANTIQUE OPÉRATIONNELLE AVEC INJECTION 2.5 Sémantique opérationnelle avec injection La sémantique opérationnelle avec injection est une extension de la sémantique opérationnelle usuelle. Son but est de donner une valeur à un programme dans un environnement donné et ceci pour n’importe quelle injection (à un point du programme ou bien dans son environnement d’évaluation). Cette sémantique donne toujours le même résultat que la sémantique opérationnelle sur les programmes ne comportant pas de point d’injection (programmes non-annotés). La seule différence entre la sémantique opérationnelle usuelle et celle avec injection se trouve lors de l’évaluation d’une sous-expression annotée par un label. Là où la sémantique opérationnelle ignore tout simplement l’annotation, la sémantique opérationnelle avec injection va effectuer ce que l’on appelle l’injection. C’est le comportement de la sémantique opérationnelle avec injection sur les sous-expressions annotées qui constitue précisément notre définition de la notion d’injection. La notion d’injection définie ici est à la base de notre notion de dépendance. 2.5.1 Règles d’inférence Formellement, la sémantique opérationnelle avec injection prend la forme d’un jugement d’évaluation défini par des règles d’inférence. Ce jugement d’évaluation se note de la manière suivante : Γ ⊢l:vl e →→ v , où e est l’expression évaluée, Γ l’environnement d’évaluation et v la valeur résultat. Ce jugement d’évaluation est paramétré par une injection notée en indice (⊢l:vl ), où l représente le point du programme sur lequel on fait l’injection et vl la valeur injectée. On dit que v est la valeur de l’expression e dans l’environnement Γ après injection de la valeur vl au point de programme l. Les règles d’inférence sont toutes identiques aux règles de la sémantique opérationnelle hormis la règle d’évaluation d’une sous-expression annotée. Cette dernière règle est divisée en 2 cas distincts : si l’expression est annotée par le label sur lequel on fait l’injection, alors sa valeur réelle est ignorée et remplacée par la valeur injectée vl , sinon, l’annotation est 492.5. SÉMANTIQUE OPÉRATIONNELLE AVEC INJECTION opinj-num Γ ⊢l:vl n →→ n opinj-ident v = Γ[x] Γ ⊢l:vl x →→ v opinj-abstr Γ ⊢l:vl λx.e →→< λx.e, Γ > opinj-abstr-rec Γ ⊢l:vl recf.x.e →→< recf.x.e, Γ > opinj-apply Γ ⊢l:vl e1 →→< λx.e, Γ1 > Γ ⊢l:vl e2 →→ v2 (x, v2) ⊕ Γ1 ⊢l:vl e →→ v Γ ⊢l:vl e1 e2 →→ v opinj-apply-rec Γ ⊢l:vl e1 →→ v1 v1 =< recf.x.e, Γ1 > Γ ⊢l:vl e2 →→ v2 (f, v1) ⊕ (x, v2) ⊕ Γ1 ⊢l:vl e →→ v Γ ⊢l:vl e1 e2 →→ v opinj-if-true Γ ⊢l:vl e →→ true Γ ⊢l:vl e1 →→ v1 Γ ⊢l:vl if e then e1 else e2 →→ v1 opinj-if-false Γ ⊢l:vl e →→ f alse Γ ⊢l:vl e2 →→ v2 Γ ⊢l:vl if e then e1 else e2 →→ v2 opinj-match Γ ⊢l:vl e →→ v v, p ⊢p Γp Γp ⊕ Γ ⊢l:vl e1 →→ v1 Γ ⊢l:vl match e with p → e1 | x → e2 →→ v1 opinj-match-var Γ ⊢l:vl e →→ v v, p ⊢p ⊥ (x, v) ⊕ Γ ⊢l:vl e2 →→ v2 Γ ⊢l:vl match e with p → e1 | x → e2 →→ v2 opinj-constr-0 Γ ⊢l:vl C →→ C opinj-constr-1 Γ ⊢l:vl e →→ v Γ ⊢l:vl D(e) →→ D(v) opinj-couple Γ ⊢l:vl e1 →→ v1 Γ ⊢l:vl e2 →→ v2 Γ ⊢l:vl (e1, e2) →→ (v1, v2) opinj-letin Γ ⊢l:vl e1 →→ v1 (x, v1) ⊕ Γ ⊢l:vl e2 →→ v2 Γ ⊢l:vl let x = e1 in e2 →→ v2 Figure 2.4 – Sémantique opérationnelle avec injection : règles d’inférence identiques à la sémantique usuelle opinj-annot-same Γ ⊢l:vl l : e →→ vl opinj-annot-other Γ ⊢l:vl e →→ v l ̸= l ′ Γ ⊢l:vl l ′ : e →→ v Figure 2.5 – Sémantique opérationnelle avec injection : règles d’inférence spécifiques ignorée. On notera qu’une injection (évaluation d’une sous-expression annotée par le label sur lequel on fait l’injection) termine toujours. En effet, la sous-expression n’est pas évaluée et sa valeur (qu’elle existe ou non) est remplacée par la valeur injectée. Les règles identiques à la sémantique opérationnelle usuelle sont réunies sur la figure 2.4. Les deux règles spécifiques à la sémantique opérationnelle avec injection se trouvent sur la figure 2.5. 502.5. SÉMANTIQUE OPÉRATIONNELLE AVEC INJECTION 2.5.2 Correction 2.5.2.1 Énoncé informel du théorème Comme nous l’avons dit plus haut, la sémantique opérationnelle avec injection vient introduire la notion d’injection en remplaçant une règle de la sémantique opérationnelle usuelle par deux nouvelles règles d’inférence. Il convient de vérifier qu’en ce qui concerne les programmes non-annotés, la sémantique opérationnelle avec injection fournit exactement les mêmes résultats que la sémantique opérationnelle. En ce qui concerne la sémantique de la notion d’injection (les deux nouvelles règles d’inférence), il n’y a pas de propriété de correction à vérifier puisque ces deux règles d’inférences constituent notre définition de la notion d’injection. Cependant, il y a une propriété intéressante concernant la notion d’injection : si un label n’apparaît pas dans le programme évalué, alors aucune injection sur ce label ne peut modifier la valeur du programme. Cette propriété engloble la propriété d’extension énoncée ci-dessus. En effet, l’évaluation avec injection d’un programme non-annoté est un cas particulier d’évaluation avec injection sur un label n’apparaissant pas dans le programme. Notre théorème de correction exprimera donc la propriété la plus forte. 2.5.2.2 Illustration par l’exemple Afin d’illustrer la notion d’injection et le fonctionnement de la sémantique opérationnelle avec injection, voici quelques exemples d’évaluation de programmes. Exemple 1 : programme non-annoté Sur les programmes non-annotés les résultats de la sémantique opérationnelle avec injection et de la sémantique opérationnelle sont les mêmes. Notons e le programme suivant : l e t t = 18 i n l e t f x = ( x−t , x+t ) i n 512.5. SÉMANTIQUE OPÉRATIONNELLE AVEC INJECTION f 32 Nous avons les deux jugements suivants : ⊢ e →→ (14, 50) ⊢l:vl e →→ (14, 50) (pour toute injection (l, vl)) Exemple 2 : programme annoté Maintenant voyons le cas du même programme en lui ajoutant une annotation (label l) sur une de ses sous-expressions. Notons e ′ le programme suivant : l e t t = 18 i n l e t f x = ( l : x−t , x+t ) i n f 32 Nous avons les deux jugements suivants : ⊢ e ′ →→ (14, 50) ⊢l:vl e ′ →→ (vl , 50) (pour toute valeur injectée vl) ⊢l:3 e ′ →→ (3, 50) (exemple en injectant la valeur 3) Lorsque la sous-expression f 32 est évaluée, le corps de la fonction est déplié. On évalue alors l’expression (l :x−t, x+t) dans l’environnement {(x, 32); (t, 18)}. La valeur vl est alors injectée lors de l’évaluation de la première composante du couple puisque celle-ci est annotée par le label l. La seconde composante du couple est évaluée de manière usuelle. Exemple 3 : programme annoté en plusieurs points Modifions de nouveau notre exemple pour annoter une seconde sous-expression. Notons e ′′ le programme suivant : l e t t = l ’ : 1 8 i n l e t f x = ( l : x−t , x+t ) i n 522.5. SÉMANTIQUE OPÉRATIONNELLE AVEC INJECTION f 32 Voyons le résultat pour une injection sur l, celui pour une injection sur l ′ : celui pour une injection sur un l ′′ n’apparaissant pas dans le programme : ⊢ e ′′ →→ (14, 50) ⊢l:vl e ′′ →→ (vl , 50) (pour toute valeur injectée vl) ⊢l ′ :vl ′ e ′′ →→ (14, 32 + vl ′) (pour toute valeur injectée vl ′) ⊢l ′ :5 e ′′ →→ (14, 37) (exemple en injectant la valeur 5) ⊢ l ′′ →→ vl ′′e ′′(14, 50) Exemple 4 : programme annoté dans l’environnement Un environnement d’évaluation peut contenir des points d’injection. En effet, un identificateur peut être lié à une fermeture (récursive ou non) dont le corps de la fonction contient des points d’injection. Prenons, dans l’exemple ci-dessus, l’évaluation de la sous-expression f 32. Cette évaluation se fait dans un environnement contenant une valeur pour t et une pour f. Ces valeurs dépendent de l’injection considérée. Dans le cas des fermetures, l’injection est retardée pour avoir lieu lors de l’application de la fonction. Par exemple, pour l’injection (l ′ , 7), l’environnement d’évaluation de l’expression f 32 est le suivant : Γ := (f, < λx.(l : x − t, x + t), {(t, 7)} >); (t, 7) On a donc le jugement d’évaluation suivant : ⊢l ′ :7 f 32 →→ (25, 39) Dans le cas de l’injection (l, 3), l’environnement d’évaluation de l’expression f 32 est le suivant : Γ := (f, < λx.(l : x − t, x + t), {(t, 18)} >); (t, 18) On évalue alors l’expression (l : x − t, x + t) dans l’environnement {(t, 18)} pour obtenir la valeur (3, 50). On a donc le jugement d’évaluation suivant : 532.5. SÉMANTIQUE OPÉRATIONNELLE AVEC INJECTION ⊢l:3 f 32 →→ (3, 50) 2.5.2.3 Énoncé formel du théorème Théorème 2.5.1. ∀(Γ, e, v), Γ ⊢ e →→ v ⇒ ∀l, ldna_in_eval(l, Γ, e) ⇒ ∀vl . Γ ⊢l:vl e →→ v Le prédicat ldna_in_eval(l, Γ, e) signifie que le label l n’apparaît pas lors de l’évaluation de e dans Γ. C’est à dire qu’il n’apparaît ni dans l’expression e, ni dans les valeurs dans Γ des identificateurs apparaissant dans e. Le prédicat ldna_in_val(l, v) signifie que le label l n’apparaît pas dans la valeur v. Les figures 2.6 et 2.7 fournissent la définition formelle de ces prédicats sous forme de règles d’inférence mutuellement récursives : 2.5.2.4 Preuve de correction La preuve de correction se fait par induction sur le jugement d’évaluation de la sémantique opérationnelle. Pour effectuer la preuve par induction, nous avons besoin de prouver une propriété un peu plus forte que celle énoncée ci-dessus. Nous modifions donc l’énoncé de la propriété à prouver, notre théorème de correction en sera une conséquence triviale. La propriété à prouver se formule alors : ∀(Γ, e, v), Γ ⊢ e →→ v ⇒ ∀l, ldna_in_eval(l, Γ, e) ⇒ ∀vl . Γ ⊢l:vl e →→ v ∧ ldna_in_val(l, v) Dans la majorité des cas, la preuve est triviale. Les cas intéressants sont : – le cas Annot 542.5. SÉMANTIQUE OPÉRATIONNELLE AVEC INJECTION ldna-e-num ldna_in_eval(l, Γ, n) ldna-e-constr-0 ldna_in_eval(l, Γ, C) ldna-e-constr-1 ldna_in_eval(l, Γ, e) ldna_in_eval(l, Γ, D(e)) ldna-e-ident ldna_in_val(l, Γ[x]) ldna_in_eval(l, Γ, x) ldna-e-ident-unbound ̸ ∃v, Γ[x] = v ldna_in_eval(l, Γ, x) ldna-e-abstr ldna_in_eval(l, Γ, e) ldna_in_eval(l, Γ, λx.e) ldna-e-abstr-rec ldna_in_eval(l, Γ, e) ldna_in_eval(l, Γ, recf.x.e) ldna-e-apply ldna_in_eval(l, Γ, e1) ldna_in_eval(l, Γ, e2) ldna_in_eval(l, Γ, e1 e2) ldna-e-if ldna_in_eval(l, Γ, e) ldna_in_eval(l, Γ, e1) ldna_in_eval(l, Γ, e2) ldna_in_eval(l, Γ, if e then e1 else e2) ldna-e-match ldna_in_eval(l, Γ, e) ldna_in_eval(l, Γ, e1) ldna_in_eval(l, Γ, e2) ldna_in_eval(l, Γ, match e with p → e1 | x → e2) ldna-e-annot l ̸= l ′ ldna_in_eval(l, Γ, e) ldna_in_eval(l, Γ, l : e) ldna-e-couple ldna_in_eval(l, Γ, e1) ldna_in_eval(l, Γ, e2) ldna_in_eval(l, Γ,(e1, e2)) ldna-e-letin ldna_in_eval(l, Γ, e1) ldna_in_eval(l, Γ, e2) ldna_in_eval(l, Γ, let x = e1 in e2) Figure 2.6 – Prédicat de non-apparition d’un label lors d’une évaluation ldna-v-num ldna_in_val(l, n) ldna-v-bool ldna_in_val(l, b) ldna-v-constr-0 ldna_in_val(l, C) ldna-v-constr-1 ldna_in_val(l, v) ldna_in_val(l, D(v)) ldna-v-couple ldna_in_val(l, v1) ldna_in_val(l, v2) ldna_in_val(l,(v1, v2)) ldna-v-closure ldna_in_eval(l, Γ, e) ldna_in_val(l, < λx.e, Γ >) ldna-v-closure-rec ldna_in_eval(l, Γ, e) ldna_in_val(l, < recf.x.e, Γ >) Figure 2.7 – Prédicat de non-apparition d’un label dans une valeur 552.6. IMPACT D’UNE INJECTION – les cas effectuant une liaison dans l’environnement (Letin, Match et Apply) – le cas Ident cas annot Pour le cas Annot, nous utilisons l’hypothèse que le label l n’apparaît pas dans l’expression évaluée. Dans ce cas, la règle de la sémantique opérationnelle avec injection est la même que celle de la sémantique opérationnelle (elle ignore l’annotation). cas des liaison Pour les cas effectuant une liaison dans l’environnement, nous avons besoin de savoir que le label n’apparaît pas dans la valeur liée pour appliquer notre hypothèse d’induction. Nous avons cette information grâce au renforcement de l’énoncé de notre théorème car toute valeur liée est issue d’une évaluation, donc puisque le label n’apparaît pas dans l’expression évaluée alors il n’apparaît pas dans la valeur résultat. Pour illustrer nos propos, prenons le cas du let-binding. Nous avons évalué la sous-expression liée e1 dans le même environnement que l’expression globale, donc nous savons par hypothèse d’induction que le label n’apparaît pas dans sa valeur. Cette information nous permet de prouver que le label n’apparaît pas dans l’environnement d’évaluation de la sous-expression e2, puisque la valeur ajoutée à l’environnement est précisément le résultat de l’évaluation de e1. Nous pouvons donc appliquer également l’hypothèse d’induction sur la seconde prémisse de la règle du let-binding et conclure. cas ident La règle Ident de la sémantique opérationnelle avec injection s’applique de façon identique à celle de la sémantique opérationnelle. Le jugement de la sémantique opérationnelle avec injection est donc immédiat à trouver. On déduit que le label n’apparaît pas dans la valeur trouvée dans l’environnement à partir de l’hypothèse que le label n’apparaît pas lors de l’évaluation. 2.6 Impact d’une injection Maintenant que la notion d’injection a été clairement définie, nous pouvons aborder la notion d’impact. Cette dernière nous sera utile pour définir formellement la notion de dépendance. 562.7. DÉPENDANCES D’UNE EXPRESSION Une fois un programme annoté par des points d’injection, on se demande si ces points d’injection ont un « impact » sur l’évaluation du programme. Autrement dit, on souhaite déterminer si l’injection d’une valeur à un certain point d’injection va modifier le comportement du programme. Puisque nous nous limitons à l’analyse de programmes qui terminent, un changement de comportement peut prendre deux formes possibles. Suite à l’injection, l’évaluation peut terminer sur une valeur différente ou bien ne pas terminer. 2.6.1 Impact sur la terminaison Si le programme considéré a une valeur par la sémantique opérationnelle mais qu’il n’a pas de valeur par la sémantique avec injection pour une injection particulière (l, vl), alors on dit que cette injection a un impact sur la terminaison de l’évaluation du programme. On dira également que ce point d’injection (représenté par le label l) a un impact sur la terminaison du programme puisqu’il existe une injection sur ce label ayant un impact sur la terminaison du programme. 2.6.2 Impact sur la valeur Si le programme considéré a une valeur par la sémantique opérationnelle et qu’il a une valeur différente par la sémantique avec injection pour une injection particulière (l, vl), alors on dit que cette injection a un impact sur la valeur du programme. On dira également que ce point d’injection (représenté par le label l) a un impact sur la valeur du programme puisqu’il existe une injection sur ce label ayant un impact sur la valeur du programme. 2.7 Dépendances d’une expression On distingue deux types de dépendances distincts, issus des deux types d’impact pré- sentés plus haut : les dépendances de terminaison et les dépendances de valeur. 572.7. DÉPENDANCES D’UNE EXPRESSION 2.7.1 Dépendances de terminaison La terminaison de l’évaluation d’un programme dépend d’un point d’injection (repré- senté par un label) s’il existe une injection sur ce label ayant un impact sur la terminaison de l’évaluation. On dit alors que ce label fait partie des t-dépendances de ce programme (dans un environnement donné). Lors de l’analyse d’un programme, le résultat de l’analyse contiendra un ensemble de labels représentant l’ensemble des t-dépendances du programme. 2.7.2 Dépendances de valeur La valeur résultant de l’évaluation d’un programme dépend d’un point d’injection (représenté par un label) si il existe une injection sur ce label ayant un impact sur la valeur de l’évaluation. On dit alors que ce label fait partie des v-dépendances de ce programme (dans un environnement donné). Certains labels peuvent avoir un impact uniquement sur une partie de la valeur. Dans ce cas, on voudrait savoir le plus précisément possible quelle partie de la valeur dépend de quel label. Lors de l’analyse d’un programme, le résultat de l’analyse devra contenir une valeur structurée dont chaque sous-terme peut être annoté par l’ensemble de ses v-dépendances. 2.7.3 Illustration par l’exemple Considérons le programme suivant (noté e) : l e t c = l : t r u e i n l e t r e c f x = match x with | ( a , b ) −> i f a then b e l s e f x i n f ( c , l ’ : 17 ) Ce programme termine lors de son évaluation par la sémantique opérationnelle sur la valeur 17. On a le jugement suivant : ⊢ e →→ 17 582.7. DÉPENDANCES D’UNE EXPRESSION Un label n’apparaissant pas dans le programme Un label l ′′ n’apparaissant pas dans le programme e ne peut pas faire partie de ses dépendances (que ce soit ses t-dépendances ou ses v-dépendances) puisqu’aucune injection sur l ′′ n’affecte le comportement du programme. On a le jugement suivant : ⊢l ′′:vl ′′ e →→ 17 (pour toute valeur injectée vl ′′) Le label l Le point d’injection représenté par le label l fait partie des t-dépendances du programme. En effet, il existe une injection (l, f alse) ayant un impact sur la terminaison du programme. La sémantique avec injection ne fournit aucune valeur pour l’évaluation de e avec l’injection (l, f alse). ̸ ∃v. ⊢l:false e →→ v Le label l ′ Le point d’injection représenté par le label l ′ fait partie des v-dépendances du programme. En effet, il existe une injection (l ′ , 18) ayant un impact sur la valeur du programme. La sémantique avec injection fournit une valeur (i.e. 18) pour l’évaluation de e avec l’injection (l ′ , 18) et cette valeur est différente de la valeur opérationnelle du programme (i.e. 17). ⊢l ′ :18 e →→ 18 Par contre, le label l ′ ne fait pas partie des t-dépendances du programme puisque pour toute injection sur l ′ , le programme termine : ⊢l ′ :vl ′ e →→ vl ′ (pour toute valeur injectée vl ′). 592.7. DÉPENDANCES D’UNE EXPRESSION 60Chapitre 3 Analyse dynamique 3.1 Introduction Ce chapitre a pour but de présenter une analyse dynamique des dépendances d’un programme et sa preuve de correction, étape préliminaire à la définition et à la preuve d’une analyse statique présentée dans le chapitre suivant. Notre analyse dynamique est appelée sémantique instrumentée et se trouve présentée à la fin de ce chapitre (cf. section 3.5). Pour présenter cette analyse et en prouver sa correction, nous devons tout d’abord introduire deux sémantiques intermédiaires : la sémantique avec injection dans un t-environnement sur-instrumenté (cf. section 3.3) et la sémantique sur-instrumentée (cf. section 3.4). Ces deux sémantiques intermédiaires permettent de faire le lien entre la notion de dépendance et la sémantique dynamique étape par étape. Chaque étape a son importance dans la simplification de la preuve de correction. La figure 3.1 présente une vue globale des différentes sémantiques intermédaires entre la sémantique opérationnelle avec injection et la sémantique instrumentée. L’analyse dynamique (sémantique instrumentée) a pour but d’analyser le programme au cours de son évaluation. Le résultat fourni est la valeur du programme (au sens de la sémantique opérationnelle) sur laquelle on ajoute des annotations de dépendance. Chaque sous-terme de la valeur contient ses propres annotations pour savoir avec précision quelles parties de la valeur dépendent de tel label et quelles parties n’en dépendent pas. Si on 613.1. INTRODUCTION Sémantique opérationnelle avec injection : Sémantique opérationnelle avec injection dans t-environnement sur-instrumenté : Sémantique sur-instrumentée : Sémantique instrumentée : Les flèches correspondent à des fonctions injectives entre les ensembles de valeurs ou entre les ensembles d'environnements pour visualiser les pertes de précision et pertes de généralité. Figure 3.1 – Sémantiques intermédiaires pour l’analyse dynamique La sémantique avec injection donne la même valeur si on instancie l'environnement avant l'évaluation. En instanciant la valeur sur-instrumentée, on peut obtenir la valeur (ou l'absence de valeur) du programme pour n'importe quelle injection. Il existe une valeur sur-instrumentée pour le programme telle que sa valeur instrumentée est obtenue en supprimant les fonctions d'impact dans la valeur sur-instrumentée. Ce diagramme montre le lien entre l'analyse dynamique d'un programme (sémantique instrumentée) et la notion d'injection (sémantique opérationnelle avec injection). On peut ainsi visualiser l’enchaînement des preuves de correction des 3 sémantiques présentées dans ce chapitre. Figure 3.2 – Enchaînement des preuves des sémantiques intermédiaires pour l’analyse dynamique 623.2. SUR-INSTRUMENTATION DES VALEURS supprime toutes les annotations de dépendance, on obtient exactement la même valeur qu’après l’évaluation du programme par la sémantique opérationnelle. Les annotations ajoutées par l’analyse dynamique correspondent aux dépendances du programme (c’est-à-dire l’ensemble des labels ayant un impact sur l’évaluation de ce programme, comme défini plus haut (cf. section 2.7)). Nous prouvons formellement cette af- firmation par le théorème de correction de l’analyse dynamique (cf. section 3.6.4). Pour arriver à cette preuve, nous prouvons successivement la correction de la sémantique avec injection dans un t-environnement sur-instrumenté (cf. section 3.3.2), puis la correction de la sémantique sur-instrumentée (cf. section 3.4.2) et enfin la correction de la sémantique instrumentée (cf. section 3.5.3). Les propriétés de correction de ces trois sémantiques s’enchaînent pour obtenir le théorème de correction de l’analyse dynamique. La figure 3.2 illustre l’enchaînement de ces propriétés de correction. Dans ce chapitre, nous présenterons tout d’abord la sur-instrumentation des valeurs (cf. section 3.2) qui nous permettra d’introduire la première sémantique intermédiaire pour l’analyse dynamique : la sémantique opérationnelle avec injection dans un t-environnement sur-instrumenté (cf. section 3.3). Nous présenterons ensuite la seconde sémantique intermédiaire : la sémantique sur-instrumentée (cf. section 3.4). Enfin nous pourrons présenter l’analyse dynamique elle-même : la sémantique instrumentée (cf. section 3.5). La présentation de chaque sémantique sera accompagnée de l’énoncé de son théorème de correction par rapport à la sémantique précédente ainsi que d’une explication sur sa preuve. Nous terminerons ce chapitre avec l’énoncé du théorème global de correction de l’analyse dynamique et une explication sur sa preuve utilisant la propriété de correction de chaque sémantique par rapport à la sémantique précédente. 3.2 Sur-instrumentation des valeurs Jusqu’à maintenant, nous avons vu comment évaluer un programme à l’aide de la sémantique opérationnelle (cf. section 2.3) pour obtenir sa valeur opérationnelle (également appelée valeur de référence du programme). Nous avons également vu comment évaluer un programme à l’aide de la sémantique avec injection (cf. section 2.5) pour obtenir sa valeur 633.2. SUR-INSTRUMENTATION DES VALEURS après injection, pour n’importe quelle injection possible. Un même programme possède donc plusieurs valeurs : sa valeur de référence (obtenue par la sémantique opérationnelle) et une valeur après injection (ou une absence de valeur après injection) pour chaque injection possible. Nous souhaitons maintenant intégrer toutes ces informations sur un programme en un seul et unique terme appelé « valeur sur-instrumentée ». La valeur sur-instrumentée d’un programme permettra alors de retrouver, à l’aide d’un mécanisme d’instanciation, la valeur de référence de ce programme ainsi que la valeur (ou l’absence de valeur) de ce programme après n’importe quelle injection. Pour cela, nous allons annoter la valeur de référence du programme avec des informations de dépendance sur chaque sous-terme de celle-ci. 3.2.1 Valeurs Comme nous l’avons vu plus haut (cf. section 2.7), un programme possède des tdépendances (dépendances de terminaison) ainsi que des v-dépendances (dépendances de valeur). Lors de la sur-instrumentation des valeurs, nous associons à toute valeur (résultat de l’évaluation d’un programme) l’ensemble des t-dépendances du programme évalué. Ensuite, nous associons à chaque sous-terme de la valeur un ensemble de v-dépendances correspondant aux points d’injection ayant un impact sur ce sous-terme. Une t-valeur sur-instrumentée (notée tuoi) est composée d’un ensemble de t-dépendances tdoi et d’une v-valeur sur-instrumentée u oi . tuoi := [ tdoi | u oi ] Valeur avec annotation de t-dépendances Une v-valeur sur-instrumentée (notée u oi) est composée d’un v-ensemble de dépendances d oi et d’une valeur simple sur-instrumentée v oi . u oi := [ d oi | v oi ] Valeur avec annotation de v-dépendances Enfin, une valeur simple sur-instrumentée (notée v oi) est une valeur simple dont les 643.2. SUR-INSTRUMENTATION DES VALEURS sous-termes sont des v-valeurs sur-instrumentées u oi . v oi := n | b | C | D(u oi) | (u oi 1 , uoi 2 ) Constructeurs de données < λx.e, Γ oi > Fermeture < recf.x.e, Γ oi > Fermeture récursive 3.2.2 Ensembles de dépendances On distingue 2 types de dépendances : – les t-dépendances, concernant la terminaison de l’évaluation – les v-dépendances, concernant le résultat de l’évaluation Un ensemble de t-dépendances tdoi est un ensemble de labels dans lequel on associe à chaque label une t-fonction d’impact. Cette t-fonction d’impact est une fonction booléenne sur les valeurs nous indiquant pour chaque injection possible, si l’évaluation terminerait ou non (ce qui permet de modéliser un impact aboutissant soit à une boucle infinie, soit à une erreur d’exécution). Si une t-fonction d’impact retourne true, cela signifie qu’il y a non-terminaison, sinon, cela signifie que l’évaluation correspondante termine. tdoi := (l1, tf1); . . .(ln, tfn) t-dépendances tf : v → bool t-fonction d’impact Un ensemble de v-dépendances d oi est un ensemble de labels dans lequel on associe à chaque label une v-fonction d’impact. Cette v-fonction d’impact est une fonction des valeurs vers les valeurs nous indiquant pour chaque injection possible, quelle serait la valeur de l’évaluation avec injection. d oi := (l1, f1); . . .(ln, fn) v-dépendances f : v → v v-fonction d’impact 3.2.3 Environnements On distingue 2 types d’environnements sur-instrumentés : – les environnements dans lesquels on évalue les expressions – les environnements qui se trouvent encapsulés dans les valeurs (fermetures et les fermetures récursives). 653.2. SUR-INSTRUMENTATION DES VALEURS Dans le cas de l’évaluation d’une expression, on a besoin de connaître les t-dépendances de chaque identificateur. On utilisera donc la notion de t-environnement sur-instrumenté. En revanche, pour les environnements encapsulés dans une valeur (via une fermeture), il suffit de connaître les t-dépendances globales de cette valeur et il n’est pas nécessaire d’avoir les t-dépendances de chaque identificateur lié. Dans ce cas, on utilisera un v-environnement sur-instrumenté sans t-dépendances. En effet, pour qu’un tel environnement ait pu être créé et emprisonné dans une fermeture, il faut nécessairement que tout ce qui a précédé la création de cette fermeture ait terminé. Les valeurs présentes dans l’environnement proviennent de l’évaluation d’une expression de liaison (liaison let in, filtrage par motif ou application de fonction). Dans tous les cas possibles, lorsqu’on effectue la liaison d’une valeur dans l’environnement, les t-dépendances de cette valeur sont toujours ajoutés à la valeur de l’expression évaluée (cf. figure 3.5, règles oi-letin, oi-match, oi-match-var, oi-apply et oi-rec-apply). Un t-environnement sur-instrumenté permet de lier chaque identificateur à une t-valeur sur-instrumentée. tΓ oi := (x1, tuoi 1 ); . . . ; (xn, tuoi n ) t-environnement sur-instrumenté Un v-environnement sur-instrumenté permet de lier chaque identificateur à une v-valeur sur-instrumentée. Γ oi := (x1, uoi 1 ); . . . ; (xn, uoi n ) v-environnement sur-instrumenté 3.2.4 Valeur de référence d’une valeur sur-instrumentée Pour obtenir la valeur de référence d’une valeur sur-instrumentée, il suffit de retirer toutes les annotations de dépendance. La valeur de référence d’une valeur sur-instrumentée est notée ↑toi(tuoi). Formellement, l’extraction de la valeur de référence d’une t-valeur sur-instrumentée se définit comme suit : 663.2. SUR-INSTRUMENTATION DES VALEURS Valeur de référence d’une t-valeur sur-instrumentée : ↑toi( [ tdoi | u oi ]) := ↑oi(u oi) Valeur de référence d’une v-valeur sur-instrumentée : ↑oi( [ d oi | v oi ]) := ↑oi(v oi) Valeur de référence d’une valeur simple sur-instrumentée : ↑oi(n) := n ↑oi(b) := b ↑oi(C) := C ↑oi(D(u oi)) := D(↑oi(u oi)) ↑oi((u oi 1 , uoi 2 )) := (↑oi(u oi 1 ), ↑oi(u oi 2 )) ↑oi(< λx.e, Γ oi >) := < λx.e, ↑oi(Γoi) > ↑oi(< recf.x.e, Γ oi >) := < recf.x.e, ↑oi(Γoi) > Environnement de référence d’un t-environnement sur-instrumenté : ↑toi(∅) := ∅ ↑toi((x, tuoi) ⊕ tΓ oi) := (x, ↑toi(tuoi))⊕ ↑toi(tΓ oi) Environnement de référence d’un v-environnement sur-instrumenté : ↑oi(∅) := ∅ ↑oi((x, uoi) ⊕ Γ oi) := (x, ↑oi(u oi))⊕ ↑oi(Γoi) 3.2.5 Instanciation d’une valeur sur-instrumentée La valeur sur-instrumentée d’un programme contient toute l’information nécessaire pour savoir quelle serait le comportement du programme lors de son évaluation par la sémantique avec injection et ce pour n’importe quelle injection. Pour extraire la valeur après une injection (l, vl) depuis une valeur sur-instrumentée tuoi, on utilise une fonction d’instanciation notée ↓ l:vl(tuoi). Tout d’abord, il faut regarder si le label l appartient à l’ensemble des t-dépendances. Si c’est le cas, la t-fonction d’impact associée au label nous indique si le programme aurait ou non terminé sur une valeur lors de son évaluation par la sémantique avec injection. Si le label l n’appartient pas aux t-dépendances, alors le programme a forcément une valeur si on l’évalue à l’aide de la sémantique avec injection. 673.2. SUR-INSTRUMENTATION DES VALEURS Ensuite, pour chaque sous-terme de la valeur, on regarde si le label l appartient aux v-dépendances correspondant au sous-terme considéré. Si c’est le cas, alors la v-fonction d’impact nous indique la valeur du sous-terme pour l’injection considérée. Si le label l n’appartient pas aux v-dépendances du sous-terme, alors la valeur du sous-terme après injection correspond à sa valeur de référence dans laquelle on a instancié chaque sousterme. On remarquera que puisque les valeurs simples sur-instrumentées (v oi) ne contiennent que des valeurs sur-instrumentées (u oi), il n’est pas question de terminaison lors du parcours de ces sous-termes. Ceci est parfaitement justifié puisque la terminaison est une propriété globale pour une t-valeur sur-instrumentée. La fonction d’instanciation d’une t-valeur sur-instrumentée se définit formellement comme suit : Instanciation des t-valeurs sur-instrumentées : ↓ l:vl( [ tdoi | u oi ]) := ↓ l:vl(u oi) si atifl:vl (tdoi) = f alse La fonction d’instanciation des t-valeurs sur-instrumentées est une fonction partielle. Elle n’est définie que lorsque atifl:vl (tdoi) = f alse. Dans le cas où atifl:vl (tdoi) = true, on dit que la t-valeur sur-instrumentée n’est pas instanciable et on écrit ̸ ∃v. ↓ l:vl( [ tdoi | u oi ]) = v. Instanciation des valeurs sur-instrumentées : ↓ l:vl( [ d oi | v oi ]) := aifl:vl (d oi) si l ∈ d oi ↓ l:vl( [ d oi | v oi ]) := ↓ l:vl(v oi) si l ̸∈ d oi Instanciation des valeurs simples sur-instrumentées : ↓ l:vl(n) := n ↓ l:vl(b) := b ↓ l:vl(C) := C ↓ l:vl(D(u oi)) := D(↓ l:vl(u oi)) ↓ l:vl((u oi 1 , uoi 2 )) := (↓ l:vl(u oi 1 ), ↓ l:vl(u oi 2 )) ↓ l:vl(< λx.e, Γ oi >) := < λx.e, ↓ l:vl(Γoi) > ↓ l:vl(< recf.x.e, Γ oi >) := < recf.x.e, ↓ l:vl(Γoi) > 683.2. SUR-INSTRUMENTATION DES VALEURS Instanciation des environnements sur-instrumentés : ↓ l:vl({}) := {} ↓ l:vl((x, uoi) ⊕ Γ oi) := (x, ↓ l:vl(u oi))⊕ ↓l:vl(Γoi) Application des t-fonctions d’impact : atifl:vl ((l, tf oi);tdoi) := tf oi(vl) ∨ atifl:vl (tdoi) atifl:vl ((l ′ , tf oi);tdoi) := atifl:vl (tdoi) si l ′ ̸= l atifl:vl (∅) := f alse Application des fonctions d’impact : aifl:vl ((l, f oi); d oi) := f oi(vl) aifl:vl ((l ′ , f oi); d oi) := aifl:vl (d oi) si l ′ ̸= l 3.2.6 Conversion Compte tenu du nombre de notions similaires à propos des environnements et des valeurs, et pour éviter toute confusion, les conversions seront toujours explicites. Par exemple, la notation Γ oi désigne un environnement sur-instrumenté qui n’est pas forcément en relation avec le t-environnement sur-instrumenté tΓ oi. Lorsqu’il y a une relation entre deux environnements, celle-ci est exprimée explicitement à l’aide d’une fonction de conversion. Par exemple Γ oi =↑ oi toi(tΓ oi) exprime que l’environnement Γ oi est le résultat de l’application de la fonction de conversion ↑ oi toi(•) à l’environnement tΓ oi. Cette fonction convertit un t-environnement sur-instrumenté (resp. une t-valeur sur-instrumentée) en un v-environnement sur-instrumenté (resp. une v-valeur sur-instrumentée). 693.3. SÉMANTIQUE AVEC INJECTION DANS UN T-ENVIRONNEMENT SUR-INSTRUMENTÉ 3.3 Sémantique avec injection dans un t-environnement surinstrumenté La sémantique avec injection que nous avons présentée plus haut (cf. section 2.5) nous a permis de définir formellement la notion de dépendance vis-à-vis de laquelle nous pourrons prouver la correction de notre analyse. Nous avons également défini (cf. section 3.2) une manière d’annoter la valeur d’un programme avec des informations de dépendance de façon à intégrer en un seul et même terme le comportement du programme pour toute injection. Plus loin, nous définirons (cf. section 3.4) une sémantique permettant d’inférer une valeur sur-instrumentée pour tout programme dont l’évaluation de référence termine. Cette sémantique sur-instrumentée devra manipuler au sein de l’environnement d’évaluation des valeurs elles-mêmes sur-instrumentées (obtenues par l’évaluation d’un programme précédent ou spécifiées par l’utilisateur) et non des valeurs simples comme dans la sémantique opérationnelle. Afin de faciliter la preuve de correction de la sémantique sur-instrumentée, nous introduisons maintenant une extension de la sémantique avec injection. Cette extension donnera un sens à l’évaluation avec injection d’un programme dans un environnement sur-instrumenté. L’expression est évaluée dans un t-environnement sur-instrumenté, ce qui permet de spécifier pour chaque identificateur présent dans l’environnement, quelle aurait été sa valeur si on l’avait obtenue après telle ou telle injection. Le résultat de l’évaluation d’une expression par la sémantique avec injection dans un t-environnement sur-instrumenté est une valeur sans annotation, tout comme pour la sémantique opérationnelle avec injection ou pour la sémantique opérationnelle usuelle. Lorsque les annotations du t-environnement sur-instrumenté sont vides, alors la sémantique avec injection dans le t-environnement sur-instrumenté coïncide avec la sémantique avec injection dans son environnement de référence. 703.3. SÉMANTIQUE AVEC INJECTION DANS UN T-ENVIRONNEMENT SUR-INSTRUMENTÉ 3.3.1 Règles d’inférence Formellement, la sémantique avec injection dans un t-environnement sur-instrumenté prend la forme d’un jugement d’évaluation similaire à celui de la sémantique opérationnelle avec injection. On note le jugement d’évaluation de la manière suivante : tΓ oi ⊢l:vl e →→ v La seule différence par rapport à la sémantique opérationnelle avec injection est l’environnement d’évaluation. Dans la sémantique que nous définissons ici, l’environnement d’évaluation est un t-environnement sur-instrumenté. Il contient plus d’information que l’environnement d’évaluation de la sémantique opérationnelle avec injection. En effet dans l’environnement opérationnel, chaque identificateur est lié à une unique valeur. Celle-ci représente la valeur de l’identificateur quelque soit l’injection considérée. Par contre, dans un t-environnement sur-instrumenté, la valeur d’un identificateur dans l’environnement peut changer en fonction de l’injection considérée. Cette nouvelle sémantique est plus générale que la sémantique opérationnelle avec injection que nous avions définie pour introduire notre notion de dépendance. En utilisant la fonction injective ↑ toi(•) qui décore tout environnement opérationnel avec des annotations de dépendance vides, on obtient un plongement de l’ensemble des jugements de la sémantique opérationnelle avec injection vers l’ensemble des jugements de la sémantique avec injection dans un t-environnement sur-instrumenté. Ainsi lorsque nous prouverons la correction de la sémantique avec injection dans un tenvironnement sur-instrumenté, nous en déduirons trivialement la correction de la sémantique opérationnelle avec injection par une simple spécialisation du théorème de correction. De même lorsque nous prouverons la correction de la sémantique sur-instrumentée par rapport à la sémantique avec injection dans un t-environnement sur-instrumenté, nous en déduirons trivialement la correction de la sémantique sur-instrumentée par rapport à la sémantique opérationnelle avec injection. Remarque : de la même manière que la sémantique opérationnelle avec injection, la sémantique avec injection dans un t-environnement sur-instrumenté est paramétrée par le 713.3. SÉMANTIQUE AVEC INJECTION DANS UN T-ENVIRONNEMENT SUR-INSTRUMENTÉ label l sur lequel on effectue l’injection et par la valeur injectée vl . Ces paramètres sont notés en indice du jugement d’évaluation (⊢l:vl ). Bien que l’environnement d’évaluation contienne des annotations de dépendance, la sémantique avec injection ne fait qu’utiliser ces annotations. Cette sémantique n’a pas pour but de calculer des dépendances. Lors de l’évaluation d’un programme, elle ne produit aucune annotation. En particulier, lorsqu’une valeur est ajoutée à l’environnement, elle contient toujours des annotations vides, la valeur ajoutée n’étant utilisée que pour une injection particulière : l’injection se trouvant en paramètre du jugement d’évaluation. Les règles identiques à la sémantique opérationnelle usuelle sont réunies sur la figure 3.3. Les deux règles spécifiques à la sémantique opérationnelle avec injection se trouvent sur la figure 3.4. La majorité des règles sont identiques à la sémantique opérationnelle (modulo l’ajout d’annotations vides via la fonction ↑ toi(•) lors de la construction d’un environnement). En plus des deux règles d’évaluation d’une expression annotée, trois autres règles sont spéci- fiques à la sémantique avec injection dans un t-environnement sur-instrumenté. Lorsqu’on va chercher la valeur d’un identificateur dans l’environnement, on instancie la t-valeur surinstrumentée trouvée pour l’injection considérée. Lorsqu’on construit une fermeture (ou une fermeture récursive), on instancie le t-environnement sur-instrumenté pour l’injection considérée avant de l’encapsuler dans la fermeture. 3.3.2 Correction 3.3.2.1 Énoncé informel du théorème La sémantique avec injection dans un t-environnement sur-instrumenté permet de calculer la valeur d’un programme dans un t-environnement sur-instrumenté. Pour chaque identificateur, cet environnement contient une t-valeur sur-instrumentée. Cette valeur nous permet de connaître la valeur opérationnelle de l’identificateur pour n’importe quelle injection. En particulier, lorsque l’on évalue un programme pour une injection particulière (l, vl), sa valeur opérationnelle est l’instanciation de sa t-valeur sur-instrumentée pour l’in- 723.3. SÉMANTIQUE AVEC INJECTION DANS UN T-ENVIRONNEMENT SUR-INSTRUMENTÉ inj-num tΓ oi ⊢l:vl n →→ n inj-letin tΓ oi ⊢l:vl e1 →→ v1 (x, ↑ toi(v1)) ⊕ tΓ oi ⊢l:vl e2 →→ v2 tΓ oi ⊢l:vl let x = e1 in e2 →→ v2 inj-apply tΓ oi ⊢l:vl e1 →→< λx.e, Γ1 > tΓ oi ⊢l:vl e2 →→ v2 (x, ↑ toi(v2))⊕ ↑toi(Γ1) ⊢l:vl e →→ v tΓ oi ⊢l:vl e1 e2 →→ v inj-apply-rec tΓ oi ⊢l:vl e1 →→ v1 v1 =< recf.x.e, Γ1 > tΓ oi ⊢l:vl e2 →→ v2 (f, ↑ toi(v1)) ⊕ (x, ↑ toi(v2))⊕ ↑toi(Γ1) ⊢l:vl e →→ v tΓ oi ⊢l:vl e1 e2 →→ v inj-if-true tΓ oi ⊢l:vl e →→ true tΓ oi ⊢l:vl e1 →→ v1 tΓ oi ⊢l:vl if e then e1 else e2 →→ v1 inj-if-false tΓ oi ⊢l:vl e →→ f alse tΓ oi ⊢l:vl e2 →→ v2 tΓ oi ⊢l:vl if e then e1 else e2 →→ v2 inj-match tΓ oi ⊢l:vl e →→ v v, p ⊢p Γp ↑ toi(Γp) ⊕ tΓ oi ⊢l:vl e1 →→ v1 tΓ oi ⊢l:vl match e with p → e1 | x → e2 →→ v1 inj-match-var tΓ oi ⊢l:vl e →→ v v, p ⊢p ⊥ (x, ↑ toi(v)) ⊕ tΓ oi ⊢l:vl e2 →→ v2 tΓ oi ⊢l:vl match e with p → e1 | x → e2 →→ v2 inj-constr-0 tΓ oi ⊢l:vl C →→ C inj-constr-1 tΓ oi ⊢l:vl e →→ v tΓ oi ⊢l:vl D(e) →→ D(v) inj-couple tΓ oi ⊢l:vl e1 →→ v1 tΓ oi ⊢l:vl e2 →→ v2 tΓ oi ⊢l:vl (e1, e2) →→ (v1, v2) Figure 3.3 – Sémantique avec injection dans un t-environnement sur-instrumenté : règles d’inférence identiques à la sémantique usuelle inj-ident v =↓ l:vl (tΓ oi[x]) tΓ oi ⊢l:vl x →→ v inj-annot-same tΓ oi ⊢l:vl l : e →→ vl inj-annot-other tΓ oi ⊢l:vl e →→ v l ̸= l ′ tΓ oi ⊢l:vl l ′ : e →→ v inj-abstr tΓ oi ⊢l:vl λx.e →→< λx.e, ↓ l:vl (tΓ oi) > inj-abstr-rec tΓ oi ⊢l:vl recf.x.e →→< recf.x.e, ↓ l:vl (tΓ oi) > Figure 3.4 – Sémantique avec injection dans un t-environnement sur-instrumenté : règles d’inférence spécifiques 733.3. SÉMANTIQUE AVEC INJECTION DANS UN T-ENVIRONNEMENT SUR-INSTRUMENTÉ jection (l, vl). L’évaluation d’un programme dans un t-environnement sur-instrumenté pour une injection (l, vl) doit donc retourner la même valeur que son évaluation opérationnelle pour l’injection (l, vl) dans l’environnement opérationnel obtenu par instanciation du tenvironnement sur-instrumenté pour l’injection (l, vl). Dit d’une manière plus concise, on peut exprimer informellement le théorème de correction de notre sémantique avec injection dans un t-environnement sur-instrumenté ainsi : la sémantique avec injection doit être la même si on instancie ou non l’environnement avant l’évaluation. 3.3.2.2 Illustration par l’exemple Pour mieux appréhender la signification de ce théorème de correction, voici un exemple très simple d’évaluation de programme par la sémantique avec injection dans un t-environnement sur-instrumenté et dans son instanciation. Notons tΓ oi l’environnement suivant : tΓ oi ≡ (y, [ tdoi y | [ d oi y | 7 ] ]) ⊕ (z, [ tdoi z | [ d oi z | 4 ] ]) avec : tdoi y ≡ (l, tfl y ) où tfl y (v) vaut f alse si v est un entier positif, true sinon d oi y ≡ (l, fl y ) où f l y (v) vaut le double de v si v est un entier positif, 0 sinon tdoi z ≡ ∅ d oi z ≡ (l ′ , fl ′ z ) où f l ′ z (v) vaut 3 si v est le constructeur de donnée C, 5 sinon l ̸= l ′ Notons e le programme suivant : l e t f x = ( x , x+z ) i n f ( y + l ’ ’ : 2 ) avec l ̸= l ′′ et l ′ ̸= l ′′ Exemple 1 : impact sur la valeur d’un identificateur Considérons l’injection de la valeur 8 sur le label l. La sémantique avec injection dans le t-environnement sur-instrumenté nous donne le jugement suivant : 743.3. SÉMANTIQUE AVEC INJECTION DANS UN T-ENVIRONNEMENT SUR-INSTRUMENTÉ tΓ oi ⊢l:8 e →→ (18, 22) En instanciant le t-environnement sur-instrumenté, nous obtenons : ↓ l:8(tΓ oi) = (y, 16) ⊕ (z, 4) La sémantique opérationnelle avec injection dans cet environnement nous donne alors le même résultat que la sémantique avec injection dans le t-environnement sur-instrumenté : (y, 16) ⊕ (z, 4) ⊢l:8 e →→ (18, 22) Exemple 2 : impact sur la valeur d’un identificateur Considérons l’injection de la valeur C sur le label l ′ . La sémantique avec injection dans le t-environnement sur-instrumenté nous donne le jugement suivant : tΓ oi ⊢l ′ :C e →→ (9, 12) En instanciant le t-environnement sur-instrumenté, nous obtenons : ↓ l ′ :C(tΓ oi) = (y, 7) ⊕ (z, 3) La sémantique opérationnelle avec injection dans cet environnement nous donne alors le même résultat que la sémantique avec injection dans le t-environnement sur-instrumenté : (y, 7) ⊕ (z, 3) ⊢l ′ :C e →→ (9, 12) Exemple 3 : impact sur la terminaison d’un identificateur Considérons l’injection de la valeur −4 sur le label l. La t-valeur sur-instrumentée de l’identificateur y n’est pas instanciable. La sémantique avec injection dans le t-environnement sur-instrumenté ne fournit donc aucun jugement, puisque la sous-expression y ne trouve aucune règle d’inférence permettant de déduire un jugement d’évaluation. Le t-environnement sur-instrumenté n’est donc pas instanciable lui non plus. Nous sommes dans une situation où l’évaluation de la partie précédente du programme (celle qui a permi de construire l’environnement) ne termine pas pour l’injection considérée (l, −4). Il n’est alors pas possible de donner une valeur au programme par la sémantique opérationnelle avec l’injection (l, −4) puisque l’environnement d’évaluation correspondant 753.3. SÉMANTIQUE AVEC INJECTION DANS UN T-ENVIRONNEMENT SUR-INSTRUMENTÉ n’existe pas. Exemple 4 : impact sur un point d’injection sur programme Considérons l’injection de la valeur 17 sur le label l ′′. La sémantique avec injection dans le t-environnement sur-instrumenté nous donne le jugement suivant : tΓ oi ⊢l ′′:17 e →→ (24, 28) En instanciant le t-environnement sur-instrumenté, nous obtenons : ↓ l ′′:17(tΓ oi) = (y, 7) ⊕ (z, 4) La sémantique opérationnelle avec injection dans cet environnement nous donne alors le même résultat que la sémantique avec injection dans le t-environnement sur-instrumenté : (y, 7) ⊕ (z, 4) ⊢l ′′:17 e →→ (24, 28) 3.3.2.3 Énoncé formel du théorème Théorème 3.3.1 (Correction de la sémantique avec injection dans un t-environnement sur-instrumenté). ∀(tΓ oi , Γ, e, v, l, vl), tΓ oi ⊢l:vl e →→ v ⇒ Γ = ↓ l:vl(tΓ oi) ⇒ Γ ⊢l:vl e →→ v 3.3.2.4 Preuve de correction La preuve se fait trivialement par induction sur le jugement de la sémantique avec injection dans le t-environnement sur-instrumenté. Voici quelques explications sommaires sur quelques cas de la preuve : inj-abstr Dans le cas de l’évaluation d’une abstraction (récursive ou non), l’environnement encapsulé dans la fermeture est l’instanciation du t-environnement sur-instrumenté. La sémantique opérationnelle avec injection coïncide donc avec notre nouvelle sémantique. inj-ident Dans le cas de l’évaluation d’un identificateur, il suffit de remarquer que l’instanciation de la t-valeur sur-instrumentée d’un identificateur est la même que la valeur opé- rationnelle de cet identificateur dans l’instanciation du t-environnement sur-instrumenté. 763.3. SÉMANTIQUE AVEC INJECTION DANS UN T-ENVIRONNEMENT SUR-INSTRUMENTÉ inj-match Le cas du filtrage par motif est lui-aussi très simple. Supposons que nous avons un jugement de la forme suivante : inj-match tΓ oi ⊢l:vl e →→ v v, p ⊢p Γp ↑ toi(Γp) ⊕ tΓ oi ⊢l:vl e1 →→ v1 tΓ oi ⊢l:vl match e with p → e1 | x → e2 →→ v1 Les hypothèses d’induction nous permettent de déduire ces jugements : ↓ l:vl(tΓ oi) ⊢l:vl e →→ v et ↓ l:vl(↑ toi(Γp) ⊕ tΓ oi) ⊢l:vl e1 →→ v1 Enfin, puisque ↑ toi(•) n’ajoute que des dépendances vides, nous avons : ↓ l:vl(↑ toi(Γp) ⊕ tΓ oi) = Γp⊕ ↓l:vl(tΓ oi) Nous pouvons alors appliquer la règle de la sémantique opérationnelle avec injection permettant de conclure : opinj-match ↓ l:vl(tΓ oi) ⊢l:vl e →→ v v, p ⊢p Γp Γp⊕ ↓l:vl(tΓ oi) ⊢l:vl e1 →→ v1 ↓ l:vl(tΓ oi) ⊢l:vl match e with p → e1 | x → e2 →→ v1 773.4. SÉMANTIQUE SUR-INSTRUMENTÉE 3.4 Sémantique sur-instrumentée Ce chapitre a pour but de présenter une seconde sémantique intermédiaire utilisée pour la preuve de notre analyse dynamique : la sémantique sur-instrumentée. Cette sémantique n’est pas nécessaire pour définir l’analyse dynamique mais a pour but de simplifier et de faciliter la preuve de correction de cette dernière. Nous avons commencé par définir la sémantique opérationnelle avec injection qui donne un sens à la notion d’injection lors de l’évaluation d’un programme. Cette sémantique évalue un programme dans un environnement opérationnel pour une injection donnée. L’environnement d’évaluation doit alors contenir la valeur opérationnelle de chaque identificateur pour l’injection considérée. Si nous souhaitons considérer plusieurs injections, il nous faut évaluer le programme dans autant d’environnements, puisqu’à chaque injection correspond un certain environnement. Nous avons ensuite présenté la définition de la sémantique avec injection dans un tenvironnement sur-instrumenté. Cette sémantique évalue un programme dans un t-environnement sur-instrumenté pour une injection donnée. Ce t-environnement sur-instrumenté regroupe tous les environnements correspondant aux différentes injections. Si on souhaite considérer plusieurs injections, il faut toujours effectuer plusieurs évaluations du programme, mais toutes ces évaluations se font alors dans le même environnement. En effet, cette sémantique, bien qu’elle manipule des t-valeurs sur-instrumentées dans l’environnement d’évaluation, produit uniquement des valeurs simples au sens de la sémantique opérationnelle, tout comme la sémantique opérationnelle avec injection. La définition de cette sémantique est un premier pas permettant de faire le lien entre la notion d’injection et l’analyse dynamique. Dans cette section, nous allons définir la sémantique sur-instrumentée qui constitue un pas supplémentaire entre la notion d’injection et l’analyse dynamique. La sémantique surinstrumentée évalue un programme dans un t-environnement sur-instrumenté pour fournir une t-valeur sur-instrumentée. Cette fois-ci, nous avons la possibilité d’analyser un programme pour toutes les injections simultanément. En une seule évaluation, nous obtenons une t-valeur sur-instrumentée contenant toutes les informations nécessaires pour déduire 783.4. SÉMANTIQUE SUR-INSTRUMENTÉE le comportement du programme pour toute injection. On se rapproche ainsi de notre analyse dynamique. Cependant, la sémantique sur-instrumentée n’est pas calculable. C’est la contrepartie nécessaire pour avoir une sémantique donnant le comportement exact du programme pour toute injection. Lorsque nous définirons l’analyse dynamique, nous obtiendrons une sémantique calculable fournissant une approximation du comportement du programme pour toute injection. 3.4.1 Règles d’inférence La sémantique sur-instrumentée est représentée formellement par un jugement d’évaluation de la forme suivante : tΓ oi ⊢ oi e →→ tuoi où e est l’expression évaluée, tΓ oi le t-environnement sur-instrumenté dans lequel on effectue l’évaluation et tuoi la t-valeur sur-instrumentée résultat de l’évaluation. Les règles d’inférence (figure 3.5) sont en grande partie similaires aux règles habituelles de la sémantique opérationnelle. Cependant, trois d’entre elles sont notablement différentes : l’application de fonction (récursive ou non), la structure conditionnelle et le filtrage par motif. Nous allons détailler ci-dessous chacune des règles pour en donner les explications indispensables à leur compréhension. oi-num Le résultat de l’évaluation d’une constante entière est une t-valeur sur-instrumentée comprenant un ensemble de t-dépendances vide, un ensemble de v-dépendances vide et une valeur simple sur-instrumentée étant la constante elle-même. L’ensemble des t-dépendances est vide car aucune injection ne peut avoir d’impact sur la terminaison de l’évaluation de cette expression. L’ensemble des v-dépendances est vide car aucune injection ne peut avoir d’impact sur la valeur de cette expression. oi-ident L’évaluation d’un identificateur se fait de manière habituelle, en allant chercher la valeur correspondante dans l’environnement. Les dépendances de la t-valeur surinstrumentée retournée sont celles qui ont été enregistrées dans l’environnement pour cet 793.4. SÉMANTIQUE SUR-INSTRUMENTÉE oi-num tΓ oi ⊢ oi n →→ [ ∅ | [ ∅ | n ] ] oi-abstr tΓ oi ⊢ oi λx.e →→ [ ∅ | [ ∅ | < λx.e, ↑ oi toi(tΓ oi) > ] ] oi-ident tuoi = tΓ oi[x] tΓ oi ⊢ oi x →→ tuoi oi-abstr-rec tΓ oi ⊢ oi recf.x.e →→ [ ∅ | [ ∅ | < recf.x.e, ↑ oi toi(tΓ oi) > ] ] oi-apply tΓ oi ⊢ oi e1 →→ [ tdoi 1 | [ d oi 1 | < λx.e, Γ oi 1 > ] ] tΓ oi ⊢ oi e2 →→ tuoi 2 tuoi 2 = [ tdoi 2 | u oi 2 ] (x, tuoi 2 )⊕ ↑toi oi (Γoi 1 ) ⊢ oi e →→ [ tdoi | [ d oi | v oi ] ] deps_spec_apply(tuoi 2 , doi 1 ) = (td′oi, d′oi) tΓ oi ⊢ oi e1 e2 →→ [ tdoi 1 ∪ tdoi 2 ∪ tdoi ∪ td′oi | [ d ′oi ∪ d oi | v oi ] ] oi-rec-apply tΓ oi ⊢ oi e1 →→ tuoi 1 tuoi 1 = [ tdoi 1 | [ d oi 1 | < recf.x.e, Γ oi 1 > ] ] tΓ oi ⊢ oi e2 →→ tuoi 2 tuoi 2 = [ tdoi 2 | u oi 2 ] (f, tuoi 1 ) ⊕ (x, tuoi 2 )⊕ ↑toi oi (Γoi 1 ) ⊢ oi e →→ [ tdoi | [ d oi | v oi ] ] deps_spec_apply(tuoi 2 , doi 1 ) = (td′oi, d′oi) tΓ oi ⊢ oi e1 e2 →→ [ tdoi 1 ∪ tdoi 2 ∪ tdoi ∪ td′oi | [ d ′oi ∪ d oi | v oi ] ] oi-letin tΓ oi ⊢ oi e1 →→ tuoi 1 tuoi 1 = [ tdoi 1 | u oi 1 ] (x, tuoi 1 ) ⊕ tΓ oi ⊢ oi e2 →→ [ tdoi 2 | u oi 2 ] tΓ oi ⊢ oi let x = e1 in e2 →→ [ tdoi 1 ∪ tdoi 2 | u oi 2 ] oi-if-true tΓ oi ⊢ oi e →→ [ tdoi | [ d oi | true ] ] tΓ oi ⊢ oi e1 →→ [ tdoi 1 | [ d oi 1 | v oi 1 ] ] deps_spec_if(tΓ oi, e1, e2, doi) = (td′oi, d′oi) tΓ oi ⊢ oi if e then e1 else e2 →→ [ td′oi ∪ tdoi ∪ tdoi 1 | [ d ′oi ∪ d oi 1 | v oi 1 ] ] oi-if-false tΓ oi ⊢ oi e →→ [ tdoi | [ d oi | false ] ] tΓ oi ⊢ oi e2 →→ [ tdoi 2 | [ d oi 2 | v oi 2 ] ] deps_spec_if(tΓ oi, e1, e2, doi) = (td′oi, d′oi) tΓ oi ⊢ oi if e then e1 else e2 →→ [ td′oi ∪ tdoi ∪ tdoi 2 | [ d ′oi ∪ d oi 2 | v oi 2 ] ] oi-match tΓ oi ⊢ oi e →→ tuoi tuoi = [ tdoi | [ d oi | v oi ] ] tuoi, p ⊢ oi p tΓ oi p tΓ oi p ⊕ tΓ oi ⊢ oi e1 →→ [ tdoi 1 | [ d oi 1 | v oi 1 ] ] deps_spec_match(tΓ oi, p, x, e1, e2, doi) = (td′oi, d′oi) tΓ oi ⊢ oi match e with p → e1 | x → e2 →→ [ td′oi ∪ tdoi ∪ tdoi 1 | [ d ′oi ∪ d oi 1 | v oi 1 ] ] oi-match-var tΓ oi ⊢ oi e →→ tuoi tuoi = [ tdoi | [ d oi | v oi ] ] tuoi, p ⊢ oi p ⊥ (x, tuoi) ⊕ tΓ oi ⊢ oi e2 →→ [ tdoi 2 | [ d oi 2 | v oi 2 ] ] deps_spec_match(tΓ oi, p, x, e1, e2, doi) = (td′oi, d′oi) tΓ oi ⊢ oi match e with p → e1 | x → e2 →→ [ td′oi ∪ tdoi ∪ tdoi 2 | [ d ′oi ∪ d oi 2 | v oi 2 ] ] oi-constr-0 tΓ oi ⊢ oi C →→ [ ∅ | [ ∅ | C ] ] oi-constr-1 tΓ oi ⊢ oi e →→ [ tdoi | u oi ] tΓ oi ⊢ oi D(e) →→ [ tdoi | [ ∅ | D(u oi) ] ] oi-couple tΓ oi ⊢ oi e1 →→ [ tdoi 1 | u oi 1 ] tΓ oi ⊢ oi e2 →→ [ tdoi 2 | u oi 2 ] tΓ oi ⊢ oi (e1, e2) →→ [ tdoi 1 ∪ tdoi 2 | [ ∅ | (u oi 1 , uoi 2 ) ] ] oi-annot tΓ oi ⊢ oi e →→ [ tdoi | [ d oi | v oi ] ] tΓ oi ⊢ oi l : e →→ [ tdoi | [ (l, fun x ⇒ x); d oi | v oi ] ] Figure 3.5 – Sémantique sur-instrumentée 803.4. SÉMANTIQUE SUR-INSTRUMENTÉE oim-constr-0 [ tdoi | [ d oi | C ] ], C ⊢ oi p {} oim-constr-1 [ tdoi | [ d oi | D(u oi) ] ], D(x) ⊢ oi p {(x, [ ∅ | u oi ])} oim-couple ( [ tdoi 1 | [ d oi 1 | u oi 1 ] ], [ tdoi 2 | [ d oi 2 | u oi 2 ] ]),(x1, x2) ⊢ oi p {(x1, [ ∅ | u oi 1 ]); (x2, [ ∅ | u oi 2 ])} oim-constr-0-not p ̸= C [ tdoi | [ d oi | C ] ], p ⊢ oi p ⊥ oim-constr-1-not p ̸= D′ (_) [ tdoi | [ d oi | D(u oi) ] ], p ⊢ oi p ⊥ oim-couple-not p ̸= (_, _) ( [ tdoi 1 | [ d oi 1 | u oi 1 ] ], [ tdoi 2 | [ d oi 2 | u oi 2 ] ]), p ⊢ oi p ⊥ Figure 3.6 – Sémantique sur-instrumentée : règles de filtrage ↑ oi toi( [ tdoi | u oi ]) = u oi ↑ oi toi({}) = {} ↑oi toi((x, tuoi) ⊕ tΓ oi) = (x, ↑ oi toi(tuoi)) ⊕ ↑oi toi(tΓ oi) Figure 3.7 – Valeurs sur-instrumentées : suppression des t-dépendances identificateur. oi-abstr Dans la t-valeur sur-instrumentée d’une abstraction, l’ensemble des t-dépendances est vide puisque l’évaluation d’une abstraction termine toujours (on ne considère que des injections pour lesquelles l’environnement est instanciable). Pour la même raison, les ensembles de t-dépendances présentes dans l’environnement sont ignorées. On les supprime à l’aide de la fonction ↑ oi toi(•) définie en figure 3.7. L’ensemble des v-dépendances est vide lui-aussi car l’évaluation d’une abstraction retourne toujours une fermeture contenant le même corps de fonction, seul l’environnement encapsulé peut différer d’une injection à l’autre. L’impact d’une injection sur l’environnement encapsulé dans la fermeture est déjà encodé à l’aide des v-dépendances des v-valeurs sur-instrumentées de l’environnement. Attention, le fait qu’aucune dépendance n’est introduite par la règle d’évaluation de l’abstraction ne signifie pas qu’une fermeture ne contient jamais de dépendances. D’une part, des dépendances peuvent être ajoutées à la fermeture lorsqu’elle est le résultat de l’évaluation d’une expression conditionnelle par exemple (cf. règle oi-if-true). D’autre 813.4. SÉMANTIQUE SUR-INSTRUMENTÉE ↑ toi oi (u oi) = [ ∅ | u oi ] ↑ toi oi ({}) = {} ↑toi oi ((x, uoi) ⊕ Γ oi) = (x, ↑ toi oi (u oi)) ⊕ ↑toi oi (Γoi) Figure 3.8 – Valeurs sur-instrumentées : ajout de t-dépendances part, il y a des v-dépendances présentes dans l’environnement encapsulé dans la fermeture. Celles-ci seront prises en compte lors de l’application de la fonction. Il est également intéressant de noter que le corps de la fonction peut contenir des points d’injection qui généreront probablement des dépendances lors de l’application de la fonction. oi-abstr-rec L’évaluation d’une abstraction récursive suit exactement le même modèle que l’évaluation d’une abstraction non-récursive. oi-apply La règle de l’application suit le schéma habituel de l’évaluation d’une application dans la sémantique opérationnelle. Elle évalue e1 et impose que sa valeur soit une fermeture, puis elle évalue e2 avant d’évaluer le corps de la fermeture dans son environnement en ajoutant à l’environnement une liaison pour la valeur de l’argument. Pour évaluer le corps de la fermeture, on doit transformer le v-environnement encapsulé en un t-environnement. On utilise alors la fonction ↑ toi oi (•) (définie en figure 3.8) qui ajoute des tdépendances vides. Cette approche est valide puisque les t-dépendances des identificateurs utilisés ont déjà été pris en compte. A ce schéma habituel vient s’ajouter le calcul des dépendances qui nécessite une spé- cification complexe. Compte tenu de la complexité de cette spécification, des explications détaillées sont données dans la section 3.4.1.1. oi-rec-apply La règle de l’application d’une fonction récursive est similaire à la règle de l’application d’une fonction non-récursive. Elle suit le schéma d’évaluation habituel en y greffant une spécification complexe des dépendances. Une explication détaillée de cette règle d’inférence est donnée en section 3.4.1.1. 823.4. SÉMANTIQUE SUR-INSTRUMENTÉE oi-letin L’évaluation d’une liaison (let in) se fait de la même manière que pour la sémantique opérationnelle. On commence par évaluer la sous-expression e1 pour obtenir sa valeur, puis on évalue la sous-expression e2 en ajoutant à l’environnement une liaison pour la valeur de e1. La t-valeur sur-instrumentée de l’expression évaluée est alors constituée d’un ensemble de t-dépendances et de la v-valeur sur-instrumentée de e2. L’ensemble des t-dépendances est la concaténation des t-dépendances des deux sous-expressions car si une des deux n’a pas de valeur, alors l’expression globale n’a pas de valeur non plus. oi-if-true et oi-if-false Pour l’évaluation d’une expression conditionnelle, on évalue tout d’abord la condition puis l’une des deux branches en fonction de la valeur (de référence) de la condition. On retrouve alors dans le résultat les t-dépendances de chacune des deux sous-expressions évaluées. On ajoute au résultat un ensemble de t-dépendance td′oi et un ensemble de v-dépendance d ′oi qui permettent de spécifier le comportement du programme pour les injections ayant un t-impact ou un v-impact sur l’évaluation de la condition. En effet, si un label a un impact sur l’évaluation de la condition, alors l’évaluation de l’expression conditionnelle ne passe pas forcément par la même branche. Pour de plus amples détails sur cette règle d’inférence, se référer à la section 3.4.1.1. oi-match et oi-match-var Dans la règle d’évaluation d’un filtrage par motif, on retrouve le même principe que dans la règle d’évaluation d’une expression conditionnelle. Une prémisse supplémentaire permet de déterminer la branche évaluée à l’aide d’un pré- dicat de filtrage prenant en paramètre la valeur (de référence) de l’expression filtrée et le motif de filtrage. On retrouve également les ensembles de dépendance td′oi et d ′oi permettant de spécifier le comportement du programme pour les injections ayant un impact sur l’évaluation de l’expression filtrée. De plus amples explications sur cette règle d’inférence sont données dans la section 3.4.1.1. oi-constr-0 L’évaluation d’un constructeur sans paramètre suit la même logique que l’évalution d’une constante numérique. Aucune t-dépendance, ni aucune v-dépendance n’est introduite. 833.4. SÉMANTIQUE SUR-INSTRUMENTÉE oi-constr-1 Pour l’évaluation d’un constructeur paramétré, on évalue la sous-expression en paramètre puis on applique le constructeur de donnée à sa v-valeur sur-instrumentée. L’ensemble des t-dépendances est exactement le même que pour la sous-expression, puisque l’évaluation d’une telle expression termine sur une valeur si et seulement si l’évaluation de la sous-expression termine sur une valeur. En ce qui concerne l’ensemble des v-dépendances, il est vide puisqu’aucune injection ne peut modifier le constructeur de tête de la valeur de l’expression. L’impact des injections sur les sous-termes de la valeur est déjà encodé dans la v-valeur sur-instrumentée de la sous-expression. oi-couple Pour l’évaluation d’un couple, on évalue les sous-expressions pour obtenir les deux sous-termes de la valeur sur-instrumentée finale que l’on réunit à l’aide du constructeur de couple. On concatène les t-dépendances des deux sous-expressions pour obtenir les t-dépendances de la t-valeur sur-instrumentée finale, puisque l’évaluation du couple termine sur une valeur si et seulement si l’évaluation des deux sous-expressions termine. L’ensemble des v-dépendances est vide pour la même raison que pour l’évaluation d’un constructeur paramétré : les v-dépendances correspondant à un impact sur un sous-terme de la valeur sont déjà présents dans les sous-termes de la valeur simple sur-instrumentée. oi-annot Une expression annotée a les mêmes dépendances que sa sous-expression auxquelles on ajoute le label de l’annotation que l’on associe à la fonction identité. Cette fonction indique que si on injecte une valeur sur un label lors de l’évaluation d’une expression annotée par ce même label, alors la valeur de l’expression annotée est directement la valeur injectée. C’est la seule règle qui permet d’introduire de nouvelles dépendances. Au moment de son introduction, une dépendance est toujours associée à la fonction identité. On peut remarquer également que l’on introduit uniquement des v-dépendances et qu’aucune règle ne permet d’introduire des t-dépendances sans que celles-ci ne soient déjà présentes dans les t-dépendances ou dans les v-dépendances d’une des prémisses. Ce sont les règles manipulant des dépendances indirectes (cf. section 3.4.1.1) qui permettent d’associer aux labels des fonctions autres que l’identité et ce sont elles également qui introduisent des t-dépendances 843.4. SÉMANTIQUE SUR-INSTRUMENTÉE à partir de v-dépendances des prémisses. Règles de filtrage Les règles de filtrage sont divisées en deux groupes de trois règles. Le premier regroupe les règles positives (une règle pour chaque forme de motif). Elles définissent un jugement de la forme tuoi, p ⊢ oi p Γ oi. Ce jugement indique que la t-valeur surinstrumentée tuoi correspond bien au motif de filtrage p et retourne un v-environnement sur-instrumentée Γ oi contenant les liaisons des identificateurs du motif avec les sous-termes de tuoi correspondants. Le second groupe réunit les règles négatives (une règle pour chaque forme de motif). Ces règles définissent un jugement de la forme tuoi, p ⊢ oi p ⊥. Ce jugement signifie que la t-valeur sur-instrumentée tuoi ne correspond pas au motif de filtrage p. 3.4.1.1 Explication des règles avec dépendances indirectes Dans la majorité des règles d’inférence, le calcul des t-dépendances (resp. des v-dépendances) se fait par simple concaténation des t-dépendances (resp. des v-dépendances) pré- sentes dans les prémisses. Les règles de l’évaluation de l’application, de l’expression conditionnelle et du filtrage par motif nécessitent, quant à elles, une spécification plus complexe des dépendances. Il n’est pas possible dans ces cas-là d’obtenir les dépendances du résultat par simple concaténation des dépendances des prémisses, ni par aucun autre procédé calculatoire. On utilise dans alors des fonctions de spécification des dépendances indirectes. Nous allons tout d’abord présenter en détail les règles d’inférence concernées, en expliquant de quelle manière les fonctions de spécification des dépendances indirectes sont utilisées. Ensuite nous reviendrons sur ces fonctions de spécification (cf. section 3.4.1.2) en leur donnant une définition formelle. oi-apply Rappellons tout d’abord la règle d’inférence que nous allons expliquer : 853.4. SÉMANTIQUE SUR-INSTRUMENTÉE oi-apply tΓ oi ⊢ oi e1 →→ [ tdoi 1 | [ d oi 1 | < λx.e, Γ oi 1 > ] ] tΓ oi ⊢ oi e2 →→ tuoi 2 tuoi 2 = [ tdoi 2 | u oi 2 ] (x, tuoi 2 )⊕ ↑toi oi (Γoi 1 ) ⊢ oi e →→ [ tdoi | [ d oi | v oi ] ] deps_spec_apply(tuoi 2 , doi 1 ) = (td′oi, d′oi) tΓ oi ⊢ oi e1 e2 →→ [ tdoi 1 ∪ tdoi 2 ∪ tdoi ∪ td′oi | [ d ′oi ∪ d oi | v oi ] ] La première prémisse correspond à l’évaluation de la sous-expression e1. Celle-ci doit obligatoirement avoir pour résultat une fermeture (notée < λx.e, Γ oi 1 >) pour que la règle de l’application non récursive s’applique. À cette fermeture sont associés un ensemble de t-dépendances (noté tdoi 1 ) et un ensemble de v-dépendances (noté d oi 1 ). La deuxième prémisse est l’évaluation de la sous-expression e2 qui retourne une t-valeur sur-instrumentée (notée tuoi 2 ) composée d’un ensemble de t-dépendances tdoi 2 et d’une vvaleur sur-instrumentée u oi 2 . La troisième prémisse évalue le corps de la fermeture dans l’environnement de la fermeture, en y ajoutant la liaison de la valeur du paramètre. Les composantes de la t-valeur sur-instrumentée résultant de cette évaluation sont notées tdoi , d oi et v oi. On notera que pour évaluer le corps de la fermeture, on ajoute des t-dépendances vides à l’environnement (fonction ↑ toi oi ()). Cette pratique est justifiée par le fait que les t-dépendances sont toujours regroupées en tête de la t-valeur sur-instrumentée. Les t-dépendances de l’évaluation de e1 sont donc toutes présentes dans l’ensemble tdoi 1 qui fait partie des t-dépendances du résultat final. Jusque là, nous avons suivi la manière habituelle d’évaluer une application de fonction dans un langage fonctionnel. En ce qui concerne la dernière prémisse, elle est propre à la sémantique sur-instrumentée car elle ne participe pas à l’élaboration de la valeur simple sur-instrumentée du résultat mais uniquement à ses dépendances. Plus précisément, elle spécifie les dépendances indirectes td′oi et d ′oi qui vont apparaître dans les dépendances du résultat final. Pour plus de détails concernant la spécification des dépendances indirectes, se reporter à la section 3.4.1.2. Intéressons-nous maintenant au résultat final : la t-valeur sur-instrumentée de l’appli- 863.4. SÉMANTIQUE SUR-INSTRUMENTÉE cation de e1 à e2. Celle-ci est composée d’un ensemble de t-dépendances, d’un ensemble de v-dépendances et d’une valeur simple sur-instrumentée. L’ensemble de ses t-dépendances est la concaténation des quatres ensembles de tdépendances suivants, obtenus dans les prémisses : – tdoi 1 et tdoi 2 car si l’évaluation de e1 ou celle de e2 ne termine pas, alors l’évaluation de l’application ne termine pas non plus, – tdoi car si l’évaluation du corps de la fonction ne termine pas, alors l’évaluation de l’application ne termine pas non plus, – et td′oi qui spécifie les cas de non-terminaison de l’application pour les labels dont dépend la valeur de l’expression e1. Notons que le fait d’ajouter l’ensemble tdoi en entier constitue une sur-approximation car il est inutile de considérer la non-terminaison de l’évaluation du corps de la fermeture de la valeur de référence de e1 lorsque le label de l’injection considérée a un impact sur la valeur de e1. En effet, dans un tel cas, la fonction appliquée n’est pas celle de la valeur de ré- férence mais celle spécifiée par d oi 1 . Il est donc possible que la sémantique sur-instrumentée indique qu’une certaine injection provoque une non-terminaison de l’évaluation de l’application en ce basant sur le fait que cette injection provoque une non-terminaison de l’évaluation du corps de la fonction de référence alors que le label en question apparaît dans d oi 1 et que l’évaluation de la fonction correspondante termine. Pour que la sémantique sur-instrumentée soit exacte, il ne faudrait ajouter que les labels de tdoi n’apparaissant pas dans d oi 1 . C’est une amélioration qu’il serait souhaitable d’envisager puisque la sémantique sur-instrumentée a pour objectif de spécifier de façon exacte le comportement du programme pour toute injection sans faire d’approximation. La même remarque pourrait être faite concernant les v-dépendances. On pourrait n’ajouter que les labels de d oi n’apparaissant pas dans d oi 1 . Cependant, la sémantique sur-instrumentée ne serait en rien affectée puisque dans les v-dépendances sur-instrumentées, seule la première occurence d’un label est prise en compte (cf. définition de la fonction d’instanciation aifl:vl (•)). Ces améliorations n’auraient cependant aucune influence concernant la précision de l’analyse dynamique ou de l’analyse statique car les ensembles de labels resteraient identiques. 873.4. SÉMANTIQUE SUR-INSTRUMENTÉE En ce qui concerne l’ensemble des v-dépendances du résultat final, il est constitué de la concaténation des deux ensembles de v-dépendances suivants : – d ′oi qui spécifie la valeur de l’application pour une injection sur un label dont dépend la valeur de l’expression e1, – et d oi car si un label n’est pas dans d ′oi (i.e. n’est pas dans d oi 1 ) alors la valeur de l’application pour une injection sur ce label est celle de l’évaluation du corps de la fermeture < λx.e, Γ oi 1 >. La valeur simple sur-instrumentée du résultat final est la valeur simple sur-instrumentée v oi issue de l’évaluation du corps de la fermeture. En effet, c’est elle qui détermine la valeur de l’application dans le cas d’une injection sur un label n’ayant pas d’impact sur la valeur de e1 et n’apparaissant pas dans d oi . oi-rec-apply oi-rec-apply tΓ oi ⊢ oi e1 →→ tuoi 1 tuoi 1 = [ tdoi 1 | [ d oi 1 | < recf.x.e, Γ oi 1 > ] ] tΓ oi ⊢ oi e2 →→ tuoi 2 tuoi 2 = [ tdoi 2 | u oi 2 ] (f, tuoi 1 ) ⊕ (x, tuoi 2 )⊕ ↑toi oi (Γoi 1 ) ⊢ oi e →→ [ tdoi | [ d oi | v oi ] ] deps_spec_apply(tuoi 2 , doi 1 ) = (td′oi, d′oi) tΓ oi ⊢ oi e1 e2 →→ [ tdoi 1 ∪ tdoi 2 ∪ tdoi ∪ td′oi | [ d ′oi ∪ d oi | v oi ] ] La règle de l’application récursive suit le même schéma que la règle de l’application. Les deux premières prémisses correspondent à l’évaluation de e1. Elles donnent des noms aux différentes composantes de sa t-valeur sur-instrumentée et imposent que sa valeur de référence soit une fermeture récursive. Les deux prémisses suivantes décrivent l’évaluation de e2 et donnent des noms aux différentes composantes de sa t-valeur sur-instrumentée. La prémisse suivante est un jugement d’évaluation pour le corps de la fermeture de référence. Lors de cette évaluation, on ajoute dans l’environnement une liaison pour la fonction récursive et une seconde liaison pour l’argument de la fonction. On retrouve dans la dernière prémisse la fonction de spécification des dépendances indirectes deps_spec_apply utilisée de la même manière que dans la règle de l’application. Elle permet de spécifier les t-dépendances ainsi que les v-dépendances de l’application dans 883.4. SÉMANTIQUE SUR-INSTRUMENTÉE le cas où la fonction appliquée n’est pas la valeur de référence de e1, c’est-à-dire dans le cas où le label concerné a un impact sur la valeur de e1. On peut remarquer que le c’est la même fonction de spécification qui est utilisée dans la règle de l’application et dans celle de l’application récursive. Ceci s’explique par le fait que la valeur de l’application dans le cas d’une injection sur un label ayant un impact sur la valeur de e1 ne dépend pas de la valeur de référence de e1. De plus, une injection peut conduire à une fermeture récursive pour e1 alors que sa valeur de référence était une fermeture non-récursive ou inversement. Enfin, la t-valeur sur-instrumentée de l’application de e1 à e2 se construit de la même manière que dans le cas de l’application non-récursive. Les t-dépendances sont la concaté- nation des t-dépendances de e1, des t-dépendances de e2, de celles de l’évaluation du corps de la fermeture de référence et des t-dépendances indirectes. De même pour la v-valeur sur-instrumentée, il s’agit de la v-valeur sur-instrumentée issue de l’évaluation du corps de la fermeture de référence à laquelle on a ajouté les v-dépendances indirectes spécifiées par la dernière prémisse. oi-if-true oi-if-true tΓ oi ⊢ oi e →→ [ tdoi | [ d oi | true ] ] tΓ oi ⊢ oi e1 →→ [ tdoi 1 | [ d oi 1 | v oi 1 ] ] deps_spec_if(tΓ oi, e1, e2, doi) = (td′oi, d′oi) tΓ oi ⊢ oi if e then e1 else e2 →→ [ td′oi ∪ tdoi ∪ tdoi 1 | [ d ′oi ∪ d oi 1 | v oi 1 ] ] Expliquons maintenant la règle d’inférence de l’évaluation sur-instrumentée d’une expression conditionnelle. Nous expliquons tout d’abord la règle oi-if-true qui correspond au cas où la valeur de référence de la condition est true. Nous verrons ensuite la règle oi-if-false qui donne la t-valeur sur-instrumentée de l’expression conditionnelle dans le cas où la valeur de référence est f alse. On peut remarquer qu’on ne donne pas de t-valeur sur-instrumentée aux expresssions conditionnelles dont la valeur de référence de la condition n’est ni true ni f alse. En effet, notre analyse dynamique ne permet d’analyser que des programmes qui terminent sur une valeur lorsqu’on les évalue sans injection. La première prémisse est un jugement d’évaluation pour la condition e. Elle impose que sa valeur de référence soit true pour que cette règle puisse s’appliquer. Les t-dépendances de la condition sont notées tdoi et ses v-dépendances sont notées d oi 893.4. SÉMANTIQUE SUR-INSTRUMENTÉE Puisque la valeur de référence de la condition est true, on doit évaluer la première branche e1 par la sémantique sur-instrumentée pour obtenir sa valeur de référence et ses dépendances. En effet, la valeur de référence de e1 est également la valeur de référence du résultat. Les v-dépendances de e1 permettent de spécifier la valeur de l’expression conditionnelle pour toute injection sur un label qui n’a pas d’impact sur la valeur de la condition, puisque dans tous ces cas, on passe dans la première branche. Dans le cas d’une injection sur un label ayant un impact sur la valeur de la condition (ie. un label présent dans d oi), c’est la dernière prémisse qui fournit les dépendances correspondantes à l’aide de la fonction de spécification des dépendances indirectes deps_spec_if. L’idée est que l’injection a pu modifier la valeur de la condition et donc qu’on ne passe plus forcément par la première branche. Le résultat de l’évaluation de l’expression conditionnelle est une t-valeur sur-instrumentée. Celle-ci est constituée de t-dépendances obtenues par l’union des t-dépendances indirectes et des t-dépendances directes (les t-dépendances des deux sous-expressions évaluées e et e1 et d’une v-valeur sur-instrumentée construite en ajoutant les v-dépendances indirectes à la v-valeur sur-instrumentée de e1. L’ordre des t-dépendances n’a pas d’importance puisque si l’une des sous-expressions évaluées n’a pas de valeur, alors l’expression complète n’a pas non plus de valeur. Par exemple, un label peut apparaître à la fois dans tdoi et dans tdoi 1 , associé respectivement à des t-fonctions d’impact tf oi et tf oi 1 . Pour une certaine injection vl , on peut avoir tf oi(vl) = true et tf oi 1 (vl) = f alse et pour une autre injection v ′ l , on peut avoir tf oi(vl) = f alse et tf oi 1 (vl) = true. Dans les deux cas, atifl:vl (tdoi∪tdoi 1 ) = true. Par contre, l’ordre des v-dépendances est important car la fonction aifl:vl (•) ne prend en compte que la première occurence du label. Ainsi, dans notre cas, les v-dépendances indirectes d ′oi sont placées avant les v-dépendances directes d oi 1 puisque ces dernières n’ont de signification que lorsqu’on est sûr que l’on passe par la première branche, c’est-à-dire dans le cas d’une injection sur un label n’apparaîssant pas dans d oi (donc dans d ′oi). 903.4. SÉMANTIQUE SUR-INSTRUMENTÉE oi-if-false oi-if-false tΓ oi ⊢ oi e →→ [ tdoi | [ d oi | f alse ] ] tΓ oi ⊢ oi e2 →→ [ tdoi 2 | [ d oi 2 | v oi 2 ] ] deps_spec_if(tΓ oi, e1, e2, doi) = (td′oi, d′oi) tΓ oi ⊢ oi if e then e1 else e2 →→ [ td′oi ∪ tdoi ∪ tdoi 2 | [ d ′oi ∪ d oi 2 | v oi 2 ] ] Cette règle est pratiquement identique à la précédente. La seule différence est que la valeur de référence de la condition e est f alse. C’est donc la sous-expression correspondant à la seconde branche qui est évaluée pour obtenir la valeur de référence de l’expression conditionnelle ainsi que les dépendances directes. Les dépendances indirectes sont quant à elles obtenues de la même manière que dans la règle précédente. On utilise pour cela la fonction de spécification deps_spec_if qui est appelée avec les mêmes arguments puisque les dépendances indirectes ne dépendent pas de la valeur de référence. oi-match oi-match tΓ oi ⊢ oi e →→ tuoi tuoi = [ tdoi | [ d oi | v oi ] ] tuoi, p ⊢ oi p tΓ oi p tΓ oi p ⊕ tΓ oi ⊢ oi e1 →→ [ tdoi 1 | [ d oi 1 | v oi 1 ] ] deps_spec_match(tΓ oi, p, x, e1, e2, doi) = (td′oi, d′oi) tΓ oi ⊢ oi match e with p → e1 | x → e2 →→ [ td′oi ∪ tdoi ∪ tdoi 1 | [ d ′oi ∪ d oi 1 | v oi 1 ] ] L’évaluation des expressions de filtrage se définit également à l’aide de deux règles d’inférence. Nous allons expliquer la règle correspondant à une évaluation de référence passant dans la première branche. Nous verrons ensuite la règle correspondant à une évaluation de référence passant dans la seconde branche. La première prémisse est un jugement d’évaluation sur-instrumentée pour la sousexpression filtrée e. La t-valeur sur-instrumentée de la sous-expression e est notée tuoi . La deuxième prémisse permet de nommer les différentes composantes de tuoi. Les tdépendances sont notées tdoi, les v-dépendances d oi et la valeur simple sur-instrumentée est notée v oi . La troisième prémisse indique que la t-valeur sur-instrumentée de la sous-expression filtrée correspond au motif de filtrage p (cf. figure 3.6). Cette correspondance produit un environnement de liaison tΓ oi p qui associe à chaque identificateur présent dans le motif p 913.4. SÉMANTIQUE SUR-INSTRUMENTÉE une t-valeur sur-instrumentée issue du sous-terme correspondant dans tuoi. Ce jugement garantit que la valeur de référence extraite de tuoi correspond elle aussi au motif de filtrage p. La quatrième prémisse correspond à l’évaluation sur-instrumentée de la première branche du filtrage. On évalue cette branche-ci puisque l’évaluation de référence passe dans cette branche. Les composantes de la t-valeur sur-instrumentée de e1 sont notées tdoi 1 , d oi 1 et v oi 1 . La dernière prémisse est la spécification des dépendances indirectes du filtrage. Elle utilise la fonction de spécification deps_spec_match pour spécifier les t-dépendances indirectes td′oi et les v-dépendances indirectes d ′oi. Ces dépendances indirectes décrivent le comportement de l’évaluation de l’expression lorsque l’injection considérée est faite sur un label ayant un impact sur la valeur de la sous-expression filtrée. En effet, une modification de la valeur de la sous-expression filtrée provoquée par une injection peut entraîner un changement de branche. Enfin, le résultat de l’évaluation sur-instrumentée de l’expression de filtrage est la tvaleur sur-instrumentée correspondant à l’évaluation de la branche de référence à laquelle on a ajouté des dépendances. Les t-dépendances ajoutées sont les t-dépendances indirectes et les t-dépendances de la sous-expression filtrée. Les v-dépendances ajoutées sont uniquement les v-dépendances indirectes. oi-match-var oi-match-var tΓ oi ⊢ oi e →→ tuoi tuoi = [ tdoi | [ d oi | v oi ] ] tuoi, p ⊢ oi p ⊥ (x, tuoi) ⊕ tΓ oi ⊢ oi e2 →→ [ tdoi 2 | [ d oi 2 | v oi 2 ] ] deps_spec_match(tΓ oi, p, x, e1, e2, doi) = (td′oi, d′oi) tΓ oi ⊢ oi match e with p → e1 | x → e2 →→ [ td′oi ∪ tdoi ∪ tdoi 2 | [ d ′oi ∪ d oi 2 | v oi 2 ] ] Cette règle ressemble fortement à la règle correspondant à un passage dans la première branche pour l’évaluation de référence. Nous allons souligner uniquement les différences entre ces deux règles d’inférence. La troisième prémisse nous indique que cette règle n’est appliquée que lorsque la tvaleur sur-instrumentée de la sous-expression filtrée ne correspond pas au motif de filtrage. 923.4. SÉMANTIQUE SUR-INSTRUMENTÉE La correspondance (ou non-correspondance) d’une t-valeur sur-instrumentée à un motif est équivalente à la correspondance (resp. non-correspondance) de la valeur de référence à ce motif. C’est pourquoi cette règle correspond à l’évaluation sur-instrumentée d’un programme dont l’évaluation de référence passe par la seconde branche. La quatrième prémisse évalue la seconde branche au lieu de la première puisque c’est la seconde branche qui est évaluée lors de l’évaluation de référence. La spécification des dépendances indirectes est identique à la règle précédente. Enfin, le résultat est construit de la même manière, en ajoutant les t-dépendances indirectes, les t-dépendances de la sous-expression filtrée et les v-dépendances indirectes à la t-valeur sur-instrumentée résultat de l’évaluation de la branche empruntée par l’évaluation de référence. 3.4.1.2 Spécification des dépendances indirectes Dans les règles d’inférence les plus simples, les t-dépendances (resp. les v-dépendances) du résultat sont des dépendances directes, c’est-à-dire qu’elles sont la concaténation des t-dépendances (des v-dépendances) apparaissant dans les prémisses. C’est le cas des règles suivantes : oi-num, oi-ident, oi-abstr, oi-abstr-rec, oi-letin, oi-constr-0, oiconstr-1, et oi-couple. La règle oi-annot, quant à elle, introduit une v-dépendance supplémentaire. La vfonction d’impact associée à cette dépendance est toujours l’identité. C’est cette introduction de dépendance qui correspond à la sémantique de l’injection, telle que définie dans la sémantique opérationnelle avec injection et dans la sémantique avec injection dans un t-environnement sur-instrumenté. Le théorème de correction de la sémantique sur-instrumentée nous fournira une justification formelle de cette correspondance. En ce qui concerne les autres règles (oi-apply, oi-rec-apply, oi-if-true, oi-iffalse, oi-match, oi-match-var), on introduit une fonction de spécification des dépendances indirectes. Ces fonctions permettent de spécifier une partie des dépendances du résultat en fonction des dépendances des prémisses. 933.4. SÉMANTIQUE SUR-INSTRUMENTÉE Dépendances indirectes dans les règles de l’application deps_spec_apply(tuoi 2 , doi 1 ) = (td′oi, d′oi) La fonction deps_spec_apply est utilisée dans les règles de l’application et de l’application récursive. Lorsqu’un label apparaît dans les v-dépendances de e1, toute injection sur ce label est susceptible de modifier la valeur de la fonction appliquée. La valeur de retour de l’application est donc également susceptible d’être modifiée, c’est pourquoi le label en question doit apparaître dans les v-dépendances du résultat. En ce qui concerne la v-fonction d’impact associée à un tel label, elle va dépendre de la fonction effectivement appliquée (valeur de e1 pour cette injection) ainsi que du paramètre effectivement passé à la fonction (valeur de e2 pour cette injection). Il se peut également que la fonction effectivement appliquée ne termine pas, le label en question doit donc apparaître dans les t-dépendances du résultat et la t-fonction d’impact associée doit permettre de déterminer pour chaque injection sur ce label si l’application de la fonction va effectivement terminer ou non. C’est le rôle de la fonction deps_spec_apply de spécifier ces dépendances indirectes. Elle prend en argument la t-valeur sur-instrumentée de e2 (notée tuoi 2 ) ainsi que l’ensemble des v-dépendances de e1 (noté d oi 1 ). Elle retourne les t-dépendances ainsi que les v-dépendances qu’il faut ajouter au résultat pour prendre en compte ces dépendances indirectes. Il est nécessaire de préciser que cette fonction n’est pas calculable, ce qui rend la sémantique sur-instrumentée elle-même non-calculable. Pour spécifier td′oi et d ′oi, on commence par définir leur liste de labels comme étant exactement la même que celle de d oi 1 (les v-dépendances de e1). Ensuite, il faut associer à chaque label de cette liste une t-fonction d’impact ou une v-fonction d’impact. La t-fonction d’impact (notée tf′ ) dans td′oi et la v-fonction d’impact (notée f ′ ) dans d ′oi associées à un certain label sont spécifiées à l’aide de la fonction deps_spec_apply_fun en fonction de la v-fonction d’impact correspondante dans d oi 1 et d’autres paramètres explicités ci-dessous. deps_spec_apply_fun(tuoi 2 , l, f1) = (tf′ , f′ ) On donne en paramètre de cette fonction la t-valeur sur-instrumentée de e2 (notée 943.4. SÉMANTIQUE SUR-INSTRUMENTÉE tuoi 2 ), un label présent dans d oi 1 (noté l) et la v-fonction d’impact associée à ce label dans d oi 1 (notée f1). Pour toute valeur vl , on va spécifier les valeurs de retour de tf′ et de f ′ en fonction de tuoi 2 (la t-valeur sur-instrumentée de e2) et de la valeur f1(vl). On distingue trois cas possibles : • f1(vl) est une fermeture < λx.e, Γ > Dans ce cas, les valeurs de retour de la t-fonction d’impact tf′ et de la v-fonction d’impact f ′ sont spécifiées par la formule suivante :  ∀(v2, v′ ). ↓ l:vl(tuoi 2 ) = v2 ∧ (x, ↑ toi(v2))⊕ ↑toi(Γ) ⊢l:vl e →→ v ′ ⇒ tf′ (vl) = f alse ∧ f ′ (vl) = v ′  ∧  ̸ ∃(v2, v′ ). ↓ l:vl(tuoi 2 ) = v2 ∧ (x, ↑ toi(v2))⊕ ↑toi(Γ) ⊢l:vl e →→ v ′  ⇒ tf′ (vl) = true ∧ f ′ (vl) = vdummy Cette formule signifie que si e2 a une valeur v2 pour cette injection (l’instanciation de tuoi 2 pour l’injection considérée retourne une valeur v2) et que l’application de la fermeture à cet argument termine sur une valeur v ′ , alors l’évaluation de l’application de e1 à e2 termine (tf′ (vl) = f alse) sur la valeur v ′ (f ′ (vl) = v ′ ). Dans le cas contraire (si tuoi 2 n’est pas instanciable ou si l’application de la fermeture ne termine pas) alors tf′ (vl) = true, ce qui signifie que l’évaluation de l’expression e1 e2 ne termine pas pour l’injection (l, vl), et f ′ (vl) = vdummy, ce qui signifie que la valeur de f ′ (vl) n’a aucune importance puisque tf′ (vl) = true. Remarque : une autre solution serait de définir les v-fonctions d’impact comme des fonctions partielles et de spécifier ici que f ′ n’a pas de valeur pour l’argument vl , cependant il n’est pas évident que cette solution soit préférable. C’est une piste qui reste à explorer. • f1(vl) est une fermeture récursive < recf.x.e, Γ > 953.4. SÉMANTIQUE SUR-INSTRUMENTÉE Dans ce cas, les valeurs de retour de la t-fonction d’impact tf′ et de la v-fonction d’impact f ′ sont spécifiées par la formule suivante :  ∀(v2, v′ ). ↓ l:vl(tuoi 2 ) = v2 ∧ (f, ↑ toi(< recf.x.e, Γ >)) ⊕ (x, ↑ toi(v2))⊕ ↑toi(Γ) ⊢l:vl e →→ v ′ ⇒ tf′ (vl) = f alse ∧ f ′ (vl) = v ′  ∧  ̸ ∃(v2, v′ ). ↓ l:vl(tuoi 2 ) = v2 ∧ (f, ↑ toi(< recf.x.e, Γ >)) ⊕ (x, ↑ toi(v2))⊕ ↑toi(Γ) ⊢l:vl e →→ v ′  ⇒ tf′ (vl) = true ∧ f ′ (vl) = vdummy Le principe est le même que dans le cas précédent sauf qu’on applique une fermeture récursive dans le cas présent. On peut remarquer que, comme d’habitude, dans le jugement d’application de la fermeture, on ajoute deux liaisons à l’environnement : une pour la fonction récursive et une pour l’argument. • f1(vl) est autre chose On a affaire à une erreur de type donc dans ce cas, la spécification est la suivante : tf′ (vl) = true ∧ f ′ (vl) = vdummy. Dépendances indirectes dans les règles de l’expression conditionnelle deps_spec_if(tΓ oi, e1, e2, doi) = (td′oi, d′oi) La fonction deps_spec_if est utilisée dans les deux règles d’évaluation de l’expression conditionnelle. Lorsqu’un label apparaît dans les v-dépendances de la condition e, toute injection sur ce label est susceptible de modifier la valeur de la condition et donc la valeur du résultat de l’évaluation de l’expression conditionnelle. Le label en question doit donc apparaître dans les v-dépendances du résultat. La v-fonction d’impact associée à ce label est alors spécifiée par deps_spec_if. Une injection sur un tel label peut également provoquer 963.4. SÉMANTIQUE SUR-INSTRUMENTÉE la non-terminaison de l’évaluation de la condition e ou bien la terminaison sur une valeur provoquant une erreur de type. C’est pourquoi le label doit également apparaître dans les t-dépendances de la t-valeur sur-instrumentée de l’expression conditionnelle. Ces dépendances indirectes (un impact sur l’évaluation de la condition e qui provoque soit un impact sur la valeur de l’expression conditionnelle soit un impact sur la terminaison de l’évaluation de l’expression conditionnelle) sont spécifiées à l’aide de la fonction deps_spec_if. Cette fonction de spécification prend quatre arguments : le t-environnement sur-instrumenté tΓ oi dans lequel on évalue l’expression conditionnelle, la sous-expression e1 de la première branche, à évaluer dans le cas où la condition est vraie, la sous-expression e2 de la seconde branche, à évaluer dans le cas où la condition est fausse et l’ensemble de v-dépendances d oi de l’expression testée. Le résultat de cette fonction est une spécification caractérisant de façon unique les t-dépendances ainsi que les v-dépendances qu’il est nécessaire d’ajouter à la t-valeur sur-instrumentée de l’expression conditionnelle pour prendre en compte les dépendances indirectes. La fonction de spécification deps_spec_if ainsi que ses deux homologues deps_spec_apply et deps_spec_match donnent uniquement une caractérisation des ensembles de dépendance td′oi et d ′oi sous forme de formule logique mais ne fournissent pas un procédé calculatoire permettant de construire les fonctions d’impact inclues dans td′oi et d ′oi . Pour spécifier td′oi et d ′oi, on commence par définir leur liste de labels comme étant exactement la même que celle de d oi (les v-dépendances de l’expression testée). Ensuite, il faut associer à chaque label de cette liste une t-fonction d’impact dans td′oi et une vfonction d’impact dans d ′oi. La t-fonction d’impact (notée tf′ ) et la v-fonction d’impact (notée f ′ ) associées à un certain label sont spécifiées en fonction de la v-fonction d’impact (notée f) correspondant à ce label dans d oi et d’autres paramètres explicités ci-dessous. Nous notons alors deps_spec_if_fun la fonction qui permet de spécifier les t-fonctions d’impact de td′oi et les v-fonctions d’impact de d ′oi . deps_spec_if_fun(tΓ oi, e1, e2, l, f) = (tf′ , f′ ) On donne en paramètre de cette fonction le t-environnement sur-instrumenté (noté 973.4. SÉMANTIQUE SUR-INSTRUMENTÉE tΓ oi) dans lequel on évalue l’expression, les deux sous-expressions e1 et e2 correspondant aux deux branches de l’expression conditionnelle, un label présent dans d oi (noté l) et la v-fonction d’impact associée à ce label dans d oi (notée f). Pour toute valeur vl , on va spécifier les valeurs de retour de tf′ et de f ′ . On distingue trois cas possibles : • f(vl) vaut true Dans ce cas, les valeurs de retour de la t-fonction d’impact tf′ et de la v-fonction d’impact f ′ sont spécifiées par la formule suivante :  ∀v1.tΓ oi ⊢l:vl e1 →→ v1 ⇒ tf′ (vl) = f alse ∧ f ′ (vl) = v1  ∧  ̸ ∃v1.tΓ oi ⊢l:vl e1 →→ v1  ⇒ tf′ (vl) = true ∧ f ′ (vl) = vdummy Cette spécification fait la distinction entre deux cas : soit il existe une valeur v1 telle que l’évaluation de e1 pour l’injection considérée termine sur v1, et dans ce cas l’évaluation de l’expression conditionnelle termine également pour cette même injection (tf′ (vl) = f alse) et sa valeur est v1 (f ′ (vl) = v1), soit il n’existe pas de jugement d’évaluation de e1 pour l’injection considérée, et dans ce cas l’évaluation de l’expression conditionnelle ne termine pas non plus sur une valeur (tf′ (vl) = true et f ′ (vl) = vdummy). • f(vl) vaut f alse Dans ce cas, les valeurs de retour de la t-fonction d’impact tf′ et de la v-fonction d’impact f ′ sont spécifiées par la formule suivante : 983.4. SÉMANTIQUE SUR-INSTRUMENTÉE  ∀v2.tΓ oi ⊢l:vl e2 →→ v2 ⇒ tf′ (vl) = f alse ∧ f ′ (vl) = v2  ∧  ̸ ∃v2.tΓ oi ⊢l:vl e2 →→ v2  ⇒ tf′ (vl) = true ∧ f ′ (vl) = vdummy L’injection considérée entraîne le passage dans la seconde branche de l’expression conditionnelle en donnant f alse pour valeur à la condition e. La spécification est donc la même que la précédente, sauf que l’on évalue e2 au lieu de e1. • f(vl) ne vaut ni true nif alse On a affaire à une erreur de type donc dans ce cas, la spécification est la suivante : tf′ (vl) = true ∧ f ′ (vl) = vdummy. Dépendances indirectes dans les règles du filtrage par motif deps_spec_match(tΓ oi, p, x, e1, e2, doi) = (td′oi, d′oi) La fonction deps_spec_match est utilisée dans les deux règles d’évaluation du filtrage par motif. Lorsqu’un label apparaît dans les v-dépendances de l’expression filtrée e, toute injection sur ce label est susceptible de modifier la branche choisie lors du filtrage et donc la valeur du résultat. Ce label doit donc apparaître dans les v-dépendances de la t-valeur sur-instrumentée résultant de l’évaluation du filtrage. Il doit également apparaître dans ses t-dépendances puisqu’une injection sur ce label peut entraîner la non-terminaison de l’évaluation de l’expression filtrée e ou bien provoquer une erreur de type. La fonction deps_spec_match donne une spécification permettant de caractériser de façon unique ces dépendances indirectes à ajouter aux t-dépendances et aux v-dépendances de la t-valeur sur-instrumentée du filtrage. Il est intéressant de remarquer que si l’injection considérée n’a d’impact que sur un sous-terme de la valeur de l’expression filtrée, alors ces dépendances ne sont pas des dé- pendances indirectes. Ces dépendances sont prises en compte dans le calcul de la t-valeur 993.4. SÉMANTIQUE SUR-INSTRUMENTÉE sur-instrumentée de la branche de référence. En effet, une injection sur un tel label ne peut pas avoir d’influence sur le choix de la branche et on évaluera donc la branche de référence. Ceci est dû à notre sémantique du filtrage qui ne discrimine que sur le constructeur de tête de la valeur filtrée. C’est une manière courante de définir le filtrage puisque tout filtrage à une profondeur arbitraire peut être réécrit en une imbrication de filtrages successifs. La fonction de spécification deps_spec_match prend quatre arguments : le t-environnement sur-instrumenté tΓ oi dans lequel on évalue l’expression de filtrage, le motif de filtrage de la première branche ainsi que l’identificateur de liaison de la seconde branche, la sous-expression e1 de la première branche, la sous-expression e2 de la seconde branche et l’ensemble de v-dépendances d oi de l’expression filtrée. Le résultat de cette fonction est une spécification permettant de caractériser sans ambiguïté les t-dépendances ainsi que les v-dépendances correspondant aux dépendances indirectes de l’expression de filtrage. Formellement, on ne peut pas exprimer la fonction deps_spec_match (ni ses homologues deps_spec_apply et deps_spec_if) sous forme d’une fonction calculable. On définit cependant le graphe correspondant à cette fonction à l’aide d’un prédicat. Comme pour les deux autres fonctions de spécification, on définit les listes de labels de td′oi et d ′oi comme étant exactement les mêmes que celle de d oi. Pour spécifier la tfonction d’impact (notée tf′ ) dans td′oi correspondant à un de ces labels, ou la v-fonction d’impact (notée f ′ ) dans d ′oi, on définit la fonction deps_spec_match_fun qui en donne une spécification dépendant entre autre de la v-fonction d’impact (notée f) correspondant à ce label dans d oi . deps_spec_match_fun(tΓ oi, p, x, e1, e2, l, f) = (tf′ , f′ ) Les paramètres de cette fonction sont : le t-environnement sur-instrumenté tΓ oi dans lequel on évalue l’expression, le motif p correspondant à la première branche, l’identificateur x permettant de lier la valeur filtrée dans la seconde branche, des deux sous-expressions e1 et e2 correspondant aux corps des branches, d’un label l présent dans d oi et de la v-fonction d’impact f correspondant à ce label dans d oi. Pour toute valeur vl , on va alors spécifier les valeurs de retour de tf′ et de f ′ . 1003.4. SÉMANTIQUE SUR-INSTRUMENTÉE On distingue trois cas possibles : • f(vl) correspond au motif de filtrage p (on a f(vl), p ⊢p Γp) Dans ce cas, les valeurs de retour de la t-fonction d’impact tf′ et de la v-fonction d’impact f ′ sont spécifiées par la formule suivante :  ∀v1. ↑ toi(Γp) ⊕ tΓ oi ⊢l:vl e1 →→ v1 ⇒ tf′ (vl) = f alse ∧ f ′ (vl) = v1  ∧  ̸ ∃v1. ↑ toi(Γp) ⊕ tΓ oi ⊢l:vl e1 →→ v1  ⇒ tf′ (vl) = true ∧ f ′ (vl) = vdummy On tente ici d’évaluer e1 dans l’environnement tΓ oi augmenté de l’environnement de liaison issu du filtrage Γp. On distingue alors deux cas : soit l’évaluation retourne une valeur, soit elle n’en retourne pas. Dans le premier cas, l’évaluation du filtrage termine sur une valeur, ce qui est traduit par la formule tf′ (vl) = f alse et sa valeur est v1, ce qui est traduit par la formule f ′ (vl) = v1. On constate ici qu’il est impossible de définir la fonction de spécification sous forme de fonction calculable car elle nécessiterait une fonction calculable permettant de déterminer si l’évaluation de e1 termine ou non. Cette remarque est valable pour les trois fonctions de spécification. • f(vl) ne correspond pas au motif de filtrage p (on a f(vl), p ⊢p ⊥) Dans ce cas, les valeurs de retour de la t-fonction d’impact tf′ et de la v-fonction d’impact f ′ sont spécifiées par la formule suivante :  ∀v2.(x, ↑ toi(f(vl))) ⊕ tΓ oi ⊢l:vl e2 →→ v2 ⇒ tf′ (vl) = f alse ∧ f ′ (vl) = v2  ∧ 1013.4. SÉMANTIQUE SUR-INSTRUMENTÉE  ̸ ∃v2.(x, ↑ toi(f(vl))) ⊕ tΓ oi ⊢l:vl e2 →→ v2  ⇒ tf′ (vl) = true ∧ f ′ (vl) = vdummy Si la valeur de l’expression filtrée ne correspond pas au motif, on évalue alors la seconde branche du filtrage. Si l’évaluation de cette seconde branche termine sur une valeur v2, alors on a la spécification suivante : tf′ (vl) = f alse ∧ f ′ (vl) = v2. Si l’évaluation de e2 ne termine pas sur une valeur, alors la spécification qui s’applique est : tf′ (vl) = true ∧ f ′ (vl) = vdummy. • f(vl) n’est pas une valeur filtrable Ce cas correspond à une erreur de type. La spécification est donc la suivante : tf′ (vl) = true ∧ f ′ (vl) = vdummy. 3.4.2 Correction 3.4.2.1 Énoncé informel du théorème La sémantique sur-instrumentée permet de simuler en une seule évaluation toutes les évaluations avec injection possibles. En effet, le résultat de l’évaluation d’un programme par cette sémantique est une t-valeur sur-instrumentée contenant la valeur de référence du programme ainsi que, en puissance, la valeur du programme pour toute évaluation avec injection. Pour extraire la valeur du programme pour une injection donnée, il suffit d’instancier la t-valeur sur-instrumentée. Si l’instanciation retourne une valeur, alors nous pouvons être sûrs que l’évaluation de ce programme par la sémantique avec injection termine pour l’injection considérée et que la valeur retournée est la même que l’instanciation de la t-valeur sur-instrumentée. Le théorème auquel nous nous intéressons exprime le lien qu’il doit y avoir entre la sémantique sur-instrumentée et la sémantique avec injection dans un t-environnement surinstrumenté. En combinant ce résultat avec le théorème de correction de la sémantique avec injection dans un t-environnement sur-instrumenté et le théorème de correction de 1023.4. SÉMANTIQUE SUR-INSTRUMENTÉE la sémantique opérationnelle avec injection, il sera possible de déduire que si un label n’apparaît pas dans la t-valeur sur-instrumentée d’un programme alors ce label n’a pas d’impact sur l’évaluation du programme. Cependant, cette propriété ne nous intéresse pas en elle-même car il n’est pas possible en pratique d’analyser un programme avec la sémantique sur-instrumentée. On prouvera cette propriété sur la sémantique instrumentée qui constitue notre analyse dynamique. 3.4.2.2 Illustration par l’exemple Pour se rendre compte concrètement de la signification du théorème de correction de la sémantique sur-instrumentée, nous illustrons ici par quelques exemples le lien entre la sémantique sur-instrumentée et la sémantique avec injection dans un t-environnement surinstrumenté. Exemple 1 : évaluation d’un couple Notons e1 le programme suivant : (3, l :7) Considérons maintenant le jugement d’évaluation de ce programme par la sémantique sur-instrumentée dans le t-environnement sur-instrumenté vide (son arbre de dérivation est donné en figure 3.9) : ∅ ⊢oi e1 →→ tuoi avec tuoi = [ ∅ | [ ∅ | ( [ ∅ | 3 ], [ (l, id) | 7 ]) ] ] où id représente la fonction identité. Donnons des noms aux différentes composantes de tuoi : tuoi = [ tdoi | [ d oi | ( [ d oi 1 | 3 ], [ (l, f2) | 7 ]) ] ] L’instanciation de tuoi retourne toujours une valeur puisque son ensemble de t-dépendances tdoi est vide. L’ensemble de v-dépendances d oi est vide lui aussi, ce qui indique que pour toute injection, l’instanciation de tuoi aura toujours une structure de couple. L’ensemble des v-dépendances de la première composante du couple d oi 1 est également vide, donc pour toute injection, la première composante du couple est la valeur 3. En ce 1033.4. SÉMANTIQUE SUR-INSTRUMENTÉE qui concerne l’ensemble des v-dépendances de la seconde composante du couple, il contient un unique label l et sa v-fonction d’impact associée f2. Si on instancie tuoi pour une injection sur un label autre que l, on obtiendra un couple dont la seconde composante est spécifiée par f2. Si on instancie tuoi pour une injection sur le label l, alors le couple résultat aura pour seconde composante la valeur 7 qui est la valeur de référence de ce sous-terme. La fonction f2 est l’identité donc on a : ∀vl . ↓ l:vl(tuoi) = (3, vl) et ∀vl . ↓ l ′ :vl ′ (tuoi) = (3, 7) si l ̸= l ′ Maintenant, intéressons nous à l’évaluation de e1 par la sémantique avec injection dans le même t-environnement sur-instrumenté (l’environnement vide). La sémantique avec injection évalue le programme pour une injection donnée. Considérons une injection que nous noterons (l ′ , vl ′). La figure 3.10 présente l’arbre de dérivation du jugement d’évaluation de e1 par la sémantique avec injection dans le cas où l = l ′ . En réalité, il existe un tel arbre de dérivation pour chaque valeur de vl ′, cependant tous ces arbres de dérivation ont la même structure. Nous présentons donc un arbre d’évaluation paramétré par la valeur vl ′. Dans le cas ou l ̸= l ′ , tous les arbres d’évaluation ont eux aussi la même structure. La figure 3.11 présente donc un arbre d’évaluation paramétré par l’injection (l ′ , vl ′) dans le cas ou l ̸= l ′ . Nous obtenons les deux jugements paramétrés suivants, correspondant aux deux situations possibles : ∀vl ′.tΓ oi ⊢l:vl ′ (3, l : 7) →→ (3, vl ′) et ∀(l ′ , vl ′).tΓ oi ⊢l ′ :vl ′ (3, l : 7) →→ (3, 7) si l ̸= l ′ Nous pouvons alors constater que pour toute injection possible, l’instanciation de la t-valeur sur-instrumentée de e1 retourne bien la valeur retournée par l’évaluation de e1 via la sémantique avec injection. En outre, la sémantique avec injection termine toujours sur une valeur (car la t-valeur sur-instrumentée de e1 est instanciable pour toute injection). 1043.4. SÉMANTIQUE SUR-INSTRUMENTÉE oi-couple oi-num tΓ oi ⊢ oi 3 →→ [ ∅ | [ ∅ | 3 ] ] oi-annot oi-num tΓ oi ⊢ oi 7 →→ [ ∅ | [ ∅ | 7 ] ] tΓ oi ⊢ oi l : 7 →→ [ ∅ | [ (l, fun x ⇒ x) | 7 ] ] tΓ oi ⊢ oi (3, l : 7) →→ [ tdoi 1 ∪ tdoi 2 | [ ∅ | ( [ ∅ | 3 ], [ (l, fun x ⇒ x) | 7 ]) ] ] Figure 3.9 – Exemple 1 : arbre de dérivation du jugement d’évaluation sur-instrumentée inj-couple inj-num tΓ oi ⊢l:vl ′ 3 →→ 3 inj-annot-same tΓ oi ⊢l:vl ′ l : 7 →→ vl ′ tΓ oi ⊢l:vl ′ (3, l : 7) →→ (3, vl ′) Figure 3.10 – Exemple 1 : arbre de dérivation du jugement d’évaluation avec injection si l = l ′ inj-couple inj-num tΓ oi ⊢l ′ :vl ′ 3 →→ 3 inj-annot-other inj-num tΓ oi ⊢l ′ :vl ′ 7 →→ 7 l ′ ̸= l tΓ oi ⊢l ′ :vl ′ l : 7 →→ 7 tΓ oi ⊢l ′ :vl ′ (3, l : 7) →→ (3, 7) Figure 3.11 – Exemple 1 : arbre de dérivation du jugement d’évaluation avec injection si l ̸= l ′ 1053.4. SÉMANTIQUE SUR-INSTRUMENTÉE Exemple 2 : liaison d’une fonction Notons e2 le programme suivant : l e t f o = match o with | Some ( x ) → x + l1 : 8 | none → d i n ( f ( Some 18 ) , l2 : 17 ) Remarque : Some est écrit avec une majuscule puisqu’il s’agit d’une constructeur de donnée alors que none est écrit sans majuscule puisqu’il s’agit d’une variable (cf. algèbre des valeurs sur-instrumentées). Nous souhaitons évaluer ce programme dans l’environnement suivant : tΓ oi 2 = (d, [ tdoi d | [ d oi d | 26 ] ]) avec tdoi d = (l3, tfd) et tdoi d = (l4, fd) Le jugement d’évaluation de e2 par la sémantique sur-instrumentée est : tΓ oi 2 ⊢ oi e2 →→ [ ∅ | [ ∅ | ( [ (l1, f1) | 26 ], [ (l2, id) | 17 ]) ] ] avec f1 = fun x ⇒ 18 + x Pour s’en convaincre, l’arbre d’évaluation de ce programme par la sémantique surinstrumentée est présenté dans les figures 3.12 et 3.13. Pour faciliter la lecture de l’arbre d’évaluation, on écrit à gauche de chaque règle le nom de la règle d’inférence appliquée et à droite le niveau de profondeur de la règle au sein de l’arbre d’évaluation du programme complet e2. Le niveau 0 correspond à la racine de l’arbre, le niveau 1 correspond à ses prémisses et ainsi de suite. Le sous-arbre d’évaluation du filtrage par motif est présenté dans une figure séparée pour plus de lisibilité. Notre exemple contient le symbole d’addition. Pour donner une sémantique à ce symbole, il serait nécessaire d’ajouter une règle d’inférence. Nous ne détaillons pas l’ajout de cette règle ici et cachons le sous-arbre d’évaluation correspondant. Il est possible de manipuler les nombres entiers dans notre langage sans avoir recours à l’ajout de règle supplémentaire. Pour cela, il suffit d’encoder les entiers à l’aide des constructeurs de données 1063.4. SÉMANTIQUE SUR-INSTRUMENTÉE et de définir les fonctions usuelles (addition, soustraction, division, multiplication, . . . ) directemement dans le langage. Cependant, nous avons choisi de ne pas utiliser cet encodage dans l’exemple afin de simplifier la présentation. Nous pouvons constater que les labels l3 et l4 n’apparaissent pas dans la t-valeur surinstrumentée de e2. En effet, puisque l’évaluation du filtrage passe toujours par la première branche la valeur de l’identificateur d dans l’environnement n’a pas d’importance. L’analyse donne une t-valeur sur-instrumentée à la sous-expression filtrée. L’ensemble des v-dépendances de cette t-valeur sur-instrumentée est vide donc il n’y a aucune dépendance indirecte lors de l’évaluation du filtrage (aucune injection susceptible de modifier le choix de la branche lors de l’évaluation). L’analyse « déduit » donc de cette manière que l’évaluation du filtrage passe toujours pas la première branche. Notons tuoi 2 la t-valeur sur-instrumentée de e2 dans tΓ oi 2 . L’instanciation de tuoi 2 ne dépend que des labels l1 et l2. Si on instancie pour une injection sur l1, seule la première composante du couple est modifiée. Si on instancie pour une injection sur l2, seule la seconde composante du couple est modifiée. Si on instancie pour une injection sur un autre label, on obtient la valeur de référence. Ces trois cas sont récapitulés ci-dessous : ↓ l1:vl1(tuoi 2 ) = (18 + vl1 , 17) ↓ l2:vl2(tuoi 2 ) = (26, vl2 ) ↓ l:vl(tuoi 2 ) = (26, 17) si l ̸= l1 et l ̸= l2 Intéressons-nous maintenant à l’évaluation de l’expression e2 à l’aide de la sémantique avec injection. En fonction du label sur lequel on effectue l’injection, l’arbre de dérivation du jugement de la sémantique avec injection change de forme. On distingue 3 cas, suivant qu’il s’agisse d’une injection sur le label l1, sur le label l2 ou sur un autre label. Pour une injection sur le label l1, l’arbre de dérivation est donné en deux parties, dans les figures 3.14 et 3.15. Pour une injection sur le label l2, l’arbre de dérivation est donné dans les figures 3.16 et 3.17. Pour une injection sur un label autre que l1 et l2, l’arbre de dérivation est donné en deux parties, dans les figures 3.18 et 3.19. On obtient les trois jugements suivants qui correspondent aux troix cas de l’instancia- 1073.4. SÉMANTIQUE SUR-INSTRUMENTÉE tion de la t-valeur sur-instrumentée du programme : tΓ oi 2 ⊢l1:vl1 e2 →→ (18 + vl1 , 17) tΓ oi 2 ⊢l2:vl2 e2 →→ (26, vl2 ) tΓ oi 2 ⊢l :vl e2 →→ (26, 17) si l ̸= l1 et l ̸= l2 On constate ainsi que pour tout injection, la sémantique avec injection termine sur une valeur qui est la même que l’instanciation de la t-valeur sur-instrumentée. Pour chaque arbre de dérivation, le niveau 0 correspond à l’évaluation de l’expression de liaison. On a ensuite deux sous-arbres au niveau 1 : un pour l’évaluation de la sousexpression liée et un autre pour l’évaluation du couple. La forme du premier sous-arbre est commune à tous les cas (l1, l2 ou autre). Par contre, la forme du second sous-arbre dépend du label sur lequel on effectue l’injection. Il s’agit de l’évaluation de la sous-expression couple. Cette évaluation comprend elle-même deux sous-arbres (de niveau 2), un pour chaque composante du couple. On peut constater que le sous-arbre de niveau 2 correspondant à l’évaluation de la première composante du couple est le même pour toute injection sur un label différent de l1 (c’est-à-dire pour tout label n’apparaissant pas dans l’ensemble des v-dépendances surinstrumentées de la première composante du couple). De même, le sous-arbre correspondant à la seconde composante du couple est le même pour toute injection sur un label différent de l2 (c’est-à-dire pour tout label n’apparaissant pas dans l’ensemble des v-dépendances sur-instrumentées de la seconde composante du couple). 1083.4. SÉMANTIQUE SUR-INSTRUMENTÉE oi-letin oi-abstr tΓ oi 2 ⊢ oi λo.match o with... →→ [ ∅ | [ ∅ | < λo.match o with..., ↑ oi toi(tΓ oi 2 ) > ] ] 1 oi-couple oi-apply oi-ident [ ∅ | [ ∅ | < λo.match o with..., ↑ oi toi(tΓ oi 2 ) > ] ] = ((f, ...) ⊕ tΓ oi 2 )[f] (f, ...) ⊕ tΓ oi 2 ⊢ oi f →→ [ ∅ | [ ∅ | < λo.match o with..., ↑ oi toi(tΓ oi 2 ) > ] ] 3 oi-constr-1 oi-num (f, ...) ⊕ tΓ oi 2 ⊢ oi 18 →→ [ ∅ | [ ∅ | 18 ] ] 4 (f, ...) ⊕ tΓ oi 2 ⊢ oi Some 18 →→ [ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ] 3 oi-match . . . (figure 3.13) . . . (o, ...)⊕ ↑toi oi (↑ oi toi(tΓ oi 2 )) ⊢ oi match o with Some x → x + l1 : 8 | none → d →→ [ ∅ | [ (l1, fun x ⇒ 18 + x) | 26 ] ] 3 deps_spec_apply( [ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ], ∅) = (∅, ∅) (f, ...) ⊕ tΓ oi 2 ⊢ oi f(Some 18) →→ [ ∅ | [ (l1, fun x ⇒ 18 + x) | 26 ] ] 2 oi-annot oi-num (f, ...) ⊕ tΓ oi 2 ⊢ oi 17 →→ [ ∅ | [ ∅ | 17 ] ] 3 (f, ...) ⊕ tΓ oi 2 ⊢ oi l2 : 17 →→ [ ∅ | [ (l2, fun x ⇒ x) | 17 ] ] 2 (f, ...) ⊕ tΓ oi 2 ⊢ oi (f(Some 18), l2 : 17) →→ [ ∅ | [ ∅ | ( [ (l1, fun x ⇒ 18 + x) | 26 ], [ (l2, fun x ⇒ x) | 17 ]) ] ] 1 tΓ oi 2 ⊢ oi e2 →→ [ ∅ | [ ∅ | ( [ (l1, fun x ⇒ 18 + x) | 26 ], [ (l2, fun x ⇒ x) | 17 ]) ] ] 0 Figure 3.12 – Exemple 2 : arbre de dérivation du jugement d’évaluation sur-instrumentée oi-match oi-ident [ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ] = ((o, ...)⊕ ↑toi oi (↑ oi toi(tΓ oi 2 )))[o] (o, ...)⊕ ↑toi oi (↑ oi toi(tΓ oi 2 )) ⊢ oi o →→ [ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ] 4 oim-constr-1 [ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ], Some x ⊢ oi p (x, [ ∅ | 18 ]) 4 oi-plus . . . (x, [ ∅ | 18 ]) ⊕ (o, ...)⊕ ↑toi oi (↑ oi toi(tΓ oi 2 )) ⊢ oi x + l1 : 8 →→ [ ∅ | [ (l1, fun x ⇒ 18 + x) | 26 ] ] 4 deps_spec_match((o, ...)⊕ ↑toi oi (↑ oi toi(tΓ oi 2 )), Some x, none, x + l1 : 8, d, ∅) = (∅, ∅) (o, ...)⊕ ↑toi oi (↑ oi toi(tΓ oi 2 )) ⊢ oi match o with Some x → x + l1 : 8 | none → d →→ [ ∅ | [ (l1, fun x ⇒ 18 + x) | 26 ] ] 3 Figure 3.13 – Exemple 2 : sous-arbre de dérivation sur-instrumentée du filtrage 1093.4. SÉMANTIQUE SUR-INSTRUMENTÉE inj-letin inj-abstr tΓ oi 2 ⊢l1:vl1 λo.match o with... →→< λo.match o with..., (d, 26) > 1 inj-couple inj-apply inj-ident < λo.match o with..., (d, 26) >=↓ l1:vl1(((f, ...) ⊕ tΓ oi 2 )[f]) (f, ...) ⊕ tΓ oi 2 ⊢l1:vl1 f →→< λo.match o with..., (d, 26) > 3 inj-constr-1 inj-num (f, ...) ⊕ tΓ oi 2 ⊢l1:vl1 18 →→ 18 4 (f, ...) ⊕ tΓ oi 2 ⊢l1:vl1 Some 18 →→ Some 18 3 inj-match . . . (figure 3.15) . . . (o, ↑ toi(Some 18)) ⊕ (d, 26) ⊢l1:vl1 match o with... →→ 18 + vl1 3 (f, ...) ⊕ tΓ oi 2 ⊢l1:vl1 f(Some 18) →→ 18 + vl1 2 inj-annot-other inj-num (f, ...) ⊕ tΓ oi 2 ⊢l1:vl1 17 →→ 17 3 l1 ̸= l2 (f, ...) ⊕ tΓ oi 2 ⊢l1:vl1 l2 : 17 →→ 17 2 (f, ...) ⊕ tΓ oi 2 ⊢l1:vl1 (f(Some 18), l2 : 17) →→ (18 + vl1 , 17) 1 tΓ oi 2 ⊢l1:vl1 e2 →→ (18 + vl1 , 17) 0 Figure 3.14 – Exemple 2 : arbre de dérivation du jugement d’évaluation avec injection sur l1 inj-match inj-ident Some 18 =↓ l1:vl1(↑ toi(Some 18)) (o, ↑ toi(Some 18)) ⊕ (d, 26) ⊢l1:vl1 o →→ Some 18 4 opm-constr-1 Some 18, Some x ⊢p (x, 18) 4 inj-plus . . . (x, ↑ toi(18)) ⊕ (o, ↑ toi(v2)) ⊕ (d, 26) ⊢l1:vl1 x + l1 : 8 →→ 18 + vl1 4 (o, ↑ toi(Some 18)) ⊕ (d, 26) ⊢l1:vl1 match o with Some x → x + l1 : 8 | none → d →→ 18 + vl1 3 Figure 3.15 – Exemple 2 : sous-arbre de dérivation du filtrage avec injection sur l1 1103.4. SÉMANTIQUE SUR-INSTRUMENTÉE inj-letin inj-abstr tΓ oi 2 ⊢l2:vl2 λo.match o with... →→< λo.match o with..., (d, 26) > 1 inj-couple inj-apply inj-ident < λo.match o with..., (d, 26) >=↓ l2:vl2(((f, ...) ⊕ tΓ oi 2 )[f]) (f, ...) ⊕ tΓ oi 2 ⊢l2:vl2 f →→< λo.match o with..., (d, 26) > 3 inj-constr-1 inj-num (f, ...) ⊕ tΓ oi 2 ⊢l2:vl2 18 →→ 18 4 (f, ...) ⊕ tΓ oi 2 ⊢l2:vl2 Some 18 →→ Some 18 3 inj-match . . . (figure 3.17) . . . (o, ↑ toi(Some 18)) ⊕ (d, 26) ⊢l2:vl2 match o with... →→ 26 3 (f, ...) ⊕ tΓ oi 2 ⊢l2:vl2 f(Some 18) →→ 26 2 inj-annot-same (f, ...) ⊕ tΓ oi 2 ⊢l2:vl2 l2 : 17 →→ vl2 2 (f, ...) ⊕ tΓ oi 2 ⊢l2:vl2 (f(Some 18), l2 : 17) →→ (26, vl2 ) 1 tΓ oi 2 ⊢l2:vl2 e2 →→ (26, vl2 ) 0 Figure 3.16 – Exemple 2 : arbre de dérivation du jugement d’évaluation avec injection sur l2 inj-match inj-ident Some 18 =↓ l2:vl2(↑ toi(Some 18)) (o, ↑ toi(Some 18)) ⊕ (d, 26) ⊢l2:vl2 o →→ Some 18 4 opm-constr-1 Some 18, Some x ⊢p (x, 18) 4 inj-plus . . . (x, ↑ toi(18)) ⊕ (o, ↑ toi(v2)) ⊕ (d, 26) ⊢l2:vl2 x + l2 : 8 →→ 26 4 (o, ↑ toi(Some 18)) ⊕ (d, 26) ⊢l2:vl2 match o with Some x → x + l2 : 8 | none → d →→ 26 3 Figure 3.17 – Exemple 2 : sous-arbre de dérivation du filtrage avec injection sur l2 1113.4. SÉMANTIQUE SUR-INSTRUMENTÉE inj-letin inj-abstr tΓ oi 2 ⊢l:vl λo.match o with... →→< λo.match o with..., (d, 26) > 1 inj-couple inj-apply inj-ident < λo.match o with..., (d, 26) >=↓ l:vl(((f, ...) ⊕ tΓ oi 2 )[f]) (f, ...) ⊕ tΓ oi 2 ⊢l:vl f →→< λo.match o with..., (d, 26) > 3 inj-constr-1 inj-num (f, ...) ⊕ tΓ oi 2 ⊢l:vl 18 →→ 18 4 (f, ...) ⊕ tΓ oi 2 ⊢l:vl Some 18 →→ Some 18 3 inj-match . . . (figure 3.19) . . . (o, ↑ toi(Some 18)) ⊕ (d, 26) ⊢l:vl match o with... →→ 26 3 (f, ...) ⊕ tΓ oi 2 ⊢l:vl f(Some 18) →→ 26 2 inj-annot-other inj-num (f, ...) ⊕ tΓ oi 2 ⊢l1:vl1 17 →→ 17 3 l1 ̸= l2 (f, ...) ⊕ tΓ oi 2 ⊢l:vl l : 17 →→ 17 2 (f, ...) ⊕ tΓ oi 2 ⊢l:vl (f(Some 18), l : 17) →→ (26, 17) 1 tΓ oi 2 ⊢l:vl e2 →→ (26, 17) 0 Figure 3.18 – Exemple 2 : arbre de dérivation du jugement d’évaluation avec injection sur l ̸∈ {l1, l2} inj-match inj-ident Some 18 =↓ l:vl(↑ toi(Some 18)) (o, ↑ toi(Some 18)) ⊕ (d, 26) ⊢l:vl o →→ Some 18 4 opm-constr-1 Some 18, Some x ⊢p (x, 18) 4 inj-plus . . . (x, ↑ toi(18)) ⊕ (o, ↑ toi(v2)) ⊕ (d, 26) ⊢l:vl x + l : 8 →→ 26 4 (o, ↑ toi(Some 18)) ⊕ (d, 26) ⊢l:vl match o with Some x → x + l : 8 | none → d →→ 26 3 Figure 3.19 – Exemple 2 : sous-arbre de dérivation du filtrage avec injection sur l ̸∈ {l1, l2} 1123.4. SÉMANTIQUE SUR-INSTRUMENTÉE 3.4.2.3 Énoncé formel du théorème Théorème 3.4.1 (Correction de la sémantique sur-instrumentée). ∀(tΓ oi, e, tuoi).tΓ oi ⊢ oi e →→ tuoi ⇒ ∀(l, vl).∃Γ.Γ =↓ l:vl(tΓ oi) ⇒ ∀v.v =↓ l:vl(tuoi) ⇒ tΓ oi ⊢l:vl e →→ v Ce théorème énonce la correction de la sémantique sur-instrumentée. Si l’évaluation sur-instrumentée d’un programme e dans un environnement tΓ oi termine sur une valeur sur-instrumentée tuoi, alors cette valeur doit être correcte. Pour toute injection, si le tenvironnement sur-instrumenté tΓ oi et la t-valeur sur-instrumentée tuoi sont instanciables alors la sémantique avec injection termine sur une valeur et cette valeur est précisément l’instanciation de la t-valeur sur-instrumentée tuoi . L’hypothèse d’instanciabilité du t-environnement sur-instrumenté assure que l’injection considérée peut conduire à l’évaluation de l’expression e. Autrement dit, si le tenvironnement sur-instrumenté n’est pas instanciable, cela signifie que l’injection considérée provoquera une erreur avant même l’évaluation de l’expression e, par exemple lors de l’évaluation d’une autre partie du programme précédant celle de e. 3.4.2.4 Preuve de correction La preuve de correction se fait par induction sur le jugement d’évaluation de la sémantique sur-instrumentée. Cette induction implique la preuve de quinze cas : un pour chaque règle d’inférence. Nous allons présenter ici les grandes lignes de la preuve en détaillant quelques uns de ces cas. La preuve complète est disponible sous forme de code Coq. cas oi-num Ce cas est trivial. Dans ce cas, l’expression e n’est autre qu’une constante numérique n, la t-valeur sur-instrumentée tuoi ne contient que des dépendances vides et la valeur simple sur-instrumentée n. L’instanciation de tuoi est donc la valeur n et il suffit d’appliquer la règle d’inférence inj-num de la sémantique avec injection pour conclure. 1133.4. SÉMANTIQUE SUR-INSTRUMENTÉE cas oi-abstr À partir d’un jugement de la sémantique sur-instrumentée obtenu par la règle oi-abstr, d’une injection (l, vl) donnée, et de la valeur v obtenue par instanciation de la valeur sur-instrumentée pour l’injection (l, vl), on veut déduire le jugement correspondant pour la sémantique avec injection. Voici les trois hypothèses à notre disposition : oi-abstr tΓ oi ⊢ oi λx.e →→ [ ∅ | [ ∅ | < λx.e, ↑ oi toi(tΓ oi) > ] ] ∃Γ.Γ =↓ l:vl(tΓ oi) v =↓ l:vl( [ ∅ | [ ∅ | < λx.e, ↑ oi toi(tΓ oi) > ] ]) Puisque tΓ oi est instanciable pour l’injection (l, vl), alors on a : ↓ l:vl(↑ oi toi(tΓ oi)) =↓ l:vl(tΓ oi) En simplifiant la dernière hypothèse, on obtient : v =< λx.e, ↓ l:vl(↑ oi toi(tΓ oi)) >=< λx.e, ↓ l:vl(tΓ oi) > On peut alors conclure en appliquant la règle d’inférence suivante : inj-abstr tΓ oi ⊢l:vl λx.e →→< λx.e, ↓ l:vl(tΓ oi) > cas oi-apply À partir d’un jugement de la sémantique sur-instrumentée obtenu par la règle oi-apply, d’une injection (l, vl) donnée, de la valeur v obtenue par instanciation de la valeur sur-instrumentée pour l’injection (l, vl) et de trois hypothèses d’induction correspondant aux trois jugements de la sémantique sur-instrumentée présents dans les prémisses de la règle oi-apply, on veut déduire le jugement correspondant pour la sémantique avec injection. Voici les six hypothèses à notre disposition : oi-apply tΓ oi ⊢ oi e1 →→ [ tdoi 1 | [ d oi 1 | < λx.e, Γ oi 1 > ] ] tΓ oi ⊢ oi e2 →→ tuoi 2 tuoi 2 = [ tdoi 2 | u oi 2 ] (x, tuoi 2 )⊕ ↑toi oi (Γoi 1 ) ⊢ oi e →→ [ tdoi | [ d oi | v oi ] ] deps_spec_apply(tuoi 2 , doi 1 ) = (td′oi, d′oi) tΓ oi ⊢ oi e1 e2 →→ [ tdoi 1 ∪ tdoi 2 ∪ tdoi ∪ td′oi | [ d ′oi ∪ d oi | v oi ] ] 1143.4. SÉMANTIQUE SUR-INSTRUMENTÉE ∃Γ.Γ =↓ l:vl(tΓ oi) (HtΓ oi inst) v =↓ l:vl( [ tdoi 1 ∪ tdoi 2 ∪ tdoi ∪ td′oi | [ d ′oi ∪ d oi | v oi ] ]) (Htuoi inst) ∃Γ.Γ =↓ l:vl(tΓ oi) ⇒ ∀v.v =↓ l:vl( [ tdoi 1 | [ d oi 1 | < λx.e, Γ oi 1 > ] ]) ⇒ tΓ oi ⊢l:vl e1 →→ v (IH1) ∃Γ.Γ =↓ l:vl(tΓ oi) ⇒ ∀v.v =↓ l:vl(tuoi 2 ) ⇒ tΓ oi ⊢l:vl e2 →→ v (IH2) ∃Γ.Γ =↓ l:vl((x, tuoi 2 )⊕ ↑toi oi (Γoi 1 )) ⇒ ∀v.v =↓ l:vl( [ tdoi | [ d oi | v oi ] ]) ⇒ (x, tuoi 2 )⊕ ↑toi oi (Γoi 1 ) ⊢l:vl e →→ v (IH) Nous commençons par utiliser les hypothèses d’induction pour obtenir des jugements d’évaluation avec injection pour e1, pour e2 et pour le corps de la fonction appliquée. Nous pourrons ensuite appliquer la règle inj-apply pour conclure. Le corps de la fonction appliquée n’est pas le même selon que le label l sur lequel on fait l’injection appartient à d oi 1 ou non. En effet, si l ̸∈ d oi 1 alors la valeur de e1 est bien une fermeture dont le corps est l’expression e. Dans le cas contraire, si l ∈ d oi 1 alors la valeur de e1 est spécifiée par la v-fonction d’impact associée à l dans d oi 1 . Nous allons donc séparer la preuve en deux parties pour prouver ces deux cas séparément. Traitons tout d’abord le cas où l ̸∈ d oi 1 . Nous savons d’une part que l’environnement tΓ oi est instanciable, c’est exactement l’hypothèse HtΓ oi inst . D’autre part, l’hypothèse Htuoi inst nous apprend que la t-valeur sur-instrumentée ( [ tdoi 1 | [ d oi 1 | < λx.e, Γ oi 1 > ] ]) est instanciable. En effet, Htuoi inst implique atifl:vl (tdoi 1 ∪ tdoi 2 ∪ tdoi ∪ td′oi) = f alse ce qui implique atifl:vl (tdoi 1 ) = f alse. Nous pouvons donc appliquer l’hypothèse d’induction IH1 : ↓ l:vl( [ tdoi 1 | [ d oi 1 | < λx.e, Γ oi 1 > ] ]) =< λx.e, ↓ l:vl(Γoi 1 ) > 1153.4. SÉMANTIQUE SUR-INSTRUMENTÉE tΓ oi ⊢l:vl e1 →→< λx.e, ↓ l:vl(Γoi 1 ) > Pour obtenir un jugement d’évaluation avec injection pour e2, nous procédons de la même manière que pour e1. L’instanciabilité de tΓ oi est fournie par HtΓ oi inst . En ce qui concerne l’instanciation de tuoi 2 , on déduit atifl:vl (tdoi 2 ) = f alse à partir de la propriété atifl:vl (tdoi 1 ∪ tdoi 2 ∪ tdoi ∪ td′oi) = f alse qui a déjà été montrée. Puisque l’instanciabilité d’une t-valeur sur-instrumentée dépend uniquement de ses t-dépendances sur-instrumentées et de l’injection considérée (une v-valeur sur-instrumentée est toujours instanciable), tuoi 2 est instanciable en une certaine valeur v2. ↓ l:vl( [ tdoi 2 | u oi 2 ]) =↓ l:vl(u oi 2 ) = v2 tΓ oi ⊢l:vl e2 →→ v2 Pour obtenir un jugement d’évaluation avec injection pour e, nous procédons une troisième fois de la même manière. Il faut prouver l’instanciabilité de (x, tuoi 2 )⊕ ↑toi oi (Γoi 1 ). La t-valeur sur-instrumentée tuoi 2 est instanciable, comme on l’a vu plus haut. L’environnement ↑ toi oi (Γoi 1 ) est instanciable car Γ oi 1 est instanciable et la fonction ↑ toi oi (•) n’ajoute que des annotations vides. On a donc : ↓ l:vl((x, tuoi 2 )⊕ ↑toi oi (Γoi 1 )) = (x, v2)⊕ ↓l:vl(Γoi 1 ) Nous prouvons que [ tdoi | [ d oi | v oi ] ] s’instancie en v, en réduisant l’hypothèse Htuoi inst à l’aide du fait que atifl:vl (tdoi 1 ∪ tdoi 2 ∪ tdoi ∪ td′oi) = f alse et de l’hypothèse l ̸∈ d oi 1 : v =↓ l:vl( [ tdoi 1 ∪ tdoi 2 ∪ tdoi ∪ td′oi | [ d ′oi ∪ d oi | v oi ] ]) =↓ l:vl( [ d ′oi ∪ d oi | v oi ]) =↓ l:vl( [ d oi | v oi ]) =↓ l:vl( [ tdoi | [ d oi | v oi ] ]) Cette dernière égalité étant justifiée car nous déduisons atifl:vl (tdoi) = f alse de la propriété prouvée précédemment atifl:vl (tdoi 1 ∪ tdoi 2 ∪ tdoi ∪ td′oi) = f alse. On obtient ainsi le jugement de la sémantique avec injection en appliquant l’hypothèse d’induction IH : (x, tuoi 2 )⊕ ↑toi oi (Γoi 1 ) ⊢l:vl e →→ v 1163.4. SÉMANTIQUE SUR-INSTRUMENTÉE Avant de pouvoir appliquer la règle d’inférence de l’application, il nous faut appliquer la propriété suivante notée P inj inst (dont la preuve est fournie en Coq). Cette propriété énonce que si, pour un programme e, la sémantique avec injection dans un t-environnement surinstrumenté tΓ oi termine sur une valeur v alors elle termine sur la même valeur v dans l’environnement ↑ toi(↓ l:vl(Γoi)). Cette propriété est très proche du théorème de correction de la sémantique avec injection dans un t-environnement sur-instrumenté. ∀(tΓ oi, l, vl , e, v, Γ), tΓ oi ⊢l:vl e →→ v ⇒ Γ =↓ l:vl(tΓ oi) ⇒↑toi(Γ) ⊢l:vl e →→ v (P inj inst) On obtient alors : ↑ toi(↓ l:vl((x, tuoi 2 )⊕ ↑toi oi (Γoi 1 ))) ⊢l:vl e →→ v (x, ↑ toi(↓ l:vl(tuoi 2 )))⊕ ↑toi(↓ l:vl(↑ toi oi (Γoi 1 ))) ⊢l:vl e →→ v (x, ↑ toi(v2))⊕ ↑toi(↓ l:vl(Γoi 1 )) ⊢l:vl e →→ v Les trois jugements d’évaluation avec injection ainsi obtenus pour e1, e2 et e nous servent alors de prémisses pour appliquer la règle de la sémantique avec injection injapply qui nous permet de conclure : inj-apply tΓ oi ⊢l:vl e1 →→< λx.e, ↓ l:vl(Γoi 1 ) > tΓ oi ⊢l:vl e2 →→ v2 (x, ↑ toi(v2))⊕ ↑toi(↓ l:vl(Γoi 1 )) ⊢l:vl e →→ v tΓ oi ⊢l:vl e1 e2 →→ v Supposons maintenant que l ∈ d oi 1 . On prouve ce cas-là par induction sur la structure de la liste d oi 1 . On élimine le premier cas, où d oi 1 est vide, puisque d oi 1 doit contenir au moins l. On suppose donc que d oi 1 est de la forme (l ′ , f1); d oi 1,tl pour une certaine v-fonction d’impact f1 et un certain v-ensemble de dépendances d oi 1,tl. Par la définition de deps_spec_apply, on déduit qu’il existe une tfonction d’impact tf′ et un t-ensemble de dépendances td′oi tl tels que td′oi = (l ′ , tf′ );td′oi tl 1173.4. SÉMANTIQUE SUR-INSTRUMENTÉE et qu’il existe une v-fonction d’impact f ′ et un v-ensemble de dépendances d ′oi tl tels que d ′oi = (l ′ , f′ ); d ′oi tl . On a alors les propriétés suivantes ainsi que l’hypothèse d’induction IHd1 : deps_spec_apply(tuoi 2 , doi 1,tl) = (td′oi tl , d′oi tl ) deps_spec_apply_fun(tuoi 2 , l′ , f1) = (tf′ , f′ ) ∀v.v =↓ l:vl( [ tdoi 1 ∪ tdoi 2 ∪ tdoi ∪ td′oi tl | [ d ′oi tl ∪ d oi | v oi ] ]) ⇒ tΓ oi ⊢l:vl e1 e2 →→ v (IHd1 ) On distingue alors deux cas, l = l ′ ou l ̸= l ′ . Commençons par supposer l = l ′ . On a forcément la propriété tf′ (vl) = f alse. Si ce n’était pas le cas, la t-valeur surinstrumentée [ tdoi 1 ∪ tdoi 2 ∪ tdoi ∪ td′oi | [ d ′oi ∪ d oi | v oi ] ] ne serait pas instanciable, ce qui contredirait l’hypothèse Htuoi inst. Puisque tf′ (vl) = f alse, il y a uniquement deux cas possibles pour la valeur de f1(vl) (cf. définition de deps_spec_apply_fun, section 3.4.1.2). • f1(vl) est une fermeture < λx′ .e′ , Γ1 > Dans ce cas, il existe deux valeurs v2 et v ′ avec les propriétés suivantes : ↓ l:vl(tuoi 2 ) = v2 (x ′ , ↑ toi(v2))⊕ ↑toi(Γ1) ⊢l:vl e ′ →→ v ′ f ′ (vl) = v ′ De plus, on prouve que v ′ = v en réduisant l’égalité de l’hypothèse Htuoi inst. En utilisant les hypothèses d’induction IH1 et IH2, on obtient les jugements d’évaluation avec injection suivants pour e1 et e2 : tΓ oi ⊢l:vl e1 →→< λx′ .e′ , Γ1 > tΓ oi ⊢l:vl e2 →→ v2 Il suffit donc d’appliquer la règle d’inférence inj-apply pour conclure : inj-apply tΓ oi ⊢l:vl e1 →→< λx′ .e′ , Γ1 > tΓ oi ⊢l:vl e2 →→ v2 (x ′ , ↑ toi(v2))⊕ ↑toi(Γ1) ⊢l:vl e ′ →→ v tΓ oi ⊢l:vl e1 e2 →→ v 1183.4. SÉMANTIQUE SUR-INSTRUMENTÉE • f1(vl) est une fermeture récursive < recf ′ .x′ .e′ , Γ1 > Dans ce cas, il existe deux valeurs v2 et v ′ avec les propriétés suivantes : ↓ l:vl(tuoi 2 ) = v2 (f ′ , ↑ toi(< recf ′ .x′ .e′ , Γ1 >)) ⊕ (x, ↑ toi(v2))⊕ ↑toi(Γ1) ⊢l:vl e ′ →→ v ′ f ′ (vl) = v ′ Comme ci-dessus, on utilise l’hypothèse Htuoi inst pour prouver que v ′ = v et on déduit les jugements d’évaluation avec injection pour e1 et e2 à l’aide des hypothèses d’induction IH1 et IH2. On applique ensuite la règle inj-apply-rec pour conclure : inj-apply-rec tΓ oi ⊢l:vl e1 →→ v1 v1 =< recf ′ .x′ .e′ , Γ1 > tΓ oi ⊢l:vl e2 →→ v2 (f, ↑ toi(v1)) ⊕ (x, ↑ toi(v2))⊕ ↑toi(Γ1) ⊢l:vl e ′ →→ v tΓ oi ⊢l:vl e1 e2 →→ v Maintenant supposons l ̸= l ′ . Puisque l ̸= l ′ , on a l’égalité suivante : v = ↓ l:vl( [ tdoi 1 ∪ tdoi 2 ∪ tdoi ∪ td′oi | [ d ′oi ∪ d oi | v oi ] ]) = ↓ l:vl( [ tdoi 1 ∪ tdoi 2 ∪ tdoi ∪ td′oi tl | [ d ′oi tl ∪ d oi | v oi ] ]) (Htuoi inst) On peut alors appliquer l’hypothèse d’induction IHd1 qui nous permet de conclure ce dernier cas : tΓ oi ⊢l:vl e1 e2 →→ v 1193.5. SÉMANTIQUE INSTRUMENTÉE 3.5 Sémantique instrumentée Nous arrivons maintenant à la présentation de la sémantique instrumentée, qui constitue ce que nous appelons notre analyse dynamique. Le but de cette analyse est de pouvoir évaluer un programme de la même manière qu’avec la sémantique opérationnelle usuelle mais en gardant trace pour chaque sous-terme de la valeur produite des dépendances de ce sous-terme. On veut alors pouvoir garantir que si un label n’apparaît pas parmi les dépendances d’un programme, alors ce label n’a pas d’impact sur l’évaluation de ce programme. Pour prouver la correction de l’analyse dynamique par rapport à la notion d’impact présentée en section 2.6, nous prouverons tout d’abord une propriété de correction de la sémantique instrumentée vis-à-vis de la sémantique sur-instrumentée puis nous nous reposerons sur la correction des deux sémantiques intermédiaires présentées plus haut : la sémantique avec injection dans un t-environnement sur-instrumenté (cf. section 3.3) et la sémantique sur-instrumentée (cf. section 3.4). La sémantique instrumentée évalue une expression dans un t-environnement instrumenté pour retourner une t-valeur instrumentée. C’est une simplification de la sémantique sur-instrumentée. En effet, on peut remarquer dans la sémantique sur-instrumentée que le calcul de la présence d’un label dans un ensemble de v-dépendances (resp. de tdépendances) ne dépend pas des v-fonctions d’impact (resp. des t-fonctions d’impact) qui sont associées. On peut donc calculer les ensembles de labels sans leur associer de fonction d’impact. C’est justement ce que fait la sémantique instrumentée. On obtient ainsi une sémantique décidable sur les programmes qui terminent puisque le caractère indécidable de la sémantique sur-instrumentée venait de la spécification des fonctions d’impact. La sémantique instrumentée constitue en elle-même l’analyse dynamique de dépendances que nous souhaitions définir, puisque l’analyse qui nous intéresse est justement le calcul des ensembles de labels. Sa définition ne nécessite aucunement une définition préalable de la sémantique sur-instrumentée ou bien de la sémantique avec injection. L’intérêt d’avoir défini la sémantique sur-instrumentée est uniquement de simplifier et de clarifier la preuve de correction de la sémantique instrumentée. 1203.5. SÉMANTIQUE INSTRUMENTÉE 3.5.1 Algèbre des valeurs instrumentées La sémantique instrumentée manipule des valeurs instrumentées. Ces valeurs peuvent être vues comme des valeurs abstraites par rapport aux valeurs sur-instrumentées. La fonction d’abstraction est tout simplement la fonction qui supprime toutes les fonctions d’impact. Ainsi, chaque valeur sur-instrumentée correspond à une valeur instrumentée unique et plusieurs valeurs sur-instrumentées peuvent correspondre à la même valeur instrumentée. Cette section présente la composition des valeurs instrumentées. 3.5.1.1 Valeurs Une t-valeur instrumentée (notée tui ) est composée d’un ensemble de t-dépendances tdi et d’une v-valeur instrumentée u i . tui := [ tdi | u i ] Valeur avec annotation de t-dépendance Une v-valeur instrumentée (notée u i ) est composée d’un ensemble de v-dépendances d i et d’une valeur simple instrumentée v i . u i := [ d i | v i ] Valeur avec annotation de v-dépendance Enfin, une valeur simple instrumentée (notée v i ) est une valeur simple dont les soustermes sont des v-valeurs instrumentées u i . On note V i l’ensemble des valeurs simples instrumentées. v i := n | b | C | D(u i ) | (u i 1 , ui 2 ) Constructeurs de données < λx.e, Γ i > Fermeture < recf.x.e, Γ i > Fermeture récursive 3.5.1.2 Ensembles de dépendances Dans les t-valeurs instrumentées (resp. les v-valeurs instrumentées), les ensembles de t-dépendances (resp. de v-dépendances) sont simplement des ensembles de labels. tdi := {l1; . . . ; ln} t-dépendances d i := {l1; . . . ; lm} v-dépendances 1213.5. SÉMANTIQUE INSTRUMENTÉE 3.5.1.3 Environnements De même que pour la sémantique sur-instrumentée, on distingue 2 types d’environnements. Un t-environnement instrumenté permet de lier chaque identificateur à une t-valeur instrumentée. tΓ i := (x1, tui 1 ); . . . ; (xn, tui n ) t-environnement instrumenté Un v-environnement instrumenté permet de lier chaque identificateur à une v-valeur instrumentée. Γ i := (x1, ui 1 ); . . . ; (xn, ui n ) v-environnement instrumenté 3.5.2 Règles d’inférence Le jugement d’évaluation de la sémantique instrumentée prend la forme suivante : tΓ i ⊢ i e →→ tui où e est l’expression évaluée, tΓ i le t-environnement instrumenté dans lequel on effectue l’évaluation et tui la t-valeur instrumentée résultat de l’évaluation. Ce jugement est défini par les règles d’inférence présentée en figure 3.20. Les règles simples de la sémantique sur-instrumentée restent les mêmes dans la sémantique instrumentée, seule la signification de la concaténation de dépendances est différente puisqu’on concatène des listes de labels au lieu de concaténer des listes d’associations. En ce qui concerne les règles contenant des dépendances indirectes, la sémantique instrumentée n’effectue plus le calcul des fonctions d’impact mais se concente de calculer les ensembles de labels. Des explications détaillées de ces règles sont données ci-dessous. i-num La règle d’évaluation d’une constante entière est identique à celle de la sémantique sur-instrumentée. L’ensemble des t-dépendances instrumentées est vide, de même que l’ensemble des v-dépendances instrumentées et la valeur simple instrumentée est la constante entière. 1223.5. SÉMANTIQUE INSTRUMENTÉE i-num tΓ i ⊢ i n →→ [ ∅ | [ ∅ | n ] ] i-ident tui = tΓ i [x] tΓ i ⊢ i x →→ tui i-letin tΓ i ⊢ i e1 →→ tui 1 tui 1 = [ tdi 1 | u i 1 ] (x, tui 1 ) ⊕ tΓ i ⊢ i e2 →→ [ tdi 2 | u i 2 ] tΓ i ⊢ i let x = e1 in e2 →→ [ tdi 1 ∪ tdi 2 | u i 2 ] i-abstr tΓ i ⊢ i λx.e →→ [ ∅ | [ ∅ | < λx.e, ↑ i ti(tΓ i ) > ] ] i-abstr-rec tΓ i ⊢ i recf.x.e →→ [ ∅ | [ ∅ | < recf.x.e, ↑ i ti(tΓ i ) > ] ] i-apply tΓ i ⊢ i e1 →→ [ tdi 1 | [ d i 1 | < λx.e, Γ i 1 > ] ] tΓ i ⊢ i e2 →→ tui 2 tui 2 = [ tdi 2 | u i 2 ] (x, tui 2 )⊕ ↑ti i (Γi 1 ) ⊢ i e →→ [ tdi | [ d i | v i ] ] tΓ i ⊢ i e1 e2 →→ [ tdi 1 ∪ tdi 2 ∪ tdi ∪ d i 1 | [ d i 1 ∪ d i | v i ] ] i-apply-rec tΓ i ⊢ i e1 →→ tui 1 tui 1 = [ tdi 1 | [ d i 1 | < recf.x.e, Γ i 1 > ] ] tΓ i ⊢ i e2 →→ tui 2 tui 2 = [ tdi 2 | u i 2 ] (f, tui 1 ) ⊕ (x, tui 2 )⊕ ↑ti i (Γi 1 ) ⊢ i e →→ [ tdi | [ d i | v i ] ] tΓ i ⊢ i e1 e2 →→ [ tdi 1 ∪ tdi 2 ∪ tdi ∪ d i 1 | [ d i 1 ∪ d i | v i ] ] i-if-true tΓ i ⊢ i e →→ [ tdi | [ d i | true ] ] tΓ i ⊢ i e1 →→ [ tdi 1 | [ d i 1 | v i 1 ] ] tΓ i ⊢ i if e then e1 else e2 →→ [ d i ∪ tdi ∪ tdi 1 | [ d i ∪ d i 1 | v i 1 ] ] i-if-false tΓ i ⊢ i e →→ [ tdi | [ d i | false ] ] tΓ i ⊢ i e2 →→ [ tdi 2 | [ d i 2 | v i 2 ] ] tΓ i ⊢ i if e then e1 else e2 →→ [ d i ∪ tdi ∪ tdi 2 | [ d i ∪ d i 2 | v i 2 ] ] i-match tΓ i ⊢ i e →→ tui tui = [ tdi | [ d i | v i ] ] tui , p ⊢ i p tΓ i p tΓ i p ⊕ tΓ i ⊢ i e1 →→ [ tdi 1 | [ d i 1 | v i 1 ] ] tΓ i ⊢ i match e with p → e1 | x → e2 →→ [ d i ∪ tdi ∪ tdi 1 | [ d i ∪ d i 1 | v i 1 ] ] i-match-var tΓ i ⊢ i e →→ tui tui = [ tdi | [ d i | v i ] ] tui , p ⊢ i p ⊥ (x, tui ) ⊕ tΓ i ⊢ i e2 →→ [ tdi 2 | [ d i 2 | v i 2 ] ] tΓ i ⊢ i match e with p → e1 | x → e2 →→ [ d i ∪ tdi ∪ tdi 2 | [ d i ∪ d i 2 | v i 2 ] ] i-constr-0 tΓ i ⊢ i C →→ [ ∅ | [ ∅ | C ] ] i-constr-1 tΓ i ⊢ i e →→ [ tdi | u i ] tΓ i ⊢ i D(e) →→ [ tdi | [ ∅ | D(u i ) ] ] i-couple tΓ i ⊢ i e1 →→ [ tdi 1 | u i 1 ] tΓ i ⊢ i e2 →→ [ tdi 2 | u i 2 ] tΓ i ⊢ i (e1, e2) →→ [ tdi 1 ∪ tdi 2 | [ ∅ | (u i 1 , ui 2 ) ] ] i-annot tΓ i ⊢ i e →→ [ tdi | [ d i | v i ] ] tΓ i ⊢ i l : e →→ [ tdi | [ l; d i | v i ] ] Figure 3.20 – Sémantique instrumentée im-constr-0 [ tdi | [ d i | C ] ], C ⊢ i p {} im-constr-1 [ tdi | [ d i | D(u i ) ] ], D(x) ⊢ i p {(x, [ ∅ | u i ])} im-couple [ tdi | [ d i | (u i 1 , ui 2 ) ] ], (x1, x2) ⊢ i p {(x1, [ ∅ | u i 1 ]); (x2, [ ∅ | u i 2 ])} im-constr-0-not p ̸= C [ tdi | [ d i | C ] ], p ⊢ i p ⊥ im-constr-1-not p ̸= D(_) [ tdi | [ d i | D(u i ) ] ], p ⊢ i p ⊥ im-couple-not p ̸= (_, _) [ tdi | [ d i | (u i 1 , ui 2 ) ] ], p ⊢ i p ⊥ Figure 3.21 – Sémantique instrumentée : règles de filtrage 1233.5. SÉMANTIQUE INSTRUMENTÉE ↑ i ti( [ tdi | u i ]) = u i ↑ i ti({}) = {} ↑i ti((x, tui ) ⊕ tΓ i ) = (x, ↑ i ti(tui )) ⊕ ↑i ti(tΓ i ) Figure 3.22 – Valeurs instrumentées : suppression des t-dépendances i-ident Cette règle est identique à celle de la sémantique sur-instrumentée. L’évaluation d’un identificateur se fait de manière habituelle, en allant chercher la valeur correspondante dans l’environnement. Les dépendances de la t-valeur instrumentée retournée sont celles qui ont été enregistrées dans l’environnement pour cet identificateur. i-abstr De même que pour la sémantique sur-instrumentée, les t-dépendances et les v-dépendances sont vides. La valeur simple instrumentée est une fermeture contenant l’environnement d’évaluation préalablement nettoyé de ses t-dépendances à l’aide de la fonction ↑ i ti(•) définie en figure 3.22. i-abstr-rec L’évaluation d’une abstraction récursive suit exactemement le même modèle que l’évaluation d’une abstraction non-récursive. i-apply La règle de l’application de la sémantique sur-instrumentée fait partie des règles avec dépendances indirectes. La règle correspondante de la sémantique instrumentée pré- sentée ici lui ressemble à une différence près : les dépendances indirectes ne nécessitent pas de spécification complexe. En effet, dans la sémantique sur-instrumentée, la fonction de spécification des dépendances indirectes deps_spec_apply permettait de spécifier les t-dépendances indirectes td′oi ainsi que les v-dépendances indirectes d ′oi. Cette spécification précisait que la liste des labels présents dans td′oi (de même pour d ′oi) était la même que la liste des labels présents dans d oi 1 (l’ensemble v-dépendances sur-instrumentée de e1) et donnait une spécification pour chaque fonction d’impact associée à une dépendance indirecte. Dans la sémantique instrumentée, nous ne considérons plus que les listes de labels et ignorons les fonctions d’impact. Ainsi, nous pouvons remplacer td′oi et d ′oi par la liste de labels d i 1 . Le caractère 1243.5. SÉMANTIQUE INSTRUMENTÉE ↑ ti i (u i ) = [ ∅ | u i ] ↑ ti i ({}) = {} ↑ti i ((x, ui ) ⊕ Γ i ) = (x, ↑ ti i (u i )) ⊕ ↑ti i (Γi ) Figure 3.23 – Valeurs instrumentées : ajout de t-dépendances indécidable de cette règle disparaît ainsi, avec la disparition de la fonction de spécification des dépendances indirectes. Comme dans la sémantique sur-instrumentée, nous utilisons une fonction ajoutant des t-dépendances vides à l’environnement encapsulé pour évaluer le corps de la fermeture. Cette fonction, notée ↑ ti i (•) est définie en figure 3.23. i-rec-apply De la même manière que pour la règle de l’application d’une fonction non récursive, cette règle reprend la règle de la sémantique sur-instrumentée en remplaçant les dépendances indirectes par la liste des v-dépendances de la sous-expression e1. i-letin La règle d’évaluation d’une liaison est identique à la règle correspondante dans la sémantique sur-instrumentée. Elle évalue e1 puis ajoute une liaison à l’environnement pour évaluer e2. Le résultat est une t-valeur instrumentée constituée de la concaténation des t-dépendances des sous-expressions évaluées et de la v-valeur instrumentée de e2. i-if-true et i-if-false La règle d’évaluation d’une expression conditionnelle contient des dépendances indirectes. Dans la sémantique sur-instrumentée, cette règle faisait appel à la fonction de spécification des dépendances indirectes deps_spec_if pour spécifier la liste des labels des dépendances indirectes ainsi que leurs fonctions d’impact. Cette fonction n’est plus nécessaire ici puisque la sémantique instrumentée ignore les fonctions d’impact. Nous reprennons donc la règle de la sémantique sur-instrumentée en remplaçant les tdépendances indirectes et les v-dépendances indirectes par d i , la liste des v-dépendances de la sous-expression testée. 1253.5. SÉMANTIQUE INSTRUMENTÉE i-match et i-match-var Comme pour les règles d’évaluation de l’application et de l’expression conditionnelle, la fonction de spécification des dépendances indirectes n’est plus nécessaire. Les dépendances indirectes, qui ne sont plus que des listes de labels, sont données immédiatement par la liste des v-dépendances de la sous-expression filtrée. i-constr-0, i-constr-1 et i-couple Ces trois règles reprennent à l’identique les règles de la sémantique sur-instrumentée. Le fait que les dépendances ne contiennent plus de fonction d’impact n’a aucune influence sur la logique de ces règles. Ceci est dû au fait qu’aucune dépendance n’est introduite, on ne fait que regrouper les t-dépendances des éventuelles sous-expressions en les concaténant et on construit la v-valeur instrumentée à l’aide des v-valeurs instrumentées des sous-expressions. La concaténation des dépendances a une signification légèrement différente puisqu’elle concatène des listes de labels au lieu de concaténer des listes associatives. i-annot La règle concernant une expression annotée est elle aussi similaire à son homologue dans la sémantique sur-instrumentée. Elle ajoute simplement le label l aux dé- pendances de la valeur de la sous-expression. La seule différence avec la sémantique surinstrumentée est qu’elle n’ajoute pas de fonction d’impact. Règles de filtrage De même que pour la sémantique sur-instrumentée, les règles de filtrage de la sémantique instrumentée se divisent en deux groupes de trois règles. Le premier groupe définit un jugement de la forme tui , p ⊢ i p Γ i qui indique qu’une valeur instrumentée tui correspond au motif p et retourne le v-environnement instrumenté Γ i . Le second groupe de règles définit un second jugement qui prend la forme suivante : tui , p ⊢ i p ⊥. Ce jugement signifie que la t-valeur instrumentée tui ne correspond pas au motif de filtrage p. Toutes ces règles d’inférence sont identiques à celle de la sémantique sur-instrumentée, ce qui se comprend aisément puisque la filtrage ne dépend pas des fonctions d’impact. 1263.5. SÉMANTIQUE INSTRUMENTÉE 3.5.3 Correction 3.5.3.1 Énoncé informel du théorème La sémantique instrumentée est une simplification de la sémantique sur-instrumentée. Elle permet de définir une analyse dynamique calculable pour tout programme dont l’évaluation de référence termine. Pour obtenir une sémantique calculable, nous avons retiré les fonctions d’impact de toutes les valeurs. En effet, dans les règles d’inférence avec dépendances indirectes, les fonctions d’impact contenues dans les dépendances indirectes sont spécifiées par rapport aux fonctions d’impact des prémisses. Ces spécifications ne permettent pas de construire les fonctions d’impact des dépendances indirectes et il n’est pas possible de définir un procédé calculatoire permettant de les construire puisque le problème de l’arrêt est indécidable (cf. section 3.4.1.2). On remarque qu’il est possible de supprimer les fonctions d’impact de toutes les valeurs car dans les règles d’inférence de la sémantique sur-instrumentée, les fonctions d’impact des prémisses ne servent qu’à définir d’autres fonctions d’impact et ne sont pas du tout utilisées pour le calcul des autres parties de la valeur (la valeur de référence et les listes de labels). Pour assurer la correction de la sémantique instrumentée il nous faut donc montrer que la seule différence entre la valeur d’un programme par la sémantique sur-instrumentée et sa valeur par la sémantique instrumentée est l’absence de fonction d’impact dans cette dernière. 3.5.3.2 Illustration par l’exemple Pour illustrer le fonctionnement de la sémantique instrumentée ainsi que la nécessité du théorème de correction que nous venons d’énoncer informellement, reprenons les deux exemples présentés précédemment. Exemple 1 : évaluation d’un couple Notons e1 le programme suivant : (3, l :7) 1273.5. SÉMANTIQUE INSTRUMENTÉE i-couple i-num tΓ i ⊢ i 3 →→ [ ∅ | [ ∅ | 3 ] ] i-annot i-num tΓ i ⊢ oi 7 →→ [ ∅ | [ ∅ | 7 ] ] tΓ i ⊢ i l : 7 →→ [ ∅ | [ l | 7 ] ] tΓ i ⊢ i (3, l : 7) →→ [ tdi 1 ∪ tdi 2 | [ ∅ | ( [ ∅ | 3 ], [ l | 7 ]) ] ] Figure 3.24 – Exemple 1 : arbre de dérivation du jugement d’évaluation instrumentée Nous avions présenté son jugement d’évaluation sur-instrumentée dans le t-environnement sur-instrumenté vide : ∅ ⊢oi e1 →→ tuoi avec tuoi = [ ∅ | [ ∅ | ( [ ∅ | 3 ], [ (l, id) | 7 ]) ] ] Intéressons-nous maintenant au jugement d’évaluation instrumenté dans le t-environnent instrumenté vide. L’arbre d’évaluation correspondant est donné en figure 3.24 et voici le jugement obtenu : ∅ ⊢i e1 →→ tui avec tui = [ ∅ | [ ∅ | ( [ ∅ | 3 ], [ l | 7 ]) ] ] On remarque la disparition de la fonction d’impact associée au label l dans l’ensemble des v-dépendances de la seconde composante du couple. Outre ce changement, toutes les autres parties de la valeur instrumentée sont identiques à celles de la valeur sur-instrumentée car les autres ensembles de dépendances sont vides. Pour l’évaluation de e1, on obtient donc la même t-valeur instrumentée, que l’on évalue le programme directement par la sémantique instrumentée ou bien en évaluant le programme par la sémantique sur-instrumentée puis en retirant toutes les fonctions d’impact. Exemple 2 : liaison d’une fonction Notons e2 le programme suivant : l e t f o = match o with | Some ( x ) → x + l1 : 8 | none → d i n 1283.5. SÉMANTIQUE INSTRUMENTÉE ( f ( Some 18 ) , l2 : 17 ) Nous allons évaluer ce programme par la sémantique sur-instrumentée dans l’environnement tΓ oi 2 et par la sémantique instrumentée dans l’environnement tΓ i 2 =↑ ti toi(tΓ oi 2 ). On pose : tΓ oi 2 = (d, [ tdoi d | [ d oi d | 26 ] ]) avec tdoi d = (l3, tfd) et d oi d = (l4, fd) L’arbre de dérivation du jugement d’évaluation sur-instrumentée de e2 a été donné dans les figures 3.12 et 3.13. On rappelle ici le jugement obtenu : tΓ oi 2 ⊢ oi e2 →→ [ ∅ | [ ∅ | ( [ (l1, f1) | 26 ], [ (l2, id) | 17 ]) ] ] avec f1 = fun x ⇒ 18 + x En ce qui concerne l’évaluation de e2 par la sémantique instrumentée, nous donnons l’arbre de dérivation dans les figures 3.25 et 3.26. Voici le jugement d’évaluation de e2 par la sémantique instrumentée : ↑ ti toi(tΓ oi 2 ) ⊢ i e2 →→ [ ∅ | [ ∅ | ( [ l1 | 26 ], [ l2 | 17 ]) ] ] Comme dans l’exemple précédent, on constate que la propriété de correction de la sémantique instrumentée est également vraie pour l’évaluation de e2. En effet, on obtient exactement la même valeur en utilisant la sémantique instrumentée ou la sémantique surinstrumentée. En évaluant e2 par la sémantique sur-instrumentée puis en supprimant toutes les fonctions d’impact dans la t-valeur sur-instrumentée, on obtient la t-valeur instrumentée [ ∅ | [ ∅ | ( [ l1 | 26 ], [ l2 | 17 ]) ] ]. Aussi, en supprimant dans un premier temps toutes les fonctions d’impact dans l’environnement d’évaluation tΓ oi 2 puis en utilisant la sémantique instrumentée pour évaluer e2 on obtient la même t-valeur instrumentée [ ∅ | [ ∅ | ( [ l1 | 26 ], [ l2 | 17 ]) ] ]. 1293.5. SÉMANTIQUE INSTRUMENTÉE i-letin i-abstr tΓ i 2 ⊢ i λo.match o with... →→ [ ∅ | [ ∅ | < λo.match o with..., ↑ i ti(tΓ i 2 ) > ] ] 1 i-couple i-apply i-ident [ ∅ | [ ∅ | < λo.match o with..., ↑ i ti(tΓ i 2 ) > ] ] = ((f, ...) ⊕ tΓ i 2 )[f] (f, ...) ⊕ tΓ i 2 ⊢ i f →→ [ ∅ | [ ∅ | < λo.match o with..., ↑ i ti(tΓ i 2 ) > ] ] 3 i-constr-1 i-num (f, ...) ⊕ tΓ i 2 ⊢ i 18 →→ [ ∅ | [ ∅ | 18 ] ] 4 (f, ...) ⊕ tΓ i 2 ⊢ i Some 18 →→ [ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ] 3 i-match . . . (figure 3.26) . . . (o, ...)⊕ ↑ti i (↑ i ti(tΓ i 2 )) ⊢ i match o with Some x → x + l1 : 8 | none → d →→ [ ∅ | [ l1 | 26 ] ] 3 (f, ...) ⊕ tΓ i 2 ⊢ i f(Some 18) →→ [ ∅ | [ l1 | 26 ] ] 2 i-annot i-num (f, ...) ⊕ tΓ i 2 ⊢ i 17 →→ [ ∅ | [ ∅ | 17 ] ] 3 (f, ...) ⊕ tΓ i 2 ⊢ i l2 : 17 →→ [ ∅ | [ l2 | 17 ] ] 2 (f, ...) ⊕ tΓ i 2 ⊢ i (f(Some 18), l2 : 17) →→ [ ∅ | [ ∅ | ( [ l1 | 26 ], [ l2 | 17 ]) ] ] 1 tΓ i 2 ⊢ i e2 →→ [ ∅ | [ ∅ | ( [ l1 | 26 ], [ l2 | 17 ]) ] ] 0 Figure 3.25 – Exemple 2 : arbre de dérivation du jugement d’évaluation instrumentée i-match i-ident [ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ] = ((o, ...)⊕ ↑ti i (↑ i ti(tΓ i 2 )))[o] (o, ...)⊕ ↑ti i (↑ i ti(tΓ i 2 )) ⊢ i o →→ [ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ] 4 im-constr-1 [ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ], Some x ⊢ i p (x, [ ∅ | 18 ]) 4 i-plus . . . (x, [ ∅ | 18 ]) ⊕ (o, ...)⊕ ↑ti i (↑ i ti(tΓ i 2 )) ⊢ i x + l1 : 8 →→ [ ∅ | [ l1 | 26 ] ] 4 (o, ...)⊕ ↑ti i (↑ i ti(tΓ i 2 )) ⊢ i match o with Some x → x + l1 : 8 | none → d →→ [ ∅ | [ l1 | 26 ] ] 3 Figure 3.26 – Exemple 2 : sous-arbre de dérivation instrumentée du filtrage 1303.5. SÉMANTIQUE INSTRUMENTÉE 3.5.3.3 Énoncé formel du théorème On veut prouver que la sémantique instrumentée donne les mêmes résultats que la sé- mantique sur-instrumentée hormis les fonctions d’impact. Si un programme a une valeur instrumentée, alors on peut être sûr qu’il a aussi une valeur sur-instrumentée et qu’en supprimant les fonctions d’impact de cette dernière, on obtient la même valeur instrumentée. On commence par définir formellement la fonction qui supprime toutes les fonctions d’impact d’une valeur sur-instrumentée pour obtenir la valeur instrumentée correspondante. Cette fonction est notée ↑ ti toi(•). On dit que c’est une abstraction des valeurs surinstrumentées en valeurs instrumentées. Abstraction d’une t-valeur sur-instrumentée : ↑ ti toi( [ tdoi | u oi ]) := [ ↑ ti toi(tdoi) | ↑i oi(u oi) ] Abstraction d’une v-valeur sur-instrumentée : ↑ i oi( [ d oi | v oi ]) := [ ↑ i oi(d oi) | ↑i oi(v oi) ] Abstraction d’un ensemble de t-dépendances sur-instrumenté : ↑ ti toi(∅) := ∅ ↑ ti toi((l, tf oi);tdoi) := l; ↑ ti toi(tdoi) Abstraction d’un ensemble de v-dépendances sur-instrumenté : ↑ i oi(∅) := ∅ ↑ i oi((l, f oi); d oi) := l; ↑ i oi(d oi) Abstraction d’une valeur simple sur-instrumentée : ↑ i oi(n) := n ↑ i oi(b) := b ↑ i oi(C) := C ↑ i oi(D(u oi)) := D(↑ i oi(u oi)) ↑ i oi((u oi 1 , uoi 2 )) := (↑ i oi(u oi 1 ), ↑ i oi(u oi 2 )) ↑ i oi(< λx.e, Γ oi >) := < λx.e, ↑ i oi(Γoi) > ↑ i oi(< recf.x.e, Γ oi >) := < recf.x.e, ↑ i oi(Γoi) > Abstraction d’un t-environnement sur-instrumenté : ↑ ti toi(∅) := ∅ ↑ ti toi((x, tuoi) ⊕ tΓ oi) := (x, ↑ ti toi(tuoi))⊕ ↑ti toi(tΓ oi) 1313.5. SÉMANTIQUE INSTRUMENTÉE Abstraction d’un v-environnement sur-instrumenté : ↑ i oi(∅) := ∅ ↑ i oi((x, uoi) ⊕ Γ oi) := (x, ↑ i oi(u oi))⊕ ↑i oi(Γoi) Il nous faut également définir formellement la fonction de concrétisation. Cette fonction transforme toute valeur instrumentée en une valeur sur-instrumentée dont elle est l’image par la fonction d’abstraction. Pour cela, la fonction de concrétisation doit associer une fonction d’impact à tout label présent dans un ensemble de dépendances de la valeur instrumentée. Le choix de ces fonctions d’impact est complètement arbitraire. Cette fonction de concrétisation est notée ↑ toi ti (•). Notons tf oi dummy et f oi dummy une t-fonction d’impact et une v-fonction d’impact quelconques qui seront introduites lors de la concrétisation des ensembles de dépendances instrumentés. Concrétisation d’une t-valeur instrumentée : ↑ toi ti ( [ tdi | u i ]) := [ ↑ toi ti (tdi ) | ↑oi i (u i ) ] Concrétisation d’une v-valeur instrumentée : ↑ oi i ( [ d i | v i ]) := [ ↑ oi i (d i ) | ↑oi i (v i ) ] Concrétisation d’un ensemble de t-dépendances instrumenté : ↑ toi ti (∅) := ∅ ↑ toi ti (l;tdi ) := (l, tf oi dummy); ↑ toi ti (tdi ) Concrétisation d’un ensemble de v-dépendances instrumenté : ↑ oi i (∅) := ∅ ↑ oi i (l; d i ) := (l, f oi dummy); ↑ oi i (d i ) Concrétisation d’une valeur simple instrumentée : ↑ oi i (n) := n ↑ oi i (b) := b ↑ oi i (C) := C ↑ oi i (D(u i )) := D(↑ oi i (u i )) ↑ oi i ((u i 1 , ui 2 )) := (↑ oi i (u i 1 ), ↑ oi i (u i 2 )) ↑ oi i (< λx.e, Γ i >) := < λx.e, ↑ oi i (Γi ) > ↑ oi i (< recf.x.e, Γ i >) := < recf.x.e, ↑ oi i (Γi ) > 1323.5. SÉMANTIQUE INSTRUMENTÉE Concrétisation d’un t-environnement instrumenté : ↑ toi ti (∅) := ∅ ↑ toi ti ((x, tui ) ⊕ tΓ i ) := (x, ↑ toi ti (tui ))⊕ ↑toi ti (tΓ i ) Concrétisation d’un v-environnement instrumenté : ↑ oi i (∅) := ∅ ↑ oi i ((x, ui ) ⊕ Γ i ) := (x, ↑ oi i (u i ))⊕ ↑oi i (Γi ) Nous pouvons alors énoncer le thèorème de correction : Théorème 3.5.1 (Correction de la sémantique instrumentée). ∀(tΓ i , e, tui ).tΓ i ⊢ i e →→ tui ⇒ ∃(tuoi). ↑ toi ti (tΓ i ) ⊢ oi e →→ tuoi ∧ tui =↑ ti toi(tuoi) Le théorème de correction énonce que s’il existe un jugement pour la sémantique instrumentée évaluant un programme e dans un t-environnement instrumenté tΓ i et retournant une t-valeur instrumentée tui , alors il existe un jugement évaluant e dans le t-environnement sur-instrumenté obtenu en ajoutant des fonctions d’impact quelconques dans tΓ i et en supprimant les fonctions d’impact dans la t-valeur sur-instrumentée obtenue, on retrouve la t-valeur instrumentée tui . La propriété suivante est plus forte que le théorème de correction. Elle permet de s’affranchir de la fonction de concrétisation qui n’a que peu de signification puisqu’elle ne fait qu’introduire des fonctions d’impact quelconques dans les ensembles de dépendances. Il aurait été sans doute plus judicieux de prouver cette propriété à la place du théorème de correction exprimé ci-dessus. Elle exprime que pour tout t-environnement sur-instrumenté tΓ oi, s’il existe un jugement instrumenté pour e dans l’environnement obtenu en supprimant toutes les fonctions d’impact de tΓ oi et que ce jugement retourne une t-valeur instrumentée tui , alors il existe un jugement sur-instrumenté dans tΓ oi et en supprimant les fonctions d’impact dans la t-valeur sur-instrumentée obtenue, on retrouve la t-valeur instrumentée tui . Si on spécialise cette propriété en prenant tΓ oi =↑ toi ti (tΓ i ), on retrouve le théorème de correction exprimé ci-dessus qui est donc un cas particulier. La preuve de cette propriété pourra faire l’objet d’un travail futur. ∀(tΓ oi, e, tui ). ↑ ti toi(tΓ oi) ⊢ i e →→ tui ⇒ ∃(tuoi).tΓ oi ⊢ oi e →→ tuoi ∧ tui =↑ ti toi(tuoi) 1333.5. SÉMANTIQUE INSTRUMENTÉE 3.5.3.4 Preuve de correction La preuve est faite par induction sur le jugement de la sémantique instrumentée. Nous expliquons ici quelques cas pour permettre au lecteur de comprendre facilement la manière dont la preuve a été faite. La preuve complète est disponible sous forme de code source Coq. cas i-num Ce cas est trivial. Dans ce cas, l’expression e n’est autre qu’une constante numérique n, la t-valeur instrumentée tui ne contient que des dépendances vides et la valeur simple sur-instrumentée n. Il suffit d’appliquer la règle d’inférence oi-num de la sémantique sur-instrumentée pour conclure. cas i-ident Dans ce cas, l’expression e est un identificateur que nous noterons x. Cet identificateur est présent dans l’environnement tΓ i associé à la valeur tui . L’identificateur x est donc également présent dans l’environnement ↑ toi ti (tΓ i ) associé à la valeur ↑ toi ti (tui ). Il suffit donc d’appliquer la règle d’inférence oi-ident de la sémantique sur-instrumentée pour conclure : ↑ toi ti (tΓ i ) ⊢ oi x →→↑toi ti (tui ) ∧ tui =↑ ti toi(↑ toi ti (tui )) cas i-abstr Nous avons le jugement de la sémantique instrumentée suivant : tΓ i ⊢ i λx.e →→ [ ∅ | [ ∅ | < λx.e, ↑ i ti(tΓ i ) > ] ] Nous allons montrer que la t-valeur sur-instrumentée suivante convient : ↑ toi ti ( [ ∅ | [ ∅ | < λx.e, ↑ i ti(tΓ i ) > ] ]) qui est égale à [ ∅ | [ ∅ | < λx.e, ↑ oi i (↑ i ti(tΓ i )) > ] ] Il nous faut alors montrer la propriété suivante : ↑ toi ti (tΓ i ) ⊢ oi e →→ [ ∅ | [ ∅ | < λx.e, ↑ oi i (↑ i ti(tΓ i )) > ] ] ∧ [ ∅ | [ ∅ | < λx.e, ↑ i ti(tΓ i ) > ] ] =↑ ti toi( [ ∅ | [ ∅ | < λx.e, ↑ oi i (↑ i ti(tΓ i )) > ] ]) 1343.5. SÉMANTIQUE INSTRUMENTÉE La première partie de la propriété se montre en appliquant la règle d’inférence oi-abstr et en remarquant que : ↑ oi i (↑ i ti(tΓ i )) =↑ oi toi(↑ toi ti (tΓ i )) La seconde partie de la propriété se montre en remarquant que : ↑ ti toi( [ ∅ | [ ∅ | < λx.e, ↑ oi i (↑ i ti(tΓ i )) > ] ]) = [ ∅ | [ ∅ | < λx.e, ↑ i oi(↑ oi i (↑ i ti(tΓ i ))) > ] ] et ↑ i ti(tΓ i ) =↑ i oi(↑ oi i (↑ i ti(tΓ i ))) cas i-apply Nous avons les jugements de la sémantique instrumentée issus de la règle d’inférence i-apply ainsi que les trois hypothèses d’induction suivantes : tΓ i ⊢ i e1 →→ [ tdi 1 | [ d i 1 | < λx.e, Γ i 1 > ] ] tΓ i ⊢ i e2 →→ tui 2 tui 2 = [ tdi 2 | u i 2 ] (x, tui 2 )⊕ ↑ti i (Γi 1 ) ⊢ i e →→ [ tdi | [ d i | v i ] ] tΓ i ⊢ i e1 e2 →→ [ tdi 1 ∪ tdi 2 ∪ tdi ∪ d i 1 | [ d i 1 ∪ d i | v i ] ] ↑ toi ti (tΓ i ) ⊢ oi e1 →→ [ tdoi 1 | [ d oi 1 | < λx.e, Γ oi 1 > ] ] ∧ [ tdi 1 | [ d i 1 | < λx.e, Γ i 1 > ] ] =↑ ti toi( [ tdoi 1 | [ d oi 1 | < λx.e, Γ oi 1 > ] ]) ↑ toi ti (tΓ i ) ⊢ oi e2 →→ [ tdoi 2 | u oi 2 ] ∧ [ tdi 2 | u i 2 ] =↑ ti toi( [ tdoi 2 | u oi 2 ]) ↑ toi ti ((x, tui 2 )⊕ ↑ti i (Γi 1 )) ⊢ oi e →→ [ tdoi | [ d oi | v oi ] ] ∧ [ tdi | [ d i | v i ] ] =↑ ti toi( [ tdoi | [ d oi | v oi ] ]) Nous souhaitons dériver un jugement d’évaluation sur-instrumentée pour l’expression e1 e2 en utilisant la règle d’inférence oi-apply ainsi que les jugements d’évaluation de e1 et de e2 issus des hypothèses d’induction ci-dessus. Il nous manque un jugement d’évaluation adéquat pour e et une hypothèse concernant la spécification des dépendances indirectes. Tout d’abord, nous remarquons que la fonction de spécification des dépendances indirectes deps_spec_apply est une fonction totale (la preuve de cette propriété est assez 1353.5. SÉMANTIQUE INSTRUMENTÉE simple mais nécessite cependant de faire appel à l’axiome du choix ainsi qu’à l’axiome du tiers exclu). Il existe donc des ensembles de dépendances td′oi et d ′oi tels que : deps_spec_apply(tuoi 2 , doi 1 ) = (td′oi, d′oi) En ce qui concerne le jugement d’évaluation sur-instrumentée de e, on reprend celui qui provient des hypothèses d’induction en l’adaptant. Remarquons tout d’abord qu’il est possible de réécrire l’environnement d’évaluation ainsi : ↑ toi ti ((x, tui 2 )⊕ ↑ti i (Γi 1 )) = ↑ toi ti ((x, ↑ ti toi( [ tdoi 2 | u oi 2 ]))⊕ ↑ti i (↑ i oi(Γoi 1 ))) = (x, ↑ toi ti (↑ ti toi( [ tdoi 2 | u oi 2 ])))⊕ ↑toi ti (↑ ti i (↑ i oi(Γoi 1 ))) = (x, ↑ toi ti (↑ ti toi( [ tdoi 2 | u oi 2 ])))⊕ ↑toi ti (↑ ti toi(↑ toi oi (Γoi 1 ))) = ↑ toi ti (↑ ti toi((x, [ tdoi 2 | u oi 2 ])⊕ ↑toi oi (Γoi 1 ))) On a donc le jugement suivant : ↑ toi ti (↑ ti toi((x, [ tdoi 2 | u oi 2 ])⊕ ↑toi oi (Γoi 1 ))) ⊢ oi e →→ [ tdoi | [ d oi | v oi ] ] On en déduit qu’il existe un jugement d’évaluation dans le t-environnement sur-instrumenté (x, [ tdoi 2 | u oi 2 ])⊕ ↑toi oi (Γoi 1 ) qui évalue e en une certaine t-valeur sur-instrumentée [ td′′oi | [ d ′′oi | v ′′oi ] ] qui vérifie les propriétés suivantes : (x, [ tdoi 2 | u oi 2 ])⊕ ↑toi oi (Γoi 1 ) ⊢ oi e →→ [ td′′oi | [ d ′′oi | v ′′oi ] ] ↑ ti toi( [ td′′oi | [ d ′′oi | v ′′oi ] ]) =↑ ti toi( [ tdoi | [ d oi | v oi ] ]) On peut alors appliquer la règle d’inférence oi-apply pour déduire un jugement d’évaluation sur-instrumentée pour l’expression e1 e2 : oi-apply tΓ oi ⊢ oi e1 →→ [ tdoi 1 | [ d oi 1 | < λx.e, Γ oi 1 > ] ] tΓ oi ⊢ oi e2 →→ tuoi 2 tuoi 2 = [ tdoi 2 | u oi 2 ] (x, tuoi 2 )⊕ ↑toi oi (Γoi 1 ) ⊢ oi e →→ [ td′′oi | [ d ′′oi | v ′′oi ] ] deps_spec_apply(tuoi 2 , doi 1 ) = (td′oi, d′oi) tΓ oi ⊢ oi e1 e2 →→ [ tdoi 1 ∪ tdoi 2 ∪ td′′oi ∪ td′oi | [ d ′oi ∪ d ′′oi | v ′′oi ] ] Pour conclure, il ne nous reste plus qu’à prouver qu’en supprimant les fonctions d’impact de la t-valeur sur-instrumentée de e1 e2, on retrouve sa t-valeur instrumentée : 1363.5. SÉMANTIQUE INSTRUMENTÉE ↑ ti toi( [ tdoi 1 ∪ tdoi 2 ∪ td′′oi ∪ td′oi | [ d ′oi ∪ d ′′oi | v ′′oi ] ]) = [ ↑ ti toi(tdoi 1 )∪ ↑ti toi(tdoi 2 )∪ ↑ti toi(td′′oi)∪ ↑ti toi(td′oi) | [ ↑ i oi(d ′oi)∪ ↑i oi(d ′′oi) | ↑i oi(v ′′oi) ] ] = [ ↑ ti toi(tdoi 1 )∪ ↑ti toi(tdoi 2 )∪ ↑ti toi(tdoi)∪ ↑ti toi(td′oi) | [ ↑ i oi(d ′oi)∪ ↑i oi(d oi) | ↑i oi(v oi) ] ] = [ tdi 1 ∪ tdi 2 ∪ tdi∪ ↑ti toi(td′oi) | [ ↑ i oi(d ′oi) ∪ d i | v i ] ] = [ tdi 1 ∪ tdi 2 ∪ tdi ∪ d i 1 | [ d i 1 ∪ d i | v i ] ] 1373.6. CORRECTION DE L’ANALYSE DYNAMIQUE 3.6 Correction de l’analyse dynamique Nous souhaitons, dans cette section, établir une preuve de correction de notre analyse dynamique vis-à-vis de la notion de dépendance établie formellement en section 2.7. Pour cela, nous avons présenté plus haut plusieurs sémantiques intermédiaires en établissant à chaque étape la correction de la sémantique présentée par rapport à la précédente. Nous allons maintenant pouvoir enchaîner les preuves intermédiaires pour établir un théorème de correction de l’analyse dynamique (la sémantique instrumentée) par rapport à la notion de dépendances introduite formellement à l’aide de la sémantique avec injection (cf. section 3.3). 3.6.1 Énoncé informel du théorème Le but de notre analyse est de pouvoir affirmer que si un label n’apparaît pas dans le résultat de l’analyse d’un programme alors ce label n’a pas d’impact sur l’évaluation de ce programme. Autrement dit, après avoir obtenu un jugement d’évaluation instrumentée du programme à analyser et après avoir vérifié que le label en question n’apparaît pas dans les dépendances calculées alors on peut affirmer que peu importe l’injection considérée sur ce label, l’évaluation avec injection de ce programme retournera toujours la valeur de référence du programme (la valeur du programme lors d’une évaluation sans injection). 3.6.2 Illustration par l’exemple Exemple 1 : évaluation d’un couple Notons e1 le programme suivant : (3, l :7) Son jugement d’évaluation instrumenté dans le t-environnent instrumenté vide est : ∅ ⊢i e1 →→ [ ∅ | [ ∅ | ( [ ∅ | 3 ], [ l | 7 ]) ] ] Seul le label l apparaît dans la t-valeur instrumentée de e1. On peut donc affirmer que 1383.6. CORRECTION DE L’ANALYSE DYNAMIQUE tout autre label n’a pas d’impact sur l’évaluation de e1. On a en effet pour toute injection (l ′ , vl ′) sur un label l ′ différent de l : ∅ ⊢l ′ :vl ′ e1 →→ (3, 7) Exemple 2 : liaison d’une fonction Notons e2 le programme suivant : l e t f o = match o with | Some ( x ) → x + l1 : 8 | none → d + l2 : 8 i n ( f ( Some 18 ) , l3 : 17 ) Voici le jugement d’évaluation instrumentée de e2 dans un t-environnement instrumenté tΓ i 2 = (d, [ tdi d | [ d i d | 26 ] ]) où d est un identificateur, tdi d un ensemble de t-dépendances et d i d un ensemble de v-dépendances : tΓ i 2 ⊢ i e2 →→ [ ∅ | [ ∅ | ( [ l1 | 26 ], [ l3 | 17 ]) ] ] Le label l2 n’étant pas présent dans la t-valeur instrumentée du programme e2, nous pouvons en conclure qu’aucune injection sur l2 n’a d’impact sur l’évaluation de e2 : ∀vl2 .(d, 26) ⊢l2:vl2 e2 →→ (26, 17) Par contre, les labels l1 et l3 apparaissent dans la t-valeur instrumentée du programme e2. Il n’est donc pas impossible qu’une injection sur un de ces labels puisse modifier le comportement du programme, comme le montrent les exemples ci-dessous : (d, 26) ⊢l1:24 e2 →→ (32, 17) (d, 26) ⊢l3:613 e2 →→ (26, 613) 1393.6. CORRECTION DE L’ANALYSE DYNAMIQUE ldna-e-i-num ldna_in_evali (l, tΓ i , n) ldna-e-i-constr-0 ldna_in_evali (l, tΓ i , C) ldna-e-i-constr-1 ldna_in_evali (l, tΓ i , e) ldna_in_evali (l, tΓ i , D(e)) ldna-e-i-ident ldna_in_vali (l, tΓ i [x]) ldna_in_evali (l, tΓ i , x) ldna-e-i-ident-unbound x ̸∈ support(tΓ i ) ldna_in_evali (l, tΓ i , x) ldna-e-i-abstr ldna_in_evali (l, tΓ i , e) ldna_in_evali (l, tΓ i , λx.e) ldna-e-i-abstr-rec ldna_in_evali (l, tΓ i , e) ldna_in_evali (l, tΓ i , recf.x.e) ldna-e-i-apply ldna_in_evali (l, tΓ i , e1) ldna_in_evali (l, tΓ i , e2) ldna_in_evali (l, tΓ i , e1 e2) ldna-e-i-if ldna_in_evali (l, tΓ i , e) ldna_in_evali (l, tΓ i , e1) ldna_in_evali (l, tΓ i , e2) ldna_in_evali (l, tΓ i , if e then e1 else e2) ldna-e-i-match ldna_in_evali (l, tΓ i , e) ldna_in_evali (l, tΓ i , e1) ldna_in_evali (l, tΓ i , e2) ldna_in_evali (l, tΓ i , match e with p → e1 | x → e2) ldna-e-i-annot l ̸= l ′ ldna_in_evali (l, tΓ i , e) ldna_in_evali (l, tΓ i , l : e) ldna-e-i-couple ldna_in_evali (l, tΓ i , e1) ldna_in_evali (l, tΓ i , e2) ldna_in_evali (l, tΓ i ,(e1, e2)) ldna-e-i-letin ldna_in_evali (l, tΓ i , e1) ldna_in_evali (l, tΓ i , e2) ldna_in_evali (l, tΓ i , let x = e1 in e2) Figure 3.27 – Prédicat de non-apparition d’un label lors d’une évaluation instrumentée 3.6.3 Énoncé formel du théorème Pour énoncer formellement le théorème de correction, il nous faut tout d’abord définir formellement les notions de non-apparition d’un label dans une valeur instrumentée et dans un t-environnement instrumenté. On définit pour cela les prédicats ldna_in_evali , ldna_in_vali et ldna_in_envi . Leur définition est donnée respectivement en figure 3.27, en figure 3.28 et en figure 3.29. Théorème 3.6.1 (Correction de l’analyse dynamique). ∀(tΓ i , e, tui , l). tΓ i ⊢ i e →→ tui ⇒ ldna_in_envti(l, tΓ i ) ⇒ ldna_in_valti(l, tui ) ⇒ ∀vl . ↑ti(tΓ i ) ⊢l:vl e →→↑ti(tui ) 1403.6. CORRECTION DE L’ANALYSE DYNAMIQUE ldna-v-i-num ldna_in_vali (l, n) ldna-v-i-bool ldna_in_vali (l, b) ldna-v-i-constr-0 ldna_in_vali (l, C) ldna-v-i-constr-1 ldna_in_vali (l, u) ldna_in_vali (l, D(u)) ldna-v-i-couple ldna_in_vali (l, u1) ldna_in_vali (l, u2) ldna_in_vali (l,(u1, u2)) ldna-v-i-closure ldna_in_evali (l, ↑ ti i (Γi ), e) ldna_in_vali (l, < λx.e, Γ i >) ldna-v-i-closure-rec ldna_in_evali (l, ↑ ti i (Γi ), e) ldna_in_vali (l, < recf.x.e, Γ i >) ldna-v-i-v-val l ̸∈ d i ldna_in_vali (l, vi ) ldna_in_vali (l, [ d i | v i ]) ldna-v-i-t-val l ̸∈ tdi ldna_in_vali (l, ui ) ldna_in_vali (l, [ tdi | u i ]) Figure 3.28 – Prédicat de non-apparition d’un label dans une valeur instrumentée ldna-env-i-empty ldna_in_envi (l, ∅) ldna-env-i-cons ldna_in_envi (l, tui ) ldna_in_envi (l, tΓ i ) ldna_in_envi (l,(tui ) ⊕ tΓ i ) Figure 3.29 – Prédicat de non-apparition d’un label dans un environnement instrumenté 3.6.4 Preuve de correction La preuve de ce théorème repose sur les théorèmes déjà prouvés précédemment concernant la correction de la sémantique instrumentée vis-à-vis de la sémantique sur-instrumentée, la correction de la sémantique sur-instrumentée vis-à-vis de la sémantique avec injection et la correction de la sémantique avec injection vis-à-vis de la sémantique opérationnelle avec injection. L’enchaînement de ces théorèmes permet ainsi d’établir le lien entre la sémantique instrumentée et la sémantique opérationnelle avec injection. On part des hypothèses suivantes : tΓ i ⊢ i e →→ tui ldna_in_envti(l, tΓ i ) ldna_in_valti(l, tui ) 1413.6. CORRECTION DE L’ANALYSE DYNAMIQUE Rappel du théorème de correction de la sémantique instrumentée : ∀(tΓ i , e, tui ).tΓ i ⊢ i e →→ tui ⇒ ∃(tuoi). ↑ toi ti (tΓ i ) ⊢ oi e →→ tuoi ∧ tui =↑ ti toi(tuoi) En utilisant le jugement d’évaluation instrumenté et le théorème de correction de la sémantique instrumentée vis-à-vis de la sémantique sur-instrumentée, on déduit qu’il existe une t-valeur sur-instrumentée tuoi vérifiant les deux propriétés suivantes : ↑ toi ti (tΓ i ) ⊢ oi e →→ tuoi tui =↑ ti toi(tuoi) D’autre part, puisque le label l n’apparaît pas dans le t-environnement instrumenté tΓ i , on en déduit que ce dernier est instanciable et l’environnement instancié est son environnement de référence. C’est-à-dire qu’il existe un environnement Γ tel que : Γ =↓ l:vl(tΓ oi) =↑toi(tΓ oi) =↑ti(tΓ i ) Puisque le label l n’apparaît pas non plus dans la t-valeur instrumentée tui , cette dernière est instanciable et la valeur de l’instanciation est sa valeur de référence. Il existe donc une valeur v telle que : v =↓ l:vl(tuoi) =↑toi(tuoi) =↑ti(tui ) Rappel du théorème de correction de la sémantique sur-instrumentée vis-à-vis de la sémantique avec injection dans un t-environnement sur-instrumenté : tΓ oi ⊢ oi e →→ tuoi ⇒ ∀(l, vl).∃Γ.Γ =↓ l:vl(tΓ oi) ⇒ ∀v.v =↓ l:vl(tuoi) ⇒ tΓ oi ⊢l:vl e →→ v On utilise alors ce théorème pour obtenir : tΓ oi ⊢l:vl e →→ v Rappel du théorème de correction de la sémantique avec injection dans un t-environnement sur-instrumenté vis-à-vis de la sémantique opérationnelle avec injection : ∀(tΓ oi , Γ, e, v, l, vl), tΓ oi ⊢l:vl e →→ v ⇒ Γ = ↓ l:vl(tΓ oi) ⇒ Γ ⊢l:vl e →→ v 1423.6. CORRECTION DE L’ANALYSE DYNAMIQUE On utilise enfin ce théorème pour déduire : Γ ⊢l:vl e →→ v On peut alors conclure en utilisant les égalités ci-dessus concernant Γ et v : ↑ti(tΓ i ) ⊢l:vl e →→↑ti(tui ) 1433.6. CORRECTION DE L’ANALYSE DYNAMIQUE 144Chapitre 4 Analyse statique 4.1 Introduction Ce chapitre a pour but de présenter une analyse statique des dépendances d’un programme et sa preuve de correction. Cette analyse permettra d’analyser tout programme écrit dans notre langage et de fournir une approximation raisonnable de ses dépendances. Elle permettra également d’analyser un programme sans en connaître précisément l’environnement d’évaluation. Il suffira de spécifier un environnement d’évaluation abstrait correspondant à un ensemble d’environnements d’évaluation possibles. La présentation de cette analyse statique fait suite à la présentation dans le chapitre précédent d’une analyse dynamique. Là où l’analyse dynamique permettait d’analyser un programme uniquement dans un environnement d’évaluation de référence connu, l’analyse statique permet de spécifier de façon souple l’environnement d’évaluation. Bien que la définition de l’analyse statique, que nous appelons sémantique abstraite, soit indépendante de celle de la sémantique instrumentée ainsi que des autres sémantiques présentées, sa présentation fait suite à la présentation dans le chapitre précédent de l’analyse dynamique (sémantique instrumentée). En effet, dans le but de faciliter la preuve de correction de l’analyse statique, nous définissons la sémantique abstraite comme une interprétation abstraite de la sémantique instrumentée. De la même manière que dans le chapitre précédent, nous serons amené à introduire des sémantiques intermédiaires permettant une preuve par étapes, plus simple qu’une approche directe. 1454.1. INTRODUCTION Sémantique instrumentée : Sémantique instrumentée multiple : Sémantique collectrice : Sémantique abstraite : Les flèches correspondent à des fonctions injectives entre les ensembles de valeurs ou entre les ensembles d'environnements pour visualiser les pertes de précision et pertes de généralité. Figure 4.1 – Sémantiques intermédiaires pour l’analyse statique La figure 4.1 présente une vue globale des différentes sémantiques intermédaires entre la sémantique instrumentée et la sémantique abstraite. Ainsi, dans ce chapitre, nous utilisons la sémantique instrumentée comme une sémantique de base dont nous allons proposer une interprétation abstraite en plusieurs étapes. La preuve de correction de l’analyse statique sera alors constituée de l’enchaînement des preuves de correction des différentes sémantiques intermédiaires. La figure 4.2 propose une représentation graphique de l’enchaînement des différentes preuves de correction. Tout d’abord, nous présenterons la sémantique instrumentée multiple qui permet d’analyser un programme simultanément pour un ensemble de t-environnements instrumentés possibles (cf. section 4.2). Ensuite, nous aborderons la présentation de la sémantique collectrice (cf. section 4.3), qui permet d’analyser un programme dans un environnement collecteur dans lequel chaque identificateur est lié à un ensemble de valeurs possibles. En- fin nous présenterons la définition et la preuve de correction de la sémantique abstraite (cf. section 4.4), dans laquelle les ensembles de valeurs présents dans la sémantique collectrice sont remplacés par des valeurs abstraites représentant certains ensembles de valeurs particuliers. 1464.2. SÉMANTIQUE INSTRUMENTÉE MULTIPLE La sémantique instrumentée multiple effectue plusieurs évaluations instrumentées à la fois. Si un t-environnement instrumenté appartient à l'ensemble des environnements, alors la t-valeur instrumentée appartient au résultat. La sémantique collectrice est une interprétation abstraite de la sémantique instrumentée multiple. La sémantique abstraite est une interprétation abstraite de la sémantique collectrice. Ce diagramme montre le lien entre l'analyse statique d'un programme (sémantique abstraite) et l'analyse dynamique (sémantique instrumentée). On peut ainsi visualiser l’enchaînement des preuves de correction des 3 sémantiques présentées dans ce chapitre. Figure 4.2 – Enchaînement des preuves des sémantiques intermédiaires pour l’analyse statique 4.2 Sémantique instrumentée multiple La sémantique instrumentée multiple est la première sémantique intermédiaire permettant de faire le lien entre la sémantique instrumentée et la sémantique abstraite. Il s’agit d’un outil technique permettant de faciliter la preuve de correction de la sémantique collectrice qui sera présentée dans la section suivante. 4.2.1 Présentation informelle Un des buts de notre analyse statique est de pouvoir obtenir en une unique analyse un résultat contenant une approximation des dépendances d’un programme pour un ensemble d’évaluations possibles. La sémantique instrumentée multiple franchit ce premier pas en regroupant dans un jugement d’évaluation unique un ensemble d’évaluations instrumentées possibles. 4.2.2 Définition formelle La définition formelle de la sémantique instrumentée multiple ne comprend qu’une seule règle d’inférence. Celle-ci se base sur la sémantique instrumentée précédemment définie. 1474.2. SÉMANTIQUE INSTRUMENTÉE MULTIPLE Le point de départ est un ensemble tΓ im d’environnements d’évaluations instrumentés possibles. Chacun de ces environnements instrumentés fournit ou non un jugement d’évaluation instrumenté pour le programme e aboutissant sur une certaine t-valeur instrumentée. Toutes les t-valeurs instrumentées tui pour lesquelles il existe un jugement d’évaluation instrumentée du programme e dans un t-environnement instrumenté présent dans tΓ im sont regroupées dans un ensemble de t-valeurs instrumentées v im qui est le résultat du jugement d’évaluation instrumentée multiple. Il est utile de remarquer que pour tout ensemble de t-environnements instrumentés et tout programme e, il existe un jugement d’évaluation instrumentée multiple de ce programme en un certain ensemble de t-valeurs instrumentées (éventuellement vide). i-multiple v im = {tui | ∃tΓ i ∈ tΓ im. tΓ i ⊢ i e →→ tui } tΓ im ⊢ im e →→ v im 1484.3. SÉMANTIQUE COLLECTRICE 4.3 Sémantique collectrice La sémantique collectrice a pour but de faire apparaître le calcul des dépendances lors de l’analyse simultanée d’un ensemble d’évaluations possibles d’un programme. La sémantique instrumentée multiple permettait d’analyser simultanément un ensemble d’évaluations possibles d’un programme mais le calcul des dépendances se faisait séparément pour chacune des évaluations possibles. La sémantique collectrice évalue un programme dans un environnement collecteur et fournit comme résultat une valeur collectrice. Cette valeur collectrice comprend des t-dépendances ainsi que des v-dépendances globales (partagées par toutes les valeurs possibles) ainsi qu’un ensemble de valeurs possibles. L’intérêt d’une telle sémantique est de séparer le calcul des dépendances du calcul des valeurs dans chaque environnement possible. Cette étape permettra par la suite de définir une abstraction du calcul des valeurs en gardant le calcul des dépendances défini ici. 4.3.1 Algèbre des valeurs 4.3.1.1 Valeurs Une t-valeur collectrice (ou simplement « valeur collectrice » puisqu’ici il n’y a pas d’ambiguïté, notée tuc ) est composée d’un ensemble de t-dépendances tdc , d’un ensemble de v-dépendances d c ainsi que d’un ensemble de valeurs simples instrumentées vsi . tuc := [ tdc | d c | vsi ] Valeur collectrice Les annotations de dépendance tdc et d c sont globales et chaque valeur simple instrumentée présente dans vsi contient des annotations de dépendance concernant ses propres soustermes. Comme dans toutes les autres sémantiques présentées, les ensembles de t-dépendances ainsi que les ensembles de v-dépendances sont des ensembles nécessairement finis. Par contre, l’ensemble des valeurs simples instrumentées contenu dans une valeur collectrice est un ensemble potentiellement infini. 1494.3. SÉMANTIQUE COLLECTRICE 4.3.1.2 Ensembles de dépendances Dans les valeurs collectrices, les ensembles de t-dépendances (resp. de v-dépendances) sont simplement des ensembles de labels, comme dans la sémantique instrumentée. tdc := {l1; . . . ; ln} t-dépendances d c := {l1; . . . ; lm} v-dépendances 4.3.1.3 Environnements Contrairement à la sémantique instrumentée, il n’y a qu’un seul type d’environnement. La représentation des fonctions sous forme de valeur collectrice est constituée d’un ensemble de fermetures instrumentées, contenant chacune un v-environnement instrumenté. Il n’y a donc pas besoin d’un type d’environnement collecteur spécial pour la représentation des fonctions. Un t-environnement collecteur (ou simplement « environnement collecteur » puisqu’ici il n’y a pas d’ambiguïté) permet de lier chaque identificateur à une t-valeur collectrice. tΓ c := (x1, tuc 1 ); . . . ; (xn, tuc n ) t-environnement collecteur 4.3.2 Règles d’inférence La sémantique collectrice évalue une expression dans un environnement collecteur et fournit une valeur collectrice. Tout comme la sémantique instrumentée multiple, elle fournit toujours un résultat (pour toute expression et tout environnement collecteur, il existe une valeur collectrice). La valeur collectrice peut éventuellement contenir un ensemble vide de valeurs simples, ce qui correspond à une erreur d’évaluation. Le jugement d’évaluation prend la forme suivante : tΓ c ⊢ c e →→ tuc c-num La règle d’évaluation d’une constante numérique n’introduit aucune dépendance. Les t-dépendances ainsi que les v-dépendances sont donc vides. L’ensemble des valeurs simples instrumentées est réduit à un singleton contenant uniquement la constante numé- rique correspondant à l’expression. 1504.3. SÉMANTIQUE COLLECTRICE c-num tΓ c ⊢ c n →→ [ ∅ | ∅ | {n} ] c-ident tuc = tΓ c [x] tΓ c ⊢ c x →→ tuc c-ident-empty x ̸∈ support(tΓ c ) tΓ c ⊢ c x →→ [ ∅ | ∅ | ∅ ] c-abstr vsi = {< λx.e, Γ i > | Γ i ∈↑im c (tΓ c )} tΓ c ⊢ c λx.e →→ [ ∅ | ∅ | vsi ] c-abstr-rec vsi = {< recf.x.e, Γ i > | Γ i ∈↑im c (tΓ c )} tΓ c ⊢ c recf.x.e →→ [ ∅ | ∅ | vsi ] c-apply tΓ c ⊢ c e1 →→ [ tdc 1 | d c 1 | vsi 1 ] tΓ c ⊢ c e2 →→ [ tdc 2 | d c 2 | vsi 2 ] v im = multiple_instrumented_application(tdc 1 , dc 1 , vsi 1 , tdc 2 , dc 2 , vsi 2 ) (∀l. l ∈ tdc ⇔ (∃(tdi , di , vi ). l ∈ tdi ∧ [ tdi | [ d i | v i ] ] ∈ v im)) (∀l. l ∈ d c ⇔ (∃(tdi , di , vi ). l ∈ d i ∧ [ tdi | [ d i | v i ] ] ∈ v im)) vsi = {v i | ∃(tdi , di ). [ tdi | [ d i | v i ] ] ∈ v im} tΓ c ⊢ c e1 e2 →→ [ tdc | d c | vsi ] c-if-true tΓ c ⊢ c e →→ [ tdc | d c | vsi ] true ∈ vsi false ̸∈ vsi tΓ c ⊢ c e1 →→ [ tdc 1 | d c 1 | vsi 1 ] tu′c = [ d c ∪ tdc ∪ tdc 1 | d c ∪ d c 1 | vsi 1 ] tΓ c ⊢ c if e then e1 else e2 →→ tu′c c-if-false tΓ c ⊢ c e →→ [ tdc | d c | vsi ] false ∈ vsi true ̸∈ vsi tΓ c ⊢ c e2 →→ [ tdc 2 | d c 2 | vsi 2 ] tu′c = [ d c ∪ tdc ∪ tdc 2 | d c ∪ d c 2 | vsi 2 ] tΓ c ⊢ c if e then e1 else e2 →→ tu′c c-if-unknown tΓ c ⊢ c e →→ [ tdc | d c | vsi ] true ∈ vsi false ∈ vsi tΓ c ⊢ c e1 →→ [ tdc 1 | d c 1 | vsi 1 ] tΓ c ⊢ c e2 →→ [ tdc 2 | d c 2 | vsi 2 ] tu′c = [ d c ∪ tdc ∪ tdc 1 ∪ tdc 2 | d c ∪ d c 1 ∪ d c 2 | vsi 1 ∪ vsi 2 ] tΓ c ⊢ c if e then e1 else e2 →→ tu′c c-if-empty tΓ c ⊢ c e →→ [ tdc | d c | vsi ] true ̸∈ vsi false ̸∈ vsi tΓ c ⊢ c if e then e1 else e2 →→ [ ∅ | ∅ | ∅ ] c-match tΓ c ⊢ c e →→ tuc tuc = [ tdc | d c | vsi ] vsi ∩ vsi matchable ̸= ∅ tuc , p ⊢ c p tΓ c p tΓ c p ⊕ tΓ c ⊢ c e1 →→ [ tdc 1 | d c 1 | vsi 1 ] tΓ c ⊢ c match e with p → e1 | x → e2 →→ [ d c ∪ tdc ∪ tdc 1 | d c ∪ d c 1 | vsi 1 ] c-match-var tΓ c ⊢ c e →→ tuc tuc = [ tdc | d c | vsi ] vsi ∩ vsi matchable ̸= ∅ tuc , p ⊢ c p ⊥ (x, tuc ) ⊕ tΓ c ⊢ c e2 →→ [ tdc 2 | d c 2 | vsi 2 ] tΓ c ⊢ c match e with p → e1 | x → e2 →→ [ d c ∪ tdc ∪ tdc 2 | d c ∪ d c 2 | vsi 2 ] c-match-unknown tΓ c ⊢ c e →→ tuc tuc = [ tdc | d c | vsi ] vsi ∩ vsi matchable ̸= ∅ tuc , p ⊢ c p? tΓ c p tΓ c p ⊕ tΓ c ⊢ c e1 →→ [ tdc 1 | d c 1 | vsi 1 ] (x, tuc ) ⊕ tΓ c ⊢ c e2 →→ [ tdc 2 | d c 2 | vsi 2 ] tΓ c ⊢ c match e with p → e1 | x → e2 →→ [ d c ∪ tdc ∪ tdc 1 ∪ tdc 2 | d c ∪ d c 1 ∪ d c 2 | vsi 1 ∪ vsi 2 ] c-match-empty tΓ c ⊢ c e →→ tuc tuc = [ tdc | d c | vsi ] vsi ∩ vsi matchable = ∅ tΓ c ⊢ c match e with p → e1 | x → e2 →→ [ ∅ | ∅ | ∅ ] Figure 4.3 – Sémantique collectrice : première partie 1514.3. SÉMANTIQUE COLLECTRICE c-constr-0 tΓ c ⊢ c C →→ [ ∅ | ∅ | {C} ] c-constr-1 tΓ c ⊢ c e →→ [ tdc | d c | vsi ] tΓ c ⊢ c D(e) →→ [ tdc | ∅ | {D( [ d c | v i ]) | v i ∈ vsi } ] c-couple tΓ c ⊢ c e1 →→ [ tdc 1 | d c 1 | vsi 1 ] tΓ c ⊢ c e2 →→ [ tdc 2 | d c 2 | vsi 2 ] tΓ c ⊢ c (e1, e2) →→ [ tdc 1 ∪ tdc 2 | ∅ | {( [ d c 1 | v i 1 ], [ d c 2 | v i 2 ]) | v i 1 ∈ vsi 1 ∧ v i 2 ∈ vsi 2} ] c-letin tΓ c ⊢ c e1 →→ tuc 1 tuc 1 = [ tdc 1 | d c 1 | vsi 1 ] vsi 1 ̸= ∅ (x, tuc 1 ) ⊕ tΓ c ⊢ c e2 →→ [ tdc 2 | d c 2 | vsi 2 ] tΓ c ⊢ c let x = e1 in e2 →→ [ tdc 1 ∪ tdc 2 | d c 2 | vsi 2 ] c-letin-empty tΓ c ⊢ c e1 →→ [ tdc 1 | d c 1 | ∅ ] tΓ c ⊢ c let x = e1 in e2 →→ [ ∅ | ∅ | ∅ ] c-annot tΓ c ⊢ c e →→ [ tdc | d c | vsi ] tΓ c ⊢ c l : e →→ [ tdc | {l} ∪ d c | vsi ] Figure 4.4 – Sémantique collectrice : seconde partie vsi matchable = {C|∀C ∈ Constr0 } ∪ {D(u i )|∀D ∈ Constr1 , ∀u i } ∪ {(u i 1 , ui 2 )|∀u i 1 , ∀u i 2} cm-constr-0 vsi ∩ vsi matchable ⊆ {C|∀C ∈ Constr0 } [ tdc | d c | vsi ], C ⊢ c p {} cm-constr-1 vsi ∩ vsi matchable ⊆ {D(u i )|∀D ∈ Constr1 , ∀u i } vs′i = {v i |∃d i .D( [ d i | v i ]) ∈ vsi } ∀l.l ∈ d ′c ⇔ ∃d i .l ∈ d i ∧ ∃v i .D( [ d i | v i ]) ∈ vsi [ tdc | d c | vsi ], D(x) ⊢ c p {(x, [ ∅ | d ′c | vs′i ])} cm-couple vsi ∩ vsi matchable ⊆ {(u i 1 , ui 2 )|∀u i 1 , ∀u i 2} vsi 1 = {v i 1 |∃(d i 1 , di 2 , vi 2 ).( [ d i 1 | v i 1 ], [ d i 2 | v i 2 ]) ∈ vsi } ∀l.l ∈ d c 1 ⇔ ∃d i 1 .l ∈ d i 1 ∧ ∃(v i 1 , di 2 , vi 2 ).( [ d i 1 | v i 1 ], [ d i 2 | v i 2 ]) ∈ vsi vsi 2 = {v i 2 |∃(d i 1 , vi 1 , di 2 ).( [ d i 1 | v i 1 ], [ d i 2 | v i 2 ]) ∈ vsi } ∀l.l ∈ d c 2 ⇔ ∃d i 2 .l ∈ d i 2 ∧ ∃(d i 1 , vi 1 , vi 2 ).( [ d i 1 | v i 1 ], [ d i 2 | v i 2 ]) ∈ vsi [ tdc | d c | vsi ], (x1, x2) ⊢ c p {(x1, [ ∅ | d c 1 | vsi 1 ]); (x2, [ ∅ | d c 2 | vsi 2 ])} cm-constr-0-not vsi ∩ {C|∀C ∈ Constr0 } = ∅ [ tdc | d c | vsi ], C ⊢ c p ⊥ cm-constr-1-not vsi ∩ {D(u i )|∀D ∈ Constr1 , ∀u i } = ∅ [ tdc | d c | vsi ], D(x) ⊢ c p ⊥ cm-couple-not vsi ∩ {(u i 1 , ui 2 )|∀u i 1 , ∀u i 2} = ∅ [ tdc | d c | vsi ], (x1, x2) ⊢ c p ⊥ cm-constr-0-unknown vsi ∩ vsi matchable ̸⊆ {C|∀C ∈ Constr0 } vsi ∩ {C|∀C ∈ Constr0 } ̸= ∅ [ tdc | d c | vsi ], C ⊢ c p? {} cm-constr-1-unknown vsi ∩ vsi matchable ̸⊆ {D(u i )|∀D ∈ Constr1 , ∀u i } vsi ∩ {D(u i )|∀D ∈ Constr1 , ∀u i } ̸= ∅ vs′i = {v i |∃d i .D( [ d i | v i ]) ∈ vsi ∩ {D(u i )|∀D ∈ Constr1 , ∀u i }} ∀l.l ∈ d ′c ⇔ ∃d i .l ∈ d i ∧ ∃v i .D( [ d i | v i ]) ∈ vsi ∩ {D(u i )|∀D ∈ Constr1 , ∀u i } [ tdc | d c | vsi ], D(x) ⊢ c p? {(x, [ ∅ | d ′c | vs′i ])} cm-couple-unknown vsi ∩ vsi matchable ̸⊆ {(u i 1 , ui 2 )|∀u i 1 , ∀u i 2} vsi ∩ {(u i 1 , ui 2 )|∀u i 1 , ∀u i 2} ̸= ∅ vsi 1 = {v i 1 |∃(d i 1 , di 2 , vi 2 ).( [ d i 1 | v i 1 ], [ d i 2 | v i 2 ]) ∈ vsi ∩ {(u i 1 , ui 2 )|∀u i 1 , ∀u i 2}} ∀l.l ∈ d c 1 ⇔ ∃d i 1 .l ∈ d i 1 ∧ ∃(v i 1 , di 2 , vi 2 ).( [ d i 1 | v i 1 ], [ d i 2 | v i 2 ]) ∈ vsi ∩ {(u i 1 , ui 2 )|∀u i 1 , ∀u i 2} vsi 2 = {v i 2 |∃(d i 1 , vi 1 , di 2 ).( [ d i 1 | v i 1 ], [ d i 2 | v i 2 ]) ∈ vsi ∩ {(u i 1 , ui 2 )|∀u i 1 , ∀u i 2}} ∀l.l ∈ d c 2 ⇔ ∃d i 2 .l ∈ d i 2 ∧ ∃(d i 1 , vi 1 , vi 2 ).( [ d i 1 | v i 1 ], [ d i 2 | v i 2 ]) ∈ vsi ∩ {(u i 1 , ui 2 )|∀u i 1 , ∀u i 2} [ tdc | d c | vsi ], (x1, x2) ⊢ c p? {(x1, [ ∅ | d c 1 | vsi 1 ]); (x2, [ ∅ | d c 2 | vsi 2 ])} Figure 4.5 – Sémantique collectrice : règles de filtrage 1524.3. SÉMANTIQUE COLLECTRICE c-ident La règle d’évaluation d’un identificateur est semblable à celle des autres sémantiques. Elle retourne la valeur associée à cet identificateur dans l’environnement. c-ident-empty Une nouvelle règle est introduite pour donner une valeur à un identificateur dans le cas où il n’apparaît pas dans l’environnement. Dans ce cas, l’ensemble des valeurs simples est vide pour signifier qu’il n’existe aucune évaluation instrumentée correspondante. Cette règle est nécessaire pour que la sémantique collectrice soit totale, c’est-à-dire qu’elle fournisse une valeur pour n’importe quelle expression dans n’importe quel environnement. c-abstr L’évaluation d’une fonction ne produit aucune dépendance, comme dans les sémantiques précédentes. En ce qui concerne l’ensemble des valeurs simples instrumentées, on remarquera qu’il contient un ensemble de fermetures. Puisque l’environnement collecteur correspond à un ensemble d’environnements instrumentés, on construit une fermeture pour chaque environnement instrumenté possible. Pour cela, on utilise la fonction ↑ im c (•) qui transforme un t-environnement collecteur en l’ensemble des environnements instrumentés lui correspondant. Cette fonction est définie en figure 4.8. c-abstr-rec Selon le même principe que pour la règle c-abstr, on construit une fermeture récursive pour chaque environnement instrumenté possible. c-apply La règle de l’application, est plus complexe car il faut construire l’ensemble des valeurs possibles pour l’application à partir de l’ensemble des valeurs possibles pour e1 et e2. Tout d’abord, on évalue e1 et e2 dans l’environnement collecteur pour obtenir leur valeur collectrice. On construit ensuite l’ensemble des t-valeurs instrumentées de l’application en utilisant la fonction multiple_instrumented_application avec les valeurs collectrices de e1 et e2. À partir du résultat de cette fonction, on extrait alors les t-dépendances, les v-dépendances ainsi que l’ensemble des valeurs simples instrumentées de l’application. La fonction multiple_instrumented_application a pour but de définir l’ensemble des 1534.3. SÉMANTIQUE COLLECTRICE multiple_instrumented_application(tdc 1 , dc 1 , vsi 1 , tdc 2 , dc 2 , vsi 2 ) = { tui | ( ∃ < λx.e, Γ i 1 >∈ vsi 1 . ∃v i 2 ∈ vsi 2 . ∃(tdi , ti , vi ). ∃tui 2 = [ tdc 2 | [ d c 2 | v i 2 ] ]. (x, tui 2 )⊕ ↑ti i (Γi 1 ) ⊢ i e →→ [ tdi | [ d i | v i ] ] ∧ tui = [ tdc 1 ∪ tdc 2 ∪ tdi ∪ d c 1 | [ d c 1 ∪ d i | v i ] ] ) ∨ ( ∃ < recf.x.e, Γ i 1 >∈ vsi 1 . ∃v i 2 ∈ vsi 2 . ∃(tdi , ti , vi ). ∃tui f = [ tdc 1 | [ d c 1 | < recf.x.e, Γ i 1 > ] ]. ∃tui 2 = [ tdc 2 | [ d c 2 | v i 2 ] ]. (f, tui f ) ⊕ (x, tui 2 )⊕ ↑ti i (Γi 1 ) ⊢ i e →→ [ tdi | [ d i | v i ] ] ∧ tui = [ tdc 1 ∪ tdc 2 ∪ tdi ∪ d c 1 | [ d c 1 ∪ d i | v i ] ] ) } Figure 4.6 – Sémantique collectrice : prédicat d’application instrumentée multiple t-valeurs instrumentées d’une application de fonction à partir de la valeur collectrice de la fonction et de la valeur collectrice de l’argument. Cet ensemble est défini par un prédicat d’appartenance. Une t-valeur instrumentée appartient à cet ensemble si il existe une fermeture (récursive ou non) et une valeur argument telles que l’application de cette fermeture à cette valeur par la sémantique instrumentée fournit la t-valeur considérée. La définition formelle de cette fonction est donnée en figure 4.6. Expressions conditionnelles Pour l’évaluation collectrice d’une expresssion conditionnelle, on distingue 4 cas : – pour tout environnement possible, seule la première branche est évaluée – pour tout environnement possible, seule la seconde branche est évaluée – selon l’environnement possible, l’une ou l’autre des branches est évaluée – il n’y a aucune évaluation possible c-if-true Le premier cas est caractérisé par l’appartenance de la valeur true à l’ensemble des valeurs possible de la condition (ce qui indique qu’il existe une évaluation possible passant par la première branche) et la non-appartenance de la valeur f alse (ce qui indique qu’aucune évaluation possible ne passe par la seconde branche). Dans ce cas, le calcul des dépendances s’effectue de manière similaire à la sémantique instrumentée. 1544.3. SÉMANTIQUE COLLECTRICE c-if-false Le second cas est caractérisé de la même manière, par l’appartenance de la valeur f alse et la non-appartenance de la valeur true à l’ensemble des valeurs possibles de la condition. Dans ce cas également, le calcul des dépendances s’effectue de manière similaire à la sémantique instrumentée. c-if-unknown Le cas incertain, où l’on peut passer parfois par la première branche et parfois par la seconde branche est caractérisé par l’appartenance des deux valeurs true et f alse à l’ensemble des valeurs possibles de la condition. Dans ce cas, les dépendances de la première branche ainsi que celles de la seconde branche se retrouvent toutes les deux dans les dépendances du résultat. C’est une des sources d’approximation dues à l’incertitude sur les valeurs de l’environnement. c-if-empty Le dernier cas de l’évaluation d’une expression conditionnelle correspond au cas d’erreur. Le programme analysé est incorrect et son analyse par notre calcul de dépendances n’a pas d’intérêt. Pattern-matching Pour l’évaluation collectrice d’un pattern-matching, on distingue 4 cas, homologues aux 4 cas concernant une expression conditionnelle : – pour tout environnement possible, seule la première branche est évaluée – pour tout environnement possible, seule la seconde branche est évaluée – selon l’environnement possible, l’une ou l’autre des branches est évaluée – il n’y a aucune évaluation possible Cette distinction en 4 cas suit les sémantiques opérationnelles et instrumentées présentées plus haut dans lesquelles seules les valeurs « filtrables » aboutissent à une évaluation. Par exemple, si l’expression filtrée s’évalue en une fermeture ou un nombre, alors aucune des deux branches du filtrage n’est évaluée, le résultat est donc une erreur lors de l’évaluation. Il se peut que cette sémantique « théorique » ne corresponde pas à l’implémentation d’un compilateur en pratique. Ce point est discuté plus en détail en section 2.3.4. 1554.3. SÉMANTIQUE COLLECTRICE La discrimination entre les 4 cas se fait tout d’abord en vérifiant si la valeur collectrice contient au moins une valeur filtrable (cf. définition de vsi matchable en figure 4.5). Si c’est le cas, on distingue alors trois possibilités à l’aide d’un prédicat de filtrage défini en figure 4.5. Ce prédicat est noté tuc , p ⊢ c p result où tuc est la valeur collectrice filtrée, p est le filtre et result peut prendre trois formes différentes. Il s’agit soit d’un environnement collecteur (si la valeur est toujours filtrée), soit du symbole ⊥ (si la valeur n’est jamais filtrée), soit du symbole ? accompagné d’un environnement collecteur (si la valeur collectrice contient à la fois des valeurs filtrées et des valeurs non filtrées). c-match Le cas où seule la première branche peut être évaluée est caractérisé par deux conditions. Premièrement, il doit exister des valeurs « filtrables » dans l’ensemble des valeurs possibles de l’expression filtrée (sinon, aucune branche n’est jamais évaluée). Deuxiè- mement, la valeur collectrice de l’expression filtrée est filtrée par le motif (ce qui signifie que toutes les valeurs instrumentées « filtrables » correspondantes sont filtrées par ce motif). L’environnement collecteur obtenu par le filtrage contient les liaisons des éventuels identificateurs contenus dans le motif. Chaque identificateur est lié à l’ensemble des valeurs filtrées par le motif. c-match-var Le cas où seule la seconde branche peut être évaluée est aussi caractérisé par la non-vacuité de l’ensemble des valeurs « filtrables » de l’expression filtrée ainsi que par une seconde condition. La seconde condition impose qu’aucune valeur « filtrable » de l’expression filtrée ne correspond au motif. c-match-unknown Comme pour l’évaluation d’une expression conditionnelle, il existe un cas incertain où on ne peut pas garantir que l’évaluation passera toujours pas la même branche. On caractérise ce cas par la condition de non-vacuité de l’ensemble des valeurs « filtrables » de l’expression filtrée et une seconde condition qui impose qu’il existe parmi les valeurs « filtrables » de l’expression filtrée certaines qui correspondent au motif et d’autres qui n’y correspondent pas. Dans ce cas, les dépendances des deux branches se retrouvent dans les dépendances du résultat. 1564.3. SÉMANTIQUE COLLECTRICE c-match-empty S’il n’existe aucune valeur « filtrable » pour l’expression filtrée alors on est en présence d’un programme erroné. c-constr-0 L’évaluation collectrice d’un constructeur constant est similaire à l’évaluation d’une constante numérique. Les t-dépendances ainsi que les v-dépendances sont donc vides et l’ensemble des valeurs simples instrumentées est réduit à un singleton contenant uniquement le constructeur. c-constr-1 L’évaluation d’un constructeur paramétré n’ajoute pas de dépendances. Les t-dépendances sont exactement les t-dépendances de la sous-expression et l’ensemble des v-dépendances est vide. Pour obtenir l’ensembles des valeurs simples instrumentées, on enrobe avec le constructeur chacune des valeurs simples instrumentées de la sous-expression. c-couple L’évaluation d’un couple suit le même principe que celle d’un constructeur paramétré sauf qu’il y a deux sous-expressions. c-letin La règle d’évaluation d’une liaison est habituelle. On ajoute simplement comme condition qu’il existe au moins une valeur possible pour e1. Cette condition n’est pas absolument nécessaire mais permet à l’analyse de fournir un résultat plus précis. c-letin-empty Dans le cas où il n’existe aucune valeur pour e1, il n’existe pas non plus de valeur pour l’expression globale. c-annot La règle d’évaluation d’une expression annotée est la même que dans la sé- mantique instrumentée. On ajoute simplement le label à l’ensemble des v-dépendances de l’expression. 4.3.3 Correction 4.3.3.1 Énoncé informel du théorème On veut montrer que la sémantique collectrice est une interprétation abstraite de la sémantique instrumentée multiple. C’est-à-dire qu’une évaluation par la sémantique 1574.3. SÉMANTIQUE COLLECTRICE instrumentée multiple peut être simulée par une évaluation collectrice et que la valeur ainsi obtenue sera moins précise que celle obtenue par une évaluation directe. Cette simulation nécessite une conversion de l’environnement et de la valeur retournée définies formellement à l’aide d’une fonction d’abstraction notée ↑ c im (•) (cf. figure 4.7) et d’une fonction de concrétisation notée ↑ im c (•) (cf. figure 4.8). Le lien entre l’évaluation directe par la sémantique instrumentée multiple et l’évaluation passant par la sémantique collectrice et les fonctions de conversion, est illustré en figure 4.2. 4.3.3.2 Illustration par l’exemple Pour illustrer le fonctionnement de la sémantique collectrice ainsi que la signification du théorème de correction que nous venons d’énoncer informellement, examinons un exemple simple. Nous nous limitons à un exemple très simple car les jugements d’évaluation deviennent vite volumineux. Rappelons que la sémantique instrumentée multiple ainsi que la sémantique collectrice n’ont pas pour but d’être utilisées en pratique. Leur rôle est de simplifier et de rendre modulaire la preuve de correction de l’analyse statique qui, elle, est utilisable en pratique. Exemple 1 : évaluation d’un couple Notons e1 le programme suivant : (x, l1:7) Nous nous intéressons à l’évaluation instrumentée multiple de ce programme dans un environnement instrumenté multiple tΓ im 1 contenant deux t-environnements instrumentés. tΓ im 1 = {(x, [ ∅ | [ {l2} | C1 ] ]); (x, [ ∅ | [ {l3} | C2 ] ])} En évaluant le programme e1 par la sémantique instrumentée multiple, dans l’environnement instrumenté multiple tΓ im 1 , on obtient le jugement suivant : tΓ im 1 ⊢ im e1 →→ { [ ∅ | [ ∅ | ( [ {l2} | C1 ], [ {l1} | 7 ]) ] ]; [ ∅ | [ ∅ | ( [ {l3} | C2 ], [ {l1} | 7 ]) ] ] } 1584.3. SÉMANTIQUE COLLECTRICE Nous allons maintenant nous intéresser à l’évaluation du même programme, dans le même environnement, mais en utilisant l’interprétation abstraite fournie par la sémantique collectrice. Commençons par abstraire l’environnement instrumenté multiple tΓ im 1 en un environnement collecteur que nous noterons tΓ c 1 : ↑ c im(tΓ im 1 ) = (x, [ ∅ | {l2; l3} | {C1; C2} ]) = tΓ c 1 Nous procédons alors à l’évaluation de e1 dans l’environnement collecteur obtenu après abstraction : tΓ c 1 ⊢ c e1 →→ [ ∅ | ∅ | { ( [ {l2; l3} | C1 ], [ {l1} | 7 ]); ( [ {l2; l3} | C2 ], [ {l1} | 7 ]) } ] Nous obtenons enfin la valeur instrumentée multiple correspondante en utilisant la fonction de concrétisation : ↑ im c ( [ ∅ | ∅ | { ( [ {l2; l3} | C1 ], [ {l1} | 7 ]); ( [ {l2; l3} | C2 ], [ {l1} | 7 ]) } ]) = { [ ∅ | [ ∅ | ( [ {l2; l3} | C1 ], [ {l1} | 7 ]) ] ]; [ ∅ | [ ∅ | ( [ {l2; l3} | C2 ], [ {l1} | 7 ]) ] ] } Nous constatons alors que la valeur instrumentée multiple obtenue directement est plus précise que celle obtenue par l’interprétation abstraite. En effet, cette dernière contient des dépendances supplémentaires. Formellement, nous avons la relation suivante : { [ ∅ | [ ∅ | ( [ {l2} | C1 ], [ {l1} | 7 ]) ] ]; [ ∅ | [ ∅ | ( [ {l3} | C2 ], [ {l1} | 7 ]) ] ] } ⊆im { [ ∅ | [ ∅ | ( [ {l2; l3} | C1 ], [ {l1} | 7 ]) ] ]; [ ∅ | [ ∅ | ( [ {l2; l3} | C2 ], [ {l1} | 7 ]) ] ] } 4.3.3.3 Énoncé formel du théorème Avant d’énoncer formellement le théorème de correction de la sémantique collectrice, il nous faut définir formellement quelques notions qui serviront à exprimer le théorème. Tout d’abord, nous définissons une fonction d’abstraction (cf. figure 4.7) ainsi qu’une fonction de concrétisation (cf. figure 4.8). La fonction d’abstraction (notée ↑ c im (•)) permet de transformer un ensemble de t-environnements instrumentés en un environnement 1594.3. SÉMANTIQUE COLLECTRICE abstr-im-env-empty tΓ im = {{}} ↑ c im(tΓ im) = {} abstr-im-env-cons tΓ im = {(x, tui ) ⊕ tΓ i | ∀tui ∈ v im.∀tΓ i ∈ tΓ c } ↑c im(v im) = tuc ↑ c im(tΓ im) = (x, tuc )⊕ ↑c im(tΓ c ) abstr-im-val ∀l.l ∈ tdc ⇔ ∃tdi .l ∈ tdi ∧ ∃u i . [ tdi | u i ] ∈ v im ∀l.l ∈ d c ⇔ ∃d i .l ∈ d i ∧ ∃(tdi , vi ). [ tdi | [ d i | v i ] ] ∈ v im vsi = {v i | ∃(tdi , di ). [ tdi | [ d i | v i ] ] ∈ v im} ↑ c im(v im) = [ tdc | d c | vsi ] Figure 4.7 – Sémantique collectrice : Définition de la fonction d’abstraction collecteur. La règle d’inférence abstr-im-env-cons se lit ainsi : pour abstraire un environnement tΓ im qui est de la forme {(x, tui ) ⊕ tΓ i | ∀tui ∈ v im.∀tΓ i ∈ tΓ c} pour une certaine valeur instrumentée multiple v im et un certain environnement collecteur tΓ c , on construit une valeur collectrice tuc pour x à partir de v im et on ajoute cette liaison à l’abstraction de tΓ c . La fonction de concrétisation (notée ↑ im c (•)) permet quant à elle de transformer une valeur collectrice en un ensemble de t-valeurs instrumentées. Nous pouvons alors composer ces fonctions avec la sémantique collectrice pour établir une simulation de la sémantique instrumentée multiple. Pour cela, nous commençons par abstraire l’environnement d’évaluation, puis nous évaluons le programme considéré à l’aide de la sémantique collectrice et enfin nous concrétisons la valeur collectrice. Il nous faut ensuite pouvoir comparer la valeur instrumentée multiple obtenue directement à l’aide de la sémantique instrumentée multiple et celle obtenue en passant par la sémantique collectrice. Pour cela, nous définissons une relation d’ordre (cf. figure 4.9 et 4.10) sur les valeurs instrumentées multiples. Nous exprimerons alors dans le théorème de correction que la valeur instrumentée multiple obtenue directement à l’aide de la sémantique instrumentée multiple est plus petite (ie. plus précise) que celle obtenue en passant par la sémantique collectrice. Le théorème de correction de la sémantique collectrice s’exprime alors ainsi : Théorème 4.3.1 (Correction de la sémantique collectrice). ∀(tΓ im, e, vim, tuc , tΓ c ). 1604.3. SÉMANTIQUE COLLECTRICE ↑ im c ( [ tdc | d c | vsi ]) := { [ tdc | [ d c | v i ] ] | v i ∈ vsi} ↑ im c (tΓ c ) := appendim c (tΓ c , {}) append-c-im-empty tΓ c = {} appendim c (tΓ c , tΓ im) = tΓ im append-c-im-cons tΓ c = (x, [ tdc | d c | vsi ]) ⊕ tΓ ′c tΓ ′im = appendim c (tΓ ′c , tΓ im) appendim c (tΓ c , tΓ im) = {(x, [ tdc | [ d c | v i ] ]) ⊕ tΓ i | v i ∈ vsi , tΓ i ∈ tΓ ′im} Figure 4.8 – Sémantique collectrice : Définition de la fonction de concrétisation le-td ∀l ∈ tdi 1 . l ∈ tdi 2 tdi 1 ⊆ tdi 2 le-d ∀l ∈ d i 1 . l ∈ d i 2 d i 1 ⊆ d i 2 le-ti-val tdi 1 ⊆ tdi 2 u i 1 ⊆ i u i 2 [ tdi 1 | u i 1 ] ⊆ i [ tdi 2 | u i 2 ] le-i-val d i 1 ⊆ d i 2 v i 1 ⊆ i v i 2 [ d i 1 | v i 1 ] ⊆ i [ d i 2 | v i 2 ] le-i-val-num n ⊆ i n le-i-val-bool b ⊆ i b le-i-val-constr0 C ⊆ i C le-i-val-constr1 u i 1 ⊆ i u i 2 D(u i 1 ) ⊆ i D(u i 2 ) le-i-val-couple u i 1 ⊆ i u i 2 u ′i 1 ⊆ i u ′i 2 (u i 1 , u′i 1 ) ⊆ i (u i 2 , u′i 2 ) le-i-val-closure Γ i 1 ⊆ i Γ i 2 < λx.e, Γ i 1 >⊆ i< λx.e, Γ i 2 >) le-i-val-rec-closure Γ i 1 ⊆ i Γ i 2 < recf.x.e, Γ i 1 >⊆ i< recf.x.e, Γ i 2 >) le-i-env-empty {} ⊆i {} le-i-env-cons u i 1 ⊆ i u i 2 Γ i 1 ⊆ i Γ i 2 (x, ui 1 ) ⊕ Γ i 1 ⊆ i (x, ui 2 ) ⊕ Γ i 2 le-ti-env-empty {} ⊆i {} le-ti-env-cons tui 1 ⊆ i u i 2 tΓ i 1 ⊆ i tΓ i 2 (x, tui 1 ) ⊕ tΓ i 1 ⊆ i (x, tui 2 ) ⊕ tΓ i 2 Figure 4.9 – Relation d’ordre sur les valeurs et environnements instrumentés le-im-val ∀tui 1 ∈ v im 1 . ∃tui 2 ∈ v im 2 . tui 1 ⊆ i tui 2 v im 1 ⊆ im v im 2 le-im-env ∀tΓ i 1 ∈ tΓ im 1 . ∃tΓ i 2 ∈ tΓ im 2 . tΓ i 1 ⊆ i tΓ i 2 tΓ im 1 ⊆ im tΓ im 2 Figure 4.10 – Relation d’ordre sur les valeurs et environnements instrumentés multiples 1614.3. SÉMANTIQUE COLLECTRICE tΓ im ⊢ im e →→ v im ⇒ tΓ c =↑ c im(tΓ im) ⇒ tΓ c ⊢ c e →→ tuc ⇒ v im ⊆im ↑ im c (tuc ) 4.3.3.4 Preuve de correction La preuve est faite par induction sur le jugement de la sémantique collectrice. On obtient alors 20 cas à prouver, suivant les 20 règles d’inférences de la sémantique collectrice. Nous expliquons ici quelques cas pour permettre au lecteur de comprendre plus facilement la manière dont la preuve a été faite. La preuve complète est disponible sous forme de code source Coq. cas c-num Ce cas est trivial, tout comme le cas c-constr-0. Nous allons tout de même l’expliquer rapidement pour illustrer le principe de la preuve qui est également utilisé dans les autres cas. Nous avons les hypothèses suivantes : tΓ im ⊢ im n →→ v im tΓ c =↑ c im(tΓ im) tΓ c ⊢ c n →→ [ ∅ | ∅ | {n} ] On veut alors prouver la propriété ci-dessous : v im ⊆ im↑ im c ( [ ∅ | ∅ | {n} ]) La règle de la sémantique instrumentée multiple i-multiple nous fait appliquer la règle i-num de la sémantique instrumentée. Pour tout environnement tΓ i ∈ tΓ im, cette dernière nous donne la valeur [ ∅ | [ ∅ | n ] ]. On en déduit que v im est le singleton { [ ∅ | [ ∅ | n ] ]}. D’autre part, la concrétisation de la valeur collectrice vaut : ↑ im c ( [ ∅ | ∅ | {n} ]) = { [ ∅ | [ ∅ | n ] ]}. Pour conclure, il nous suffit donc de prouver la propriété ci-dessous qui est évidente puisque la relation d’ordre sur les valeurs instrumentées multiples est réflexive. { [ ∅ | [ ∅ | n ] ]} ⊆im { [ ∅ | [ ∅ | n ] ]} 1624.3. SÉMANTIQUE COLLECTRICE cas c-constr-1 Ce cas est légèrement plus complexe que le précédent du fait que l’expression évaluée possède une sous-expression. Nous avons les hypothèses suivantes dont une hypothèse d’induction : i-multiple v im = {tui | ∃tΓ i ∈ tΓ im. tΓ i ⊢ i D(e) →→ tui } tΓ im ⊢ im D(e) →→ v im tΓ c =↑ c im(tΓ im) c-constr-1 tΓ c ⊢ c e →→ [ tdc | d c | vsi ] tΓ c ⊢ c D(e) →→ [ tdc | ∅ | {D( [ d c | v i ]) | v i ∈ vsi } ] i-multiple v ′im = {tui | ∃tΓ i ∈ tΓ im. tΓ i ⊢ i e →→ tui } tΓ im ⊢ im e →→ v ′im v ′im ⊆ im↑ im c ( [ tdc | d c | vsi ]) Nous devons alors montrer cette propriété : v im ⊆ im↑ im c ( [ tdc | ∅ | {D( [ d c | v i ]) | v i ∈ vsi } ]) Pour cela, nous montrons que pour un élément quelconque de tui ∈ v im, il existe un élément plus grand dans ↑ im c ( [ tdc | ∅ | {D( [ d c | v i ]) | v i ∈ vsi} ]). Puisque tui appartient à v im, il est issu d’un jugement d’évaluation instrumentée déduit de la règle d’inférence ci-dessous (en notant tui = [ tdi | [ ∅ | D(u i ) ] ]) : i-constr-1 tΓ i ⊢ i e →→ [ tdi | u i ] tΓ i ⊢ i D(e) →→ [ tdi | [ ∅ | D(u i ) ] ] Nous avons alors [ tdi | u i ] ∈ v ′im et nous pouvons donc appliquer notre hypothèse d’induction pour en déduire qu’il existe une valeur [ tdi 2 | [ d i 2 | v i 2 ] ] telle que : [ tdi 2 | [ d i 2 | v i 2 ] ] ∈↑im c ( [ tdc | d c | vsi ]) [ tdi | u i ] ⊆ i [ tdi 2 | [ d i 2 | v i 2 ] ] De la première de ces deux propriétés, nous déduisons que tdi 2 = tdc , d i 2 = d c et v i 2 ∈ vsi . Nous pouvons alors construire la valeur [ tdc | [ ∅ | D( [ d c | v i 2 ]) ] ] et montrer qu’elle 1634.3. SÉMANTIQUE COLLECTRICE respecte les conditions nous permettant de conclure : [ tdc | [ ∅ | D( [ d c | v i 2 ]) ] ] ∈↑im c ( [ tdc | ∅ | {D( [ d c | v i ]) | v i ∈ vsi } ]) [ tdi | [ ∅ | D(u i ) ] ] ⊆ i [ tdc | [ ∅ | D( [ d c | v i 2 ]) ] ] cas c-ident Une des particularités de la sémantique collectrice est d’avoir des règles d’inférence donnant une sémantique à un programme erroné, par exemple un programme évalué dans un environnement où certains identificateurs libres ne sont pas définis. Nous présentons donc la preuve des cas c-ident et c-ident-empty pour se rendre compte de la manière dont sont traités les cas d’erreur. Commençons par le cas c-ident. Nous avons les hypothèses suivantes : i-multiple v im = {tui | ∃tΓ i ∈ tΓ im. tΓ i ⊢ i x →→ tui } tΓ im ⊢ im x →→ v im tΓ c =↑ c im(tΓ im) c-ident tuc = tΓ c [x] tΓ c ⊢ c x →→ tuc Nous devons alors montrer cette proriété : v im ⊆ im ↑ im c (tuc ) Pour cela, supposons que nous avons une t-valeur instrumentée tui ∈ v im et montrons qu’il existe une t-valeur instrumentée tui 2 ∈ ↑im c (tuc ) telle que tui ⊆i tui 2 . Puisque tui ∈ v im, il existe un t-environnement instrumenté tΓ i ∈ tΓ im tel que : i-ident tui = tΓ i [x] tΓ i ⊢ i x →→ tui D’après la définition des fonctions d’abstraction et de concrétisation, nous pouvons déduire qu’il existe une valeur tui 2 ∈↑im c (tΓ c [x]) telle que tui ⊆i tui 2 , ce qui nous permet de conclure. cas c-ident-empty Dans ce cas, nous avons les hypothèses suivantes : i-multiple v im = {tui | ∃tΓ i ∈ tΓ im. tΓ i ⊢ i x →→ tui } tΓ im ⊢ im x →→ v im tΓ c =↑ c im(tΓ im) c-ident-empty x ̸∈ support(tΓ c ) tΓ c ⊢ c x →→ [ ∅ | ∅ | ∅ ] 1644.3. SÉMANTIQUE COLLECTRICE Et nous devons montrer : v im ⊆ im ↑ im c ( [ ∅ | ∅ | ∅ ]) Puisque ↑ im c ( [ ∅ | ∅ | ∅ ]) = ∅, il nous faut montrer que v im = ∅. D’après la définition de la fonction d’abstraction, les identificateurs présents dans n’importe quel élément de tΓ im sont les mêmes que ceux présents dans tΓ c . Ainsi, puisque l’identificateur x n’est pas présent dans l’environnement tΓ c , alors il n’est présent dans aucun t-environnement instrumenté appartenant à tΓ im. Il n’existe alors aucune règle d’inférence permettant d’évaluer l’expression x dans un t-environnement instrumenté appartenant à tΓ im. On peut donc conclure puisque v im = ∅. cas c-apply Le cas de l’application est un des cas les plus complexes en raison de la complexité des règles d’inférence correspondantes dans la sémantique collectrice et dans la sémantique instrumentée. Nous avons à notre disposition les hypothèses de l’énoncé du thèorème ainsi que deux hypothèses d’induction, correspondant aux deux sous-termes de l’expression : i-multiple v im = {tui | ∃tΓ i ∈ tΓ im. tΓ i ⊢ i e1 e2 →→ tui } tΓ im ⊢ im e1 e2 →→ v im tΓ c =↑ c im(tΓ im) c-apply tΓ c ⊢ c e1 →→ [ tdc 1 | d c 1 | vsi 1 ] tΓ c ⊢ c e2 →→ [ tdc 2 | d c 2 | vsi 2 ] v ′im = multiple_instrumented_application(tdc 1 , dc 1 , vsi 1 , tdc 2 , dc 2 , vsi 2 ) (∀l. l ∈ tdc ⇔ (∃(tdi , di , vi ). l ∈ tdi ∧ [ tdi | [ d i | v i ] ] ∈ v ′im)) (∀l. l ∈ d c ⇔ (∃(tdi , di , vi ). l ∈ d i ∧ [ tdi | [ d i | v i ] ] ∈ v ′im)) vsi = {v i | ∃(tdi , di ). [ tdi | [ d i | v i ] ] ∈ v ′im} tΓ c ⊢ c e1 e2 →→ [ tdc | d c | vsi ] i-multiple v im 1 = {tui | ∃tΓ i ∈ tΓ im. tΓ i ⊢ i e1 →→ tui } tΓ im ⊢ im e1 →→ v im 1 i-multiple v im 2 = {tui | ∃tΓ i ∈ tΓ im. tΓ i ⊢ i e2 →→ tui } tΓ im ⊢ im e1 →→ v im 2 v im 1 ⊆ im ↑ im c ( [ tdc 1 | d c 1 | vsi 1 ]) v im 2 ⊆ im ↑ im c ( [ tdc 2 | d c 2 | vsi 2 ]) 1654.3. SÉMANTIQUE COLLECTRICE Et nous devons montrer : v im ⊆ im ↑ im c ( [ tdc | d c | vsi ]) Pour cela, supposons que nous avons une t-valeur instrumentée tui ∈ v im et montrons qu’il existe une t-valeur instrumentée tu′i ∈ ↑im c ( [ tdc | d c | vsi ]) telle que tui ⊆i tu′i . Puisque tui ∈ v im, il existe une évaluation instrumentée de l’expression e1 e2 en la t-valeur instrumentée tui dans un certain t-environnement instrumenté tΓ i ∈ tΓ im. Il y a alors deux cas possibles selon que la règle d’inférence de cette évaluation est i-apply ou i-apply-rec. – cas i-apply i-apply tΓ i ⊢ i e1 →→ [ tdi 1 | [ d i 1 | < λx.e, Γ i 1 > ] ] tΓ i ⊢ i e2 →→ tui 2 tui 2 = [ tdi 2 | u i 2 ] (x, tui 2 )⊕ ↑ti i (Γi 1 ) ⊢ i e →→ [ tdi | [ d i | v i ] ] tΓ i ⊢ i e1 e2 →→ [ tdi 1 ∪ tdi 2 ∪ tdi ∪ d i 1 | [ d i 1 ∪ d i | v i ] ] tui = [ tdi 1 ∪ tdi 2 ∪ tdi ∪ d i 1 | [ d i 1 ∪ d i | v i ] ] D’après nos hypothèses d’induction, nous savons qu’il existe des t-valeurs instrumentées tu′i 1 ∈ ↑im c ( [ tdc 1 | d c 1 | vsi 1 ]) et tu′i 2 ∈ ↑im c ( [ tdc 2 | d c 2 | vsi 2 ]) vérifiant les propriétés suivantes : [ tdi 1 | [ d i 1 | < λx.e, Γ i 1 > ] ] ⊆i tu′i 1 tui 2 ⊆i tu′i 2 Puisque tu′i 1 ∈ ↑im c ( [ tdc 1 | d c 1 | vsi 1 ]), nous savons qu’il existe une valeur simple instrumentée v ′i 1 telle que tu′i 1 = [ tdc 1 | [ d c 1 | v ′i 1 ] ] et v ′i 1 ∈ vsi 1 . De même, il existe une valeur simple instrumentée v ′i 2 telle que tu′i 2 = [ tdc 2 | [ d c 2 | v ′i 2 ] ] et v ′i 2 ∈ vsi 2 . Nous déplions alors la définition de la relation d’ordre pour obtenir les relations suivantes (en notant tui 2 = [ tdi 2 | [ d i 2 | v i 2 ] ]) : tdi 1 ⊆i tdc 1 d i 1 ⊆i d c 1 < λx.e, Γ i 1 >⊆i v ′i 1 v ′i 1 =< λx.e, Γ ′i 1 > Γ i 1 ⊆i Γ ′i 1 tdi 2 ⊆i tdc 2 d i 2 ⊆i d c 2 v i 2 ⊆i v ′i 2 1664.3. SÉMANTIQUE COLLECTRICE Nous utilisons le lemme intermédiaire suivant pour déduire un jugement d’évaluation instrumentée de l’expression e dans l’environnement (x, tu′i 2 )⊕ ↑ti i (Γ′i 1 ). La preuve de ce lemme a été réalisée en Coq (Lemma ival_of_in_le_itenv). Voici son énoncé : ∀(Γi , Γ ′i , e, tui ).(Γi 1 ⊆ i Γ ′i 1 ) ⇒ (tΓ i ⊢ i e →→ tui ) ⇒ ∃tu′i .(tΓ ′i ⊢ i e →→ tu′i )∧(tui ⊆ i tu′i ) Nous obtenons alors une t-valeur instrumentée [ td′i | [ d ′i | v ′i ] ] vérifiant le jugement d’évaluation instrumentée suivant et la relation d’ordre suivante : (x, tu′i 2 )⊕ ↑ti i (Γ′i 1 ) ⊢ i e →→ [ td′i | [ d ′i | v ′i ] ] [ tdi | [ d i | v i ] ] ⊆ i [ td′i | [ d ′i | v ′i ] ] Pour conclure le cas i-apply, il nous faut maintenant montrer que la t-valeur instrumentée [ tdc | [ d c | v ′i ] ] convient. C’est à dire qu’elle vérifie les deux propriétés suivantes : [ tdc | [ d c | v ′i ] ] ∈ ↑im c ( [ tdc | d c | vsi ]) et tui ⊆i [ tdc | [ d c | v ′i ] ]. Commençons par la première des deux propriétés à prouver. En dépliant la définition de la fonction de concrétisation, la propriété à prouver se réduit à v ′i ∈ vsi . Pour cela, il nous faut montrer ∃(tdi , di ). [ tdi | [ d i | v ′i ] ] ∈ v ′im. Nous allons donc montrer que [ tdc 1∪tdc 2∪td′i∪d c 1 | [ d c 1∪d ′i | v ′i ] ] ∈ v ′im. Nous déplions ensuite la valeur de v ′im ainsi que celle de multiple_instrumented_application(tdc 1 , dc 1 , vsi 1 , tdc 2 , dc 2 , vsi 2 ). Ainsi, la propriété à montrer devient : [ tdc 1 ∪ tdc 2 ∪ td′i ∪ d c 1 | [ d c 1 ∪ d ′i | v ′i ] ] ∈ { tui | ( ∃ < λx.e, Γ i 1 >∈ vsi 1 . ∃v i 2 ∈ vsi 2 . ∃(tdi , ti , vi ). ∃tui 2 = [ tdc 2 | [ d c 2 | v i 2 ] ]. (x, tui 2 )⊕ ↑ti i (Γi 1 ) ⊢ i e →→ [ tdi | [ d i | v i ] ] ∧ tui = [ tdc 1 ∪ tdc 2 ∪ tdi ∪ d c 1 | [ d c 1 ∪ d i | v i ] ] ) ∨ ( ∃ < recf.x.e, Γ i 1 >∈ vsi 1 . ∃v i 2 ∈ vsi 2 . ∃(tdi , ti , vi ). ∃tui f = [ tdc 1 | [ d c 1 | < recf.x.e, Γ i 1 > ] ]. ∃tui 2 = [ tdc 2 | [ d c 2 | v i 2 ] ]. (f, tui f ) ⊕ (x, tui 2 )⊕ ↑ti i (Γi 1 ) ⊢ i e →→ [ tdi | [ d i | v i ] ] ∧ tui = [ tdc 1 ∪ tdc 2 ∪ tdi ∪ d c 1 | [ d c 1 ∪ d i | v i ] ] ) } 1674.3. SÉMANTIQUE COLLECTRICE Puisque nous sommes dans le cas de l’application d’une fonction non récursive, c’est la première partie de la disjonction que nous allons prouver. Nous prouvons cette propriété à l’aide des propriétés suivantes déjà prouvées plus haut : < λx.e, Γ ′i 1 >∈ vsi 1 v ′i 2 ∈ vsi 2 (x, tu′i 2 )⊕ ↑ti i (Γ′i 1 ) ⊢ i e →→ [ td′i | [ d ′i | v ′i ] ] Montrons maintenant la seconde propriété qui nous permettra de conclure. Après avoir déplié la valeur de tui elle exprime ainsi : [ tdi 1 ∪ tdi 2 ∪ tdi ∪ d i 1 | [ d i 1 ∪ d i | v i ] ] ⊆ i [ tdc | [ d c | v ′i ] ] En dépliant la définition de la relation d’ordre, nous obtenons les trois propriétés suivantes à prouver : ∀l ∈ (tdi 1 ∪ tdi 2 ∪ tdi ∪ d i 1 ).l ∈ tdc ∀l ∈ (d i 1 ∪ d i ).l ∈ d c v i ⊆i v ′i Prouvons la propriété concernant les t-dépendances. Soit l ∈ (tdi 1 ∪ tdi 2 ∪ tdi ∪ d i 1 ). D’après la définition de tdc , il nous faut montrer que ∃(tdi , di , vi ). l ∈ tdi ∧ [ tdi | [ d i | v i ] ] ∈ v ′im. Nous savons déjà que [ tdc 1 ∪ tdc 2 ∪ td′i ∪ d c 1 | [ d c 1 ∪ d ′i | v ′i ] ] ∈ v ′im Montrons donc que l ∈ (tdc 1 ∪ tdc 2 ∪ td′i ∪ d c 1 ). Cette propriété est issue des relations d’ordre déjà montrées et de la compatibilité de la relation d’ordre avec la concaténation 1 . Les relations concernées sont : tdi 1 ⊆i tdc 1 , tdi 2 ⊆i tdc 2 , [ tdi | [ d i | v i ] ] ⊆i [ td′i | [ d ′i | v ′i ] ] et d i 1 ⊆i d c 1 . Prouvons la propriété concernant les v-dépendances. Soit l ∈ (d i 1∪d i ). D’après la définition de d c , il nous faut montrer que ∃(tdi , di , vi ). l ∈ d i ∧ [ tdi | [ d i | v i ] ] ∈ v ′im. Nous savons déjà que [ tdc 1 ∪ tdc 2 ∪ td′i ∪ d c 1 | [ d c 1 ∪ d ′i | v ′i ] ] ∈ v ′im Montrons donc que l ∈ (d c 1 ∪ d ′i ). Cette propriété est issue des relations d’ordre déjà montrées et de la compatibilité de la relation d’ordre avec la concaténation 2 . Les relations concernées sont : d i 1 ⊆i d c 1 et [ tdi | [ d i | v i ] ] ⊆i [ td′i | [ d ′i | v ′i ] ]. 1. ∀(td1, td2, td′ 1, td′ 2). (td1 ⊆ td′ 1) ∧ (td2 ⊆ td′ 2) ⇒ td1 ∪ td2 ⊆ td′ 1 ∪ td′ 2 2. ∀(d1, d2, d′ 1, d′ 2). (d1 ⊆ d ′ 1) ∧ (d2 ⊆ d ′ 2) ⇒ d1 ∪ d2 ⊆ d ′ 1 ∪ d ′ 2 1684.3. SÉMANTIQUE COLLECTRICE La propriété concernant les valeurs simples instrumentées vient directement de la relation [ tdi | [ d i | v i ] ] ⊆i [ td′i | [ d ′i | v ′i ] ] prouvée précédemment. Le cas i-apply est donc complètement prouvé. – cas i-apply-rec i-apply-rec tΓ i ⊢ i e1 →→ tui 1 tui 1 = [ tdi 1 | [ d i 1 | < recf.x.e, Γ i 1 > ] ] tΓ i ⊢ i e2 →→ tui 2 tui 2 = [ tdi 2 | u i 2 ] (f, tui 1 ) ⊕ (x, tui 2 )⊕ ↑ti i (Γi 1 ) ⊢ i e →→ [ tdi | [ d i | v i ] ] tΓ i ⊢ i e1 e2 →→ [ tdi 1 ∪ tdi 2 ∪ tdi ∪ d i 1 | [ d i 1 ∪ d i | v i ] ] tui = [ tdi 1 ∪ tdi 2 ∪ tdi ∪ d i 1 | [ d i 1 ∪ d i | v i ] ] D’après nos hypothèses d’induction, nous savons qu’il existe des t-valeurs instrumentées tu′i 1 ∈ ↑im c ( [ tdc 1 | d c 1 | vsi 1 ]) et tu′i 2 ∈ ↑im c ( [ tdc 2 | d c 2 | vsi 2 ]) vérifiant les propriétés suivantes : [ tdi 1 | [ d i 1 | < recf.x.e, Γ i 1 > ] ] ⊆i tu′i 1 tui 2 ⊆i tu′i 2 Puisque tu′i 1 ∈ ↑im c ( [ tdc 1 | d c 1 | vsi 1 ]), nous savons qu’il existe une valeur simple instrumentée v ′i 1 telle que tu′i 1 = [ tdc 1 | [ d c 1 | v ′i 1 ] ] et v ′i 1 ∈ vsi 1 . De même, il existe une valeur simple instrumentée v ′i 2 telle que tu′i 2 = [ tdc 2 | [ d c 2 | v ′i 2 ] ] et v ′i 2 ∈ vsi 2 . Nous déplions alors la définition de la relation d’ordre pour obtenir les relations suivantes (en notant tui 2 = [ tdi 2 | [ d i 2 | v i 2 ] ]) : tdi 1 ⊆i tdc 1 d i 1 ⊆i d c 1 < recf.x.e, Γ i 1 >⊆i v ′i 1 v ′i 1 =< recf.x.e, Γ ′i 1 > Γ i 1 ⊆i Γ ′i 1 tdi 2 ⊆i tdc 2 d i 2 ⊆i d c 2 v i 2 ⊆i v ′i 2 Comme dans le cas précédent, nous utilisons le lemme intermédiaire suivant pour déduire un jugement d’évaluation instrumentée de l’expression e dans l’environnement (f, tu′i 1 ) ⊕ (x, tu′i 2 )⊕ ↑ti i (Γ′i 1 ). La preuve de ce lemme a été réalisée en Coq (Lemma ival_of_in_le_itenv). Voici son énoncé : ∀(Γi , Γ ′i , e, tui ).(Γi 1 ⊆ i Γ ′i 1 ) ⇒ (tΓ i ⊢ i e →→ tui ) ⇒ ∃tu′i .(tΓ ′i ⊢ i e →→ tu′i )∧(tui ⊆ i tu′i ) 1694.3. SÉMANTIQUE COLLECTRICE Nous obtenons alors une t-valeur instrumentée [ td′i | [ d ′i | v ′i ] ] vérifiant le jugement d’évaluation instrumentée suivant et la relation d’ordre suivante : (f, tu′i 1 ) ⊕ (x, tu′i 2 )⊕ ↑ti i (Γ′i 1 ) ⊢ i e →→ [ td′i | [ d ′i | v ′i ] ] [ tdi | [ d i | v i ] ] ⊆ i [ td′i | [ d ′i | v ′i ] ] Pour conclure le cas i-apply-rec, il nous faut maintenant montrer que la t-valeur instrumentée [ tdc | [ d c | v ′i ] ] convient. C’est à dire qu’elle vérifie les deux propriétés suivantes : [ tdc | [ d c | v ′i ] ] ∈ ↑im c ( [ tdc | d c | vsi ]) et tui ⊆i [ tdc | [ d c | v ′i ] ]. Commençons par la première des deux propriétés à prouver. En dépliant la définition de la fonction de concrétisation, la propriété à prouver se réduit à v ′i ∈ vsi . Pour cela, il nous faut montrer ∃(tdi , di ). [ tdi | [ d i | v ′i ] ] ∈ v ′im. Nous allons donc montrer que [ tdc 1∪tdc 2∪td′i∪d c 1 | [ d c 1∪d ′i | v ′i ] ] ∈ v ′im. Nous déplions ensuite la valeur de v ′im ainsi que celle de multiple_instrumented_application(tdc 1 , dc 1 , vsi 1 , tdc 2 , dc 2 , vsi 2 ). Ainsi, la propriété à montrer devient : [ tdc 1 ∪ tdc 2 ∪ td′i ∪ d c 1 | [ d c 1 ∪ d ′i | v ′i ] ] ∈ { tui | ( ∃ < λx.e, Γ i 1 >∈ vsi 1 . ∃v i 2 ∈ vsi 2 . ∃(tdi , ti , vi ). ∃tui 2 = [ tdc 2 | [ d c 2 | v i 2 ] ]. (x, tui 2 )⊕ ↑ti i (Γi 1 ) ⊢ i e →→ [ tdi | [ d i | v i ] ] ∧ tui = [ tdc 1 ∪ tdc 2 ∪ tdi ∪ d c 1 | [ d c 1 ∪ d i | v i ] ] ) ∨ ( ∃ < recf.x.e, Γ i 1 >∈ vsi 1 . ∃v i 2 ∈ vsi 2 . ∃(tdi , ti , vi ). ∃tui f = [ tdc 1 | [ d c 1 | < recf.x.e, Γ i 1 > ] ]. ∃tui 2 = [ tdc 2 | [ d c 2 | v i 2 ] ]. (f, tui f ) ⊕ (x, tui 2 )⊕ ↑ti i (Γi 1 ) ⊢ i e →→ [ tdi | [ d i | v i ] ] ∧ tui = [ tdc 1 ∪ tdc 2 ∪ tdi ∪ d c 1 | [ d c 1 ∪ d i | v i ] ] ) } Puisque nous sommes dans le cas de l’application d’une fonction récursive, c’est la seconde partie de la disjonction que nous allons prouver. Nous prouvons cette propriété à l’aide des propriétés suivantes déjà prouvées plus haut : < recf.x.e, Γ ′i 1 >∈ vsi 1 1704.3. SÉMANTIQUE COLLECTRICE v ′i 2 ∈ vsi 2 (f, tu′i 1 ) ⊕ (x, tu′i 2 )⊕ ↑ti i (Γ′i 1 ) ⊢ i e →→ [ td′i | [ d ′i | v ′i ] ] Montrons maintenant la seconde propriété qui nous permettra de conclure. Après avoir déplié la valeur de tui elle exprime ainsi : [ tdi 1 ∪ tdi 2 ∪ tdi ∪ d i 1 | [ d i 1 ∪ d i | v i ] ] ⊆ i [ tdc | [ d c | v ′i ] ] En dépliant la définition de la relation d’ordre, nous obtenons les trois propriétés suivantes à prouver : ∀l ∈ (tdi 1 ∪ tdi 2 ∪ tdi ∪ d i 1 ).l ∈ tdc ∀l ∈ (d i 1 ∪ d i ).l ∈ d c v i ⊆i v ′i Nous procédons de la même manière que dans le cas i-apply. Prouvons la propriété concernant les t-dépendances. Soit l ∈ (tdi 1 ∪ tdi 2 ∪ tdi ∪ d i 1 ). D’après la définition de tdc , il nous faut montrer que ∃(tdi , di , vi ). l ∈ tdi ∧ [ tdi | [ d i | v i ] ] ∈ v ′im. Nous savons déjà que [ tdc 1 ∪ tdc 2 ∪ td′i ∪ d c 1 | [ d c 1 ∪ d ′i | v ′i ] ] ∈ v ′im Montrons donc que l ∈ (tdc 1 ∪ tdc 2 ∪ td′i ∪ d c 1 ). Cette propriété est issue des relations d’ordre déjà montrées et de la compatibilité de la relation d’ordre avec la concaténation. Les relations concernées sont : tdi 1 ⊆i tdc 1 , tdi 2 ⊆i tdc 2 , [ tdi | [ d i | v i ] ] ⊆i [ td′i | [ d ′i | v ′i ] ] et d i 1 ⊆i d c 1 . Prouvons la propriété concernant les v-dépendances. Soit l ∈ (d i 1∪d i ). D’après la définition de d c , il nous faut montrer que ∃(tdi , di , vi ). l ∈ d i ∧ [ tdi | [ d i | v i ] ] ∈ v ′im. Nous savons déjà que [ tdc 1 ∪ tdc 2 ∪ td′i ∪ d c 1 | [ d c 1 ∪ d ′i | v ′i ] ] ∈ v ′im. Montrons donc que l ∈ (d c 1 ∪ d ′i ). Cette propriété est issue des relations d’ordre déjà montrées et de la compatibilité de la relation d’ordre avec la concaténation. Les relations concernées sont : d i 1 ⊆i d c 1 et [ tdi | [ d i | v i ] ] ⊆i [ td′i | [ d ′i | v ′i ] ]. La propriété concernant les valeurs simples instrumentées vient directement de la relation [ tdi | [ d i | v i ] ] ⊆i [ td′i | [ d ′i | v ′i ] ] prouvée précédemment. Le cas i-apply-rec est donc complètement prouvé. Ce qui conclut le cas c-apply. 1714.4. SÉMANTIQUE ABSTRAITE 4.4 Sémantique abstraite Ce chapitre présente enfin la sémantique abstraite, qui constitue ce que nous appelons notre analyse statique. Le but de cette analyse est de calculer les dépendances de n’importe quel programme écrit dans notre langage et de permettre à l’utilisateur de spécifier les environnements d’évaluation possibles avec souplesse. La sémantique abstraite est une interprétation abstraite de la sémantique collectrice présentée dans le chapitre précédent. La sémantique collectrice avait permis de faire ressortir le calcul des dépendances lors d’un ensemble d’évaluations instrumentées simultanées. Cependant, cette sémantique n’était pas calculable compte tenu des ensembles de valeurs simples instrumentées éventuellement infinis présents dans les valeurs collectrices. La sémantique abstraite vient résoudre ce problème de non-calculabilité en remplaçant ces ensembles de valeurs simples par un nombre fini de valeurs simples abstraites. Elle présente deux intérets par rapport à la sémantique instrumentée. D’une part, elle permet d’analyser un programme sans avoir besoin de connaître avec précision son environnement d’évaluation. En effet, un environnement abstrait permet de représenter un ensemble d’environnements instrumentés. Et une seule évaluation abstraite permet de simuler un ensemble d’évaluations instrumentées possibles. D’autre part, cette sémantique termine pour n’importe quel programme à évaluer et n’importe quel environnement d’évaluation. On est donc certain d’obtenir un résultat en un temps fini. En effet, dans la sémantique instrumentée, deux cas pouvaient provoquer la non-terminaison de l’évaluation d’un programme : une erreur de type ou une boucle infinie. La sémantique abstraite permet de résoudre ces deux cas. Le cas d’une erreur de type résulte en une valeur spéciale qui indique qu’il n’existe aucune évaluation instrumentée correspondante. Le cas de la boucle infinie est résolu à l’aide d’une sur-approximation des dépendances et de la valeur de retour qui permet de stopper les appels récursifs infinis. 4.4.1 Algèbre des valeurs La sémantique abstraite manipule des valeurs abstraites. Ces valeurs constituent une abstraction des valeurs collectrices. Les fonctions d’abstraction et de concrétisation sont 1724.4. SÉMANTIQUE ABSTRAITE définies formellement en figures 4.11, 4.12 et 4.13. 4.4.1.1 Valeurs Une t-valeur abstraite (notée tua ) est composée d’un ensemble de t-dépendances tda et d’une v-valeur abstraite u a . tua := [ tda | u a ] Valeur avec annotation de t-dépendance Une v-valeur abstraite (notée u a ) est composée d’un ensemble de v-dépendances d a et d’une valeur simple abstraite v a . u a := [ d a | v a ] Valeur avec annotation de v-dépendance Enfin, une valeur simple abstraite (notée v a ) est une valeur simple dont les sous-termes sont des v-valeurs abstraites u a . v a := C | D(u a ) | (u a 1 , ua 2 ) Constructeurs de données < λx.e, Γ a > Fermeture < recf.x.e, Γ a > Fermeture récursive ⊥ Aucune valeur ⊤ Valeur quelconque On peut remarquer qu’il n’existe pas de valeur abstraite permettant de représenter une constante numérique ou bien un booléen. En effet, toute valeur numérique ou booléenne est abstraite en la valeur ⊤, comme on peut le constater dans la définition formelle de la fonction d’abstraction (cf. figures 4.11 et 4.12). En pratique, cette approximation permet à l’analyse de gagner en rapidité sans trop perdre en précision. En effet, les valeurs numériques et booléennes sont rarement connues statiquement, lors de l’analyse d’un programme. Il aurait été possible d’abstraire ces valeurs de façon moins brutale (par exemple à l’aide de listes d’intervalles représentant les valeurs possibles), cependant, ce n’est pas l’objet de notre analyse et il sera tout à fait possible de proposer par la suite une interprétation abstraite plus fine de la sémantique collectrice. 4.4.1.2 Ensembles de dépendances Dans les valeurs abstraites, les ensembles de t-dépendances (resp. de v-dépendances) sont des ensembles de labels, comme dans les sémantiques instrumentée et collectrice. 1734.4. SÉMANTIQUE ABSTRAITE Abstraction d’une t-valeur collectrice : abstr-c-val ↑ a im({ [ d c | v i ] | v i ∈ vsi }) = u a ↑ a c ( [ tdc | d c | vsi ]) = [ tda | u a ] Abstraction d’un ensemble de v-valeurs instrumentées : abstr-im-a-val-empty ↑ a im(∅) = [ ∅ | ⊥ ] abstr-im-a-val-contr-0 usi ⊂ { [ d i | C ] | ∀d i } usi ̸= ∅ d_of_usi (usi ) = d a ↑ a im(usi ) = [ d a | C ] abstr-im-a-val-contr-1 usi ⊂ { [ d i | D(u i ) ] | ∀(d i , ui )} usi ̸= ∅ d_of_usi (usi ) = d a ↑ a im({u i | ∃d i . [ d i | D(u i ) ] ∈ usi }) = u a ↑ a im(usi ) = [ d a | D(u a ) ] abstr-im-a-val-couple usi ⊂ { [ d i | (u i 1 , ui 2 ) ] | ∀(d i , ui 1 , ui 2 )} usi ̸= ∅ d_of_usi (usi ) = d a ↑ a im({u i 1 | ∃(d i , ui 2 ). [ d i | (u i 1 , ui 2 ) ] ∈ usi }) = u a 1 ↑ a im({u i 2 | ∃(d i , ui 1 ). [ d i | (u i 1 , ui 2 ) ] ∈ usi }) = u a 2 ↑ a im(usi ) = [ d a | (u a 1 , ua 2 ) ] abstr-im-a-val-closure usi ⊂ { [ d i | < λx.e, Γ i > ] | ∀(d i , Γ i )} usi ̸= ∅ d_of_usi (usi ) = d a ↑ a im({Γ i | ∃d i . [ d i | < λx.e, Γ i > ] ∈ usi }) = Γa ↑ a im(usi ) = [ d a | < λx.e, Γ a > ] abstr-im-a-val-closure-rec usi ⊂ { [ d i | < recf.x.e, Γ i > ] | ∀(d i , Γ i )} usi ̸= ∅ d_of_usi (usi ) = d a ↑ a im({Γ i | ∃d i . [ d i | < recf.x.e, Γ i > ] ∈ usi }) = Γa ↑ a im(usi ) = [ d a | < recf.x.e, Γ a > ] abstr-im-a-val-unknown usi ̸= ∅ usi ̸⊂ { [ d i | C ] | ∀d i } usi ̸⊂ { [ d i | D(u i ) ] | ∀(d i , ui )} usi ̸⊂ { [ d i | (u i 1 , ui 2 ) ] | ∀(d i , ui 1 , ui 2 )} usi ̸⊂ { [ d i | < λx.e, Γ i > ] | ∀(d i , Γ i )} usi ̸⊂ { [ d i | < recf.x.e, Γ i > ] | ∀(d i , Γ i )} ↑ a im(usi ) = [ ∅ | ⊤ ] Figure 4.11 – Sémantique abstraite : Définition de la fonction d’abstraction (partie 1/2) 1744.4. SÉMANTIQUE ABSTRAITE Récolte des v-dépendances d’un ensemble de v-valeurs instrumentées : abstr-im-da ∀l.l ∈ d a ⇔ ∃(d i , vi ).l ∈ d i ∧ [ d i | v i ] ∈ usi d_of_usi (usi ) = d a Abstraction d’un ensemble de v-environnements instrumentés : abstr-im-a-env-empty ↑ a im({}) = {} abstr-im-a-env-cons Γ im = {(x, ui ) ⊕ Γ i | ∀u i ∈ usi .Γ i ∈ Γ ′im} ↑ a im(usi ) = u a ↑ a im(Γ′im) = Γa ↑ a im(Γim) = (x, ua ) ⊕ Γ a Abstraction d’un t-environnement collecteur : abstr-c-a-env-empty ↑ a c ({}) = {} abstr-c-a-env-cons ↑ a c (tuc ) = tua ↑ a c (tΓ c ) = tΓ a ↑ a c ((x, tuc ) ⊕ tΓ c ) = (x, tua ) ⊕ tΓ a Figure 4.12 – Sémantique abstraite : Définition de la fonction d’abstraction (partie 2/2) Concrétisation d’une t-valeur abstraite : ↑ c a ( [ tda | [ d a | v a ] ]) := [ tda | d a | ↑c a (v a ) ] Concrétisation d’une valeur simple abstraite : ↑ c a (C) := {C} ↑ c a (D( [ d a | v a ])) := {D( [ d a | v i ]) | ∀v i ∈↑c a (v a )} ↑ c a (( [ d a 1 | v a 1 ], [ d a 2 | v a 2 ])) := {( [ d a 1 | v i 1 ], [ d a 2 | v i 2 ]) | ∀v i 1 ∈ ↑c a (v a 1 ).∀v i 2 ∈ ↑c a (v a 2 )} ↑ c a (< λx.e, Γ a >) := {< λx.e, Γ i > | ∀Γ i ∈↑c a (Γa )} ↑ c a (< recf.x.e, Γ a >) := {< recf.x.e, Γ i > | ∀Γ i ∈↑c a (Γa )} ↑ c a (⊥) := ∅ ↑ c a (⊤) := {v i | ∀v i ∈ Vi} Concrétisation d’un v-environnement abstrait : ↑ c a ({}) := {{}} ↑ c a ((x, [ d a | v a ]) ⊕ Γ a ) := {(x, [ d a | v i ]) ⊕ Γ i | ∀v i ∈↑c a (v a ).∀Γ i ∈↑c a (Γa )} Concrétisation d’un t-environnement abstrait : ↑ c a ({}) := {{}} ↑ c a ((x, tua ) ⊕ tΓ a ) := (x, ↑ c a (tua ))⊕ ↑c a (tΓ a ) Figure 4.13 – Sémantique abstraite : Définition de la fonction de concrétisation 1754.4. SÉMANTIQUE ABSTRAITE tda := {l1; . . . ; ln} t-dépendances d a := {l1; . . . ; lm} v-dépendances 4.4.1.3 Environnements De même que pour la sémantique sur-instrumentée et la sémantique instrumentée, on distingue 2 types d’environnements. Un t-environnement abstrait permet de lier chaque identificateur à une t-valeur abstraite. Ce sont les environnements abstraits dans lesquels sont évalués les programmes. tΓ a := (x1, tua 1 ); . . . ; (xn, tua n ) t-environnement abstrait Un v-environnement abstrait permet de lier chaque identificateur à une v-valeur abstraite. Ce sont les environnements abstraite encapsulés dans les fermetures (récursives ou non). Γ a := (x1, ua 1 ); . . . ; (xn, ua n ) v-environnement abstraite 4.4.2 Règles d’inférence Le jugement d’évaluation de la sémantique abstraite prend la forme suivante : tΓ a ⊢ a e →→ tua où e est l’expression évaluée, tΓ a le t-environnement abstrait dans lequel on effectue l’évaluation et tua la t-valeur abstraite résultat de l’évaluation. Ce jugement est défini par les règles d’inférence présentées en figure 4.14. Des explications détaillées de ces règles sont données ci-dessous. a-num La règle d’évaluation d’une constante entière est semblable à celle de la sémantique instrumentée. L’ensemble des t-dépendances instrumentées est vide, de même que l’ensemble des v-dépendances instrumentées. Par contre, en ce qui concerne la valeur simple abstraite, elle vaut ⊤ qui est une abstraction de la constante entière. 1764.4. SÉMANTIQUE ABSTRAITE a-num tΓ a ⊢ a n →→ [ ∅ | [ ∅ | ⊤ ] ] a-ident tua = tΓ a [x] tΓ a ⊢ a x →→ tua a-ident-empty x ̸∈ support(tΓ a ) tΓ a ⊢ a x →→ [ ∅ | [ ∅ | ⊥ ] ] a-abstr tΓ a ⊢ a λx.e →→ [ ∅ | [ ∅ | < λx.e, ↑ a ta(tΓ a ) > ] ] a-abstr-rec tΓ a ⊢ a recf.x.e →→ [ ∅ | [ ∅ | < recf.x.e, ↑ a ta(tΓ a ) > ] ] a-letin tΓ a ⊢ a e1 →→ tua 1 tua 1 = [ tda 1 | u a 1 ] (x, tua 1 ) ⊕ tΓ a ⊢ a e2 →→ [ tda 2 | u a 2 ] tΓ a ⊢ a let x = e1 in e2 →→ [ tda 1 ∪ tda 2 | u a 2 ] a-apply tΓ a ⊢ a e1 →→ [ tda 1 | [ d a 1 | < λx.e, Γ a 1 > ] ] tΓ a ⊢ a e2 →→ tua 2 tua 2 = [ tda 2 | u a 2 ] (x, tua 2 )⊕ ↑ta a (Γa 1 ) ⊢ a e →→ [ tda | [ d a | v a ] ] tΓ a ⊢ a e1 e2 →→ [ tda 1 ∪ tda 2 ∪ tda ∪ d a 1 | [ d a 1 ∪ d a | v a ] ] a-apply-rec tΓ a ⊢ a e1 →→ [ tda 1 | [ d a 1 | < recf.x.e, Γ a 1 > ] ] tua 1 = [ tda 1 | [ d_of_freevars(recf.x.e, tΓ a ) | ⊤ ] ] tΓ a ⊢ a e2 →→ tua 2 tua 2 = [ tda 2 | u a 2 ] (f, tua 1 ) ⊕ (x, tua 2 )⊕ ↑ta a (Γa 1 ) ⊢ a e →→ [ tda | [ d a | v a ] ] tΓ a ⊢ a e1 e2 →→ [ tda 1 ∪ tda 2 ∪ tda ∪ d a 1 | [ d a 1 ∪ d a | v a ] ] a-apply-unknown tΓ a ⊢ a e1 →→ [ tda 1 | [ d a 1 | v a 1 ] ] tΓ a ⊢ a e2 →→ [ tda 2 | [ d a 2 | v a 2 ] ] ∀(f, x, e, Γ a 1 ).va 1 ̸=< λx.e, Γ a 1 > ∧v a 1 ̸=< recf.x.e, Γ a 1 > tΓ a ⊢ a e1 e2 →→ [ tda 1 ∪ tda 2 ∪ d a 1 ∪ d a 2 | [ d a 1 ∪ d a 2 | ⊤ ] ] a-if tΓ a ⊢ a e →→ [ tda | [ d a | v a ] ] tΓ a ⊢ a e1 →→ [ tda 1 | [ d a 1 | v a 1 ] ] tΓ a ⊢ a e2 →→ [ tda 2 | [ d a 2 | v a 2 ] ] tΓ a ⊢ a if e then e1 else e2 →→ [ d a ∪ tda ∪ tda 1 ∪ tda 2 | [ d a ∪ d a 1 ∪ d a 2 | ⊤ ] ] a-match tΓ a ⊢ a e →→ tua tua = [ tda | [ d a | v a ] ] tua , p ⊢ a p tΓ a p tΓ a p ⊕ tΓ a ⊢ a e1 →→ [ tda 1 | [ d a 1 | v a 1 ] ] tΓ a ⊢ a match e with p → e1 | x → e2 →→ [ d a ∪ tda ∪ tda 1 | [ d a ∪ d a 1 | v a 1 ] ] a-match-var tΓ a ⊢ a e →→ tua tua = [ tda | [ d a | v a ] ] tua , p ⊢ a p ⊥ (x, tua ) ⊕ tΓ a ⊢ a e2 →→ [ tda 2 | [ d a 2 | v a 2 ] ] tΓ a ⊢ a match e with p → e1 | x → e2 →→ [ d a ∪ tda ∪ tda 2 | [ d a ∪ d a 2 | v a 2 ] ] a-match-unknown tΓ a ⊢ a e →→ tua tua = [ tda | [ d a | v a ] ] tua , p ⊢ a p? tΓ a p tΓ a p ⊕ tΓ a ⊢ a e1 →→ [ tda 1 | [ d a 1 | v a 1 ] ] (x, tua ) ⊕ tΓ a ⊢ a e2 →→ [ tda 2 | [ d a 2 | v a 2 ] ] tΓ a ⊢ a match e with p → e1 | x → e2 →→ [ d a ∪ tda ∪ tda 1 ∪ tda 2 | [ d a ∪ d a 1 ∪ d a 2 | ⊤ ] ] a-match-error tΓ a ⊢ a e →→ [ tda | [ d a | v a ] ] tua , p ⊢ a p × tΓ a ⊢ a match e with p → e1 | x → e2 →→ [ ∅ | [ ∅ | ⊥ ] ] a-constr-0 tΓ a ⊢ a C →→ [ ∅ | [ ∅ | C ] ] a-constr-1 tΓ a ⊢ a e →→ [ tda | u a ] tΓ a ⊢ a D(e) →→ [ tda | [ ∅ | D(u a ) ] ] a-couple tΓ a ⊢ a e1 →→ [ tda 1 | u a 1 ] tΓ a ⊢ a e2 →→ [ tda 2 | u a 2 ] tΓ a ⊢ a (e1, e2) →→ [ tda 1 ∪ tda 2 | [ ∅ | (u a 1 , ua 2 ) ] ] a-annot tΓ a ⊢ a e →→ [ tda | [ d a | v a ] ] tΓ a ⊢ a l : e →→ [ tda | [ l; d a | v a ] ] Figure 4.14 – Sémantique abstraite 1774.4. SÉMANTIQUE ABSTRAITE d_of_freevars(e, tΓ a) := dof_aux(e, tΓ a, ∅, ∅) dof_aux(n, tΓ a, bvars, acc) := acc dof_aux(C, tΓ a, bvars, acc) := acc dof_aux(D(e), tΓ a, bvars, acc) := dof_aux(e, tΓ a, bvars, acc) dof_aux(x, tΓ a, bvars, acc) := acc si x ∈ bvars dof_aux(x, tΓ a, bvars, acc) := d a ∪ acc si x ̸∈ bvars ∧ tΓ a[x] = [ tda | [ d a | v a ] ] dof_aux(λx.e, tΓ a, bvars, acc) := dof_aux(e, tΓ a, x; bvars, acc) dof_aux(recf.x.e, tΓ a, bvars, acc) := dof_aux(e, tΓ a, f; x; bvars, acc) dof_aux(e1 e2, tΓ a, bvars, acc) := dof_aux(e2, tΓ a, bvars, acc1) pour acc1 = dof_aux(e1, tΓ a, bvars, acc) dof_aux(if e then e1 else e2, tΓ a, bvars, acc) := dof_aux(e2, tΓ a, bvars, acc1) pour acc1 = dof_aux(e1, tΓ a, bvars, acc0) et acc0 = dof_aux(e, tΓ a, bvars, acc) dof_aux(match e with p → e1 | x → e2, tΓ a, bvars, acc) := dof_aux(e2, tΓ a, x; bvars, acc1) pour acc1 = dof_aux(e1, tΓ a, binders_of(p); bvars, acc0) et acc0 = dof_aux(e, tΓ a, bvars, acc) dof_aux((e1, e2), tΓ a, bvars, acc) := dof_aux(e2, tΓ a, bvars, acc1) pour acc1 = dof_aux(e1, tΓ a, bvars, acc) dof_aux(l : e, tΓ a, bvars, acc) := dof_aux(e, tΓ a, bvars, acc) dof_aux(let x = e1 in e2, tΓ a, bvars, acc) := dof_aux(e2, tΓ a, x; bvars, acc1) pour acc1 = dof_aux(e1, tΓ a, bvars, acc) binders_of(C) := {} binders_of(D(x)) := {x} binders_of((x, y)) := {x; y} Figure 4.15 – Sémantique abstraite : v-dépendances des identificateurs libres d’une expression am-constr-0 [ tda | [ d a | C ] ], C ⊢ a p {} am-constr-1 [ tda | [ d a | D(u a ) ] ], D(x) ⊢ a p {(x, [ ∅ | u a ])} am-couple [ tda | [ d a | (u a 1 , ua 2 ) ] ], (x1, x2) ⊢ a p {(x1, [ ∅ | u a 1 ]); (x2, [ ∅ | u a 2 ])} am-constr-0-not p ̸= C [ tda | [ d a | C ] ], p ⊢ a p ⊥ am-constr-1-not p ̸= D(_) [ tda | [ d a | D(u a ) ] ], p ⊢ a p ⊥ am-couple-not p ̸= (_, _) [ tda | [ d a | (u a 1 , ua 2 ) ] ], p ⊢ a p ⊥ am-constr-0-unknown [ tda | [ d a | ⊤ ] ], C ⊢ a p? {} am-constr-1-unknown [ tda | [ d a | ⊤ ] ], D(x) ⊢ a p? {(x, [ ∅ | [ ∅ | ⊤ ] ])} am-couple-unknown [ tda | [ d a | ⊤ ] ], (x1, x2) ⊢ a p? {(x1, [ ∅ | [ ∅ | ⊤ ] ]); (x2, [ ∅ | [ ∅ | ⊤ ] ])} am-error ∀C.va ̸= C ∀D.va ̸= D(_) v a ̸= (_, _) v a ̸= ⊤ [ tda | [ d a | v a ] ], p ⊢ a p × Figure 4.16 – Sémantique abstraite : règles de filtrage 1784.4. SÉMANTIQUE ABSTRAITE ↑ a ta( [ tda | u a ]) = u a ↑ a ta({}) = {} ↑a ta((x, tua ) ⊕ tΓ a ) = (x, ↑ a ta(tua )) ⊕ ↑a ta(tΓ a ) Figure 4.17 – Valeurs abstraites : suppression des t-dépendances a-ident Cette règle est identique à celle de la sémantique instrumentée. L’évaluation d’un identificateur se fait de manière habituelle, en allant chercher la valeur correspondante dans l’environnement. Les dépendances de la t-valeur abstraite retournée sont celles qui ont été enregistrées dans l’environnement pour cet identificateur. a-ident-empty Comme dans la sémantique collectrice, une règle a été ajoutée pour permettre l’analyse d’un programme dont certains identificateurs ne sont pas liés dans l’environnement. La valeur simple abstraite retournée est la valeur ⊥, ce qui correspond à une erreur (l’évaluation d’un tel programme par la sémantique opérationnelle ne retourne aucune valeur). a-abstr L’évaluation abstraite d’une fonction n’a rien de surprenant. Comme dans la sémantique instrumentée, les dépendances sont vides. La valeur simple abstraite est une fermeture encapsulant l’environnement abstrait d’évaluation préalablement nettoyé de ses t-dépendances à l’aide de la fonction ↑ a ta(•) définie en figure 4.17. a-abstr-rec Selon le même principe que pour la règle a-abstr, on construit une fermeture récursive encapsulant l’environnement abstrait d’évaluation. a-letin La règle d’évaluation d’une liaison est identique à la règle correspondante dans la sémantique instrumentée. Elle évalue e1 puis ajoute une liaison à l’environnement pour évaluer e2. Le résultat est une t-valeur abstraite constituée de la concaténation des tdépendances des sous-expressions évaluées et de la v-valeur abstraite de e2. a-apply La règle de l’application d’une fonction non-récursive est identique à son homologue de la sémantique instrumentée. 1794.4. SÉMANTIQUE ABSTRAITE ↑ ta a (u a ) = [ ∅ | u a ] ↑ ta a ({}) = {} ↑ta a ((x, ua ) ⊕ Γ a ) = (x, ↑ ta a (u a )) ⊕ ↑ta a (Γa ) Figure 4.18 – Valeurs abstraites : ajout de t-dépendances Comme dans la sémantique instrumentée, nous utilisons une fonction ajoutant des tdépendances vides à l’environnement encapsulé pour évaluer le corps de la fermeture. Cette fonction, notée ↑ ta a (•) est définie en figure 4.18. a-apply-rec La règle d’évaluation abstraite d’une application de fonction récursive ressemble à celle de la sémantique instrumentée. Il y a cependant une différence importante. Lorsque le corps de la fonction récursive est évalué, l’identificateur représentant la fonction récursive est lié à la valeur ⊤. Cette abstraction permet d’empêcher les appels récursifs lors de l’analyse d’un programme. À chaque appel récursif, au lieu de déplier le corps de la fonction une nouvelle fois, on renvoie la valeur ⊤ accompagnée de toutes les dépendances de tous les identificateurs libres présents dans le corps de la fonction. a-apply-unknown La sémantique abstraite possède une règle d’évaluation d’une application dans le cas où on ne connaît pas le corps de la fonction à appliquer. On caractérise ce cas en spécifiant que la valeur abstraite de e1 n’est pas une fermeture. Si le programme est bien typé, alors la valeur abstraite de e1 est forcément ⊤. Cependant, il serait possible de rendre la sémantique abstraite plus précise en utilisant une réprésentation des fonctions ayant un niveau de précision intermédiaire entre la fermeture, contenant le corps de la fonction, et la valeur ⊤ ne fournissant aucune information. Lorsque l’on ne connaît pas le corps de la fonction à appliquer, on effectue l’approximation suivante : tout label présent dans les v-dépendances de l’argument fait partie à la fois des t-dépendances et des v-dépendances du résultat. Il fait partie des t-dépendances du résultat car une modification de la valeur de l’argument peut provoquer la non-terminaison du corps de la fonction (qui est inconnu). Il fait également partie des v-dépendances du résultat la valeur de l’argument peut être utilisée pour élaborer la valeur de retour de la 1804.4. SÉMANTIQUE ABSTRAITE fonction. a-if Contrairement aux autres sémantiques, la sémantique abstraite ne contient qu’une seule règle d’inférence pour décrire l’évaluation d’une expression conditionnelle. En effet, l’algèbre des valeurs abstraites ne permet pas de réprésenter les valeurs booléennes. Il est donc impossible de déterminer laquelle des deux branches sera évaluée à partir de la valeur abstraite de la condition. Nous évaluons donc les deux branches de l’expression pour recueillir les dépendances du résultat. L’ensemble des t-dépendances du résultat contient les t-dépendances des trois sous-expressions ainsi que les v-dépendances de la condition (car une modification de la valeur de la condition entraîne nécessairement un changement de branche, ce qui peut provoquer la non-terminaison de l’évaluation). L’ensemble des v-dépendances du résultat contient les v-dépendances des trois sous-expressions. a-match Cette règle décrit l’évaluation abstraite d’un filtrage lorsqu’on sait statiquement que l’évaluation passe toujours par la première branche. Elle ne présente pas de particularité par rapport à la sémantique instrumentée. a-match-var Cette règle décrit l’évaluation abstraite d’un filtrage lorsqu’on sait statiquement que l’évaluation passe toujours par la seconde branche. Elle ne présente pas de particularité par rapport à la sémantique instrumentée. a-match-unknown Cette règle décrit l’évaluation abstraite d’un filtrage lorsqu’on ne sait statiquement par quelle branche l’évaluation va passer. Elle correspond à la règle c-match-unknown de la sémantique collectrice. On évalue alors les deux branches pour récolter les dépendances du filtrage. a-match-error Cette règle décrit l’évaluation abstraite d’un filtrage dans le cas où la valeur abstraite de l’expression filtrée ne correspond pas à une valeur filtrable. Il s’agit d’une erreur de type. La valeur simple abstraite est donc ⊥, ce qui indique qu’il n’existe aucune évaluation opérationnelle correspondante. 1814.4. SÉMANTIQUE ABSTRAITE a-constr-0 a-constr-1 a-couple a-annot Ces quatres règles sont identiques à leurs homologues de la sémantique instrumentée. 4.4.3 Correction 4.4.3.1 Énoncé informel du théorème La sémantique abstraite est une interprétation abstraite de la sémantique collectrice. C’est-à-dire qu’une évaluation par la sémantique collectrice peut être simulée par une évaluation abstraite (avec l’aide de fonctions d’abstraction et de concrétisation) et que la valeur ainsi obtenue sera moins précise que celle obtenue par une évaluation directe. Les fonctions d’abstraction et de concrétisation sont définies formellement en figures 4.11, 4.12 et 4.13. Le lien entre l’évaluation directe par la sémantique collectrice et l’évaluation passant par la sémantique abstraite et les fonctions de conversion, est illustré en figure 4.2. 4.4.3.2 Illustration par l’exemple Exemple 1 : évaluation d’un couple Notons e1 le programme suivant : (x, l1:7) Nous nous intéressons ici à l’évaluation de ce programme par la sémantique collectrice dans l’environnement collecteur tΓ c 1 : tΓ c 1 = (x, [ ∅ | {l2; l3} | {C1; C2} ]) Voici le jugement d’évaluation : tΓ c 1 ⊢ c e1 →→ [ ∅ | ∅ | { ( [ {l2; l3} | C1 ], [ {l1} | 7 ]); ( [ {l2; l3} | C2 ], [ {l1} | 7 ]) } ] La sémantique abstraite étant une interprétation abstraite de la sémantique collectrice, on peut simuler toute évaluation collectrice par une évaluation abstraite. Pour cela, on commence par abstraire l’environnement d’évaluation : ↑ a c (tΓ c 1 ) = (x, [ ∅ | [ {l2; l3} | ⊤ ] ]) = tΓ a 1 On peut ensuite évaluer e1 dans l’environnement abstrait à l’aide de la sémantique abstraite. On obtient le jugement suivant : tΓ a 1 ⊢ a e1 →→ [ ∅ | [ ∅ | ( [ {l2; l3} | ⊤ ], [ {l1} | ⊤ ]) ] ] 1824.4. SÉMANTIQUE ABSTRAITE Il ne reste plus qu’à concrétiser la t-valeur abstraite obtenue pour produire une valeur collectrice qui se trouvera être moins précise que celle obtenue directement par la sémantique collectrice. ↑ c a ( [ ∅ | [ ∅ | ( [ {l2; l3} | ⊤ ], [ {l1} | ⊤ ]) ] ]) = [ ∅ | ∅ | {( [ {l2; l3} | v i 1 ], [ {l1} | v i 2 ]) | ∀v i 1 ∈ Vi , ∀v i 2 ∈ Vi} ] Les ensembles de dépendances sont vides et l’ensemble des valeurs simples obtenu directement est inclus dans l’ensemble des valeurs simples obtenu après abstraction : {( [ {l2; l3} | C1 ], [ {l1} | 7 ]); ⊆im {( [ {l2; l3} | v i 1 ], [ {l1} | v i 2 ]) | ∀v i 1 ∈ Vi , ∀v i 2 ∈ Vi} ( [ {l2; l3} | C2 ], [ {l1} | 7 ])} Voici quelques exemples d’évaluations instrumentées correspondant à l’évaluation collectrice présentée ici : (x, [ ∅ | {l2} | C1 ]) ⊢ i e1 →→ [ ∅ | [ ∅ | ( [ {l2} | C1 ], [ {l1} | 7 ]) ] ] (x, [ ∅ | {l3} | C2 ]) ⊢ i e1 →→ [ ∅ | [ ∅ | ( [ {l3} | C2 ], [ {l1} | 7 ]) ] ] 4.4.3.3 Énoncé formel du théorème Ce théorème de correction exprime le fait que la sémantique abstraite est une interprétation abstraite de la sémantique collectrice. Autrement dit, pour tout jugement d’évaluation collectrice, il est possible de simuler cette évaluation en commençant par abstraire l’environnement d’évaluation, puis en évaluant l’expression par la sémantique abstraite pour enfin concrétiser la valeur abstraite. La valeur collectrice ainsi obtenue est alors moins précise que celle obtenue directement par la sémantique collectrice. Pour exprimer formellement ce théorème, il nous faut d’abord définir formellement la relation d’ordre sur les valeurs collectrices qui exprime le fait qu’une valeur collectrice est plus précise qu’une autre. Cette définition est donnée en figure 4.19. Théorème 4.4.1 (Correction de la sémantique abstraite). ∀(tΓ c , e, tuc , tΓ a , tua ). tΓ c ⊢ c e →→ tuc ⇒ tΓ a =↑ a c (tΓ c ) ⇒ tΓ a ⊢ a e →→ tua ⇒ tuc ⊆c ↑ c a (tua ) 1834.4. SÉMANTIQUE ABSTRAITE le-c-val tdc 1 ⊆ tdc 2 d c 1 ⊆ d c 2 vsi 1 ⊆ si vsi 2 [ tdc 1 | d c 1 | vsi 1 ] ⊆ c [ tdc 2 | d c 2 | vsi 2 ] le-si-val ∀v i 1 ∈ vsi 1 . ∃v i 2 ∈ vsi 2 . vi 1 ⊆ i v i 2 vsi 1 ⊆ si vsi 2 Figure 4.19 – Relation d’ordre sur les valeurs collectrices 4.4.3.4 Preuve de correction La preuve de correction de ce théorème est similaire à la preuve de correction de la sé- mantique collectrice. Il s’agit de prouver qu’une sémantique est une interprétation abstraite d’une autre, étant données une fonction d’abstraction et une fonction de concrétisation. On procède par induction sur le jugement d’évaluation de la sémantique abstraite. Il y a 18 cas à prouver, correspondant aux 18 règles d’inférences de la sémantique abstraite. Nous présentons ici la preuve de quelques uns de ces cas. cas a-num Ce cas est trivial, tout comme le cas a-constr-0. Nous allons tout de même l’expliquer rapidement pour illustrer le principe de la preuve qui est également utilisé dans les autres cas. Nous avons les hypothèses suivantes : tΓ c ⊢ c n →→ [ ∅ | ∅ | {n} ] tΓ a = ↑ a c (tΓ c ) tΓ a ⊢ a n →→ [ ∅ | [ ∅ | ⊤ ] ] Il reste uniquement à prouver la propriété ci-dessous qui est une conséquence directe de la définition de la relation d’ordre ⊆c donnée en figure 4.19 : [ ∅ | ∅ | {n} ] ⊆ c ↑ c a ( [ ∅ | [ ∅ | ⊤ ] ]) cas a-constr-1 Ce cas est légèrement plus complexe que le précédent du fait que l’expression évaluée possède une sous-expression. Nous avons les hypothèses suivantes dont une hypothèse d’induction : c-constr-1 tΓ c ⊢ c e →→ [ tdc | d c | vsi ] tΓ c ⊢ c D(e) →→ [ tdc | ∅ | {D( [ d c | v i ]) | v i ∈ vsi } ] 1844.4. SÉMANTIQUE ABSTRAITE tΓ a = ↑ a c (tΓ c ) a-constr-1 tΓ a ⊢ a e →→ [ tda | [ d a | v a ] ] tΓ a ⊢ a D(e) →→ [ tda | [ ∅ | D( [ d a | v a ]) ] ] [ tdc | d c | vsi ] ⊆ c ↑ c a ( [ tda | [ d a | v a ] ]) Nous devons alors montrer cette propriété : [ tdc | ∅ | {D( [ d c | v i ]) | v i ∈ vsi } ] ⊆ c ↑ c a ( [ tda | [ ∅ | D( [ d a | v a ]) ] ]) Une fois simplifiée à l’aide des définitions de la relation d’ordre et de la fonction de concrétisation, il nous reste à prouver les propriétés suivantes : tdc ⊆ tda {D( [ d c | v i ]) | v i ∈ vsi} ⊆c↑ c a (D( [ d a | v a ])) Nous simplifions alors la seconde propriété en plusieurs étapes : ∀v i 1 ∈ {D( [ d c | v i ]) | v i ∈ vsi}. ∃v i 2 ∈↑c a (D( [ d a | v a ])). vi 1 ⊆i v i 2 ∀v i 1 ∈ vsi . ∃v i 2 ∈↑c a (D( [ d a | v a ])). D( [ d c | v i 1 ]) ⊆i v i 2 ∀v i 1 ∈ vsi . ∃v i 2 ∈ {D( [ d a | v i ]) | ∀v i ∈↑c a (v a )}. D( [ d c | v i 1 ]) ⊆i v i 2 ∀v i 1 ∈ vsi . ∃v i 2 ∈↑c a (v a ). D( [ d c | v i 1 ]) ⊆i D( [ d a | v i 2 ]) ∀v i 1 ∈ vsi . ∃v i 2 ∈↑c a (v a ). dc ⊆ d a ∧ v i 1 ⊆i v i 2 d c ⊆ d a ∀v i 1 ∈ vsi . ∃v i 2 ∈↑c a (v a ). vi 1 ⊆i v i 2 De notre hypothèse d’induction, nous déduisons les propriétés suivantes, en utilisant simplement les définitions de la relation d’ordre et de la fonction de concrétisation : tdc ⊆ tda d c ⊆ d a vsi ⊆c ↑ c a (v a ) ∀v i 1 ∈ vsi . ∃v i 2 ∈↑c a (v a ). vi 1 ⊆i v i 2 Ce qui nous permet de conclure immédiatement. cas a-apply Comme d’habitude, le cas de l’application fait partie des cas les plus complexes à prouver. 1854.4. SÉMANTIQUE ABSTRAITE Nous avons les hypothèses suivantes dont trois hypothèses d’induction : c-apply tΓ c ⊢ c e1 →→ [ tdc 1 | d c 1 | vsi 1 ] tΓ c ⊢ c e2 →→ [ tdc 2 | d c 2 | vsi 2 ] v im = multiple_instrumented_application(tdc 1 , dc 1 , vsi 1 , tdc 2 , dc 2 , vsi 2 ) (∀l. l ∈ tdc ⇔ (∃(tdi , di , vi ). l ∈ tdi ∧ [ tdi | [ d i | v i ] ] ∈ v im)) (∀l. l ∈ d c ⇔ (∃(tdi , di , vi ). l ∈ d i ∧ [ tdi | [ d i | v i ] ] ∈ v im)) vsi = {v i | ∃(tdi , di ). [ tdi | [ d i | v i ] ] ∈ v im} tΓ c ⊢ c e1 e2 →→ [ tdc | d c | vsi ] tΓ a = ↑ a c (tΓ c ) a-apply tΓ a ⊢ a e1 →→ [ tda 1 | [ d a 1 | < λx.e, Γ a 1 > ] ] tΓ a ⊢ a e2 →→ tua 2 tua 2 = [ tda 2 | [ d a 2 | v a 2 ] ] (x, tua 2 )⊕ ↑ta a (Γa 1 ) ⊢ a e →→ [ tda | [ d a | v a ] ] tΓ a ⊢ a e1 e2 →→ [ tda 1 ∪ tda 2 ∪ tda ∪ d a 1 | [ d a 1 ∪ d a | v a ] ] [ tdc 1 | d c 1 | vsi 1 ] ⊆ c ↑ c a ( [ tda 1 | [ d a 1 | < λx.e, Γ a 1 > ] ]) [ tdc 2 | d c 2 | vsi 2 ] ⊆ c ↑ c a ( [ tda 2 | [ d a 2 | v a 2 ] ]) ∀(tΓ c , tuc ). tΓ c ⊢ c e →→ tuc ⇒ (x, tua 2 )⊕ ↑ta a (Γa 1 ) =↑ a c (tΓ c ) ⇒ tuc ⊆ c ↑ c a ( [ tda | [ d a | v a ] ]) Nous devons alors montrer cette propriété : [ tdc | d c | vsi ] ⊆ c ↑ c a ( [ tda 1 ∪ tda 2 ∪ tda ∪ d a 1 | [ d a 1 ∪ d a | v a ] ]) Après simplification, nous devons donc montrer les trois propriétés suivantes : tdc ⊆ tda 1 ∪ tda 2 ∪ tda ∪ d a 1 d c ⊆ d a 1 ∪ d a ∀v i 1 ∈ vsi . ∃v i 2 ∈↑c a (v a ). vi 1 ⊆i v i 2 Prouvons tout d’abord quelques propriétés préliminaires concernant l’évaluation collectrice de e ainsi que son évaluation instrumentée multiple. Puisque la sémantique collectrice est totale, nous savons qu’il existe un jugement d’évaluation collectrice pour e dans l’environnement ↑ c a ((x, tua 2 )⊕ ↑ta a (Γa 1 )). Il existe donc une valeur collectrice [ td′c | d ′c | vs′i ] telle que : ↑ c a ((x, tua 2 )⊕ ↑ta a (Γa 1 )) ⊢ c e →→ [ td′c | d ′c | vs′i ] La composition de la fonction de concrétisation et de la fonction d’abstraction est l’identité. Nous en déduisons donc la propriété suivante : ↑ a c (↑ c a ((x, tua 2 )⊕ ↑ta a (Γa 1 ))) = (x, tua 2 )⊕ ↑ta a (Γa 1 ) 1864.4. SÉMANTIQUE ABSTRAITE On utilise alors la troisième hypothèse d’induction pour établir la relation d’ordre entre les valeurs collectrice et abstraite de e. Nous obtenons : [ td′c | d ′c | vs′i ] ⊆ c ↑ c a ( [ tda | [ d a | v a ] ]) La sémantique instrumentée multiple est elle aussi totale. Il existe donc un jugement de la sémantique instrumentée multiple pour l’évaluation de e dans l’ensemble d’environnements instrumentés suivant : ↑ im c (↑ c a ((x, tua 2 )⊕ ↑ta a (Γa 1 ))). Voici le jugement : i-multiple v im = {tui | ∃tΓ i ∈ ↑im c (↑ c a ((x, tua 2 )⊕ ↑ta a (Γa 1 ))). tΓ i ⊢ i e →→ tui } ↑ im c (↑ c a ((x, tua 2 )⊕ ↑ta a (Γa 1 ))) ⊢ im e →→ v im Commençons maintenant par prouver la première des trois propriétés : tdc ⊆ tda 1 ∪ tda 2 ∪ tda ∪ d a 1 Soit l ∈ tdc on veut alors montrer que l ∈ tda 1 ∪ tda 2 ∪ tda ∪ d a 1 D’après la définition de tdc , on a (tdi , di , vi ) tels que : l ∈ tdi∧ [ tdi | [ d i | v i ] ] ∈ v im Il y a alors 2 cas possibles d’après la définition de multiple_instrumented_application. Il s’agit soit de l’application d’une fonction non-récursive, soit de l’application d’une fonction récursive. Nous prouvons plus loin que le second cas est impossible. Commençons par nous placer dans le premier cas, on a alors : < λx.e, Γ i 1 > ∈ vsi 1 v i 2 ∈ vsi 2 tui 2 = [ tdc 2 | [ d c 2 | v i 2 ] ] (x, tui 2 )⊕ ↑ti i (Γi 1 ) ⊢ i e →→ [ td′i | [ d ′i | v ′i ] ] [ tdi | [ d i | v i ] ] = [ tdc 1 ∪ tdc 2 ∪ td′i ∪ d c 1 | [ d c 1 ∪ d ′i | v ′i ] ] On remarque que {(x, tui 2 )⊕ ↑ti i (Γi 1 )} ⊆im ↑ im c (↑ c a ((x, tua 2 )⊕ ↑ta a (Γa 1 ))) Puisque la sémantique instrumentée multiple est croissante, la valeur de e dans l’environnement {(x, tui 2 )⊕ ↑ti i (Γi 1 )} est plus précise que la valeur de e dans l’environnement ↑ im c (↑ c a ((x, tua 2 )⊕ ↑ta a (Γa 1 ))). Ce qui nous donne : { [ td′i | [ d ′i | v ′i ] ]} ⊆im v im D’après le théorème de correction de la sémantique collectrice, on a : v im ⊆ im ↑ im c ( [ td′c | d ′c | vs′i ]) 1874.4. SÉMANTIQUE ABSTRAITE On utilise alors la transitivité de la relation d’ordre sur les valeurs instrumentées multiples pour déduire : { [ td′i | [ d ′i | v ′i ] ]} ⊆im ↑ im c ( [ td′c | d ′c | vs′i ]) En composant cette relation ainsi que la relation d’ordre entre la valeur collectrice de e et sa valeur abstraite ( [ td′c | d ′c | vs′i ] ⊆c ↑ c a ( [ tda | [ d a | v a ] ])), on obtient : td′i ⊆ td′c ⊆ tda D’autre part, nos hypothèses d’induction nous disent que : tdc 1 ⊆ tda 1 tdc 2 ⊆ tda 2 d c 1 ⊆ d a 1 Puisque l ∈ tdc 1 ∪tdc 2 ∪td′i ∪d c 1 , on déduit donc la propriété voulue pour conclure le cas de l’application d’un fonction non-récursive : l ∈ tda 1 ∪ tda 2 ∪ tda ∪ d a 1 Montrons maintenant que le cas de l’application d’une fonction récursive est absurde. Dans ce cas, on a les propriétés suivantes : < recf.x.e, Γ i 1 > ∈ vsi 1 v i 2 ∈ vsi 2 tui f = [ tdc 1 | [ d c 1 | < recf.x.e, Γ i 1 > ] ] tui 2 = [ tdc 2 | [ d c 2 | v i 2 ] ] (f, tui f ) ⊕ (x, tui 2 )⊕ ↑ti i (Γi 1 ) ⊢ i e →→ [ td′i | [ d ′i | v ′i ] ] [ tdi | [ d i | v i ] ] = [ tdc 1 ∪ tdc 2 ∪ td′i ∪ d c 1 | [ d c 1 ∪ d ′i | v ′i ] ] Or la première propriété < recf.x.e, Γ i 1 > ∈ vsi 1 contredit notre première hypothèse d’induction qui implique que vsi 1 ⊆im ↑ c a (< λx.e, Γ a 1 >) Ceci nous permet de conclure la preuve de tdc ⊆ tda 1 ∪ tda 2 ∪ tda ∪ d a 1 On procède de même pour montrer que d c ⊆ d a 1 ∪ d a Soit l ∈ d c on veut alors montrer que l ∈ d a 1 ∪ d a D’après la définition de d c , on a (tdi , di , vi ) tels que : l ∈ d i ∧ [ tdi | [ d i | v i ] ] ∈ v im Il y a alors 2 cas possibles d’après la définition de multiple_instrumented_application. Il s’agit soit de l’application d’une fonction non-récursive, soit de l’application d’une fonction récursive. Pour la même raison que dans le cas précédent, le cas de l’application d’une fonction récursive est absurde. Plaçons nous donc dans le premier cas, on a alors : 1884.4. SÉMANTIQUE ABSTRAITE < λx.e, Γ i 1 > ∈ vsi 1 v i 2 ∈ vsi 2 tui 2 = [ tdc 2 | [ d c 2 | v i 2 ] ] (x, tui 2 )⊕ ↑ti i (Γi 1 ) ⊢ i e →→ [ td′i | [ d ′i | v ′i ] ] [ tdi | [ d i | v i ] ] = [ tdc 1 ∪ tdc 2 ∪ td′i ∪ d c 1 | [ d c 1 ∪ d ′i | v ′i ] ] On remarque que {(x, tui 2 )⊕ ↑ti i (Γi 1 )} ⊆im ↑ im c (↑ c a ((x, tua 2 )⊕ ↑ta a (Γa 1 ))) Puisque la sémantique instrumentée multiple est croissante, la valeur de e dans l’environnement {(x, tui 2 )⊕ ↑ti i (Γi 1 )} est plus précise que la valeur de e dans l’environnement ↑ im c (↑ c a ((x, tua 2 )⊕ ↑ta a (Γa 1 ))). Ce qui nous donne : { [ td′i | [ d ′i | v ′i ] ]} ⊆im v im D’après le théorème de correction de la sémantique collectrice, on a : v im ⊆ im ↑ im c ( [ td′c | d ′c | vs′i ]) On utilise alors la transitivité de la relation d’ordre sur les valeurs instrumentées multiples pour déduire : { [ td′i | [ d ′i | v ′i ] ]} ⊆im ↑ im c ( [ td′c | d ′c | vs′i ]) En composant cette relation ainsi que la relation d’ordre entre la valeur collectrice de e et sa valeur abstraite, on obtient d ′i ⊆ d ′c ⊆ d a D’autre part, nos hypothèses d’induction nous disent que : d c 1 ⊆ d a 1 Puisque l ∈ d c 1 ∪ d ′i , on déduit donc la propriété voulue pour conclure : l ∈ d a 1 ∪ d a Ceci nous permet de conclure la preuve de d c ⊆ d a 1 ∪ d a Il nous reste alors à montrer cette troisième et dernière propriété : ∀v i 1 ∈ vsi . ∃v i 2 ∈ ↑c a (v a ). vi 1 ⊆ i v i 2 Pour cela, on prend v i 1 ∈ vsi et on procède une troisième fois de la même manière, en faisant le lien entre l’évaluation instrumentée correspondant à v i 1 et l’évaluation abstraite de e. 1894.4. SÉMANTIQUE ABSTRAITE D’après la définition de vsi , on a (tdi , di ) tels que : [ tdi | [ d i | v i 1 ] ] ∈ v im Il y a là aussi 2 cas possibles d’après la définition de multiple_instrumented_application. Il s’agit soit de l’application d’une fonction non-récursive, soit de l’application d’une fonction récursive. Pour la même raison que précédemment, le cas de l’application d’une fonction récursive est absurde. Plaçons nous donc dans le premier cas, on a alors : < λx.e, Γ i 1 > ∈ vsi 1 v i 2 ∈ vsi 2 tui 2 = [ tdc 2 | [ d c 2 | v i 2 ] ] (x, tui 2 )⊕ ↑ti i (Γi 1 ) ⊢ i e →→ [ td′i | [ d ′i | v ′i ] ] [ tdi | [ d i | v i 1 ] ] = [ tdc 1 ∪ tdc 2 ∪ td′i ∪ d c 1 | [ d c 1 ∪ d ′i | v ′i ] ] On remarque que {(x, tui 2 )⊕ ↑ti i (Γi 1 )} ⊆im ↑ im c (↑ c a ((x, tua 2 )⊕ ↑ta a (Γa 1 ))) Puisque la sémantique instrumentée multiple est croissante, la valeur de e dans l’environnement {(x, tui 2 )⊕ ↑ti i (Γi 1 )} est plus précise que la valeur de e dans l’environnement ↑ im c (↑ c a ((x, tua 2 )⊕ ↑ta a (Γa 1 ))). Ce qui nous donne : { [ td′i | [ d ′i | v i 1 ] ]} ⊆im v im D’après le théorème de correction de la sémantique collectrice, on a : v im ⊆ im ↑ im c ( [ td′c | d ′c | vs′i ]) On utilise alors la transitivité de la relation d’ordre sur les valeurs instrumentées multiples pour déduire : { [ td′i | [ d ′i | v i 1 ] ]} ⊆im ↑ im c ( [ td′c | d ′c | vs′i ]) De cette dernière relation, nous déduisons qu’il existe une valeur v ′i 2 ∈ vs′i telle que : v i 1 ⊆ i v ′i 2 Nous utilisons alors la relation d’ordre entre la valeur collectrice de e et sa valeur abstraite pour déduire qu’il existe une valeur v i 2 ∈ ↑c a (v a ) telle que : v ′i 2 ⊆ i v i 2 1904.4. SÉMANTIQUE ABSTRAITE La transitivité de la relation d’ordre nous permet alors de conclure : v i 1 ⊆ i v i 2 La preuve du cas a-apply de notre induction est alors terminée. 1914.5. CORRECTION DE L’ANALYSE STATIQUE 4.5 Correction de l’analyse statique Nous établissons enfin la correction de notre analyse statique. L’analyse statique ainsi que l’ensemble des sémantiques intermédiaires ont été introduites dans le but de simplifier la preuve du théorème présenté ici et de la rendre modulaire. Cette modularité permettra de réutiliser une grande partie des preuves présentées ici lors d’une modification de l’analyse statique. Par exemple, si on modifie l’algèbre des valeurs abstraites afin de proposer une représentation différente des fonctions ou bien si on modifie les règles d’inférence pour améliorer la précision ou l’efficacité de l’analyse, il suffira de reprendre la preuve de la sémantique abstraite par rapport à la sémantique collectrice sans avoir à refaire les preuves des sémantiques précédentes. 4.5.1 Énoncé informel du théorème De même que pour la correction de l’analyse dynamique, notre but est de pouvoir affirmer que si un label n’apparaît pas dans le résultat de l’analyse d’un programme alors ce label n’a pas d’impact sur l’évaluation de ce programme. La différence essentielle entre l’analyse dynamique et l’analyse statique est que cette dernière considère de façon simultanée un ensemble éventuellement infini d’évaluations possibles. En effet, l’environnement abstrait utilisé lors de l’analyse statique correspond à un ensemble éventuellement infini d’environnements possibles alors que l’environnement instrumenté utilisé lors de l’analyse dynamique correspond à un environnement de référence unique. Plus précisément, après avoir obtenu un jugement d’évaluation abstraite du programme à analyser et après avoir vérifié que le label en question n’apparaît pas dans les dépendances calculées alors on peut affirmer que peu importe l’injection considérée sur ce label, l’évaluation avec injection de ce programme dans n’importe quel environnement possible retournera toujours la valeur de référence du programme (la valeur du programme lors d’une évaluation sans injection). 1924.5. CORRECTION DE L’ANALYSE STATIQUE 4.5.2 Illustration par l’exemple Exemple 1 : évaluation d’un couple Notons e1 le programme suivant : (3, l :7) Son jugement d’évaluation abstraite dans le t-environnent abstrait vide est : ∅ ⊢a e1 →→ [ ∅ | [ ∅ | ( [ ∅ | ⊤ ], [ l | ⊤ ]) ] ] Seul le label l apparaît dans la t-valeur abstraite de e1. On peut donc affirmer que tout autre label n’a pas d’impact sur l’évaluation de e1. On a en effet pour toute injection (l ′ , vl ′) sur un label l ′ différent de l : ∅ ⊢l ′ :vl ′ e1 →→ (3, 7) Exemple 2 : liaison d’une fonction Notons e2 le programme suivant : l e t f o = match o with | Some ( x ) → x + l1 : 8 | none → d + l2 : 8 i n ( f ( Some 18 ) , l3 : 17 ) Définissons le t-environnement abstrait dans lequel nous souhaitons effectuer l’analyse statique du programme e2 : tΓ a 2 = (d, [ tda d | [ d a d | ⊤ ] ]) Le jugement d’évaluation abstraite de e2 dans cet environnement est : tΓ a 2 ⊢ a e2 →→ [ ∅ | [ ∅ | ( [ l1 | ⊤ ], [ l3 | ⊤ ]) ] ] Le label l2 n’étant pas présent dans la t-valeur abstraite du programme e2, nous pouvons en conclure qu’aucune injection sur l2 n’a d’impact sur l’évaluation de e2 et ceci, quelque 1934.5. CORRECTION DE L’ANALYSE STATIQUE soit la valeur de d dans l’environnement : ∀(vl2 , vd).(d, vd) ⊢l2:vl2 e2 →→ (26, 17) Les dépendances de l’identificateur d présent dans l’environnement ne sont pas présentes non plus, ce qui indique que la valeur de cette identificateur n’a aucune influence sur le résultat du programme. Par contre, les labels l1 et l3 apparaissent dans la t-valeur instrumentée du programme e2. Il n’est donc pas impossible qu’une injection sur un de ces labels puisse modifier le comportement du programme, comme le montrent les exemples ci-dessous : (d, 26) ⊢l1:24 e2 →→ (42, 17) (d, 32) ⊢l3:613 e2 →→ (26, 613) 4.5.3 Énoncé formel du théorème Pour énoncer formellement le théorème de correction, il nous faut tout d’abord définir formellement les notions de non-apparition d’un label dans une valeur abstraite et dans un t-environnement abstrait. On définit pour cela les prédicats ldna_in_evala , ldna_in_vala et ldna_in_enva . Leur définition est donnée respectivement en figure 4.20, en figure 4.21 et en figure 4.22. Théorème 4.5.1 (Correction de l’analyse statique). ∀(tΓ a , e, tua , l). tΓ a ⊢ a e →→ tua ⇒ ldna_in_enva (l, tΓ a ) ⇒ ldna_in_vala (l, tua ) ⇒ ∀tΓ i ∈ ↑im c (↑ c a (tΓ a )).∀vl .tΓ i ⊢ i e →→ tui ⇒↑ti(tΓ i ) ⊢l:vl e →→↑ti(tui ) 4.5.4 Preuve de correction Nous avons les hypothèses suivantes : tΓ a ⊢ a e →→ tua ldna_in_enva (l, tΓ a ) ldna_in_vala (l, tua ) tΓ i ∈ ↑im c (↑ c a (tΓ a )) tΓ i ⊢ i e →→ tui 1944.5. CORRECTION DE L’ANALYSE STATIQUE ldna-e-a-num ldna_in_evala (l, tΓ a , n) ldna-e-a-constr-0 ldna_in_evala (l, tΓ a , C) ldna-e-a-constr-1 ldna_in_evala (l, tΓ a , e) ldna_in_evala (l, tΓ a , D(e)) ldna-e-a-ident ldna_in_vala (l, tΓ a [x]) ldna_in_evala (l, tΓ a , x) ldna-e-a-ident-unbound x ̸∈ support(tΓ a ) ldna_in_evala (l, tΓ a , x) ldna-e-a-abstr ldna_in_evala (l, tΓ a , e) ldna_in_evala (l, tΓ a , λx.e) ldna-e-a-abstr-rec ldna_in_evala (l, tΓ a , e) ldna_in_evala (l, tΓ a , recf.x.e) ldna-e-a-apply ldna_in_evala (l, tΓ a , e1) ldna_in_evala (l, tΓ a , e2) ldna_in_evala (l, tΓ a , e1 e2) ldna-e-a-if ldna_in_evala (l, tΓ a , e) ldna_in_evala (l, tΓ a , e1) ldna_in_evala (l, tΓ a , e2) ldna_in_evala (l, tΓ a , if e then e1 else e2) ldna-e-a-match ldna_in_evala (l, tΓ a , e) ldna_in_evala (l, tΓ a , e1) ldna_in_evala (l, tΓ a , e2) ldna_in_evala (l, tΓ a , match e with p → e1 | x → e2) ldna-e-a-annot l ̸= l ′ ldna_in_evala (l, tΓ a , e) ldna_in_evala (l, tΓ a , l : e) ldna-e-a-couple ldna_in_evala (l, tΓ a , e1) ldna_in_evala (l, tΓ a , e2) ldna_in_evala (l, tΓ a ,(e1, e2)) ldna-e-a-letin ldna_in_evala (l, tΓ a , e1) ldna_in_evala (l, tΓ a , e2) ldna_in_evala (l, tΓ a , let x = e1 in e2) Figure 4.20 – Prédicat de non-apparition d’un label lors d’une évaluation abstraite ldna-v-a-top ldna_in_vala (l, ⊤) ldna-v-a-bottom ldna_in_vala (l, ⊥) ldna-v-a-constr-0 ldna_in_vala (l, C) ldna-v-a-constr-1 ldna_in_vala (l, u) ldna_in_vala (l, D(u)) ldna-v-a-couple ldna_in_vala (l, u1) ldna_in_vala (l, u2) ldna_in_vala (l,(u1, u2)) ldna-v-a-closure ldna_in_evala (l, ↑ ta a (Γa ), e) ldna_in_vala (l, < λx.e, Γ a >) ldna-v-a-closure-rec ldna_in_evala (l, ↑ ta a (Γa ), e) ldna_in_vala (l, < recf.x.e, Γ a >) ldna-v-a-v-val l ̸∈ d a ldna_in_vala (l, va ) ldna_in_vala (l, [ d a | v a ]) ldna-v-a-t-val l ̸∈ tda ldna_in_vala (l, ua ) ldna_in_vala (l, [ tda | u a ]) Figure 4.21 – Prédicat de non-apparition d’un label dans une valeur abstraite ldna-env-a-empty ldna_in_enva (l, ∅) ldna-env-a-cons ldna_in_vala (l, tua ) ldna_in_vala (l, tΓ a ) ldna_in_vala (l,(tua ) ⊕ tΓ a ) Figure 4.22 – Prédicat de non-apparition d’un label dans un environnement abstrait 1954.5. CORRECTION DE L’ANALYSE STATIQUE Nous voulons montrer : ↑ti(tΓ i ) ⊢l:vl e →→↑ti(tui ) Tout d’abord, nous utilisons le fait que les sémantiques collectrice et instrumentée multiple sont totales pour déduire les jugements d’évaluation suivants : ↑ c a (tΓ a ) ⊢ c e →→ tuc i-multiple v im = {tui | ∃tΓ i ∈↑im c (↑ c a (tΓ a )). tΓ i ⊢ i e →→ tui } ↑ im c (↑ c a (tΓ a )) ⊢ im e →→ v im Nous appliquons alors le théorème de correction de la sémantique abstraite (cf. section 4.4.3.3) en utilisant le fait que ↑ a c (↑ c a (tΓ a )) = tΓ a , ce qui nous donne : tuc ⊆ c ↑ c a (tua ) Nous pouvons alors appliquer le théorème de correction de la sémantique collectrice (cf. section 4.3.3.3) en utilisant le fait que ↑ c im(↑ im c (↑ c a (tΓ a ))) =↑ c a (tΓ a ), ce qui nous donne : v im ⊆ im ↑ im c (tuc ) On remarque que puisque ldna_in_enva (l, tΓ a ) et tΓ i ∈ ↑im c (↑ c a (tΓ a )) alors on a ldna_in_envti(l, tΓ i ) D’autre part, on remarque que tui ∈ v im. En utilisant la relation d’ordre issue de la correction de la sémantique collectrice on déduit qu’il existe un tui 2 ∈↑im c (tuc ) tel que tui ⊆i tui 2 . Puis en utilisant la relation d’ordre issue de la correction de la sémantique abstraite on déduit qu’il existe un tui 3 ∈↑im c (↑ c a (tua )) tel que tui 2 ⊆i tui 3 . Enfin, puisque ldna_in_vala (l, tua ) alors ldna_in_valti(l, tui 3 ) et ldna_in_valti(l, tui ). Nous appliquons enfin le théorème de correction de l’analyse dynamique pour conclure : ↑ti(tΓ i ) ⊢l:vl e →→↑ti(tui ) 196Chapitre 5 Implémentation et preuve Nous présentons dans ce dernier chapitre les développements effectués autour de l’analyse de dépendances. D’une part, nous discutons des différents prototypes réalisés. D’autre part, nous exposons le développement au sein de l’assistant à la preuve Coq, qui a permis de formaliser les différentes sémantiques présentées dans cette thèse ainsi que de construire et vérifier leur preuve de correction. 5.1 Prototypes implémentés en OCaml Trois prototypes ont été développés sous la forme d’une implémantation directe en OCaml. Le premier prototype correspond à l’analyse présentée dans [ABDP12]. Il a permis de cerner les besoins de l’analyse et les améliorations possibles. Un exemple de programme sur lequel nous avons testé ce premier prototype est disponible dans [ABDP12]. Les deux autres prototypes correspondent respectivement à notre analyse dynamique et à notre analyse statique. Cependant, ces derniers ont été développés dans une phase préliminaire, avant de réaliser le développement Coq. Il en résulte qu’ils ne sont pas à jour par rapport aux analyses présentées dans la thèse. En effet, le travail de preuve réalisé en Coq a permis d’identifier différents problèmes qui nous ont conduit à modifier la définition de nos analyses. En particulier, c’est lors de la preuve Coq de la sémantique instrumentée que nous avons identifié la nécessité de faire la distinction entre les t-dépendances et les v-dépendances. Afin d’obtenir une implémentation à jour par rapport au développement Coq, nous 1975.2. DÉVELOPPEMENT COQ envisageons une extraction vers OCaml des définitions inductives des sémantiques correspondantes (cf. 5.3). Il convient de noter que les triplets ont été encodés sous forme de couples imbriqués et le filtrage sur les triplets à été traduit en une imbrication de filtrages de tête à deux branches et d’expressions conditionnelles. Afin de tester des exemples plus complexes, il serait bon d’ajouter aux prototypes un préprocesseur permettant de traduire automatiquement un langage de programmation réaliste vers notre langage noyau. On aurait besoin en particulier d’une traduction d’un filtrage par motifs quelconque vers notre filtrage de tête à deux branches. Ce type de traduction est bien connu, il suffirait de l’intégrer à notre prototype afin de pouvoir accepter des programmes écrits de façon plus naturelle. 5.2 Développement Coq 5.2.1 Contenu du développement Les sémantiques présentées dans cette thèse permettant de définir et de prouver la correction de nos analyses dynamique et statique ont été formalisées en Coq. Cette formalisation prend la forme d’un ensemble de définitions inductives pour la sémantique opé- rationnelle, la sémantique avec injection, la sémantique sur-instrumentée, la sémantique instrumentée, la sémantique instrumentée multiple, la sémantique collectrice ainsi que la sémantique abstraite. Le développement Coq est constitué de la définition de ces 7 sémantiques ainsi que des algèbres de valeurs correspondantes, de 6 théorèmes concernant la correction des sémantiques et 233 lemmes intermédiaires utilisés pour la preuve des théorèmes. Le code Coq donnant la définition des sémantiques est donné en annexe A. Le code Coq des énoncés des différents théorèmes de correction des sémantiques est donné en annexe B. Le code Coq complet, disponible en ligne [BVi14] contient 16 621 lignes de code réparties de la manière suivante : 1985.2. DÉVELOPPEMENT COQ Définition des algèbres de valeurs : 3% Définition des sémantiques : 7% Conversions entres les algèbres de valeurs : 3% Corps des preuves : 30% Lemmes intermédiaires : 57% La preuve de correction de la sémantique abstraite par rapport à la sémantique collectrice n’a pas été terminée par manque de temps. Cependant, la preuve a été suffisamment avancée sur papier pour garantir un certain niveau de confiance. Pour compléter le travail de preuve formelle présenté ici, il faudra envisager de terminer cette dernière étape de la preuve. 5.2.2 Intérêt du choix de Coq Le fait d’avoir choisi Coq pour formaliser et prouver nos différentes sémantiques plutôt que d’opter pour une version papier uniquement offre bien entendu une confiance accrue en la correction de notre analyse. Cependant, ce n’est pas le seul bénéfice. En effet, en tant qu’assistant à la preuve, Coq nous a imposé une certaine rigueur qui nous a permis d’identifier des problèmes dans la définition des sémantiques ainsi que dans l’approche de la preuve. En particulier, la distinction entre les t-dépendances et les v-dépendances s’est imposée au cours de la preuve Coq de la sémantique instrumentée. Lorsque nous avons entamé cette preuve, il n’y avait qu’une seule notion de dépendance et la sémantique avec injection n’était définie que dans un environnement opérationnel. Nous avons essayé de prouver la propriété suivante : « si un label n’apparaît pas dans la valeur instrumentée d’une expresssion alors deux évaluations quelconques avec injetions sur ce label fournissent forcément la même valeur ». Une preuve par induction a été entamée et lorsque nous sommes arrivés au cas de l’évaluation d’une expression de liaison, il n’a pas été possible d’en faire la preuve. Nous avons rapidement compris la nécessité de définir une algèbre de valeurs contenant l’information nécessaire pour connaître la valeur de l’expression considérée pour toute injection possible. C’est ainsi que l’algèbre des valeurs sur-instrumentées est née, dans le but de définir la sémantique avec injection dans des environnements sur-instrumentés. Il nous a ensuite fallu faire le lien entre cette nouvelle sémantique avec injection et la sémantique 1995.3. EXTRACTION DE COQ VERS OCAML instrumentée, ce qui a donné naissance à la sémantique sur-instrumentée. Et c’est enfin lors de la définition formelle en Coq de la sémantique sur-instrumentée que nous avons identifié la nécessité de séparer les t-dépendances des v-dépendances. Coq nous a ainsi permis d’identifier rapidement un trou dans notre définition formelle de la notion d’injection, ce qui nous a entraîné dans un processus qui aurait été probablement beaucoup plus long sans l’aide de l’assistant à la preuve formelle. 5.3 Extraction de Coq vers OCaml Une piste intéressante pour l’implémentation de notre analyse de dépendances est l’extraction à partir de Coq vers OCaml. Les différentes sémantiques que nous avons présentées ont toutes été formalisées en Coq. Leurs jugements d’évaluation sont représentés sous forme de prédicats définis inductivement. Ce style de définition ne fournit pas de fonction d’évaluation. Cependant, les travaux de P.N. Tollitte et al. [TDD12] ont rendu possible l’extraction de code à partir de prédicats définis inductivement. Leur outil [CRE13] permettrait ainsi d’extraire vers OCaml, à partir de nos définitions Coq, une implémentation de nos analyses dynamique et statique. Ces implémentations auraient l’avantage de correspondre parfaitement à leurs définitions formelle et de pouvoir être mis à jour facilement en cas de nouvelle version de l’analyse. Il serait éventuellement possible d’obtenir une garantie formelle de la correction de l’implémentation en utilisant leur outil [CRE13] d’extraction d’une relation inductive Coq vers une fonction Coq, puis en utilisant l’extraction [CEC] des fonctions Coq vers OCaml. Outre les différentes sémantiques intermédiaires non-calculables que nous avons définies pour les besoins de la preuve et qu’il n’est pas question d’implémenter, nous pouvons nous intéresser à l’extraction de la sémantique instrumentée et de la sémantique abstraite. Ces deux sémantiques calculables constituent respectivement la définition de notre analyse dynamique et de notre analyse statique. 200Conclusion 201CONCLUSION Bilan Nous avons présenté dans cette thèse une analyse statique de programmes ML permettant de cerner l’impact d’une injection (dysfonctionnement ou modification de code) sur le comportement d’un programme et sur sa valeur. Cette analyse de dépendances a été spécialement étudiée pour répondre aux besoins exprimés par des évaluateurs de logiciels critiques. De plus, afin d’offrir un niveau de confiance élevé, nous avons effectué une preuve de correction de notre analyse à l’aide de l’assistant à la preuve Coq. Afin de parvenir à ce résultat, nous avons commencé par fournir une définition formelle de la notion d’impact. Cette définition, basée directement sur la sémantique opérationnelle du langage, nous a permis de donner un sens précis à la notion de dépendance. Nous nous sommes alors appliqués à prouver la correction de notre analyse vis-à-vis de cette définition formelle. La preuve formelle s’est déroulée en deux temps. Il a tout d’abord fallu enrichir la sémantique opérationnelle pour qu’elle puisse transporter les informations de dépendance nécessaires à l’analyse, ce qui a donné lieu à la notion de sémantique sur-instrumentée. Ensuite, nous avons procédé par abstractions successives, jusqu’à obtenir une analyse statique permettant d’analyser des programmes dans un environnement partiellement inconnu. La première de ces abstractions a abouti à la définition de la sémantique instrumentée qui constitue une analyse dynamique calculable des dépendances d’un programme. Nous avons ensuite étendu la sémantique instrumentée afin de pouvoir effectuer un ensemble d’évaluations simultanément, étant donné un ensemble d’environnements d’évaluation. C’est ce que nous avons appelé la sémantique instrumentée multiple. À partir de cette dernière, nous avons encore effectué deux abstractions successives afin d’obtenir la sémantique collectrice puis enfin la sémantique abstraite. C’est cette dernière qui constitue l’analyse statique désirée. Toutes ces sémantiques ont été formalisées en Coq. Le code source, contenant également les preuves de correction, est disponible à l’adresse suivante : https://github.com/vincent-benayoun/PhD-thesis. 203CONCLUSION Perspectives Vers un outil utilisable dans l’industrie Ce travail constitue un premier pas vers un outil utilisable en pratique. Il donne une base théorique solide à l’analyse d’impact en définissant formellement la notion d’impact et en proposant une manière efficace de cerner l’impact d’un éventuel dysfonctionnement par l’analyse directe du code source du programme. Il reste encore plusieurs étapes à franchir avant de pouvoir utiliser cette analyse en pratique. Tout d’abord, il faudra terminer la preuve Coq du théorème de correction de la sé- mantique abstraite vis-à-vis de la sémantique collectrice. Celle-ci n’a pas été terminée par manque de temps. Cependant, nous avons entamé de façon significative la preuve sur papier 4.4.3.4 en procédant par induction sur le jugement d’évaluation de la sémantique abstraite. Parmi les dix-huit cas de l’induction, nous en avons traité quatre, dont le cas de l’application qui est vraisemblablement un des cas les plus complexes à prouver. Cette preuve permettra de clôturer la preuve complète de l’analyse statique. Ensuite, il faudra envisager d’étendre le langage sur lequel s’effectue l’analyse pour prendre en compte les fonctionnalités présentes dans les langages ML utilisés dans l’industrie. En particulier il sera nécessaire de gérer les variables mutables et éventuellement les tableaux de valeurs mutables. Cette extension nécessitera probablement une modification de toutes les sémantiques, ce qui aura sans doute un impact conséquent sur les preuves des théorèmes de correction. Une piste intéressante pour éviter la modification de toutes les sémantiques serait d’utiliser une traduction pour transformer tout programme en un programme équivalent ne contenant pas de mutables. Ce type de traduction peut être réalisé de façon naïve en encodant l’environnement des mutables dans le langage et en l’ajoutant en argument et en valeur de retour de toutes les fonctions. On peut aussi utiliser une analyse d’effets pour n’ajouter en argument que les valeurs nécessaires. Le but de l’analyse est de fournir au développeur ainsi qu’à l’évaluateur de logiciels critiques un outil de spécification et de vérification du flot d’information, à l’image de celui présent dans SPARK. Il faudra donc définir un langage d’annotation permettant de spécifier les relations entre les entrées et les sorties d’un sous-programme. On pourra 204CONCLUSION ensuite utiliser notre analyse pour inférer les dépendances du sous-programme et vérifier l’adéquation entre les dépendances inférées et la spécification donnée par l’utilisateur. Optimisation de l’analyse Outre le travail consistant à compléter l’analyse pour en faire un outil utilisable en pratique, différentes pistes d’optimisation de l’analyse sont envisageables. Certaines permettront d’améliorer les performances de l’analyse afin de faciliter le passage à l’échelle pour analyser des programmes de taille importante. D’autres permettront de raffiner l’analyse pour obtenir des résultats plus précis. En particulier, deux pistes nous semblent prometteuses : l’amélioration de la repré- sentation abstraite des fonctions dans l’algèbre des valeurs et l’ajout d’une représentation abstraite pour les types sommes. La représentation actuelle des fonctions dans l’algèbre des valeurs abstraites se présente sous forme d’une fermeture. Celle-ci contient le corps de la fonction qui est analysé à chaque endroit du programme où la fonction est appliquée à un argument. L’idée d’amélioration est de trouver une représentation compacte des fonctions ne contenant pas leur corps mais uniquement une information synthétique concernant le lien entre la valeur de retour de la fonction et son paramètre. Une telle représentation ressemblerait probablement aux types des fonctions dans FlowCaml. L’avantage serait double. D’une part le temps d’exécution de l’analyse pourrait être considérablement réduit en analysant le corps de chaque fonction une fois pour toute (probablement à l’aide d’une exécution symbolique) et non à chaque site d’appel de la fonction. D’autre part, l’analyse pourrait gagner en précision puisque l’union de deux fonctions abstraites ne serait plus nécessairement la valeur abstraite ⊤ mais pourrait être une approximation moins brutale dans le treillis des valeurs abstraites. En ce qui concerne les types sommes, le but serait d’améliorer la précision de l’analyse. Le fait de pouvoir représenter les types sommes dans l’algèbre des valeurs abstraites nous permettrait de rendre plus riche le treillis des valeurs abstraites. On pourrait ainsi profiter de connaissances plus fines sur les valeurs possibles d’une expression filtrée afin d’éliminer certains cas du filtrage. 205CONCLUSION 206Bibliographie [ABDP12] P. Ayrault, V. Benayoun, C. Dubois, and F. Pessaux. ML Dependency Analysis for Assessors. In International Conference on Software Engineering and Formal Methods (SEFM’12), volume 7504 of LNCS, pages 278–292, Thessaloniki, Greece, October 2012. [ABHR99] Martín Abadi, Anindya Banerjee, Nevin Heintze, and Jon G. Riecke. A core calculus of dependency. In Andrew W. Appel and Alex Aiken, editors, POPL, pages 147–160. ACM, 1999. [ACL03] June Andronick, Boutheina Chetali, and Olivier Ly. Using coq to verify java card tm applet isolation properties. In David Basin and Burkhart Wolff, editors, Theorem Proving in Higher Order Logics, volume 2758 of Lecture Notes in Computer Science, pages 335–351. Springer Berlin Heidelberg, 2003. [ALL96] Martín Abadi, Butler W. Lampson, and Jean-Jacques Lévy. Analysis and caching of dependencies. In Robert Harper and Richard L. Wexelblat, editors, ICFP, pages 83–91. ACM, 1996. [Ayr11] Philippe Ayrault. Développement de logiciel critique en Focalize. Méthodologie et outils pour l’évaluation de conformité. PhD thesis, Université Pierre et Marie Curie - LIP6, 2011. [Bar03] John Barnes. High Integrity Software : The SPARK Approach to Safety and Security. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 2003. [BHA86] Geoffrey L Burn, Chris Hankin, and Samson Abramsky. Strictness analysis for higher-order functions. Science of Computer Programming, 7 :249–278, 1986. 207BIBLIOGRAPHIE [BVi14] Preuve de correction de l’analyse de dépendance en Coq. https://github. com/vincent-benayoun/PhD-thesis, 2014. [CC77] Patrick Cousot and Radhia Cousot. Abstract interpretation : A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Proceedings of the 4th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, POPL ’77, pages 238–252, New York, NY, USA, 1977. ACM. [CC79] Patrick Cousot and Radhia Cousot. Systematic design of program analysis frameworks. In Proceedings of the 6th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, POPL ’79, pages 269–282, New York, NY, USA, 1979. ACM. [CEC] Extraction Coq vers du code fonctionnel. http://coq.inria.fr/refman/ Reference-Manual025.html. [CH04] Roderick Chapman and Adrian Hilton. Enforcing security and safety models with an information flow analysis tool. Ada Lett., XXIV(4) :39–46, November 2004. [CKK+12] Pascal Cuoq, Florent Kirchner, Nikolai Kosmatov, Virgile Prevosto, Julien Signoles, and Boris Yakobowski. Frama-c - a software analysis perspective. In George Eleftherakis, Mike Hinchey, and Mike Holcombe, editors, SEFM, volume 7504 of Lecture Notes in Computer Science, pages 233–247. Springer, 2012. [CMP10] Dumitru Ceara, Laurent Mounier, and Marie-Laure Potet. Taint dependency sequences : A characterization of insecure execution paths based on inputsensitive cause sequences. In Proceedings of the 2010 Third International Conference on Software Testing, Verification, and Validation Workshops, ICSTW ’10, pages 371–380, Washington, DC, USA, 2010. IEEE Computer Society. [CRE13] Contribution Coq : RelationExtraction. http://coq.inria.fr/pylons/ contribs/view/RelationExtraction/v8.4, 2013. [FHJ+06] Ansgar Fehnker, Ralf Huuck, Patrick Jayet, Michel Lussenburg, and Felix Rauch. Goanna - a static model checker. In Lubos Brim, Boudewijn R. Ha- 208BIBLIOGRAPHIE verkort, Martin Leucker, and Jaco van de Pol, editors, FMICS/PDMC, volume 4346 of Lecture Notes in Computer Science, pages 297–300. Springer, 2006. [Flo03] The Flow Caml System - Documentation and user’s manual. http://www. normalesup.org/~simonet/soft/flowcaml/flowcaml-manual.pdf, 2003. [GM82] Joseph A. Goguen and José Meseguer. Security policies and security models. In IEEE Symposium on Security and Privacy, pages 11–20, 1982. [Hun91] Sebastian Hunt. Abstract Interpretation of Functional Languages : From Theory to Practice. PhD thesis, Department of Computing, Imperial College of Science Technology and Medicine, 1991. [JES00] Simon L. Peyton Jones, Jean-Marc Eber, and Julian Seward. Composing contracts : an adventure in financial engineering, functional pearl. In Odersky and Wadler [OW00], pages 280–292. [Jon94] Neil D. Jones. Abstract interpretation : a semantics-based tool for program analysis, 1994. [Kni12] Is Knight’s 440 million glitch the costliest computer bug ever ? http://money. cnn.com/2012/08/09/technology/knight-expensive-computer-bug, 2012. [Kri07] Jens Krinke. Information flow control and taint analysis with dependence graphs, 2007. [MSA80] MIL-STD-1629A. Procedure for performing a Failure Mode, Effets and Criticality Analysis. Department of Defense, November 1980. [MW08] Yaron Minsky and Stephen Weeks. Caml trading - experiences with functional programming on wall street. J. Funct. Program., 18(4) :553–564, 2008. [Myc81] Alan Mycroft. Abstract interpretation and optimising transformations for applicative programs. PhD thesis, University of Edinburgh, 1981. [OW00] Martin Odersky and Philip Wadler, editors. Proceedings of the Fifth ACM SIGPLAN International Conference on Functional Programming (ICFP ’00), Montreal, Canada, September 18-21, 2000. ACM, 2000. [PAC+08] Bruno Pagano, Olivier Andrieu, Benjamin Canou, Emmanuel Chailloux, JeanLouis Colaço, Thomas Moniot, and Philippe Wang. Certified development tools 209implementation in objective caml. In Paul Hudak and David Scott Warren, editors, PADL, volume 4902 of Lecture Notes in Computer Science, pages 2–17. Springer, 2008. [PC00] François Pottier and Sylvain Conchon. Information flow inference for free. In Odersky and Wadler [OW00], pages 46–57. [PS02] François Pottier and Vincent Simonet. Information flow inference for ml. In John Launchbury and John C. Mitchell, editors, POPL, pages 319–330. ACM, 2002. [RTC92] RTCA, Incorporated. Software Considerations in Airborne Systems and Equipment Certification, 1992. [SR03] Vincent Simonet and Inria Rocquencourt. Flow caml in a nutshell. In Proceedings of the first APPSEM-II workshop, pages 152–165, 2003. [Sta99] Standard Cenelec EN 50128. Railway Applications - Communications, Signaling and Processing Systems - Software for Railway Control and Protection Systems, 1999. [TDD12] Pierre-Nicolas Tollitte, David Delahaye, and Catherine Dubois. Producing certified functional code from inductive specifications. In Chris Hawblitzel and Dale Miller, editors, CPP, volume 7679 of Lecture Notes in Computer Science, pages 76–91. Springer, 2012. [X6086] X60510. Procédures d’analyse des modes de défaillance et de leurs effets (AMDE). AFNOR, Décembre 1986. [XBS06] Wei Xu, Sandeep Bhatkar, and R. Sekar. Taint-enhanced policy enforcement : A practical approach to defeat a wide range of attacks. In In the Proc. of the 15th USENIX Security Symp, 2006.Annexes 211Annexe A Définitions des sémantiques en Coq 213A.1. SÉMANTIQUE OPÉRATIONNELLE A.1 Sémantique opérationnelle Inductive val_of : env → expr → val → Prop := | Val_of_num : forall (v : Z) (c : env), val_of c (Num v) (V_Num v) | Val_of_ident : forall (c : env) (i : identifier) (v : val), assoc_ident_in_env i c = Ident_in_env v → val_of c (Var i) v | Val_of_lambda : forall (c:env) (x:identifier) (e:expr), val_of c (Lambda x e) (V_Closure x e c) | Val_of_rec : forall (c:env) (f x:identifier) (e:expr), val_of c (Rec f x e) (V_Rec_Closure f x e c) | Val_of_apply : forall (c c1 : env) (e1 e2 e : expr) (x: identifier) (v2 v: val), val_of c e1 (V_Closure x e c1) → val_of c e2 v2 → val_of (add_env x v2 c1) e v → val_of c (Apply e1 e2) v | Val_of_apply_rec : forall (c c1 : env) (e1 e2 e : expr) (f x: identifier) (v2 v: val), val_of c e1 (V_Rec_Closure f x e c1) → val_of c e2 v2 → val_of (add_env f (V_Rec_Closure f x e c1) (add_env x v2 c1)) e v → val_of c (Apply e1 e2) v | Val_of_let : forall (c : env) (x : identifier) (e1 e2 : expr) (v1 v : val), val_of c e1 v1 → val_of (add_env x v1 c) e2 v → val_of c (Let_in x e1 e2) v | Val_of_If_true : forall (c : env) (e e1 e2 : expr) (v : val), val_of c e (V_Bool true) → val_of c e1 v → val_of c (If e e1 e2) v | Val_of_If_false : forall (c : env) (e e1 e2 : expr) (v : val), val_of c e (V_Bool false) → val_of c e2 v → val_of c (If e e1 e2) v | Val_of_Match : forall (c c_p : env) (e e1 : expr) (p : pattern) (v v_e : val) (br2 : option (identifier∗expr)), val_of c e v_e → is_filtered v_e p = Filtered_result_Match c_p → val_of (conc_env c_p c) e1 v → val_of c (Expr_match e (p,e1) br2) v | Val_of_Match_var : forall (c : env) (e e1 e2 : expr) (p : pattern) (v v_e : val) (x : identifier), val_of c e v_e → is_filtered v_e p = Filtered_result_Match_var → val_of (add_env x v_e c) e2 v → val_of c (Expr_match e (p,e1) (Some (x,e2))) v | Val_of_Constr0 : forall c n, val_of c (Constr0 n) (V_Constr0 n) | Val_of_Constr1 : forall c n e v, val_of c e v → val_of c (Constr1 n e) (V_Constr1 n v) | Val_of_Couple : forall c (e1 e2 : expr) (v1 v2 : val), val_of c e1 v1 → val_of c e2 v2 → val_of c (Couple e1 e2) (V_Couple v1 v2) | Val_of_Annot : forall c (l : label) (e : expr) v, val_of c e v → val_of c (Annot l e) v. 214A.2. SÉMANTIQUE AVEC INJECTION A.2 Sémantique avec injection Inductive val_of_with_injection : label → val → oitenv → expr → val → Prop := | Val_of_with_injection_Num : forall (l:label) (vl:val) (v:Z) (c:oitenv), val_of_with_injection l vl c (Num v) (V_Num v) | Val_of_with_injection_Ident : forall (l:label) (vl v:val) (c:oitenv) (i:identifier) (uu:oitval), assoc_ident_in_oitenv i c = Ident_in_oitenv uu → Some v = instantiate_oitval l vl uu → val_of_with_injection l vl c (Var i) v | Val_of_with_injection_Lambda : forall (l:label) (vl v:val) (c:oitenv) (c’:env) (x:identifier) (e:expr), Some c’ = instantiate_oitenv l vl c → v = V_Closure x e c’ → val_of_with_injection l vl c (Lambda x e) v | Val_of_with_injection_Rec : forall (l:label) (vl v:val) (c:oitenv) (c’:env) (f x:identifier) (e:expr), Some c’ = instantiate_oitenv l vl c → v = V_Rec_Closure f x e c’ → val_of_with_injection l vl c (Rec f x e) v | Val_of_with_injection_Apply : forall (l:label) (vl:val) (c:oitenv) (c1:env) (e1 e2 e:expr) (x:identifier) (v2 v:val), val_of_with_injection l vl c e1 (V_Closure x e c1) → val_of_with_injection l vl c e2 v2 → val_of_with_injection l vl (OITEnv_cons x (val_to_oitval v2) (env_to_oitenv c1)) e v → val_of_with_injection l vl c (Apply e1 e2) v | Val_of_with_injection_Apply_rec : forall (l:label) (vl:val) (c : oitenv) (c1 : env) (e1 e2 e : expr) (f x : identifier) (v2 v : val), val_of_with_injection l vl c e1 (V_Rec_Closure f x e c1) → val_of_with_injection l vl c e2 v2 → val_of_with_injection l vl (env_to_oitenv (add_env f (V_Rec_Closure f x e c1) (add_env x v2 c1))) e v → val_of_with_injection l vl c (Apply e1 e2) v | Val_of_with_injection_Let_in : forall (l:label) (vl:val) (c : oitenv) (i : identifier) (e1 e2 : expr) (v1 v2 : val), val_of_with_injection l vl c e1 v1 → val_of_with_injection l vl (OITEnv_cons i (val_to_oitval v1) c) e2 v2 → val_of_with_injection l vl c (Let_in i e1 e2) v2 | Val_of_with_injection_If_true : forall (l:label) (vl:val) (c : oitenv) (e e1 e2 : expr) (v : val), val_of_with_injection l vl c e (V_Bool true) → val_of_with_injection l vl c e1 v → val_of_with_injection l vl c (If e e1 e2) v 215A.2. SÉMANTIQUE AVEC INJECTION | Val_of_with_injection_If_false : forall (l:label) (vl:val) (c : oitenv) (e e1 e2 : expr) (v : val), val_of_with_injection l vl c e (V_Bool false) → val_of_with_injection l vl c e2 v → val_of_with_injection l vl c (If e e1 e2) v | Val_of_with_injection_Match : forall (l:label) (vl:val) (c:oitenv) (c_p:env) (e e1 : expr) (p : pattern) (v v_e : val) (br2 : option (identifier∗expr)), val_of_with_injection l vl c e v_e → is_filtered v_e p = Filtered_result_Match c_p → val_of_with_injection l vl (conc_oitenv (env_to_oitenv c_p) c) e1 v → val_of_with_injection l vl c (Expr_match e (p,e1) br2) v | Val_of_with_injection_Match_var : forall (l:label) (vl:val) (c : oitenv) (e e1 e2 : expr) (p : pattern) (v v_e : val) (x : identifier), val_of_with_injection l vl c e v_e → is_filtered v_e p = Filtered_result_Match_var → val_of_with_injection l vl (OITEnv_cons x (val_to_oitval v_e) c) e2 v → val_of_with_injection l vl c (Expr_match e (p,e1) (Some (x,e2))) v | Val_of_with_injection_Constr0 : forall (l:label) (vl:val) c n, val_of_with_injection l vl c (Constr0 n) (V_Constr0 n) | Val_of_with_injection_Constr1 : forall (l:label) (vl:val) c n e v, val_of_with_injection l vl c e v → val_of_with_injection l vl c (Constr1 n e) (V_Constr1 n v) | Val_of_with_injection_Couple : forall (l:label) (vl:val) c (e1 e2 : expr) (v1 v2 : val), val_of_with_injection l vl c e1 v1 → val_of_with_injection l vl c e2 v2 → val_of_with_injection l vl c (Couple e1 e2) (V_Couple v1 v2) | Val_of_with_injection_Annot_eq : forall (l:label) (vl:val) c (e : expr), val_of_with_injection l vl c (Annot l e) vl | Val_of_with_injection_Annot_neq : forall (l:label) (vl:val) c (l’ : label) (e : expr) v, val_of_with_injection l vl c e v → neq_label l l’ → val_of_with_injection l vl c (Annot l’ e) v. 216A.3. SÉMANTIQUE SUR-INSTRUMENTÉE A.3 Sémantique sur-instrumentée Inductive oival_of : oitenv → expr → oitval → Prop := | OIVal_of_Num : forall (v:Z) (c:oitenv), oival_of c (Num v) (OIV nil (OIV_ nil (OIV_Num v))) | OIVal_of_Ident : forall (c:oitenv) (x:identifier) (uu:oitval), assoc_ident_in_oitenv x c = Ident_in_oitenv uu → oival_of c (Var x) uu | OIVal_of_Lambda : forall (c:oitenv) (x:identifier) (e:expr) (uu:oitval), uu = OIV nil (OIV_ nil (OIV_Closure x e (oitenv_to_oienv c))) → oival_of c (Lambda x e) uu | OIVal_of_Rec : forall (c:oitenv) (f x:identifier) (e:expr) (uu:oitval), uu = OIV nil (OIV_ nil (OIV_Rec_Closure f x e (oitenv_to_oienv c))) → oival_of c (Rec f x e) uu | OIVal_of_Apply : forall (c:oitenv) (c1:oienv) (e1 e2 e : expr) (x : identifier) (uu2 uu:oitval) (u2:oival) (d d’ d1:oideps) (td1 td2 td td’:oitdeps) (v:oival0), oival_of c e1 (OIV td1 (OIV_ d1 (OIV_Closure x e c1))) → oival_of c e2 uu2 → uu2 = OIV td2 u2 → oival_of (OITEnv_cons x uu2 (oienv_to_oitenv c1)) e (OIV td (OIV_ d v)) → deps_spec_Apply uu2 d1 td’ d’ (* specification des dependances td’ et d’ *) → uu = OIV (conc_oitdeps td1 (conc_oitdeps td2 (conc_oitdeps td td’))) (OIV_ (conc_oideps d’ d) v) (* resultat de l’application *) → oival_of c (Apply e1 e2) uu | OIVal_of_Apply_Rec : forall (c:oitenv) (c1:oienv) (e1 e2 e : expr) (f x:identifier) (uu1 uu2 uu:oitval) (u2:oival) (d d’ d1:oideps) (td1 td2 td td’:oitdeps) (v:oival0), oival_of c e1 uu1 → uu1 = (OIV td1 (OIV_ d1 (OIV_Rec_Closure f x e c1))) → oival_of c e2 uu2 → uu2 = OIV td2 u2 → oival_of (OITEnv_cons f uu1 (OITEnv_cons x uu2 (oienv_to_oitenv c1))) e (OIV td (OIV_ d v)) → deps_spec_Apply uu2 d1 td’ d’ (* specification des dependances td’ et d’ *) → uu = OIV (conc_oitdeps td1 (conc_oitdeps td2 (conc_oitdeps td td’))) (OIV_ (conc_oideps d’ d) v) (* resultat de l’application *) → oival_of c (Apply e1 e2) uu | OIVal_of_Let_in : forall (c:oitenv) (x:identifier) (e1 e2:expr) (uu1 uu2:oitval) (td1 td2:oitdeps) (u1 u2:oival), oival_of c e1 uu1 → uu1 = (OIV td1 u1) → oival_of (OITEnv_cons x uu1 c) e2 uu2 → uu2 = (OIV td2 u2) → oival_of c (Let_in x e1 e2) (OIV (conc_oitdeps td1 td2) u2) | OIVal_of_If_true : forall (c:oitenv) (e e1 e2:expr) (td td1 td’:oitdeps) (d d1 d’:oideps) (uu1:oitval) (v1:oival0), oival_of c e (OIV td (OIV_ d (OIV_Bool true))) → oival_of c e1 uu1 → uu1 = (OIV td1 (OIV_ d1 v1)) → deps_spec_If c e1 e2 d td’ d’ (* specification des dependances td’ et d’ *) → oival_of c (If e e1 e2) (OIV (conc_oitdeps td’ (conc_oitdeps td td1)) (OIV_ (conc_oideps d’ d1) v1)) 217A.3. SÉMANTIQUE SUR-INSTRUMENTÉE | OIVal_of_If_false : forall (c:oitenv) (e e1 e2:expr) (td td2 td’:oitdeps) (d d2 d’:oideps) (uu2:oitval) (v2:oival0), oival_of c e (OIV td (OIV_ d (OIV_Bool false))) → oival_of c e2 uu2 → uu2 = (OIV td2 (OIV_ d2 v2)) → deps_spec_If c e1 e2 d td’ d’ (* specification des dependances td’ et d’ *) → oival_of c (If e e1 e2) (OIV (conc_oitdeps td’ (conc_oitdeps td td2)) (OIV_ (conc_oideps d’ d2) v2)) | OIVal_of_Match : forall (c c_p:oitenv) (e e1 e2: expr) (p:pattern) (x:identifier) (uu uu1:oitval) (td td1 td’:oitdeps) (d d1 d’:oideps) (v v1:oival0), oival_of c e uu → uu = (OIV td (OIV_ d v)) → is_filtered_oitval uu p = Filtered_oitval_result_Match c_p → oival_of (conc_oitenv c_p c) e1 uu1 → uu1 = (OIV td1 (OIV_ d1 v1)) → deps_spec_Match c p x e1 e2 d td’ d’ (* specification des dependances td’ et d’ *) → oival_of c (Expr_match e (p,e1) (Some (x,e2))) (OIV (conc_oitdeps td’ (conc_oitdeps td td1)) (OIV_ (conc_oideps d’ d1) v1)) | OIVal_of_Match_var : forall (c:oitenv) (e e1 e2: expr) (p:pattern) (x:identifier) (uu uu2:oitval) (td td2 td’:oitdeps) (d d2 d’:oideps) (v v2:oival0), oival_of c e uu → uu = (OIV td (OIV_ d v)) → is_filtered_oitval uu p = Filtered_oitval_result_Match_var → oival_of (OITEnv_cons x uu c) e2 uu2 → uu2 = (OIV td2 (OIV_ d2 v2)) → deps_spec_Match c p x e1 e2 d td’ d’ (* specification des dependances td’ et d’ *) → oival_of c (Expr_match e (p,e1) (Some (x,e2))) (OIV (conc_oitdeps td’ (conc_oitdeps td td2)) (OIV_ (conc_oideps d’ d2) v2)) | OIVal_of_Constr0 : forall (c:oitenv) (n:constr), oival_of c (Constr0 n) (OIV nil (OIV_ nil (OIV_Constr0 n))) | OIVal_of_Constr1 : forall (c:oitenv) (n:constr) (e:expr) (td:oitdeps) (u:oival), oival_of c e (OIV td u) → oival_of c (Constr1 n e) (OIV td (OIV_ nil (OIV_Constr1 n u))) | OIVal_of_Couple : forall (c:oitenv) (e1 e2:expr) (td1 td2:oitdeps) (u1 u2:oival), oival_of c e1 (OIV td1 u1) → oival_of c e2 (OIV td2 u2) → oival_of c (Couple e1 e2) (OIV (conc_oitdeps td1 td2) (OIV_ nil (OIV_Couple u1 u2))) | OIVal_of_Annot : forall (c:oitenv) (l:label) (e:expr) (td:oitdeps) (d:oideps) (v:oival0), oival_of c e (OIV td (OIV_ d v)) → oival_of c (Annot l e) (OIV td (OIV_ (cons (l, fun x⇒ x) d) v)). 218A.4. SÉMANTIQUE INSTRUMENTÉE A.4 Sémantique instrumentée Inductive ival_of : itenv → expr → itval → Prop := | IVal_of_Num : forall (v:Z) (c:itenv), ival_of c (Num v) (IV nil (IV_ nil (IV_Num v))) | IVal_of_Ident : forall (c:itenv) (x:identifier) (uu:itval), assoc_ident_in_itenv x c = Ident_in_itenv uu → ival_of c (Var x) uu | IVal_of_Lambda : forall (c:itenv) (x:identifier) (e:expr) (uu:itval), uu = IV nil (IV_ nil (IV_Closure x e (itenv_to_ienv c))) → ival_of c (Lambda x e) uu | IVal_of_Rec : forall (c:itenv) (f x:identifier) (e:expr) (uu:itval), uu = IV nil (IV_ nil (IV_Rec_Closure f x e (itenv_to_ienv c))) → ival_of c (Rec f x e) uu | IVal_of_Apply : forall (c:itenv) (c1:ienv) (e1 e2 e : expr) (x : identifier) (uu2 uu:itval) (u2:ival) (d d1:ideps) (td1 td2 td:itdeps) (v:ival0), (* construction de la valeur *) ival_of c e1 (IV td1 (IV_ d1 (IV_Closure x e c1))) → ival_of c e2 uu2 → uu2 = IV td2 u2 → ival_of (ITEnv_cons x uu2 (ienv_to_itenv c1)) e (IV td (IV_ d v)) (* resultat de l’application *) → uu = IV (conc_itdeps td1 (conc_itdeps td2 (conc_itdeps td d1))) (IV_ (conc_ideps d1 d) v) → ival_of c (Apply e1 e2) uu | IVal_of_Apply_Rec : forall (c:itenv) (c1:ienv) (e1 e2 e : expr) (f x:identifier) (uu1 uu2 uu:itval) (u2:ival) (d d1:ideps) (td1 td2 td:itdeps) (v:ival0), (* construction de la valeur *) ival_of c e1 uu1 → uu1 = (IV td1 (IV_ d1 (IV_Rec_Closure f x e c1))) → ival_of c e2 uu2 → ival_of (ITEnv_cons f uu1 (ITEnv_cons x uu2 (ienv_to_itenv c1))) e (IV td (IV_ d v)) → uu2 = IV td2 u2 (* resultat de l’application *) → uu = IV (conc_itdeps td1 (conc_itdeps td2 (conc_itdeps td d1))) (IV_ (conc_ideps d1 d) v) → ival_of c (Apply e1 e2) uu | IVal_of_Let_in : forall (c:itenv) (x:identifier) (e1 e2:expr) (uu1 uu2:itval) (td1 td2:itdeps) (u1 u2:ival), ival_of c e1 uu1 → uu1 = (IV td1 u1) → ival_of (ITEnv_cons x uu1 c) e2 uu2 → uu2 = (IV td2 u2) → ival_of c (Let_in x e1 e2) (IV (conc_itdeps td1 td2) u2) 219A.4. SÉMANTIQUE INSTRUMENTÉE | IVal_of_If_true : forall (c:itenv) (e e1 e2:expr) (td td1:itdeps) (d d1:ideps) (uu1:itval) (v1:ival0), ival_of c e (IV td (IV_ d (IV_Bool true))) → ival_of c e1 uu1 → uu1 = (IV td1 (IV_ d1 v1)) → ival_of c (If e e1 e2) (IV (conc_itdeps d (conc_itdeps td td1)) (IV_ (conc_ideps d d1) v1)) | IVal_of_If_false : forall (c:itenv) (e e1 e2:expr) (td td2:itdeps) (d d2:ideps) (uu2:itval) (v2:ival0), ival_of c e (IV td (IV_ d (IV_Bool false))) → ival_of c e2 uu2 → uu2 = (IV td2 (IV_ d2 v2)) → ival_of c (If e e1 e2) (IV (conc_itdeps d (conc_itdeps td td2)) (IV_ (conc_ideps d d2) v2)) | IVal_of_Match : forall (c c_p:itenv) (e e1 e2: expr) (p:pattern) (x:identifier) (uu uu1:itval) (td td1:itdeps) (d d1:ideps) (v v1:ival0), ival_of c e uu → uu = (IV td (IV_ d v)) → is_filtered_itval uu p = Filtered_itval_result_Match c_p → ival_of (conc_itenv c_p c) e1 uu1 → uu1 = (IV td1 (IV_ d1 v1)) → ival_of c (Expr_match e (p,e1) (Some (x,e2))) (IV (conc_itdeps d (conc_itdeps td td1)) (IV_ (conc_ideps d d1) v1)) | IVal_of_Match_var : forall (c:itenv) (e e1 e2: expr) (p:pattern) (x:identifier) (uu uu2:itval) (td td2:itdeps) (d d2:ideps) (v v2:ival0), ival_of c e uu → uu = (IV td (IV_ d v)) → is_filtered_itval uu p = Filtered_itval_result_Match_var → ival_of (ITEnv_cons x uu c) e2 uu2 → uu2 = (IV td2 (IV_ d2 v2)) → ival_of c (Expr_match e (p,e1) (Some (x,e2))) (IV (conc_itdeps d (conc_itdeps td td2)) (IV_ (conc_ideps d d2) v2)) | IVal_of_Constr0 : forall (c:itenv) (n:constr), ival_of c (Constr0 n) (IV nil (IV_ nil (IV_Constr0 n))) | IVal_of_Constr1 : forall (c:itenv) (n:constr) (e:expr) (td:itdeps) (u:ival), ival_of c e (IV td u) → ival_of c (Constr1 n e) (IV td (IV_ nil (IV_Constr1 n u))) | IVal_of_Couple : forall (c:itenv) (e1 e2:expr) (td1 td2:itdeps) (u1 u2:ival), ival_of c e1 (IV td1 u1) → ival_of c e2 (IV td2 u2) → ival_of c (Couple e1 e2) (IV (conc_itdeps td1 td2) (IV_ nil (IV_Couple u1 u2))) | IVal_of_Annot : forall (c:itenv) (l:label) (e:expr) (td:itdeps) (d:ideps) (v:ival0), ival_of c e (IV td (IV_ d v)) → ival_of c (Annot l e) (IV td (IV_ (cons l d) v)). 220A.5. SÉMANTIQUE INSTRUMENTÉE MULTIPLE A.5 Sémantique instrumentée multiple Inductive imval_of : imenv → expr → imval → Prop := | IMVal_of : forall (imc:imenv) (e:expr) (imv:imval), imv = (fun itu ⇒ exists (itc:itenv), In _ imc itc ∧ ival_of itc e itu) → imval_of imc e imv. 221A.6. SÉMANTIQUE COLLECTRICE A.6 Sémantique collectrice Inductive ctval_of : ctenv → expr → ctval → Prop := | CTVal_of_Num : forall (ctc:ctenv) (v:Z), ctval_of ctc (Num v) (CTVal nil nil (Singleton _ (IV_Num v))) | CTVal_of_Constr0 : forall (ctc:ctenv) (n:constr), ctval_of ctc (Constr0 n) (CTVal nil nil (Singleton _ (IV_Constr0 n))) | CTVal_of_Constr1 : forall (ctc:ctenv) (n:constr) (e:expr) (td:itdeps) (d:ideps) (ivs ivs’:Ensemble ival0), ctval_of ctc e (CTVal td d ivs) → ivs’ = SetMap (fun iv ⇒ IV_Constr1 n (IV_ d iv)) ivs → ctval_of ctc (Constr1 n e) (CTVal td nil ivs’) | CTVal_of_Apply : forall (ctc:ctenv) (e1 e2:expr) (td1 td2 td:itdeps) (d1 d2 d:ideps) (ivs1 ivs2:Ensemble ival0) (ctv:ctval) (imv:Ensemble itval), ctval_of ctc e1 (CTVal td1 d1 ivs1) → ctval_of ctc e2 (CTVal td2 d2 ivs2) → imv = (fun itu ⇒ (exists x e ic1 iv2 itd id iv, In _ ivs1 (IV_Closure x e ic1) ∧ In _ ivs2 iv2 ∧ ival_of (ITEnv_cons x (IV td2 (IV_ d2 iv2)) (ienv_to_itenv ic1)) e (IV itd (IV_ id iv)) ∧ itu = IV (conc_itdeps td1 (conc_itdeps td2 (conc_itdeps itd d1))) (IV_ (conc_ideps d1 id) iv)) ∨ (exists f x e ic iv2 itd id iv, In _ ivs1 (IV_Rec_Closure f x e ic) ∧ In _ ivs2 iv2 ∧ ival_of (ITEnv_cons f (IV td1 (IV_ d1 (IV_Rec_Closure f x e ic))) (ITEnv_cons x (IV td2 (IV_ d2 iv2)) (ienv_to_itenv ic))) e (IV itd (IV_ id iv)) ∧ itu = IV (conc_itdeps td1 (conc_itdeps td2 (conc_itdeps itd d1))) (IV_ (conc_ideps d1 id) iv))) → (forall l:label, List.In l td ↔ (exists td’, List.In l td’ ∧ In _ (SetMap (fun itu ⇒ match itu with | IV td (IV_ d iv) ⇒ td end) imv) td’)) → (forall l:label, List.In l d ↔ (exists d’, List.In l d’ ∧ In _ (SetMap (fun itu ⇒ match itu with | IV td (IV_ d iv) ⇒ d end) imv) d’)) → ctv = CTVal td d (SetMap (fun itu ⇒ match itu with | IV td (IV_ d iv) ⇒ iv end) imv) → ctval_of ctc (Apply e1 e2) ctv | CTVal_of_Ident : forall (ctc:ctenv) (x:identifier) (ctv:ctval), assoc_ident_in_ctenv x ctc = Ident_in_ctenv ctv → ctval_of ctc (Var x) ctv 222A.6. SÉMANTIQUE COLLECTRICE | CTVal_of_Ident_empty :forall (ctc:ctenv) (x:identifier), assoc_ident_in_ctenv x ctc = Ident_not_in_ctenv → ctval_of ctc (Var x) (CTVal nil nil (Empty_set _)) | CTVal_of_Lambda : forall (ctc:ctenv) (x:identifier) (e:expr) (ctv:ctval) (ivs:Ensemble ival0), ivs = SetMap (fun itc ⇒ IV_Closure x e (itenv_to_ienv itc)) (ctenv_to_imenv ctc) → ctval_of ctc (Lambda x e) (CTVal nil nil ivs) | CTVal_of_Rec : forall (ctc:ctenv) (f x:identifier) (e:expr) (ctv:ctval) (ivs:Ensemble ival0), ivs = SetMap (fun itc ⇒ IV_Rec_Closure f x e (itenv_to_ienv itc)) (ctenv_to_imenv ctc) → ctval_of ctc (Rec f x e) (CTVal nil nil ivs) | CTVal_of_If_true : forall (ctc:ctenv) (e e1 e2:expr) (td td1:itdeps) (d d1:ideps) (ivs ivs1:Ensemble ival0), ctval_of ctc e (CTVal td d ivs) → In _ ivs (IV_Bool true) → (not (In _ ivs (IV_Bool false))) → ctval_of ctc e1 (CTVal td1 d1 ivs1) → ctval_of ctc (If e e1 e2) (CTVal (conc_itdeps d (conc_itdeps td td1)) (conc_ideps d d1) ivs1) | CTVal_of_If_false : forall (ctc:ctenv) (e e1 e2:expr) (td td2:itdeps) (d d2:ideps) (ivs ivs2:Ensemble ival0), ctval_of ctc e (CTVal td d ivs) → Same_set _ ivs (Singleton _ (IV_Bool false)) → In _ ivs (IV_Bool false) → (not (In _ ivs (IV_Bool true))) → ctval_of ctc e2 (CTVal td2 d2 ivs2) → ctval_of ctc (If e e1 e2) (CTVal (conc_itdeps d (conc_itdeps td td2)) (conc_ideps d d2) ivs2) | CTVal_of_If_unknown : forall (ctc:ctenv) (e e1 e2:expr) (td td1 td2:itdeps) (d d1 d2:ideps) (ivs ivs1 ivs2:Ensemble ival0), ctval_of ctc e (CTVal td d ivs) → Included _ (Couple _ (IV_Bool true) (IV_Bool false)) ivs → ctval_of ctc e1 (CTVal td1 d1 ivs1) → ctval_of ctc e2 (CTVal td2 d2 ivs2) → ctval_of ctc (If e e1 e2) (CTVal (conc_itdeps d (conc_itdeps td (conc_itdeps td1 td2))) (conc_ideps d (conc_ideps d1 d2)) (Union _ ivs1 ivs2)) | CTVal_of_If_empty : forall (ctc:ctenv) (e e1 e2:expr) (td td1:itdeps) (d d1:ideps) (ivs ivs1:Ensemble ival0), ctval_of ctc e (CTVal td d ivs) → (not (In _ ivs (IV_Bool true))) → (not (In _ ivs (IV_Bool false))) → ctval_of ctc (If e e1 e2) (CTVal nil nil (Empty_set _)) 223A.6. SÉMANTIQUE COLLECTRICE | CTVal_of_Match : forall (ctv:ctval) (ctc ctc_p:ctenv) (e e1:expr) (br2:option (identifier∗expr)) (p:pattern) (td td1:itdeps) (d d1:ideps) (ivs ivs1:Ensemble ival0), ctval_of ctc e ctv → ctv = (CTVal td d ivs) → Inhabited _ (Intersection _ ivs ivs_of_matchable) → is_filtered_ctval ctv p (Filtered_ctval_result_Match ctc_p) → ctval_of (conc_ctenv ctc_p ctc) e1 (CTVal td1 d1 ivs1) → ctval_of ctc (Expr_match e (p,e1) br2) (CTVal (conc_itdeps d (conc_itdeps td td1)) (conc_ideps d d1) ivs1) | CTVal_of_Match_var : forall (ctv:ctval) (ctc:ctenv) (e e1 e2:expr) (p:pattern) (x:identifier) (td td2:itdeps) (d d2:ideps) (ivs ivs2:Ensemble ival0), ctval_of ctc e ctv → ctv = (CTVal td d ivs) → Inhabited _ (Intersection _ ivs ivs_of_matchable) → is_filtered_ctval ctv p Filtered_ctval_result_Match_var → ctval_of (CTEnv_cons x ctv ctc) e2 (CTVal td2 d2 ivs2) → ctval_of ctc (Expr_match e (p,e1) (Some (x,e2))) (CTVal (conc_itdeps d (conc_itdeps td td2)) (conc_ideps d d2) ivs2) | CTVal_of_Match_unknown : forall (ctv:ctval) (ctc ctc_p:ctenv) (e e1 e2:expr) (p:pattern) (x:identifier) (td td1 td2:itdeps) (d d1 d2:ideps) (ivs ivs1 ivs2:Ensemble ival0), ctval_of ctc e ctv → ctv = (CTVal td d ivs) → Inhabited _ (Intersection _ ivs ivs_of_matchable) → is_filtered_ctval ctv p (Filtered_ctval_result_Match_unknown ctc_p) → ctval_of (conc_ctenv ctc_p ctc) e1 (CTVal td1 d1 ivs1) → ctval_of (CTEnv_cons x ctv ctc) e2 (CTVal td2 d2 ivs2) → ctval_of ctc (Expr_match e (p,e1) (Some (x,e2))) (CTVal (conc_itdeps d (conc_itdeps td (conc_itdeps td1 td2))) (conc_ideps d (conc_ideps d1 d2)) (Union _ ivs1 ivs2)) | CTVal_of_Match_empty : forall (ctv:ctval) (ctc ctc_p:ctenv) (e e1:expr) (br2:option (identifier∗expr)) (p:pattern) (td td1:itdeps) (d d1:ideps) (ivs ivs1:Ensemble ival0), ctval_of ctc e ctv → ctv = (CTVal td d ivs) → not (Inhabited _ (Intersection _ ivs ivs_of_matchable)) → ctval_of ctc (Expr_match e (p,e1) br2) (CTVal nil nil (Empty_set _)) 224A.6. SÉMANTIQUE COLLECTRICE | CTVal_of_Couple : forall (ctc:ctenv) (e1 e2:expr) (td1 td2:itdeps) (d1 d2:ideps) (ivs1 ivs2 ivs’:Ensemble ival0), ctval_of ctc e1 (CTVal td1 d1 ivs1) → ctval_of ctc e2 (CTVal td2 d2 ivs2) → ivs’ = SetMap2 (fun iv1 iv2 ⇒ IV_Couple (IV_ d1 iv1) (IV_ d2 iv2)) ivs1 ivs2 → ctval_of ctc (language.Couple e1 e2) (CTVal (conc_itdeps td1 td2) nil ivs’) | CTVal_of_Annot : forall (ctc:ctenv) (l:label) (e:expr) (td:itdeps) (d:ideps) (ivs:Ensemble ival0), ctval_of ctc e (CTVal td d ivs) → ctval_of ctc (Annot l e) (CTVal td (cons l d) ivs) | CTVal_of_Let_in : forall (ctc:ctenv) (x:identifier) (e1 e2:expr) (ctv1 ctv2:ctval) (td1 td2:itdeps) (d1 d2:ideps) (ivs1 ivs2:Ensemble ival0), ctval_of ctc e1 ctv1 → ctv1 = (CTVal td1 d1 ivs1) → (exists (iv1:ival0), In _ ivs1 iv1) → ctval_of (CTEnv_cons x ctv1 ctc) e2 ctv2 → ctv2 = (CTVal td2 d2 ivs2) → ctval_of ctc (Let_in x e1 e2) (CTVal (conc_itdeps td1 td2) d2 ivs2) | CTVal_of_Let_in_empty : forall (ctc:ctenv) (x:identifier) (e1 e2:expr) (ctv1:ctval) (td1:itdeps) (d1:ideps) (ivs1:Ensemble ival0), ctval_of ctc e1 ctv1 → ctv1 = (CTVal td1 d1 ivs1) → not (Inhabited _ ivs1) → ctval_of ctc (Let_in x e1 e2) (CTVal nil nil (Empty_set _)). 225A.7. SÉMANTIQUE ABSTRAITE A.7 Sémantique abstraite Inductive atval_of : atenv → expr → atval → Prop := | ATVal_of_Num : forall (v:Z) (atc:atenv), atval_of atc (Num v) (ATV nil (AV nil (AV_Top))) | ATVal_of_Ident : forall (atc:atenv) (x:identifier) (atu:atval), assoc_ident_in_atenv x atc = Ident_in_atenv atu → atval_of atc (Var x) atu | ATVal_of_Ident_empty : forall (atc:atenv) (x:identifier) (atu:atval), assoc_ident_in_atenv x atc = Ident_not_in_atenv → atval_of atc (Var x) (ATV nil (AV nil (AV_Bottom))) | ATVal_of_Lambda : forall (atc:atenv) (x:identifier) (e:expr) (atu:atval), atu = ATV nil (AV nil (AV_Closure x e (atenv_to_aenv atc))) → atval_of atc (Lambda x e) atu | ATVal_of_Rec : forall (atc:atenv) (f x:identifier) (e:expr) (atu:atval), atu = ATV nil (AV nil (AV_Rec_Closure f x e (atenv_to_aenv atc))) → atval_of atc (Rec f x e) atu | ATVal_of_Apply : forall (atc:atenv) (ac1:aenv) (e1 e2 e : expr) (x : identifier) (atu2 atu:atval) (au2:aval) (ad ad1:adeps) (atd1 atd2 atd:atdeps) (av:aval0), (* construction de la valeur *) atval_of atc e1 (ATV atd1 (AV ad1 (AV_Closure x e ac1))) → atval_of atc e2 atu2 → atu2 = ATV atd2 au2 → atval_of (ATEnv_cons x atu2 (aenv_to_atenv ac1)) e (ATV atd (AV ad av)) (* resultat de l’application *) → atu = ATV (conc_atdeps atd1 (conc_atdeps atd2 (conc_atdeps atd ad1))) (AV (conc_adeps ad1 ad) av) → atval_of atc (Apply e1 e2) atu | ATVal_of_Apply_rec : forall (atc:atenv) (ac1:aenv) (e1 e2 e:expr) (f x:identifier) (atu2 atu atu_f:atval) (au2:aval) (ad ad1:adeps) (atd1 atd2 atd:atdeps) (av:aval0), (* construction de la valeur *) atval_of atc e1 (ATV atd1 (AV ad1 (AV_Rec_Closure f x e ac1))) → atu_f = ATV atd1 (AV (deps_of_freevars (Rec f x e) (atenv_to_aenv atc)) AV_Top) → atval_of atc e2 atu2 → atu2 = ATV atd2 au2 → atval_of (ATEnv_cons f atu_f (ATEnv_cons x atu2 (aenv_to_atenv ac1))) e (ATV atd (AV ad av)) (* resultat de l’application *) → atu = ATV (conc_atdeps atd1 (conc_atdeps atd2 (conc_atdeps atd ad1))) (AV (conc_adeps ad1 ad) av) → atval_of atc (Apply e1 e2) atu 226A.7. SÉMANTIQUE ABSTRAITE | ATVal_of_Apply_unknown : forall (atc:atenv) (e1 e2: expr) (atu:atval) (atd1 atd2:atdeps) (ad1 ad2:adeps) (av1 av2:aval0), (* construction de la valeur *) atval_of atc e1 (ATV atd1 (AV ad1 av1)) → (match av1 with | AV_Closure _ _ _ ⇒ False | AV_Rec_Closure _ _ _ _ ⇒ False | _ ⇒ True end) → atval_of atc e2 (ATV atd2 (AV ad2 av2)) (* resultat de l’application *) → atu = ATV (conc_atdeps atd1 (conc_atdeps atd2 (conc_atdeps ad1 ad2))) (AV (conc_adeps ad1 ad2) AV_Top) → atval_of atc (Apply e1 e2) atu (* amelioration possible : pour une analyse plus precise, si la valeur de e1 ou e2 est Bottom, retourner Bottom *) | ATVal_of_Let_in : forall (atc:atenv) (x:identifier) (e1 e2:expr) (atu1 atu2:atval) (atd1 atd2:atdeps) (au1 au2:aval), atval_of atc e1 atu1 → atu1 = (ATV atd1 au1) → atval_of (ATEnv_cons x atu1 atc) e2 atu2 → atu2 = (ATV atd2 au2) → atval_of atc (Let_in x e1 e2) (ATV (conc_atdeps atd1 atd2) au2) | ATVal_of_If : forall (atc:atenv) (e e1 e2:expr) (atd atd1 atd2:atdeps) (ad ad1 ad2:adeps) (atu1 atu2:atval) (av av1 av2:aval0), atval_of atc e (ATV atd (AV ad av)) → atval_of atc e1 atu1 → atu1 = (ATV atd1 (AV ad1 av1)) → atval_of atc e2 atu2 → atu2 = (ATV atd2 (AV ad2 av2)) → atval_of atc (If e e1 e2) (ATV (conc_atdeps ad (conc_atdeps atd (conc_atdeps atd1 atd2))) (AV (conc_adeps ad (conc_adeps ad1 ad2)) AV_Top)) | ATVal_of_Match : forall (atc atc_p:atenv) (e e1 e2: expr) (p:pattern) (x:identifier) (atu atu1:atval) (atd atd1:atdeps) (ad ad1:adeps) (av av1:aval0), atval_of atc e atu → atu = (ATV atd (AV ad av)) → is_filtered_atval atu p = Filtered_atval_result_Match atc_p → atval_of (conc_atenv atc_p atc) e1 atu1 → atu1 = (ATV atd1 (AV ad1 av1)) → atval_of atc (Expr_match e (p,e1) (Some (x,e2))) (ATV (conc_atdeps ad (conc_atdeps atd atd1)) (AV (conc_adeps ad ad1) av1)) 227A.7. SÉMANTIQUE ABSTRAITE | ATVal_of_Match_var : forall (atc atc_p:atenv) (e e1 e2: expr) (p:pattern) (x:identifier) (atu atu2:atval) (atd atd2:atdeps) (ad ad2:adeps) (av av2:aval0), atval_of atc e atu → atu = (ATV atd (AV ad av)) → is_filtered_atval atu p = Filtered_atval_result_Match_var → atval_of (ATEnv_cons x atu atc) e2 atu2 → atu2 = (ATV atd2 (AV ad2 av2)) → atval_of atc (Expr_match e (p,e1) (Some (x,e2))) (ATV (conc_atdeps ad (conc_atdeps atd atd2)) (AV (conc_adeps ad ad2) av2)) | ATVal_of_Match_unknown : forall (atc atc_p:atenv) (e e1 e2: expr) (p:pattern) (x:identifier) (atu atu1 atu2:atval) (atd atd1 atd2:atdeps) (ad ad1 ad2:adeps) (av av1 av2:aval0), atval_of atc e atu → atu = (ATV atd (AV ad av)) → is_filtered_atval atu p = Filtered_atval_result_Match_unknown atc_p → atval_of (conc_atenv atc_p atc) e1 atu1 → atu1 = (ATV atd1 (AV ad1 av1)) → atval_of (ATEnv_cons x atu atc) e2 atu2 → atu2 = (ATV atd2 (AV ad2 av2)) → atval_of atc (Expr_match e (p,e1) (Some (x,e2))) (ATV (conc_atdeps ad (conc_atdeps atd (conc_atdeps atd1 atd2))) (AV (conc_adeps ad (conc_adeps ad1 ad2)) AV_Top)) | ATVal_of_Match_bottom : forall (atc atc_p:atenv) (e e1 e2: expr) (p:pattern) (x:identifier) (atu:atval) (atd:atdeps) (ad:adeps) (av:aval0), atval_of atc e atu → atu = (ATV atd (AV ad av)) → is_filtered_atval atu p = Filtered_atval_result_Error → atval_of atc (Expr_match e (p,e1) (Some (x,e2))) (ATV nil (AV nil AV_Bottom)) | ATVal_of_Constr0 : forall (atc:atenv) (n:constr), atval_of atc (Constr0 n) (ATV nil (AV nil (AV_Constr0 n))) | ATVal_of_Constr1 : forall (atc:atenv) (n:constr) (e:expr) (atd:atdeps) (au:aval), atval_of atc e (ATV atd au) → atval_of atc (Constr1 n e) (ATV atd (AV nil (AV_Constr1 n au))) | ATVal_of_Couple : forall (atc:atenv) (e1 e2:expr) (atd1 atd2:atdeps) (au1 au2:aval), atval_of atc e1 (ATV atd1 au1) → atval_of atc e2 (ATV atd2 au2) → atval_of atc (Couple e1 e2) (ATV (conc_atdeps atd1 atd2) (AV nil (AV_Couple au1 au2))) | ATVal_of_Annot : forall (atc:atenv) (l:label) (e:expr) (atd:atdeps) (ad:adeps) (av:aval0), atval_of atc e (ATV atd (AV ad av)) → atval_of atc (Annot l e) (ATV atd (AV (cons l ad) av)). 228Annexe B Énoncés des théorèmes en Coq B.1 Correction de la sémantique avec injection Dans la version Coq de notre travail, nous avons défini la notion d’injection en formalisant directement la sémantique avec injection dans un t-environnement sur-instrumenté. Cependant, dans le manuscrit de thèse, nous avons choisi de présenter la sémantique avec injection en deux étapes pour des raisons de clarté dans la présentation. En effet, nous souhaitions commencer par introduire la notion d’injection telle que nous pouvons la concevoir de façon intuitive avant d’entrer dans les détails de la sur-instrumentation des valeurs et des environnements. Il convient de remarquer ici que la preuve de correction de nos analyses dynamique et statique ne dépend d’aucune manière de la preuve de correction de la sémantique avec injection. En effet, c’est la sémantique avec injection qui pose la définition de la notion d’injection, qui est le fondement de la notion de dépendance. Le théorème de correction que nous apportons n’est donc pas nécessaire à la preuve de nos analyses par rapport à la notion d’injection. Cependant, il constitue une justification de la définition formelle de l’injection par rapport à la notion intuitive que nous en avons. Voici le théorème de correction de la sémantique avec injection qui a été prouvé en Coq. Theorem injection_correctness : forall (l:label) (vl:val) (c:env) (c’:oitenv) (e:expr) (v:val), label_does_not_appear_in_expr l c’ e → c = oitenv_to_env c’ → val_of c e v → val_of_with_injection l vl c’ e v. 229B.2. CORRECTION DE LA SÉMANTIQUE SUR-INSTRUMENTÉE B.2 Correction de la sémantique sur-instrumentée Le théorème présenté dans le manuscrit pour la correction de la sémantique surinstrumentée (cf. section 3.4.2.3) est identique à celui prouvé en Coq. Nous avons simplement déplié la définition du prédicat is_instantiable_oitenv. Theorem oival_of_correctness : forall (c:oitenv) (e:expr) (uu:oitval), oival_of c e uu → forall (l:label) (vl:val), is_instantiable_oitenv l vl c → forall (v:val), Some v = instantiate_oitval l vl uu → val_of_with_injection l vl c e v. B.3 Correction de la sémantique instrumentée Le théorème présenté dans le manuscrit pour la correction de la sémantique instrumentée (cf. section 3.5.3.3) est identique à celui prouvé en Coq. Theorem ival_of_correctness : forall (itc:itenv) (e:expr) (itu:itval), ival_of itc e itu → exists (oitu:oitval), (oival_of (itenv_to_oitenv itc) e oitu ∧ oitval_to_itval oitu = itu). 230B.4. CORRECTION DE LA SÉMANTIQUE COLLECTRICE B.4 Correction de la sémantique collectrice Le théorème présenté dans le manuscrit pour la correction de la sémantique collectrice (cf. section 4.3.3.3) est identique à celui prouvé en Coq. On peut peut remarquer une petite différence de notation concernant la fonction de conversion d’un environnement instrumenté multiple en un environnement collecteur. En Coq, cette conversion est définie sous la forme d’un prédicat inductif alors que dans le manuscrit de thèse, nous utilisons une notation fonctionnelle. Il s’agit uniquement d’une différence de notation. La définition donnée dans le manuscrit (cf. figure 4.7) est la même que sa version Coq. Theorem ctval_of_correctness : forall (imc:imenv) (e:expr) (imv:imval) (ctv:ctval) (ctc:ctenv), imval_of imc e imv → imenv_to_ctenv imc ctc → ctval_of ctc e ctv → le_imval imv (ctval_to_imval ctv). B.5 Correction de la sémantique abstraite Le théorème présenté dans le manuscrit pour la correction de la sémantique abstraite (cf. section 4.4.3.3) est identique à celui prouvé en Coq. La preuve de ce théorème en Coq n’a pas été terminée par manque de temps. La version de la preuve présente dans le manuscrit (cf. section 4.4.3.4) est un peu plus complète puisque le cas de l’application, qui est un des cas les plus complexes, a été prouvé. Theorem atval_of_correctness : forall (e:expr) (ctc:ctenv) (ctv:ctval) (atc:atenv) (atu:atval), ctenv_to_atenv ctc atc → ctval_of ctc e ctv → atval_of atc e atu → le_ctval ctv (atval_to_ctval atu). 231B.5. CORRECTION DE LA SÉMANTIQUE ABSTRAITE 232Index Abstraction ↑ a • (•) ↑ a c (tΓ c ), 175 ↑ a im(Γim), 175 ↑ a c (tuc ), 174 ↑ a im(usi ), 174 d_of_usi (usi ), 175 Abstraction ↑ c • (•) ↑ c im(tΓ im), 160 ↑ c im(v im), 160 Abstraction ↑ i • (•) ↑ ti toi(tΓ oi), 131 ↑ i oi(Γoi), 132 ↑ ti toi(tuoi), 131 ↑ i oi(u oi), 131 ↑ i oi(v oi), 131 ↑ ti toi(tdoi), 131 ↑ i oi(d oi), 131 Ajout de t-dépendances ↑ toi oi (Γoi), 82 ↑ toi oi (u oi), 82 ↑ ti i (Γi ), 125 ↑ ti i (u i ), 125 ↑ ta a (Γa ), 180 ↑ ta a (u a ), 180 Concrétisation ↑ • a (•) ↑ c a (tΓ a ), 175 ↑ c a (Γa ), 175 ↑ c a (tua ), 175 ↑ c a (v a ), 175 Concrétisation ↑ • c (•) ↑ im c (tΓ c ), 161 appendim c (tΓ c , tΓ im), 161 ↑ im c (tuc ), 161 Concrétisation ↑ • i (•) ↑ toi ti (tΓ i ), 133 ↑ oi i (Γi ), 133 ↑ toi ti (tui ), 132 ↑ oi i (u i ), 132 ↑ oi i (v i ), 132 ↑ toi ti (tdi ), 132 ↑ oi i (d i ), 132 Ensemble des valeurs simples instrumentées V i , 121 Fonctions auxiliaires d_of_freevars(•), 178 Instanciation ↓ l:vl(tΓ oi), 67 ↓ l:vl(tuoi), 67 atifl:vl (tdoi), 69 233INDEX aifl:vl (d oi), 69 Jugement d’évaluation Γ ⊢ e →→ v, 44 Γ ⊢l:vl e →→ v, 49 tΓ oi ⊢l:vl e →→ v, 71 tΓ oi ⊢ oi e →→ tuoi, 79 tΓ i ⊢ i e →→ tui , 122 tΓ im ⊢ im e →→ v im, 148 tΓ c ⊢ c e →→ tuc , 150 tΓ a ⊢ a e →→ tua , 177 Relation d’ordre ⊆c , 184 ⊆i , 161 ⊆im, 161 Suppression des t-dépendances ↑ oi toi(tΓ oi), 81 ↑ oi toi(tuoi), 81 ↑ i ti(tΓ i ), 124 ↑ i ti(tui ), 124 ↑ a ta(tΓ a ), 179 ↑ a ta(tua ), 179 Valeur de référence ↑toi(tΓ oi), 67 ↑oi(Γoi), 67 ↑toi(tuoi), 66 ↑oi(u oi), 67 ↑oi(v oi), 67 234Vincent BENAYOUN Analyse de dépendances ML pour les évaluateurs de logiciels critiques Résumé : Les logiciels critiques nécessitent l’obtention d’une évaluation de conformité aux normes en vigueur avant leur mise en service. Cette évaluation est obtenue après un long travail d’analyse effectué par les évaluateurs de logiciels critiques. Ces derniers peuvent être aidés par des outils utilisés de manière interactive pour construire des modèles, en faisant appel à des analyses de flots d’information. Des outils comme SPARKAda existent pour des sous-ensembles du langage Ada utilisés pour le développement de logiciels critiques. Cependant, des langages émergents comme ceux de la famille ML ne disposent pas de tels outils adaptés. La construction d’outils similaires pour les langages ML demande une attention particulière sur certaines spécificités comme les fonctions d’ordre supérieur ou le filtrage par motifs. Ce travail présente une analyse de flot d’information pour de tels langages, spécialement conçue pour répondre aux besoins des évaluateurs. Cette analyse statique prend la forme d’une interprétation abstraite de la sémantique opérationnelle préalablement enrichie par des informations de dépendances. Elle est prouvée correcte vis-à-vis d’une définition formelle de la notion de dépendance, à l’aide de l’assistant à la preuve Coq. Ce travail constitue une base théorique solide utilisable pour construire un outil efficace pour l’analyse de tolérance aux pannes. Mots clés : analyse de dépendances, logiciels critiques, langages fonctionnels, Coq, preuve de correction, analyse statique, interprétation abstraite Abstract : Critical software needs to obtain an assessment before commissioning in order to ensure compliance to standards. This assessment is given after a long task of software analysis performed by assessors. They may be helped by tools, used interactively, to build models using information-flow analysis. Tools like SPARK-Ada exist for Ada subsets used for critical software. But some emergent languages such as those of the ML family lack such adapted tools. Providing similar tools for ML languages requires special attention on specific features such as higher-order functions and pattern-matching. This work presents an information-flow analysis for such a language specifically designed according to the needs of assessors. This analysis is built as an abstract interpretation of the operational semantics enriched with dependency information. It is proved correct according to a formal definition of the notion of dependency using the Coq proof assistant. This work gives a strong theoretical basis for building an efficient tool for fault tolerance analysis. Keywords : dependency analysis, critical software, functional languages, Coq, proof of correctness, static analysis, abstract interpretation Scénarisation d’environnements virtuels. Vers un ´equilibre entre contrˆole, coh´erence et adaptabilit´e. Camille Barot To cite this version: Camille Barot. Sc´enarisation d’environnements virtuels. Vers un ´equilibre entre contrˆole, coh´erence et adaptabilit´e.. Artificial Intelligence. Universit´e de Technologie de Compi`egne, 2014. French. HAL Id: tel-00980537 https://tel.archives-ouvertes.fr/tel-00980537v2 Submitted on 9 Dec 2014 HAL is a multi-disciplinary open access archive for the deposit and dissemination of scientific research documents, whether they are published or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers. L’archive ouverte pluridisciplinaire HAL, est destin´ee au d´epˆot et `a la diffusion de documents scientifiques de niveau recherche, publi´es ou non, ´emanant des ´etablissements d’enseignement et de recherche fran¸cais ou ´etrangers, des laboratoires publics ou priv´es.Thèse pour l’obtention du grade de Docteur de l’Université de Technologie de Compiègne Spécialité : Technologies de l’Information et des Systèmes Scénarisation d’environnements virtuels. Vers un équilibre entre contrôle, cohérence et adaptabilité. par Camille Barot Soutenue le 24 février 2014 devant un jury composé de : M. Ronan CHAMPAGNAT Maître de Conférences (HDR) Université de la Rochelle Rapporteur M. Stéphane DONIKIAN Directeur de Recherche (HDR) INRIA Rennes-Bretagne Rapporteur M. Stacy MARSELLA Professor Northeastern University Examinateur Mme Indira MOUTTAPA-THOUVENIN Enseignant-Chercheur (HDR) Université de Technologie de Compiègne Examinatrice M. Nicolas SZILAS Maître d’Enseignement et de Recherche Université de Genève Examinateur M. Dominique LENNE Professeur Université de Technologie de Compiègne Directeur Mme Domitile LOURDEAUX Maître de Conférences (HDR) Université de Technologie de Compiègne Directrice2Résumé Ces travaux traitent de la scénarisation d’environnements virtuels, définie comme la spécification des déroulements possibles ou souhaitables d’une simulation, et la mise en place de mécanismes permettant de contrôler son déroulement effectif de manière dynamique. Nous visons pour cette scénarisation un ensemble d’objectifs, souvent considérés comme contradictoires : la liberté et la capacité d’action de l’utilisateur, l’ampleur, le caractère dynamique et l’efficacité du contrôle exercé sur le scénario, la cohérence des comportements présentés et l’adaptabilité du système, nécessaire pour la variabilité des scénarios. Nous proposons SELDON, un modèle basé sur le contrôle centralisé et indirect d’une simulation émergente à partir de modèles du contenu scénaristique. L’environnement est peuplé de personnages virtuels autonomes et l’utilisateur y est libre de ses actions. La scénarisation est réalisée en deux étapes : des objectifs dynamiques sont déterminés à partir de l’activité de l’utilisateur, puis un scénario est généré en fonction de ces objectifs et exécuté au travers d’ajustements sur la simulation. Le moteur DIRECTOR permet de générer et de réaliser ce scénario. DIRECTOR utilise les modèles qui sous-tendent la simulation pour prédire son évolution, et guide cette évolution au travers d’un ensemble d’ajustements indirects, qui influencent les réactions des systèmes techniques et les prises de décision des personnages. Il utilise un moteur de planification pour générer des scénarios composés d’étapes de prédiction, dont il suit la réalisation dans la simulation, et d’ajustements, qu’il dé- clenche. Les objectifs scénaristiques pris en compte sont à la fois dynamiques, au travers de situations prescrites et proscrites et de contraintes sur les propriétés globales du scénario, et statiques, sous la forme d’espaces de scénario. Le contenu scénaristique et les objectifs scénaristiques statiques sont représentés à l’aide de l’ensemble de langages que nous avons proposé : DOMAIN-DL, ACTIVITY-DL et CAUSALITY-DL. Ces contributions permettent d’allier la réactivité et la variabilité permises par des simulations émergentes et la pertinence des scénarios offerte par les systèmes basés sur de la planification. 34Abstract Orchestration of virtual environments: Balancing control, coherence and adaptability. This work addresses the orchestration of virtual environments, defined as the specification of possible or wanted unfoldings of events in a simulation and the implementation of control mechanisms over the actual unfolding. We aim at a set of objectives often considered contradictory: userfreedom/agency, range, dynamicity and efficiency of control over the scenario, behavioural coherence, and system adaptability, which is essential for scenario variability. We propose SELDON, a model based on centralised and indirect control of an emergent simulation. Scenario content is represented by domain and activity models in the DOMAIN-DL and ACTIVITY-DL languages. The virtual environement is populated by autonomous characters, and the user’s choices of actions are unconstrained. Orchestration is carried out in two steps: first, a set of dynamic objectives is determined from the user’s profile and activity, then a scenario is generated from these objectives and executed through adjustements on the simulation. The DIRECTOR engine performs scenario generation and execution. DIRECTOR uses the simulation’s models to predict its evolution and guide it through a set of indirect adjustements that influence technical systems’ reactions and characters’ decisions. It uses planning to generate scenarios made up of prediction steps that DIRECTOR monitors in the simulation and adjustements that it triggers in the virtual environment. Scenario objectives can be defined dynamically through prescribed/proscribed situations and constraints on global scenario properties or statically as a space of scenarios of interest represented in the CAUSALITY-DL language. 56Remerciements Je tiens avant tout à exprimer ma profonde gratitude à Domitile Lourdeaux, qui m’a encadrée, conseillée et soutenue tout au long de ce doctorat. Merci, Domitile, d’avoir toujours cru en moi et de m’avoir encouragée à viser plus haut. Merci aussi de m’avoir permis de trouver mes marques et de m’intégrer dans une approche existante sans jamais m’imposer un point de vue, de m’avoir laissé poursuivre mes idées même quand tu n’y croyais pas au départ. Merci enfin de m’avoir montré que l’on pouvait vraiment s’éclater en faisant de la recherche. Tu as fait de ton équipe une vraie famille, avec son arbre généalogique accroché au mur de ton bureau, et je suis heureuse d’en faire partie. Je suis fière du travail accompli à tes côtés. Je remercie également Dominique Lenne d’avoir co-encadré cette thèse. Merci de m’avoir fait confiance, et de m’avoir poussée aussi, durant la thèse certes mais également bien avant puisque c’est toi qui, dès IA01, m’a incitée à envisager la voie de la recherche. Je souhaite remercier Ronan Champagnat et Stéphane Donikian d’avoir accepté de rapporter ma thèse, et je remercie Nicolas Szilas d’avoir accepté d’en être examinateur. I thank (in English!) Stacy Marsella, for not only accepting to suffer the slings and arrows of visioconference to attend my defense, but also for the faith he put in me during our short time working together. Je remercie de tout cœur Indira Mouttapa Thouvenin, qui a accepté de présider mon jury de thèse, mais m’a surtout soutenue et encouragée depuis plusieurs années. Merci à tous pour vos critiques, vos remarques et vos questions qui ont fait de ma soutenance un moment d’échanges passionnants. Cette thèse n’aurait pas pu voir le jour sans le soutien de la région Picardie et du FEDER au projet ARAKIS, et je les en remercie. De même, je remercie toutes les personnes impliquées dans ce projet, mais aussi dans les projets V3S et NIKITA auxquels j’ai pu participer, en particulier les groupes du CEA, du LATI et d’Emissive. Merci donc à Emmanuel Guerriero, Fabien Barati et Antoine Ferrieux avec qui j’ai été ravie de travailler avant comme pendant la thèse. Un grand merci également à Jean-Marie Burkhardt, avec qui les échanges ont été particulièrement enrichissants. Enfin, je suis très reconnaissante à Fabrice Camus d’être venu avec moi affronter les dangers des dépôts pétroliers pour réaliser les analyses terrain, et de m’avoir encouragée sans relâche pendant toute la durée de cette thèse. Mes pensées vont à l’équipe HUMANS, et à tous ceux qui ont pu graviter autour de celle-ci à un moment où à un autre : Margot Lhommet, Pierre-Yves Gicquel, Vincent Lanquepin, Kahina Amokrane, Antoine Vincent, Dorine Dufour, Hazaël Jones, Jocelyn Thiery, Lydie Edward, Lucile Callebert, Juliette Lemaitre, Loïc Fricoteaux, Jérôme Olive, Alistair Jones, Kevin Wagrez, Thibaut Arribe... mais aussi la bande de Reviatech — Romain Lelong, Mehdi Sbaouni et Morgan Fraslin — et celle des déjeuners à l’IMI — Benjamin Diemert et Thomas Bottini. On a vécu de grands moments, et vous avez été bien plus que des collègues à mes yeux. J’espère que les traditions des journées à thèmes du mardi et des bières au Shamrock qui font rater le train perdureront, et que de nouvelles viendront s’y ajouter. Kevin Carpentier, mon acolyte de toujours, mérite son paragraphe rien qu’à lui : tu as été un binôme fantastique durant toutes ces années, et ça va beaucoup me manquer de travailler avec toi. J’espère qu’on y remédiera très vite et qu’on finira par ouvrir ensemble un grand parc d’attractions autour du storytelling, de la génération procédurale et de la synesthésie. Je remercie également le laboratoire Heudiasyc et l’équipe ICI pour leur accueil, ainsi que les étudiants de l’UTC que j’ai pu encadrer autour de différents projets pour l’équipe HUMANS et qui ont été d’une aide précieuse : Barthélémy Arribe, Yacine Badiss, Clément Boissière, Marion Cayla, Jonathan Denonain, Pierre-Henri Fricot, Thibaud Huet, Ronan Kervella, Pierre-Alexandre Kofron, 7Julien Mazars, Aloïs Nolin, Vincent Palancher, Thierry Tang... sans oublier Diane Wakim bien sûr ! Je voudrais aussi saluer le travail du personnel de l’UTC, en particulier Nathalie Alexandre et Marion Kaczkowski qui m’ont sauvé la mise plus d’une fois. Merci à mes amis, la MDB et tous les autres, d’avoir toujours su me changer les idées et me faire relativiser. Merci en particulier à Elise, qui est mon rayon de soleil, et qui maintenant va se sentir obligée de lire cette thèse en entier. Enfin, merci à mes parents, mon frère, ma sœur, ainsi qu’à toute ma famille, de m’avoir supportée (dans les deux sens du terme !) dans des moments qui ont été très difficiles pour moi comme pour eux. C’est grâce à leur soutien inconditionnel que je peux présenter aujourd’hui ce travail. 8Table des matières 1 Introduction 15 1.1 Scénarisation et environnements virtuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.2 Motivations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.3 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.3.1 Déroulement des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.3.2 Contenu des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.3.3 Conception des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.3.4 Bilan sur les objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.4 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.5 Approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 1.6 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.6.1 Modèle pour la scénarisation d’environnements virtuels – SELDON . . . . . . . . 26 1.6.2 Moteur de planification et réalisation de scénarios prédictifs – DIRECTOR . . . . 27 1.6.3 Méta-modèle de la causalité – CAUSALITY-DL . . . . . . . . . . . . . . . . . . . . . 29 1.6.4 Autres contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 1.7 Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 1.7.1 Plateforme HUMANS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 1.7.2 Cas d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 1.8 Organisation du mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 I Etat de l’art 37 2 Scénarisation dans les environnements virtuels 39 2.1 Classifications des approches pour la scénarisation . . . . . . . . . . . . . . . . . . . . . . 40 2.1.1 Approches centrées sur le scénario ou sur les personnages . . . . . . . . . . . . . 40 2.1.2 Scénarisation intrinsèque ou extrinsèque . . . . . . . . . . . . . . . . . . . . . . . . 41 2.1.3 Scénario prédéfini ou généré dynamiquement . . . . . . . . . . . . . . . . . . . . 41 2.2 Simulations pures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.2.1 CS WAVE et VTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.2.2 VRaptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.2.3 I-Storytelling et EmoEmma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.2.4 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.3 Scénarios prédéfinis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.3.1 EMSAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.3.2 Generic Virtual Trainer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.3.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.4 Graphes multilinéaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.4.1 PAPOUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.4.2 ICT Leaders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.4.3 Façade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.4.4 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 9TABLE DES MATIÈRES TABLE DES MATIÈRES 2.5 Scénarios dynamiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.5.1 IDTension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.5.2 Mimesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.5.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.6 Personnages partiellement autonomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.6.1 MRE et FearNot ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 2.6.2 ISAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 2.6.3 IN-TALE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 2.6.4 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.7 Contrôle de personnages autonomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.7.1 Initial State Revision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 2.7.2 Virtual Storyteller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 2.7.3 Thespian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 2.7.4 Planification sociale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 2.7.5 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 2.8 Bilan global et positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3 Représentation des connaissances pour la scénarisation 63 3.1 Représentation de contenu scénaristique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 3.1.1 Représentation du domaine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 3.1.2 Représentation de l’activité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 3.1.3 Représentation des événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 3.1.4 Bilan et positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 3.2 Représentation d’objectifs scénaristiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 3.2.1 Objectifs scénaristiques de bas niveau . . . . . . . . . . . . . . . . . . . . . . . . . 81 3.2.2 Objectifs scénaristiques de haut niveau . . . . . . . . . . . . . . . . . . . . . . . . . 83 3.2.3 Bilan et positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 3.3 Représentation des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 3.3.1 Modèles de compréhension d’histoires . . . . . . . . . . . . . . . . . . . . . . . . . 86 3.3.2 Modèles de scénarios pédagogiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 3.3.3 Modèles d’analyses de risques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 3.3.4 Automates finis et graphes orientés acycliques . . . . . . . . . . . . . . . . . . . . 95 3.3.5 Plans et points clés partiellement ordonnés . . . . . . . . . . . . . . . . . . . . . . 97 3.3.6 Bilan et positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 II Contributions 103 4 SELDON – Modèle pour la scénarisation d’environnements virtuels 105 4.1 Approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.2 Vers quoi scénariser – le moteur TAILOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 4.3 Comment scénariser – le moteur DIRECTOR . . . . . . . . . . . . . . . . . . . . . . . . . . 109 4.4 A partir de quoi scénariser – les langages HUMANS-DL . . . . . . . . . . . . . . . . . . . 109 5 Représentation du contenu scénaristique 111 5.1 DOMAIN-DL – Représentation du domaine . . . . . . . . . . . . . . . . . . . . . . . . . . 112 5.1.1 Approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 5.1.2 Description du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 5.1.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 5.2 ACTIVITY-DL – Représentation de l’activité . . . . . . . . . . . . . . . . . . . . . . . . . . 120 5.2.1 Approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 5.2.2 Description du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 5.2.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 10TABLE DES MATIÈRES TABLE DES MATIÈRES 6 DIRECTOR – Moteur de planification et réalisation de scénarios prédictifs 133 6.1 Ajustements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 6.1.1 Happenings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 6.1.2 Late commitment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 6.1.3 Contraintes d’occurrence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 6.2 Représentation des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 6.2.1 Plan partiellement ordonné . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 6.2.2 Opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 6.3 Particularité de la génération de plans prédictifs . . . . . . . . . . . . . . . . . . . . . . . . 142 6.4 Génération d’opérateurs de prédiction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 6.4.1 Génération des opérateurs d’action . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 6.4.2 Génération des opérateurs de comportement . . . . . . . . . . . . . . . . . . . . . 151 6.5 Processus de génération, suivi et exécution du scénario . . . . . . . . . . . . . . . . . . . 155 6.5.1 Génération du scénario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 6.5.2 Suivi et exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 6.5.3 Replanification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 6.6 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 7 Représentation et prise en compte des objectifs scénaristiques 163 7.1 CAUSALITY-DL – Représentation d’espaces de scénarios d’intérêt . . . . . . . . . . . . . 164 7.1.1 Approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 7.1.2 Description du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 7.1.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 7.2 Trames scénaristiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 7.3 Situations prescrites et proscrites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 7.4 Propriétés des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 7.4.1 Complexité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 7.4.2 Gravité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 7.4.3 Crédibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 7.5 Prise en compte des objectifs scénaristiques par DIRECTOR . . . . . . . . . . . . . . . . 177 7.5.1 Sélection de la trame scénaristique . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 7.5.2 Instanciation de la trame scénaristique . . . . . . . . . . . . . . . . . . . . . . . . . 178 7.5.3 Complétion du scénario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 7.6 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 III Implémentation et résultats 183 8 Implémentation 185 8.1 Choix liés à la planification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 8.1.1 Représentation en PDDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 8.1.2 Choix du moteur de planification . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 8.2 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 8.2.1 Génération du domaine PDDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 8.2.2 Génération du scénario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 8.2.3 Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 8.2.4 Plateforme HUMANS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 9 Validation 193 9.1 Evaluation informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 9.1.1 Eléments comparés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 9.1.2 Influence du moteur sur les plans générés . . . . . . . . . . . . . . . . . . . . . . . 196 9.1.3 Validité des plans générés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 11TABLE DES MATIÈRES TABLE DES MATIÈRES 9.1.4 Temps de génération des plans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 9.1.5 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 9.2 Retours d’usage sur la conception des modèles . . . . . . . . . . . . . . . . . . . . . . . . 201 9.2.1 DOMAIN-DL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 9.2.2 ACTIVITY-DL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 9.3 Pistes d’évaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 9.3.1 Efficacité de la prédiction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 9.3.2 Efficacité du contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 9.3.3 Résilience du système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 9.3.4 Variabilité des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 9.3.5 Cohérence des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 IV Discussion et conclusion 205 10 Discussion 207 10.1 Points forts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 10.1.1 Cohérence des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 10.1.2 Liberté et capacité d’action de l’utilisateur . . . . . . . . . . . . . . . . . . . . . . . 208 10.1.3 Degrés de contrôle des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 10.1.4 Variabilité et pertinence des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . 209 10.1.5 Adaptabilité du système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 10.2 Limites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 10.2.1 Temps de planification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 10.2.2 Replanification et instanciation des trames scénaristiques . . . . . . . . . . . . . 211 10.2.3 Prise en compte des objectifs lors de la planification . . . . . . . . . . . . . . . . . 211 10.2.4 Génération des opérateurs de prédiction . . . . . . . . . . . . . . . . . . . . . . . . 212 10.2.5 Dépendance des modèles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 10.2.6 Cas où la planification est impossible . . . . . . . . . . . . . . . . . . . . . . . . . . 213 10.3 Perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 10.3.1 Représentation des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 10.3.2 Modèle de la cognition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 10.3.3 Modélisation de l’utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 10.3.4 Discours et récit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 10.3.5 Calcul de l’intérêt narratif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 11 Conclusion 219 V Annexes 221 A Glossaire 223 B Description des modules de la plateforme HUMANS 225 B.1 HUMANS-DL - Représentation des connaissances . . . . . . . . . . . . . . . . . . . . . . 226 B.2 WORLD MANAGER - Gestion de l’état du monde . . . . . . . . . . . . . . . . . . . . . . . 227 B.3 REPLICANTS - Personnages virtuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 B.4 MONITOR - Suivi de l’apprenant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 B.5 TAILOR - Génération de situations d’apprentissage . . . . . . . . . . . . . . . . . . . . . . 229 C Diagrammes UML 231 D Algorithmes 233 12TABLE DES MATIÈRES TABLE DES MATIÈRES E Exemple “Gas Station” 235 E.1 Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 E.2 Scénarios générés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Table des figures 251 Liste des tableaux 255 Publications 257 Bibliographie 259 13TABLE DES MATIÈRES TABLE DES MATIÈRES 14Chapitre 1 Introduction Sommaire 1.1 Scénarisation et environnements virtuels . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.2 Motivations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.3 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.3.1 Déroulement des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Liberté d’action de l’utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Possibilités de contrôle du scénario . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Caractère dynamique du contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Résilience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.3.2 Contenu des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Validité écologique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Explicabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Variabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.3.3 Conception des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Passage à l’échelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Maintenabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Réutilisabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.3.4 Bilan sur les objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.4 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.5 Approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 1.6 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.6.1 Modèle pour la scénarisation d’environnements virtuels – SELDON . . . . . . . 26 1.6.2 Moteur de planification et réalisation de scénarios prédictifs – DIRECTOR . . . 27 1.6.3 Méta-modèle de la causalité – CAUSALITY-DL . . . . . . . . . . . . . . . . . . . . 29 1.6.4 Autres contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Méta-modèle de l’activité – ACTIVITY-DL . . . . . . . . . . . . . . . . . . . . . . 29 Méta-modèle du domaine – DOMAIN-DL . . . . . . . . . . . . . . . . . . . . . . 30 1.7 Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 1.7.1 Plateforme HUMANS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 1.7.2 Cas d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 ARAKIS – Formation des opérateurs de dépôts pétroliers . . . . . . . . . . . . . 32 SimADVF – Formation des assistantes de vie de famille . . . . . . . . . . . . . . 33 NIKITA – Formation des assembleurs-monteurs en aéronautique . . . . . . . . 34 1.8 Organisation du mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 151.1. SCÉNARISATION ET ENVIRONNEMENTS VIRTUELS CHAPITRE 1. INTRODUCTION Les travaux présentés dans cette thèse traitent de la scénarisation d’environnements virtuels. Leur objectif est de fournir un modèle pour la scénarisation dynamique de ces environnements, qui permette de générer et de mettre en place des scénarios pertinents, en particulier dans le cas de simulations complexes, le tout en conservant la cohérence des comportements présentés. 1.1 Scénarisation et environnements virtuels Ces travaux s’inscrivent dans le contexte des environnements virtuels : des systèmes interactifs permettant à un ou plusieurs utilisateurs d’interagir avec un monde artificiel, généralement en trois dimensions, par le biais d’un ensemble de techniques informatiques couvrant une ou plusieurs modalités sensorielles [Burkhardt et al., 2003]. Plutôt que de considérer ces environnements sous l’angle des périphériques utilisés et des différents degrés d’interaction et d’immersion induits sur le plan sensori-moteur, nous nous intéresserons aux événements ayant lieu dans le monde artificiel et à l’activité de l’utilisateur en termes cognitifs, en suivant la définition de la réalité virtuelle donnée par [Fuchs et al., 2006] : “ La finalité de la réalité virtuelle est de permettre à une personne (ou à plusieurs) une activité sensori-motrice et cognitive dans un monde artificiel, créé numériquement, qui peut être imaginaire, symbolique ou une simulation de certains aspects du monde réel. La scénarisation est un processus qui vise à spécifier les événements devant se produire dans un ” cadre donné, qui peut être celui d’un film, d’un jeu vidéo, d’une session d’apprentissage, etc. Or, selon le cadre considéré, le terme de scénarisation, ainsi que la notion de scénario lui-même, ne revêtent pas le même sens. Dans le domaine cinématographique, un scénario est un document écrit décrivant les différentes scènes d’un film. On distingue deux types de scénarios : le script, ou screenplay, décrit l’enchainement des événements (actions, dialogues...) — “what to shoot", tandis que le découpage technique, ou shooting script, inclut également des indications sur la manière de mettre en scène et de porter ces événements à l’écran (découpage en séquences et plans, points de vue...) — “how to shoot it" [Van Rijsselbergen et al., 2009]. La scénarisation désigne alors le processus d’écriture de ce scénario. De même, dans le domaine de l’apprentissage, la scénarisation est souvent considérée comme une activité de modélisation (voir par exemple [Ouraiba, 2012]). Elle consiste alors en la spécification, de manière prescriptive, du déroulement futur d’une activité pédagogique, en décrivant à la fois les intentions des enseignants et les situations d’apprentissage prévues pour leurs enseignements à l’aide d’un langage de scénarisation pédagogique [Abedmouleh, 2012]. Pour Pernin et Lejeune [Pernin and Lejeune, 2004], la spécification du scénario n’est au contraire que la première étape de la scénarisation. Ils distinguent ainsi quatre phases dans le cycle de vie d’un scénario d’apprentissage : – la conception, qui consiste à spécifier l’activité prescrite dans le langage de scénarisation ; – l’opérationnalisation, durant laquelle ces spécifications sont transformées en composants exé- cutables sur des plateformes informatiques ; – l’exploitation, qui consiste à “jouer" le scénario, et durant laquelle les acteurs (apprenants et tuteurs) doivent pouvoir observer et ajuster les situations mises en place. – le retour d’usage, où les résultats obtenus lors de la phase d’exploitation sont évalués Si de nombreux travaux sur les Environnements Informatiques pour l’Apprentissage Humain (EIAH) et Environnements Virtuels pour l’Apprentissage Humain (EVAH) se concentrent sur la phase de conception des scénarios et sur les langages de scénarisation [Martel et al., 2007] [Laforcade et al., 2007], la phase d’exploitation revêt une importance capitale : à partir du moment où on utilise l’outil 16CHAPITRE 1. INTRODUCTION 1.1. SCÉNARISATION ET ENVIRONNEMENTS VIRTUELS informatique, l’exécution, la supervision et la régulation du scénario ne sont plus intégralement le fait du formateur humain, mais relèvent en partie de l’outil lui-même 1 . Ainsi, dès lors que l’on se place dans un contexte interactif, la scénarisation ne consiste plus uniquement en la modélisation d’un scénario, mais également en la mise en place des mécanismes nécessaires à la réalisation de ce scénario. Selon les travaux, cette partie dynamique du processus de scé- narisation sera désignée par les termes de pilotage [Delmas, 2009], drama management [Mateas and Stern, 2005], directorial control [Si et al., 2009], ou encore story mediation [Magerko, 2007]. C’est autour de cette problématique que se place le domaine de la narration interactive (interactive storytelling). La narration interactive permet aux utilisateurs de participer activement à une histoire, soit de manière intradiégétique, en incarnant l’un des personnages, soit de manière extradiégétique, en exerçant un contrôle sur le déroulement des événements [Si, 2010]. Les travaux effectués dans le domaine de la narration interactive visent à trouver un équilibre entre l’intérêt narratif et le respect des intentions de l’auteur d’un côté, et la liberté d’action du ou des utilisateurs de l’autre [Magerko, 2005]. Lorsqu’il s’agit de concevoir un environnement virtuel ou un système de narration interactive, il existe deux approches : la scénarisation peut être considérée comme partie intégrante du processus de conception, ou bien elle peut être vue comme une étape supplémentaire de cadrage d’un environnement existant. Dans le premier cas, la scénarisation va consister à définir l’ensemble des objets de l’environnement virtuel, leurs règles de fonctionnement, les actions possibles de la part de l’utilisateur et des personnages virtuels, le comportement de ces derniers, etc. Les scénarios peuvent être définis de manière plus ou moins explicite, allant du script exhaustif à la modélisation des comportements individuels, les scénarios effectifs émergeant alors des interactions entre le ou les utilisateurs et le monde virtuel. L’environnement virtuel scénarisé est ici vu comme un tout. C’est le cas par exemple dans [Mateas and Stern, 2005] ou [Cavazza et al., 2002]. Dans le deuxième cas, la scénarisation va consister à réduire l’espace des scénarios possibles, en sélectionnant, ordonnant ou priorisant des sous-ensembles d’événements en vue d’une utilisation particulière de l’environnement virtuel. Ainsi, pour N. Mollet, “la scénarisation consiste à utiliser l’environnement et agencer les interactions afin de réaliser une tâche particulière" [Mollet, 2005]. La modélisation du scénario est alors séparée en deux parties : la spécification du contenu scénaristique d’un côté, et celle des objectifs scénaristiques de l’autre. Si l’on reprend la métaphore du jeu de rôle (non numérique), souvent utilisée en narration interactive (voir par exemple [Aylett et al., 2011], [Delmas, 2009]), on peut identifier trois composantes principales au sein du jeu avec lequel les joueurs interagissent : – le corpus de règles qui décrit l’univers et les mécanismes du jeu, – la trame préparée en amont par le meneur de jeu (game master), qui peut être plus ou moins détaillée et plus ou moins dirigiste, – les interventions du meneur de jeu, qui décrit la situation initiale, interprète et applique les règles du jeu, fait intervenir des personnages non-joueurs, déclenche des événements et met en scène le tout. L’activité du meneur de jeu est assimilable au processus de pilotage de l’environnement virtuel, tandis que le corpus de règles correspond au contenu scénaristique et la trame aux objectifs scénaristiques. On constate ainsi que, pour un même contenu, de nombreux scénarios différents pourront être créés en fonction des objectifs définis, et que la spécification du contenu et celle des objectifs scénaristiques ne sont pas forcément réalisées par les mêmes personnes (ainsi le créateur du jeu de 1. Il est nécessaire de distinguer ici la scénarisation des activités pédagogiques et celle des situations d’apprentissage (parfois appelée orchestration [Luengo, 2009]). La première va situer l’utilisation de l’environnement virtuel comme outil de formation dans le cadre plus large d’un scénario pédagogique, au même titre que d’autres activités pédagogiques comme des cours magistraux. Le passage d’une activité à une autre peut alors relever de la responsabilité du formateur, ou être déclenché automatiquement par un système informatique. La seconde va poser des contraintes sur le déroulement de l’activité même de l’utilisation de l’environnement virtuel, contraintes qui devront être appliquées sur la simulation par un système de scénarisation, afin que le scénario se déroule quelles que soient les actions de l’apprenant. 171.2. MOTIVATIONS CHAPITRE 1. INTRODUCTION rôle définit le système de règles, et peut également fournir des trames pré-écrites, mais le meneur de jeu peut choisir d’utiliser une trame de sa propre invention). On retrouve cette même approche dans de nombreux environnements virtuels de type simulateurs, utilisés pour la formation : ces environnements sont construits autour d’un noyau générique, qui contient les règles de fonctionnement de la simulation (ex : le fonctionnement d’une automobile, le code de la route, etc.) auquel vient s’ajouter une couche d’instanciation pour un objectif pédagogique donné (ex : “conduite sur autoroute avec un trafic dense”). Les objectifs scénaristiques peuvent ainsi être spécifiés de manière très large en donnant simplement les conditions initiales d’une simulation. Le terme de “scénario" est alors utilisé pour désigner ces conditions initiales, par exemple la disposition de l’environnement virtuel (settings) dans [Hullett and Mateas, 2009]. Le “scénario" en tant qu’objectif scénaristique peut, selon les travaux, être modélisé à différents niveaux de granularité, et de manière plus ou moins explicite : contraintes sur les conditions initiales [Hullett and Mateas, 2009], ensemble de séquences d’événements exemplaires [Si, 2010], contraintes d’ordonnancement sur des événements clés [Porteous and Cavazza, 2009], contraintes de haut niveau sur des fonctions d’évaluation du scénario [Weyhrauch, 1997], etc. Certains parlent au contraire du “scénario” d’un environnement virtuel pour désigner le domaine d’application [Szilas, 2007]. D’autres utilisent ce même terme pour parler d’une séquence d’événements particulière, instanciée lors d’une session d’interaction [Champagnat et al., 2005] — il peut alors s’agir d’une séquence prescrite ou effective. C’est cette acception que nous utiliserons dans le reste de ce mémoire, et nous parlerons alors d’“espace de scénarios" lorsqu’il s’agira de se référer à un ensemble de possibles. Nous adopterons ainsi dans cette thèse les définitions suivantes : Scénarisation La scénarisation est un processus comprenant à la fois la spécification du ou des déroulements possibles ou souhaitables de la simulation, et le contrôle (exécution et/ou suivi et correction) du déroulement des événements en temps-réel. Système de scénarisation Un système de scénarisation est composé d’un ou plusieurs langages de scénarisation, permettant de modéliser le contenu scénaristique et/ou les objectifs scénaristiques, et d’un moteur de scénarisation permettant de gérer de manière dynamique la réalisation du scénario. 1.2 Motivations La scénarisation d’environnements virtuels a des applications dans de nombreux domaines, parmi lesquels on peut citer la formation [Burkhardt et al., 2006], l’aide à la décision [Bourdot et al., 2006], la thérapie [Klinger et al., 2006] et le divertissement, notamment via le domaine de la narration interactive [Bates, 1992]. Dans le cadre de ce mémoire, nous nous intéresserons surtout aux deux premiers. Les Environnements Virtuels pour l’Apprentissage Humain (EVAH) constituent en effet une des applications majeures de la réalité virtuelle, se démocratisant de plus en plus depuis les premiers développements remontant aux années 90. Les avantages de la réalité virtuelle pour la formation sont nombreux [Lourdeaux, 2001] : non seulement l’utilisation d’un environnement virtuel permet de se dé- tacher des contraintes pouvant exister dans les formations en conditions réelles (dangerosité, contraintes d’accessibilité au site ou au matériel, coût, etc.), mais elle permet également d’enrichir ces situations à des fins pédagogiques, via par exemple des fonctions de rejeu ou de segmentation de l’apprentissage. Ces environnements concernent à présent de nombreux domaines d’application, que ce soit au niveau 18CHAPITRE 1. INTRODUCTION 1.2. MOTIVATIONS de la formation professionnelle — formation au geste technique [Da Dalto, 2004], aux procédures de maintenance [Gerbaud, 2008] ou de conduite de machineries [Crison et al., 2005] [Rickel and Johnson, 1998], formation à la maîtrise des risques [Fabre et al., 2006] [Barot et al., 2013] [Querrec and Chevaillier, 2001], etc. — ou bien de l’éducation [Mikropoulos and Natsis, 2011] — compréhension de concepts scientifiques [Dede et al., 1996] [Windschitl and Winn, 2000], travaux pratiques virtuels [Baudouin, 2007], apprentissage des langues [Schlemminger, 2013], etc. Ils peuvent être utilisés dans différentes configurations techniques et avec différentes stratégies pédagogiques : présence ou non d’un formateur, environnement mono ou multi-apprenant, apprenant spectateur ou acteur de l’interaction avec l’environnement virtuel, etc. [Burkhardt et al., 2005]. Les environnements virtuels sont également utilisés pour des applications d’aide à la décision, que ce soit dans l’industrie [Bourdot et al., 2006] ou dans le domaine médical [Rizzo et al., 2012], mais aussi pour des applications de planification urbaine [Roupé, 2013], de gestion des flux d’immigration [Hedge, 2011], etc. La simulation informatique d’un système socio-technique peut en effet permettre au décideur d’appréhender rapidement les conséquences induites par ses choix, lui donnant une meilleure visibilité, en particulier lorsque les décisions doivent être prises dans l’urgence et dans un contexte flou [Castagna et al., 2001]. De tels simulateurs sont aussi utilisés en amont comme outils d’aide à la décision pour la conception de systèmes [Robotham and Shao, 2012], ou encore pour la maîtrise des risques, afin de permettre de détecter les facteurs d’accidents possibles [Gounelle et al., 2007]. Pour de nombreux environnements, dont la visée est de simuler un système technique dans une situation précise et cadrée, un faible niveau de scénarisation est suffisant. Les concepteurs définissent dans ce cas les règles d’évolution des systèmes simulés, sans chercher à exercer de contrôle supplémentaire sur le déroulement des événements. Ces environnements peuvent servir de support d’apprentissage — l’apprenant expérimentant avec la simulation à la manière d’un chercheur scientifique [De Vries and Baille, 2006] — ou d’entrainement, comme c’est le cas pour de nombreux simulateurs de conduite dits “pleine échelle” [Joab et al., 2006]. D’autre part, certains environnements font l’objet d’une scénarisation pédagogique réalisée au travers de rétroactions extradiégétiques, c’est à dire qui ne correspondent pas à des événements du domaine simulé (elles se situent ainsi en dehors de la diégèse). Ces rétroactions peuvent apporter des modifi- cations à l’environnement virtuel au sein d’une même situation d’apprentissage, sous la forme d’assistances [Lourdeaux, 2001] : enrichissement de l’environnement via l’ajout de symboles visuels ou sonores, restriction des déplacements ou manipulations de l’utilisateur, etc. Elles peuvent également permettre de naviguer dans le scénario pédagogique en passant d’une situation d’apprentissage à une autre [Luengo, 2009] ; la simulation est alors arrêtée et relancée à partir d’une situation différente. Cependant, dans le domaine de la formation et de l’aide à la décision, peu de travaux s’intéressent à la scénarisation des environnements virtuels sur le plan intradiégétique. Ce type de scénarisation consiste à contrôler le déroulement des événements au sein même de la simulation, sans couper l’immersion de l’utilisateur dans l’environnement virtuel. La visée ici n’est pas de remplacer les systèmes de scénarisation pédagogique qui ont fait leurs preuves pour la formation initiale et l’entrainement d’apprenants, mais de se positionner de manière complémentaire, en adressant d’autres besoins et d’autres types de formation. Ainsi, dans le cadre de la formation continue d’apprenants experts, ces derniers doivent être confrontés à des scénarios particuliers, plus rares, mettant en jeu des situations de travail dégradées. La scénarisation peut alors permettre d’amener à la réalisation d’un événement précis, comme le dé- clenchement d’un accident donné pour une formation à la maîtrise des risques. Pour des applications d’analyse de risque, cela permettrait ainsi de rejouer des scénarios accidentels, ou de déterminer les facteurs de risque d’un accident donné sans avoir besoin de procéder à des ajustements progressifs des conditions initiales de la simulation (voir par exemple [Bosse and Mogles, 2013]). De même, alors que les situations de travail se complexifient, il devient nécessaire de former non seulement aux compétences techniques, mais également aux compétences non-techniques, comme le travail en groupe ou la gestion du stress. Les environnements virtuels seront alors peuplés de per- 191.3. OBJECTIFS CHAPITRE 1. INTRODUCTION sonnages virtuels, dont le comportement devra lui-aussi être pris en compte par le système de scé- narisation : les personnages pourraient ainsi tenter de minimiser ou de maximiser les risques liés à une procédure collaborative, aider l’apprenant quand il est en difficulté en lui donnant des conseils ou en réalisant des actions à sa place, ou au contraire le mettre en situation de stress. Cette scénarisation adaptative permettrait ainsi de contrôler le niveau de tension et de difficulté de manière à ce qu’ils restent adaptés au profil et à l’activité de l’apprenant. Elle permettrait également de motiver ce dernier par le biais d’une mise en scène, en favorisant son implication émotionnelle dans une histoire, à la manière de la narration interactive. Il serait alors possible de transposer les jeux de rôles réalisés dans le cadre des formations sur des personnages de l’environnement virtuel, évitant ainsi de devoir faire intervenir plusieurs formateurs. 1.3 Objectifs De nos motivations concernant la scénarisation d’environnements virtuels destinés à la formation ou à l’aide à la décision découlent un certain nombre d’objectifs pour notre système de scénarisation. Ces objectifs touchent à la fois aux différents degrés de liberté pour l’utilisation et le pilotage de l’environnement virtuel, au contenu et à la qualité des scénarios produits, et aux possibilités offertes pour la phase de conception de ces environnements virtuels scénarisés. 1.3.1 Déroulement des scénarios Le premier groupe d’objectifs concerne les propriétés dynamiques de notre système de scénarisation, c’est à dire à la fois l’utilisation qui sera faite par l’apprenant de l’environnement virtuel en temps-réel, et la manière dont le système de scénarisation va pouvoir diriger le scénario de l’environnement virtuel (quoi, quand et comment). Nous déterminons ainsi quatre objectifs : – liberté d’action de l’utilisateur, – degrés de contrôle du scénario, – caractère dynamique du contrôle, – résilience. Liberté d’action de l’utilisateur Pour promouvoir un apprentissage par essai-erreur, ou pour permettre de tester différents cas dans un cadre d’aide à la décision, il est nécessaire de laisser à l’utilisateur une certaine liberté d’action. Par utilisateur, nous désignons ici la personne qui est immergée dans l’environnement virtuel et joue le rôle de l’un des personnages de l’environnement — dans le cas d’un environnement virtuel pour la formation, nous considèrerons qu’il s’agit de l’apprenant — et non les hypothétiques personnes qui pourraient exercer un contrôle extérieur sur l’environnement en temps réel — par exemple, un formateur. Ainsi, laisser à l’utilisateur une certaine latitude dans le choix de ses actions peut lui permettre d’expérimenter et de comparer les conséquences des différents choix qui s’offrent à lui. Il faut cependant distinguer le sentiment de liberté d’action que peut avoir l’utilisateur et sa capacité d’action réelle, c’est à dire l’impact réel de ses décisions sur le déroulement des événements (user agency) [Thue et al., 2010]. Si la liberté d’action perçue permet d’intéresser l’utilisateur en répondant à ses désirs en termes d’interaction [Wardrip-Fruin et al., 2009], seule une réelle capacité d’action peut lui permettre d’adopter une posture expérimentale vis à vis de l’environnement virtuel. De plus, la capacité d’action affecte également l’implication de l’utilisateur dans l’environnement virtuel [Si, 2010]. 20CHAPITRE 1. INTRODUCTION 1.3. OBJECTIFS Possibilités de contrôle du scénario En plus de la capacité d’action de l’utilisateur sur le scénario (user agency), il est nécessaire de considérer également la capacité d’action du système de scénarisation lui-même (global agency). Ainsi, parmi les objectifs scénaristiques qui vont pouvoir être pris en compte par le système, il faut tout d’abord permettre de spécifier des situations à atteindre. Par situation, nous entendons ici une combinaison particulière d’états de l’environnement virtuel, pouvant être décrite à plus ou moins haut niveau, par exemple “Il y a une fuite au niveau de la vanne n°32” ou “Il y a une anomalie au niveau d’une vanne”. Pour les environnements virtuels pour l’apprentissage se situant dans un cadre d’apprentissage situé, il est considéré que la situation dans laquelle se développent les apprentissages est primordiale et que les apprentissages doivent être contextualisés. La situation est une composante intégrale de la connaissance qui se développe [Rogalski, 2004]. On va donc chercher à placer l’apprenant dans une situation d’apprentissage donnée, afin de mettre en jeu des connaissances et des compétences, et de générer ces apprentissages. A l’inverse, les situations à ne pas atteindre doivent également pouvoir être spécifiées. Cela est notamment utile dans le cas où un apprenant ne possède pas encore les ressources nécessaires pour gérer une situation, ou au contraire s’il a déjà rencontré cette situation par le passé. Enfin, il s’agit de ne pas seulement s’intéresser aux situations ponctuelles mais aussi aux propriétés plus globales du scénario. En effet, une situation d’apprentissage peut être plus large qu’une situation ponctuelle dans l’environnement virtuel et inclure une dimension temporelle : augmentation du rythme de travail ou présence d’un collaborateur récalcitrant, par exemple. Contrôler l’agencement des situations, le rythme ou encore la complexité globale du scénario permettrait ainsi de pouvoir gérer une augmentation de la difficulté et de faire disparaître progressivement les assistances offertes par l’environnement virtuel [Burkhardt, 2010]. Caractère dynamique du contrôle En parallèle du quoi contrôler, il faut aussi s’intéresser au quand, car si la définition des objectifs scénaristiques en amont permet déjà de spécifier un scénario, il peut être utile dans de nombreux cas de re-définir ces objectifs de manière dynamique, afin d’offrir un scénario qui soit pertinent par rapport au profil et à l’activité de l’utilisateur de l’environnement virtuel. On veut ainsi pouvoir adapter les objectifs scénaristiques d’une session d’utilisation à l’autre afin de prendre en compte ce qui a été réalisé précédemment par l’utilisateur : introduire de nouvelles situations, augmenter la difficulté, éviter de rejouer des scénarios déjà vus, etc. De plus, il peut s’avérer intéressant dans certain cas d’aller plus loin, en proposant une adaptation dynamique du scénario au cours d’une même session d’utilisation de l’environnement virtuel. En effet, de même que l’environnement est modifié du fait des actions de l’apprenant, ce dernier évolue lui aussi au fur et à mesure de ses interactions avec la simulation. L’analyse de son activité en temps-réel permettant d’inférer sur ses connaissances et compétences, ces informations peuvent être utilisées pour déterminer les nouvelles situations auxquelles il doit être confronté. Le système de scénarisation doit ainsi être capable de prendre en compte de nouveaux objectifs scénaristiques de manière dynamique. Résilience Par résilience, nous désignons la capacité du système de scénarisation à réaliser un scénario possédant les propriétés souhaitées en dépit des perturbations extérieures. En effet, l’utilisateur étant libre d’agir dans l’environnement virtuel, ses actions peuvent aller à l’encontre du scénario prévu : distraction des personnages virtuels, modification des états des objets, etc. Le système de scénarisation doit être capable de gérer ces déviations, soit en limitant les conséquences de l’action de l’utilisateur sur le scénario (intervention), soit en modifiant le scénario afin de les prendre en compte 211.3. OBJECTIFS CHAPITRE 1. INTRODUCTION (accommodation) [Riedl et al., 2003]. Cette propriété est particulièrement importante dans le cas où les objectifs du système de scénarisation et ceux de l’utilisateur sont opposés. Dans les environnements virtuels pour la formation à la maîtrise des risques, par exemple, le système de scénarisation va chercher à confronter l’apprenant à une situation accidentelle, tandis que ce dernier cherchera à l’éviter. 1.3.2 Contenu des scénarios Le second groupe d’objectifs a trait aux propriétés des scénarios générés via l’interaction de l’utilisateur et du système de scénarisation lors de sessions d’utilisation de l’environnement virtuel. Nous déterminons ainsi trois objectifs pour ces scénarios : – validité écologique, – explicabilité, – variabilité. Validité écologique Pour qu’il puisse y avoir un transfert d’apprentissage entre l’environnement virtuel et la situation de travail réelle, ou que les conclusions tirées de la simulation pour l’aide à la décision soient transposables, il faut que la situation simulée corresponde par certains aspects à la situation réelle. La reproduction parfaitement fidèle de la réalité n’est pas nécessairement un objectif en soi : dans certains cas, la situation d’apprentissage autorise une déformation ou une exagération de la réalité pour faire mieux comprendre la complexité de la situation [Lourdeaux, 2001]. Au contraire, selon la visée de la formation ou le type de système simulé, les environnements virtuels auront différents besoins en termes de réalisme. Pour des environnements virtuels destinés à la formation au geste technique, par exemple, il sera nécessaire de veiller à la fidélité perceptive de la simulation, c’est à dire à la création d’une expérience perceptive qui serait crédible si elle était vécue dans le monde réel [Burkhardt et al., 2003]. A l’inverse, lorsqu’il s’agit de former à des compétences de plus haut niveau (apprentissage de procédure, formation à la réaction dans des situations d’urgence, etc.), on va privilégier au réalisme visuel la fidélité psychologique de la simulation, c’est à dire la proportion dans laquelle la tâche simulée engendre une activité et des processus psychologiques identiques à ceux de la tâche réelle [Burkhardt et al., 2003]. Plutôt que de réalisme, on va préférer parler de validité écologique des situations. La notion de validité écologique est issue du domaine de la psychologie de la perception, et désigne la proximité entre une situation expérimentale et la situation réelle à laquelle elle fait référence. Les situations écologiquement valides sont traditionnellement mises en opposition avec les situations artificielles très contrôlées et contraintes désignées comme “laboratoires” [Loomis et al., 1999]. Puisque nous nous intéressons à des formations à des compétences de haut niveau, incluant des aspects facteurs humain, nous viserons donc la génération de scénarios rendant compte de la complexité des comportements humains dans les situations de terrain, et induisant de la part des utilisateurs des comportements équivalents à ceux rencontrés en situation réelle. Explicabilité En plus de correspondre par certains aspects à la situation réelle, ces scénarios doivent également être explicables. Il s’agit ici de pouvoir expliquer non seulement les chaînes de causalité (conséquences des actions, chaînes accidentelles, etc.), mais aussi les comportements individuels des personnages. Sans aller toutefois jusqu’à rechercher la modélisation des processus décisionnels humains à la manière cognitiviste, nous visons à intégrer des aspects facteurs humains dans la modélisation comportementale des personnages virtuels, et à assurer la cohérence de leurs comportements par rapport 22CHAPITRE 1. INTRODUCTION 1.3. OBJECTIFS à ce modèle. Il a en effet été montré dans [Si et al., 2010] que les contradictions dans les motivations des personnages virtuels ont un impact négatif sur la compréhension qu’a l’utilisateur de ce qui se passe dans l’environnement virtuel. Cette explicabilité est donc nécessaire pour que l’utilisateur puisse comprendre le déroulement des événements, ainsi que pour produire des traces et tirer des conclusions dans le cas de systèmes d’aide à la décision. De même, pour que l’utilisateur ressente un sentiment de présence dans l’environnement virtuel, il doit pouvoir se former un modèle mental du monde, et pouvoir anticiper les résultats de ses actions ainsi que de celles des personnages virtuels : l’environnement doit alors réagir de manière constante et prévisible [Slater and Usoh, 1993] La notion d’explicabilité est très liée à celle de cohérence, dans le sens de la cohérence perçue par un utilisateur. [Riedl et al., 2003] définit la cohérence d’un scénario comme la capacité par un utilisateur de comprendre les relations entre les événements du scénario, à la fois au niveau des événements du monde de la simulation, et au niveau des événements qui lui sont directement présentés. Variabilité Notre objectif est de cibler de la formation à des situations de travail complexes ou de la formation continue, plutôt que de l’entraînement à un geste technique ou à une procédure limitée. Dans cette optique, il faut que le système de scénarisation puisse générer un panel varié de scénarios, allant des scénarios les plus courants où le système fonctionne en mode nominal et les personnages virtuels réalisent la procédure prescrite, aux scénarios les plus dégradés et les plus rares. Cette variabilité peut découler d’un système permettant l’émergence de scénarios inédits, ce qui est particulièrement intéressant pour des systèmes d’aide à la décision en maîtrise des risques, où l’on va utiliser la simulation pour juger si des situations accidentelles peuvent émerger des règles de fonctionnement du système technique et des procédures associées. 1.3.3 Conception des scénarios Enfin, le troisième groupe d’objectifs concerne le processus de conception des scénarios, c’est à dire la modélisation du contenu scénaristique faite en amont par des auteurs humains. On va chercher ici à limiter l’effort nécessaire à la conception (authoring) de ces environnements. Nous déterminons ici trois objectifs principaux : – passage à l’échelle, – maintenabilité, – réutilisabilité. Passage à l’échelle La création du contenu scénaristique est aujourd’hui l’un des principaux verrous identifiés dans le domaine de la narration interactive [Spierling and Szilas, 2009]. La création du système le plus connu à l’heure actuelle, Façade, a par exemple nécessité le travail à plein temps de deux ingénieurs pendant 5 ans, dont 3 ont été passés uniquement sur la création du contenu scénaristique, et ce pour une expérience interactive de 20 minutes environ à chaque session [Mateas and Stern, 2005]. Ce problème se fait d’autant plus ressentir lorsqu’il s’agit d’opérer un passage à l’échelle, c’est à dire d’augmenter fortement la taille, la complexité et la variabilité des scénarios couverts par l’environnement virtuel. Si l’on souhaite que le système de scénarisation puisse offrir une grande variabilité en termes de scénarios générés, il faut qu’il soit conçu de manière à pouvoir augmenter le nombre de scénarios possibles sans pour autant augmenter exponentiellement la taille du contenu scénaristique nécessaire à la génération de ces scénarios. 231.4. PROBLÉMATIQUE CHAPITRE 1. INTRODUCTION Maintenabilité Dans les systèmes de narration interactive, la personne qui crée le contenu scénaristique et celle qui crée le moteur de scénarisation sont souvent en réalité la même personne [Spierling and Szilas, 2009]. Dans le cas des environnements virtuels pour la formation ou l’aide à la décision, ce constat pose problème, notamment pour ce qui est de la maintenabilité de l’environnement. En effet, si le système technique change, ou si les procédures sont mises à jour, les formateurs ou les décideurs doivent être capables d’adapter l’environnement virtuel, sinon ce dernier devient obsolète. Il faut donc, d’une part, que les connaissances soient représentées de manière explicite et séparées de l’implémentation du moteur, et d’autre part qu’elles soient représentées dans un formalisme qui soit relativement accessible à des non-informaticiens. Réutilisabilité La séparation du moteur de scénarisation et des connaissances utilisées par ce moteur est également nécessaire pour la réutilisabilité de ces connaissances. Un même environnement virtuel pourrait ainsi être utilisé pour la formation de novices, pour la formation d’experts et pour de l’aide à la décision, en modifiant les objectifs scénaristiques ou en n’utilisant qu’une partie du contenu scénaristique. De même, il serait possible de réutiliser une partie d’un environnement virtuel pour une formation à une procédure similaire sur un autre site ou sur une machinerie différente. 1.3.4 Bilan sur les objectifs Ces dix objectifs peuvent être regroupés autour de quatre axes : – la liberté d’action de l’utilisateur, – le contrôle dynamique du scénario, qui regroupe les objectifs de possibilités de contrôle, de caractère dynamique du contrôle, et de résilience du système de scénarisation, – la cohérence du scénario global et des comportements individuels, qui regroupe les objectifs de validité écologique et d’explicabilité des scénarios, – l’adaptabilité de l’environnement virtuel, qui regroupe les objectifs de variabilité, de passage à l’échelle, de maintenabilité et de réutilisabilité des scénarios. L’objectif de cette thèse est donc de proposer un système de scénarisation d’environnements virtuels — un moteur de scénarisation et un ensemble de formalismes pour la modélisation du contenu et des objectifs scénaristiques — qui concilie ces quatres axes, en permettant d’assurer à la fois la liberté d’action de l’apprenant, le contrôle dynamique de la simulation, la cohérence des comportements présentés et l’adaptabilité de l’environnement virtuel. Si ces objectifs découlent de nos motivations concernant les applications particulières que sont les environnements virtuels pour l’apprentissage ou pour l’aide à la décision, nous estimons cependant qu’ils sont suffisament larges pour qu’un système de scénarisation ainsi conçu puisse être utilisé dans d’autres contextes. 1.4 Problématique L’objectif de cette thèse est de proposer un système de scénarisation d’environnements virtuels qui permette d’assurer à la fois la liberté d’action de l’apprenant, le contrôle dynamique de la simulation, la cohérence des comportements présentés et l’adaptabilité de l’environnement virtuel. Le verrou lié à ces travaux naît de l’incompatibilité entre ces différents objectifs : le contrôle s’oppose 24CHAPITRE 1. INTRODUCTION 1.5. APPROCHE à l’adaptabilité, la liberté d’action va à l’encontre du contrôle, l’alliance du contrôle et de l’adaptabilité met en péril la cohérence, et ainsi de suite. Le domaine de la narration interactive oppose ainsi traditionnellement le contrôle et l’adaptabilité des environnements virtuels, en classifiant les approches orientées scénario, qui pilotent l’environnement virtuel au niveau global, d’un côté, et orientées émergence, qui font émerger les scénarios à partir de comportements individuels, de l’autre. Dans le domaine du jeu vidéo, on parle du paradoxe narratif pour désigner l’opposition fondamentale entre l’interactivité et la narration [Juul, 1998], c’est à dire que le fait de donner davantage de capacité d’action au joueur va venir entraver le récit prévu par l’auteur [Aylett, 1999]. De plus, ces jeux sont rarement adaptables, et la variabilité des scénarios n’est atteinte qu’au prix d’un gros travail de conception, puisque la plupart utilisent un modèle de narration arborescente, où tous les déroulements possibles doivent être décrits explicitement [Genvo, 2002]. Cet effort nécessaire pour le passage à l’échelle de scénarios cohérents et précisément contrôlés constitue ce qu’on appelle l’authoring bottleneck [Spierling and Szilas, 2009], et montre la nécessité de mettre en place des systèmes de scénarisation permettant de créer des environnements adaptables, sans avoir à définir explicitement l’intégralité des scénarios possibles. Cependant, il est fréquent que les systèmes qui proposent de concilier contrôle et adaptabilité se bornent à apposer une surcouche de contrôle sur une simulation composée d’entités autonomes, et que les interventions de ces systèmes perturbent la cohérence de l’environnement en modifiant à la volée des états de la simulation. 1.5 Approche Pour conserver la liberté d’action de l’utilisateur et assurer l’adaptabilité des scénarios, nous avons choisi d’opter pour une approche émergente et modulaire. Le contenu scénaristique est repré- senté au travers d’un ensemble de modèles — le modèle du domaine qui décrit les objets, les actions possibles et le fonctionnement des systèmes, et le modèle de l’activité qui décrit les comportements humains dans la situation considérée. L’utilisateur est libre d’effectuer n’importe quelle action permise par le modèle du domaine, et l’environnement est peuplé de personnages virtuels autonomes, capables de s’adapter aux changements dans l’environnement, dont le comportement est généré à partir du modèle de l’activité. Ces modèles, ainsi que les moteurs qui vont permettre de faire évoluer l’état du monde et de générer les comportements des personnages virtuels, vont constituer le noyau de nos environnements virtuels. A ce niveau, les scénarios émergent des interactions libres de l’utilisateur, des personnages virtuels autonomes, et des systèmes simulés. Les scénarios ainsi créés sont explicables, puisqu’ils se conforment aux modèles, et valides écologiquement, les-dits modèles étant créés par des experts à partir d’analyses terrain. Afin de pouvoir exercer un contrôle supplémentaire sur le déroulement des événements, on ajoute à ce noyau une sur-couche de scénarisation, à travers un module en charge de la gestion des objectifs scénaristiques. Ce module va, en premier lieu, utiliser les traces d’activité et le profil de l’apprenant pour déterminer de manière dynamique, à partir d’un ensemble de règles pédagogiques et scénaristiques, les objectifs scénaristiques à atteindre dans l’environnement virtuel. Dans un deuxième temps, il va chercher à générer et à réaliser un scénario qui respecte ces objectifs scénaristiques. Afin de maintenir la cohérence de la simulation, le module de scénarisation va utiliser les modèles qui la sous-tendent afin de prédire son évolution, et va chercher à guider cette évolution au travers d’un ensemble d’ajustements possibles, qui vont influencer les réactions des systèmes techniques et les prises de décision des personnages virtuels de manière indirecte, sans nuire à leur explicabilité. 251.6. CONTRIBUTIONS CHAPITRE 1. INTRODUCTION 1.6 Contributions J’ai proposé dans le cadre de cette thèse un ensemble de contributions, qui sont résumées dans cette partie, avant d’être présentées en détail dans le reste du mémoire. Mes contributions majeures sont : – SELDON, un modèle pour la scénarisation d’environnements virtuels, – DIRECTOR, un moteur de planification et réalisation de scénarios prédictifs, – CAUSALITY-DL, un langage permettant de représenter des modèles de la causalité. J’ai également participé à la proposition de deux méta-modèles, dans le cadre d’un travail commun avec mon équipe de recherche : – ACTIVITY-DL, un langage permettant de représenter des modèles de l’activité, – DOMAIN-DL, un langage permettant de représenter des modèles du domaine. 1.6.1 Modèle pour la scénarisation d’environnements virtuels – SELDON J’ai proposé le modèle SELDON, pour ScEnario and Learning situations adaptation through Dynamic OrchestratioN, qui permet d’adapter le scénario d’un environnement virtuel en fonction de l’activité de l’utilisateur en conciliant les problématiques de contrôle, de cohérence et d’adaptabilité. FIGURE 1.1 – Modèle SELDON (voir légende figure 1.2) Le modèle SELDON tient son nom du personnage d’Hari Seldon, héros de la série de romans Fondation écrite par Isaac Asimov. Seldon est le fondateur de la psychohistoire, une science visant à prédire l’histoire à partir de connaissances sur la psychologie humaine. Pour mener l’humanité vers un meilleur futur, Hari Seldon utilise ses prédictions pour élaborer le Plan Seldon, qui décrit l’évolution souhaitée de la civilisation. Afin de s’assurer de la réalisation de ce plan, il met également en place des Fondations, organisations chargées d’agir localement pour guider l’évolution de l’humanité au moment des Crises Seldon, points clés du Plan Seldon. 26CHAPITRE 1. INTRODUCTION 1.6. CONTRIBUTIONS FIGURE 1.2 – Légende des schémas Le principe derrière le modèle SELDON est similaire : à partir d’une simulation interactive peuplée d’entités autonomes, un module de scénarisation permet d’orienter indirectement le déroulement des événements en réalisant des ajustements ponctuels sur l’état du monde ou sur les personnages virtuels. Dans un premier temps, ce module utilise la trace d’activité de l’utilisateur pour générer un ensemble d’objectifs scénaristiques (désirabilité de situations particulières ou contraintes globales sur les propriétés du scénario). Puis il utilise les modèles qui sous-tendent la simulation pour prédire son évolution, et calculer un scénario répondant à ces objectifs à partir de ces prédictions et d’un ensemble d’ajustements possibles. Ces ajustements sont transmis aux moteurs de simulation du monde et de génération des comportements des personnages virtuels afin d’influencer leur évolution, de sorte à ce que le scénario prédit par le module de scénarisation se réalise effectivement dans l’environnement virtuel. 1.6.2 Moteur de planification et réalisation de scénarios prédictifs – DIRECTOR Mes travaux de thèse se sont focalisés sur la génération et la réalisation du scénario dans l’environnement virtuel, ce qui correspond à la seconde phase de la scénarisation dans le modèle SELDON. Pour cela, j’ai proposé DIRECTOR, un moteur pour l’adaptation dynamique du scénario d’un environnement virtuel, utilisant de la planification pour prédire l’évolution de la simulation, et des ajustements sur l’état du monde pour guider cette évolution vers le scénario désiré. FIGURE 1.3 – Moteur DIRECTOR 271.6. CONTRIBUTIONS CHAPITRE 1. INTRODUCTION En amont du lancement de l’environnement virtuel, DIRECTOR utilise les modèles du domaine et de l’activité pour générer un ensemble d’opérateurs de prédiction : des opérateurs de planification qui sont cadrés par des préconditions, de manière à permettre de prédire l’évolution de la simulation. Lorsque DIRECTOR, durant l’exécution de la simulation, reçoit un ensemble d’objectifs scénaristiques à atteindre, il utilise un planificateur, prenant en entrée à la fois les objectifs scénaristiques, les opérateurs de prédiction, et les opérateurs d’ajustements qui décrivent les interventions possibles sur l’environnement virtuel, pour planifier un scénario répondant aux objectifs. Le scénario planifié correspond au scénario souhaité dans la simulation, et contient à la fois des opérateurs de prédiction — qui décrivent les actions attendues de la part des personnages virtuels et de l’utilisateur, et les comportements attendus de la part des systèmes techniques — et des opérateurs d’ajustement — qui décrivent les ajustements nécessaires à la réalisation de ce scénario. Puis, à la réception des messages indiquant les changements d’état dans l’environnement virtuel, DIRECTOR va comparer l’évolution de l’état du monde avec le scénario planifié, et déclencher au besoin les ajustements. Dans le cas où le scénario effectif dévie du scénario planifié, alors DIRECTOR planifiera un nouveau scénario tenant compte des changements dans l’environnement virtuel. Goal : (fire) commitment: agent-novice marcel action: ignore-turn-off-phone marcel phone1 tank1 car1 commitment: joint-used joint1 behaviour: leak tank1 joint1 commitment: tank-empty tank1 behaviour: ignore-leak tank1 joint1 action: open-tank marcel tank1 car1 behaviour: open tank1 action: pump-gas marcel tank1 car1 behaviour: pump-gas tank1 empty behaviour: fire happening: phonecall phone1 behaviour: spark phone1 occurrence: spark-true