Sep 4 – 6, 2013
École Polytechnique
Europe/Paris timezone

Les thématiques

L'objectif des JDEV2013 est de contribuer à faciliter la production et la pérennité des logiciels scientifiques en couvrant les aspects métier du développement logiciel, les aspects technologiques et les aspects scientifiques. Ces journées ont pour vocation d'être un lien interdisciplinaire entre les différentes thématiques de recherche.

Le programme est structuré autour de huit thématiques. Une thématique est traitée par une matinée de conférences, un ensemble d'ateliers et de groupes de travail. Il s'agit de faire le point sur l'état de l'art, d'acquérir des savoir-faire et d'échanger et d'enrichir sa veille autour de retours d'expérience sur le génie logiciel, les technologies, les méthodes et les pratiques dans le contexte des projets scientifiques de l'Enseignement Supérieur et Recherche.
  • T1 Ingéniérie des besoins logiciels

    T1

    L'objectif est de présenter la problématique et les techniques de l'Ingénierie des Besoins.



    Nous verrons comment la maîtrise d'oeuvre procède pour fabriquer pour tout Système à Logiciel Prépondérant un SRD (System Requirements Document - spécifications logiciel) à partir de l'URD (User Requirement Document - cahier des charges) défini par la maîtrise d'ouvrage. L'URD peut être exprimé en langage naturel ou par une méthode de prototypage. Il s'agit de l'analyser et d'écrire un SRD avec les bonnes propriétés pour favoriser la réussite des projets.



    Les méthodes et outils de gestion et de construction des exigences seront abordés (méthode d'Objectiver, méthode GORE -Goal Oriented Requirements Engineering-).



    Des réflexions seront menées sur la captation des besoins logiciel dans les processus de travail plus ou moins informels des laboratoires ou des services, en se basant sur un certain nombre de retours d'expérience.

  • T2 Les communautés open-source - comprendre, faire et savoir-faire.

    T2

    En suivant cette thématique, le participant sera mieux armé pour :

    • comprendre l'organisation, les valeurs et les motivations des communautés de développement logiciel

    • créer, promouvoir et animer une communauté autour d'un projet de développement logiciel de recherche

    • disséminer et pérenniser des résultats scientifiques

    Dans le monde de l’éducation et de recherche, nous voyons se développer avec le web des modes de travail collaboratifs ou en réseau qui évoluent parfois vers la constitution de communautés organisées. Ce mode de collaboration a démontré son efficacité et son dynamisme dans de nombreux domaines, en particulier pour le développement de logiciels libres.

    On peut penser que les augmentations des liens entre organisations d’une part, la mutualisation des activités entre administrateurs systèmes et réseaux multi-localisés, et la mutualisation des activités entre développeurs et équipes de recherche d’autre part, vont accroître ce mode de travail collaboratif.

    Par ailleurs, l’ouverture croissante de nos établissements au niveau international nous incite à travailler de plus en plus dans le cadre de communautés regroupant des experts distants. Enfin, nombre d’administrateurs systèmes et réseaux, chercheurs et développeurs, aujourd’hui simples utilisateurs ou participants actifs, souhaiteraient lancer leur propre communauté autour d’une thématique donnée ou pour un projet bien identifié.

    En nous basant sur l’expérience de communautés de chercheurs, de développeurs, de l'entreprise, des associations et des communautés ouvertes, nous expliquerons comment sont organisées celles-ci, nous discuterons des méthodologies et des outils permettant de créer et de faire vivre une communauté autour du développement de logiciel, et enfin, nous partagerons expériences, difficultés, challenges et anedoctes sur les différentes facettes de la création, la dissémination et l'exploitation des résultats issus de la recherche.

  • T3 Systèmes embarqués, systèmes mobiles, langages de programmation, acquisition de données.

    T3

    Cette thématique traite des systèmes embarqués, des systèmes mobiles et des systèmes d'acquisition de données tels que les réseaux de capteurs.


    Des ateliers permettront d'apprendre à faire une première application Android ou iOS, de réaliser un driver linux, d'associer un système d'acquisition de données sur de l'embarqué mobile, de mettre en oeuvre les cartes Arduino et les cartes Rasberry, d'utiliser Labview.


    Des retours d'exprérience seront fait sur les systèmes embarqués, les outils open-source pour la robotique, l'avenir des langages de programmation, les nouveaux langages, la programmation certifiée, le langage synchrone et les outils de développement.

  • T4 Les outils de production du logiciel

    T4

    La thématique T4 propose une approche "par les outils" d'un certain nombre de gestes de base, de technologies et de "bonnes pratiques" de la construction du logiciel :

    • Des éditeurs aux IDE


    Au delà de l'édition plus ou moins assistée du code (aide au formatage, colorisation des mots clé, auto-complétion, …), les IDE (Integrated Development Editors) permettent de faire appel à d'autres modules qui aident à documenter, reconstruire, tester, déployer etc l'application en développement. Outil : Eclipse



    • Les gestionnaires de code distribués


    Dans la lignée de CVS puis SVN, les gestionnaires de code de la nouvelle génération sont qualifiés de "distribués", au sens où ils ne fonctionnent plus comme des dépôts de code centralisés, mais permettent au développeur de gérer en local une image complète du code du projet, avec ses branches locales, l'encourageant à "committer" fréquemment, tout en assurant une synchronisation efficace avec les développements de ses collègues. Ils permettent également d'organiser ses processus de développement, communs à une équipe mais aussi personnalisables par chacun : les "workflows". Outils : Mercurial, Git, Github



    • La production de documentation assistée


    Doxygen, comme d'autres outils similaires, permet d'extraire automatiquement d'un code une représentation graphique de sa structuration et de produire une documentation du code en l'instrumentant à cet effet. D'autres outils vont plus loin, et permettent de gérer de façon cohérente et élégante toute la documentation associée à un développement (conception, code, utilisateur). Outil : Sphinx



    • La reconstruction du logiciel


    Make a plus ou moins laissé sa place à CMake, mais un "nouveau" venu remet tout en cause. Le 'framework' (meta build sytem) Waf promet des performances et une universalité qui méritent d'être scrutées. Outil : Waf



    • La qualité du code


    Le livre "Clean code" devrait être la bible de tout développeur (?). Mais comment garantir que l'on respecte bien ses conseils "blanchis sous le harnais" ? En utilisant un analyseur complet de code, qui mesurera inlassablement (et impitoyablement) la qualité (que le développeur aura lui-même définie) d'une production de logiciel. Un moyen de commencer à maitriser sa dette technique ? Outil : Sonar



    • La programmation graphique


    LabView règne en maitre dans le domaine de l'instrumentation. Mais il peut être aussi l'occasion de goûter aux délices de la programmation graphique, où l'on dessine explicitement ses boucles et on visualise le cheminement des données. Comment maitriser une application "écrite" avec ce genre d'outil dès lors qu'elle devient un peu complexe ? La réponse de National Instruments pour le débogage et la validation de code dans LabView. Outil : LabView



    • DEVOPS


    Développer une application en utilisant des méthodes agiles, très bien. Ensuite, il faut assurer que les promesses de l'application seront tenues quand elle deviendra un "service" perçu comme à la fois stable et évolutif par l'utilisateur final. La validation, le "provisionning" de ressources, le déploiement (y compris les mises à jour) d'applications mettant en jeu plusieurs composants eux-mêmes autonomes (et dès que vous utilisez un serveur de base de données, vous êtes dans le grand bain), c'est l'affaire du mouvement DEVOPS. Outil : SlipStream



    • LLVM


    LLVM est une technologie initialement conçue pour fabriquer des compilateurs en gardant la structuration du source aussi longtemps que possible dans la chaine de transformation du code (facilitant par exemple le débogage). Mais, au delà du compilateur CLang qui devient une référence de sa catégorie, c'est une véritable galaxie d'outils très performants et innovateurs qui est en train de se former autour d'elle.

  • T5 Méthodes agiles

    T5

    Cette thématique a pour but principal la découverte des méthodes agiles par l’expérimentation. Ces méthodes apparemment simples font le pari de l’intelligence collective plutôt qu’un savoir savant encapsulé dans un processus de développement complexe, de l’expérience acquise par la pratique plutôt qu’une théorisation sur un processus éminemment humain. Toute la thématique va être centrée sur ces deux idées simples et fortes. Une conséquence immédiate est qu’il n’y a besoin d’aucun pré-requis pour y participer si ce n’est d'être intéressé par le développement logiciel.



    La conférence va s’attacher à l’essentiel. Qu’est-ce qu’être Agile par une démonstration (un kata pour les amateurs d’arts martiaux). La possibilité de concilier la valorisation de la recherche et la méthode eXtreme Programming (une preuve du concept). Comment se former régulièrement et sereinement par la présentation des différentes communautés et évènements Agiles (les offres Agiles).



    Pour les plus aventureux, vous pourrez dans les ateliers de cette thématique vous mettre directement en situation d’apprentissage collaboratif par l’exemple sur deux nouveaux langages de votre choix parmi les trois proposés (un par grande catégorie de langage). Comme base de travail, nous utiliserons le test driven development (fleuron des conceptions émergentes et condition nécessaire à tout refactoring permettant de maîtriser la complexité du code) en mode Dojo (un travail à plusieurs sur une ou plusieurs techniques ou bonnes pratiques, une extension du pair programming). Vous pourrez aussi explorer une posture Agile pour une contribution efficace à un projet existant ou …encore un autre atelier à définir (si vous avez des envies… c’est le moment d’en faire part!)



    Enfin, la Thématique vous propose d'échanger votre point de vue sur des problèmes ouverts du thème concernant son histoire, ses processus ou ses évolutions.

  • T6 Les tests logiciel, une méthode de travail

    T6

    L'objectif de cette thématique sur les tests est de montrer de manière concrète comment les tests permettent de façonner le logiciel et d'aider les différents acteurs intervenant dans sa genèse, chercheurs comme ingénieurs. Après un état de l'art du test en regard avec le cycle de développement logiciel et les méthodes agiles, nous parlerons de dette technique, d'intégration continue, de traçabilité et de couverture de test des exigences fonctionnelles. Un cas d'école sur la validation d'un logiciel scientifique sera présenté.



    Un ensemble d'ateliers sont proposés :



    • Un atelier sur la définition et l'écriture de tests pour la couverture des exigences sera présenté avec la plateforme libre squash.



    • Un atelier sur l'intégration continue avec l'environnement Jenkins et Maven.



    • Un atelier pour développer la chaîne de traitement d'un algorithme par sa modélisation et la génération automatique des tests (définition du flux de contrôle, des jeux de données et des conditions limites des paramètres).



    Les groupes de travail suivants sont également proposés :



    • Cas d'étude et retour d'expérience sur la validation scientifique des logiciels



    • L'utilisation des tests pour formaliser la collaboration entre chercheurs et ingénieurs et pour passer de la définition des besoins à la proposition des solutions.

  • T7 Développer pour Calculer

    T7

    Quels outils et quelles méthodes pour quelles applications et quelles infrastructures ?



    Riche en tours d'horizon, en ateliers pratiques et en groupes de discussion, la thématique "Développer pour Calculer" vous propose d'explorer la diversité des langages, des bibliothèques, des outils et des infrastructures au service du calcul. Nous nous efforcerons de mettre en lumière les différences et les complémentarités des différentes technologies. Les questions liées à la précision numérique, à l'analyse et à l'optimisation des performances tiendront une place de choix. Cette thématique sera un lieu d'échange où les retours d'expérience viendront enrichir les débats. Elle est organisée avec le soutien du Groupe Calcul.

  • T8 Le développement Web : services web et web sémantique

    T8

    Cette thématique a pour vocation de faire un point sur l'état de l'art des technologies Web au travers des services web et du web sémantique. Nous verrons quels avantages peuvent être tirés de ces technologies pour l'exploitation des ressources, la publication et la composition des données et des algorithmes sur l'internet.



    Nous étudierons comment manipuler les techniques (langages et outils) du web sémantique dans les buts suivants:


    • développer et proposer en ligne ses services web à la communauté

    • publier ses données et ses bases de données dans le web des données

    • rendre ses services web interopérables

    • exploiter les ressources disponibles dans le web sémantique pour créer des services de ressources composites


    Des ateliers sur la réalisation de services web avec J2E et leur accès par terminaux mobiles, sur la publication de données en utilisant l'infrastructure du web sémantique, sur HTML5 la nouvelle référence des clients internet légers, sur la programmation java des services sémantiques, et raisonner avec les ontologies.



    Des groupes de travail permettront de confronter différents retours d'expérience sur la publication de données, la mise en ligne des bases de données scientifiques dans le web des données et la création de ses propres services par combinaison de ressources en ligne.