Mise en œuvre d'un processus outillé autour de Java Référence : DEV-JAVA-SV-PROCES Durée : 5 jours soit 35 heures Population visée : Ouvrier – Employé – Employé qualifié – Cadre – Cadre supérieur Filière : Développement Stage disponible en mode « In Class » Public concerné : Ce cours s'adresse à des architectes logiciels ou à des programmeurs expérimentés en charge d'un développement informatique complexe d'un point de vue purement technique ou de par sa taille (durée et équipe de production). PRÉ-REQUIS • Connaître la syntaxe du langage Java OBJECTIFS PEDAGOGIQUES • Pour mener correctement à termes un projet informatique d'envergure, un processus de développement outillé doit être mis en œuvre au sein d'une équipe. Il devient alors obligatoire que chacun maitrise les différentes étapes de ce processus et connaisse l'intérêt des outils qui le complètent. La modélisation de l'application est une des parties clés d'un tel processus. Bien souvent des projets prennent du retard parce qu'au démarrage de celui-ci, sa modélisation a été sous-estimée. Le test logiciel, lui aussi, a toujours été un facteur fondamental du développement informatique mais il est devenu primordial du fait de la complexité des logiciels et des intérêts engagés. Comme toute démarche d'Assurance qualité, le test logiciel est l'affaire de tous, architectes et développeurs. Ce cours vous permet de découvrir les techniques et les moyens à mettre en œuvre pour dérouler un processus adapté à votre projet. • • • • • • OBJECTIFS OPERATIONNELS ET CONTENU DE LA FORMATION Présentation rapide d'un processus outillés complet • • • • • • • • • • Conduite d'un projet informatique Définir les exigences du logiciel et garantir leur traçabilité Choisir une méthodologie de conception du logiciel Le processus unifié MDA (Model Driven Approach) XP (eXtrem Programming) Analyser et concevoir une application Mettre en œuvre une solution de gestion de configuration Mettre en œuvre une procédure de " Build Night " Les outils de développement et de profiling Mise en œuvre de tests unitaires et garantir leur traçabilité Réaliser des revues de code et garantir leur traçabilité Intégrer les différents éléments logiciels et réaliser les tests d'intégration Page 1/4 - Mise en œuvre d'un processus outillé autour de Java - Mise à jour le 13/02/2013 Concepteur : ENI SERVICE – Diffuseur : Groupe ARKESYS • Tester le système Modéliser (Analyse et Conception) votre application • • • • • • • • Choix d'un modeleur UML Notion d'exigences Définition des exigences Traçabilité des exigences Modélisation des cas d'utilisations (Use cases) Les cas d'utilisations définissent les tests Analyse du système et de ses composants logiciels Identifier les composants logiciels De l'intérêt du couplage par interface Définir le plan de lotissement Les différents jalons d'intégration Définir correctement les itérations et leur caractère incrémental Conception du système Conception détaillée de chacun des composants logiciels Génération de code à partir du modèle Génération des documentations à partir du modèle Préparer son environnement de travail • • • Les outils de développement et de profiling Choisir son IDE et les plugins adéquats Les outils complémentaires indispensables Mettre en œuvre une solution de gestion de configuration Installation de SVN Prise en main de l'outil en mode ligne de commande Intégration de SVN au sein d'Eclipse Mettre en œuvre une procédure de " Build Night " Comparatif entre ANT et Maven Quelques conseils importants (code/documentation/…) Les différentes API de logging • • • • Introduction Nécessité de conserver les traces d'un jeu de tests Nécessité de filtrer les traces L'API de SUN (java.util.logging Fonctionnement général Utilisation de l'API L'API Log4J (the Apache Software Foundation) Fonctionnement général Utilisation de l'API Editer le fichier de configuration de Log4J L'API JCL (Java Commons Logging - the Apache Software Foundation) Fonctionnement général Utilisation de l'API Le framework JUnit • • Nécessité des jeux de tests unitaires Garantir le fonctionnement nominal Garantir la non régression de votre code Mise en œuvre d'un jeu de test JUnit Intégration du framework au sein d'Eclipse Page 2/4 - Mise en œuvre d'un processus outillé autour de Java - Mise à jour le 13/02/2013 Concepteur : ENI SERVICE – Diffuseur : Groupe ARKESYS • • • Codage d'un test unitaire Exécution de vos tests Quelques axes de tests Tests fonctionnels vs tests techniques Tests "Black box" vs tests "White Box" Quelle granularité de code tester ? Associer les tests aux exigences Garantir un taux de couverture du code minimal Taux de couverture en termes de lignes de codes Taux de couverture en termes d'exigences Présentation de l'outil Cobertura Utilisation de techniques de bouchonnage (MOCK Objects) • • • • Il faut réduire les dépendances entre composants Présentation de la problématique Couplage par interfaces Concepts généraux sur l'utilisation de bouchon Présentation générale (théorie, vocabulaire, etc.) Comparaison entre pratique classique du test et pratique bouchonnée Présentation des frameworks JMock et EasyMock Bouchonnage de composants Web J2EE Tester un état Tester un comportement Utilisation du Framework SPRING Intérêts du framework Spring Exemple concret de bouchonnage via Spring Les différents niveaux de tests de votre application • • • • Les tests unitaires Les tests d'intégration Les tests système Tests de montés en charge Tests d'endurance Présentation de l'outil JMeter Traçabilité de vos campagnes de tests Quelques outils permettant la traçabilité de campagnes de tests Garantir la non régression Utilisation des Design Patterns et autres patterns • • Les patterns de conception et d'implémentation Patterns et réduction des dépendances entre composants Unifier les développements de vos composants logiciels Les principaux Design Patterns Les patterns d'architecture Concepts de couches logicielles (3-tiers, n-tiers, ...) Pattern MVC (Model-View-Controller) Approche par composants Mener des revues de code • Intérêt des revues de code Détecter les mauvaises pratiques Détecter les bonnes pratiques de développement et les partager Communiquer sur ces points avec l'équipe de développement Page 3/4 - Mise en œuvre d'un processus outillé autour de Java - Mise à jour le 13/02/2013 Concepteur : ENI SERVICE – Diffuseur : Groupe ARKESYS • • Quand réaliser les revues de code ? Outils utilisables pour mener une revue de code Présentation du plugin Jupiter pour Eclipse Besoin de traçabilité sur les revues de code Outils graphiques de monitoring et de profiling • • • • • La JConsole Présentation du modèle JMX (Java Monitoring eXtensions) Démarrage d'une JVM supportant le monitoring Lancement et attachement de la JConsole Les différentes possibilités de la JConsole Surveiller l'activité du garbage collector Visual GC et GC Viewer Présentation de JVisualVM TPTP (Test and Performance Tool Platform) Rappel sur l'utilisation de plugin Eclipse Présentation du plugin TPTP Test de détection de fuite de mémoire Mesure de performances d'une application Java Taux de couverture de code Analyse de logs Méthodes et moyens : • • • • Explications théoriques suivies de pratiques guidées puis mises en autonomie 1 vidéoprojecteur par salle Stage en mode « In Class » 2 téléviseurs et une caméra HD par salle 1 ordinateur par stagiaire Méthodes d’évaluation des acquis : • • Exercices de synthèse et d’évaluation Evaluation de fin de stage Profil formateur : Nos formateurs bénéficient d’un suivi de compétences aussi bien au niveau technique que pédagogique. Support stagiaire : • • Support papier ou électronique (dématérialisé) Les exercices d’accompagnement peuvent être récupérés sur clef USB Page 4/4 - Mise en œuvre d'un processus outillé autour de Java - Mise à jour le 13/02/2013 Concepteur : ENI SERVICE – Diffuseur : Groupe ARKESYS