SlideShare ist ein Scribd-Unternehmen logo
1 von 78
Downloaden Sie, um offline zu lesen
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'architecture SOA.
● Qu'est-ce qu'une usine logicielle ?
● Outil clé : Maven.
● Développement d'un projet.
● Outils tiers.
● Questions.
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 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.
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.
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
doit être
industrialisé
pour gérer la
complexité.
Scrum Scub Foundation
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 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.
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.
● 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
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é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
Mise en place du projet sur les serveurs de
production du client par nos équipes de
développement.
Étape 4 : Livraison en production
Présentation de
l'architecture
SOA
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.
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.
● 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
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
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 ».
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é…).
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…).
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.
Outil clé : Maven
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.
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.
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.
● Application webservices.
● Application batch.
Nous allons développer un îlot de service !
Développement d'un projet
Création du projet via Maven
Choix de l'archetype de projet
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.
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).
En production : PostgreSQL préféré.
En développement : HyperSQL.
Avantages : Indépendance vis à vis de la base
de données.
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.
Utilisation d'Hibernate pour gérer le mapping
Objet / Relationnel.
Avantages : Non intrusif / Indépendance.
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 Spring.
Avantages : Découplage entre interfaces et
implémentations mais aussi séparation du
code métier et du code technique.
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éder aux
données. Elle est testée grace à JUnit et
Eclemma.
Couche indépendante des technologies sous-
jacentes.
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.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..*.*(..)
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 lancement des tests.
● Le packaging.
● Le déploiement.
● L'initialisation de la base de données.
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.
● Qualité plus facile a gérer.
● Simplification de la programmation pour les
développeurs d'interfaces utilisateurs.
● Interfaces Java + DTO = Indépendance des
technologies
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.
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.
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 : Permet de voir quelles parties du
code est couverte par les tests.
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 (bugs, modifications et ajouts)
sont gérées via Mantis.
Le référentiel Maven de l'entreprise est
Artifactory.
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.
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 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.
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.
Questions
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

Weitere ähnliche Inhalte

Was ist angesagt?

Rapport exposé eXtreme Programming XP
Rapport exposé eXtreme Programming XPRapport exposé eXtreme Programming XP
Rapport exposé eXtreme Programming XPSarah
 
Présentation pfe Développement d'une application bancaire mobile
Présentation pfe Développement d'une application bancaire mobilePrésentation pfe Développement d'une application bancaire mobile
Présentation pfe Développement d'une application bancaire mobileNader Somrani
 
Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesStéphane Di Cioccio
 
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...Anas Riahi
 
réaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testréaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testahmed oumezzine
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...MOHAMMED MOURADI
 
Architectures microservices
Architectures microservicesArchitectures microservices
Architectures microservicesRiadh MNASRI
 
Application web de gestion de recrutement- Recruitement managment system
Application web de gestion de recrutement- Recruitement managment systemApplication web de gestion de recrutement- Recruitement managment system
Application web de gestion de recrutement- Recruitement managment systemSarra ERRREGUI
 
DevOps Powerpoint Presentation Slides
DevOps Powerpoint Presentation SlidesDevOps Powerpoint Presentation Slides
DevOps Powerpoint Presentation SlidesSlideTeam
 
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
Rapport pfe Conceptionet Developpement d'une Application web et  Mobile Rapport pfe Conceptionet Developpement d'une Application web et  Mobile
Rapport pfe Conceptionet Developpement d'une Application web et Mobile Raoua Bennasr
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...ENSET, Université Hassan II Casablanca
 
