SlideShare une entreprise Scribd logo
1  sur  115
GMIN30F
Réutilisation / Composants
Intervenant : André Morassut
Informations légales
Ce document est la propriété exclusive de Berger-Levrault, toute
reproduction même partielle est interdite sans l’autorisation
écrite des services idoines de Berger-Levrault.
Le logo Berger-Levrault est la propriété exclusive de Berger-
Levrault S.A.
Les autres images de cette présentation sont issues de
commons.wikimedia.org
Structure
1. Contexte industriel
 Le contexte « industriel »
 la perception des notions
 Convergences et motifs : réutilisabilité et composants
 Un cas d’expérience : le CORE WEB2
2. Réutilisation et composants – En pratique
 Réutilisation « passive » et « active »
 Composants internes et externes
3. Pratiques actuelles
 Présentation d’outils représentatifs de l’outillage actuel favorisé par les
éditeurs de logiciel
CONTEXTE
INDUSTRIEL
Structure
1. Contexte industriel
 Le contexte « industriel »
 la perception des notions
 Convergences et motifs : réutilisabilité et composants
 Un cas d’expérience : le CORE WEB2
2. Réutilisation et composants – En pratique
 Réutilisation « passive » et « active »
 Composants internes et externes
3. Pratiques actuelles
 Présentation d’outils représentatifs de l’outillage actuel favorisé par les
éditeurs de logiciel
Le contexte industriel
• Les objectifs de cette partie :
– Mettre en perspective les notions de réutilisabilité
et de composant, par rapport aux modalités
courantes des entreprises
– Dégager des pistes pour équilibrer l’effort autour
de la réutilisabilité et des composants face aux
impératifs économiques
Le contexte industriel
Il existe de grandes différences de compréhension
des concepts de réutilisabilité et de composant
selon que l’on soit
- décideur, non-technicien chargé de
l’aboutissement d’un projet commercial
- ingénieur chargé de la conception et/ou de la
réalisation d’un système
Le contexte industriel
Dans cette série de cours, nous allons voir les deux
points de vue et les interactions courantes dans
lesquelles leurs oppositions et convergences
s’expriment …
Pour l’entreprise, qu’apporte la réutilisation et la notion de
composant? Comment est-elle perçue?
 Pour l’expert en développement, qu’est la réutilisation et
la notion de composant?
… pour finalement examiner les composants et les
modes de réutilisation qui sont utilisés
actuellement en entreprise.
Le contexte industriel
Du point de vue industriel
Le contexte industriel
• Les termes thématiques en présence
– Framework
– Approche
– Pratique
– Boîte à outils
– API
– Composant
 Quelle perception pour quelles différences et
convergences avec quelles conséquences ?
Le contexte industriel
• Les termes en présence
 Framework
« En programmation informatique, un framework est un ensemble cohérent
de composants logiciels structurels, qui sert à créer les fondations ainsi que
les grandes lignes de tout ou d’une partie d'un logiciel (architecture). »
(wikipédia)
 La réalité est plus complexe
 Définition « mouvante »
 Les « types de frameworks » : CMS, Enterprise-oriented, middleware, etc.
 Pour l’industrie, la fonction « active » d’un framework est déterminante, par opposition à
du code « passif » (bibliothèque ui)
 Le framewok (choix, construction) est souvent considéré du domaine de
l’architecture.
Le contexte industriel
• Les termes en présence
 Approche
 Le terme est très utilisé périodiquement dans
l’industrie. Il traduit souvent un effet de mode ou la
caractérisation d’un paradigme (i.e. « l’approche
objet », …)
Le contexte industriel
• Les termes en présence
 Pratique
Ce terme renvoie à « l’état de l’art », aux éléments
actuellement acceptés par une communauté
d’expert, informelle ou non, sur un sujet donné.
 On parle de « pratiques web », « pratiques
sécurité »
Le contexte industriel
• Les termes en présence
 Boîte à outils
Terme très connoté et ambigü, renvoyant le
plus souvent à un « patrimoine » de code
interne promu par l’entreprise qui l’a mis en
place.
Le contexte industriel
• Les termes en présence
 API
Équivaut à « librairie ».
 Peu usité, à éviter dans les communications
non-techniques.
Le contexte industriel
• Les termes en présence
 Composant
Sans doute le terme le mieux appréhendé en entreprise
 Un composant peut être un web service, une web resource,
un module logiciel, etc.
 Un composant encapsule une fonction spécialisée, au travers
d’une interface. Ils sont perçus comme :
Connectables
Facilement testables
 Substituables
Le contexte industriel
• Face à toutes ces notions, les décideurs
cherchent à mettre en évidence les pistes de
valorisation.
• Dans l’industrie, les coûts sont engagés sur
une espérance de réussite. Déterminer
l’impact de la mise en œuvre technologique
sur l’espérance de réussite est complexe.
Le contexte industriel
• Explicitons la notion de « valorisation »
– Le « coût » : Matériel, Méthodologie, Temps, etc.
– « investissement » : les hommes, la culture,
l’image, etc.
– « ROI » : quel retour espérer?
Le ROI est la plus forte des considérations
Il peut être financier mais aussi « politique »
Le contexte industriel
• Plus finement, si l’on creuse les spécificités de
l’outil informatique :
• la notion de « dette technique » (dette implique
possibilité de banqueroute!)
• la notion de « opportunité »
• La notion de « common knowledge » (turn-over,
community impact, etc.)
• La notion de « obsolescence » et de « mode »
 Rendent difficile la lecture de l’impact
technique sur le ROI
Le contexte industriel
• En résumé :
– La réutilisabilité doit servir le ROI
– La réutilisabilité devient un enjeu stratégique
quand les plans de développements intègrent des
synergies autour de la capacité à réassembler des
composants pour construire de nouvelles offres
– Les composants permettent une identification
des responsabilités très utile pour le management
des hommes et des ressources
– Les composants doivent servir le ROI
Le contexte industriel
Intéressons nous aux convergences… qui vont,
fort heureusement, se matérialiser autour de
la réutilisabilité et des composants.
Convergences
• La réutilisabilité : pourquoi ?
– Robustesse
– Coût, temps
– Stratégique : se concentrer sur son métier
– Modularisation : du travail, des responsabilités
– Opportunité : le « cercle vertueux »
Convergences
• Les besoins de réutilisabilité se différencient
par domaine
– Édition de logiciel
– Grand public, « entertainment »
– Applications critiques
– …
Convergences
• La réutilisabilité : quelles modalités?
– Opportuniste
– Planifiée
– Interne
– Externe
– Par référence
– Par duplication
Convergences
• La réutilisabilité : comment ?
– Design patterns
– Copier-coller (?)
– Arbitrage sur le besoin de réutilisabilité
– Le « tout composant » : l’exemple d’AMAZON
– Le « standards as components » : l’exemple de
GOOGLE
– Les points essentiels :
• Architecture logicielle
• Anticipation & stratégie
Convergences
En résumé :
- Réutiliser n’a de sens que pour maximiser l’efficience.
- La méthodologie de réutilisation, sa profondeur vont
dépendre du contexte : entreprise, marché, modalités
projet
- La notion de composant n’apparaît qu’à de très haut
niveau d’abstraction pour l’entreprise. Faire entrer un plus
bas niveau dans les processus de décision conduit à
remettre des problématiques techniques dans des mains
de non-techniciens.
Réutiliser de manière efficiente est complexe
UN CAS D’EXPÉRIENCE
CORE WEB2
Structure
1. Contexte industriel
 Le contexte « industriel »
 la perception des notions
 Convergences et motifs : réutilisabilité et composants
 Un cas d’expérience : le CORE WEB2
2. Réutilisation et composants – En pratique
 Réutilisation « passive » et « active »
 Composants internes et externes
3. Pratiques actuelles
 Présentation d’outils représentatifs de l’outillage actuel favorisé par les
éditeurs de logiciel
Un cas en détail
Le projet « CORE WEB2 »
 Contexte :
 e.magnus
 web émergent (WEB2)
 Le besoin de validation externe : Valtech
 Un contraste dans la culture d’entreprise, des
