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