Upload
lucas34990
View
36
Download
0
Embed Size (px)
Citation preview
Analyse d’un langage de programmation reflexiforiente composantsEtude de COMPO
FERRAND Anthony NELAUPE Lucas VERDIER Frederic
Universite Montpellier II
24 fevrier 2015
1/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 1 / 33
Introduction
Sommaire
1 Introduction
2 Focus sur le language COMPOLes descripteurs de composantLes portsLes connexions
3 Reflexions sur les ameliorations possibles de COMPOLes passages d’argumentsType de retour d’operation
4 Nos contributions a COMPOAjout de syntaxeModifications de syntaxePassage d’un port requis ou fourniRetour par port requis ou fourniAssertion sur le type de retour
5 Gestion de projet
6 ConclusionCritiquesNos perspectives
2/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 2 / 33
Introduction
Introduction
Contexte : La reutilisabilite en developpement logiciel
Developper un logiciel est tres couteux (en temps et en argent)
Certains elements du programme sont redondants
Solution : Le paradigme composant qui facilite la reutilisation
Chaque partie du programme est cloisonnee
Un programme est un assemblage de composants
Un composant possede une ou plusieurs taches precises
Chaque composant doit indiquer
Ce qu’il fournit (provided)Ce dont il a besoin (required)
Objectif : Reutiliser les elements deja developpes
Programme moins sujet aux erreurs
Developpement plus rapide et donc moins couteux
3/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 3 / 33
Introduction
Definitions
Composant :
A run-time entity which provides and requires services throughports. [Petr SPACEK, Design and Implementation of aReflective Component-oriented Programming and ModelingLanguage, 2013]
Port :A port is a connection point (components are connected throughtheir ports) and a communication point.
[Chouki Tibermacine, Luc Fabresse, Pert Spacek, Christophe Dony, AnInheritance System for Structural & Behavioral Reuse inComponent-based Software Programming, 2012]
Connexion :Describes a binding from one to another port.
[Petr SPACEK, Design and Implementation of a ReflectiveComponent-oriented Programming and Modeling Language, 2013]
4/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 4 / 33
Introduction
Notre objectif
Participer au developpement du langage oriente composant : COMPO
Participer aux reflexions pour l’evolution du langage.
Contribuer a son amelioration
5/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 5 / 33
Introduction
Sommaire1 Introduction2 Focus sur le language COMPO
Les descripteurs de composantLes portsLes connexions
3 Reflexions sur les ameliorations possibles de COMPOLes passages d’argumentsType de retour d’operation
4 Nos contributions a COMPOAjout de syntaxeModifications de syntaxePassage d’un port requis ou fourniRetour par port requis ou fourniAssertion sur le type de retour
5 Gestion de projet6 Conclusion
CritiquesNos perspectives
6/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 6 / 33
Focus sur le language COMPO
Sommaire
1 Introduction
2 Focus sur le language COMPOLes descripteurs de composantLes portsLes connexions
3 Reflexions sur les ameliorations possibles de COMPOLes passages d’argumentsType de retour d’operation
4 Nos contributions a COMPOAjout de syntaxeModifications de syntaxePassage d’un port requis ou fourniRetour par port requis ou fourniAssertion sur le type de retour
5 Gestion de projet
6 ConclusionCritiquesNos perspectives
7/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 7 / 33
Focus sur le language COMPO
Focus sur le language COMPO
Langage developpe par Petr SPACEK dans sa these [Design andImplementation of a Reflective Component-oriented Programming andModeling Language, 2013].
Base sur SmallTalk
Reflexif
Le langage permet de
Expliciter le requisProgrammer pour et par la reutilisation
8/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 8 / 33
Focus sur le language COMPO
L’idee de programmation orientee composants
9/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 9 / 33
Focus sur le language COMPO Les descripteurs de composant
Architecture du langage COMPO
Figure: Metamodele du langage COMPO [Petr SPACEK, Design and Implementationof a Reflective Component-oriented Programming and Modeling Language, 2013]
10/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 10 / 33
Focus sur le language COMPO Les descripteurs de composant
Informations presentes dans un descripteur
Le requis : Ce dont un composant a besoin pour fonctionner.
Le fourni : Il s’agit des services que le composant decrit propose.
Architecture interne : Les composants peuvent etre eux-memes composesd’autres composants. On parle alors de composites.
Les services : Decrit la logique metier des composants.
Listing 1 – Syntaxe generale 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 fevrier 2015 11 / 33
Focus sur le language COMPO Les ports
Les ports
Visibilite
Interne / Externe
Cardinalite
Simple / Multiple
Role
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 defauts
Un port fourni externe par defaut nomme default.
Un port requis externe multiple nomme args.
Un port requis interne nomme self.
Un port requis interne nomme super
12/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 12 / 33
Reflexions sur les ameliorations possibles de COMPO
Sommaire
1 Introduction
2 Focus sur le language COMPOLes descripteurs de composantLes portsLes connexions
3 Reflexions sur les ameliorations possibles de COMPOLes passages d’argumentsType de retour d’operation
4 Nos contributions a COMPOAjout de syntaxeModifications de syntaxePassage d’un port requis ou fourniRetour par port requis ou fourniAssertion sur le type de retour
5 Gestion de projet
6 ConclusionCritiquesNos perspectives
13/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 13 / 33
Reflexions sur les ameliorations 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 modificationde rAC
.
14/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 14 / 33
Reflexions sur les ameliorations possibles de COMPO Les passages d’arguments
Passage d’un port fourni : apres execution de exec
Figure: Exemple lors d’un passage d’un port fourni en argument a o : apres modificationde rAC
.
15/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 15 / 33
Reflexions sur les ameliorations 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 modificationde rAC
.
16/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 16 / 33
Reflexions sur les ameliorations possibles de COMPO Les passages d’arguments
Passage d’un port requis : apres execution de exec
Figure: Exemple lors d’un passage d’un port requis en argument a o : apres modificationde rAC
.
17/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 17 / 33
Reflexions sur les ameliorations possibles de COMPO Type de retour d’operation
Retour d’un port fourni
Figure: Cas du retour d’un port fourni : on renvoie a l’appelant un port requis anonymeconnecte a ce port
.
18/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 18 / 33
Reflexions sur les ameliorations possibles de COMPO Type de retour d’operation
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 fevrier 2015 19 / 33
Nos contributions a COMPO
Sommaire
1 Introduction
2 Focus sur le language COMPOLes descripteurs de composantLes portsLes connexions
3 Reflexions sur les ameliorations possibles de COMPOLes passages d’argumentsType de retour d’operation
4 Nos contributions a COMPOAjout de syntaxeModifications de syntaxePassage d’un port requis ou fourniRetour par port requis ou fourniAssertion sur le type de retour
5 Gestion de projet
6 ConclusionCritiquesNos perspectives
20/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 20 / 33
Nos contributions a COMPO Ajout de syntaxe
Ajout de syntaxe
Connexion d’un port requis a un litteral
Listing 2 – Syntaxe d’une connexion a un litteral
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 fevrier 2015 21 / 33
Nos contributions a COMPO Modifications de syntaxe
Modifications de syntaxe
Faire une connexion avec le mot cle >>>
Listing 4 – Ancienne et nouvelle syntaxe d’une connexion
1 connect compteurVal@self to 1; "Ancienne syntaxe"
2 compteurVal >>> 1; "Nouvelle syntaxe"
Definir un service avec le mot cle 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 fevrier 2015 22 / 33
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 connecte 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 fevrier 2015 23 / 33
Nos contributions a COMPO Retour par port requis ou fourni
Retour par port requis ou fourni
Soit portInterne un port requis connecte 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 fevrier 2015 24 / 33
Nos contributions a COMPO Assertion sur le type de retour
Assertion sur le type de retour
Soit portInterne un port requis connecte 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 fevrier 2015 25 / 33
Gestion de projet
Sommaire
1 Introduction
2 Focus sur le language COMPOLes descripteurs de composantLes portsLes connexions
3 Reflexions sur les ameliorations possibles de COMPOLes passages d’argumentsType de retour d’operation
4 Nos contributions a COMPOAjout de syntaxeModifications de syntaxePassage d’un port requis ou fourniRetour par port requis ou fourniAssertion sur le type de retour
5 Gestion de projet
6 ConclusionCritiquesNos perspectives
26/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 26 / 33
Gestion de projet
Gestion de projet
Gestion de projet agile.
Reunion hebdomadaire avec M. Dony.Un rapport livre a chaque reunion.Une demonstration de nos ajouts les plus recents.
Repartition des taches suivants trois grands axes :
Anthony Ferrand : Syntaxe et gestion du parserLucas Nelaupe : Invocations de services et rapportFrederic Verdier : Reflexions theoriques, interface graphique et supervision
27/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 27 / 33
Conclusion
Sommaire
1 Introduction
2 Focus sur le language COMPOLes descripteurs de composantLes portsLes connexions
3 Reflexions sur les ameliorations possibles de COMPOLes passages d’argumentsType de retour d’operation
4 Nos contributions a COMPOAjout de syntaxeModifications de syntaxePassage d’un port requis ou fourniRetour par port requis ou fourniAssertion sur le type de retour
5 Gestion de projet
6 ConclusionCritiquesNos perspectives
28/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 28 / 33
Conclusion
Conclusion
Plusieurs modes de connexion pour plusieurs comportements du programme.
Plusieurs manieres de choisir un mode connexion (instruction de connexion,passage d’argument, retour d’operation).
Augmentation de la syntaxe et implementation des differents modes deconnexion en COMPO pour illustrer ces comportements.
29/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 29 / 33
Conclusion Critiques
Critiques
Verification de compatibilite incomplete.
Pas d’expression du requis sur les arguments d’operations
Couche reflexive incomplete
Impossibilite de recompiler les descripteurs du coeur du langage.
Mot cle @ brise l’encapsulation dans les operations.
30/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 30 / 33
Conclusion Nos perspectives
Nos perspectives
Court terme
Continuer la verification de compatibilite
Implementer la connexion partagee
Moyen terme
Implementer les operations de la couche reflexive
Interdire l’acces a un port distant auquelon n’est pas connecte
Long terme
Extraire COMPO de Pharo
31/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 31 / 33
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-basedSoftware 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 softwaredevelopment.
32/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 32 / 33
Conclusion Nos perspectives
Merci,Nous allons maintenant faire une demonstration du systeme COMPO.
33/33 Ferrand, Nelaupe, Verdier (UM2) Analyse de COMPO 24 fevrier 2015 33 / 33