décisions en réaction aux projets précédents
 Importance stratégique (renouvellement de
gamme)
Un cas en détail
La mise en place :
- 2006/2007 : choix technologiques
- 2007 : module d’essai
- 2008-aujourd’hui : les autres modules
Les jalons significatifs :
- 2008-2009 :
- extraction du « core »
- Mise en place de l’intégration continue
- 2010 : extraction du « core sedit »
- 2008-2010 :
- Mise en place des sessions de montée en compétence
- Documentation
- 2012 : Démarrage des autres projets
- 2014 : Intégration nouvelle couche de présentation
Un cas en détail
Les défis :
- Gestion de l’obsolescence
- Passage à java 5, 6, 7 …
- Spring, Hibernate …
- JPA!
- HTML5
- Gestion du turn over
- Gestion des multiconfigurations (n4ds, clients
hébergés, hébergeants ou autonomes…)
Un cas en détail
Aujourd’hui :
 Une réutilisation opportuniste mais nuancée par
 L’architecture
 L’urbanisation
 Des composants qui ont émergé au fil des
besoins
 L’importance de la culture de l’approche mise en
avant
 Intégration continue
 Revues de code, mise en avant des bonnes pratiques
Dashboards de développement
RÉUTILISATION &
COMPOSANTS
Structure
1. Contexte industriel
 Le contexte « industriel »
 la perception des notions
 Convergences et motifs : réutilisabilité et composants
 Un cas d’expérience : le CORE WEB2
2. Réutilisation et composants – En pratique
 Réutilisation « passive » et « active »
 Composants internes et externes
3. Pratiques actuelles
 Présentation d’outils représentatifs de l’outillage actuel favorisé par les
éditeurs de logiciel
Réutilisation & composants
Les objectifs de cette partie:
- Réutilisation :
- Connaître les possibilités de stratégie de réutilisation
- Savoir adapter et sécuriser les exigences de
réutilisation
- Composants :
- Connaître l’impact du « périmètre » sur la définition
des composants
- Sélectionner les approches les plus efficientes pour
favoriser la qualité des composants
Réutilisation & composants
Réutilisation (rappel) :
- opportuniste / planifiée
- interne / externe
- par référence / par copie
Concrètement, que faire pour favoriser la
réutilisation ?
 Outre le contexte (projet, humain, groupe), la réponse
va varier selon le « rôle » des intervenants
Réutilisation & composants
Au vu du contexte présenté, l’expérience montre
qu’il y a plusieurs axes d’actions significatifs :
- La réutilisatibilité « passive »
- La réutilisabilité « active »
 « passif » ne signifie pas inactif!
 Comment implémenter ces deux approches?
Réutilisation & composants
Objectifs généraux de la réutilisabilité « passive »:
- Mettre le logiciel en condition de répondre
rapidement aux demandes d’évolution par
réutilisation totale ou partielle
- Favoriser les opportunités de réutilisation
Positionner la réutilisabilité comme un des
indicateurs de qualité
 Plutôt qu’une réutilisation effective, un état
n’empêchant pas la réutilisation
Réutilisation & composants
Objectifs généraux de la réutilisabilité « active »:
- Rechercher et promouvoir les opportunités de
réutilisation
- Dédier une part significative des efforts à la
pratique de la réutilisatibilité
 La réutilisabilité devient un objectif formel
Réutilisation & composants
La réutilisabilité « passive » : dans le détail
Réutilisation & composants
Réutilisabilité « passive » en détail:
- Bonnes pratiques
- Intégration continue  feedback
- Design patterns
- Librairies reconnues et composants réutilisables
 Ces approches sont éprouvées
Réutilisation & composants
« Bonnes pratiques » : un socle
Réutilisation & composants
Réutilisabilité « passive » : Bonnes pratiques
- DRY
- YAGNI
- SOLID
- KISS
- SRP, SSOT, etc.
 Très générales, approches non formelles
Réutilisation & composants
Dans le détail :
- DRY = Don’t Repeat Yourself (versus WET)
- YAGNI = You Ain’t Gonna Need It
- KISS = Keep It Simple And Stupid
Réutilisation & composants
SOLID est plus complet :
– S : SRP
– O : OCP
– L : LSP
– I : ISP
– D : DIP

Réutilisation & composants
- S = SRP = Single Responsibility Principle
- Une seule responsabilité par classe
- O = OCP = Open/Closed Principle
- Ouvert aux extensions, fermé aux modifications
- L = LSP = Lyskov’s Substitution Principle
- Design par contrats / substitution par types spécialisés
- I = ISP = Interface Segregation Principle
- Plusieurs interfaces simples plutôt qu’une complexe
- D = DPI = Dependency Inversion Principle
- Dépendre des interfaces plutôt que des types concrets
Réutilisation & composants
Les bonnes pratiques sont acquises avec le temps
et l’expérience.
 Un processus est là pour aider l’assimilation, la
gestion des pratiques : l’intégration continue
Réutilisation & composants
L’intégration continue : une bonne pratique
diapo 49
85% des bugs sont introduits
durant la phase de codage.
50% des bugs sont trouvés
durant la phase de test
Le coût de correction des bugs
augmente au fur et à mesure
que l’on avance dans les
phases
L’idée est de détecter les
anomalies lors la phase où
ils sont introduits
Pourquoi intégrer en Continu ?
diapo 50
Qu’est-ce que l’Intégration Continue ?
• L’intégration continue est une pratique du développement
logiciel dans laquelle les membres d’une équipe intègrent leur
travail régulièrement.
• Chaque intégration est vérifiée par une construction
automatisée (test y compris) afin de détecter les anomalies
potentielles au plus tôt.
Processus d’assemblage et de vérification
périodique et automatique
d’un programme informatique
diapo 51
Le processus
d’Intégration Continue
Réutilisation & composants
L’intégration continue représente un
investissement pour la société qui décide de la
mettre en œuvre.
 Toutefois, l’intégration d’un produit OSS afin de
profiter des remontées de métriques peut
conduire à un retour d’informations guidant les
efforts de qualité de code.
 Les règles implémentées traitent des bonnes
pratiques
Un exemple
Réutilisation & composants
Design patterns
Réutilisation & composants
« Un pattern de design décrit une structure de
composantes communicantes qui se reproduit
couramment et qui résout un problème de design
général dans un contexte particulier »
Gamma & al, Design Patterns, 1994
Réutilisation & composants
Réutilisabilité « passive » : Design patterns
Quelques patterns très fréquents :
- Observer
- Factory
- Memento
- Facade
- DAO
- Inversion de contrôle  nous y reviendrons plus
tard
Réutilisation & composants
Pattern « OBSERVER »
Couplage lâche entre des modules
« observables » et modules « observateurs »
 Deux rôles « observables » / « observateurs »
 Réduire la dépendance à l’information échangée
 Attention aux problématiques de fuite mémoire
(références sur les observateurs)
Domaines :
 Librairies IHM
 MVC
Réutilisation & composants
Réutilisation & composants
Pattern « FACTORY »
Permet d’introduire un niveau d’abstraction entre
un objet utilisateur d’un module et le type réel du
module
 Le principe repose sur l’héritage (interface) entre
un objet créateur abstrait et des créateurs
concrets
 Domaines très variés :
 parsers
 Toolkits GUI
 etc.
Réutilisation & composants
Réutilisation & composants
Pattern « MEMENTO »
Permet la sauvegarde et le rappel d’états sur un
objet
 Trois rôles :
 Le sujet : l’objet dont on veut conserver l’état
 Le gardien (« caretaker ») : conserve un état demandé
au sujet
 Le memento : l’objet sauvegardant l’état
Réutilisation & composants
Pattern « MEMENTO »
 Dans ce pattern, le sujet doit être capable de
produire et lire des objets memento représentant
un état interne lui appartenant. La gestion des
états est réalisée par le gardien, qui ne doit pas
avoir d’interaction avec le contenu des mementos
 Domaines très variés :
 CTRL+Z
 Etats IHM
 Jeux vidéos
