Génie Logiciel. Philippe Collet. Master 1 IFI 2012-2013 h6p://dep:nfo.unice.fr/twiki/bin/view/minfo/genielog1213. P. Collet 1

Documents pareils
Votre premier projet Android

Les méthodes Agiles. Introduc)on aux méthodes Agiles Exemple : Scrum

Construction et déploiement d applications Java avec Maven, Archiva, Groovy et Jenkins

Évolu>on et maintenance

Architecture matériel et logiciel 2

APIs de table pour SQL Server

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Environnements de développement (intégrés)

Environnement de Développement Outils Open-Source d'integration Continue. Exemple de Mise en Oeuvre

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

Java Avancé. Le langage Java. Rémi Forax

Les termes du cloud CUMULO NUMBIO 2015 O. COLLIN

Hudson Serveur d Intégration Continue. Adrien Lecharpentier IR3 Ingénieurs2000, Université de Marne la Vallée

Ma stack d ou,ls agiles, tout un programme! OU COMMENT BÉNÉFICIER DES TECHNOLOGIES GRAND PUBLIC POUR AMÉLIORER ET OPTIMISER MES OUTILS LOGICIELS.

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS

JOnAS Day 5.1. Outils de développements

Introduction à Eclipse

Entreprise Chiffres clefs

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

SonarQube : une autre vision de votre logiciel

TD/TP 1 Introduction au SDK d Android

RESSOURCES INFORMATIQUES UFR IMAG ANNEE Présentation service informatique UFR IMAG année 2010/2011 1

Projet de développement

DOCUMENTATION KAPTravel Module de gestion des appels de disponibilité

Le contrôle fiscal anno 2013

- TP Programmation Android - NFA024 Conservatoire National des Arts et Métiers

application Chouette -

TP1. Outils Java Eléments de correction

Installation et prise en main

Quick Start Installation de MDweb version 2.3

Concepon et réalisaon

Présentation Level5. Editeur de Logiciels. «If it s not monitored, it s not in production» Theo Schlossnagle #velocityconf

Initiation à JAVA et à la programmation objet.

TME1 Installation et programmation en ILP1

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

L ou%l téléphone dans votre stratégie de marke%ng direct

L Intégration Continue & Agilité

Java Licence professionnelle CISII,

Améliorez et industrialisez vos feedback produit

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

Générer du code à partir d une description de haut niveau

TP1 : Initiation à Java et Eclipse

CONFIGURATION DE LA LIBRAIRIE WEBUTIL (10g) Oracle Forms 10g

PROCEDURE D'INSTALLATION OPENREPORTS

Catalogue de FORMATIONS 2015

Présenta)on DesignBuilder

bbc Launch Pad Juillet 2011 Version 10.0

Utilisation de Jakarta Tomcat

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Module d anonymisation

Ges$on des clients du réseau pédagogique. Stéphan Cammarata - DANE Strasbourg - Version 10/2013

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

ECLIPSE ET PDT (Php development tools)

Tutoriel d installation de Hibernate avec Eclipse

Mon subjet et quelque chose qui est très per8nent etant donné que nos infrastructure devient de plus et plus virtualisée et élas8que.

SÉLECTIONNER LES MEILLEURS CANDIDATS : L APPORT DES OUTILS D ÉVALUATION AU RECRUTEMENT ET À LA MOBILITÉ INTERNE

Bases Java - Eclipse / Netbeans

Fichiers d'archives java - *.jar

Configurer la supervision pour une base MS SQL Server Viadéis Services

Jean-Michel Richer L3 Pro Informatique

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Devenez un virtuose de Google. Atelier en informa5que présenté par Dominic P. Tremblay

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

I- USBKey Transfer. Guide d u5lisa5on. Comment u)liser I- USBKey Transfer?

Introduc)on à Map- Reduce. Vincent Leroy

as Architecture des Systèmes d Information

Déployer et sécuriser des applica1ons mobiles dans votre SI / Cloud

Les architectures 3-tiers Partie I : les applications WEB

TUTORIEL: INSTALLATION D'UN SERVEUR LOCAL SOUS WINDOWS 7 POUR APPINVENTOR version du 06/04/2013

4. SERVICES WEB REST 46

Baromètre Direct Assurance des cyberconsommateurs

Création d un service web avec NetBeans 5.5 et SJAS 9

Optimisation de la supervision by Somone. - Présentation Générale -!

EXA1415 : Annotations

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Machine virtuelle Java pour Palm TX

La base de données XML exist. A. Belaïd

Programmeur Java 1.4 et 5.0

D E S C R I P T I O N D E S É L É M E N T S C L E F S D ' U I M A

Guide des Développeurs SITools2 V3

MTI820 Entrepôts de données et intelligence d affaires. Gouvernance des données et ges1on des données de référence

