Programmation paresseuse et causale des architectures orientées services

Documents pareils
Programmer des applications réparties

Cours 1 : La compilation

Évaluation et implémentation des langages

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Sujet de thèse CIFRE RESULIS / LGI2P

Entraînement au concours ACM-ICPC

Analyse,, Conception des Systèmes Informatiques

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

MATHEMATIQUES ET SCIENCES POUR L INGENIEUR

Processus d Informatisation

Ingénierie et gestion des connaissances

Patrons de Conception (Design Patterns)

Méthodes Agiles et gestion de projets

ETUDE ET IMPLÉMENTATION D UNE CACHE L2 POUR MOBICENTS JSLEE

Architecture d'entreprise : Guide Pratique de l'architecture Logique

CURRICULUM VITAE. Informations Personnelles

Le génie logiciel. maintenance de logiciels.

Proposition de sujet de thèse CIFRE EUROCOPTER / LGI2P

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

Elasticité logicielle pour optimiser l empreinte énergétique

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

BI dans les nuages. Olivier Bendavid, UM2 Prof. A. April, ÉTS

e-science : perspectives et opportunités pour de nouvelles pratiques de la recherche en informatique et mathématiques appliquées

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

REALISATION d'un. ORDONNANCEUR à ECHEANCES

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Maîtrise énergétique des centres de données

Curriculum Vitae 1 er février 2008

Industrial Phd Progam

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Machines virtuelles Cours 1 : Introduction

ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar

Gestion de projets logiciels. Xavier Dubuc

Métriques de performance pour les algorithmes et programmes parallèles

GL Processus de développement Cycles de vie

Option GSI Génie et Systèmes Informatiques

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Jean-Pierre Vickoff

Plan du cours : Zippers. Des fonctions sur les listes avec position. Des fonctions sur les listes avec position

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Master CCI. Compétences Complémentaires en Informatique. Livret de l étudiant

Annexe : La Programmation Informatique

PLAN DE COURS. GPA750 Ordonnancement des systèmes de production aéronautique

Conception des systèmes répartis

UFR d Informatique. FORMATION MASTER Domaine SCIENCES, TECHNOLOGIE, SANTE Mention INFORMATIQUE

Projet Active Object

Gestion Projet. Cours 3. Le cycle de vie

RESUME DESCRIPTIF DE LA CERTIFICATION (FICHE OPERATIONNELLE METIERS)

Etudier l informatique

Génie logiciel (Un aperçu)

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

Programmation parallèle et distribuée (Master 1 Info )

sous réserve de validation des modifications DROIT ECONOMIE GESTION SCIENCES DU MANAGEMENT FINANCE

Catalogue de stages D été

Le cadre des Web Services Partie 1 : Introduction

Modèle multi-agents de prise de décision éthique

Mettez les évolutions technologiques au service de vos objectifs métier

Université de Haute Alsace. Domaine. Sciences Humaines et Sociales. MASTER Mention Éducation, Formation, Communication UHA, ULP, Nancy 2

Méthodologie de conception des Systèmes d Aide à l Exploitation des Simulateurs d Entraînement

Intégration de la dimension sémantique dans les réseaux sociaux

Institut. Master MIAGE. Master SIC. d Administration des Entreprises de Paris. Sorbonne Graduate Business school

Soutien pour la formation à la recherche translationnelle en cancérologie

ISFA INSTITUT DE SCIENCE FINANCIÈRE ET D ASSURANCES GRANDE ÉCOLE D ACTUARIAT ET DE GESTION DES RISQUES

Stage Ingénieur en développement logiciel/modélisation 3D

Formula Negator, Outil de négation de formule.

OMGL 6 Cahier des charges

Dynamiser l innovation tout en réduisant son coût

Mathématique et Automatique : de la boucle ouverte à la boucle fermée. Maïtine bergounioux Laboratoire MAPMO - UMR 6628 Université d'orléans

