39
27 novembre 2003 [email protected] Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative Rupture dans le développement logiciel provoquée par des bouleversements importants Fabrique Logicielle Mon thème de recherche : les langages de programmation La Programmation Générative caractérise humblement mes multiples travaux Les applications doivent être ouvertes et adaptables

27 novembre 2003 [email protected] Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

Embed Size (px)

Citation preview

Page 1: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

Habilitation à Diriger des Recherches présentée par

Didier Parigot

Contribution à la Programmation Générative

Rupture dans le développement logiciel provoquée par des bouleversements importants

Fabrique LogicielleMon thème de recherche :les langages de programmationLa Programmation Générative

caractérise humblementmes multiples travaux Les applications doivent être

ouvertes et adaptables

Page 2: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Le plan

Idée intuitive de la notion de Fabrique Logicielle

Passé : FNC-2 Résumé rapide de mes travaux sur les grammaires

attribuées

Présent et futur : SmartTools Les facteurs de ces bouleversements l’approche de fabrique logicielle L es quatre modèles dans SmartTools

Conclusion Pendant les questions : une démonstration ?

Page 3: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Ouvertes et adaptables

Fabrique logicielle

Modèles ou langagesmétiers

générateurs

programmes

compilateurs

Système

langages

applications

exécution

Code métier

La glue

Plate-forme

Famille d’application

Contrôler les parties sensibles à l’évolution

Applications ouvertes etApplications ouvertes et

adaptables adaptables

Applications évolutives Applications évolutives

Capturer un savoir-faireCapturer un savoir-faire

Production en « série » Production en « série »

Page 4: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Le plan

Idée intuitive de la notion de Fabrique Logicielle

Passé : FNC-2 Résumé rapide de mes travaux sur les grammaires

attribuées

Présent et futur : SmartTools Les facteurs de ces bouleversements l’approche de fabrique logicielle L es quatre modèles dans SmartTools

Conclusion Pendant les questions : une démonstration ?

Page 5: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Grammaires Attribuées : Années 70

Méthode pour décrire la sémantique des langages Déclarative

Le quoi, pas le comment : ensemble d’équations entre attributs Syntaxe (abstraite) ou Modèle

Exécutable (séquentielle, parallèle, incrémentale) Evaluateur d ’attributs

Applications Sémantique des langages de programmation

Nombreux travaux de recherche (1000 références) Théorie des GAs : classe de Grammaire Attribuée Pouvoir d’expression, applications

Plus beaucoup de recherches depuis 1995 ?

Page 6: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Les raisons de l’échec des GAs

Méthode de programmation par séparations de préoccupation, par attributs Impérative, fonctionnelle, logique, par attributs

Difficultés dans la construction d’évaluateurs d’attributs Classe de grammaire attribuée

Langage pour les grammaires attribuées Un sous-langage ou un langage à part entière ? Transformation de programme

Sémantique statique Méthode souvent comparée à une méthode de «

parsing »

Page 7: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Le plan

Idée intuitive de la notion de Fabrique Logicielle

Passé : FNC-2 Résumé rapide de mes travaux sur les grammaires

attribuées

Présent et futur : SmartTools Les facteurs de ces bouleversements l’approche de fabrique logicielle L es quatre modèles dans SmartTools

Conclusion Pendant les questions : une démonstration ?

Page 8: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

FNC-2 et SmartTools

Deux fabriques logiciellesProgrammation générativeSyntaxe Abstraite = XML

Formalisme du W3C (XML) ou l’OMG (UML), Langages dédiés (DSL), Patrons de conception, Programmation générative, Programmation par aspects (AOP), Programmation par composants,

Model-Driven Architecture (MDA), Domain-Driven Development (3D), Software Factories

Page 9: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Les facteurs de bouleversements (1)

Émergence de l’Internet Les technologies XML Web sémantique, Application sur le Web

Échange de données entre applications

Applications distribuées, applications embarquées Architecture, mobilité, communication (P2P)

Quel type de système informatique ?

Nouvelles technologies Composants, protocole, matériels

Quelle est LA technologie de demain ?

Page 10: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Les facteurs de bouleversements (2)

