Rex Flex Spring & Agilité*
    Toulouse JUG - 21 avril 2011




 Nicolas Deverge – Bert Poller
                                   * Et des chats
>qui sommes-nous ?
Nicolas – Architecte Java, Agiliste
twitter.com/ndeverge

Bert – Architecte Java
skype: bpoller
>contexte
• Diatta Consulting
• Ingénierie en restauration collective
>architecture client
• Flex – On n’est pas expert
>architecture client
• Flex – On n’est pas expert
• PureMVC ++
>architecture client
• Flex – On n’est pas expert
• PureMVC ++
• Codage Maison : Automapper VO<->DTO,
  Cache DTO
>architecture client
• Flex – On n’est pas expert
• PureMVC ++
• Codage Maison : Automapper VO<->DTO,
  Cache DTO
• Découpage en modules
>architecture client
• Flex – On n’est pas expert
• PureMVC ++
• Codage Maison : Automapper VO<->DTO,
  Cache DTO
• Découpage en modules
• Remoting avec BlazeDS
Vues          VO
                        *.mxml
Présentation,
Logique des vues
et métier

                    Mediators
                    Mediators                             Commands
                                                          Commands



Façade,
Logique technique   ActionHandler/                          Gestion de           Gestion de
                                      VO Mapping
                        Actions                             notification          modules


Gestion de
données                                    API d’appels
                     Proxies
                    Proxies                asynchrones


                    Remote Services
                    Remote Services         DTO                            Notification
Services d’appel
au serveur                                                                 Notification de vue
(générés)
                                                                           Retour asynchrone

                                                                           Appel directe
>architecture client/ Agilité
What’s hot ?
•Graphisme vectoriel, animations
•ActionScript et MXML simples à apprendre
>architecture client/ Agilité
What’s hot ?
•Graphisme vectoriel, animations
•ActionScript et MXML simples à apprendre

What’s not ?
•Temps de compilation
•Refactoring assez limité
•Adobe Flashbuilder 4 sous Windows et Mac (pas
Linux)
>architecture serveur
•Au début MDA (Xtext, Acceleo)
•Spring 3 – IoC classique
•Full Hibernate 3.6 - mapping en hbm.xml
>architecture serveur
•Au début MDA (Xtext, Acceleo)
•Spring 3 – IoC classique
•Full Hibernate 3.6 - mapping en hbm.xml
•Spring-Flex
   •Intégration BlazeDS, Spring-Security, Log4j
>architecture serveur
•Au début MDA (Xtext, Acceleo)
•Spring 3 – IoC classique
•Full Hibernate 3.6 - mapping en hbm.xml
•Spring-Flex
   •Intégration BlazeDS, Spring-Security, Log4j
•Dozer : mapping domain <-> DTO
>architecture serveur
•Au début MDA (Xtext, Acceleo)
•Spring 3 – IoC classique
•Full Hibernate 3.6 - mapping en hbm.xml
•Spring-Flex
   •Intégration BlazeDS, Spring-Security, Log4j
•Dozer : mapping domain <-> DTO
•DataProviders codés maison
>architecture serveur
•Au début MDA (Xtext, Acceleo)
•Spring 3 – IoC classique
•Full Hibernate 3.6 - mapping en hbm.xml
•Spring-Flex
   •Intégration BlazeDS, Spring-Security, Log4j
•Dozer : mapping domain <-> DTO
•DataProviders codés maison
•HSQLDB en dev+test, MySQL en prod
BlazeDS




          DTO
Façade




          Domain
Service



 DAO



 BDD
>architecture serveur
Flyway :   - initialisation du schéma bdd
           - migration des données
>architecture serveur
Flyway :      - initialisation du schéma bdd
              - migration des données