Notes de lecture : Dan SPERBER & Deirdre WILSON, La pertinence

Public. Débouchés. Les atouts du Master PIC. Statistiques des débouchés 22 % 16 % 10 % 14 % 38 % Entreprise Start-up Thèse.

Note de cadrage. Projet Web UMS

Intelligence Artificielle et Robotique

Les formations en génie logiciel

Informatique et sciences du numérique

De la recherche universitaire le règlement

L Intégration Continue & Agilité

Partie II Cours 3 (suite) : Sécurité de bases de données

Le Processus RUP. H. Kadima. Tester. Analyst. Performance Engineer. Database Administrator. Release Engineer. Project Leader. Designer / Developer

DEVELOPPEMENT ET MAINTENANCE DE LOGICIEL: OUTIL DE PILOTAGE

Postes à pourvoir 2015

Mettre en place une infrastructure Web nouvelle génération avec Drupal et Acquia

Introduction. Nicolas Phalippon IR3. Source: rapport commandé par le Congrès américain. Présentation du 24/10/02

Université de Bangui. Modélisons en UML

Une approche dirigée par les modèles pour la génération de tests pour des systèmes de traitement de données complexes et réparties.

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Note de cadrage du PEPI MACS Mathématiques Appliquées & Calcul Scientifique

Prix 2 ème édition. Excellence partagée entre architecte et industriel. Appel à candidature

BOURSE DE RECHERCHE QUICK : SECURITE ET HYGIENE ALIMENTAIRE

Jean-Pierre Vickoff J-P Vickoff

INVESTISSEMENTS D AVENIR

Notre modèle d engagement

Choisir ses priorités: le développement incrémental de produit. Copyright Pyxis Technologies

Efficient Object Versioning for Object- Oriented Languages From Model to Language Integration

DUT. Informatique, orientation Imagerie Numérique. Domaine : Sciences, Technologies, Santé. Mention : Informatique

IFT2255 : Génie logiciel

Organisation de la fin d année du Master 2 de stratégie de communication globale

ACTIVITÉ DE PROGRAMMATION

Forum AMOA ADN Ouest. Présentation du BABOK. 31 Mars 2013 Nadia Nadah

Transcription:

LABORATOIRE D INFORMATIQUE DE NANTES-ATLANTIQUE UMR 6241 ÉCOLE DOCTORALE STIM, N. 503 «Sciences et technologies de l information et des mathématiques» Sujet de thèse pour 2016 Programmation paresseuse et causale des architectures orientées services Directeur de thèse NOM, Prénom : DOUENCE, Rémi Équipe d accueil : Ascola Unité de recherche : LINA (UMR 6241) Unité de rattachement : Mines Nantes Courriel : Remi.Douence (at) mines-nantes.fr Téléphone : (+33/0) 2 51 85 82 15 Taux d encadrement : 100 % Financement prévu : MESR

Sujet de thèse pour 2016 Programmation paresseuse et causale des architectures orientées services Résumé. L évaluation paresseuse est une technique essentielle en ingénierie logicielle. Elle permet de définir des composants logiciels très généraux (donc réutilisables), puis de construire des systèmes par assemblage automatique des composants et d obtenir une application efficace. Son but premier n est donc pas de permettre l écriture de programmes plus efficaces, mais d obtenir des programmes plus simples et de réutiliser plus de code. L évaluation paresseuse peut être offerte très naturellement dans les langages fonctionnels. Étrangement, la situation est très différente dans les langages impératifs, alors que cette technique est pourtant largement répandue (par exemple, les accès aux fichiers utilisent des tampons, les arbres de jeux sont construits incrémentalement, les pages web sont chargées incrémentalement). Dans les langages impératifs, le programmeur est responsable de la programmation manuelle de la paresse. Ce qui est fastidieux et bien sûr source de bogues. L objectif de cette thèse est de fournir des mécanismes langages et des outils pour l évaluation paresseuse dans un cadre impératif en général et dans un cadre orienté services en particulier. Mots clés. Programmation impérative, paresse, dépendance, sémantique, analyse statique et dynamique, optimisation, programmation distribuée, causalité, architecture orientée services. 2

