SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Analyse d’un langage de programmation r´eflexif
orient´e composants
Etude de COMPO
FERRAND Anthony NELAUPE Lucas VERDIER Fr´ed´eric
Universit´e Montpellier II
24 f´evrier 2015
1/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 1 /
Introduction
Sommaire
1 Introduction
2 Focus sur le language COMPO
Les descripteurs de composant
Les ports
Les connexions
3 R´eflexions sur les am´eliorations possibles de COMPO
Les passages d’arguments
Type de retour d’op´eration
4 Nos contributions `a COMPO
Ajout de syntaxe
Modifications de syntaxe
Passage d’un port requis ou fourni
Retour par port requis ou fourni
Assertion sur le type de retour
5 Gestion de projet
6 Conclusion
Critiques
Nos perspectives
2/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 2 /
Introduction
Introduction
Contexte : La r´eutilisabilit´e en d´eveloppement logiciel
D´evelopper un logiciel est tr`es coˆuteux (en temps et en argent)
Certains ´el´ements du programme sont redondants
Solution : Le paradigme composant qui facilite la r´eutilisation
Chaque partie du programme est cloisonn´ee
Un programme est un assemblage de composants
Un composant poss`ede une ou plusieurs tˆaches pr´ecises
Chaque composant doit indiquer
Ce qu’il fournit (provided)
Ce dont il a besoin (required)
Objectif : R´eutiliser les ´el´ements d´ej`a d´evelopp´es
Programme moins sujet aux erreurs
D´eveloppement plus rapide et donc moins coˆuteux
3/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 3 /
Introduction
D´efinitions
Composant :
A run-time entity which provides and requires services through
ports. [Petr SPACEK, Design and Implementation of a
Reflective Component-oriented Programming and Modeling
Language, 2013]
Port :
A port is a connection point (components are connected through
their ports) and a communication point.
[Chouki Tibermacine, Luc Fabresse, Pert Spacek, Christophe Dony, An
Inheritance System for Structural & Behavioral Reuse in
Component-based Software Programming, 2012]
Connexion :
Describes a binding from one to another port.
[Petr SPACEK, Design and Implementation of a Reflective
Component-oriented Programming and Modeling Language, 2013]
4/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 4 /
Introduction
Notre objectif
Participer au d´eveloppement du langage orient´e composant : COMPO
Participer aux r´eflexions pour l’´evolution du langage.
Contribuer `a son am´elioration
5/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 5 /
Introduction
Sommaire
1 Introduction
2 Focus sur le language COMPO
Les descripteurs de composant
Les ports
Les connexions
3 R´eflexions sur les am´eliorations possibles de COMPO
Les passages d’arguments
Type de retour d’op´eration
4 Nos contributions `a COMPO
Ajout de syntaxe
Modifications de syntaxe
Passage d’un port requis ou fourni
Retour par port requis ou fourni
Assertion sur le type de retour
5 Gestion de projet
6 Conclusion
Critiques
Nos perspectives
6/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 6 /
Focus sur le language COMPO
Sommaire
1 Introduction
2 Focus sur le language COMPO
Les descripteurs de composant
Les ports
Les connexions
3 R´eflexions sur les am´eliorations possibles de COMPO
Les passages d’arguments
Type de retour d’op´eration
4 Nos contributions `a COMPO
Ajout de syntaxe
Modifications de syntaxe
Passage d’un port requis ou fourni
Retour par port requis ou fourni
Assertion sur le type de retour
5 Gestion de projet
6 Conclusion
Critiques
Nos perspectives
7/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 7 /
Focus sur le language COMPO
Focus sur le language COMPO
Langage d´evelopp´e par Petr SPACEK dans sa th`ese [Design and
Implementation of a Reflective Component-oriented Programming and
Modeling Language, 2013].
Bas´e sur SmallTalk
R´eflexif
Le langage permet de
Expliciter le requis
Programmer pour et par la r´eutilisation
8/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 8 /
Focus sur le language COMPO
L’id´ee de programmation orient´ee composants
9/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 9 /
Focus sur le language COMPO Les descripteurs de composant
Architecture du langage COMPO
Figure: M´etamod`ele du langage COMPO [Petr SPACEK, Design and Implementation
of a Reflective Component-oriented Programming and Modeling Language, 2013]
10/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 10
Focus sur le language COMPO Les descripteurs de composant
Informations pr´esentes dans un descripteur
Le requis : Ce dont un composant a besoin pour fonctionner.
Le fourni : Il s’agit des services que le composant d´ecrit propose.
Architecture interne : Les composants peuvent ˆetre eux-mˆemes compos´es
d’autres composants. On parle alors de composites.
Les services : D´ecrit la logique m´etier des composants.
Listing 1 – Syntaxe g´en´erale d’un descripteur
1 <Meta-descripteur> <Descripteur> extends <Super-descripteur>{
2 requires { }
3 provides { }
4 architecture { }
5 <Services>
6 }
11/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 11
Focus sur le language COMPO Les ports
Les ports
Visibilit´e
Interne / Externe
Cardinalit´e
Simple / Multiple
Rˆole
Fourni : liste les signatures de services offerts par un composant.
Requis : liste les signatures de services requis par le composant.
Liste de signatures de services
Ports par d´efauts
Un port fourni externe par d´efaut nomm´e default.
Un port requis externe multiple nomm´e args.
Un port requis interne nomm´e self.
Un port requis interne nomm´e super
12/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 12
R´eflexions sur les am´eliorations possibles de COMPO
Sommaire
1 Introduction
2 Focus sur le language COMPO
Les descripteurs de composant
Les ports
Les connexions
3 R´eflexions sur les am´eliorations possibles de COMPO
Les passages d’arguments
Type de retour d’op´eration
4 Nos contributions `a COMPO
Ajout de syntaxe
Modifications de syntaxe
Passage d’un port requis ou fourni
Retour par port requis ou fourni
Assertion sur le type de retour
5 Gestion de projet
6 Conclusion
Critiques
Nos perspectives
13/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 13
R´eflexions sur les am´eliorations possibles de COMPO Les passages d’arguments
Passage d’un port fourni
Figure: Exemple lors d’un passage d’un port fourni en argument `a o : avant modification
de rAC
.
14/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 14
R´eflexions sur les am´eliorations possibles de COMPO Les passages d’arguments
Passage d’un port fourni : apr`es ex´ecution de exec
Figure: Exemple lors d’un passage d’un port fourni en argument `a o : apr`es modification
de rAC
.
15/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 15
R´eflexions sur les am´eliorations possibles de COMPO Les passages d’arguments
Passage d’un port requis
Figure: Exemple lors d’un passage d’un port requis en argument `a o : avant modification
de rAC
.
16/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 16
R´eflexions sur les am´eliorations possibles de COMPO Les passages d’arguments
Passage d’un port requis : apr`es ex´ecution de exec
Figure: Exemple lors d’un passage d’un port requis en argument `a o : apr`es modification
de rAC
.
17/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 17
R´eflexions sur les am´eliorations possibles de COMPO Type de retour d’op´eration
Retour d’un port fourni
Figure: Cas du retour d’un port fourni : on renvoie `a l’appelant un port requis anonyme
connect´e `a ce port
.
18/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 18
R´eflexions sur les am´eliorations possibles de COMPO Type de retour d’op´eration
Retour d’un port requis
Figure: Cas du retour d’un port requis : on renvoie `a l’appelant le port requis
.
19/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 19
Nos contributions `a COMPO
Sommaire
1 Introduction
2 Focus sur le language COMPO
Les descripteurs de composant
Les ports
Les connexions
3 R´eflexions sur les am´eliorations possibles de COMPO
Les passages d’arguments
Type de retour d’op´eration
4 Nos contributions `a COMPO
Ajout de syntaxe
Modifications de syntaxe
Passage d’un port requis ou fourni
Retour par port requis ou fourni
Assertion sur le type de retour
5 Gestion de projet
6 Conclusion
Critiques
Nos perspectives
20/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 20
Nos contributions `a COMPO Ajout de syntaxe
Ajout de syntaxe
Connexion d’un port requis `a un litt´eral
Listing 2 – Syntaxe d’une connexion `a un litt´eral
1 connect compteurVal@self to 1;
2 connect compteurVal@self to 3.14;
3 connect compteurVal@self to ’Hello World’;
Section de code SmallTalk dans COMPO
Listing 3 – Syntaxe d’une primitive smalltalk en COMPO
1 <!
2 Transcript crShow: ’Hello’.
3 >
21/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 21
Nos contributions `a COMPO Modifications de syntaxe
Modifications de syntaxe
Faire une connexion avec le mot cl´e >>>
Listing 4 – Ancienne et nouvelle syntaxe d’une connexion
1 connect compteurVal@self to 1; "Ancienne syntaxe"
2 compteurVal >>> 1; "Nouvelle syntaxe"
D´efinir un service avec le mot cl´e operation
Listing 5 – Ancienne et nouvelle syntaxe d’un service
1 service foo() {
2 "Ancienne syntaxe"
3 }
4
5 operation foo() {
6 "Nouvelle syntaxe"
7 }
22/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 22
Nos contributions `a COMPO Passage d’un port requis ou fourni
Passage d’un port requis ou fourni
Soient a et var des ports requis. var est connect´e `a un port fourni.
Listing 6 – Syntaxe du passage d’un port fourni en COMPO
1 a.foo(var);
Listing 7 – Syntaxe du passage d’un port requis en COMPO
1 a.foo(!var);
23/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 23
Nos contributions `a COMPO Retour par port requis ou fourni
Retour par port requis ou fourni
Soit portInterne un port requis connect´e `a un port fourni.
Listing 8 – Syntaxe de retour d’un port requis en COMPO
1 operation foo() {
2 return !portInterne;
3 }
Listing 9 – Syntaxe de retour d’un port fourni en COMPO
1 operation foo() {
2 return portInterne;
3 }
24/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 24
Nos contributions `a COMPO Assertion sur le type de retour
Assertion sur le type de retour
Soit portInterne un port requis connect´e `a un port fourni.
Listing 10 – Assertion de renvoie d’un port requis
1 operation foo() :req {
2 return !portInterne;
3 }
Listing 11 – Assertion de renvoie d’un port fourni
1 operation foo() :pro {
2 return portInterne;
3 }
25/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 25
Gestion de projet
Sommaire
1 Introduction
2 Focus sur le language COMPO
Les descripteurs de composant
Les ports
Les connexions
3 R´eflexions sur les am´eliorations possibles de COMPO
Les passages d’arguments
Type de retour d’op´eration
4 Nos contributions `a COMPO
Ajout de syntaxe
Modifications de syntaxe
Passage d’un port requis ou fourni
Retour par port requis ou fourni
Assertion sur le type de retour
5 Gestion de projet
6 Conclusion
Critiques
Nos perspectives
26/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 26
Gestion de projet
Gestion de projet
Gestion de projet agile.
R´eunion hebdomadaire avec M. Dony.
Un rapport livr´e `a chaque r´eunion.
Une d´emonstration de nos ajouts les plus r´ecents.
R´epartition des tˆaches suivants trois grands axes :
Anthony Ferrand : Syntaxe et gestion du parser
Lucas Nelaupe : Invocations de services et rapport
Fr´ed´eric Verdier : R´eflexions th´eoriques, interface graphique et supervision
27/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 27
Conclusion
Sommaire
1 Introduction
2 Focus sur le language COMPO
Les descripteurs de composant
Les ports
Les connexions
3 R´eflexions sur les am´eliorations possibles de COMPO
Les passages d’arguments
Type de retour d’op´eration
4 Nos contributions `a COMPO
Ajout de syntaxe
Modifications de syntaxe
Passage d’un port requis ou fourni
Retour par port requis ou fourni
Assertion sur le type de retour
5 Gestion de projet
6 Conclusion
Critiques
Nos perspectives
28/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 28
Conclusion
Conclusion
Plusieurs modes de connexion pour plusieurs comportements du programme.
Plusieurs mani`eres de choisir un mode connexion (instruction de connexion,
passage d’argument, retour d’op´eration).
Augmentation de la syntaxe et impl´ementation des diff´erents modes de
connexion en COMPO pour illustrer ces comportements.
29/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 29
Conclusion Critiques
Critiques
V´erification de compatibilit´e incompl`ete.
Pas d’expression du requis sur les arguments d’op´erations
Couche r´eflexive incompl`ete
Impossibilit´e de recompiler les descripteurs du coeur du langage.
Mot cl´e @ brise l’encapsulation dans les op´erations.
30/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 30
Conclusion Nos perspectives
Nos perspectives
Court terme
Continuer la v´erification de compatibilit´e
Impl´ementer la connexion partag´ee
Moyen terme
Impl´ementer les op´erations de la couche r´eflexive
Interdire l’acc`es `a un port distant auquel
on n’est pas connect´e
Long terme
Extraire COMPO de Pharo
31/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 31
Conclusion Nos perspectives
Bibliographie
[1] Petr SPACEK. Design and Implementation of a Reflective Component-oriented Programming and Modeling Language. 2013.
[2] Pert Spacek Christophe Dony Chouki Tibermacine, Luc Fabresse. ”An Inheritance System for Structural & Behavioral Reuse in Component-based
Software Programming”. 2012.
[3] Lukas Renggli Jan Kurs, Guillaume Larcheveque. PetitParser : Building Modular Parsers.
[4] Christelle Urtado Sylvain Vauttier Marianne Huchard Huaxi (Yulin) Zhang, Lei Zhang. A three-level component model in component-based software
development.
32/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 32
Conclusion Nos perspectives
Merci,
Nous allons maintenant faire une d´emonstration du syst`eme COMPO.
33/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 33

