Refactoring. des applications Java/J2EE. Jean-Philippe Retaillé. Olivier Salvatori Thierry Templier Michel Hue. avec la contribution de



Documents pareils
Virtualisation. du poste de travail Windows 7 et 8. avec Windows Server 2012

Déploiement et migration Windows 8 Méthodologie Compatibilité des applications ADK MDT 2012 ConfigMgr 2012 SCCM 2012 Windows Intune MDOP

Groupe Eyrolles, 2004 ISBN :

L EAI. par la pratique. François Rivard. Thomas Plantain. Groupe Eyrolles, 2003 ISBN :

Groupe Eyrolles, 2004, ISBN :

PHP. Performances. Audit et optimisation LAMP. Julien Pauli. Cyril Pierre de Geyer. Guillaume Plessis. Préface d Armel Fauveau

Groupe Eyrolles, 2006, ISBN :

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

Glassfish dans le milieu médical. Sun Aquarium Paris 26 Juin 2009 Jacky Renno

Sécurité et mobilité Windows 8

OFFRE MDB Service & Architecture Technique. MyDataBall Saas (Software as a Service) MyDataBall On Premise

ITIL. optimal. pour un service informatique. 2 e édition C H R I S T I A N D U M O N T. Préface de Patrick Abad

Fabien Pinckaers Geoff Gardiner. OpenERP. Tiny. Pour une. gestion d entreprise efficace et intégrée. Groupe Eyrolles, 2008, ISBN :

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Introduction à JDBC. Accès aux bases de données en Java

Table des matières Introduction Démarrage Les composants graphiques... 26

FLEX 3. Applications Internet riches avec Flash ActionScript 3, MXML et Flex Builder. Aurélien Vannieuwenhuyze

Réussir. son site e-commerce. avecoscommerce

Expert technique J2EE

Formation en Logiciels Libres. Fiche d inscription

Groupe Eyrolles, 2004 ISBN :

et Groupe Eyrolles, 2006, ISBN :

Continuité. Management de la. d activité. Assurer la pérennité de l, entreprise : planification, choix techniques et mise en œuvre 2 e édition

Plateforme de capture et d analyse de sites Web AspirWeb

ÉVALUATION DE LA MAINTENABILITÉ DE S3MDSS AVEC L OUTIL SONAR

PARTIE 1. Phénoménologie

Rapport de Synthèse. Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon

Java et les bases de données

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Youssef LYHYAOUI Ingénieur Java/J2EE, SOA, ESB, Web services 31 ans Statut : Indépendant SITUATION ACTUELLE

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

CobiT. Implémentation ISO 270. Pour une meilleure gouvernance des systèmes d'information. 2 e édition D O M I N I Q U E M O I S A N D

Consultant MOE/Référent technique JAVA/J2EE JSF, RICH FACES

Hassene BELGACEM. Expériences Professionnelles. JEE architect / Technical leader. Ingénieur Informatique. Cycle Préparatoire

FileMaker Server 14. Guide de démarrage

FreeMind. Freeplane XMind. 2 e édition. Bien démarrer avec le Mind Mapping. . Groupe Eyrolles, 2010, ISBN :

Olivier Deheurles Ingénieur conception et développement.net

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

L Intégration Continue & Agilité

Table des matières. Partie I CobiT et la gouvernance TI

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

Tel : Fax :

APIs de table pour SQL Server

Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles

Les nouveaux tableaux de bord des managers

SQL Server 2012 Implémentation d'une solution de Business Intelligence (Sql Server, Analysis Services...)

MÉTHODOLOGIE PROJET SYSTÈME D INFORMATION DÉCISIONNEL BI - BUSINESS INTELLIGENCE. En résumé :

PROFIL DU CANDIDAT. Ingénieur Etudes confirmé JAVA ans d expérience

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

Cursus Sage ERP X3 Outils & Développement. CURSUS Sage ERP X3 Outils & Développement ADVANCED. Outils avancés. 2 jours X3A-ADM. Développement 1 &2

