Supports de cours et de TP ENVOL 2010 (Formation pour le dEveloppemeNt et la ValOrisation des Logiciels en environnement de recherche)

Fiche ressource Article, événement, site web...
  • Création ou MAJ importante : 05/01/11
  • Correction mineure : 21/11/11
Mots-clés

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 :

  1. 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,
  2. 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 2résumé du cours

  1. cycle de vie du logiciel
  2. méthode de développement (agile ou non ?)
  3. modélisation conceptuelle (séparer le modèle des aspects purement technique, formalismes graphiques : Forrester, DEVS, UML)
  4. l'approche objet (en s'appuyant sur UML)
  5. UML aperçu général et surtout Classe, activité, état, séquence

TD UML

Intervenant: Laurent Perochon, INRA

Support du TD1support 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

Support du cours

  1. Gestion de Projets
    1. Etude des Besoins, phases d'analyse, de conception, tests
  2. Qualité logicielle
    1. Référentiels existants
  3. Sécurité
  4. Règles de programmation
    1. Règles de nommage
    2. Ecriture de fonctions, c
    3. Commentaires
    4. Mise en forme
    5. Spécificités de certains langages
  5. Standards et normes
    1. Normes des langages
    2. Problématiques des flottants
  6. Analyse de code
    1. Analyse statique
    2. Analyse dynamique
  7. Métriques

Outils de développement, pratique de Cmake et des autotools

Cours

Intervenant: Johan Moreau, IRCAD

Support du cours

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

Support du TP, Sources du TP

  1. Création d'un projet simple
  2. Création d'un projet utilisant une bibliothèque tierce
  3. Création d'une bibliothèque
  4. Ajout de tests au projet via CTest

TP autotools

Intervenant: Matthieu Herrb, LAAS

Support du TP, Sources du TP

Mise en oeuvre de automake+autoconf+libtool pour gérer la compilation d'un projet

  1. création d'un projet simple : un programme C ou C++
  2. ajout d'options de configuration
  3. création d'une bibliothèque partagée
  4. 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

Support du cours

  1. Un peu d'histoire
    1. De SSCS aux systèmes distribués.
  2. Utilisation isolée
    1. commits, branches, manipulation de l'historique, ...
  3. Le développement centralisé
    1. serveurs, gestion de conflits,....
  4. Les systèmes distribués
    1. opérations de push/pull, différents types de workflow, sécurité
  5. Intégration dans un IDE.
    1. exemple: plugin eclipse.
    2. outils connexes: cgit, frontaux graphiques,...

TP GIT

Intervenant: Matthieu Herrb, LAAS

Support du TP, Sources du TP

  1. création d'un projet
  2. utilisation isolée
  3. plugin eclipse
  4. utilisation distribuée
  5. push / pull / fusion de branches
  6. récupération d'erreurs

TP Subversion

Intervenant: Konrad Hinsen, Centre de Biophysique Moléculaire

Support du TP

  1. Les premiers pas avec un dépôt local
  2. La vie quotidienne: faire des modifications et les enregistrer
  3. Participer à un projet de développement en équipe
  4. Gestion des conflits

Outils de génération de documentation

Intervenant: Florent Langrognet, Laboratoire de Mathématiques de Besançon

Support du cours

  1. Historique
  2. Principaux outils de générations automatiques de documentation (javadoc, Doxygen, ...)
  3. Un outil de génération de doc, comment ça marche ? Utilisation, syntaxe, balises,...
  4. Documentations générées
  5. 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

Support du cours

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

Support du TP, Sources du TP

  1. L'analyse "post-mortem" avec pdb
  2. Inspection de variables
  3. Points d'arrêt
  4. L'utilisation d'un debuggueur graphique

TP débogage Fortran-C-C++

Intervenant: Romaric David, Direction Informatique - Departement Expertise pour la Recherche, Univ Strasbourg

Support du TP

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

Support du cours

  1. Pourquoi s'intéresser au packaging
  2. Les outils pour le packaging
  3. Les étapes du packaging:
    1. Choisir les fichiers et leur arrangement
    2. Identifier les dépendences
    3. Préparer l'installation sur une machine inconnue
    4. Documentation

TP Packaging Python 

Intervenant: Konrad Hinsen, Centre de Biophysique Moléculaire

Support du TPSources du TP

Utilisation du module distutils de Python pour

  1. préparer un programme Python pour la distribution
  2. préparer un programme Python+C pour la distribution
  3. 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

Support du cours

Le but de cette présentation est d'apprendre à utiliser une forge, en tant que membre ou administrateur d'un projet.

  1. Introduction
    1. qu'est-ce qu'un forge ?
    2. quelques exemples de forges déja en place, historique
    3. distinction forge et logiciel de forge
  2. Principes généraux d'utilisation
    1. notion de visiteur/utilisateur/administrateur
    2. notion de projet
  3. Revue des différents outils disponibles
  4. Bonus éventuel: retours sur la mise en place et l'administration d'un forge.

TP Gforge

Intervenant: Franck Pérignon, LJK

  1. Revue des différents outils disponibles
  2. 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

  1. Généralités
  2. Les différentes fonctionnalités des IDEs
  3. Les outils de référence
  4. Integration pour la gestion de l'activité
    1. Le serveur SVN pour gérer le cycle de vie des sources
    2. Les méthodes Agiles (user story, sprint)
    3. La gestion du cycle de vie du logiciel
    4. La planification de l'activité avec la méthode Scrum et le serveur icescrum
    5. L'IDE Eclipse
    6. Le plugin mylyn d'Eclipse pour la gestion des tâches
    7. Le connecteur Mylyn-Icescrum
    8. 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 :

  1. construction de projet (avec cmake)
  2. génération automatique de documentation
  3. systèmes de gestion de version
  4. debugger
  5. 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 :

  1. utilisation de l'éditeur
  2. aides à l'écriture du code et à la génération de documentation
  3. projets, perspectives, navigation, refactoring
  4. debug
  5. tests unitaires
  6. compilation et packaging
  7. CDT - C/C++ development toolkit
  8. connexion à SVN
  9. installation de plugins
  10. 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.

  1. Présentation rapide des projets-actions de CALCUL, DEVLOG, à l'INRA, PLUME
  2. Questions de la salle aux participants sur ces présentations
  3. Discussion avec la salle sur les besoins des développeurs en terme de
    valorisation-reconnaissance de leur travail
    informations-formations
    outils
  4. 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'