Présentation PFE (Conception et développement d'une application web && mobile...
Présentation PFE (Conception et développement d'une application web && mobile...Présentation PFE (Conception et développement d'une application web && mobile...
Présentation PFE (Conception et développement d'une application web && mobile...Ramzi Noumairi
 

Was ist angesagt? (20)

Rapport exposé eXtreme Programming XP
Rapport exposé eXtreme Programming XPRapport exposé eXtreme Programming XP
Rapport exposé eXtreme Programming XP
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 
Présentation pfe Développement d'une application bancaire mobile
Présentation pfe Développement d'une application bancaire mobilePrésentation pfe Développement d'une application bancaire mobile
Présentation pfe Développement d'une application bancaire mobile
 
Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequences
 
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
 
pfe book 2023 2024.pdf
pfe book 2023 2024.pdfpfe book 2023 2024.pdf
pfe book 2023 2024.pdf
 
réaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testréaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de test
 
Modele mvc
Modele mvcModele mvc
Modele mvc
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
 
Architectures microservices
Architectures microservicesArchitectures microservices
Architectures microservices
 
Application web de gestion de recrutement- Recruitement managment system
Application web de gestion de recrutement- Recruitement managment systemApplication web de gestion de recrutement- Recruitement managment system
Application web de gestion de recrutement- Recruitement managment system
 
DevOps Powerpoint Presentation Slides
DevOps Powerpoint Presentation SlidesDevOps Powerpoint Presentation Slides
DevOps Powerpoint Presentation Slides
 
Modèle en cascade
Modèle en cascadeModèle en cascade
Modèle en cascade
 
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
Rapport pfe Conceptionet Developpement d'une Application web et  Mobile Rapport pfe Conceptionet Developpement d'une Application web et  Mobile
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
 
Apache Maven 3
Apache Maven 3Apache Maven 3
Apache Maven 3
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
Présentation PFE (Conception et développement d'une application web && mobile...
Présentation PFE (Conception et développement d'une application web && mobile...Présentation PFE (Conception et développement d'une application web && mobile...
Présentation PFE (Conception et développement d'une application web && mobile...
 

Andere mochten auch

Comment integrer les applications de votre Systeme Information entre elles ?
Comment integrer les applications de votre Systeme Information entre elles ?Comment integrer les applications de votre Systeme Information entre elles ?
Comment integrer les applications de votre Systeme Information entre elles ?Stéphane Traumat
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileDenis Voituron
 
Clean code, Feb 2012
Clean code, Feb 2012Clean code, Feb 2012
Clean code, Feb 2012cobyst
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange LabsEmmanuel Hugonnet
 
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...Kevlin Henney
 
Seven Ineffective Coding Habits of Many Programmers
Seven Ineffective Coding Habits of Many ProgrammersSeven Ineffective Coding Habits of Many Programmers
Seven Ineffective Coding Habits of Many ProgrammersKevlin Henney
 
Le système d’information de l’entreprise
Le système d’information de l’entrepriseLe système d’information de l’entreprise
Le système d’information de l’entrepriseLee Schlenker
 
Improve Foundations (FR)
Improve Foundations (FR)Improve Foundations (FR)
Improve Foundations (FR)dduquenne
 
Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014Ippon
 
Rapport d'activité 2012
Rapport d'activité 2012Rapport d'activité 2012
Rapport d'activité 2012cartellej
 
Evolutions scub foundation 3.0 = 4.0
Evolutions scub foundation 3.0 =  4.0Evolutions scub foundation 3.0 =  4.0
Evolutions scub foundation 3.0 = 4.0adrienhautot
 
Définir sa cible et sa trajectoire d’entreprise en plans d'actions concrets :...
Définir sa cible et sa trajectoire d’entreprise en plans d'actions concrets :...Définir sa cible et sa trajectoire d’entreprise en plans d'actions concrets :...
Définir sa cible et sa trajectoire d’entreprise en plans d'actions concrets :...Loïc Deffains
 
Mieux gérer son temps et ses priorités, concepts généraux et boîte à outils p...
Mieux gérer son temps et ses priorités, concepts généraux et boîte à outils p...Mieux gérer son temps et ses priorités, concepts généraux et boîte à outils p...
Mieux gérer son temps et ses priorités, concepts généraux et boîte à outils p...Loïc Deffains
 
Kanban pour maîtriser le développement incrémental
Kanban pour maîtriser le développement incrémentalKanban pour maîtriser le développement incrémental
Kanban pour maîtriser le développement incrémentalFabrice Aimetti
 
Comptabilité analytique
Comptabilité analytiqueComptabilité analytique
Comptabilité analytiquekhddd
 

Andere mochten auch (20)

Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Comment integrer les applications de votre Systeme Information entre elles ?
Comment integrer les applications de votre Systeme Information entre elles ?Comment integrer les applications de votre Systeme Information entre elles ?
Comment integrer les applications de votre Systeme Information entre elles ?
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
 
Clean code, Feb 2012
Clean code, Feb 2012Clean code, Feb 2012
Clean code, Feb 2012
 
Présentation de SaaS
Présentation de SaaS Présentation de SaaS
Présentation de SaaS
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
 
Clean architectures
Clean architecturesClean architectures
Clean architectures
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange Labs
 
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
 
Seven Ineffective Coding Habits of Many Programmers
Seven Ineffective Coding Habits of Many ProgrammersSeven Ineffective Coding Habits of Many Programmers
Seven Ineffective Coding Habits of Many Programmers
 
Clean code coding like a professional
Clean code   coding like a professionalClean code   coding like a professional
Clean code coding like a professional
 
Le système d’information de l’entreprise
Le système d’information de l’entrepriseLe système d’information de l’entreprise
Le système d’information de l’entreprise
 
Improve Foundations (FR)
Improve Foundations (FR)Improve Foundations (FR)
Improve Foundations (FR)
 
Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014
 
Rapport d'activité 2012
Rapport d'activité 2012Rapport d'activité 2012
Rapport d'activité 2012
 
Evolutions scub foundation 3.0 = 4.0
Evolutions scub foundation 3.0 =  4.0Evolutions scub foundation 3.0 =  4.0
Evolutions scub foundation 3.0 = 4.0
 
Définir sa cible et sa trajectoire d’entreprise en plans d'actions concrets :...
Définir sa cible et sa trajectoire d’entreprise en plans d'actions concrets :...Définir sa cible et sa trajectoire d’entreprise en plans d'actions concrets :...
Définir sa cible et sa trajectoire d’entreprise en plans d'actions concrets :...
 
Mieux gérer son temps et ses priorités, concepts généraux et boîte à outils p...
Mieux gérer son temps et ses priorités, concepts généraux et boîte à outils p...Mieux gérer son temps et ses priorités, concepts généraux et boîte à outils p...
Mieux gérer son temps et ses priorités, concepts généraux et boîte à outils p...
 
Kanban pour maîtriser le développement incrémental
Kanban pour maîtriser le développement incrémentalKanban pour maîtriser le développement incrémental
Kanban pour maîtriser le développement incrémental
 
Comptabilité analytique
Comptabilité analytiqueComptabilité analytique
Comptabilité analytique
 

Ähnlich wie Scub Foundation, usine logicielle Java libre

Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Publicis Sapient Engineering
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicEmmanuel Hugonnet
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Julien Dubois
 
Méthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to marketMéthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to marketmichael_bailly
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiENSET, Université Hassan II Casablanca
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration ContinueFrédéric Sagez
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimLaurent Broudoux
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...PimpMySharePoint
 

Ähnlich wie Scub Foundation, usine logicielle Java libre (20)

Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville Public
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
Méthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to marketMéthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to market
 
Présentation1
Présentation1Présentation1
Présentation1
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
 
CV REBAI Hamida
CV REBAI HamidaCV REBAI Hamida
CV REBAI Hamida
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - Ensim
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
Angular.pdf
Angular.pdfAngular.pdf
Angular.pdf
 
Spring Boot RestApi.pptx
Spring Boot RestApi.pptxSpring Boot RestApi.pptx
Spring Boot RestApi.pptx
 
CV_Bilel CHAOUADI
CV_Bilel CHAOUADICV_Bilel CHAOUADI
CV_Bilel CHAOUADI
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
Catalogue PFE 2019
Catalogue PFE 2019Catalogue PFE 2019
Catalogue PFE 2019
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
 

Mehr von Stéphane Traumat

Blockchain : qu'est ce que c'est, comment ça marche et quels usages dans l'av...
Blockchain : qu'est ce que c'est, comment ça marche et quels usages dans l'av...Blockchain : qu'est ce que c'est, comment ça marche et quels usages dans l'av...
Blockchain : qu'est ce que c'est, comment ça marche et quels usages dans l'av...Stéphane Traumat
 
Bitcoin : comment ça marche et pourquoi c’est une révolution ?
Bitcoin : comment ça marche et pourquoi c’est une révolution ?Bitcoin : comment ça marche et pourquoi c’est une révolution ?
Bitcoin : comment ça marche et pourquoi c’est une révolution ?Stéphane Traumat
 
Introduction au cloud computing
Introduction au cloud computingIntroduction au cloud computing
Introduction au cloud computingStéphane Traumat
 
Introduction au web sémantique
Introduction au web sémantiqueIntroduction au web sémantique
Introduction au web sémantiqueStéphane Traumat
 
Présentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemePrésentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemeStéphane Traumat
 

Mehr von Stéphane Traumat (7)

Blockchain : qu'est ce que c'est, comment ça marche et quels usages dans l'av...
Blockchain : qu'est ce que c'est, comment ça marche et quels usages dans l'av...Blockchain : qu'est ce que c'est, comment ça marche et quels usages dans l'av...
Blockchain : qu'est ce que c'est, comment ça marche et quels usages dans l'av...
 
Bitcoin : comment ça marche et pourquoi c’est une révolution ?
Bitcoin : comment ça marche et pourquoi c’est une révolution ?Bitcoin : comment ça marche et pourquoi c’est une révolution ?
Bitcoin : comment ça marche et pourquoi c’est une révolution ?
 
Conférence big data
Conférence big dataConférence big data
Conférence big data
 
Introduction au cloud computing
Introduction au cloud computingIntroduction au cloud computing
Introduction au cloud computing
 
Introduction au web sémantique
Introduction au web sémantiqueIntroduction au web sémantique
Introduction au web sémantique
 
Presentation de Scub
Presentation de ScubPresentation de Scub
Presentation de Scub
 
Présentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemePrésentation de JEE et de son écosysteme
Présentation de JEE et de son écosysteme
 

Scub Foundation, usine logicielle Java libre

  • 1. Scub Foundation Usine logicielle Java libre http://www.scub-foundation.org Stéphane Traumat http://about.me/straumat
  • 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.
  • 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. 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.
  • 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
  • 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. Maquette d'écran réalisée avec Balsamiq (http://www.balsamiq.com/)
  • 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. Cahier des charges du projet réalisé avec Dokuwiki (http://www.dokuwiki.org)
  • 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. Mise en place du projet sur les serveurs de production du client par nos équipes de développement. Étape 4 : Livraison en production
  • 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.
  • 18. Schéma du système d'information de l'un de nos clients
  • 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. Qu'est ce qu'une usine logicielle ?
  • 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. 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. 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. 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. Outil clé : Maven
  • 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. 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. Exemple de fichier de configuration Maven
  • 29. Structure des dossiers d'un projet Maven
  • 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. Choix de l'archetype de projet
  • 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. Développement d'un noyau Structure des deux projets core-interfaces core-implementations
  • 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.
  • 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. Développement d'un noyau Code source du modèle
  • 42. Développement d'un noyau Couche d'accès aux données
  • 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.
  • 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.
  • 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. Développement d'un noyau Exemple de données de tests
  • 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.
  • 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. 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. 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. Développement d'applications Tests des interfaces utilisateurs
  • 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.
  • 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. 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. Outils tiers Jenkins : Intégration continue
  • 72. Outils tiers Jenkins : Schéma de build
  • 73. Outils tiers Jenkins : Création d'un job
  • 74. Outils tiers Jenkins : Paramétrage du build
  • 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. 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.