en sql :             et      en java :




       import org.springframework.jdbc.core.JdbcTemplate;
       import com.googlecode.flyway.core.migration.java.JavaMigration;

       /**Example of a Java-based migration.*/
       public class V1_2__Another_user implements JavaMigration {
       public void migrate(final JdbcTemplate jdbcTemplate) throws Exception {
       jdbcTemplate.execute("INSERT INTO test_user (name) VALUES ('Obelix')");
         }
       }
>architecture serveur/ Agilité
What’s hot ?
•Flyway (migration de schéma bdd)
•Data Provider (données métier, TU)
>architecture serveur/ Agilité
What’s hot ?
•Flyway (migration de schéma bdd)
•Data Provider (données métier, TU)
What’s not ?
•Mille feuilles
•Xml a go go <-> @Entity + @AutoWired
>scrum/ Agilité
>scrum/ Agilité
What’s hot ?
•Radiateur d’information (post-it)
•Daily scrum
•Revue de sprint
•Gizmo
>scrum/ Agilité
What’s hot ?
•Radiateur d’information (post-it)
•Daily scrum
•Revue de sprint
•Gizmo
What’s not ?
•Rétrospective
•Adoption du support informatique
(GreenHopper)
•Product owner proxy
>build
>build
What’s hot ?
•Maven profiles
•Intégration continue
•Documentation intégrée (mvn site, umlGraphDoc)
•Conception émergente
>build/ Agilité
What’s hot ?
•Maven profiles
•Intégration continue
•Documentation intégrée (mvn site, umlGraphDoc)
•Conception émergente

What’s not ?
•Adoption limitée de TDD
•Pas assez de TU
>références
•   Chats : lolcats.com, icanhascheezburger.com
•   Tag cloud : www.tagxedo.com
•   Diatta Consulting : www.diatta-consulting.com
•   Flyway : code.google.com/p/flyway
•   PureMVC : puremvc.org
•   Spring Source : www.springsource.com
•   Hibernate : www.hibernate.org
•   UMLGraph : www.umlgraph.org
>copyright



Présentation sous licence
  Creative Commons CC BY-NC 2.0
  creativecommons.org/licenses/by-nc/2.0/fr/

