Outils de développement



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

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

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

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

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

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Projet de développement

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

DEVELOPPEMENT MOBILE - ETAT DE L ART DES SOLUTIONS

Laurent JOLIN. Compétences. Expériences professionnelles. Architecte technique. 15, rue Jean Favier Toulouse

JOnAS Day 5.1. Outils de développements

Paul FLYE SAINTE MARIE

Environnements et Outils de Développement Cours 1 Introduction

Annexe : La Programmation Informatique

1/15. Jean Bernard CRAMPES Daniel VIELLE

Optimisation de logiciels de modélisation sur centre de calcul

INGÉNIEUR LOGICIEL JAVAEE / GROOVY 8 ANS D EXPÉRIENCE

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

INF2015 Développement de logiciels dans un environnement Agile Examen final hiver 2015

Profil. Formations Certifications. Etienne de LONGEAUX Architecte logiciel/ Lead développeur PHP5/SYMFONY2/ZEND 13 ans d expérience.

LICENCE PROFESSIONNELLE SYSTEMES INFORMATIQUES & LOGICIELS

openarchitectureware & transformation de modèle Yannick Lizzi Architecte Logiciel itemis France Mail: lizzi@itemis.de

Vérifier la qualité de vos applications logicielle de manière continue

Burckel Thomas. Formation. Compétences

L Intégration Continue & Agilité

M Études et développement informatique

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

Visual Paradigm Contraintes inter-associations

Conseil en Technologie et Systèmes d Information

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Direction des Technologies de l Information. Présentation OCDE. Contribution du Parlement européen. L utilisation de l OPEN SOURCE au PE

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

M Études et développement informatique

Formation en Logiciels Libres. Fiche d inscription

Informations générales. Technologies. css3-html5-php-ajax-j-query-mootools-action-script3

Système d Information du CNRST - SIC -

Expert technique J2EE

Ingénieur de l'école Centrale Lille - IDN (85-88). 20 ans d'expérience en développement logiciel.

Analyse de performance, monitoring

Plateforme de capture et d analyse de sites Web AspirWeb

Éléments de programmation et introduction à Java

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

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

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

Offres de stages 2011/2012

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

DUT. Informatique, orientation Imagerie Numérique. Domaine : Sciences, Technologies, Santé. Mention : Informatique

RTDS G3. Emmanuel Gaudin

INGÉNIEUR - DÉVELOPPEUR SENIOR PHP. 28 ans - 8 ans d'expérience

Ingénieur R&D en bio-informatique

Vulgarisation Java EE Java EE, c est quoi?

Marie-Christine Spengler

Vérification et Validation

ECLIPSE ET PDT (Php development tools)

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

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

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

Loïc Rossignol Ingénieur Consultant

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

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

MOTEUR DE WORKFLOW Mise en oeuvre d'openwfe Version septembre 2006

Point sur les solutions de développement d apps pour les périphériques mobiles

J2EE in practice. Olivier Liechti Patrik Fuhrer. Department of Informatics. Computer Science Master Course - SH 2004/05

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)

ERESI : une plate-forme d'analyse binaire au niveau noyau. The ERESI team

RESUME DE CARRIERE. Alice JULIENNE. 23 ans Nationalité Française Développeur Web Front-End. Compétences

SonarQube : une autre vision de votre logiciel

TD/TP 1 Introduction au SDK d Android

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

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É JAVA - J2EE. 27 ans - 5 ans d'expérience

Ingénieur d Etudes.NET. Involys :.NET,3.5, C#, Vb.net, Asp.net, vb6,sql server2005, Oracle8i, TFS, MSProject, UML, Rational Rose

Projet de Java Enterprise Edition

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Introduction à la modélisation

Vers l urbanisation agile d un client mobile ios/android natif, économique, flexible et pérenne

Enquête 2014 de rémunération globale sur les emplois en TIC

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Notre Catalogue des Formations IT / 2015

Cahier des charges : gestion de projets agiles. Programmation d Algorithmes Distribués (PAD)

