Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Outils de gestion de projets

605 views

Published on

Cette présentation montre plusieurs outils gratuits qui peuvent être utilisés pour gérer plusieurs aspects de la gestion de projets, en particulier informatique, de manière collaborative. On y voit comment versioner son code avec Git, déployer son code avec Heroku, tester son code avec Travis, gérer et planifier son temps et ses tâches avec Trello, FreedCamp et Tom'splanner, comment communiquer avec Slack et comment rédiger sa documentation avec Read the Docs.

Published in: Technology
  • Be the first to comment

Outils de gestion de projets

  1. 1. Outils de gestion de projets Sébastien Combéfis Mercredi 13 avril 2016
  2. 2. Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.
  3. 3. Contexte Travail collaboratif sur un projet informatique Nécessité de coordination entre les développeurs Utilisation d’outils en ligne de gestion Pour différents aspects de la gestion de projet 3
  4. 4. Versioning de code
  5. 5. Source Code Management Pour tout projet informatique, il faut une stratégie de backup On ajoute souvent une gestion des versions Un développeur peut proposer plusieurs révisions par jour Source Code Manager (SCM) Version Control System (VCS) Revision Control System (RCS) 5
  6. 6. Buts d’un gestionnaire de versions Gestion d’un projet de programmation Garder l’historique de toutes les modifications Travail en équipe Support de branches de développement 6
  7. 7. Git Système inventé par Linus Torvalds pour le kernel Linux Git a vu le jour en avril 2005 Premier commit le 8 avril Logiciel de gestion de versions décentralisé Connexion internet uniquement pour les pull et push 7
  8. 8. Prononciation [ gít ] [ jít ] 8
  9. 9. Prononciation [ gít ] [ jít ] 8
  10. 10. Git avec un serveur central Accès en écriture pour tous les développeurs Serveur central Développeur A Développeur B push pull pull push 9
  11. 11. Git décentralisé Accès en écriture seulement pour les mainteneurs Les contributeurs font des pull requests Serveur Contributeur Serveur principal Mainteneur push pull push pull request 10
  12. 12. États des fichiers (1) Un fichier doit être explicitement ajouté au dépôt Git Untracked Modified Staged Committed git add git commit Espace de travail Zone de transit Dépôt Git 11
  13. 13. États des fichiers (2) Untracked/Modified Nouveaux fichiers ou fichiers modifiés Pas pris en compte pour le prochain commit Staged Fichiers ajoutés, modifiés, supprimés ou déplacés Pris en compte pour le prochain commit Unmodified/Committed Aucune modification pour le prochain commit 12
  14. 14. Commandes de base Ajouter un fichier dans la zone de transit git add fichier Obtenir l’état des fichiers git status Valider les modifications en créant un commit git commit -m Titre du commit Obtenir l’historique des commits git log 13
  15. 15. Le concept de branche Une branche pointe vers un commit À chaque nouveau commit, le pointeur de branche avance Un commit pointe vers le commit parent 82ea19 master 14
  16. 16. Le concept de branche Une branche pointe vers un commit À chaque nouveau commit, le pointeur de branche avance Un commit pointe vers le commit parent 82ea19 cd27e1 master 14
  17. 17. Le concept de branche Une branche pointe vers un commit À chaque nouveau commit, le pointeur de branche avance Un commit pointe vers le commit parent 82ea19 cd27e1 98173c master 14
  18. 18. Création d’une nouvelle branche Une nouvelle branche est créée avec « git branch name » 1 $ git branch test 82ea19 cd27e1 98173c master test 15
  19. 19. Branche courante La commande « git branch » liste les branches existantes 1 $ git branch 2 * master 3 test La branche courante est identifiée par HEAD 82ea19 cd27e1 98173c master test HEAD 16
  20. 20. Changer de branche La commande « git checkout name » change de branche 1 $ git checkout test 2 Switched to branch ’test ’ La branche courante est identifiée par HEAD 82ea19 cd27e1 98173c master testHEAD 17
  21. 21. Commit sur une branche Un commit va toujours se faire sur la branche courante 1 ... 2 $ git commit ... 3 $ git checkout master 4 ... 5 $ git commit ... 82ea19 cd27e1 98173c master testHEAD 18
  22. 22. Commit sur une branche Un commit va toujours se faire sur la branche courante 1 ... 2 $ git commit ... 3 $ git checkout master 4 ... 5 $ git commit ... 82ea19 cd27e1 98173c ab716e master testHEAD 18
  23. 23. Commit sur une branche Un commit va toujours se faire sur la branche courante 1 ... 2 $ git commit ... 3 $ git checkout master 4 ... 5 $ git commit ... 82ea19 cd27e1 98173c ab716e 716ea4 master testHEAD 18
  24. 24. Commit sur une branche Un commit va toujours se faire sur la branche courante 1 ... 2 $ git commit ... 3 $ git checkout master 4 ... 5 $ git commit ... 82ea19 cd27e1 98173c ab716e 716ea4 master test HEAD 18
  25. 25. Commit sur une branche Un commit va toujours se faire sur la branche courante 1 ... 2 $ git commit ... 3 $ git checkout master 4 ... 5 $ git commit ... 82ea19 cd27e1 98173c 62eac3 ab716e 716ea4 test masterHEAD 18
  26. 26. Pourquoi des branches ? Organisation du code ou de l’équipe de développement Conventions à choisir pour chaque projet Plusieurs utilisations différentes Une branche par développeur Une branche par système d’exploitation supporté Une branche par version (production, développement...) Convention spéciale pour la plateforme d’hébergement 19
  27. 27. Modèle de branchement http://nvie.com/posts/a-successful-git-branching-model/ 20
  28. 28. Fusion de branches Fusionner deux branches pour en combiner les modifications La fusion se fait vers la branche courante 1 $ git merge test 82ea19 cd27e1 98173c 62eac3 ab716e 716ea4 test masterHEAD 886ca5 21
  29. 29. Dépôts distants (1) Stockage de références vers des dépôts distants Identifiant pour chaque référence 1 $ git remote -v 2 charlesvdv https :// github.com/charlesvdv/pythia.git (fetch) 3 charlesvdv https :// github.com/charlesvdv/pythia.git (push) 4 origin https :// github.com/pythia -project/pythia.git (fetch) 5 origin https :// github.com/pythia -project/pythia.git (push) Récupération de commits d’un dépôt distant Deux opérations possibles en une fois avec git pull 1 $ git fetch charlesvdv updatekernel 2 $ git merge remotes/charlesvdv/ updatekernel 22
  30. 30. Dépôts distants (2) Envoi de commits vers un dépôt distant Utilisation de git push 1 $ git push origin master Assurer la cohérence entre les branches locales et distantes État ahead/behind du local par rapport au distant 23
  31. 31. Autres systèmes de versionnement Mercurial (https://www.mercurial-scm.org/) Écrit en Python, commande principale hg Bazaar (http://bazaar.canonical.com/en/) Écrit en Python, commande principale bzr 24
  32. 32. Plateforme GitHub (1) Plateforme d’hébergement de dépôts Git Serveur public permettant le partage de code Création gratuite d’un compte pour dépôts publics https://github.com/ 25
  33. 33. Plateforme GitHub (2) 26
  34. 34. Plateforme Bitbucket Plateforme d’hébergement de dépôts Git et Mercurial Serveur public permettant le partage de code Création gratuite d’un compte pour dépôts publics et privés https://bitbucket.org/ 27
  35. 35. Déploiement de code
  36. 36. Déploiement Installation, configuration et déploiement automatisé Sur base d’un dépôt Git, ou tout autre dépôt distant Configuration de l’environnement d’exécution Les logiciels prérequis qui doivent être installés Définition du script de lancement Commande(s) à exécuter pour lancer le logiciel Définition de variables d’environnement Configuration d’options et paramètres au logiciel 29
  37. 37. Plateforme Heroku (1) Plateforme d’hébergement d’applications Déploiement d’applications web et serveur en ligne Création gratuite de dynos pour petites applications https://www.heroku.com 30
  38. 38. Plateforme Heroku (2) 31
  39. 39. Exemple d’une app Python Environnement d’exécution avec runtime.txt 1 python -3.5.1 Script de lancement avec Procfile 1 web: python3 server.py Prérequis à installer avec requirements.txt 1 bottle ==0.12.9 2 requests ==2.9.1 32
  40. 40. Outil Jenkins Outil d’intégration continue Déploiement d’applications web et serveur en ligne Outil open-source installable facilement sur un serveur https://jenkins.io/ 33
  41. 41. Test de code
  42. 42. Testing Nécessité de tester qu’un programme fait bien ce qu’il faut Définir ce que le programme doit faire Écrire un jeu de tests pour vérifier le programme Impossible de garantir l’exactitude d’un programme On ne peut pas tester tous les scénarios possibles Amélioration de la qualité de code Un jeu de tests bien choisi diminue le nombre de bugs potentiels 35
  43. 43. Types de test Test utilisateur (usability testing) Évaluer un programme par des tests utilisateurs (ergonomie...) Test fonctionnel (functional testing) Assurance qualité (QA) et test black-box sur les spécifications Test d’intégration (integration testing) Vérification des performances et de la fiabilité du programme 36
  44. 44. Test unitaire Test individuel d’une unité dans le code Une fonction, une classe ou une méthode Définition du test sur base d’une spécification du code Étant donné les préconditions, vérifier les postconditions Utilisé notamment en Test-Driven Development (TDD) Technique de développement de logiciel piloté par les tests 37
  45. 45. Cycle TDD Cycle en trois phases principales Red–Green–Refactor Red Green Refactor 1. Écrire un test qui échoue 2. Faire fonctionner le code 3. Éliminer la redondance 38
  46. 46. Plateforme Travis (1) Plateforme d’exécution automatique de tests Code automatiquement rapatrié depuis GitHub par exemple Création gratuite d’un compte pour tester des dépôts publics https://travis-ci.org/ 39
  47. 47. Plateforme Travis (2) 40
  48. 48. Exemple d’une app Java Configuration des tests avec .travis.yml 1 language: java 2 script: ant test 3 jdk: openjdk7 Création du script de test 1 project name=MathLib 2 target name=test 3 delete dir=bin / 4 mkdir dir=bin / 5 javac includeantruntime =false srcdir=. destdir=bin classpath=lib/junit4 -4.11. jar / 6 7 junit printsummary =on showoutput=true haltonfailure =yes fork=true 8 classpath 9 pathelement location=bin / 10 pathelement location=lib/junit4 -4.11. jar / 11 pathelement location=lib/hamcrest -core -1.3. jar / 12 /classpath 13 formatter type=plain usefile=false / 14 test name=be.ukonline.mathlib.test.TestMatrix / 15 test name=be.ukonline.mathlib.test.TestSinus / 16 /junit 17 /target 18 /project 41
  49. 49. Planification et tâches
  50. 50. Plateforme Trello (1) Plateforme de gestion de projets Utilisation du paradigme Kanban de Toyota pour la gestion Création gratuite d’un compte pour version complète de base https://trello.com/ 43
  51. 51. Plateforme Trello (2) 44
  52. 52. Plateforme FreedCamp (1) Plateforme de gestion de projets Paradigme Kanban, liste de todo’s, calendrier... Création gratuite d’un compte pour version complète de base https://freedcamp.com/ 45
  53. 53. Plateforme FreedCamp (2) 46
  54. 54. Plateforme Slack (1) Plateforme de communication Messagerie entre membres d’une équipe Création gratuite d’un compte pour petites équipes https://slack.com/ 47
  55. 55. Plateforme Slack (2) 48
  56. 56. Plateforme Tom’splanner (1) Plateforme de planification d’un projet Réalisation d’un diagramme de Gantt en ligne Création gratuite d’un compte personnel avec un planning http://www.tomsplanner.com/ 49
  57. 57. Plateforme Tom’splanner (2) 50
  58. 58. Documentation de code
  59. 59. Plateforme Read the Docs (1) Plateforme d’hébergement de documentation Récupération depuis dépôt Git (Markdown ou reStructuredText) Création gratuite d’un compte https://readthedocs.org/ 52
  60. 60. Plateforme Read the Docs (2) 53
  61. 61. Crédits https://www.flickr.com/photos/vfsdigitaldesign/5396691102 https://www.flickr.com/photos/jwhitesmith/7363049912 https://openclipart.org/detail/34531/tango-computer https://openclipart.org/detail/36565/tango-network-server https://www.flickr.com/photos/faisal_akram/8107449789 https://www.flickr.com/photos/nasamarshall/21064480196 https://www.flickr.com/photos/bohman/5206587246 https://www.flickr.com/photos/bike/10502030344 54

×