Démocratisation de l’informatique Ubiquitaire : présente partout

Quel utilisateur va-t’on découvrir ? (par hasard)

Rapidité du développement Retour d’investissement

Quelle application pour demain ? (quelque mois)

Réutilisation : composant monde ouvert

Logiciel libre ?Formalismes Standards : W3C et OMG

Page 11: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Le plan

Idée intuitive de la notion de Fabrique Logicielle

Passé : FNC-2 Résumé rapide de mes travaux sur les grammaires

attribuées

Présent et futur : SmartTools Les facteurs de ces bouleversements l’approche de fabrique logicielle L es quatre modèles dans SmartTools

Conclusion Pendant les questions : une démonstration ?

Page 12: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Pour répondre à ce bouleversement

Les langages de

programmation

Patrons de conception

Par séparation de préoccupations La programmation par aspects

La programmation par composants

La programmation par modèlespar transformation

Fertilisation croisée entre divers

domaines de recherche

Les applications doivent être ouvertes et adaptables

Page 13: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Programmation par aspects

Application(classes)

Tisseur

Préoccupations(aspects)

Séparation des préoccupations

Modèle d’accroche

Modèle: Abstraction de l’application pour la préoccupation

Page 14: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Programmation par composants

conteneurgénérateur

code métier

modèle de composant

Séparation du code fonctionnel et code non fonctionnel

Technologie

code métier

conteneur

composant extensibleModèle : Abstraction du code métier pour le conteneur

Page 15: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Programmation par modèle de données

Modèle de données 2 Transformation

Technologie1

Générateur

Code métier

Modèle de données 1

Indépendance du Modèle de données

Technologie2

Technologie3

Modèle : Abstraction du code métier pour les données

Page 16: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Evolution des langages de programmation

Par séparation de préoccupationsLe corps des méthodes, fonctions, etc...

La programmation par composantsles appels, les interfaces

La programmation par modèlesla structure de données

Les langages de

programmation

Les applications doivent être ouvertes et adaptables

Modèles ou langagesmétiers

Générateurs

Nouveaux langages de Nouveaux langages de

programmationprogrammation

Modèle: une abstraction Modèle: une abstraction

pour une préoccupation pour une préoccupation

Page 17: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Le plan

Idée intuitive de la notion de Fabrique Logicielle

Passé : FNC-2 Résumé rapide de mes travaux sur les grammaires

attribuées

Présent et futur : SmartTools Les facteurs de ces bouleversements l’approche de fabrique logicielle L es quatre modèles dans SmartTools

Conclusion Pendant les questions : une démonstration ?

Page 18: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Fabrique logicielle : SmartTools

Générateurs

PIMPIM PSM

Modèle de données

Modèle sémantique

Modèle de composants

Modèle de vue

La glue

Code métier

Plate-forme

Modèle pivot

Modèle projetable

Composant extensible

approche MDA

Composant MDA

Partie écrite par le programmeurLes parties sensibles à l’évolutionModèles Indépendants (PIM) Modèles Spécifiques (PSM)Approche MDA

Autres préoccupationsAutres préoccupations

Autres modèles Autres modèles

Page 19: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Le modèle de données (1)

ObjectifsModèle indépendant : PIM

D’un langage de programmation (d’une plate-forme) : format neutre

des générateurs qui instrument le modèle : PSMs

Utilisation des efforts de standardisation du W3C s’ouvrir vers des champs d’application plus vastes !!

Page 20: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

UMLMOF

Modèle de données (2)

Modèle de donnéesMéta-langage : Absynt

Traducteurs

DTD

Schema XML

Générateurs

Classes en Java(DOM)

Instance de

XMLXML

JavaXML

XMLXML

Conforme à Se serialise en

Se représente en

PSMPSM

Cosy CosyCentaurCentaur

Modèle 1 de données

Modèle 2 de données

Dans FNC-2 :Dans FNC-2 :

ASX, notre méta-langageASX, notre méta-langage

Niveau Méta

Page 21: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Le modèle de données : modèle pivot (3)

Impact des technologies XML

Modélisation UML (programmation OO) MOF, méta-langage (les 4 niveaux) Modélisation des modèles métiers