Contenu connexe

En vedette

Evolutions et nouveaux outils SEO
Evolutions et nouveaux outils SEOEvolutions et nouveaux outils SEO
Evolutions et nouveaux outils SEODimitri Brunel
 
UCM Talentum Mons - Séance d'info 2015
UCM Talentum Mons - Séance d'info 2015UCM Talentum Mons - Séance d'info 2015
UCM Talentum Mons - Séance d'info 2015Miletcherk
 
Projet plateau
Projet plateauProjet plateau
Projet plateaufredolly
 
¿Qué te parecería?
¿Qué te parecería?¿Qué te parecería?
¿Qué te parecería?leosende
 
El pensamiento y la calidad de vida
El pensamiento y la calidad de vidaEl pensamiento y la calidad de vida
El pensamiento y la calidad de vidaEuler
 
Les 6 de la semaine #1
Les 6 de la semaine #1Les 6 de la semaine #1
Les 6 de la semaine #16co
 
Monaco magnifique
Monaco magnifiqueMonaco magnifique
Monaco magnifiquelyago
 
Contenidos que agregan valor al ciudadano
Contenidos que agregan valor al ciudadanoContenidos que agregan valor al ciudadano
Contenidos que agregan valor al ciudadanoPaulo Saavedra
 
Repositorio Digital Agricola y Dspace
Repositorio Digital Agricola y DspaceRepositorio Digital Agricola y Dspace
Repositorio Digital Agricola y DspaceLiz Pagan
 