Squale Le portail qualimétrie open-source

agiles Les services et les processus Retours d expérience basés sur ITIL v3 études, développement & intégration

Auto-évaluation Aperçu de l architecture Java EE

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Table des matières. Avant-propos... Préface... XIII. Remerciements...

LA NÉGOCIATION COMMERCIALE EN PRATIQUE

Conduite de projets informatiques Développement, analyse et pilotage (2ième édition)

COMPÉTENCES TECHNIQUES

Data Tier Application avec SQL Server 2008 R2

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

avast! EP: Installer avast! Small Office Administration

Java DataBaseConnectivity

SQL Server Administration d'une base de données transactionnelle avec SQL Server Management Studio (édition enrichie de vidéos)

FileMaker Server 14. Aide FileMaker Server

Cyrille GUERIN 823, place Soulanges Brossard, J4X1L8

DEVELOPPEMENT ET MAINTENANCE DE LOGICIEL: OUTIL DE PILOTAGE

Optimisations des SGBDR. Étude de cas : MySQL

Président d Inotekk Gestion de la société, développement du portefeuille clients, gestion et réalisation des projets informatiques

Rapport de Stage Christopher Chedeau 2 au 26 Juin 2009

Chef de projet H/F. Vous avez au minimum 3 ans d expérience en pilotage de projet de préférence dans le monde du PLM et de management d équipe.

Formation : Langues : Types d Intervention et Secteurs d Activité :

et dépannage de PC Configuration Sophie Lange Guide de formation avec exercices pratiques Préparation à la certification A+

Catalogue Formation «Vanilla»

Présentation des nouveaux services de l ENT Second degré Rentrée scolaire 2015 et fin du 1 er trimestre de l année scolaire

Bases de données et environnements distribués Chapitre I : Architecture logicielle technologies de developpement en environnement

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Postes à pourvoir 2015

Livret de Stages 2014 / 2015

Compte Rendu d intégration d application

Un serveur d'archivage

Groupe Eyrolles, 2006, ISBN : X

Méthode Agile de 3 ème génération J-P Vickoff

Spring par la pratique

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme?

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

X2BIRT : Mettez de l interactivité dans vos archives

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Projet de Java Enterprise Edition

L enseignement de méthodes agiles dans un contexte d apprentissage actif

Gestion d Epargne de Crédit & Comptabilité

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Transcription:

Refactoring des applications Java/J2EE Jean-Philippe Retaillé avec la contribution de Olivier Salvatori Thierry Templier Michel Hue Groupe Eyrolles, 2005 ISBN : 2-212-11577-6

Table des matières Remerciements.............................................. Avant-propos................................................ Objectifs de cet ouvrage...................................... Organisation de l ouvrage.................................... À propos des exemples........................................ À qui s adresse l ouvrage?.................................... V XV XV XVI XVI XVII CHAPITRE 1 L évolution logicielle et le refactoring....................... 1 La problématique de l évolution logicielle....................... 2 Le cycle de vie d un logiciel................................... 2 Les lois de l évolution logicielle................................ 4 L érosion du design.......................................... 6 Le rôle de la maintenance dans l évolution logicielle................ 8 Le périmètre d intervention du refactoring...................... 10 Les niveaux de refactoring..................................... 10 Le processus de refactoring.................................... 11

VIII Refactoring des applications Java/J2EE Bénéfices et challenges du refactoring............................ 13 Anticipation du refactoring..................................... 14 Le refactoring au sein des méthodes agiles...................... 15 Le manifeste du développement logiciel agile...................... 15 Les méthodes agiles.......................................... 17 Rôle du refactoring dans les méthodes agiles....................... 19 Conclusion.................................................. 20 PARTIE I Le processus de refactoring CHAPITRE 2 Préparation du refactoring................................... 23 La gestion de configuration.................................... 23 Les principes................................................ 24 Gestion des modifications de ressources.......................... 25 Gestion des branches......................................... 28 Gestion des clichés........................................... 30 Gestion de configuration dans le cadre du refactoring................ 31 Gestion des tests et des anomalies.............................. 32 Les tests unitaires............................................ 33 Les tests fonctionnels......................................... 36 Les tests de charge........................................... 38 L analyse de couverture....................................... 41 Gestion des anomalies........................................ 44 Conclusion.................................................. 49 CHAPITRE 3 L analyse du logiciel......................................... 51 L analyse quantitative du logiciel............................... 51 La métrologie............................................... 52 Les mesures des dimensions du logiciel........................... 56 Les mesures des risques....................................... 59 Les mesures de cohérence..................................... 64

