Supports de cours et de TP ENVOL 2010 (Formation pour le dEveloppemeNt et la ValOrisation des Logiciels en environnement de recherche)
L'école
Cette école ENVOL2010 (formation pour le dEveloppemeNt et la ValOrisation des Logiciels en environnement de recherche) est la suite logique de celle qui a été organisée en 2008 portant sur la valorisation des développements logiciels des laboratoires de recherche. ENVOL 2008 avait permis de faire découvrir et d’approfondir les concepts de développements collaboratifs et de valorisation des logiciels. ENVOL2010 a poursuivi dans cette voie, en présentant une vision plus concrète des outils de développements. Les objectifs étaient de permettre aux chercheurs, ingénieurs ou doctorants d'utiliser ces outils sur un projet concret, afin d'acquérir les connaissances et les bonnes pratiques du développement logiciel et des outils associés.
Elle a eu lieu du 27 septembre au 1er octobre 2010, à Autrans avec 67 participants (stagiaires et intervenants), développeurs de différents laboratoires ou services CNRS, INRA, INRIA, Universités...
Elle a été financée par le CNRS, co-organisée par PLUME et les réseaux Calcul et DevLog.
Cette formation avait pour objectifs :
- de présenter et de mettre en pratique les différents outils de développement nécessaires tout au long du cycle de vie d'un logiciel ou d'un code de calcul dans le contexte d'un laboratoire de recherche,
- d'être un lieu de rencontres et d'échanges pour les ingénieurs, chercheurs et doctorants qui développent dans les laboratoires de recherche et qui peuvent être isolés dans cette activité au sein de leur entité.
Les cours et TP
Cycle de vie logiciel, outils de conception, UML
Cours
Intervenant: Laurent Perochon, INRA
Support du cours 1, support du cours 2, résumé du cours
- cycle de vie du logiciel
- méthode de développement (agile ou non ?)
- modélisation conceptuelle (séparer le modèle des aspects purement technique, formalismes graphiques : Forrester, DEVS, UML)
- l'approche objet (en s'appuyant sur UML)
- UML aperçu général et surtout Classe, activité, état, séquence
TD UML
Intervenant: Laurent Perochon, INRA
Support du TD1, support du TD2
TP UML avancé
Intervenant: Laurent Perochon, INRA
TP UML sous Eclipse, avec la partie UML de topcased, diagrammes d'activités et de séquences
Bonnes pratiques de programmation
Intervenants: Véronique Baudin, LAAS, Violaine Louvet, ICJ
- Gestion de Projets
- Etude des Besoins, phases d'analyse, de conception, tests
- Qualité logicielle
- Référentiels existants
- Sécurité
- Règles de programmation
- Règles de nommage
- Ecriture de fonctions, c
- Commentaires
- Mise en forme
- Spécificités de certains langages
- Standards et normes
- Normes des langages
- Problématiques des flottants
- Analyse de code
- Analyse statique
- Analyse dynamique
- Métriques
Outils de développement, pratique de Cmake et des autotools
Cours
Intervenant: Johan Moreau, IRCAD
Le but de ce cours est de découvrir les outils de construction d'applications dans le contexte d'un laboratoire de recherche. Le cours repositionnera le contexte et les enjeux de la construction d'application et les éléments connexes, puis se focalisera sur les outils traditionnels (autotools, cmake, scons, qmake) de la communauté. Enfin quelques pistes seront données sur les outils annexes et les évolutions à prévoir.
TP CMake
Intervenant: Loïc Gouarin, Laboratoire de Mathématique d'Orsay
- Création d'un projet simple
- Création d'un projet utilisant une bibliothèque tierce
- Création d'une bibliothèque
- Ajout de tests au projet via CTest
TP autotools
Intervenant: Matthieu Herrb, LAAS
Mise en oeuvre de automake+autoconf+libtool pour gérer la compilation d'un projet
- création d'un projet simple : un programme C ou C++
- ajout d'options de configuration
- création d'une bibliothèque partagée
- ajout d'une nouvelle macro dans automake pour gérer la documentation.
Outils de gestion de versions, pratique de subversion et de git
Cours
Intervenant: Matthieu Herb, LAAS
- Un peu d'histoire
- De SSCS aux systèmes distribués.
- Utilisation isolée
- commits, branches, manipulation de l'historique, ...
- Le développement centralisé
- serveurs, gestion de conflits,....
- Les systèmes distribués
- opérations de push/pull, différents types de workflow, sécurité
- Intégration dans un IDE.
- exemple: plugin eclipse.
- outils connexes: cgit, frontaux graphiques,...
TP GIT
Intervenant: Matthieu Herrb, LAAS
- création d'un projet
- utilisation isolée
- plugin eclipse
- utilisation distribuée
- push / pull / fusion de branches
- récupération d'erreurs
TP Subversion
Intervenant: Konrad Hinsen, Centre de Biophysique Moléculaire
- Les premiers pas avec un dépôt local
- La vie quotidienne: faire des modifications et les enregistrer
- Participer à un projet de développement en équipe
- Gestion des conflits
Outils de génération de documentation
Intervenant: Florent Langrognet, Laboratoire de Mathématiques de Besançon
- Historique
- Principaux outils de générations automatiques de documentation (javadoc, Doxygen, ...)
- Un outil de génération de doc, comment ça marche ? Utilisation, syntaxe, balises,...
- Documentations générées
- Un exemple détaillé : Doxygen
Outils de débogage, pratique autour des langages C/Fortran/C++ et Python
Cours
Intervenant: Romaric David, Direction Informatique - Departement Expertise pour la Recherche, Univ Strasbourg
Le cours présentera les raisons qui pourraient vous inciter à utiliser un débogueur.
Nous commencerons par détailler les raisons qui justifient d'initier une phase de débogage,
en particulier les erreurs à l'exécution (programme qui "se plante") ou les erreurs de
traitements (programme qui "calcule faux").
Nous présenterons les méthodes d'inspection de programmes : mise en place de points d'arrêts, observation et modification de variables.
Enfin, le cours précisera les différentes étapes pratiques et les outils logiciels à votre disposition.
TP débogage Python
Intervenant: Konrad Hinsen, Centre de Biophysique Moléculaire
- L'analyse "post-mortem" avec pdb
- Inspection de variables
- Points d'arrêt
- L'utilisation d'un debuggueur graphique
TP débogage Fortran-C-C++
Intervenant: Romaric David, Direction Informatique - Departement Expertise pour la Recherche, Univ Strasbourg
Débogage d'un code Fortran et /ou C/C++ sous gdb puis ddd (ou alors seulement ddd ?)
Visualisation des données en mémoire.
Outils de packaging, pratique autour de python et de automake
Cours
Intervenant: Konrad Hinsen, Centre de Biophysique Moléculaire
- Pourquoi s'intéresser au packaging
- Les outils pour le packaging
- Les étapes du packaging:
- Choisir les fichiers et leur arrangement
- Identifier les dépendences
- Préparer l'installation sur une machine inconnue
- Documentation
TP Packaging Python
Intervenant: Konrad Hinsen, Centre de Biophysique Moléculaire
Utilisation du module distutils de Python pour
- préparer un programme Python pour la distribution
- préparer un programme Python+C pour la distribution
- installer un programme Python ou Python+C
TP Packaging avec les autotools
Intervenant: Matthieu Herrb, LAAS
Mise en oeuvre de automake+autoconf+libtool pour gérer le packaging d'un projet.
Outils de forges, utilisation de FusionForge et de Redmine.
Cours
Intervenant: Franck Pérignon, LJK
Le but de cette présentation est d'apprendre à utiliser une forge, en tant que membre ou administrateur d'un projet.
- Introduction
- qu'est-ce qu'un forge ?
- quelques exemples de forges déja en place, historique
- distinction forge et logiciel de forge
- Principes généraux d'utilisation
- notion de visiteur/utilisateur/administrateur
- notion de projet
- Revue des différents outils disponibles
- Bonus éventuel: retours sur la mise en place et l'administration d'un forge.
TP Gforge
Intervenant: Franck Pérignon, LJK
- Revue des différents outils disponibles
- TP pour ce dernier point.
TP Redmine
Intervenant: Jean-René Rouet, IN2P3
Support du cours, Support du TP
Environnement de développement, pratique d'Eclipse et de Kdevelop
Cours
Intervenant: Pascal Dayre, IRIT
- Généralités
- Les différentes fonctionnalités des IDEs
- Les outils de référence
- Integration pour la gestion de l'activité
- Le serveur SVN pour gérer le cycle de vie des sources
- Les méthodes Agiles (user story, sprint)
- La gestion du cycle de vie du logiciel
- La planification de l'activité avec la méthode Scrum et le serveur icescrum
- L'IDE Eclipse
- Le plugin mylyn d'Eclipse pour la gestion des tâches
- Le connecteur Mylyn-Icescrum
- Retour d'expérience
TP KDevelop
Intervenant: Florent Langrognet, Laboratoire de Mathématiques de Besançon
Support du TP, présentation de KDevelop
Même si KDevelop est un IDE disponible pour de nombreux langages (une quizaine), c'est pour le C++ qu'il propose le panel de fonctionnalités le plus large. Le but de ce TP sera de montrer les principales fonctionnalités :
- construction de projet (avec cmake)
- génération automatique de documentation
- systèmes de gestion de version
- debugger
- possibilité de l'éditeur de classes, de textes : refactoring, navigation rapide, utilisation de fonctions, ...
TP Eclipse
Intervenant: Dirk Hoffmann, IN2P3
Eclipse est écrit entièrement en Java et offre de loin le plus de support et de fonctionnalités pour ce langage. Cependant, son architecture modulaire permet d'inclure des greffons autant pour le support de tout langage informatique, ainsi que des passerelles vers les SGC, voire des outils complets de conception UML, commerciaux ou libres.
Le TP se restreint aux aspects suivants :
- utilisation de l'éditeur
- aides à l'écriture du code et à la génération de documentation
- projets, perspectives, navigation, refactoring
- debug
- tests unitaires
- compilation et packaging
- CDT - C/C++ development toolkit
- connexion à SVN
- installation de plugins
- diagrammes UML avec GreenUML
Table Ronde
Des acteurs nationaux du développement logiciel en environnement de recherche face aux besoins
avec Véronique Baudin, Konrad Hinsen, Loïc Gouarin, Hervé Richard, Jean-Luc Archimbaud
Réseau Calcul, réseau DEVLOG, enquête forges.
- Présentation rapide des projets-actions de CALCUL, DEVLOG, à l'INRA, PLUME
- Questions de la salle aux participants sur ces présentations
- Discussion avec la salle sur les besoins des développeurs en terme de
valorisation-reconnaissance de leur travail
informations-formations
outils - Forge ESR : bilan de l'enquête et propositions
Commentaires
Liens vers fiches PLUME logiciel
Certains logiciels présentés dans ces cours ou TP sont décrits dans des fiches PLUME : cf la liste dans le pavé 'Fiche' en début de fiche à droite, champ 'Fiches logiciel PLUME connexes'