INFO-F-404 : Techniques avancées de systèmes d exploitation

SPIP. Gestion de la performance dans SPIP. Préoccupa)on historique

Java pour le Web. Cours Java - F. Michel

Catalyse IT. Innovation Digital/Numérique

Importation et exportation de données dans HDFS

Connexions à un projet CVS via Eclipse en accès local et distant. 15 Mai 2007

Comment u)liser les réseaux sociaux?

Consultants, trouvez de nouveaux marchés grâce aux médias sociaux animé par Valérie March au Salon des micro- entreprises 2012

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Analyse de performance, monitoring

Entrepôt de données et l Analyse en ligne. Maguelonne Teisseire Hugo Alatrista Salas hugo.alatrista- salas@teledetec9on.fr Flavien Bouillot

SÉCURITÉ POUR CTO DE STARTUP

Installation du Hub. Installation du Hub. 1. Description de l installation. by LegalBox. 2 types de serveur sont à installer :

Java Avancé. LicencePro Olivier Perrin Université de Lorraine

Java Licence Professionnelle CISII,

TP au menu «UI ANDROID»

Transcription:

Génie Logiciel Philippe Collet Master 1 IFI 2012-2013 h6p://dep:nfo.unice.fr/twiki/bin/view/minfo/genielog1213 P. Collet 1

Génie logiciel : organisa:on générale Lignes de produits logiciels Génie Logiciel (réflexivité, test OO, profilage, généricité, héritage, patrons de conception, chargement dynamique, composants ) Conception OO (UML+OCL) Prog. système Projet de devt (C, PHP ou Java) P. Collet 2

Objec:fs Maîtriser des techniques de génie logiciel, en se focalisant sur les approches par objets et par composants Principes et ou:ls de construc:on et d'exécu:on automa:ques Tests Introspec:on, réflexivité et chargement dynamique Choix et limites des mécanismes d'héritage, de composi:on et de généricité contrainte Micro- architectures et patrons de concep:on Premier pas en architecture logicielle P. Collet 3

Plan Construc:on (ou:l ant) Introspec:on, réflexivité V&V objet, test unitaire OO Généricité Héritage Patrons de concep:on Chargement dynamique (Injec:on de dépendances) P. Collet 4

Evalua:on 1 note de contrôle con:nu en TD (présence, travail, par:cipa:on) (25%) 1 projet par équipe (35%) 1 contrôle terminal (40%) P. Collet 5

Automa1sa1on de construc1on en Java : ANT n D après le cours sur Ant de Richard Grin n h6p://ant.apache.org/ P. Collet 6

Introduc:on Syntaxe et op:ons très fournies Dans ce cours Version 1.5 Pas de syntaxe complète des tâches Ant est toujours distribué avec son manuel Projet Open source (fonda:on Apache) La référence pour la construc:on automa:que et portable d applica:ons Java Ecrit lui- même en Java P. Collet 7

Principes Modèle de la commande make un projet des cibles (compile, jar, javadoc, ) La descrip:on des cibles et les dépendances entre les cibles sont décrites dans un fichier Fichier XML, nommé par défaut build.xml Extensible : on peut ajouter ses propres commandes/tâches P. Collet 8

build.xml : exemple <project name="hello" default="compile"> <target name="prepare"> <mkdir dir="./classes" /> </target> <target name="compile" depends="prepare"> <javac srcdir="./src" destdir="./classes" /> </target> </project> P. Collet 9

Script de construc:on : structure une en- tête XML (avec l indica:on op:onnelle d une DTD) une entrée project qui con:ent op:onnellement, des entrées property op:onnellement, des entrées path ou classpath une ou plusieurs entrées target op:onnellement, une entrée description Descrip:on informelle du projet <description> Ce projet permet de...... </description> P. Collet 10

Entrée project Chaque fichier de construc:on con:ent une et une seule entrée project Ce6e entrée peut avoir 3 a6ributs name le nom du projet default la cible par défaut (requis) basedir le répertoire de base pour les chemins rela:fs peut être écrasé par la propriété basedir par défaut le répertoire où se trouve le fichier de construc:on P. Collet 11

Les cibles Une cible (target) correspond à une ac:on qui est décrite dans le fichier peut dépendre d autres cibles (a6ribut depends) Chaque type de cible peut avoir ses propres a6ributs Les a6ributs communs à toutes les cibles : name : le nom de la cible (obligatoire) description : si elle apparaît, permet de lister une descrip:on de la cible avec l op:on -projecthelp de l appel de ant depends : permet d indiquer les autres cibles dont dépend une cible P. Collet 12

