Scub Foundation
Usine logicielle Java libre
http://www.scub-foundation.org
Stéphane Traumat
http://about.me/straumat
Agenda
● Qui sommes nous ?
● Développement logiciel : notre constat.
● Les étapes d'un projet.
● Présentation de l'archite...
Qui sommes
nous ?
Notre métier & notre objectif
● Scub : spécialisé dans le développement
Java et l'Open Source.
● Notre métier : Fournir du...
Nos moyens
● Une équipe de 20 personnes basée à
Angoulême (2h15 de Paris) et spécialisée
dans le développement au forfait....
Développement
logiciel : notre
constat
Un constat : Deux difficultés à gérer
Le développement
doit être
incrémental
pour gérer les
incertitudes.
Le développement...
Les étapes d'un
projet
Étape 1 : Maquettage avec le client
Réalisation de maquettes avec le client et
ses utilisateurs.
● Avantage 1 : On se met ...
Maquette d'écran réalisée avec Balsamiq (http://www.balsamiq.com/)
Écriture collaborative du cahier des charges
dans un wiki.
● Avantage 1 : Travail en commun sur un
même document.
● Avanta...
Cahier des charges du projet réalisé avec Dokuwiki (http://www.dokuwiki.org)
Découpage en lots du projet, planification
des lots, livraison et démonstration toutes
les 4 semaines.
● Avantage 1 : Déma...
Mise en place du projet sur les serveurs de
production du client par nos équipes de
développement.
Étape 4 : Livraison en ...
Présentation de
l'architecture
SOA
Principe des architectures SOA
Mettre en place une Architecture Orienté
Service (SOA) consiste à bâtir des services
(fonct...
Architecture SOA
Schéma du système d'information de l'un de nos clients
● Avantage 1 : Une fonction ainsi développée
est utilisable par toutes les applications et
dans tous les langages.
● Avant...
Qu'est ce qu'une
usine logicielle ?
Notre définition d'une usine
logicielle
Une usine logicielle est un ensemble d’outils
pré-configurés, de frameworks, de
co...
Objectifs de l'usine logicielle (1/3)
● Ne pas réinventer la roue en intégrant le
meilleur de l’Open Source (Eclipse, Jett...
Objectifs de l'usine logicielle (2/3)
● Avoir des tâches automatisées pour
l’ensemble des processus du cycle de vie du
pro...
Objectifs de l'usine logicielle (3/3)
● Développement SOA (Architecture Orienté
Service).
● Une documentation complète qui...
Outil clé : Maven
Un outil structurant : Maven
Maven est un outil pour la gestion et
l'automatisation de la production des projets
logiciels...
Maven - Fonctionnalités
● Permet de définir la configuration d'un projet
dans un fichier XML (qui peut lui même
hériter d'...
Exemple de fichier de configuration Maven
Structure des dossiers d'un projet Maven
Tâches d'un projet Maven
Gestion des dépendances avec Maven
Développement
d'un projet
Le socle propose un ensemble de modèles de
projets :
● Noyau de service.
● Application GWT.
● Application Spring MVC.
● Ap...
Choix de l'archetype de projet
Développement d'un projet
Noyau de service = deux projets
core-interfaces
Contient seulement
les interfaces services
et le...
Développement d'un noyau
Structure des deux projets
core-interfaces core-implementations
Développement d'un noyau
Couche base de données
Développement d'un noyau
Couche base de données
Gère le stockage des données (select,
update, delete et insert seulement)....
Développement d'un noyau
Couche modèle
Développement d'un noyau
Couche modèle
Représente les données persistantes de
l'application avec des objets Java simples.
...
Développement d'un noyau
Code source du modèle
Développement d'un noyau
Couche d'accès aux données
Développement d'un noyau
Couche d'accès aux données
Abstrait et encapsule l'accès aux données.
Utilisation d'Hibernate et ...
Développement d'un noyau
Interface du DAO
Développement d'un noyau
Implémentation du DAO
Développement d'un noyau
Déclaration du DAO
Développement d'un noyau
Couche service
Développement d'un noyau
Couche service
Contient la logique métier de l'application.
Elle utilise la couche DAO pour accéd...
Développement d'un noyau
Déclaration du DTO
Développement d'un noyau
Déclaration de l'interface
Développement d'un noyau
Écriture du test
Développement d'un noyau
Implémentation du service
Développement d'un noyau
Déclaration du service
Développement d'un noyau
Configuration général
Développement d'un noyau
Configuration d'un environnement
Développement d'un noyau
Fichier de configuration
Développement d'un noyau
Exemple de surcharge
filter.properties du répertoire test
#Configuration dbcp
database.connection...
Développement d'un noyau
Exemple de données de tests
Développement d'un noyau
Tâches du projet
L'usine propose un ensemble de taches pour,
par exemple :
● La compilation.
● Le...
Développement d'un noyau
Couche Applications
Développement d'un noyau
Avantages d'une couche service
● Centralisation de la logique métier.
● Réutilisation du code.
● ...
Dernier point
Les tests du noyau nous permettent de valider
l'ensemble des services.
Cependant, des surprises peuvent arri...
Tests de scénario utilisateurs
Réalisation de tests avec Selenium IDE.
Permet de simuler l'utilisation de l'application et...
Développement d'applications
Tests des interfaces utilisateurs
Outils tiers
Outils tiers
Plugins eclipse pré installés
Checkstyle : Vérification de règles de bases
sur l'écriture du code.
Eclemma : ...
Outils tiers
Checkstyle
Outils tiers
Eclemma
Outils tiers
Travail en équipe
Les sources sont centralisées sur notre
serveur de source SVN (Subversion).
Les demandes (b...
Outils tiers
Jenkins : Intégration continue
Jenkins est un outil d'intégration continue,
il vérifie de manière automatique...
Outils tiers
Jenkins : Intégration continue
Outils tiers
Jenkins : Schéma de build
Outils tiers
Jenkins : Création d'un job
Outils tiers
Jenkins : Paramétrage du build
Outils tiers
Jenkins : Livraisons
● Lignes de recette : Nouveaux
développements livrés tous les vendredi
(plusieurs lignes...
Outils tiers
Divers
● CAS pour le SSO.
● Graylog pour la visualisation des logs.
● Sonar pour la gestion de la qualité.
● ...
Questions
Questions ?
http://www.arrow-group.eu
http://www.scub.net
http://www.scub-foundation.org
http://twitter.com/straumat
http:...
Prochain SlideShare
Chargement dans…5
×

Scub Foundation, usine logicielle Java libre

7 726 vues

Publié le

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 ».

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
7 726
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4 356
Actions
Partages
0
Téléchargements
106
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Scub Foundation, usine logicielle Java libre

  1. 1. Scub Foundation Usine logicielle Java libre http://www.scub-foundation.org Stéphane Traumat http://about.me/straumat
  2. 2. Agenda ● Qui sommes nous ? ● Développement logiciel : notre constat. ● Les étapes d'un projet. ● Présentation de l'architecture SOA. ● Qu'est-ce qu'une usine logicielle ? ● Outil clé : Maven. ● Développement d'un projet. ● Outils tiers. ● Questions.
  3. 3. Qui sommes nous ?
  4. 4. Notre métier & notre objectif ● Scub : spécialisé dans le développement Java et l'Open 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 d'applications.
  6. 6. Développement logiciel : notre constat
  7. 7. Un constat : Deux difficultés à gérer Le développement doit être incrémental pour gérer les incertitudes. Le développement doit être industrialisé pour gérer la complexité. Scrum Scub Foundation
  8. 8. Les étapes d'un projet
  9. 9. Étape 1 : Maquettage avec le client Réalisation de maquettes avec le client et ses utilisateurs. ● Avantage 1 : On se met d'accord avec le client sur ce qu'il veut. ● Avantage 2 : On implique les utilisateurs finaux dans le projet. ● Avantage 3 : Pas d'effet tunnel.
  10. 10. Maquette d'écran réalisée avec Balsamiq (http://www.balsamiq.com/)
  11. 11. Écriture collaborative du cahier des charges dans 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. Étape 2 : Rédaction du cahier des charges
  12. 12. Cahier des charges du projet réalisé avec Dokuwiki (http://www.dokuwiki.org)
  13. 13. Découpage en lots du projet, planification des lots, livraison et démonstration toutes les 4 semaines. ● Avantage 1 : Démarrage rapide. ● Avantage 2 : Possibilité d'adapter le projet au fur et à mesure. ● Avantage 3 : Pas d'effet tunnel. Étape 3 : Découpage et planification
  14. 14. Mise en place du projet sur les serveurs de production du client par nos équipes de développement. Étape 4 : Livraison en production
  15. 15. Présentation de l'architecture SOA
  16. 16. Principe des architectures SOA Mettre en place une Architecture Orienté Service (SOA) consiste à bâtir des services (fonctions) qui vont pouvoir être utilisés par l'ensemble du système d'information. Exemple : Une fonction creerDevis() qui va permettre à n'importe qu'elle application du système d'information (CRM, site web, applications mobiles, extranet...) de créer un devis.
  17. 17. Architecture SOA
  18. 18. Schéma du système d'information de l'un de nos clients
  19. 19. ● 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é qu'une fois, il est plus simple de contrôler sa qualité et de valider son fonctionnement. ● Avantage 3 : Les développeurs "utilisateurs" n'ont pas à connaître l'implémentation (réduction de la complexité). Architecture orientée service Avantages
  20. 20. Qu'est ce qu'une usine logicielle ?
  21. 21. Notre définition d'une usine logicielle 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 la production et la maintenance des applications afin d’améliorer leur qualité et le « time to market ».
  22. 22. Objectifs de l'usine 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é…).
  23. 23. Objectifs de l'usine 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…).
  24. 24. Objectifs de l'usine 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.
  25. 25. Outil clé : Maven
  26. 26. Un outil structurant : Maven Maven est un outil pour la gestion et l'automatisation de la production des projets logiciels. L'objectif de Maven est de simplifier le processus de fabrication d'un logiciel.
  27. 27. Maven - Fonctionnalités ● Permet de définir la configuration d'un projet dans un fichier XML (qui peut lui même hériter d'un 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.
  28. 28. Exemple de fichier de configuration Maven
  29. 29. Structure des dossiers d'un projet Maven
  30. 30. Tâches d'un projet Maven
  31. 31. Gestion des dépendances avec Maven
  32. 32. Développement d'un projet
  33. 33. Le socle propose un ensemble de modèles de projets : ● Noyau de service. ● Application GWT. ● Application Spring MVC. ● Application webservices. ● Application batch. Nous allons développer un îlot de service ! Développement d'un projet Création du projet via Maven
  34. 34. Choix de l'archetype de projet
  35. 35. Développement d'un projet Noyau de service = deux projets core-interfaces Contient seulement les interfaces services et les DTO échangées par ces interfaces. core-implementations Contient l'implémentation de core-interfaces.
  36. 36. Développement d'un noyau Structure des deux projets core-interfaces core-implementations
  37. 37. Développement d'un noyau Couche base de données
  38. 38. Développement d'un noyau Couche base de données Gè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 base de données.
  39. 39. Développement d'un noyau Couche modèle
  40. 40. Développement d'un noyau Couche modèle Représente les données persistantes de l'application avec des objets Java simples. Utilisation d'Hibernate pour gérer le mapping Objet / Relationnel. Avantages : Non intrusif / Indépendance.
  41. 41. Développement d'un noyau Code source du modèle
  42. 42. Développement d'un noyau Couche d'accès aux données
  43. 43. Développement d'un noyau Couche d'accès aux données Abstrait et encapsule l'accès aux données. Utilisation d'Hibernate et Spring. Avantages : Découplage entre interfaces et implémentations mais aussi séparation du code métier et du code technique.
  44. 44. Développement d'un noyau Interface du DAO
  45. 45. Développement d'un noyau Implémentation du DAO
  46. 46. Développement d'un noyau Déclaration du DAO
  47. 47. Développement d'un noyau Couche service
  48. 48. Développement d'un noyau Couche service Contient la logique métier de l'application. Elle utilise la couche DAO pour accéder aux données. Elle est testée grace à JUnit et Eclemma. Couche indépendante des technologies sous- jacentes.
  49. 49. Développement d'un noyau Déclaration du DTO
  50. 50. Développement d'un noyau Déclaration de l'interface
  51. 51. Développement d'un noyau Écriture du test
  52. 52. Développement d'un noyau Implémentation du service
  53. 53. Développement d'un noyau Déclaration du service
  54. 54. Développement d'un noyau Configuration général
  55. 55. Développement d'un noyau Configuration d'un environnement
  56. 56. Développement d'un noyau Fichier de configuration
  57. 57. Développement d'un noyau Exemple de surcharge filter.properties du répertoire test #Configuration dbcp database.connection.driver_class=org.hsqldb.jdbcDriver database.connection.url=jdbc:hsqldb:hsql://localhost:9015/test database.connection.username=sa database.connection.password= #Configuration Hibernate hibernate.query.substitutions=true 1, false 0, yes 'Y', no 'N' hibernate.show_sql=false hibernate.use_sql_comments=true hibernate.hbm2ddl.auto=create hibernate.dialect=org.hibernate.dialect.HSQLDialect hibernate.search.default.directory_provider=org.hibernate.search.store.RAMDirectoryProvider #CONFIGURATION MONITORING monitoring.enable=false monitoring.patterns=* org.scub.foundation.contact.manager.core.*.service.interfaces..*.*(..)
  58. 58. Développement d'un noyau Exemple de données de tests
  59. 59. Développement d'un noyau Tâches du projet L'usine propose un ensemble de taches pour, par exemple : ● La compilation. ● Le lancement des tests. ● Le packaging. ● Le déploiement. ● L'initialisation de la base de données.
  60. 60. Développement d'un noyau Couche Applications
  61. 61. Développement d'un noyau Avantages d'une 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 d'interfaces utilisateurs. ● Interfaces Java + DTO = Indépendance des technologies
  62. 62. Dernier point Les tests du noyau nous permettent de valider l'ensemble des services. Cependant, des surprises peuvent arriver, notamment en production, et certaines ne sont pas de notre fait (serveur en panne, applications tierces down...) Il nous faut donc valider des scénarios.
  63. 63. Tests de scénario utilisateurs Réalisation de tests avec Selenium IDE. Permet de simuler l'utilisation de l'application et de valider son bon fonctionnement. ● Avantage : Permet de valider des scénarios classiques (ex : validation d'une adhésion complète pour une mutuelle). A la fois en recette et en production.
  64. 64. Développement d'applications Tests des interfaces utilisateurs
  65. 65. Outils tiers
  66. 66. Outils tiers Plugins eclipse pré installés Checkstyle : Vérification de règles de bases sur l'écriture du code. Eclemma : Permet de voir quelles parties du code est couverte par les tests.
  67. 67. Outils tiers Checkstyle
  68. 68. Outils tiers Eclemma
  69. 69. Outils tiers Travail en équipe Les sources sont centralisées sur notre serveur de source SVN (Subversion). Les demandes (bugs, modifications et ajouts) sont gérées via Mantis. Le référentiel Maven de l'entreprise est Artifactory.
  70. 70. Outils tiers Jenkins : Intégration continue Jenkins est un outil d'intégration continue, il vérifie de manière automatique que les modifications de code source n'ont pas générées de régressions de l'application. Il va aussi se charger des livraisons. Pour schématiser, tous les soirs, Jenkins va récupérer les sources et va lancer les taches Maven pour construire, tester et livrer le projet.
  71. 71. Outils tiers Jenkins : Intégration continue
  72. 72. Outils tiers Jenkins : Schéma de build
  73. 73. Outils tiers Jenkins : Création d'un job
  74. 74. Outils tiers Jenkins : Paramétrage du build
  75. 75. Outils tiers Jenkins : 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.
  76. 76. Outils tiers Divers ● CAS pour le SSO. ● Graylog pour la visualisation des logs. ● Sonar pour la gestion de la qualité. ● Jetty comme serveur d'applications. ● Eclipse comme environnement de développement. ● Dozer pour gérer le mapping entre objets du modèle et dto. ● Oval pour les validations.
  77. 77. Questions
  78. 78. Questions ? http://www.arrow-group.eu http://www.scub.net http://www.scub-foundation.org http://twitter.com/straumat http://twitter.com/scub_france Stéphane Traumat : http://about.me/straumat

×