Introduction
IntroductionIntroduction
Introductionteedmedia
 
recursos especializados para la investigación agrícola
recursos especializados para la investigación agrícolarecursos especializados para la investigación agrícola
recursos especializados para la investigación agrícolaLiz Pagan
 
Alfabetización dixital
Alfabetización dixitalAlfabetización dixital
Alfabetización dixitalalgarada
 
Atelier Delplanque Fouré JFK2009
Atelier Delplanque Fouré JFK2009Atelier Delplanque Fouré JFK2009
Atelier Delplanque Fouré JFK2009Pierre Trudelle
 
Comme promis voici le fruit de ma réflexion à propos de l
Comme promis voici le fruit de ma réflexion à propos de lComme promis voici le fruit de ma réflexion à propos de l
Comme promis voici le fruit de ma réflexion à propos de lFabrice Carlier
 

En vedette (20)

Evolutions et nouveaux outils SEO
Evolutions et nouveaux outils SEOEvolutions et nouveaux outils SEO
Evolutions et nouveaux outils SEO
 
UCM Talentum Mons - Séance d'info 2015
UCM Talentum Mons - Séance d'info 2015UCM Talentum Mons - Séance d'info 2015
UCM Talentum Mons - Séance d'info 2015
 
Projet plateau
Projet plateauProjet plateau
Projet plateau
 