Dépendances de cibles On peut indiquer plusieurs cibles dont une cible dépend (depends A,B,C par exemple) les cibles seront exécutées dans l ordre du depends (de gauche à droite) Dans la ges:on des dépendances, les tâches ne sont exécutées qu une fois : <target name="a"/> <target name="b" depends="a"/> <target name="c" depends="a,b"/> A ne sera exécuté qu une seule fois P. Collet 13

Comportement sur erreur Le plus souvent, une erreur dans une tâche arrête la construc:on de la cible correspondante Une classe ne compile pas, la cible qui construit le jar s arrête Certaines tâches ne provoque pas d arrêt On peut leur ajouter un a6ribut «failonerror» à true pour forcer l arrêt Exemple : la tâche «java» P. Collet 14

Cible d ini:alisa:on Il est recommandé d avoir une cible d ini:alisa:on nommé init qui con:ent au moins la tâche tstamp : <target name="init"> <tstamp/> </target> tstamp récupère le temps système et ini:alise les propriétés DSTAMP (aaaammjj), TSTAMP (hhmm), et TODAY (mois jour année) Toutes les cibles liées à la construc:on de l applica:on devront dépendre de la cible init (directement ou non) P. Collet 15

Tâches Une tâche est une unité d exécu:on «élémentaire» pour réaliser une cible A6ributs possibles : id donne un iden:ficateur unique à la tâche ; cet iden:ficateur peut être u:lisé dans le reste du fichier pour désigner la tâche taskname donne un autre nom à la tâche ; ce nom sera u:lisé dans les rapports d exécu:on descrip:on décrit la tâche (texte non formaté) Les tâches op:onnelles nécessitent une bibliothèque supplémentaire pour être exécutées (fichier.jar à installer) P. Collet 16

Tâches (java) Ant fournit des tags XML pour les tâches les plus communes en Java : javac, java, rmic, javadoc, jar, unjar, war, unwar, ear <javadoc packagenames=«com.bigmoney.pack.*" sourcepath="${src}" destdir="${doc}/api" use="true"/> P. Collet 17

La tâche javac Compilateur u:lisé : propriété build.compiler par défaut, JDK qui exécute Ant Compiler récursivement tous les fichiers java du répertoire des sources U:lisa:on des dates de dernière modifica:on pour savoir si une classe a besoin d être recompilée Très grand nombre d a6ributs : srcdir (requis), classpath, debug, optimize, source, fork <javac srcdir="${src} destdir="${build}" classpath="xyz.jar" debug="on" /> P. Collet 18

La tâche java Lance l exécu:on d un programme java A6ributs : classname ou jar pour indiquer la classe à exécuter classpath, fork, failonerror, output, append <java jar="dist/test.jar" fork="true" failonerror="true" maxmemory="128m"> <arg value="-h"/> <classpath> <pathelement location="dist/test.jar"/> <pathelement path="${java.class.path}"/> </classpath> </java> P. Collet 19

D autres tâches Système : mkdir, delete, copy, move, chmod, touch, get, zip, unzip, tar, untar, gzip, gunzip Propriétés : property donne la valeur d une propriété <property name="jaxp.jar" value="./lib/jaxp11/jaxp.jar"/> available ini:alise une propriété si une ressource est disponible (fichier, répertoire, ressource de la JVM) <available classname="fr.unice.classe" property="class.present"/> P. Collet 20

D autres tâches Programma:on : fail stoppe le processus de construc:on ant exécute un autre fichier ant (u:le s il y a des sous- projets) antcall appelle une autre cible du fichier de configura:on apply, exec exécute des shellscripts et des programmes externes echo affiche un message sur System.out mail envoie un courrier électronique sql exécute une requête SQL en u:lisant une source JDBC tp établit un client FTP pour transme6re des fichiers junit ajoute des tâches liées à l'ou:l de tests JUnit (op:onnel) cvs exécute une commande CVS (op:onnel) P. Collet 21

Exécu:on de Ant «ant» lance Ant en u:lisant le fichier build.xml du répertoire courant la cible par défaut on peut donner une autre cible en argument Op:ons -buildfile pour u:liser un autre fichier que build.xml -Dpropriété=valeur pour donner la valeur d une propriété -help affiche les op:ons disponibles -projecthelp affiche une descrip:on du projet, avec toutes les cibles (targets) qui ont une descrip:on P. Collet 22

Principaux types de données property : pour paramétrer la construc:on filelist : liste de fichiers, sans jokers dirset : idem fileset pour des répertoires fileset : permet plus de possibilités que filelist, en par:culier les patternset patternset : u:lisent des jokers ; inclus dans fileset ou dirset filterset : pour remplacer des token par des valeurs path, classpath : pour donner des chemins tels que PATH ou CLASSPATH P. Collet 23