Table des matières IX Les mesures de la qualité du logiciel............................. 68 Les mesures de performance................................... 70 L analyse qualitative du logiciel................................ 71 Les revues d architecture...................................... 71 Les revues de code........................................... 74 Sélection des candidats au refactoring.......................... 79 Conclusion.................................................. 80 CHAPITRE 4 Mise en œuvre du refactoring............................... 81 Support du refactoring de code dans Eclipse.................... 82 Les assistants de refactoring.................................... 82 Le mode prévisualisation...................................... 84 Défaire et refaire une opération de refactoring...................... 85 Les techniques de refactoring du code.......................... 86 Renommage................................................ 86 Extraction d une méthode..................................... 91 Extraction de variable locale................................... 97 Extraction de constante....................................... 101 Extraction d interface......................................... 106 Changement de signature d une méthode......................... 110 Généralisation d un type...................................... 116 Déplacement d éléments...................................... 120 Déplacement d éléments dans le graphe d héritage.................. 123 Remplacement d une variable locale par une expression.............. 126 Remplacement d une méthode par son corps....................... 128 Remplacement d une constante par sa valeur littérale................ 132 Conclusion.................................................. 135 CHAPITRE 5 Les tests unitaires pour le refactoring...................... 137 Les tests unitaires avec JUnit.................................. 137 Les cas de test............................................... 137 Les assertions et l échec....................................... 141 Les suites de tests............................................ 142

X Refactoring des applications Java/J2EE Exécution des tests........................................... 144 Au-delà de JUnit............................................. 148 Les simulacres d objets avec EasyMock......................... 149 Les simulacres bouchons...................................... 149 Les simulacres avec contraintes................................. 154 Les simulacres de classes...................................... 158 Autres considérations sur les simulacres.......................... 158 Analyse de couverture avec EMMA............................ 159 Mise en place de EMMA...................................... 159 Instrumentation du code....................................... 160 Génération du rapport......................................... 162 Utilisation des tests unitaires pour le refactoring................. 163 La démarche................................................ 163 Exemple d application........................................ 164 Conclusion.................................................. 168 PARTIE II Techniques avancées de refactoring CHAPITRE 6 Le refactoring avec les design patterns..................... 171 Les design patterns........................................... 171 Mise en œuvre des design patterns dans le cadre du refactoring........ 173 Utilisation des modèles comportementaux....................... 174 Le pattern observateur........................................ 174 Le pattern état............................................... 180 Le pattern interpréteur........................................ 186 Le pattern stratégie........................................... 190 Amélioration de la structure des classes......................... 195 Le pattern proxy............................................. 195 Le pattern façade............................................. 200 Le pattern adaptateur......................................... 205 Conclusion.................................................. 210

