Première journée du développement logiciel du CMI



Documents pareils
Environnements et Outils de Développement Cours 1 Introduction

Usine de développement : étude comparative

Plan global Outils de développement et compilation. Ce que l on veut éviter. Plan. Git : gestion de code source et versionnement.

Master Informatique Aix-Marseille Université

Journée IJD. Moussa Tari Bako Bachir. 25 juin 2012 ARLES/INRIA. Introduction Travail Chez ARLES

Squale Le portail qualimétrie open-source

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

Outils de développement collaboratif

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

COMPÉTENCES TECHNIQUES

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

Plateforme de capture et d analyse de sites Web AspirWeb

Forge. Présentation ( )

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

La fédération des infrastructures cloud

PostgreSQL, le cœur d un système critique

Rapport de stage. Création d un site web. Stage du 20/01/2013 au 21/02/2013

Plan. 1 Cycles de développement. 2 Méthodes agiles, principes généraux. 3 Comment se passe un Sprint?

Logiciel Libre Cours 9 Modèles Économiques

Serena Software. Damien Terrien Solution Architect

Extensions, Documentation, Tutoriels, Astuces

APPEL À MANIFESTATION D INTÉRÊT

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

Paul FLYE SAINTE MARIE

L Institut National des Sciences Mathématique et de leurs. Premiers éléments d un bilan à deux ans.

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

L Intégration Continue & Agilité

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

Retour d expérience en Astrophysique : utilisation du Cloud IaaS pour le traitement de données des missions spatiales

Plate-forme collaborative Claroline Présentation et philosophie de Claroline

Introduction MOSS 2007

Projet de développement

Matrice snapshot Jacquelin Charbonnel ANF RNBM - Marseille, 23 mai 2013

Logiciel Libre Cours 3 Fondements: Génie Logiciel

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

HISTOIRE D UNE DIGITAL FACTORY

Le Logiciel de Facturation ultra simplifié spécial Auto-Entrepreneur

Dossier -projet d'informations et Sciences du numérique.

CMS Open Source : état de l'art et méthodologie de choix

PloneLabs un gestionnaire de contenu pour les laboratoires

Expert technique J2EE

Rapport de Synthèse. Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon

Mercredi 05/10/2011. Forges logicielles. Olivier Berger, Telecom SudParis. Introduction Avant-propos À propos de COCLICO. Panorama des forges

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme?

Présentation de la future plateforme internet du Réseau francophone de l'innovation. Réunion de lancement OIF 9-10 juillet 2013

Offre Education 250 /an/école (htva)

Cursus Sage ERP X3 Outils & Développement. CURSUS Sage ERP X3 Outils & Développement ADVANCED. Outils avancés. 2 jours X3A-ADM. Développement 1 &2

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

Projet de Java Enterprise Edition

Logiciel libre de gestion pour l'education Populaire. Module ALSH et ALSH périscolaire

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

Concevoir son premier espace de cours sur la plateforme pédagogique Moodle

Présentation Alfresco

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

Enterprise Scrum Organisation des développements chez exo. Agile Tour Rennes 2010 / 10 / 07

ISTEX-SNU. ISTEX en quelques clics dans votre portail documentaire. Séminaire technique ISTEX 18 mars 2015

Un business model d éditeur open source

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

Gestion du projet pour qu'il soit pérenne et collaboratif

e-obs : Conception et utilisation Rémy Decoupes Ether // ums3365

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

Livrer chaque jour ce qui est prêt! Points clés du développement d un produit avec une livrasion par jour.

Système de gestion de contenu

CloudBees AnyCloud : Valeur, Architecture et Technologie cloud pour l entreprise

TP1 : Initiation à Java et Eclipse

Cahier des charges (CDC)

L utilisation du réseau ISTIC / ESIR

TD/TP 1 Introduction au SDK d Android

JOnAS Day 5.1. Outils de développements

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

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

Annexe : La Programmation Informatique

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

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

Un site web collaboratif avec Drupal. Judith Hannoun - Journées INSHS 16 Octobre 2012

Module BD et sites WEB

Twitter et Netvibes pour la veille

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

«Les documents référencés ci-dessus étant protégés par les droits d auteur et soumis à la déclaration au Centre Français d exploitation du droit de

Manuel d utilisation de Form@Greta

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

Modelio by Modeliosoft

Mise en œuvre des serveurs d application

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

Nouveautés Ignition v7.7

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

e-science : perspectives et opportunités pour de nouvelles pratiques de la recherche en informatique et mathématiques appliquées

Campus Numérique. Université du Travail. Systèmes de communication, sécurité, d un Campus Numérique Académique. 24 mai Guy Leroy - Vincent Dewez

Systèmes et réseaux d information et de communication