Base de données XML (XQuery) Web sémantique : Ontologies (RDF)

Donnée (interrogation) = Programme (exécution) ?

Transformation de modèle (MDA)Sémantique associée ?

Page 22: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Le modèle sémantique

ContexteSémantique d’un modèle = ensemble des

traitements Statique comme dynamique

Divers domaines hors du cadre classique des langages Sémantique plus souple

Objectifs Notre approche

Simple (proche de l’implantation) et pragmatique Projetable par transformation du modèle de base

Séparation entre le modèle et les actions sémantiques

Page 23: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Le modèle sémantique : Solution

Patron de conception « visiteur » Séparation entre la structure et les traitements pour

de meilleures réutilisation et indépendance vis-à-vis du modèle

Flot de contrôle lié au traitement Parcours de la structure de données

Programmation par aspect sur ce type de programmation programmation générative Structure + flot de contrôle + actions = programme

Utile pour la projection de la sémantique induite par une transformation du modèle de base

Page 24: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Projection de la sémantique

Modèle 2 TransformationTechnologie2

Modèle 1

Technologie1

traitement

Projectiond’aspects

Projection dynamique ?Projection dynamique ?

Par exemple pour Par exemple pour

les composantsles composants

Page 25: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Architecture : Modèle de composants

Contexte Composants Langages

Ma propre expérience (FNC-2, Cosy, SmartTools) Composants Systèmes (Applications distribuées)

Nombreuses technologies et Travaux de recherche

Objectifs Séparation des préoccupations Apport d’un certain savoir-faire

Problèmes et Questions Définition de la notion de composant ?

(boite noire ou grise) Topologie ? Gestion ? Déploiement ? Indépendance vis-à-vis d’une technologie

Page 26: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Modèle de composant : notre approche

Architecture de SmartToolsMéta-outil

La méthodeDéfinir un modèle de composant Abstrait

indépendant d’une technologie particulière

Définition des transformations vers d’autres modèles de composants : approche MDA

Le modèle de composantFortement basé sur un modèle neutre (PIM)P2P, Topologie dynamiqueComposant Extensible (services)

Page 27: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Connexion

Générateur

Modèle de composant

Gestionnairede composant

Création

Programmation par composants

Modèle de données

Modèle de vues

Modèle d’interface

Modèle sémantique

Document

Vue graphique

Vue graphique

Interface graphique

Collaboration entre Collaboration entre

les divers modèles les divers modèles Capture d’un savoir-faire Capture d’un savoir-faire

Nouvelle notion de Nouvelle notion de

Type (interface)Type (interface)

Page 28: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Modèle de composants : transformation

EJB

Interfaces Home

et Remote

Eclipse

API Eclipse ?

Modèle de composants abstrait

Fichier IDL +

Classe Server CORBA

CCM

SmartTools

Classe conteneur +

Classe extension Façade

Générateurs

Fichier WSLD +

Classe SOAP

Web Services

MDA

PIM

PSM

Différentes interprétationsDifférentes interprétations

de la notion de la notion

de composant de composant

Page 29: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

GUI : Le Modèle de vue

Objectifs Mettre la forme logique au centre du débat

Définir d’abord le modèle de donnéesMerci à XML !!

Vue graphique hautement configurable

IHM extensible, multi-support

IDE ne doit pas être au centre de l’application

Petits langages métiers (en XML) tous nos modèles sont définis en XML

Page 30: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Modèle de vues : langage Cosynt Modèle de donnéesModèle de syntaxe concrète

Composant logique Composant vue

Modèle de vue Modèle de style

XSLT

JTOM

QVT

Transformation de modèle : approche MDA

MDA

Transformations PIMà

Transformations PSMComposant MDA

Entrée

Sortie

parseur Transformation XSLT Feuille de style

Fusion de transformationFusion de transformation

Transformations symétriquesTransformations symétriques

IncrémentaleIncrémentale

Double approche MDADouble approche MDA

Page 31: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Le plan

Idée intuitive de la notion de Fabrique Logicielle

Passé : FNC-2 Résumé rapide de mes travaux sur les grammaires

attribuées