¿Qué te parecería?
¿Qué te parecería?¿Qué te parecería?
¿Qué te parecería?
 
El pensamiento y la calidad de vida
El pensamiento y la calidad de vidaEl pensamiento y la calidad de vida
El pensamiento y la calidad de vida
 
Les 6 de la semaine #1
Les 6 de la semaine #1Les 6 de la semaine #1
Les 6 de la semaine #1
 
Monaco magnifique
Monaco magnifiqueMonaco magnifique
Monaco magnifique
 
Frases Célebres
Frases CélebresFrases Célebres
Frases Célebres
 
Duna Blanco
Duna BlancoDuna Blanco
Duna Blanco
 
Contenidos que agregan valor al ciudadano
Contenidos que agregan valor al ciudadanoContenidos que agregan valor al ciudadano
Contenidos que agregan valor al ciudadano
 
Educam 2009 Programa
Educam 2009   ProgramaEducam 2009   Programa
Educam 2009 Programa
 
Repositorio Digital Agricola y Dspace
Repositorio Digital Agricola y DspaceRepositorio Digital Agricola y Dspace
Repositorio Digital Agricola y Dspace
 
Dibujos teoría
Dibujos teoríaDibujos teoría
Dibujos teoría
 
Introduction
IntroductionIntroduction
Introduction
 
recursos especializados para la investigación agrícola
recursos especializados para la investigación agrícolarecursos especializados para la investigación agrícola
recursos especializados para la investigación agrícola
 
Alfabetización dixital
Alfabetización dixitalAlfabetización dixital
Alfabetización dixital
 
Amesamis
AmesamisAmesamis
Amesamis
 
parte
parteparte
parte
 
Atelier Delplanque Fouré JFK2009
Atelier Delplanque Fouré JFK2009Atelier Delplanque Fouré JFK2009
Atelier Delplanque Fouré JFK2009
 