Réutilisation & composants
Réutilisation & composants
Pattern « FACADE »
Permet de masquer la complexité d’un système
 Point de départ possible pour l’utilisation des
patterns « ADAPTER » et « DECORATOR »
Domaines très variés :
 reformulation de l’utilisation d’une ou plusieurs
librairies
 substitution d’une collection d’API par une API unifiée
 rénovation d’applications
Réutilisation & composants
Réutilisation & composants
Un mot sur les motifs évoqués
Pattern « ADAPTER »
 Résoudre des incompatibilités d’interfaces
 Permettre l’usage de classes existantes sans modifier
leur implémentation
 Peut être implémenté en mettant à profit
l’encapsulation ou le polymorphisme
Réutilisation & composants
• Par encapsulation
Réutilisation & composants
• Par polymorphisme
Réutilisation & composants
Pattern « DAO »
Objet fournissant une interface permettant
l’abstraction d’un support de stockage
 Typiquement, les DAO sont très courantes dans
le monde J2EE sur base de données relationnelles
car Sun avait intégré ce pattern dans les « CORE
J2EE Patterns »
Réutilisation & composants
Pattern « DAO »
 Ce pattern respecte le SRP et permet la
séparation entre les besoins de l’application
(interface du DAO) et la manière dont la
persistance est réalisée (implémentation du DAO)
 Typiquement, dans une application métier, ce
sont les opérations CRUD qui sont implémentées :
 Create / Read / Update / Delete
Réutilisation & composants
Pattern « DAO »
Réutilisation & composants
Pattern « DAO »
 Avantages :
 Masquer les détails du système de persistance aux couches
supérieures
 Intermédiaire identifié entre l’application et la persistance
 Les changements apportés au système de persistance sont
confinés
 Permet et facilite le test unitaire
 Inconvénients :
Duplication de code (?)
 L’abstraction masque les coûts de persistance
Réutilisation & composants
Toutefois, le pattern « active record » trouve une
réelle popularité auprès des application de
petites à moyenne taille…
Réutilisation & composants
Anti-patterns
Réutilisation & composants
Qu’est ce qui distingue un « anti pattern » d’une
« mauvaise pratique »?
C’est un design utilisé couramment comme
réponse à une problématique générale dans un
contexte particulier, qui se révèle avoir des
conséquences négatives supérieures aux apports
positifs.
ET
 Il existe une solution alternative, documentée,
répétable et effective.
(Andrew Koenig, AntiPatterns, 1998)
Réutilisation & composants
Réutilisabilité « passive » : Design patterns
Quelques anti-patterns :
- Singleton
- God object
- Over-engineering
- Feature-creep
« Don’t do this at home »
Réutilisation & composants
Pattern « SINGLETON »
Décrit dans le GoF … mais!
 Je le classe en anti-pattern… dans un contexte
industriel J2EE.
Les raisons :
 Faire un objet global pour transporter de l’information
masque les dépendances
 Violation du SRP car ils contrôlent leur cycle de vie
 Couplage fort : difficulté de tests
Réutilisation & composants
Pattern « Over-engineering »
 Dérive du YAGNI
 Réflexe naturel mais à surveiller
 Il est plus efficient d’appliquer les principes de
responsabilités en permanence et de ne pas
présumer des périmètres plutôt que de sur-
concervoir.
 Rejoint l’aphorisme « Early optimization is the
root of all evil » (Donald Knuth)
Réutilisation & composants
Pattern « Feature creep »
Dérive aussi du YAGNI
 Dérive du KISS
 Peut être poussé par la direction projets
 Même dans le cadre d’un métier très précis
(BergerLevrault), les questions d’IHM, d’aide, etc.
restent des « features ». Attention à bien
formaliser toutes les features.
Réutilisation & composants
Pattern « GOD OBJECT »
Correspond à l’inflation d’une classe d’objet ou
d’un objet en particulier, souvent avec le temps
 Peut être lié à Singleton
 Inacceptable dans le cadre d’un logiciel pour
lequel on veut appliquer de bonnes pratiques
Réutilisation & composants
Et il en existe bien d’autres :
- « marteau en or » (golden hammer)
- « ancre de bateau » (boat anchor)
- Error hiding
- Cargo-cult programming
- Poltergeist
- Sequential coupling
- Super call mandatory
- Circular dependencies
- Anemic Domain Model
- Etc.
Réutilisation & composants
La réutilisabilité « active » : dans le détail
Réutilisation & composants
RAPPEL
Objectifs généraux de la réutilisabilité « active »:
- Rechercher et promouvoir les opportunités de
réutilisation
- Dédier une part significative des efforts à la
pratique de la réutilisatibilité
 La réutilisabilité devient un objectif formel
Réutilisation & composants
Comment, en entreprise, matérialiser l’objectif de
réutilisabilité?
Identifier les thématiques de « haut niveau »
pertinentes pour le métier
 Identifier les points de synergie
 Urbaniser les projets
EN PRATIQUE
Structure
1. Contexte industriel
 Le contexte « industriel »
 la perception des notions
 Convergences et motifs : réutilisabilité et composants
 Un cas d’expérience : le CORE WEB2
2. Réutilisation et composants – En pratique
 Réutilisation « passive » et « active »
 Composants internes et externes
3. Pratiques actuelles
 Présentation d’outils représentatifs de l’outillage actuel favorisé par les
éditeurs de logiciel
Pratiques actuelles
• Introduction à un ensemble de frameworks
qui composent un outillage standard favorisé
par les éditeurs de logiciels, en 2014
• Ces outils:
– JAVA EE
– Apache Maven
– Spring
– JBOSS Hibernate (JPA-provider)
– Apache commons
JAVA EE
ORACLE JAVA EE
« The Java EE platform provides an API and
runtime environment for developing and
running large-scale, multi-tiered, scalable,
reliable, and secure network applications. »
ORACLE DOCS
ORACLE JAVA EE
• JAVA EE est fortement modulaire et permet la
mise en place d’architectures complexes
• JAVA EE propose une approche « convention
over configuration », c’est aussi une
spécification (i.e. avec certification, par
exemple pour les serveurs d’application)
• JAVA EE 6 & 7 ont voulu refermer le gap
ouvert par SPRING
ORACLE JAVA EE  Composants
ORACLE JAVA EE  Web profile
ORACLE JAVA EE
• Les domaines stratégiques adressés :
– Persistance
• JPA, JTA, JDBC
• EJB
 CRUCIAL pour la gestion de la concurrence et des transactions
– Communication
• JMS, JNDI, Java RMI, JaxB, …
– Sécurité
• Java EE security
– Modularisation & business logic
• CDI
• Batch services
• Validation
ORACLE JAVA EE
– Présentation
• JSF, JSP, etc.
– Monitoring, resource management
• JMX
Une application peut ne faire usage que d’une partie de ces
composants
 Une application « full JAVA EE »
Profite de containers dédiés
Profite d’outils dédiés
 « subit » les rythme d’évolution imprimé par ORACLE
ORACLE JAVA EE
Dans les faits :
• JPA poussé par Hibernate
• Convergence autour des annotations
• Les entreprises évaluent les alternatives pour
chaque composant:
– enseignement lié aux EJB2
– Constat pragmatique de la « vivacité » d’un Spring
versus Oracle
ORACLE JAVA EE
Si l’on s’intéresse à une implémentation hybride,
mêlant JAVA EE et Spring…
 Projet « core web2 » de gestion de
configuration
MAVEN
Apache MAVEN
 MAVEN
– Produit open-source développé par APACHE
– « MAVEN est à Ant ce que C++ est à C »  on peut aussi faire le parallèle avec
« Make »
– « Maven » signifie « celui qui sait et qui transmet » en Hébreu
– GRAILS est un concurrent
 Caractéristiques
