33
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/

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

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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