Comme promis voici le fruit de ma réflexion à propos de l
Comme promis voici le fruit de ma réflexion à propos de lComme promis voici le fruit de ma réflexion à propos de l
Comme promis voici le fruit de ma réflexion à propos de l
 

Similaire à Analyse d’un langage de programmation réflexif orienté composants Etude de COMPO

Compilationnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
CompilationnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnCompilationnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
Compilationnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnsaraayoub440
 
Soutenance séminaire bibliographique
Soutenance séminaire bibliographiqueSoutenance séminaire bibliographique
Soutenance séminaire bibliographiqueMaxime ALAY-EDDINE
 
ESGAE_C#_2021-2024 Cours Avancé (('.pptx
ESGAE_C#_2021-2024 Cours Avancé (('.pptxESGAE_C#_2021-2024 Cours Avancé (('.pptx
ESGAE_C#_2021-2024 Cours Avancé (('.pptxLagloireSouamounou
 
1758yyui3-jjjujujjiopoooooAcetatesA0.ppt
1758yyui3-jjjujujjiopoooooAcetatesA0.ppt1758yyui3-jjjujujjiopoooooAcetatesA0.ppt
1758yyui3-jjjujujjiopoooooAcetatesA0.pptMohamed827334
 
Organiser son CI/CD - présentation
Organiser son CI/CD - présentation Organiser son CI/CD - présentation
Organiser son CI/CD - présentation Julien Garderon
 
Chapitre 0_ Introduction à la compilation.pdf
Chapitre 0_ Introduction à la compilation.pdfChapitre 0_ Introduction à la compilation.pdf
Chapitre 0_ Introduction à la compilation.pdfbenfifiaymen36
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la rechercheJohan Moreau
 
Caractériser le contenu des exigences pour aider à leur rédaction : un défi p...
Caractériser le contenu des exigences pour aider à leur rédaction : un défi p...Caractériser le contenu des exigences pour aider à leur rédaction : un défi p...
Caractériser le contenu des exigences pour aider à leur rédaction : un défi p...Nathalie Aussenac-Gilles
 
Programmation Fonctionnelle avec Kotlin
Programmation Fonctionnelle avec KotlinProgrammation Fonctionnelle avec Kotlin
Programmation Fonctionnelle avec KotlinRiadh MNASRI
 
Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)ISIG
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...ECAM Brussels Engineering School
 

Similaire à Analyse d’un langage de programmation réflexif orienté composants Etude de COMPO (14)

compilation1-2020.pdf
compilation1-2020.pdfcompilation1-2020.pdf
compilation1-2020.pdf
 
Compilationnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
CompilationnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnCompilationnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
Compilationnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
 
Soutenance séminaire bibliographique
Soutenance séminaire bibliographiqueSoutenance séminaire bibliographique
Soutenance séminaire bibliographique
 
ESGAE_C#_2021-2024 Cours Avancé (('.pptx
ESGAE_C#_2021-2024 Cours Avancé (('.pptxESGAE_C#_2021-2024 Cours Avancé (('.pptx
ESGAE_C#_2021-2024 Cours Avancé (('.pptx
 
1758yyui3-jjjujujjiopoooooAcetatesA0.ppt
1758yyui3-jjjujujjiopoooooAcetatesA0.ppt1758yyui3-jjjujujjiopoooooAcetatesA0.ppt
1758yyui3-jjjujujjiopoooooAcetatesA0.ppt
 
c1.pdf
c1.pdfc1.pdf
c1.pdf
 
Organiser son CI/CD - présentation
Organiser son CI/CD - présentation Organiser son CI/CD - présentation
Organiser son CI/CD - présentation
 
Chapitre 0_ Introduction à la compilation.pdf
Chapitre 0_ Introduction à la compilation.pdfChapitre 0_ Introduction à la compilation.pdf
Chapitre 0_ Introduction à la compilation.pdf
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
 
Slides de présentation "Fin du RTC - Usages spéciaux"
Slides de présentation "Fin du RTC - Usages spéciaux"Slides de présentation "Fin du RTC - Usages spéciaux"
Slides de présentation "Fin du RTC - Usages spéciaux"
 
Caractériser le contenu des exigences pour aider à leur rédaction : un défi p...
Caractériser le contenu des exigences pour aider à leur rédaction : un défi p...Caractériser le contenu des exigences pour aider à leur rédaction : un défi p...
Caractériser le contenu des exigences pour aider à leur rédaction : un défi p...
 
Programmation Fonctionnelle avec Kotlin
Programmation Fonctionnelle avec KotlinProgrammation Fonctionnelle avec Kotlin
Programmation Fonctionnelle avec Kotlin
 
Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...
 