Introduction L évaluation paresseuse est une technique essentielle en ingénierie logicielle [Hug89]. La paresse fait aujourd hui un retour en force, et si il n existe pas de support (c est bien la le problème) dans les langages les plus répandus, une requête google avec laziness et le nom d un langage retourne plusieurs centaines de milliers de résultats, dont de nombreux blogs de programmeurs (par exemple C++ [Mil14], Java [SPI14], Python [Nai13]) qui expliquent comment l encoder (mais à ses risques et périls). Ce sujet 1 propose de pallier ce manque de support. Contexte et problématique La réutilisation de code est une notion fondamentale du génie logiciel. Contrairement à ce que la plupart imagine elle ne permet pas d obtenir des programmes plus efficaces. Elle permet d obtenir des programmes plus simples et de réutiliser plus de code [Hug89]. Par exemple, la fonction qui calcule le minimum d une collection peut être définie comme la composition d un tri et de l accès au premier élément de la collection triée : minimum collection = head (tri collection) Cependant, cette définition est inefficace car la fonction générale tri effectue de nombreux calculs inutiles dans ce contexte spécialisé d utilisation. L évaluation paresseuse rend une telle définition efficace en effectuant uniquement les calcul requis par head. Des définitions simples et réutilisant beaucoup de code mais totalement inefficace en évaluation stricte deviennent raisonnables et donc simplement possibles en évaluation paresseuse. La paresse peut être très naturellement offerte dans les langages fonctionnels (car l absence d effets de bord rend les dépendances explicites et donc le réordonnancement des calculs possibles). La paresse n est pas offerte dans les langages impératifs (car les effets de bord rendent les dépendances implicites et donc le réordonnancement impossible en général). Pourtant, la programmation paresseuse est très utile dans un contexte impératif. Par exemple, un fichier n est pas lu immédiatement mais par bloc grâce à un tampon (c est à dire la lecture est paresseuse), un arbre de jeu va être partiellement construit et exploré en alternance, une page web va être chargée incrémentalement. On retrouve la paresse au niveau architectural aussi (par exemple batch versus pipe-filter, push versus pull [SG96]). 1 Ce sujet a déjà proposé l année dernière. Depuis, des premiers résultats concernant l évaluation paresseuse dans un cadre impératif (sémantique formelle et preuve de correction, optimisations dynamiques, implémentation monadique et expérimentations pratiques) ont publiés dans [DT14]. Ces résultats prouvent la faisabilité de l approche et donnent une base de départ solide à la suite du travail. 3

Problèmes et opportunités Dans un contexte impératif, le programmeur est responsable de programmer la paresse manuellement. Ceci est fastidieux, aussi les programmes ne sont pas aussi paresseux qu ils pourraient l être. Ceci est dangereux, car le programmeur peut créer des bogues si un calcul retardé est évalué plus tard qu il ne devrait l être. En conséquence, le programmeur définira et utilisera peu de paresse et donc peu de composants logiciels très généraux (qui de par leur généralité nécessitent de la paresse pour être performants). Dans un contexte distribué le problème est le même (sauf que dans ce cas la notion de séquence de calculs et de dépendance entre calculs devient causale [Lam78]). Les architecture orientées services reposent sur la composition (orchestration et choréographie) de services. Mais, là encore, pour des raisons d efficacité les services ne sont pas aussi généraux qu ils pourraient l être. Si les dépendances entre bloc impératifs pouvaient être déclarées (ou inférées) un algorithme [DLL09, DT14] pourrait réaliser l évaluation paresseuse en retardant ou forçant l évaluation en cascade de tels blocs. De plus, puisque les calculs sont réifiés (afin de les retarder) l algorithme pourrait aussi introduire des optimisations dynamiques [GLJ93]. Par exemple, quand une collection doit être triée deux fois, un tri est suffisant : les deux blocs retardés peuvent être remplacés par un seul. Travail demandé Objectifs L objectif de ce travail est de proposer un outil pour soutenir la programmation paresseuse dans un cadre orienté services. Cet outil reposera sur des annotations d effets pour chaque service et réalisera la composition dynamique (ou statique). Il permettra aussi de considérer des optimisations dynamiques. Un tel outil augmentera la réutilisation de composants logiciels en découplant la composition (généralisation) des contraintes d efficacité (spécialisation). Plan de travail prévisionnel de l étude Le travail consiste en : étudier la paresse dans les langages fonctionnels. identifier les utilisations et les opportunités d utilisation de la paresse dans des applications impératives / orientées services bien établies (par exemple en inspectant des applications open sources reconnues). 4

