Scub Foundation, usine logicielle Java libre

download Scub Foundation, usine logicielle Java libre

of 78

  • date post

    14-Jun-2015
  • Category

    Technology

  • view

    5.345
  • download

    1

Embed Size (px)

description

Une usine logicielle est un ensemble d’outils pré-configurés, de frameworks, de conventions, de processus, de documentations et de modèles de projets qui structurent les développeurs et leurs développements. L’objectif est d’automatiser au maximum la production et la maintenance des applications afin d’améliorer leur qualité et le « time to market ».

Transcript of Scub Foundation, usine logicielle Java libre

  • 1. Scub FoundationUsine logicielle Java librehttp://www.scub-foundation.orgStphane Traumathttp://about.me/straumat

2. Agenda Qui sommes nous ? Dveloppement logiciel : notre constat. Les tapes dun projet. Prsentation de larchitecture SOA. Quest-ce quune usine logicielle ? Outil cl : Maven. Dveloppement dun projet. Outils tiers. Questions. 3. Qui sommesnous ? 4. Notre mtier & notre objectif Scub : spcialis dans le dveloppementJava et lOpen Source. Notre mtier : Fournir du conseil et desapplications sur mesure afin de rsoudre lesproblmes de nos clients. Notre objectif : Acclrer la transformationdes ides de nos clients en solutionslogicielles. 5. Nos moyens Une quipe de 20 personnes base Angoulme (2h15 de Paris) et spcialisedans le dveloppement au forfait. 10 ans de ralisation de projets et demaintenance dapplications. Membre du groupe Arrow, 120 personnesbases Paris, Londres, Bruxelles, LaRochelle, Angoulme et Tunis. 6. Dveloppementlogiciel : notreconstat 7. Un constat : Deux difficults grer Le dveloppementLe dveloppement doit tre doit tre incrmentalindustrialispour grer lespour grer laincertitudes.complexit.Scrum Scub Foundation 8. Les tapes dunprojet 9. tape 1 : Maquettage avec le clientRalisation de maquettes avec le client etses utilisateurs. Avantage 1 : On se met daccord avec leclient sur ce quil veut. Avantage 2 : On implique les utilisateursfinaux dans le projet. Avantage 3 : Pas deffet tunnel. 10. Maquette dcran ralise avec Balsamiq (http://www.balsamiq.com/) 11. tape 2 : Rdaction du cahier deschargescriture collaborative du cahier des chargesdans un wiki. Avantage 1 : Travail en commun sur unmme document. Avantage 2 : Pas dchange de documentspar email. Avantage 3 : Gestion des versions et desauteurs. 12. Cahier des charges du projet ralis avec Dokuwiki (http://www.dokuwiki.org) 13. tape 3 : Dcoupage et planificationDcoupage en lots du projet, planificationdes lots, livraison et dmonstration toutesles 4 semaines. Avantage 1 : Dmarrage rapide. Avantage 2 : Possibilit dadapter le projetau fur et mesure. Avantage 3 : Pas deffet tunnel. 14. tape 4 : Livraison en productionMise en place du projet sur les serveurs deproduction du client par nos quipes dedveloppement. 15. Prsentation delarchitectureSOA 16. Principe des architectures SOAMettre en place une Architecture OrientService (SOA) consiste btir des services(fonctions) qui vont pouvoir tre utiliss parlensemble du systme dinformation.Exemple : Une fonction creerDevis() qui vapermettre nimporte quelle application dusystme dinformation (CRM, site web,applications mobiles, extranet...) de crer undevis. 17. Architecture SOA 18. Schma du systme dinformation de lun de nos clients 19. Architecture oriente serviceAvantages Avantage 1 : Une fonction ainsi dveloppeest utilisable par toutes les applications etdans tous les langages. Avantage 2 : Le service ntant dveloppquune fois, il est plus simple de contrler saqualit et de valider son fonctionnement. Avantage 3 : Les dveloppeurs "utilisateurs"nont pas connatre limplmentation(rduction de la complexit). 20. Quest ce quuneusine logicielle ? 21. Notre dfinition dune usinelogicielleUne usine logicielle est un ensemble doutilspr-configurs, de frameworks, deconventions, de processus, dedocumentations et de modles de projetsqui structurent les dveloppeurs et leursdveloppements.Lobjectif est dautomatiser la production et lamaintenance des applications afin damliorerleur qualit et le time to market . 22. Objectifs de lusine logicielle (1/3) Ne pas rinventer la roue en intgrant lemeilleur de lOpen Source (Eclipse, Jetty,Hibernate, Spring, GWT, JUnit). Disposer de modles de projets pour chaquetype dapplications (noyau, web, mobile)avec, chaque fois, une structurestandardise (configuration, scripts dalimentations, scurit). 23. Objectifs de lusine logicielle (2/3) Avoir des tches automatises pour lensemble des processus du cycle de vie duprojet. Gestion automatique des dpendances /librairies / versions. Gestion des diffrents environnements et deleurs configurations (Test / Dveloppement /Pr production / Production). 24. Objectifs de lusine logicielle (3/3) Dveloppement SOA (Architecture OrientService). Une documentation complte qui permet un dveloppeur de se mettre rapidement autravail. Ceci afin de grer la croissance desquipes et le turn-over. 25. Outil cl : Maven 26. 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. 27. Maven - Fonctionnalits Permet de dfinir la configuration dun projetdans un fichier XML (qui peut lui mmehriter dun autre fichier). Permet de forcer les dveloppeurs utiliserune structure de projet et des tachescommunes. Permet de grer les dpendances vers desprojets externe ou interne. 28. Exemple de fichier de configuration Maven 29. Structure des dossiers dun projet Maven 30. Tches dun projet Maven 31. Gestion des dpendances avec Maven 32. Dveloppementdun projet 33. Dveloppement dun projetCration du projet via MavenLe socle propose un ensemble de modles deprojets : Noyau de service. Application GWT. Application Spring MVC. Application webservices. Application batch.Nous allons dvelopper un lot de service ! 34. Choix de larchetype de projet 35. Dveloppement dun projetNoyau de service = deux projetscore-interfacescore-implementationsContient seulementContientles interfaces services limplmentation deet les DTO changescore-interfaces.par ces interfaces. 36. Dveloppement dun noyauStructure des deux projetscore-interfaces core-implementations 37. Dveloppement dun noyauCouche base de donnes 38. Dveloppement dun noyauCouche base de donnesGre le stockage des donnes (select,update, delete et insert seulement).En production : PostgreSQL prfr.En dveloppement : HyperSQL.Avantages : Indpendance vis vis de la basede donnes. 39. Dveloppement dun noyauCouche modle 40. Dveloppement dun noyauCouche modleReprsente les donnes persistantes delapplication avec des objets Java simples.Utilisation dHibernate pour grer le mappingObjet / Relationnel.Avantages : Non intrusif / Indpendance. 41. Dveloppement dun noyauCode source du modle 42. Dveloppement dun noyauCouche daccs aux donnes 43. Dveloppement dun noyauCouche daccs aux donnesAbstrait et encapsule laccs aux donnes.Utilisation dHibernate et Spring.Avantages : Dcouplage entre interfaces etimplmentations mais aussi sparation ducode mtier et du code technique. 44. Dveloppement dun noyauInterface du DAO 45. Dveloppement dun noyauImplmentation du DAO 46. Dveloppement dun noyauDclaration du DAO 47. Dveloppement dun noyauCouche service 48. Dveloppement dun noyauCouche serviceContient la logique mtier de lapplication.Elle utilise la couche DAO pour accder auxdonnes. Elle est teste grace JUnit etEclemma.Couche indpendante des technologies sous-jacentes. 49. Dveloppement dun noyauDclaration du DTO 50. Dveloppement dun noyauDclaration de linterface 51. Dveloppement dun noyaucriture du test 52. Dveloppement dun noyauImplmentation du service 53. Dveloppement dun noyauDclaration du service 54. Dveloppement dun noyauConfiguration gnral 55. Dveloppement dun noyauConfiguration dun environnement 56. Dveloppement dun noyauFichier de configuration 57. Dveloppement dun noyauExemple de surchargefilter.properties du rpertoire 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..*.*(..) 58. Dveloppement dun noyauExemple de donnes de tests 59. Dveloppement dun noyauTches du projetLusine propose un ensemble de taches pour,par exemple : La compilation. Le lancement des tests. Le packaging. Le dploiement. Linitialisation de la base de donnes. 60. Dveloppement dun noyauCouche Applications 61. Dveloppement dun noyauAvantages dune couche service Centralisation de la logique mtier. Rutilisation du code. Qualit plus facile a grer. Simplification de la programmation pour lesdveloppeurs dinterfaces utilisateurs. Interfaces Java + DTO = Indpendance destechnologies 62. 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 scnarios. 63. Tests de scnario utilisateursRalisation de tests avec Selenium IDE.Permet de simuler lutilisation de lapplication etde valider son bon fonctionnement. Avantage : Permet de valider des scnariosclassiques (ex : validation dune adhsioncomplte pour une mutuelle).A la fois en recette et en production. 64. Dveloppement dapplicationsTests des interfaces utilisateurs 65. Outils tiers 66. Outils tiersPlugins eclipse pr installsCheckstyle : Vrification de rgles de basessur lcriture du code.Eclemma : Permet de voir quelles parties ducode est couverte par les tests. 67. Outils tiersCheckstyle 68. Outils tiersEclemma 69. Outils tiersTravail en quipeLes sources sont centralises sur notreserveur de source SVN (Subversion).Les demandes (bugs, modifications et ajouts)sont gres via Mantis.Le rfrentiel Maven de lentreprise estArtifactory. 70. Outils tiersJenkins : Intgration continueJenkins est un outil dintgration continue,il vrifie de mani