ToulouseJUG - REX Flex, Spring & Agilité

  • 1.
    Rex Flex Spring& Agilité* Toulouse JUG - 21 avril 2011 Nicolas Deverge – Bert Poller * Et des chats
  • 3.
    >qui sommes-nous ? Nicolas– Architecte Java, Agiliste twitter.com/ndeverge Bert – Architecte Java skype: bpoller
  • 4.
    >contexte • Diatta Consulting •Ingénierie en restauration collective
  • 5.
    >architecture client • Flex– On n’est pas expert
  • 6.
    >architecture client • Flex– On n’est pas expert • PureMVC ++
  • 7.
    >architecture client • Flex– On n’est pas expert • PureMVC ++ • Codage Maison : Automapper VO<->DTO, Cache DTO
  • 8.
    >architecture client • Flex– On n’est pas expert • PureMVC ++ • Codage Maison : Automapper VO<->DTO, Cache DTO • Découpage en modules
  • 9.
    >architecture client • Flex– On n’est pas expert • PureMVC ++ • Codage Maison : Automapper VO<->DTO, Cache DTO • Découpage en modules • Remoting avec BlazeDS
  • 10.
    Vues VO *.mxml Présentation, Logique des vues et métier Mediators Mediators Commands Commands Façade, Logique technique ActionHandler/ Gestion de Gestion de VO Mapping Actions notification modules Gestion de données API d’appels Proxies Proxies asynchrones Remote Services Remote Services DTO Notification Services d’appel au serveur Notification de vue (générés) Retour asynchrone Appel directe
  • 11.
    >architecture client/ Agilité What’shot ? •Graphisme vectoriel, animations •ActionScript et MXML simples à apprendre
  • 12.
    >architecture client/ Agilité What’shot ? •Graphisme vectoriel, animations •ActionScript et MXML simples à apprendre What’s not ? •Temps de compilation •Refactoring assez limité •Adobe Flashbuilder 4 sous Windows et Mac (pas Linux)
  • 13.
    >architecture serveur •Au débutMDA (Xtext, Acceleo) •Spring 3 – IoC classique •Full Hibernate 3.6 - mapping en hbm.xml
  • 14.
    >architecture serveur •Au débutMDA (Xtext, Acceleo) •Spring 3 – IoC classique •Full Hibernate 3.6 - mapping en hbm.xml •Spring-Flex •Intégration BlazeDS, Spring-Security, Log4j
  • 15.
    >architecture serveur •Au débutMDA (Xtext, Acceleo) •Spring 3 – IoC classique •Full Hibernate 3.6 - mapping en hbm.xml •Spring-Flex •Intégration BlazeDS, Spring-Security, Log4j •Dozer : mapping domain <-> DTO
  • 16.
    >architecture serveur •Au débutMDA (Xtext, Acceleo) •Spring 3 – IoC classique •Full Hibernate 3.6 - mapping en hbm.xml •Spring-Flex •Intégration BlazeDS, Spring-Security, Log4j •Dozer : mapping domain <-> DTO •DataProviders codés maison
  • 17.
    >architecture serveur •Au débutMDA (Xtext, Acceleo) •Spring 3 – IoC classique •Full Hibernate 3.6 - mapping en hbm.xml •Spring-Flex •Intégration BlazeDS, Spring-Security, Log4j •Dozer : mapping domain <-> DTO •DataProviders codés maison •HSQLDB en dev+test, MySQL en prod
  • 18.
    BlazeDS DTO Façade Domain Service DAO BDD
  • 19.
    >architecture serveur Flyway : - initialisation du schéma bdd - migration des données
  • 20.
    >architecture serveur Flyway : - initialisation du schéma bdd - migration des données en sql : et en java : import org.springframework.jdbc.core.JdbcTemplate; import com.googlecode.flyway.core.migration.java.JavaMigration; /**Example of a Java-based migration.*/ public class V1_2__Another_user implements JavaMigration { public void migrate(final JdbcTemplate jdbcTemplate) throws Exception { jdbcTemplate.execute("INSERT INTO test_user (name) VALUES ('Obelix')"); } }
  • 21.
    >architecture serveur/ Agilité What’shot ? •Flyway (migration de schéma bdd) •Data Provider (données métier, TU)
  • 22.
    >architecture serveur/ Agilité What’shot ? •Flyway (migration de schéma bdd) •Data Provider (données métier, TU) What’s not ? •Mille feuilles •Xml a go go <-> @Entity + @AutoWired
  • 23.
  • 24.
    >scrum/ Agilité What’s hot? •Radiateur d’information (post-it) •Daily scrum •Revue de sprint •Gizmo
  • 25.
    >scrum/ Agilité What’s hot? •Radiateur d’information (post-it) •Daily scrum •Revue de sprint •Gizmo What’s not ? •Rétrospective •Adoption du support informatique (GreenHopper) •Product owner proxy
  • 26.
  • 27.
    >build What’s hot ? •Mavenprofiles •Intégration continue •Documentation intégrée (mvn site, umlGraphDoc) •Conception émergente
  • 28.
    >build/ Agilité What’s hot? •Maven profiles •Intégration continue •Documentation intégrée (mvn site, umlGraphDoc) •Conception émergente What’s not ? •Adoption limitée de TDD •Pas assez de TU
  • 30.
    >références • Chats : lolcats.com, icanhascheezburger.com • Tag cloud : www.tagxedo.com • Diatta Consulting : www.diatta-consulting.com • Flyway : code.google.com/p/flyway • PureMVC : puremvc.org • Spring Source : www.springsource.com • Hibernate : www.hibernate.org • UMLGraph : www.umlgraph.org
  • 31.
    >copyright Présentation sous licence Creative Commons CC BY-NC 2.0 creativecommons.org/licenses/by-nc/2.0/fr/