Fabien Pinckaers Geoff Gardiner. OpenERP. Tiny. Pour une. gestion d entreprise efficace et intégrée. Groupe Eyrolles, 2008, ISBN :

Comment consolider des données

2 Formation utilisateur

Serveur de travail collaboratif Michaël Hoste -

Numérique. Mon Université.

Agile 360 Product Owner Scrum Master

Transcription:

Première journée du développement logiciel du CMI G. Henry 1 and D. Arrivault 2 1 Institut de Mathématiques de Marseille UMR 7373 2 Laboratoire d Excellence Archimède Aix Marseille Université 10 février 2015 / 1ère journée du développement logiciel du CMI

Outline Introduction Qu est-ce que c est une journée du développement? Mais je ne fais pas de logiciel moi? Le principe de ces journées. Le Labex Archimède. Des bonnes pratiques. Qu est-ce qu un bon logiciel? Les spécifications. Se donner des règles. Un peu de rigueur. En résumé Des outils à connaître. Les gestionnaires de version. Les Forges. D autres outils bien utiles Conclusions Credits

Introduction Qu est-ce que c est une journée du développement? Qu est-ce que c est une journée du développement? Objectifs Apporter de l aide au chercheurs qui souhaitent programmer. L ordre du jour dépend des demandes. Mutualiser les pratiques. Rencontres autours de thématiques techniques. Favoriser les échanges avec les ingénieurs développement mais aussi entre chercheurs. Faire connaître les bonnes pratiques et les outils qui vous feront gagner du temps et de la qualité.

Introduction Mais je ne fais pas de logiciel moi? Mais je ne fais pas de logiciel moi? Le développement logiciel Wikipédia : Le développement de logiciel consiste à étudier, concevoir, construire, transformer, mettre au point, maintenir et améliorer des logiciels. Un logiciel Wikipédia : En informatique, un logiciel est un ensemble de séquences d instructions interprétables par une machine et d un jeu de données nécessaires à ces opérations. Toute ligne de code, instruction, interface est un logiciel et celui qui la produit fait du développement logiciel!

Introduction Mais je ne fais pas de logiciel moi? Mais je ne fais pas de logiciel moi? Qui fait du développement logiciel?

Introduction Mais je ne fais pas de logiciel moi? Mais je ne fais pas de logiciel moi? Qui fait du développement logiciel?

Introduction Le principe de ces journées. Le principe de ces journées. 4 exposés (2 tutoriels + 2 présentations) d une demi-heure questions incluses + un temps à la fin pour les retours, les questions sur des problématiques personnelles et les suggestions. Tout le monde est le bienvenu pour proposer des interventions. Si vous avez une expérience avec un langage, un logiciel, une API (Interface de Programmation), un outil d aide au développement... La fréquence n est pas encore fixée, cela dépendra des propositions d interventions. Une journée / trimestre serait bien. La même chose sera mis en place à Luminy.

