Scub FoundationUsine logicielle Java librehttp://www.scub-foundation.orgStéphane Traumathttp://about.me/straumat
Agenda●   Qui sommes nous ?●   Développement logiciel : notre constat.●   Les étapes dun projet.●   Présentation de larchi...
Qui sommesnous ?
Notre métier & notre objectif● Scub : spécialisé dans le développement  Java et lOpen Source.● Notre métier : Fournir du c...
Nos moyens● Une équipe de 20 personnes basée à  Angoulême (2h15 de Paris) et spécialisée  dans le développement au forfait...
Nos locaux à Angoulême
Développementlogiciel : notreconstat
Un constat : Deux difficultés à gérer Le développement    Le développement       doit être           doit être     incréme...
Les étapes dunprojet
Étape 1 : Maquettage avec le clientRéalisation de maquettes avec le client etses utilisateurs.● Avantage 1 : On se met dac...
Maquette décran réalisée avec Balsamiq (http://www.balsamiq.com/)
Étape 2 : Rédaction du cahier deschargesÉcriture collaborative du cahier des chargesdans un wiki.● Avantage 1 : Travail en...
Cahier des charges du projet réalisé avec Dokuwiki (http://www.dokuwiki.org)
Étape 3 : Découpage et planificationDécoupage en lots du projet, planificationdes lots, livraison et démonstration toutesl...
Étape 4 : Livraison en productionMise en place du projet sur les serveurs deproduction du client par nos équipes dedévelop...
Présentation delarchitectureSOA
Principe des architectures SOAMettre en place une Architecture OrientéService (SOA) consiste à bâtir des services(fonction...
Architecture SOA
Schéma du système dinformation de lun de nos clients
Architecture orientée serviceAvantages● Avantage 1 : Une fonction ainsi développée  est utilisable par toutes les applicat...
Quest ce quuneusine logicielle ?
Notre définition dune usinelogicielleUne usine logicielle est un ensemble d’outilspré-configurés, de frameworks, deconvent...
Objectifs de lusine logicielle (1/3)● Ne pas réinventer la roue en intégrant le  meilleur de l’Open Source (Eclipse, Jetty...
Objectifs de lusine logicielle (2/3)● Avoir des tâches automatisées pour l’  ensemble des processus du cycle de vie du  pr...
Objectifs de lusine logicielle (3/3)● Développement SOA (Architecture Orienté  Service).● Une documentation complète qui p...
Outil clé : Maven
Un outil structurant : MavenMaven est un outil pour la gestion etlautomatisation de la production des projetslogiciels.Lob...
Maven - Fonctionnalités● Permet de définir la configuration dun projet  dans un fichier XML (qui peut lui même  hériter du...
Exemple de fichier de configuration Maven
Structure des dossiers dun projet Maven
Tâches dun projet Maven
Gestion des dépendances avec Maven
Développementdun projet
Développement dun projetCréation du projet via MavenLe socle propose un ensemble de modèles deprojets :● Noyau de service....
Choix de larchetype de projet
Développement dun projetNoyau de service = deux projets    core-interfaces        core-implementationsContient seulement  ...
Développement dun noyauStructure des deux projetscore-interfaces   core-implementations
Développement dun noyauCouche base de données
Développement dun noyauCouche base de donnéesGère le stockage des données (select,update, delete et insert seulement).En p...
Développement dun noyauCouche modèle
Développement dun noyauCouche modèleReprésente les données persistantes delapplication avec des objets Java simples.Utilis...
Développement dun noyauCode source du modèle
Développement dun noyauCouche daccès aux données
Développement dun noyauCouche daccès aux donnéesAbstrait et encapsule laccès aux données.Utilisation dHibernate et Spring....
Développement dun noyauInterface du DAO
Développement dun noyauImplémentation du DAO
Développement dun noyauDéclaration du DAO
Développement dun noyauCouche service
Développement dun noyauCouche serviceContient la logique métier de lapplication.Elle utilise la couche DAO pour accéder au...
Développement dun noyauDéclaration du DTO
Développement dun noyauDéclaration de linterface
Développement dun noyauÉcriture du test
Développement dun noyauImplémentation du service
Développement dun noyauDéclaration du service
Développement dun noyauConfiguration général
Développement dun noyauConfiguration dun environnement
Développement dun noyauFichier de configuration
Développement dun noyauExemple de surchargefilter.properties du répertoire test#Configuration dbcpdatabase.connection.driv...
Développement dun noyauExemple de données de tests
Développement dun noyauTâches du projetLusine propose un ensemble de taches pour,par exemple :● La compilation.● Le lancem...
Développement dun noyauCouche Applications
Développement dun noyauAvantages dune couche service● Centralisation de la logique métier.● Réutilisation du code.● Qualit...
Dernier pointLes tests du noyau nous permettent de validerlensemble des services.Cependant, des surprises peuvent arriver,...
Tests de scénario utilisateursRéalisation de tests avec Selenium IDE.Permet de simuler lutilisation de lapplication etde v...
Développement dapplicationsTests des interfaces utilisateurs
Outils tiers
Outils tiersPlugins eclipse pré installésCheckstyle : Vérification de règles de basessur lécriture du code.Eclemma : Perme...
Outils tiersCheckstyle
Outils tiersEclemma
Outils tiersTravail en équipeLes sources sont centralisées sur notreserveur de source SVN (Subversion).Les demandes (bugs,...
Outils tiersJenkins : Intégration continueJenkins est un outil dintégration continue,il vérifie de manière automatique que...
Outils tiersJenkins : Intégration continue
Outils tiersJenkins : Schéma de build
Outils tiersJenkins : Création dun job
Outils tiersJenkins : Paramétrage du build
Prochain SlideShare
Chargement dans…5
×

Presentation du socle technique Java open source Scub Foundation

19 423 vues

Publié le

Scub Foundation est un ensemble de frameworks, de conventions, d'outils et de procédures qui structurent les développeurs et leurs développements. Pour simplifier, c'est une plateforme qui permet l'industrialisation des projets de développement informatique.
Plus d'informations à http://www.scub-foundation.org

Objectifs du socle
- Ne pas réinventer la roue ! (Intégration d'Eclipse et des frameworks populaires comme hibernate, spring, gwt, JUnit…).
- Avoir des modèles de projets pour chaque type de projet mais avec des structures identiques.
- Avoir des tâches automatisées pour l'ensemble du cycle de vie du projet (compilation, packaging, test…).
- Développement SOA (intégration de la notion de noyau et du découplage Interface/implémentation).
- Gestion automatique des dépendances / librairies.
- Gérer les différents environnements (Test / Développement / Pré production / Production…).

Concrètement, notre socle technique offre au développeur un environnement de développement intégrant les meilleurs éléments Open Source (Eclipse, Maven, Spring, GWT…) ainsi que des modèles de projet.

Publié dans : Technologie, Formation
1 commentaire
3 j’aime
Statistiques
Remarques
Aucun téléchargement
Vues
Nombre de vues
19 423
Sur SlideShare
0
Issues des intégrations
0
Intégrations
14 214
Actions
Partages
0
Téléchargements
183
Commentaires
1
J’aime
3
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Presentation du socle technique Java open source Scub Foundation

  1. 1. Scub FoundationUsine logicielle Java librehttp://www.scub-foundation.orgStéphane Traumathttp://about.me/straumat
  2. 2. Agenda● Qui sommes nous ?● Développement logiciel : notre constat.● Les étapes dun projet.● Présentation de larchitecture SOA.● Quest-ce quune usine logicielle ?● Outil clé : Maven.● Développement dun projet.● Outils tiers.● Questions.
  3. 3. Qui sommesnous ?
  4. 4. Notre métier & notre objectif● Scub : spécialisé dans le développement Java et lOpen Source.● Notre métier : Fournir du conseil et des applications sur mesure afin de résoudre les problèmes de nos clients.● Notre objectif : Accélérer la transformation des idées de nos clients en solutions logicielles.
  5. 5. Nos moyens● Une équipe de 20 personnes basée à Angoulême (2h15 de Paris) et spécialisée dans le développement au forfait.● 10 ans de réalisation de projets et de maintenance dapplications.● Membre du groupe Arrow, 120 personnes basées à Paris, Londres, Bruxelles, La Rochelle, Angoulême et Tunis.
  6. 6. Nos locaux à Angoulême
  7. 7. Développementlogiciel : notreconstat
  8. 8. Un constat : Deux difficultés à gérer Le développement Le développement doit être doit être incrémental industrialisé pour gérer les pour gérer la incertitudes. complexité. Scrum Scub Foundation
  9. 9. Les étapes dunprojet
  10. 10. Étape 1 : Maquettage avec le clientRéalisation de maquettes avec le client etses utilisateurs.● Avantage 1 : On se met daccord avec le client sur ce quil veut.● Avantage 2 : On implique les utilisateurs finaux dans le projet.● Avantage 3 : Pas deffet tunnel.
  11. 11. Maquette décran réalisée avec Balsamiq (http://www.balsamiq.com/)
  12. 12. Étape 2 : Rédaction du cahier deschargesÉcriture collaborative du cahier des chargesdans un wiki.● Avantage 1 : Travail en commun sur un même document.● Avantage 2 : Pas déchange de documents par email.● Avantage 3 : Gestion des versions et des auteurs.
  13. 13. Cahier des charges du projet réalisé avec Dokuwiki (http://www.dokuwiki.org)
  14. 14. Étape 3 : Découpage et planificationDécoupage en lots du projet, planificationdes lots, livraison et démonstration toutesles 4 semaines.● Avantage 1 : Démarrage rapide.● Avantage 2 : Possibilité dadapter le projet au fur et à mesure.● Avantage 3 : Pas deffet tunnel.
  15. 15. Étape 4 : Livraison en productionMise en place du projet sur les serveurs deproduction du client par nos équipes dedéveloppement.
  16. 16. Présentation delarchitectureSOA
  17. 17. Principe des architectures SOAMettre en place une Architecture OrientéService (SOA) consiste à bâtir des services(fonctions) qui vont pouvoir être utilisés parlensemble du système dinformation.Exemple : Une fonction creerDevis() qui vapermettre à nimporte quelle application dusystème dinformation (CRM, site web,applications mobiles, extranet...) de créer undevis.
  18. 18. Architecture SOA
  19. 19. Schéma du système dinformation de lun de nos clients
  20. 20. Architecture orientée serviceAvantages● Avantage 1 : Une fonction ainsi développée est utilisable par toutes les applications et dans tous les langages.● Avantage 2 : Le service nétant développé quune fois, il est plus simple de contrôler sa qualité et de valider son fonctionnement.● Avantage 3 : Les développeurs "utilisateurs" nont pas à connaître limplémentation (réduction de la complexité).
  21. 21. Quest ce quuneusine logicielle ?
  22. 22. Notre définition dune usinelogicielleUne usine logicielle est un ensemble d’outilspré-configurés, de frameworks, deconventions, de processus, dedocumentations et de modèles de projetsqui structurent les développeurs et leursdéveloppements.L’objectif est d’automatiser la production et lamaintenance des applications afin d’améliorerleur qualité et le « time to market ».
  23. 23. Objectifs de lusine logicielle (1/3)● Ne pas réinventer la roue en intégrant le meilleur de l’Open Source (Eclipse, Jetty, Hibernate, Spring, GWT, JUnit…).● Disposer de modèles de projets pour chaque type d’applications (noyau, web, mobile…) avec, à chaque fois, une structure standardisée (configuration, scripts d’ alimentations, sécurité…).
  24. 24. Objectifs de lusine logicielle (2/3)● Avoir des tâches automatisées pour l’ ensemble des processus du cycle de vie du projet.● Gestion automatique des dépendances / librairies / versions.● Gestion des différents environnements et de leurs configurations (Test / Développement / Pré production / Production…).
  25. 25. Objectifs de lusine logicielle (3/3)● Développement SOA (Architecture Orienté Service).● Une documentation complète qui permet à un développeur de se mettre rapidement au travail. Ceci afin de gérer la croissance des équipes et le turn-over.
  26. 26. Outil clé : Maven
  27. 27. Un outil structurant : MavenMaven est un outil pour la gestion etlautomatisation de la production des projetslogiciels.Lobjectif de Maven est de simplifier leprocessus de fabrication dun logiciel.
  28. 28. Maven - Fonctionnalités● Permet de définir la configuration dun projet dans un fichier XML (qui peut lui même hériter dun autre fichier).● Permet de forcer les développeurs à utiliser une structure de projet et des taches communes.● Permet de gérer les dépendances vers des projets externe ou interne.
  29. 29. Exemple de fichier de configuration Maven
  30. 30. Structure des dossiers dun projet Maven
  31. 31. Tâches dun projet Maven
  32. 32. Gestion des dépendances avec Maven
  33. 33. Développementdun projet
  34. 34. Développement dun projetCréation du projet via MavenLe socle propose un ensemble de modèles deprojets :● Noyau de service.● Application GWT.● Application Spring MVC.● Application webservices.● Application batch.Nous allons développer un îlot de service !
  35. 35. Choix de larchetype de projet
  36. 36. Développement dun projetNoyau de service = deux projets core-interfaces core-implementationsContient seulement Contientles interfaces services limplémentation deet les DTO échangées core-interfaces.par ces interfaces.
  37. 37. Développement dun noyauStructure des deux projetscore-interfaces core-implementations
  38. 38. Développement dun noyauCouche base de données
  39. 39. Développement dun noyauCouche base de donnéesGère le stockage des données (select,update, delete et insert seulement).En production : PostgreSQL préféré.En développement : HyperSQL.Avantages : Indépendance vis à vis de la basede données.
  40. 40. Développement dun noyauCouche modèle
  41. 41. Développement dun noyauCouche modèleReprésente les données persistantes delapplication avec des objets Java simples.Utilisation dHibernate pour gérer le mappingObjet / Relationnel.Avantages : Non intrusif / Indépendance.
  42. 42. Développement dun noyauCode source du modèle
  43. 43. Développement dun noyauCouche daccès aux données
  44. 44. Développement dun noyauCouche daccès aux donnéesAbstrait et encapsule laccès aux données.Utilisation dHibernate et Spring.Avantages : Découplage entre interfaces etimplémentations mais aussi séparation ducode métier et du code technique.
  45. 45. Développement dun noyauInterface du DAO
  46. 46. Développement dun noyauImplémentation du DAO
  47. 47. Développement dun noyauDéclaration du DAO
  48. 48. Développement dun noyauCouche service
  49. 49. Développement dun noyauCouche serviceContient la logique métier de lapplication.Elle utilise la couche DAO pour accéder auxdonnées. Elle est testée grace à JUnit etEclemma.Couche indépendante des technologies sous-jacentes.
  50. 50. Développement dun noyauDéclaration du DTO
  51. 51. Développement dun noyauDéclaration de linterface
  52. 52. Développement dun noyauÉcriture du test
  53. 53. Développement dun noyauImplémentation du service
  54. 54. Développement dun noyauDéclaration du service
  55. 55. Développement dun noyauConfiguration général
  56. 56. Développement dun noyauConfiguration dun environnement
  57. 57. Développement dun noyauFichier de configuration
  58. 58. Développement dun noyauExemple de surchargefilter.properties du répertoire test#Configuration dbcpdatabase.connection.driver_class=org.hsqldb.jdbcDriverdatabase.connection.url=jdbc:hsqldb:hsql://localhost:9015/testdatabase.connection.username=sadatabase.connection.password=#Configuration Hibernatehibernate.query.substitutions=true 1, false 0, yes Y, no Nhibernate.show_sql=falsehibernate.use_sql_comments=truehibernate.hbm2ddl.auto=createhibernate.dialect=org.hibernate.dialect.HSQLDialecthibernate.search.default.directory_provider=org.hibernate.search.store.RAMDirectoryProvider#CONFIGURATION MONITORINGmonitoring.enable=falsemonitoring.patterns=* org.scub.foundation.contact.manager.core.*.service.interfaces..*.*(..)
  59. 59. Développement dun noyauExemple de données de tests
  60. 60. Développement dun noyauTâches du projetLusine propose un ensemble de taches pour,par exemple :● La compilation.● Le lancement des tests.● Le packaging.● Le déploiement.● Linitialisation de la base de données.
  61. 61. Développement dun noyauCouche Applications
  62. 62. Développement dun noyauAvantages dune couche service● Centralisation de la logique métier.● Réutilisation du code.● Qualité plus facile a gérer.● Simplification de la programmation pour les développeurs dinterfaces utilisateurs.● Interfaces Java + DTO = Indépendance des technologies
  63. 63. Dernier pointLes tests du noyau nous permettent de validerlensemble des services.Cependant, des surprises peuvent arriver,notamment en production, et certaines ne sontpas de notre fait (serveur en panne,applications tierces down...)Il nous faut donc valider des scénarios.
  64. 64. Tests de scénario utilisateursRéalisation de tests avec Selenium IDE.Permet de simuler lutilisation de lapplication etde valider son bon fonctionnement.● Avantage : Permet de valider des scénarios classiques (ex : validation dune adhésion complète pour une mutuelle). A la fois en recette et en production.
  65. 65. Développement dapplicationsTests des interfaces utilisateurs
  66. 66. Outils tiers
  67. 67. Outils tiersPlugins eclipse pré installésCheckstyle : Vérification de règles de basessur lécriture du code.Eclemma : Permet de voir quelles parties ducode est couverte par les tests.
  68. 68. Outils tiersCheckstyle
  69. 69. Outils tiersEclemma
  70. 70. Outils tiersTravail en équipeLes sources sont centralisées sur notreserveur de source SVN (Subversion).Les demandes (bugs, modifications et ajouts)sont gérées via Mantis.Le référentiel Maven de lentreprise estArtifactory.
  71. 71. Outils tiersJenkins : Intégration continueJenkins est un outil dintégration continue,il vérifie de manière automatique que lesmodifications de code source nont pasgénérées de régressions de lapplication. Il vaaussi se charger des livraisons.Pour schématiser, tous les soirs, Jenkins varécupérer les sources et va lancer les tachesMaven pour construire, tester et livrer le projet.
  72. 72. Outils tiersJenkins : Intégration continue
  73. 73. Outils tiersJenkins : Schéma de build
  74. 74. Outils tiersJenkins : Création dun job
  75. 75. Outils tiersJenkins : Paramétrage du build
  76. 76. Outils tiersJenkins : Livraisons● Lignes de recette : Nouveaux développements livrés tous les vendredi (plusieurs lignes possibles).● Ligne de pré production : Version prêt à être déployée en production chez le client. Livraison tous les soirs.● Ligne de production : Version en production chez le client.
  77. 77. Outils tiersDivers● CAS pour le SSO.● Graylog pour la visualisation des logs.● Sonar pour la gestion de la qualité.● Jetty comme serveur dapplications.● Eclipse comme environnement de développement.● Dozer pour gérer le mapping entre objets du modèle et dto.● Oval pour les validations.
  78. 78. Questions
  79. 79. Questions ? http://www.arrow-group.eu http://www.scub.net http://www.scub-foundation.org http://twitter.com/straumat http://twitter.com/scub_franceStéphane Traumat : http://about.me/straumat

×