Propriétés Chaque projet peut avoir un ensemble de propriétés qui sont u:lisées comme des variables dans les a6ributs des tâches ${prop} représente la valeur de la propriété prop Il peut y avoir des propriétés locales ou globales (en dehors de toute cible) Le nom d une propriété est de la forme project.name ou build.dir, sur le modèle des noms de propriétés Java Il est sensible à la casse des le6res 3 façons de valuer une propriété : tâche property tâche available au lancement de Ant avec l op:on D : ant -Dpropriété=valeur P. Collet 24

Tâche property Plusieurs façons de donner la valeur d une ou plusieurs propriétés Pour une seule propriété : name et value name et refid name et location Pour plusieurs propriétés : file (donne le nom d un fichier au format des propriétés Java) resource (idem file mais recherche dans le classpath) P. Collet 25

Exemples <available classname="fr.unice.classe" property="class.present"/> <property name="jaxp.jar" value="./lib/jaxp11/jaxp.jar"/> <available file="${jaxp.jar}" property="jaxp.jar.present"/> <available file="/usr/local/lib" type="dir" property="local.lib.present"/> <property file="build.properties"/> P. Collet 26

Propriétés de base On peut u:liser toutes les propriétés système Java données par System.getProperties() et aussi des propriétés internes à ant : basedir : le chemin absolu de la racine du projet (mis par l a6ribut «basedir» du tag «project» ant.file : le chemin absolu du fichier de construc:on ant.version : version de Ant ant.java.version : la version de la JVM P. Collet 27

path et classpath Des entrées spéciales path et classpath sont réservées aux noms ou listes de noms de fichiers Ces 2 entrées ont la même syntaxe Elles peuvent être incluses dans une défini:on de cible ou au même niveau que les propriétés globales on leur donne un iden:ficateur et on peut les u:liser dans plusieurs cibles P. Collet 28

Classpath (ou path) Permet d indiquer le classpath : <classpath> <pathelement path="${classpath}"/> <pathelement location="lib/helper.jar"/> </classpath> peut contenir plusieurs entrées ne peut contenir qu une entrée Les éléments sont indiqués par des entrées pathelement ou fileset P. Collet 29

Comment faire mieux? Maven Regroupe des ou:ls open source sous un chapeau commun pour gérer des projets, par exemple : Ant pour la construc:on JUnit pour le test unitaire (cf. cours suivants ) Jalopy pour formater le code source Checkstyle pour valider le code Java envers des standards de codage Javadoc pour la doc Java Gère des tâches comme des rapports, des dépendances, des configura:ons, des releases, des distribu:ons, etc. h6p://maven.apache.org/ P. Collet 30

Maven : principes Créa:on d un projet mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app Structure par défaut : my-app -- pom.xml `-- src -- main `-- java `-- com `-- mycompany `-- app `-- App.java `-- test `-- java `-- com `-- mycompany `-- app `-- AppTest.java P. Collet 31

Maven : pom.xml Le fichier central de toute configura:on Con:ent la majorité des informa:ons sur le projet Devient très long et très complexe (généré et modifié par interfaces graphiques) <project xmlns="http://maven.apache.org/pom/4.0.0"... > xsi:schemalocation="http://maven.apache.org/pom/4.0.0..."> <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> P. Collet 32

Maven : phases mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app archetype:create archetype : nom du plugin => organisa:on en plugin avec dépendances create : but (goal), similaire aux tâches ant $ mvn package... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2 seconds [INFO] Finished at: Thu Oct 05 21:16:04 CDT 2006 [INFO] Final Memory: 3M/6M [INFO] ------------------------------------------------------------------------ package Est une phase : une étape du cycle de construc:on Le cycle de construc:on est une suite ordonnée de phases L exécu:on de la phase exécute toute les phases précédentes dans l ordre P. Collet 33

Maven : phases (suite) mvn compile Exécute les phases suivantes 1. validate 2. generate- sources 3. process- sources 4. generate- resources 5. process- resources 6. compile Phases par défaut : validate: valida:on du projet et de toutes les informa:ons nécessaires (dépendances) compile: compila:on du code source test: test du source compilé avec un framework de test (déclaré). Ces tests ne doivent pas nécessiter que le code soit packagé ou déployé package: créa:on d un package distribuable (Jar par ex.) à par:r du code compilé integra1on- test: déploiement le package si nécessaire dans un environnement où des tests d intégra:on sont exécutés verify: exécu:on de vérifica:ons sur la validité du package ou des critères de qualité install: installa:on du package dans le repository local, pour être u:lisable en dépendances d autres projets locaux deploy: copie du package dans un repository distant pour partage Autres phases très u:les : clean: ne6oyage! site: généra:on du site web de documenta:on du projet P. Collet 34

A faire Préparer le TD 1 : h6p://dep:nfo.unice.fr/twiki/bin/view/minfo/ GlTD1 Paramétrage et lancement d Eclipse Tutoriaux de prise en main d Eclipse P. Collet 35