La Certification de la Sécurité des Automatismes de METEOR

DotNet. Plan. Les outils de développement

Windows (2000/NT), Solaris, AIX, HP-UX, Linux Haute disponibilité : SunCluster 3, Veritas Cluster Server 4. J2EE (JSP, Servlet, EJB, JTA), Open Source

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

Assurances & Mutuelles, Industrie, Santé, Énergie, Transport, Médias / Multimédias, Télécoms, Services

ANALYSTE PROGRAMMEUR DIPLÔME D ÉTABLISSEMENT

Plan de notre intervention 1. Pourquoi le test de charge? 2. Les différents types de tests de charge 1.1. Le test de performance 1.2.

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É PHP - MAGENT O. 30 ans - 6 ans d'expérience

Architecture existante (principale)

Configuration Interface for MEssage ROuting

Développeur - Conseiller - Formateur web

Fiche de l'awt Intégration des applications

OMGL 6 Cahier des charges

Web Application Models

Chapitre 5 Vision Informatique Logique Architectures Applicative et Logicielle

Transcription:

Outils de développement Véronique Baudin Pascal Dayre Frédéric Camps 3 ième Conférence COMPIL 5 Février 2009

Source principale ANGD ENVOL Octobre 2008 Annecy co-organisé par UREC, PLUME, LAAS, ICJ, Groupe Calcul,.. Tous les supports ici: http://www.projet-plume.org/fr/ressource/presentations-envol-2008

PLAN Contexte de développement Pourquoi utiliser des outils Contraintes et types d applications Technologies et pratiques Etapes de développement et outils associés Environnements de développement intégrés Introduction IDE NetBeans Cas d usage: démonstration avec l IDE Eclipse 5 Février 2009 3

Contexte En tant que développeur, nous avons certainement tous été confrontés à ce type de situation: - dans le cadre d'un logiciel qui doit répondre aux besoins de 2 ou 3 chercheurs, ou de 2 ou 3 équipes d'un même laboratoire ou de laboratoire différents - dans le cadre de projets contractuels du type PCRD, ANR ou autre, dans lesquels nous avons à prendre en compte la présence d'industriels qui n'ont pas forcément les mêmes habitudes de développement - dans le cadre de l'amélioration ou de la modification de logiciels libres développés par d'autre et sur lesquels on nous a demandé de travailler Dans tous ces cas de figure, on nous impose d'utiliser ou de choisir un outil ou un ensemble d'outils pour réaliser notre logiciel: mais pourquoi? 5 Février 2009 4

I. Contraintes et types d'applications Contraintes de réalisation Délais Qualité Ressources humaines et matérielles Types d'applications Accessibles totalement par le web Application «standalone» Réalisation de composants à intégrer Réalisation de services... 5 Février 2009 5

Cycle de vie Qu'est-ce? Un processus Phases: création, distribution, disparition Pourquoi? 2 buts Maîtriser des risques, des délais et des coûts Contrôler la qualité / aux exigences 5 Février 2009 6