– Maven se présente comme un « runtime » permettant « d’exécuter » des
fichiers descripteurs spécifiques : similarité avec ANT
– Il existe « Maven1 » et « Maven2 » : ce sont des implémentations très
différentes.
Apache MAVEN
 Pourquoi Maven ?
 Indépendance de l’IDE
 Courbe d’apprentissage du cycle de vie simplifiée
 Gestion automatique des dépendances
 Structuration et cycle de vie standard
 Partie « tests » élaborée : rapports, etc.
 Pas d’équivalent dans JAVA EE?
Apache MAVEN
 Objectifs
– Offre un format de description unifié, au format XML qui sera associé à un
projet Java : le POM (Project Object Model)
– Ce format va permettre la gestion et l’automatisation de production de projets
logiciels, Java notamment, par une description normalisée des
actions/commandes à chaque étape du cycle de vie du projet
 Fonctionnement
– MAVEN se repose sur la notion de cycle de vie : il est découpé en « goals »
– Chaque goal va représenter une série de tâches automatisées que Maven va
exécuter en prenant des informations du POM
– Le cycle de vie est représenté par un set défini de goals, il existe néanmoins
d’autres goals, à usage technique, documentaire, etc.
Apache MAVEN
 Fonctionnement
– Le cycle de vie défini par Maven reprend des goals qui vont ponctuer le
développement d’un projet.
• compile : directives de compilation du projet
• test : exécution de TU, d’analyseur de couverture de code, etc.
• package : assemblage d’un livrable (EAR, WAR, …)
• install : transfert du livrable vers un entrepôt
• deploy : installation automatisée du livrable
 Ces goals représentent le cycle de vie par défaut
– Exemples d’autres goals, hors cycle de vie :
• site-deploy : déploiement automatisé d’un site, typiquement généré, par
exemple des rapports de métriques projet
• clean : nettoyage de cache, …
• eclipse : génération des fichiers de configuration Eclipse nécessaires à un
projet
Apache MAVEN
 Fonctionnement
– Les POM vont aussi permettre la description et gestion des dépendances (le
« Jar Hell »)
• De manière générale, chaque élément manipulé par maven (librairie,
livrable) va être décrit de façon homogène :
– groupId : classification projet (org.apache.maven, fr.bl.core, …)
– artifactId : nom du livrable/librairie
– packaging : format du livrable/librairie (jar, war, …)
– version : version du livrable/librairie
• Les librairies sont liées au projet avec une visibilité donnée : compile-time,
run-time, …
• On peut lier des artefacts de tous types à son projet
Apache MAVEN
 Fonctionnement
– Les POM peuvent hériter d’un autre POM
• C’est un élément différenciateur fort
• On hérite alors des dépendances que le pom parent décrit : c’est la
transitivité des dépendances
• MAVEN se charge de faire des retours sur les cycles de dépendances, les
inclusions de librairies identiques à des versions différentes, …
• MAVEN permet l’automatisation de la récupération des librairies à partir
des informations du POM : l’objectif est à terme de n’avoir qu’un fichier
XML à modifier pour altérer une configuration technique de projet
• Les POM peuvent n’être associé à aucun projet et servir de « descripteur
intermédiaire », notamment pour mutualiser des descriptions de
dépendances
Apache MAVEN
 MAVEN « Convention over Configuration » :
 Cela signifie que le fonctionnement de MAVEN va pouvoir s’adapter à
tous types de projet, la charge de configuration étant inversement
proportionnelle au respect des conventions maven par le projet.
 Maven fondamentalement :
 Propose une structuration de projet
 Impose la présence d’un descripteur de projet : le POM (Project
Object Model). Ce fichier est placé au sein du projet, hors des
sources.
Apache MAVEN
La structuration est de la forme :
Apache MAVEN
 Détails de la structuration:
• src : répertoire global des sources du projet
• main : répertoire principal des sources du projet
• java : répertoire des « .java »
• resources : répertoire des ressources externes
• test : répertoire des sources de tests du projet
• java : répertoire des « .java »
• resources : répertoire des ressources externes
• target : répertoire d’écriture du livrable
• pom.xml : descripteur MAVEN
Apache MAVEN
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>Maven Quick Start Archetype</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Apache MAVEN
– Le fonctionnement de MAVEN se repose entièrement sur les plugins
• l’écosystème est « opaque » actuellement
• Ces plugins permettent l’xtensibilité de fonctionnement, cf. exemple pour
GWT
• Les plugins peuvent s’insérer pour n’importe quel goal
– Le fonctionnement de MAVEN pour les dépendances, s’appuie sur des notions
d’entrepôts:
– Local : par configuration
– Partagé : exemple à Berger-Levrault avec ARCHIVA
– Internet : il existe des entrepôts publics de dépendances (avec système
de blacklist)
Apache MAVEN
 MAVEN
– Chaque POM est lié à un endroit désigné du SCM
• Utilisé pour les opération de tag, de release
• Important à gérer pour les branches de développement
– La liaison au SCM va permettre à maven d’effectuer automatiquement des
tâches
• Commit
• Check out
 Les historiques SCM intègrent des informations poussées par MAVEN
– MAVEN ne fonctionne pas avec un compte dédié pour les opérations SCM, il
s’appuie sur une identification fournie au préalable
• C’est donc « en votre nom » qu’il effectue ses opérations
FIN DE LA PREMIÈRE PARTIE
SPRING
JPA & JBOSS Hibernate
Apache COMMONS
Retour d’expérience
• Le contexte
– Le « WEB2 »
– Renouvellement produit
• La mise en place
– coût versus utilité
– croyances versus faits
– anticipation versus court terme
GMIN30F
Réutilisation / Composants
Intervenant : André Morassut

Contenu connexe

Similaire à André MORASSUT - GMIN30F

Ddj Architecture & Design Beyond Functional Requirements On Agile Projects
Ddj   Architecture & Design   Beyond Functional Requirements On Agile ProjectsDdj   Architecture & Design   Beyond Functional Requirements On Agile Projects
Ddj Architecture & Design Beyond Functional Requirements On Agile ProjectsEmmanuel Hugonnet
 
templates.iafactory, guide de prise en main
templates.iafactory, guide de prise en maintemplates.iafactory, guide de prise en main
templates.iafactory, guide de prise en mainiafactory
 
Webinar Bizagi BPM - Etude de cas client
Webinar Bizagi BPM - Etude de cas clientWebinar Bizagi BPM - Etude de cas client
Webinar Bizagi BPM - Etude de cas clientBizagi
 
Perspectives des tableaux de bord
Perspectives des  tableaux de bordPerspectives des  tableaux de bord
Perspectives des tableaux de bordnodesway
 
[TNT19] Hands on: Objectif Top Architecte!
[TNT19] Hands on: Objectif Top Architecte![TNT19] Hands on: Objectif Top Architecte!
[TNT19] Hands on: Objectif Top Architecte!Alexandre Touret
 
Accélérer la transformation via une approche outils intégrée (ERP de l’IT)
Accélérer la transformation via une approche outils intégrée (ERP de l’IT)Accélérer la transformation via une approche outils intégrée (ERP de l’IT)
Accélérer la transformation via une approche outils intégrée (ERP de l’IT)itSMF France
 
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)Ardesi Midi-Pyrénées
 
Introduction à l'approche ADM de l'OMG
Introduction à l'approche ADM de l'OMGIntroduction à l'approche ADM de l'OMG
Introduction à l'approche ADM de l'OMGOlivier Le Goaër
 
Cours de gestion de Projet - Les Fondamentaux
Cours de gestion de Projet - Les FondamentauxCours de gestion de Projet - Les Fondamentaux
Cours de gestion de Projet - Les FondamentauxRémi Bachelet
 
Cycle de développement du logiciel
Cycle de développement du logicielCycle de développement du logiciel
Cycle de développement du logicielMajid CHADAD
 
Les tendances du stockage de données en France face au digital
Les tendances du stockage de données en France face au digitalLes tendances du stockage de données en France face au digital
Les tendances du stockage de données en France face au digitalJoanna Kempa
 