évaluer les techniques de programmation paresseuse dans un contexte impératif / orienté services. fournir des moyens de spécifier des dépendances dans un cadre impératif / orienté services. fournir des moyens de retarder, forcer, déclencher en cascade des évaluations dans un cadre impératif / orienté services. utiliser ces moyens pour remplacer la paresse manuelle et introduire plus de paresse dans les applications précédemment étudiées. fournir des moyens d exprimer et d effectuer des optimisations de séquences retardées. introduire des optimisations dynamiques dans les applications précédemment étudiées. Candidats Compétences Le candidat doit être passionné par les langages de programmation aussi bien d un point de vue pratique que théorique. Déclarations de candidature et résultats universitaires connus Pas de candidat identifié à ce jour. 5

Bibliographie [DLL09] Rémi Douence, Xavier Lorca, and Nicolas Loriant. Lazy composition of representations in java. In Alexandre Bergel and Johan Fabry, editors, Software Composition, volume 5634 of Lecture Notes in Computer Science, pages 55 71. Springer, 2009. [DT14] Rémi Douence and Nicolas Tabareau. Lazier Imperative Programming. In Principles and Practice of Declarative Programming (PPDP), Canterbury, Royaume- Uni, September 2014. [GLJ93] Andrew J. Gill, John Launchbury, and Simon L. Peyton Jones. A short cut to deforestation. In FPCA, pages 223 232, 1993. [Hug89] John Hughes. Why functional programming matters. Comput. J., 32(2) :98 107, 1989. [Lam78] Leslie Lamport. Time, clocks, and the ordering of events in a distributed system. Commun. ACM, 21(7) :558 565, 1978. [Mil14] Bartosz Milewski. Getting lazy with c++. Blog, April 2014. [Nai13] Vineet Naik. Python generators and being lazy. Blog, March 2013. [SG96] Mary Shaw and David Garlan. Software architecture - perspectives on an emerging discipline. Prentice Hall, 1996. [SPI14] SPIRiT_1984. Will java 8 have lazy evaluation? Stackoverflow, February 2014. 6

CV du directeur de thèse Rémi Douence a soutenu une thèse sur la compilation des langages fonctionnels à l Irisa en 1996. Il a fait un post-doc à Carnegie-Mellon University, Pittsburgh, USA, sur l analyse statique de langages d architecture logicielles en 1997. Il a été ingénieur expert à l Irisa en 1998, sur l évaluation partielle de programmes C. Depuis, il est maître assistant aux Mines de Nantes dans l équipe Ascola. Il s est intéressé aux langages de programmation : fonctionnels, d architecture logicielle, réflexifs, de composants logiciels, d aspects, de pilotage de solveurs de contraintes, de composition de services. Il s intéresse à la fois à l expressivité de ces langages mais aussi à analyser ou garantir leur propriétés. Il vient de soutenir sa HDR. Il s est déjà intéressé à la programmation impérative paresseuse et aux optimisations dynamiques [DLL09]. Et travaille sur le sujet [DT14]. 7