Présent et futur : SmartTools Les facteurs de ces bouleversements l’approche de fabrique logicielle L es quatre modèles dans SmartTools

Conclusion : SmartTools ? Pendant les questions : une démonstration ?

Page 32: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

SmartTools : c’est QUOI ?

Une application fabriquée par une fabrique logicielle modèle de données, sémantique, composants et autres

services

Tester notre approche

Une application qui permet de construire une fabrique définir des modèles métiers

Proposer et étendre l’approche

Une fabrique qui permet de concevoir une application rapidement (une famille). Tous nos langages sont définis en XML

Construire des applications (champ d’application)

Page 33: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Un monstre ? Application auto-générée

Composant de base Gestionnairede composant

Interface Utilisateur

Noyau

Générateurs Générateurde composant

Générateurde modèle

Générateurde sémantique

Générateurde vue

0%

En phase de production

Générateurs Générateurde composant

Générateurde modèle

Générateurde sémantique

Générateurde vue

100%

En mode ligne de commande

ApplicationsComposant logique X

Composant vue X

Composant logique Y

Composant vue Y

En mode non interactif ou en immersion

Composant de base Gestionnairede composant

Interface Utilisateur

100%50%

Cosynt

XprofileCoq

(XML)

XML générique

N % d’utilisation de la fabrique

DTDXML

schema

XSLT JavaMathML SVGHTML

ant CSSAbsyntcdml

lml

WSDL IDLbibtexRA

INRIAB

Syntax(relax)

EDF(UML)

Champ d’application ? Champ d’application ?

Page 34: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Conclusion : Macro-Programmation ?

Les langages de programmation classique ne sont pas LA solution ?

Modèle indépendant / inter-discipline ?

Processus de développement / Incrémental ?

Modèle de conception / Modèle de production ?

Modèle universel / Modèle métier ?

Applications ouvertes et adaptables ?

Modèle pour chaque préoccupation ?

AOP / directement sur le modèle ?

Transformation Dynamique / projection des traitements ?

Programmation générative / Méta-programmation ?

Etc…Etc…

Plus de questions quePlus de questions que

de réponses de réponses

MaisMais

un prototype de rechercheun prototype de recherche

existe déjà :existe déjà :

SmartToolsSmartTools

Page 35: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Conclusion : Macro-programmation

De la Micro-programmation à la Macro-programmation préoccupations, composants, modèles

Nouveau style de programmation Hyper dynamique

Support logiciel pour d’autres domaines comme : Web Sémantique Base de Données GRID computing

Le nombre d’utilisateurs de la Macro-programmation va croître beaucoup plus vite que pour la micro

Abstraction : modèles plus propice aux méthodes formelles ?

Page 36: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Un travail d'équipe : un grand MERCI à !!!

Martin Jourdan : Grammaires Attribuées

Catherine Julié, Bruno Marmol, Carole Lebellec, Aziz Souza,

Gilles Roussel, Etienne Duris et Loic Correnson

SmartToolsAlexandre Fau, Pascal Degenne et Carine

Courbis

Stagiaires et Ingénieurs J. Bonnet, C. Ayrault, O. Durin, E. Planes, C. Zylberman, D. Devillar, J.P Jouve,

R. Gomez, P. Bazet, B. Amilien, P. Rouzier, H. Benvel, G. Le Batard, S. Leibovitsch, R. Forax, A. Bergel, T. Abbondanza, J.L Baudoin, D. Nade, J.G

Variamparembil, O. Chabrol, P. Farrugia, L. Cognard, P. Canalda, A. Rizk, T. Gaal, F. Chalaux, J. Fillon, C. Pasquier, C. Helm

Page 37: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

FIN

QUESTIONS ?

Une Fabrique Logiciellewww-sop.inria.fr/oasis/SmartTools

Présentation (PIM)Démonstration (PSM)

Page 38: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Un exemple d’auto-utilisation : GUI

Page 39: 27 novembre 2003 Didier.Parigot@inria.fr Habilitation à Diriger des Recherches présentée par Didier Parigot Contribution à la Programmation Générative

27 novembre 2003 [email protected]

r Habilitation à Diriger des Recherches

Aperçu de SmartTools