Systèmes d informations
Systèmes d informationsSystèmes d informations
Systèmes d informationsReda Hassani
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimLaurent Broudoux
 
Ged Open Source - Documation 2010
Ged Open Source - Documation 2010Ged Open Source - Documation 2010
Ged Open Source - Documation 2010Thomas Choppy
 
Perspectives tableau-de-bord
Perspectives tableau-de-bordPerspectives tableau-de-bord
Perspectives tableau-de-bordnodesway
 
2.presentation merise
2.presentation merise2.presentation merise
2.presentation meriseshaheenyaar
 

Similaire à André MORASSUT - GMIN30F (20)

Ddj Architecture & Design Beyond Functional Requirements On Agile Projects
Ddj   Architecture & Design   Beyond Functional Requirements On Agile ProjectsDdj   Architecture & Design   Beyond Functional Requirements On Agile Projects
Ddj Architecture & Design Beyond Functional Requirements On Agile Projects
 
Découpages1
Découpages1Découpages1
Découpages1
 
Formation Agile Scrum
Formation Agile ScrumFormation Agile Scrum
Formation Agile Scrum
 
templates.iafactory, guide de prise en main
templates.iafactory, guide de prise en maintemplates.iafactory, guide de prise en main
templates.iafactory, guide de prise en main
 
Webinar Bizagi BPM - Etude de cas client
Webinar Bizagi BPM - Etude de cas clientWebinar Bizagi BPM - Etude de cas client
Webinar Bizagi BPM - Etude de cas client
 
Sujet de thèse : CATCAP
Sujet de thèse : CATCAPSujet de thèse : CATCAP
Sujet de thèse : CATCAP
 
Perspectives des tableaux de bord
Perspectives des  tableaux de bordPerspectives des  tableaux de bord
Perspectives des tableaux de bord
 
[TNT19] Hands on: Objectif Top Architecte!
[TNT19] Hands on: Objectif Top Architecte![TNT19] Hands on: Objectif Top Architecte!
[TNT19] Hands on: Objectif Top Architecte!
 
Accélérer la transformation via une approche outils intégrée (ERP de l’IT)
Accélérer la transformation via une approche outils intégrée (ERP de l’IT)Accélérer la transformation via une approche outils intégrée (ERP de l’IT)
Accélérer la transformation via une approche outils intégrée (ERP de l’IT)
 
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
 
Introduction à l'approche ADM de l'OMG
Introduction à l'approche ADM de l'OMGIntroduction à l'approche ADM de l'OMG
Introduction à l'approche ADM de l'OMG
 
Cours de gestion de Projet - Les Fondamentaux
Cours de gestion de Projet - Les FondamentauxCours de gestion de Projet - Les Fondamentaux
Cours de gestion de Projet - Les Fondamentaux
 
Cycle de développement du logiciel
Cycle de développement du logicielCycle de développement du logiciel
Cycle de développement du logiciel
 
2-Composants.docx
2-Composants.docx2-Composants.docx
2-Composants.docx
 
Les tendances du stockage de données en France face au digital
Les tendances du stockage de données en France face au digitalLes tendances du stockage de données en France face au digital
Les tendances du stockage de données en France face au digital
 
Systèmes d informations
Systèmes d informationsSystèmes d informations
Systèmes d informations
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - Ensim
 
Ged Open Source - Documation 2010
Ged Open Source - Documation 2010Ged Open Source - Documation 2010
Ged Open Source - Documation 2010
 
Perspectives tableau-de-bord
Perspectives tableau-de-bordPerspectives tableau-de-bord
Perspectives tableau-de-bord
 
2.presentation merise
2.presentation merise2.presentation merise
2.presentation merise
 

Dernier

JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSKennel
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).FatimaEzzahra753100
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...maach1
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 

Dernier (11)

JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 