Table des matières XI CHAPITRE 7 Refactoring avec la POA (programmation orientée aspect). 211 Principes de la programmation orientée aspect.................. 212 Les problématiques adressées par la POA......................... 212 Les notions introduites par la POA.............................. 213 Modularisation des traitements................................ 218 Extraction d appels........................................... 218 Implémentation par défaut pour les interfaces...................... 222 Gestion des exceptions........................................ 227 Gestion des variantes......................................... 234 Optimisation des traitements.................................. 238 Gestion de cache............................................. 238 Remplacement de méthode.................................... 242 Analyse du logiciel et tests unitaires............................ 245 Analyse d impacts........................................... 246 Respect de contrat........................................... 248 Tests unitaires de méthodes non publiques........................ 252 Conclusion.................................................. 255 CHAPITRE 8 Refactoring de base de données............................ 257 La problématique du refactoring avec les bases de données........ 257 Refactoring de la structure de la base........................... 258 Stockage séparé des données opérationnelles et historiques........... 258 Découplage de la structure de la base et du reste du logiciel........... 259 Utilisation des vues.......................................... 260 Utilisation des index.......................................... 260 Refactoring des requêtes SQL................................. 261 Limitation des colonnes ramenées par un SELECT.................. 261 Limitation des lignes ramenées par un SELECT.................... 262 Limitation des colonnes modifiées par un UPDATE................. 262 Définition des colonnes d un INSERT............................ 263 Refactoring de l utilisation de JDBC........................... 264 Utilisation de StringBuffer..................................... 264 Utilisation d un pool de connexions.............................. 265

XII Refactoring des applications Java/J2EE Fermeture des ressources inutilisées.............................. 269 Réglage de la taille du tampon d un resultset....................... 270 Utilisation de noms de colonnes plutôt que de numéros.............. 271 Utilisation de PreparedStatement au lieu de Statement............... 272 Mises à jour en mode batch.................................... 274 Gestion des transactions....................................... 275 Conclusion.................................................. 277 PARTIE III Étude de cas CHAPITRE 9 Présentation de l étude de cas.............................. 281 Cahier des charges du logiciel................................. 281 JGenea, une solution Java pour la généalogie.................... 282 Architecture de JGenea Web.................................. 282 Récupération de JGenea Web.................................. 289 Connexion avec le référentiel CVS.............................. 290 Récupération du code de JGenea Web............................ 292 Paramétrage et validation...................................... 294 Fonctionnalités d Eclipse utiles pour l étude de cas............... 297 Fonctionnalités du client CVS.................................. 297 Fonctionnalités de recherche dans le code......................... 298 Conclusion.................................................. 299 CHAPITRE 10 Analyse de JGenea Web..................................... 301 Analyse quantitative.......................................... 302 Informations sur la documentation du code........................ 302 Statistiques sur les bogues..................................... 302 Statistiques du référentiel CVS.................................. 304 Métriques logicielles.......................................... 307 En résumé.................................................. 311

Table des matières XIII Analyse qualitative........................................... 311 Revue de code.............................................. 311 Revue de conception......................................... 319 En résumé.................................................. 320 Conclusion.................................................. 321 CHAPITRE 11 Refactoring de JGenea Web................................. 323 Réorganisation et mise à niveau................................ 323 Réorganisation des imports.................................... 323 Mise à niveau du code........................................ 324 Test des modifications........................................ 327 Application des techniques de base............................. 327 Réorganisation des packages et des classes........................ 327 Réorganisation des variables et des constantes..................... 330 Refonte des classes métier..................................... 331 Utilisation des design patterns dans la gestion des accès aux données 338 Implémentation du design pattern stratégie........................ 338 Refonte des DAO............................................ 342 Refonte des actions Struts..................................... 343 Test des modifications et analyse postrefactoring................... 345 Modularisation avec un aspect................................. 346 Pour aller plus loin........................................... 348 PARTIE IV Annexe Installation d Eclipse......................................... 351 Installation de PMD sous Eclipse.............................. 351 Installation de Checkstyle sous Eclipse......................... 354 Installation de Metrics sous Eclipse............................ 356 Téléchargement d EMMA.................................... 357 Téléchargement du client CVS pour Windows................... 357 Téléchargement de StatCVS................................... 358

XIV Refactoring des applications Java/J2EE Téléchargement de Tomcat.................................... 359 Installation et configuration du plug-in Tomcat de Sysdeo pour Eclipse 359 Installation du plug-in AJDT pour Eclipse...................... 360 Script DDL de JGenea Web................................... 362 Références.................................................. 372 Index......................................................... 373