HAL Id: tel-01087372 https://hal.inria.fr/tel-01087372 Submitted on 5 Jan 2015

HAL Id: tel-01087372 https://hal.inria.fr/tel-01087372 Submitted on 5 Jan 2015 HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci- entific research documents, whether they are pub- lished 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ée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés. Ingénierie des applications Web : réduire la complexité sans diminuer le contrôle Julien Richard-Foy To cite this version: Julien Richard-Foy. Ingénierie des applications Web : réduire la complexité sans diminuer le contrôle. Génie logiciel [cs.SE]. Université de Rennes 1, France, 2014. Français. ￿tel-01087372￿ No d’ordre : 00000 ANNÉE 2014 THÈSE / UNIVERSITÉ DE RENNES 1 sous le sceau de l’Université Européenne de Bretagne pour le grade de DOCTEUR DE L’UNIVERSITÉ DE RENNES 1 Mention : Informatique École doctorale Matisse présentée par Julien RICHARD-FOY préparée à l’unité de recherche IRISA – UMR6074 Institut de Recherche en Informatique et Système Aléatoires ISTIC Ingénierie des ap- plications Web : ré- duire la complexité sans diminuer le contrôle Thèse soutenue à Rennes le 9 décembre 2014 devant le jury composé de : Lionel SEINTURIER Professeur à l’université de Lille 1 / Rapporteur Manuel SERRANO Directeur de recherche à Sophia Antipolis / Rapporteur Erwan LOISANT Consultant à Zengularity / Examinateur François BODIN Professeur à l’IRISA / Examinateur Jean-Marc JÉZÉQUEL Directeur de l’IRISA / Directeur de thèse Olivier BARAIS Maître de conférence à l’IRISA / Co-directeur de thèse Il semble que la perfection soit atteinte, non quand il n'y a plus rien à ajouter mais quand il n'y a plus rien à retrancher par Antoine de Saint-Exupéry Each signi cant piece of functionality in a program should be implemented in just one place in the source code. Where similar functions are carried out by distinct pieces of code, it is generally bene cial to combine them into one by abstracting out the varying parts. par Benjamin Pierce Remerciements Je remercie Lionel Seinturier, Professeur à l’université de Lille 1, et Manuel Ser- rano, Directeur de recherche à Sophia Antipolis, d’avoir bien voulu accepter la charge de rapporteur. Je remercie Erwan Loisant, Consultant à Zengularity, et François Bodin, Profes- seur à l’IRISA, d’avoir bien voulu juger ce travail. Je remercie enfin Olivier Barais et Jean-Marc Jézéquel, qui ont dirigé ma thèse. Table des matières Table des matières 1 Introduction 5 I Contexte et état de l'art 9 1 Contexte et portée de la thèse 11 1.1 Architecture des applications Web . . . . . . . . . . . . . . . . . . . . . 11 1.2 Partage de code entre les parties client et serveur d’une application Web 13 1.3 Sûreté du typage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.4 Portée de la thèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2 État de l'art 19 2.1 Styles d’architecture pour les applications Web résilientes . . . . . . . . 19 2.1.1 Architecture des applications Web interactives . . . . . . . . . . 20 2.1.2 Prise en charge du mode déconnecté . . . . . . . . . . . . . . . . 23 2.1.3 Travail coopératif assisté par ordinateur . . . . . . . . . . . . . . 24 2.1.4 Event sourcing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.2 Partage de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.2.1 Langages dédiés implémentés comme une bibliothèque . . . . . 27 2.2.2 Langages lourds . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.2.3 Ingénierie dirigée par les modèles . . . . . . . . . . . . . . . . . . 30 2.2.4 Pouvoir d’expression des langages dédiés externes . . . . . . . . 31 2.2.5 Langages dédiés compilés et implémentés comme une biblio- thèque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.2.6 Méta-programmation et évaluation partielle . . . . . . . . . . . . 35 2.2.7 Lightweight Modular Staging et js-scala . . . . . . . . . . . . . . . 35 2.3 Sûreté du typage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 II Contributions 41 3 Partage de code 43 1 2 Table des matières 3.1 API des sélécteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.2 Manipulation de valeurs optionnelles . . . . . . . . . . . . . . . . . . . . 46 3.3 Définition de fragments de HTML . . . . . . . . . . . . . . . . . . . . . . 48 3.3.1 Représentation statiquement typée de chaînes de caractères conte- nant des expressions JavaScript . . . . . . . . . . . . . . . . . . . 50 3.4 Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.4.1 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.4.2 Expérience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.4.3 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4 Sûreté du typage 61 4.1 Inventaire des fonctions problématiques . . . . . . . . . . . . . . . . . . 61 4.1.1 createElement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.1.2 getElementsByTagName . . . . . . . . . . . . . . . . . . . . . . . 62 4.1.3 addEventListener . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.1.4 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.2 Solutions bien typés et conservant le même pouvoir d’expression . . . . 65 4.2.1 Généralisation des solutions existantes . . . . . . . . . . . . . . . 65 4.2.2 Utilisation des types paramétrés . . . . . . . . . . . . . . . . . . 66 4.2.3 Utilisation des types dépendants . . . . . . . . . . . . . . . . . . 67 4.3 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.3.1 uploads/Science et Technologie/ these 5 .pdf

  • 49
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager