ingénierie dirigée par les modèles cas du projet de la...

29
1 Ingénierie dirigée par les modèles Cas du projet de la plateforme OpenUSS Outil : AndroMDA Plateforme : OpenUSS Alain Corbière

Upload: others

Post on 05-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

1

Ingénierie dirigée par les modèlesCas du projet de la plateforme OpenUSS

Outil : AndroMDAPlateforme : OpenUSS

Alain Corbière

Page 2: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

2

● Le contexte ;● Une ingénierie dirigée par les modèles ;

● Des modèles ;● Le processus dirigé par les modèles ;● Un cas d'illustration.

● Évolution du projet OpenUSS/Évolution du projet AndroMDA.

Page 3: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

3

● Le contexte

Page 4: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

4

● Le contexte● Projets de plateformes de formation à distance

– Moodle (GPL): ingénierie centrée activité pédagogique ;● http://moodle.org/stats/ (703 114 utilisateurs)

– Sakai project/foundation (ECL): ingénierie centrée fléxibilité ;● http://bugs.sakaiproject.org/confluence/display/SBCO/Sakai+Partners+Program+2005+Budget (Budget de $820,000)

– LAMS foundation (GPL): ingénierie centrée scénario d'apprentissage ;● http://lamsfoundation.org/ (142 sénarios)

– OpenUSS (GPL*): ingénierie dirigée par les modèles ;● http://openuss.svn.sourceforge.net/viewvc /openuss/tags/openuss-plexus-3.0-M1

/openuss-plexus/plexus/plexus-model/src/main/uml/ (29 diagrammes de classes/d'implémentation/de cas d'utilisation/d'état)

– ...

Page 5: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

5

● Le contexte● De faire collaborer les acteurs des différents projets

de plateformes de formation ;– Informaticiens ;– Administrateurs ;– Concepteurs de cours ;– Étudiants.

Page 6: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

6

● Ingénierie dirigée par les modèles: une réponse● Des modèles ;

– Spécifier différents aspects/points de vue ;– Positionner à un niveau d'abstraction donné ;– Utiliser différents langages/formalismes de représentation ;– Définir de nouveaux aspects.

● Un processus dirigé par les modèles.– Comprendre cette ingénierie ;– Intégrer de nouveaux aspects/points de vue ;– Négocier/diffuser ces modifications.

Page 7: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

7

● Des modèles / un processus dirigé par les modèles ;

Page 8: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

8

● Un processus dirigé par les modèles ;

CodeTnModèle

Page 9: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

9

Modèle

TnTn

Annotation T1 Modèle T2 Applicationmétier T4

SpringT3

Hibernate

JavaT5

T3

T6 applicationContext.xml

T7 *.hbm.xml

T8 *.java

● Un processus dirigé par les modèles ;

Page 10: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

10

● Cas d'illustration:● Besoin d'observer le comportement de l'activité Discussion ;● Intégration d'un composant dans OpenUSS ;

– En considérant le modèle de conception ;– En considérant le processus dirigé par les modèles .

Page 11: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

11

● Cas d'illustration:● En considérant le modèle de conception d'OpenUSS

– Nous agissons au premier niveau de transformation (T6) ;

Annotation T1 Modèle T2 Applicationmétier T4

SpringT3

Hibernate

JavaT5

T3

T6 applicationContext.xml

T7 *.hbm.xml

T8 *.java

Page 12: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

12

● Cas d'illustration:● En considérant le modèle de conception d'OpenUSS

– Nous ajoutons une règle dans le processus de transformation ;● context.xml.vsl (génère le fichier applicationContext.xml)

– http://openuss.svn.sourceforge.net/viewvc/openuss/tags/openuss-plexus-3.0-M1 /openuss-plexus/tools/andromda/templates/spring/context.xml.vsl

<list> ...#if ($entity.getBeanName(false).equals("discussionService")) <value>jamonPerformanceMonitorInterceptor</value>#end </list>

Page 13: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

13

● Cas d'illustration:● En considérant le modèle de conception d'OpenUSS

– Nous ajoutons une règle dans le processus de transformation ;● context.xml.vsl (génère le fichier applicationContext.xml)

– http://openuss.svn.sourceforge.net/viewvc/openuss/tags/openuss-plexus-3.0-M1 /openuss-plexus/tools/andromda/templates/spring/context.xml.vsl

Couplage faible : Principe d'architecture logicielle pour minimiser l'impact d'une modification dans la structure d'un système.

<list> ...#if ($entity.getBeanName(false).equals("discussionService")) <value>jamonPerformanceMonitorInterceptor</value>#end </list>

Page 14: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

14

● Cas d'illustration: ● En considérant le modèle de conception d'OpenUSS

<list> ...#if ($entity.getBeanName(false).equals("discussionService")) <value>jamonPerformanceMonitorInterceptor</value>#end </list>

Annotation Modèle Applicationmétier

Spring

Hibernate

Java

applicationContext.xml

*.hbm.xml

*.java

T2

T6

T3T3

T1

Page 15: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

15

● Cas d'illustration:● Le processus dirigé par les modèles d'OpenUSS (AndroMDA)

intègre un ensemble de composants (Cartridge) pour définir les éléments transformés et les règles à respecter ;

Annotation T1 Modèle T2 Applicationmétier T4

SpringT3

Hibernate

JavaT5

T3

T6 applicationContext.xml

T7 *.hbm.xml

T8 *.java

Page 16: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

16

● Cas d'illustration: ● Le processus dirigé par les modèles d'OpenUSS (AndroMDA) utilise

un modèle de représentation : Les diagrammes UML ;

Annotation T1 Modèle T2 Applicationmétier T4

SpringT3

Hibernate

JavaT5

T3

T6 applicationContext.xml

T7 *.hbm.xml

T8 *.java

Page 17: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

17

● Cas d'illustration:● Le processus dirigé par les modèles d'OpenUSS (AndroMDA) utilise

le système d'annotation des diagrammes UML (stéréotypes/balises/.) ;

Annotation T1 Modèle T2 Applicationmétier T4

SpringT3

Hibernate

JavaT5

T3

T6 applicationContext.xml

T7 *.hbm.xml

T8 *.java

Page 18: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

18

● Cas d'illustration:● Processus dirigé par les modèles d'OpenUSS ;

– http://openuss.svn.sourceforge.net/viewvc/openuss/tags/openuss-plexus-3.0-M1

/openuss-plexus/plexus/plexus-model/pom.xml

<properties><andromda.config>andromda.xml</andromda.config><model.uri>

jar:file:${project.build.sourceDirectory}/plexus.xml.zip!/plexus.xml</model.uri><filter></filter><validation>true</validation><conf.dir>${pom.basedir}/src/main/config</conf.dir><web.application.name>openuss</web.application.name><!-- cartridge output locations --><api.generated.dir>

${pom.basedir}/../plexus-api/target/src</api.generated.dir>...

<properties>

T3 T4 T5

T6 T7 T8

T1 T2

²

Annotation T1 Modèle T2 Applicationmétier T4

SpringT3

Hibernate

JavaT5

T3

T6 applicationContext.xml

T7 *.hbm.xml

T8 *.java

Page 19: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

19

²

Annotation T1 Modèle T2 Applicationmétier T4

SpringT3

Hibernate

JavaT5

T3

T6 applicationContext.xml

T7 *.hbm.xml

T8 *.java● Cas d'illustration:● En considérant le processus dirigé par les modèles d'OpenUSS

– Nous agissons au niveau de la transformation (T1) ;● http://galaxy.andromda.org/docs-3.2/andromda-spring-cartridge/profile.html

Page 20: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

20

● Cas d'illustration:● Observer le comportement de l'activité Discussion ;

²

Annotation T1 Modèle T2 Applicationmétier T4

SpringT3

Hibernate

JavaT5

T3

T6 applicationContext.xml

T7 *.hbm.xml

T8 *.java

Page 21: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

21

● Cas d'illustration: ● Comprendre le modèle ;

<<Service>>DiscussionService

{@andromda.spring.service.interceptors=jamonPerformanceMonitorInterceptor, }

+getForum( domainObject : DomainObject ) : ForumInfo

+removeAttachment( post : PostInfo, file : FileInfo ) : void

+createTopic( post : PostInfo, forum : ForumInfo ) : void

+addAttachment( post : PostInfo, file : FileInfo ) : void

+addPost( post : PostInfo, topic : TopicInfo ) : void

+removeForumWatch( forum : ForumInfo ) : void

+watchesForum( forum : ForumInfo ) : boolean

+removeTopicWatch( topic : TopicInfo ) : void+addForumWatch( forum : ForumInfo ) : void

+changeEditState( forum : ForumInfo ) : void

+watchesTopic( topic : TopicInfo ) : boolean

+changeEditState( topic : TopicInfo ) : void

+addTopicWatch( topic : TopicInfo ) : void

+getAttachments( post : PostInfo ) : List

+getTopic( topic : TopicInfo ) : TopicInfo

+addForum( forum : ForumInfo ) : void

+deleteTopic( topic : TopicInfo ) : void

+getTopics( forum : ForumInfo ) : List

+getPost( post : PostInfo ) : PostInfo+updatePost( post : PostInfo ) : void+deletePost( post : PostInfo ) : void

+getPosts( topic : TopicInfo ) : List

+addHit( topic : TopicInfo ) : void

²

Annotation T1 Modèle T2 Applicationmétier T4

SpringT3

Hibernate

JavaT5

T3

T6 applicationContext.xml

T7 *.hbm.xml

T8 *.java

Page 22: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

22

● Cas d'illustration: ● Comprendre le modèle (dépendances) ;

<<Service>>DiscussionService

{@andromda.spring.service.interceptors=jamonPerformanceMonitorInterceptor, }

+getForum( domainObject : DomainObject ) : ForumInfo

+removeAttachment( post : PostInfo, file : FileInfo ) : void

+createTopic( post : PostInfo, forum : ForumInfo ) : void

+addAttachment( post : PostInfo, file : FileInfo ) : void

+addPost( post : PostInfo, topic : TopicInfo ) : void

+removeForumWatch( forum : ForumInfo ) : void

+watchesForum( forum : ForumInfo ) : boolean

+removeTopicWatch( topic : TopicInfo ) : void+addForumWatch( forum : ForumInfo ) : void

+changeEditState( forum : ForumInfo ) : void

+watchesTopic( topic : TopicInfo ) : boolean

+changeEditState( topic : TopicInfo ) : void

+addTopicWatch( topic : TopicInfo ) : void

+getAttachments( post : PostInfo ) : List

+getTopic( topic : TopicInfo ) : TopicInfo

+addForum( forum : ForumInfo ) : void

+deleteTopic( topic : TopicInfo ) : void

+getTopics( forum : ForumInfo ) : List

+getPost( post : PostInfo ) : PostInfo+updatePost( post : PostInfo ) : void+deletePost( post : PostInfo ) : void

+getPosts( topic : TopicInfo ) : List

+addHit( topic : TopicInfo ) : void <<Service>>DocumentService

<<Service>>MessageService

<<Service>>TrackingService

<<Service>>SecurityService

<<Service>>SystemService

²

Annotation T1 Modèle T2 Applicationmétier T4

SpringT3

Hibernate

JavaT5

T3

T6 applicationContext.xml

T7 *.hbm.xml

T8 *.java

Page 23: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

23

● Cas d'illustration: ● Comprendre le modèle (dépendances) ;

²

Annotation T1 Modèle T2 Applicationmétier T4

SpringT3

Hibernate

JavaT5

T3

T6 applicationContext.xml

T7 *.hbm.xml

T8 *.java

<<Service>>DocumentService

+getFolderEntries( domainObject : DomainObject, folder : FolderInfo ) : List

+createFileEntries( fileEntries : Collection, parentInfo : FolderInfo ) : void

+getFolder( owner : DomainObject, folderInfo : FolderInfo ) : FolderInfo

+getFileEntry( fileId : Long, withInputStream : boolean ) : FileInfo

+diffSave( domainObject : DomainObject, fileInfos : List ) : void

+createFileEntry( fileInfo : FileInfo, parent : FolderInfo ) : void+createFolder( folder : FolderInfo, parent : FolderInfo ) : void

+getFolder( domainObject : DomainObject ) : FolderInfo

+removeFolderEntries( folderEntries : Collection ) : void

+getFileEntries( domainObject : DomainObject ) : List

+removeFolderEntry( folderEntryId : Long ) : void

+getFolder( folder : FolderEntryInfo ) : FolderInfo

+remove( domainObject : DomainObject ) : void

+removeFileEntries( entries : Collection ) : void

+getFolder( folder : FolderInfo ) : FolderInfo

+allFileEntries( entries : Collection ) : List

+getFolderPath( folder : FolderInfo ) : List

+saveFileEntry( fileInfo : FileInfo ) : void

+saveFolder( folder : FolderInfo ) : void

Page 24: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

24

● Cas d'illustration: ● Comprendre le modèle

(entités concernées) ;<<Service>>

DiscussionService{@andromda.spring.service.interceptors=jamonPerformanceMonitorInterceptor, }

+getForum( domainObject : DomainObject ) : ForumInfo

+removeAttachment( post : PostInfo, file : FileInfo ) : void

+createTopic( post : PostInfo, forum : ForumInfo ) : void

+addAttachment( post : PostInfo, file : FileInfo ) : void

+addPost( post : PostInfo, topic : TopicInfo ) : void

+removeForumWatch( forum : ForumInfo ) : void

+watchesForum( forum : ForumInfo ) : boolean

+removeTopicWatch( topic : TopicInfo ) : void+addForumWatch( forum : ForumInfo ) : void

+changeEditState( forum : ForumInfo ) : void

+watchesTopic( topic : TopicInfo ) : boolean

+changeEditState( topic : TopicInfo ) : void

+addTopicWatch( topic : TopicInfo ) : void

+getAttachments( post : PostInfo ) : List

+getTopic( topic : TopicInfo ) : TopicInfo

+addForum( forum : ForumInfo ) : void

+deleteTopic( topic : TopicInfo ) : void

+getTopics( forum : ForumInfo ) : List

+getPost( post : PostInfo ) : PostInfo+updatePost( post : PostInfo ) : void+deletePost( post : PostInfo ) : void

+getPosts( topic : TopicInfo ) : List

+addHit( topic : TopicInfo ) : void

<<Entity>>ForumWatch

{@andromda.persistence.table=DISCUSSION_FORUMWATCH, @andromda.hibernate.entity.cache=read-write}

<<Entity>>DiscussionWatch

{@andromda.persistence.table=DISCUSSION_TOPICWATCH, @andromda.hibernate.entity.cache=read-write}

<<Entity>>Forum

{@andromda.persistence.table=DISCUSSION_FORUM, @andromda.hibernate.entity.cache=read-write}

<<Entity>>Topic

{@andromda.persistence.table=DISCUSSION_TOPIC, @andromda.hibernate.entity.cache=read-write}

<<Entity>>Post

{@andromda.persistence.table=DISCUSSION_POST, @andromda.hibernate.entity.cache=read-write}

²

Annotation T1 Modèle T2 Applicationmétier T4

SpringT3

Hibernate

JavaT5

T3

T6 applicationContext.xml

T7 *.hbm.xml

T8 *.java

Page 25: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

25

● Cas d'illustration: ● Confronter le modèle OpenUSS / le modèle Moodle ;

²

Annotation T1 Modèle T2 Applicationmétier T4

SpringT3

Hibernate

JavaT5

T3

T6 applicationContext.xml

T7 *.hbm.xml

T8 *.java

0..1

<<Entity>>Forum

<<Entity>>Topic

+topics*

+forum

<<Entity>>Post

0..1

+topic

*

+posts

- Diagramme de classe UML - - Modèle logique de la base de données -

Page 26: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

26

Annotation T1 Modèle T2 Applicationmétier T4

SpringT3

Hibernate

JavaT5

T3

T6 applicationContext.xml

T7 *.hbm.xml

T8 *.java

● Bilan sur le projet OpenUSS/AndroMDA:● Extension du processus dirigé par les modèles ;

Ajouter un nouveau composant

Séparation des responsabilités : Principe d'architecturelogicielle s'obligeant de séparer clairement le rôle de chacun des composants.

Page 27: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

27

Annotation T1 Modèle T2 Applicationmétier T4

SpringT3

Hibernate

JavaT5

T3

T6 applicationContext.xml

T7 *.hbm.xml

T8 *.java

● Bilan sur le projet OpenUSS/AndroMDA:● Comprendre/Simuler un modèle ;

Expérimenter les balises

Page 28: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

28

Annotation T1 Modèle T2 Applicationmétier T4

SpringT3

Hibernate

JavaT5

T3

T6 applicationContext.xml

T7 *.hbm.xml

T8 *.java

● Bilan sur le projet OpenUSS/AndroMDA:● Évoluer vers de nouveaux paradigmes ;

Évoluer d'un langage statique vers un langage dynamique (Grails/GORM)

Page 29: Ingénierie dirigée par les modèles Cas du projet de la ...2009.rmll.info/IMG/pdf/openuss_rmll2009-OpenUSS.pdf2 Le contexte ; Une ingénierie dirigée par les modèles ; Des modèles

29

● ConclusionÉvolution du projet OpenUSS = Évolution du projet AndroMDA

● Plus d'agilité ...● ... dynamique …● … définir de nouveau formalisme ... ● … facile à lire … à maintenir ...● … facile à tester …● … intègre les pratiques des professionnelles ...

?