Introduction Le Labex Archimède. Le Labex Archimède. 4 Laboratoires (I2M, LIF, LSIS, CPT) + CIRM. 4 Missions : renforcer les collaborations inter laboratoires, favoriser les échanges internationaux, développer les échanges de compétences et les transferts technologiques, améliorer les liens entre la recherche et l enseignement au sein de l AMU. 1 Cellule d expertise en développement de logiciels. Projets en cours : MACAON, traitement automatique de la langue, indexation morpho-syntaxique de textes. LTFAT-PYTHON, bibliothèque d outils temps/fréquence en Python. RR, plateforme de Recherche Reproductible pour les chercheur du labex. GOOL, traduction de code objets (java, C++, C#, python). Un appel à projets 2/3 fois par an, n hésitez pas!!!

Des bonnes pratiques. Qu est-ce qu un bon logiciel? Qu est-ce qu un bon logiciel? Du point de vue de l utilisateur. Utile : il répond aux besoins. Ergonomique : facile à utiliser. Fiable : il ne plante pas dès qu on change un paramètre, il passe le test de l utilisateur novice. Performant : optimisez, si vous ne le faites pas pour vous, faites le pour la planète... Pourquoi personne ne veut utiliser mon programme? 1. «Je ne comprends pas à quoi ça sert?» 2. «Non? Il faut vraiment rentrer les 42 paramètres à la main?» 3. «Je ne peux même plus regarder mes mails quand je lance ton truc...»

Des bonnes pratiques. Qu est-ce qu un bon logiciel? Qu est-ce qu un bon logiciel? Du point de vue du développeur Evolutif : la grosse fonction unique atteint toujours ses limites... Ouvert : utiliser de préférences des technologies (langages, interfaces) standards, ouvertes (Matlab c est cher!) et maintenues. Maintenable : commenter le code. Exploitable : facile à installer, facile à mettre à jour, permettre de sauvegarder et de récupérer les données. Les 11 facteurs qualité de Mc Call : exactitude, fiabilité, efficacité, conviviabilité, intégrité, maintenabilité, flexibilité, testabilité, portabilité, reutilisabilité, interoperabilité.

Des bonnes pratiques. Qu est-ce qu un bon logiciel? Qu est-ce qu un bon logiciel? Tout code a potentiellement vocation à être repris. 1. Si je reprends mon code dans 5 ans, vais-je comprendre ce que j ai fait? 2. Si je donne mon code à mon collègue, va-t il continuer à me parler? 3. Pourquoi le stagiaire qui doit écrire une fonctionnalité de mon programme a-t il la grippe?

Des bonnes pratiques. Les spécifications. Les spécifications.

Des bonnes pratiques. Les spécifications. Les spécifications. En matière de logiciel, il est conseillé de faire précéder l action par la réflexion... Ecrire ce que le logiciel doit faire. Les cas d utilisation : comment il va s utiliser. Les besoins fonctionnels : comment les données seront modifiées. Les besoins non fonctionnels : environnement, performance, sécurité, support, maintenabilité... Les limites du logiciel : ce qu il ne fera pas. Chaque spécification doit pouvoir être démontrée/testée.

Des bonnes pratiques. Se donner des règles. Se donner des règles. Réfléchir à comment on va le faire. Le ou les langage(s) à utiliser, les bibliothèques externes à utiliser (influence sur la licence), la chaîne de compilation (compilateur, outils), la structure du dépôt source, le ou les paradigmes de programmation, les règles de nommage, la gestion des erreurs, la gestion des commentaires,...

Des bonnes pratiques. Un peu de rigueur. Un peu de rigueur. Quelques conseils. Rédiger un document d architecture (expliquant les choix de programmation) qui sera mis à jour durant le développement. Développer par l exemple : on commence par construire un exemple complet (code, test, documentation) qui sert de template pour la suite. Faire de la revue de code si on développe à plusieurs. Documenter au plus près du code (Génération automatique de documentation). Rédiger des tutoriels et un document utilisateur. Ecrire des tests et les automatiser : unitaires (structurels), intégration, fonctionnels (système global), recette (acceptation). Ecrire des classes et des méthodes de taille raisonnable.

Des bonnes pratiques. En résumé En résumé YAGNI : You Ain t Gonna Need It, pas de fonctionnalités qui ne sont pas spécifiées. KISS : Keep It Simple. DRY : Don t Repeat Yourself, le copier/coller est à éviter. Réutiliser du code, ne pas réécrire ce qui existe déjà.

Des outils à connaître. Les gestionnaires de version. Les gestionnaires de version. Permet de stocker les fichiers source en conservant la chronologie de toutes les modifications qui ont été effectuées. Les plus courants. GIT Subversion ou SVN Mercurial CVS

Des outils à connaître. Les Forges. Les Forges. Ensemble d outils qui facilitent le développement collaboratif. Une forge intègre généralement : un gestionnaire de version ; un gestionnaire de listes de discussion (et/ou de forums) ; un outil de suivi des bugs ; un gestionnaire de documentation (souvent sur le principe du wiki) ; un gestionnaire des tâches. Quelques exemples Souce Sup de Renater : https://sourcesup.renater.fr/ GForge Inria : https://gforge.inria.fr/ GitLab du LIF : https://gitlab.lif.univ-mrs.fr SouceForge : http://sourceforge.net/ GitHub de GiHub Enterprise : https://github.com/ Pour les deux dernières le code doit être open source.

Des outils à connaître. D autres outils bien utiles D autres outils bien utiles Intégration Continue Adossée à une forge, elle compile, lance les tests et rapporte les résultats à chaque nouveau commit. Jenkins, GitLab CI, travis-ci. Les outils de build Gestion de toute la chaîne de compilation, des tests et de la distribution. Pour Java : Maven, Gradle. Pour C++ : CMake/CTest/CPack. Pour Python : distutils/pip Et encore... tests : cunit, cppunit, junit, pytest, Funit... IDE : emacs, Eclipse, Netbeans, Spyder... Debuggers : gdb, jdb, pdb. Profiling : gprof, valgrind.

Conclusions Conclusions La qualité doit être un principe dès le début du projet. Faire simple. Le développement c est : 1/3 de réflexion, 1/3 de programmation, 1/3 de tests.

Credits Credits Uncle Sam (pointing finger) : http://commons.wikimedia.org/wiki/file:uncle_sam_(pointing_finger).jpg Picture under a Creative Commons licence from James Montgomery Flagg (1916-1917) Comics under a Creative Commons licence : http://xkcd.com/