Phases du cycle de vie création distribution disparition Documentation Définition des objectifs: que doit faire ce logiciel? Analyse des besoins et faisabilité: recueil et formalisation des besoins du demandeur et de l'ensemble des contraintes. Conception générale: élaboration des spécifications de l'architecture globale du logiciel. Conception détaillée: définition précise de chaque sous-ensemble du logiciel. Codage : implémentation des fonctionnalités définies lors des phases de conception Tests unitaires: permettent de vérifier individuellement que chaque sousensemble du logiciel est implémenté conformément aux spécifications. Intégration: pour s'assurer de l'interfaçage correct des différents éléments du logiciel. Toutes les informations nécessaires pour utiliser et ajouter des développements au logiciel (manuel d'installation, jeu de tests, manuel(s) utilisateur, spécification, ( conception dossier d'architecture, dossier de 5 Février 2009 7

Phases du cycle de vie création distribution disparition Recette: vérification de la conformité du logiciel aux spécifications initiales. Installation et déploiement Valorisation Maintenance corrective et évolutive, support. 5 Février 2009 8

Phases du cycle de vie création distribution disparition Migration vers une nouvelle application Arrêt progressif du service ou de l'application 5 Février 2009 9

Quelques points clés pour le développement de logiciel Bien comprendre les demandes des utilisateurs finaux Tenir compte des modifications du cahier des charges Eviter de découvrir trop tard les défauts sérieux du projet Traiter au plus tôt tous les points critiques du projet Définir une architecture robuste et adaptée Bien maîtriser la complexité du système Bien communiquer avec l'utilisateur final Favoriser la réutilisation Faciliter le travail en équipe 5 Février 2009 10

Les 7 bonnes pratiques préconisées dans le Processus Unifié Développement itératif Développement à base de composants centré sur l'architecture Pilotage par les risques Gestion des exigences Maîtrise des modifications Evaluation continue de la qualité Modélisation visuelle 5 Février 2009 11

Typologie des applications Batch standalone ( service(s Application distribuée coopérative Interaction textuelle Application distribuée Interaction graphique Interactive standalone Middleware 5 Février 2009 12

En résumé Il existe plusieurs modèles de cycle de vie: - Pourquoi plusieurs modèles? - parce que aucun n'est parfait, ou meilleur que les autres - chacun présente des qualités et des défauts, dépendant du contexte dans lequel il est mis en oeuvre - Que faire? - identifier le modèle qui semble le mieux approprié à votre contexte, et suivre les grandes lignes de celui-ci, sans s'imposer des règles strictes - garder toujours un oeil critique sur la méthode / contexte Quid des types de développement? Deux grandes familles de pratiques pour les développements: - codage de l'ensemble des fonctionnalités définies à partir des besoins identifiés - codage par le biais de maquettes ou prototypes successifs permettant d'inclure petit à petit les fonctionnalités identifiées initialement ou au fil des échanges entre concepteurs et client/demandeur Pourquoi utiliser des méthodes de développement? Pour guider les développeurs de la phase d'analyse à celle de maintenance 5 Février 2009 13

II. Technologies et pratiques Organisation : Tenir compte d'un contexte existant? Développer seul ou en équipe? Application ou service? Contraintes ou choix techniques : Langage (s)? Machines cibles? Type d'architecture: à plat, client/serveur, n-tiers,... Interface graphique? Utilisation de bases de données? Utilisation de bibliothèques, API, composants...? 5 Février 2009 14

Mise en oeuvre de l'architecture logicielle Middleware Environnement (Web, I HM, framework,...) Machine virtuelle Système OS SOA Java Ruby CORBA Unix Windows MacOS J2EE Python RMI WebServices 5 Février 2009 15

Première étape ( utilisateur(s Comprendre ce que désire(nt) l'(es) Description de l'activité Vocabulaire Description du problème Ebauche de solution UML : pour communiquer Maquettage : pour valider/vérifier la demande 5 Février 2009 16

Le travail du développeur Quelque soit la méthode retenue: 5 étapes en 1 ou plusieurs cycles Conception Codage Tests unitaires Intégration Recette 5 Février 2009 17

Etape: conception - Outils de conception : du papier/crayon aux outils sophistiqués pour la mise en oeuvre de différentes approches Langages/Techniques de descriptionoutils de mise en oeuvre UML BoUML, Papyrus, euml,... CPN-AMI, CPNTools, TINA, Réseaux de Pétri HiQPN-Tool, JPetriNet,... Méthode formelle B B4free, ComenC,... Notation Z Community Z Tools 5 Février 2009 18

Etape: Codage Sélection des mécanismes/technologies à utiliser en fonction des besoins identifiés et des contraintes d'utilisation définies Quelles machines cibles? Quel type d'interface? Quel type d'utilisateur? Quel type de déploiement? Nécessité d'intégration dans un environnement existant?... Choix d'un langage de programmation: à partir des objectifs à atteindre pour l'application à développer, quelques question à se poser, très dépendantes de l'application 5 Février 2009 19

Etape : Codage vs langage Faisabilité : Ressources pour satisfaire aux spécifications fonctionnelles de l'application Ressources pour faire déployer et fonctionner les applications écrites sur la/les machine(s) cibles Aspects techniques: connexion avec des bibliothèques graphiques, de calcul, de connexion réseau,... des SBGD, existence de codes réutilisables utilisable pour des applications locales, client/serveur, n-tiers, web... présence d'un «garbage collector»,... Fiabilité et performances de l'application : Existence d'outils pour test, logging, (traces d'exécution) analyse de code Existence d'outils de profiling (mesures de performances) pooling (gestion de groupe de serveurs,...)... 5 Février 2009 20

Etape : Codage vs langage Utilisabilité Possibilité de modulariser en fichiers distincts Portabilité des sources et/ou des binaires ou bytecodes sur différents OS Documentations facilement accessibles (constructeur/fournisseur, cours (... EnsSup, Outils d'aide au développement Environnement de développement intégré Maintenabilité, extensibilité, flexibilité : Langage orienté objet Existence d'outils implémentant les principaux design patterns Existence d' outils pour effectuer de la génération de code et du «reverse engineering» (UML <=>code source) Pérennité: Utilisé en entreprise et en enseignement supérieur Existence de communauté(s) d'utilisateurs actives Normalisation ISO 5 Février 2009 21

Etape: codage - Outils de codage : des outils mono-fonction aux outils intégrés pour le développement des différente types de logiciels Fonctionnalité Outils de mise en oeuvre langage C/C++, Fortran, Java, HTML, XML, PHP, Python, Ruby,... Editeur simple ou syntaxique vim, emacs, NotePad++,jedit,gedit, Komposer,geany,... Gdb, debugger NetBeans et Eclipse, pdb (Python debugger), Débogage jdb (Java debugger), Jswat (debugger java graphique) Automatisation des tâches de compilation, génération de code,... ANT, MAVEN, Make, autotools,... Versionning CVS, SVN, Git,... Tests unitaires et mesures de performances Junit, Cobertura, HeapAnalyser (Eclipse), VisualVM(profiler pour java), Jprobe, Gprof, python-profiler,... Analyse de code Checkstyle, findbugs,... Création d'interfaces graphiques Plugin VE (Eclipse) Documentation du code Javadoc, doxygen Bases de données Déploiement d'applications JavaWebStart, plateformes OSGi (Equinox, OSCAR,...) En fonction du type de logiciel à développer, des technologies utilisées, des choix d' outils vont se faire de façon naturelle 5 Février 2009 22

Etape: Tests unitaires Objectif: vérifier le «bon fonctionnement» d'une classe, d'une méthode, d'une fonction, d'une procédure,... Lors de la première mise en oeuvre En utilisant les use cases définissant le fonctionnement attendu de l'application Après des modifications En effectuant des tests de non-régression En re-utilisant les use-cases pour vérifier le fonctnnement des nouvelles fonctionnalités Types de tests Manuels: définis à partir des uses cases, et en relation avec les utilisateurs finaux (si possible): tests significatifs pour l'application Automatique: sur une spécification en logique temporelle des propriétés impérative de l'application, on utilise un Model Checker (fourniture de contre- ( vérifiée exemple lorsqu'une propriété n'et pas Exemples d'outils junit, Dart,QMTest,JFunc, GUItest 5 Février 2009 23

Etape: Intégration Objectif: s'assurer que les briques logicielles développées fonctionnent correctement entre elles. Vérifier que les fonctionnalités de l'applications correspondent aux spécifications Types de tests Définis sur la base des use cases et des spécifications initiales Difficilement automatisables Mais il existe des outils d'évaluation de la couverture du code par les tests Cobertura clover 5 Février 2009 24

Etape: Recette Point de vue du développeur Eléments logiciels: Logiciel Script d'installation ou procédure de déploiement Système de suivi et de maintenance : trac, bugzilla,... Documentation Manuel d'installation Mode d'emploi Jeux de tests (au moins de l'étape intégration) 5 Février 2009 25