Analyse d’un langage de programmation réflexif orienté composants Etude de COMPO

  • 1. Analyse d’un langage de programmation r´eflexif orient´e composants Etude de COMPO FERRAND Anthony NELAUPE Lucas VERDIER Fr´ed´eric Universit´e Montpellier II 24 f´evrier 2015 1/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 1 /
  • 2. Introduction Sommaire 1 Introduction 2 Focus sur le language COMPO Les descripteurs de composant Les ports Les connexions 3 R´eflexions sur les am´eliorations possibles de COMPO Les passages d’arguments Type de retour d’op´eration 4 Nos contributions `a COMPO Ajout de syntaxe Modifications de syntaxe Passage d’un port requis ou fourni Retour par port requis ou fourni Assertion sur le type de retour 5 Gestion de projet 6 Conclusion Critiques Nos perspectives 2/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 2 /
  • 3. Introduction Introduction Contexte : La r´eutilisabilit´e en d´eveloppement logiciel D´evelopper un logiciel est tr`es coˆuteux (en temps et en argent) Certains ´el´ements du programme sont redondants Solution : Le paradigme composant qui facilite la r´eutilisation Chaque partie du programme est cloisonn´ee Un programme est un assemblage de composants Un composant poss`ede une ou plusieurs tˆaches pr´ecises Chaque composant doit indiquer Ce qu’il fournit (provided) Ce dont il a besoin (required) Objectif : R´eutiliser les ´el´ements d´ej`a d´evelopp´es Programme moins sujet aux erreurs D´eveloppement plus rapide et donc moins coˆuteux 3/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 3 /
  • 4. Introduction D´efinitions Composant : A run-time entity which provides and requires services through ports. [Petr SPACEK, Design and Implementation of a Reflective Component-oriented Programming and Modeling Language, 2013] Port : A port is a connection point (components are connected through their ports) and a communication point. [Chouki Tibermacine, Luc Fabresse, Pert Spacek, Christophe Dony, An Inheritance System for Structural & Behavioral Reuse in Component-based Software Programming, 2012] Connexion : Describes a binding from one to another port. [Petr SPACEK, Design and Implementation of a Reflective Component-oriented Programming and Modeling Language, 2013] 4/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 4 /
  • 5. Introduction Notre objectif Participer au d´eveloppement du langage orient´e composant : COMPO Participer aux r´eflexions pour l’´evolution du langage. Contribuer `a son am´elioration 5/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 5 /
  • 6. Introduction Sommaire 1 Introduction 2 Focus sur le language COMPO Les descripteurs de composant Les ports Les connexions 3 R´eflexions sur les am´eliorations possibles de COMPO Les passages d’arguments Type de retour d’op´eration 4 Nos contributions `a COMPO Ajout de syntaxe Modifications de syntaxe Passage d’un port requis ou fourni Retour par port requis ou fourni Assertion sur le type de retour 5 Gestion de projet 6 Conclusion Critiques Nos perspectives 6/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 6 /
  • 7. Focus sur le language COMPO Sommaire 1 Introduction 2 Focus sur le language COMPO Les descripteurs de composant Les ports Les connexions 3 R´eflexions sur les am´eliorations possibles de COMPO Les passages d’arguments Type de retour d’op´eration 4 Nos contributions `a COMPO Ajout de syntaxe Modifications de syntaxe Passage d’un port requis ou fourni Retour par port requis ou fourni Assertion sur le type de retour 5 Gestion de projet 6 Conclusion Critiques Nos perspectives 7/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 7 /
  • 8. Focus sur le language COMPO Focus sur le language COMPO Langage d´evelopp´e par Petr SPACEK dans sa th`ese [Design and Implementation of a Reflective Component-oriented Programming and Modeling Language, 2013]. Bas´e sur SmallTalk R´eflexif Le langage permet de Expliciter le requis Programmer pour et par la r´eutilisation 8/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 8 /
  • 9. Focus sur le language COMPO L’id´ee de programmation orient´ee composants 9/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 9 /
  • 10. Focus sur le language COMPO Les descripteurs de composant Architecture du langage COMPO Figure: M´etamod`ele du langage COMPO [Petr SPACEK, Design and Implementation of a Reflective Component-oriented Programming and Modeling Language, 2013] 10/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 10
  • 11. Focus sur le language COMPO Les descripteurs de composant Informations pr´esentes dans un descripteur Le requis : Ce dont un composant a besoin pour fonctionner. Le fourni : Il s’agit des services que le composant d´ecrit propose. Architecture interne : Les composants peuvent ˆetre eux-mˆemes compos´es d’autres composants. On parle alors de composites. Les services : D´ecrit la logique m´etier des composants. Listing 1 – Syntaxe g´en´erale d’un descripteur 1 <Meta-descripteur> <Descripteur> extends <Super-descripteur>{ 2 requires { } 3 provides { } 4 architecture { } 5 <Services> 6 } 11/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 11
  • 12. Focus sur le language COMPO Les ports Les ports Visibilit´e Interne / Externe Cardinalit´e Simple / Multiple Rˆole Fourni : liste les signatures de services offerts par un composant. Requis : liste les signatures de services requis par le composant. Liste de signatures de services Ports par d´efauts Un port fourni externe par d´efaut nomm´e default. Un port requis externe multiple nomm´e args. Un port requis interne nomm´e self. Un port requis interne nomm´e super 12/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 12
  • 13. R´eflexions sur les am´eliorations possibles de COMPO Sommaire 1 Introduction 2 Focus sur le language COMPO Les descripteurs de composant Les ports Les connexions 3 R´eflexions sur les am´eliorations possibles de COMPO Les passages d’arguments Type de retour d’op´eration 4 Nos contributions `a COMPO Ajout de syntaxe Modifications de syntaxe Passage d’un port requis ou fourni Retour par port requis ou fourni Assertion sur le type de retour 5 Gestion de projet 6 Conclusion Critiques Nos perspectives 13/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 13
  • 14. R´eflexions sur les am´eliorations possibles de COMPO Les passages d’arguments Passage d’un port fourni Figure: Exemple lors d’un passage d’un port fourni en argument `a o : avant modification de rAC . 14/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 14
  • 15. R´eflexions sur les am´eliorations possibles de COMPO Les passages d’arguments Passage d’un port fourni : apr`es ex´ecution de exec Figure: Exemple lors d’un passage d’un port fourni en argument `a o : apr`es modification de rAC . 15/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 15
  • 16. R´eflexions sur les am´eliorations possibles de COMPO Les passages d’arguments Passage d’un port requis Figure: Exemple lors d’un passage d’un port requis en argument `a o : avant modification de rAC . 16/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 16
  • 17. R´eflexions sur les am´eliorations possibles de COMPO Les passages d’arguments Passage d’un port requis : apr`es ex´ecution de exec Figure: Exemple lors d’un passage d’un port requis en argument `a o : apr`es modification de rAC . 17/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 17
  • 18. R´eflexions sur les am´eliorations possibles de COMPO Type de retour d’op´eration Retour d’un port fourni Figure: Cas du retour d’un port fourni : on renvoie `a l’appelant un port requis anonyme connect´e `a ce port . 18/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 18
  • 19. R´eflexions sur les am´eliorations possibles de COMPO Type de retour d’op´eration Retour d’un port requis Figure: Cas du retour d’un port requis : on renvoie `a l’appelant le port requis . 19/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 19
  • 20. Nos contributions `a COMPO Sommaire 1 Introduction 2 Focus sur le language COMPO Les descripteurs de composant Les ports Les connexions 3 R´eflexions sur les am´eliorations possibles de COMPO Les passages d’arguments Type de retour d’op´eration 4 Nos contributions `a COMPO Ajout de syntaxe Modifications de syntaxe Passage d’un port requis ou fourni Retour par port requis ou fourni Assertion sur le type de retour 5 Gestion de projet 6 Conclusion Critiques Nos perspectives 20/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 20
  • 21. Nos contributions `a COMPO Ajout de syntaxe Ajout de syntaxe Connexion d’un port requis `a un litt´eral Listing 2 – Syntaxe d’une connexion `a un litt´eral 1 connect compteurVal@self to 1; 2 connect compteurVal@self to 3.14; 3 connect compteurVal@self to ’Hello World’; Section de code SmallTalk dans COMPO Listing 3 – Syntaxe d’une primitive smalltalk en COMPO 1 <! 2 Transcript crShow: ’Hello’. 3 > 21/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 21
  • 22. Nos contributions `a COMPO Modifications de syntaxe Modifications de syntaxe Faire une connexion avec le mot cl´e >>> Listing 4 – Ancienne et nouvelle syntaxe d’une connexion 1 connect compteurVal@self to 1; "Ancienne syntaxe" 2 compteurVal >>> 1; "Nouvelle syntaxe" D´efinir un service avec le mot cl´e operation Listing 5 – Ancienne et nouvelle syntaxe d’un service 1 service foo() { 2 "Ancienne syntaxe" 3 } 4 5 operation foo() { 6 "Nouvelle syntaxe" 7 } 22/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 22
  • 23. Nos contributions `a COMPO Passage d’un port requis ou fourni Passage d’un port requis ou fourni Soient a et var des ports requis. var est connect´e `a un port fourni. Listing 6 – Syntaxe du passage d’un port fourni en COMPO 1 a.foo(var); Listing 7 – Syntaxe du passage d’un port requis en COMPO 1 a.foo(!var); 23/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 23
  • 24. Nos contributions `a COMPO Retour par port requis ou fourni Retour par port requis ou fourni Soit portInterne un port requis connect´e `a un port fourni. Listing 8 – Syntaxe de retour d’un port requis en COMPO 1 operation foo() { 2 return !portInterne; 3 } Listing 9 – Syntaxe de retour d’un port fourni en COMPO 1 operation foo() { 2 return portInterne; 3 } 24/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 24
  • 25. Nos contributions `a COMPO Assertion sur le type de retour Assertion sur le type de retour Soit portInterne un port requis connect´e `a un port fourni. Listing 10 – Assertion de renvoie d’un port requis 1 operation foo() :req { 2 return !portInterne; 3 } Listing 11 – Assertion de renvoie d’un port fourni 1 operation foo() :pro { 2 return portInterne; 3 } 25/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 25
  • 26. Gestion de projet Sommaire 1 Introduction 2 Focus sur le language COMPO Les descripteurs de composant Les ports Les connexions 3 R´eflexions sur les am´eliorations possibles de COMPO Les passages d’arguments Type de retour d’op´eration 4 Nos contributions `a COMPO Ajout de syntaxe Modifications de syntaxe Passage d’un port requis ou fourni Retour par port requis ou fourni Assertion sur le type de retour 5 Gestion de projet 6 Conclusion Critiques Nos perspectives 26/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 26
  • 27. Gestion de projet Gestion de projet Gestion de projet agile. R´eunion hebdomadaire avec M. Dony. Un rapport livr´e `a chaque r´eunion. Une d´emonstration de nos ajouts les plus r´ecents. R´epartition des tˆaches suivants trois grands axes : Anthony Ferrand : Syntaxe et gestion du parser Lucas Nelaupe : Invocations de services et rapport Fr´ed´eric Verdier : R´eflexions th´eoriques, interface graphique et supervision 27/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 27
  • 28. Conclusion Sommaire 1 Introduction 2 Focus sur le language COMPO Les descripteurs de composant Les ports Les connexions 3 R´eflexions sur les am´eliorations possibles de COMPO Les passages d’arguments Type de retour d’op´eration 4 Nos contributions `a COMPO Ajout de syntaxe Modifications de syntaxe Passage d’un port requis ou fourni Retour par port requis ou fourni Assertion sur le type de retour 5 Gestion de projet 6 Conclusion Critiques Nos perspectives 28/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 28
  • 29. Conclusion Conclusion Plusieurs modes de connexion pour plusieurs comportements du programme. Plusieurs mani`eres de choisir un mode connexion (instruction de connexion, passage d’argument, retour d’op´eration). Augmentation de la syntaxe et impl´ementation des diff´erents modes de connexion en COMPO pour illustrer ces comportements. 29/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 29
  • 30. Conclusion Critiques Critiques V´erification de compatibilit´e incompl`ete. Pas d’expression du requis sur les arguments d’op´erations Couche r´eflexive incompl`ete Impossibilit´e de recompiler les descripteurs du coeur du langage. Mot cl´e @ brise l’encapsulation dans les op´erations. 30/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 30
  • 31. Conclusion Nos perspectives Nos perspectives Court terme Continuer la v´erification de compatibilit´e Impl´ementer la connexion partag´ee Moyen terme Impl´ementer les op´erations de la couche r´eflexive Interdire l’acc`es `a un port distant auquel on n’est pas connect´e Long terme Extraire COMPO de Pharo 31/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 31
  • 32. Conclusion Nos perspectives Bibliographie [1] Petr SPACEK. Design and Implementation of a Reflective Component-oriented Programming and Modeling Language. 2013. [2] Pert Spacek Christophe Dony Chouki Tibermacine, Luc Fabresse. ”An Inheritance System for Structural & Behavioral Reuse in Component-based Software Programming”. 2012. [3] Lukas Renggli Jan Kurs, Guillaume Larcheveque. PetitParser : Building Modular Parsers. [4] Christelle Urtado Sylvain Vauttier Marianne Huchard Huaxi (Yulin) Zhang, Lei Zhang. A three-level component model in component-based software development. 32/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 32
  • 33. Conclusion Nos perspectives Merci, Nous allons maintenant faire une d´emonstration du syst`eme COMPO. 33/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 f´evrier 2015 33