André MORASSUT - GMIN30F

  • 2. Informations légales Ce document est la propriété exclusive de Berger-Levrault, toute reproduction même partielle est interdite sans l’autorisation écrite des services idoines de Berger-Levrault. Le logo Berger-Levrault est la propriété exclusive de Berger- Levrault S.A. Les autres images de cette présentation sont issues de commons.wikimedia.org
  • 3. Structure 1. Contexte industriel  Le contexte « industriel »  la perception des notions  Convergences et motifs : réutilisabilité et composants  Un cas d’expérience : le CORE WEB2 2. Réutilisation et composants – En pratique  Réutilisation « passive » et « active »  Composants internes et externes 3. Pratiques actuelles  Présentation d’outils représentatifs de l’outillage actuel favorisé par les éditeurs de logiciel
  • 5. Structure 1. Contexte industriel  Le contexte « industriel »  la perception des notions  Convergences et motifs : réutilisabilité et composants  Un cas d’expérience : le CORE WEB2 2. Réutilisation et composants – En pratique  Réutilisation « passive » et « active »  Composants internes et externes 3. Pratiques actuelles  Présentation d’outils représentatifs de l’outillage actuel favorisé par les éditeurs de logiciel
  • 6. Le contexte industriel • Les objectifs de cette partie : – Mettre en perspective les notions de réutilisabilité et de composant, par rapport aux modalités courantes des entreprises – Dégager des pistes pour équilibrer l’effort autour de la réutilisabilité et des composants face aux impératifs économiques
  • 7. Le contexte industriel Il existe de grandes différences de compréhension des concepts de réutilisabilité et de composant selon que l’on soit - décideur, non-technicien chargé de l’aboutissement d’un projet commercial - ingénieur chargé de la conception et/ou de la réalisation d’un système
  • 8. Le contexte industriel Dans cette série de cours, nous allons voir les deux points de vue et les interactions courantes dans lesquelles leurs oppositions et convergences s’expriment … Pour l’entreprise, qu’apporte la réutilisation et la notion de composant? Comment est-elle perçue?  Pour l’expert en développement, qu’est la réutilisation et la notion de composant? … pour finalement examiner les composants et les modes de réutilisation qui sont utilisés actuellement en entreprise.
  • 9. Le contexte industriel Du point de vue industriel
  • 10. Le contexte industriel • Les termes thématiques en présence – Framework – Approche – Pratique – Boîte à outils – API – Composant  Quelle perception pour quelles différences et convergences avec quelles conséquences ?
  • 11. Le contexte industriel • Les termes en présence  Framework « En programmation informatique, un framework est un ensemble cohérent de composants logiciels structurels, qui sert à créer les fondations ainsi que les grandes lignes de tout ou d’une partie d'un logiciel (architecture). » (wikipédia)  La réalité est plus complexe  Définition « mouvante »  Les « types de frameworks » : CMS, Enterprise-oriented, middleware, etc.  Pour l’industrie, la fonction « active » d’un framework est déterminante, par opposition à du code « passif » (bibliothèque ui)  Le framewok (choix, construction) est souvent considéré du domaine de l’architecture.
  • 12. Le contexte industriel • Les termes en présence  Approche  Le terme est très utilisé périodiquement dans l’industrie. Il traduit souvent un effet de mode ou la caractérisation d’un paradigme (i.e. « l’approche objet », …)
  • 13. Le contexte industriel • Les termes en présence  Pratique Ce terme renvoie à « l’état de l’art », aux éléments actuellement acceptés par une communauté d’expert, informelle ou non, sur un sujet donné.  On parle de « pratiques web », « pratiques sécurité »
  • 14. Le contexte industriel • Les termes en présence  Boîte à outils Terme très connoté et ambigü, renvoyant le plus souvent à un « patrimoine » de code interne promu par l’entreprise qui l’a mis en place.
  • 15. Le contexte industriel • Les termes en présence  API Équivaut à « librairie ».  Peu usité, à éviter dans les communications non-techniques.
  • 16. Le contexte industriel • Les termes en présence  Composant Sans doute le terme le mieux appréhendé en entreprise  Un composant peut être un web service, une web resource, un module logiciel, etc.  Un composant encapsule une fonction spécialisée, au travers d’une interface. Ils sont perçus comme : Connectables Facilement testables  Substituables
  • 17. Le contexte industriel • Face à toutes ces notions, les décideurs cherchent à mettre en évidence les pistes de valorisation. • Dans l’industrie, les coûts sont engagés sur une espérance de réussite. Déterminer l’impact de la mise en œuvre technologique sur l’espérance de réussite est complexe.
  • 18. Le contexte industriel • Explicitons la notion de « valorisation » – Le « coût » : Matériel, Méthodologie, Temps, etc. – « investissement » : les hommes, la culture, l’image, etc. – « ROI » : quel retour espérer? Le ROI est la plus forte des considérations Il peut être financier mais aussi « politique »
  • 19. Le contexte industriel • Plus finement, si l’on creuse les spécificités de l’outil informatique : • la notion de « dette technique » (dette implique possibilité de banqueroute!) • la notion de « opportunité » • La notion de « common knowledge » (turn-over, community impact, etc.) • La notion de « obsolescence » et de « mode »  Rendent difficile la lecture de l’impact technique sur le ROI
  • 20. Le contexte industriel • En résumé : – La réutilisabilité doit servir le ROI – La réutilisabilité devient un enjeu stratégique quand les plans de développements intègrent des synergies autour de la capacité à réassembler des composants pour construire de nouvelles offres – Les composants permettent une identification des responsabilités très utile pour le management des hommes et des ressources – Les composants doivent servir le ROI
  • 21. Le contexte industriel Intéressons nous aux convergences… qui vont, fort heureusement, se matérialiser autour de la réutilisabilité et des composants.
  • 22. Convergences • La réutilisabilité : pourquoi ? – Robustesse – Coût, temps – Stratégique : se concentrer sur son métier – Modularisation : du travail, des responsabilités – Opportunité : le « cercle vertueux »
  • 23. Convergences • Les besoins de réutilisabilité se différencient par domaine – Édition de logiciel – Grand public, « entertainment » – Applications critiques – …
  • 24. Convergences • La réutilisabilité : quelles modalités? – Opportuniste – Planifiée – Interne – Externe – Par référence – Par duplication
  • 25. Convergences • La réutilisabilité : comment ? – Design patterns – Copier-coller (?) – Arbitrage sur le besoin de réutilisabilité – Le « tout composant » : l’exemple d’AMAZON – Le « standards as components » : l’exemple de GOOGLE – Les points essentiels : • Architecture logicielle • Anticipation & stratégie
  • 26. Convergences En résumé : - Réutiliser n’a de sens que pour maximiser l’efficience. - La méthodologie de réutilisation, sa profondeur vont dépendre du contexte : entreprise, marché, modalités projet - La notion de composant n’apparaît qu’à de très haut niveau d’abstraction pour l’entreprise. Faire entrer un plus bas niveau dans les processus de décision conduit à remettre des problématiques techniques dans des mains de non-techniciens. Réutiliser de manière efficiente est complexe
  • 28. Structure 1. Contexte industriel  Le contexte « industriel »  la perception des notions  Convergences et motifs : réutilisabilité et composants  Un cas d’expérience : le CORE WEB2 2. Réutilisation et composants – En pratique  Réutilisation « passive » et « active »  Composants internes et externes 3. Pratiques actuelles  Présentation d’outils représentatifs de l’outillage actuel favorisé par les éditeurs de logiciel
  • 29. Un cas en détail Le projet « CORE WEB2 »  Contexte :  e.magnus  web émergent (WEB2)  Le besoin de validation externe : Valtech  Un contraste dans la culture d’entreprise, des décisions en réaction aux projets précédents  Importance stratégique (renouvellement de gamme)
  • 30. Un cas en détail La mise en place : - 2006/2007 : choix technologiques - 2007 : module d’essai - 2008-aujourd’hui : les autres modules Les jalons significatifs : - 2008-2009 : - extraction du « core » - Mise en place de l’intégration continue - 2010 : extraction du « core sedit » - 2008-2010 : - Mise en place des sessions de montée en compétence - Documentation - 2012 : Démarrage des autres projets - 2014 : Intégration nouvelle couche de présentation
  • 31. Un cas en détail Les défis : - Gestion de l’obsolescence - Passage à java 5, 6, 7 … - Spring, Hibernate … - JPA! - HTML5 - Gestion du turn over - Gestion des multiconfigurations (n4ds, clients hébergés, hébergeants ou autonomes…)
  • 32. Un cas en détail Aujourd’hui :  Une réutilisation opportuniste mais nuancée par  L’architecture  L’urbanisation  Des composants qui ont émergé au fil des besoins  L’importance de la culture de l’approche mise en avant  Intégration continue  Revues de code, mise en avant des bonnes pratiques Dashboards de développement
  • 34. Structure 1. Contexte industriel  Le contexte « industriel »  la perception des notions  Convergences et motifs : réutilisabilité et composants  Un cas d’expérience : le CORE WEB2 2. Réutilisation et composants – En pratique  Réutilisation « passive » et « active »  Composants internes et externes 3. Pratiques actuelles  Présentation d’outils représentatifs de l’outillage actuel favorisé par les éditeurs de logiciel
  • 35. Réutilisation & composants Les objectifs de cette partie: - Réutilisation : - Connaître les possibilités de stratégie de réutilisation - Savoir adapter et sécuriser les exigences de réutilisation - Composants : - Connaître l’impact du « périmètre » sur la définition des composants - Sélectionner les approches les plus efficientes pour favoriser la qualité des composants
  • 36. Réutilisation & composants Réutilisation (rappel) : - opportuniste / planifiée - interne / externe - par référence / par copie Concrètement, que faire pour favoriser la réutilisation ?  Outre le contexte (projet, humain, groupe), la réponse va varier selon le « rôle » des intervenants
  • 37. Réutilisation & composants Au vu du contexte présenté, l’expérience montre qu’il y a plusieurs axes d’actions significatifs : - La réutilisatibilité « passive » - La réutilisabilité « active »  « passif » ne signifie pas inactif!  Comment implémenter ces deux approches?
  • 38. Réutilisation & composants Objectifs généraux de la réutilisabilité « passive »: - Mettre le logiciel en condition de répondre rapidement aux demandes d’évolution par réutilisation totale ou partielle - Favoriser les opportunités de réutilisation Positionner la réutilisabilité comme un des indicateurs de qualité  Plutôt qu’une réutilisation effective, un état n’empêchant pas la réutilisation
  • 39. Réutilisation & composants Objectifs généraux de la réutilisabilité « active »: - Rechercher et promouvoir les opportunités de réutilisation - Dédier une part significative des efforts à la pratique de la réutilisatibilité  La réutilisabilité devient un objectif formel
  • 40. Réutilisation & composants La réutilisabilité « passive » : dans le détail
  • 41. Réutilisation & composants Réutilisabilité « passive » en détail: - Bonnes pratiques - Intégration continue  feedback - Design patterns - Librairies reconnues et composants réutilisables  Ces approches sont éprouvées
  • 42. Réutilisation & composants « Bonnes pratiques » : un socle
  • 43. Réutilisation & composants Réutilisabilité « passive » : Bonnes pratiques - DRY - YAGNI - SOLID - KISS - SRP, SSOT, etc.  Très générales, approches non formelles
  • 44. Réutilisation & composants Dans le détail : - DRY = Don’t Repeat Yourself (versus WET) - YAGNI = You Ain’t Gonna Need It - KISS = Keep It Simple And Stupid
  • 45. Réutilisation & composants SOLID est plus complet : – S : SRP – O : OCP – L : LSP – I : ISP – D : DIP 
  • 46. Réutilisation & composants - S = SRP = Single Responsibility Principle - Une seule responsabilité par classe - O = OCP = Open/Closed Principle - Ouvert aux extensions, fermé aux modifications - L = LSP = Lyskov’s Substitution Principle - Design par contrats / substitution par types spécialisés - I = ISP = Interface Segregation Principle - Plusieurs interfaces simples plutôt qu’une complexe - D = DPI = Dependency Inversion Principle - Dépendre des interfaces plutôt que des types concrets
  • 47. Réutilisation & composants Les bonnes pratiques sont acquises avec le temps et l’expérience.  Un processus est là pour aider l’assimilation, la gestion des pratiques : l’intégration continue
  • 48. Réutilisation & composants L’intégration continue : une bonne pratique
  • 49. diapo 49 85% des bugs sont introduits durant la phase de codage. 50% des bugs sont trouvés durant la phase de test Le coût de correction des bugs augmente au fur et à mesure que l’on avance dans les phases L’idée est de détecter les anomalies lors la phase où ils sont introduits Pourquoi intégrer en Continu ?
  • 50. diapo 50 Qu’est-ce que l’Intégration Continue ? • L’intégration continue est une pratique du développement logiciel dans laquelle les membres d’une équipe intègrent leur travail régulièrement. • Chaque intégration est vérifiée par une construction automatisée (test y compris) afin de détecter les anomalies potentielles au plus tôt. Processus d’assemblage et de vérification périodique et automatique d’un programme informatique
  • 52. Réutilisation & composants L’intégration continue représente un investissement pour la société qui décide de la mettre en œuvre.  Toutefois, l’intégration d’un produit OSS afin de profiter des remontées de métriques peut conduire à un retour d’informations guidant les efforts de qualité de code.  Les règles implémentées traitent des bonnes pratiques
  • 55. Réutilisation & composants « Un pattern de design décrit une structure de composantes communicantes qui se reproduit couramment et qui résout un problème de design général dans un contexte particulier » Gamma & al, Design Patterns, 1994
  • 56. Réutilisation & composants Réutilisabilité « passive » : Design patterns Quelques patterns très fréquents : - Observer - Factory - Memento - Facade - DAO - Inversion de contrôle  nous y reviendrons plus tard
  • 57. Réutilisation & composants Pattern « OBSERVER » Couplage lâche entre des modules « observables » et modules « observateurs »  Deux rôles « observables » / « observateurs »  Réduire la dépendance à l’information échangée  Attention aux problématiques de fuite mémoire (références sur les observateurs) Domaines :  Librairies IHM  MVC
  • 59. Réutilisation & composants Pattern « FACTORY » Permet d’introduire un niveau d’abstraction entre un objet utilisateur d’un module et le type réel du module  Le principe repose sur l’héritage (interface) entre un objet créateur abstrait et des créateurs concrets  Domaines très variés :  parsers  Toolkits GUI  etc.
  • 61. Réutilisation & composants Pattern « MEMENTO » Permet la sauvegarde et le rappel d’états sur un objet  Trois rôles :  Le sujet : l’objet dont on veut conserver l’état  Le gardien (« caretaker ») : conserve un état demandé au sujet  Le memento : l’objet sauvegardant l’état
  • 62. Réutilisation & composants Pattern « MEMENTO »  Dans ce pattern, le sujet doit être capable de produire et lire des objets memento représentant un état interne lui appartenant. La gestion des états est réalisée par le gardien, qui ne doit pas avoir d’interaction avec le contenu des mementos  Domaines très variés :  CTRL+Z  Etats IHM  Jeux vidéos
  • 64. Réutilisation & composants Pattern « FACADE » Permet de masquer la complexité d’un système  Point de départ possible pour l’utilisation des patterns « ADAPTER » et « DECORATOR » Domaines très variés :  reformulation de l’utilisation d’une ou plusieurs librairies  substitution d’une collection d’API par une API unifiée  rénovation d’applications
  • 66. Réutilisation & composants Un mot sur les motifs évoqués Pattern « ADAPTER »  Résoudre des incompatibilités d’interfaces  Permettre l’usage de classes existantes sans modifier leur implémentation  Peut être implémenté en mettant à profit l’encapsulation ou le polymorphisme
  • 67. Réutilisation & composants • Par encapsulation
  • 68. Réutilisation & composants • Par polymorphisme
  • 69. Réutilisation & composants Pattern « DAO » Objet fournissant une interface permettant l’abstraction d’un support de stockage  Typiquement, les DAO sont très courantes dans le monde J2EE sur base de données relationnelles car Sun avait intégré ce pattern dans les « CORE J2EE Patterns »
  • 70. Réutilisation & composants Pattern « DAO »  Ce pattern respecte le SRP et permet la séparation entre les besoins de l’application (interface du DAO) et la manière dont la persistance est réalisée (implémentation du DAO)  Typiquement, dans une application métier, ce sont les opérations CRUD qui sont implémentées :  Create / Read / Update / Delete
  • 72. Réutilisation & composants Pattern « DAO »  Avantages :  Masquer les détails du système de persistance aux couches supérieures  Intermédiaire identifié entre l’application et la persistance  Les changements apportés au système de persistance sont confinés  Permet et facilite le test unitaire  Inconvénients : Duplication de code (?)  L’abstraction masque les coûts de persistance
  • 73. Réutilisation & composants Toutefois, le pattern « active record » trouve une réelle popularité auprès des application de petites à moyenne taille…
  • 75. Réutilisation & composants Qu’est ce qui distingue un « anti pattern » d’une « mauvaise pratique »? C’est un design utilisé couramment comme réponse à une problématique générale dans un contexte particulier, qui se révèle avoir des conséquences négatives supérieures aux apports positifs. ET  Il existe une solution alternative, documentée, répétable et effective. (Andrew Koenig, AntiPatterns, 1998)
  • 76. Réutilisation & composants Réutilisabilité « passive » : Design patterns Quelques anti-patterns : - Singleton - God object - Over-engineering - Feature-creep « Don’t do this at home »
  • 77. Réutilisation & composants Pattern « SINGLETON » Décrit dans le GoF … mais!  Je le classe en anti-pattern… dans un contexte industriel J2EE. Les raisons :  Faire un objet global pour transporter de l’information masque les dépendances  Violation du SRP car ils contrôlent leur cycle de vie  Couplage fort : difficulté de tests
  • 78. Réutilisation & composants Pattern « Over-engineering »  Dérive du YAGNI  Réflexe naturel mais à surveiller  Il est plus efficient d’appliquer les principes de responsabilités en permanence et de ne pas présumer des périmètres plutôt que de sur- concervoir.  Rejoint l’aphorisme « Early optimization is the root of all evil » (Donald Knuth)
  • 79. Réutilisation & composants Pattern « Feature creep » Dérive aussi du YAGNI  Dérive du KISS  Peut être poussé par la direction projets  Même dans le cadre d’un métier très précis (BergerLevrault), les questions d’IHM, d’aide, etc. restent des « features ». Attention à bien formaliser toutes les features.
  • 80. Réutilisation & composants Pattern « GOD OBJECT » Correspond à l’inflation d’une classe d’objet ou d’un objet en particulier, souvent avec le temps  Peut être lié à Singleton  Inacceptable dans le cadre d’un logiciel pour lequel on veut appliquer de bonnes pratiques
  • 81. Réutilisation & composants Et il en existe bien d’autres : - « marteau en or » (golden hammer) - « ancre de bateau » (boat anchor) - Error hiding - Cargo-cult programming - Poltergeist - Sequential coupling - Super call mandatory - Circular dependencies - Anemic Domain Model - Etc.
  • 82. Réutilisation & composants La réutilisabilité « active » : dans le détail
  • 83. Réutilisation & composants RAPPEL Objectifs généraux de la réutilisabilité « active »: - Rechercher et promouvoir les opportunités de réutilisation - Dédier une part significative des efforts à la pratique de la réutilisatibilité  La réutilisabilité devient un objectif formel
  • 84. Réutilisation & composants Comment, en entreprise, matérialiser l’objectif de réutilisabilité? Identifier les thématiques de « haut niveau » pertinentes pour le métier  Identifier les points de synergie  Urbaniser les projets
  • 86. Structure 1. Contexte industriel  Le contexte « industriel »  la perception des notions  Convergences et motifs : réutilisabilité et composants  Un cas d’expérience : le CORE WEB2 2. Réutilisation et composants – En pratique  Réutilisation « passive » et « active »  Composants internes et externes 3. Pratiques actuelles  Présentation d’outils représentatifs de l’outillage actuel favorisé par les éditeurs de logiciel
  • 87. Pratiques actuelles • Introduction à un ensemble de frameworks qui composent un outillage standard favorisé par les éditeurs de logiciels, en 2014 • Ces outils: – JAVA EE – Apache Maven – Spring – JBOSS Hibernate (JPA-provider) – Apache commons
  • 89. ORACLE JAVA EE « The Java EE platform provides an API and runtime environment for developing and running large-scale, multi-tiered, scalable, reliable, and secure network applications. » ORACLE DOCS
  • 90. ORACLE JAVA EE • JAVA EE est fortement modulaire et permet la mise en place d’architectures complexes • JAVA EE propose une approche « convention over configuration », c’est aussi une spécification (i.e. avec certification, par exemple pour les serveurs d’application) • JAVA EE 6 & 7 ont voulu refermer le gap ouvert par SPRING
  • 91. ORACLE JAVA EE  Composants
  • 92. ORACLE JAVA EE  Web profile
  • 93. ORACLE JAVA EE • Les domaines stratégiques adressés : – Persistance • JPA, JTA, JDBC • EJB  CRUCIAL pour la gestion de la concurrence et des transactions – Communication • JMS, JNDI, Java RMI, JaxB, … – Sécurité • Java EE security – Modularisation & business logic • CDI • Batch services • Validation
  • 94. ORACLE JAVA EE – Présentation • JSF, JSP, etc. – Monitoring, resource management • JMX Une application peut ne faire usage que d’une partie de ces composants  Une application « full JAVA EE » Profite de containers dédiés Profite d’outils dédiés  « subit » les rythme d’évolution imprimé par ORACLE
  • 95. ORACLE JAVA EE Dans les faits : • JPA poussé par Hibernate • Convergence autour des annotations • Les entreprises évaluent les alternatives pour chaque composant: – enseignement lié aux EJB2 – Constat pragmatique de la « vivacité » d’un Spring versus Oracle
  • 96. ORACLE JAVA EE Si l’on s’intéresse à une implémentation hybride, mêlant JAVA EE et Spring…  Projet « core web2 » de gestion de configuration
  • 97. MAVEN
  • 98. Apache MAVEN  MAVEN – Produit open-source développé par APACHE – « MAVEN est à Ant ce que C++ est à C »  on peut aussi faire le parallèle avec « Make » – « Maven » signifie « celui qui sait et qui transmet » en Hébreu – GRAILS est un concurrent  Caractéristiques – Maven se présente comme un « runtime » permettant « d’exécuter » des fichiers descripteurs spécifiques : similarité avec ANT – Il existe « Maven1 » et « Maven2 » : ce sont des implémentations très différentes.
  • 99. Apache MAVEN  Pourquoi Maven ?  Indépendance de l’IDE  Courbe d’apprentissage du cycle de vie simplifiée  Gestion automatique des dépendances  Structuration et cycle de vie standard  Partie « tests » élaborée : rapports, etc.  Pas d’équivalent dans JAVA EE?
  • 100. Apache MAVEN  Objectifs – Offre un format de description unifié, au format XML qui sera associé à un projet Java : le POM (Project Object Model) – Ce format va permettre la gestion et l’automatisation de production de projets logiciels, Java notamment, par une description normalisée des actions/commandes à chaque étape du cycle de vie du projet  Fonctionnement – MAVEN se repose sur la notion de cycle de vie : il est découpé en « goals » – Chaque goal va représenter une série de tâches automatisées que Maven va exécuter en prenant des informations du POM – Le cycle de vie est représenté par un set défini de goals, il existe néanmoins d’autres goals, à usage technique, documentaire, etc.
  • 101. Apache MAVEN  Fonctionnement – Le cycle de vie défini par Maven reprend des goals qui vont ponctuer le développement d’un projet. • compile : directives de compilation du projet • test : exécution de TU, d’analyseur de couverture de code, etc. • package : assemblage d’un livrable (EAR, WAR, …) • install : transfert du livrable vers un entrepôt • deploy : installation automatisée du livrable  Ces goals représentent le cycle de vie par défaut – Exemples d’autres goals, hors cycle de vie : • site-deploy : déploiement automatisé d’un site, typiquement généré, par exemple des rapports de métriques projet • clean : nettoyage de cache, … • eclipse : génération des fichiers de configuration Eclipse nécessaires à un projet
  • 102. Apache MAVEN  Fonctionnement – Les POM vont aussi permettre la description et gestion des dépendances (le « Jar Hell ») • De manière générale, chaque élément manipulé par maven (librairie, livrable) va être décrit de façon homogène : – groupId : classification projet (org.apache.maven, fr.bl.core, …) – artifactId : nom du livrable/librairie – packaging : format du livrable/librairie (jar, war, …) – version : version du livrable/librairie • Les librairies sont liées au projet avec une visibilité donnée : compile-time, run-time, … • On peut lier des artefacts de tous types à son projet
  • 103. Apache MAVEN  Fonctionnement – Les POM peuvent hériter d’un autre POM • C’est un élément différenciateur fort • On hérite alors des dépendances que le pom parent décrit : c’est la transitivité des dépendances • MAVEN se charge de faire des retours sur les cycles de dépendances, les inclusions de librairies identiques à des versions différentes, … • MAVEN permet l’automatisation de la récupération des librairies à partir des informations du POM : l’objectif est à terme de n’avoir qu’un fichier XML à modifier pour altérer une configuration technique de projet • Les POM peuvent n’être associé à aucun projet et servir de « descripteur intermédiaire », notamment pour mutualiser des descriptions de dépendances
  • 104. Apache MAVEN  MAVEN « Convention over Configuration » :  Cela signifie que le fonctionnement de MAVEN va pouvoir s’adapter à tous types de projet, la charge de configuration étant inversement proportionnelle au respect des conventions maven par le projet.  Maven fondamentalement :  Propose une structuration de projet  Impose la présence d’un descripteur de projet : le POM (Project Object Model). Ce fichier est placé au sein du projet, hors des sources.
  • 105. Apache MAVEN La structuration est de la forme :
  • 106. Apache MAVEN  Détails de la structuration: • src : répertoire global des sources du projet • main : répertoire principal des sources du projet • java : répertoire des « .java » • resources : répertoire des ressources externes • test : répertoire des sources de tests du projet • java : répertoire des « .java » • resources : répertoire des ressources externes • target : répertoire d’écriture du livrable • pom.xml : descripteur MAVEN
  • 107. Apache MAVEN <project> <modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>Maven Quick Start Archetype</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
  • 108. Apache MAVEN – Le fonctionnement de MAVEN se repose entièrement sur les plugins • l’écosystème est « opaque » actuellement • Ces plugins permettent l’xtensibilité de fonctionnement, cf. exemple pour GWT • Les plugins peuvent s’insérer pour n’importe quel goal – Le fonctionnement de MAVEN pour les dépendances, s’appuie sur des notions d’entrepôts: – Local : par configuration – Partagé : exemple à Berger-Levrault avec ARCHIVA – Internet : il existe des entrepôts publics de dépendances (avec système de blacklist)
  • 109. Apache MAVEN  MAVEN – Chaque POM est lié à un endroit désigné du SCM • Utilisé pour les opération de tag, de release • Important à gérer pour les branches de développement – La liaison au SCM va permettre à maven d’effectuer automatiquement des tâches • Commit • Check out  Les historiques SCM intègrent des informations poussées par MAVEN – MAVEN ne fonctionne pas avec un compte dédié pour les opérations SCM, il s’appuie sur une identification fournie au préalable • C’est donc « en votre nom » qu’il effectue ses opérations
  • 110. FIN DE LA PREMIÈRE PARTIE
  • 111. SPRING
  • 112. JPA & JBOSS Hibernate
  • 114. Retour d’expérience • Le contexte – Le « WEB2 » – Renouvellement produit • La mise en place – coût versus utilité – croyances versus faits – anticipation versus court terme