61
Outils de gestion de projets Sébastien Combéfis Mercredi 13 avril 2016

Outils de gestion de projets

Embed Size (px)

Citation preview

Page 1: Outils de gestion de projets

Outils de gestion de projetsSébastien Combéfis

Mercredi 13 avril 2016

Page 2: Outils de gestion de projets

Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative CommonsAttribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.

Page 3: Outils de gestion de projets

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

Page 4: Outils de gestion de projets

Versioning de code

Page 5: Outils de gestion de projets

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

Page 6: Outils de gestion de projets

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

Page 7: Outils de gestion de projets

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

Page 8: Outils de gestion de projets

Prononciation

[ gít ] [ jít ]

4 8

8

Page 9: Outils de gestion de projets

Prononciation

[ gít ] [ jít ]

4 8

8

Page 10: Outils de gestion de projets

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

Page 11: Outils de gestion de projets

Git décentralisé

Accès en écriture seulement pour les mainteneurs

Les contributeurs font des pull requests

Serveur

Contributeur

Serveur principal

Mainteneur

pushpull

push

pull request

10

Page 12: Outils de gestion de projets

États des fichiers (1)

Un fichier doit être explicitement ajouté au dépôt Git

UntrackedModified

Staged Committedgit add git commit

Espace de travail Zone de transit Dépôt Git

11

Page 13: Outils de gestion de projets

États des fichiers (2)

Untracked/ModifiedNouveaux fichiers ou fichiers modifiés

Pas pris en compte pour le prochain commit

StagedFichiers ajoutés, modifiés, supprimés ou déplacés

Pris en compte pour le prochain commit

Unmodified/CommittedAucune modification pour le prochain commit

12

Page 14: Outils de gestion de projets

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

Page 15: Outils de gestion de projets

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

master

98173c

master

14

Page 16: Outils de gestion de projets

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

master

98173c

master

14

Page 17: Outils de gestion de projets

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 master

98173c

master

14

Page 18: Outils de gestion de projets

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

Page 19: Outils de gestion de projets

Branche courante

La commande « git branch » liste les branches existantes

1 $ git branch2 * master3 test

La branche courante est identifiée par HEAD

82ea19 cd27e1 98173c

master

test

HEAD

16

Page 20: Outils de gestion de projets

Changer de branche

La commande « git checkout <name> » change de branche

1 $ git checkout test2 Switched to branch ’test ’

La branche courante est identifiée par HEAD

82ea19 cd27e1 98173c

master

testHEAD

17

Page 21: Outils de gestion de projets

Commit sur une branche

Un commit va toujours se faire sur la branche courante

1 ...2 $ git commit ...3 $ git checkout master4 ...5 $ git commit ...

82ea19 cd27e1 98173c

62eac3

ab716e 716ea4

master

testHEAD

HEAD

masterHEAD

18

Page 22: Outils de gestion de projets

Commit sur une branche

Un commit va toujours se faire sur la branche courante

1 ...2 $ git commit ...3 $ git checkout master4 ...5 $ git commit ...

82ea19 cd27e1 98173c

62eac3

ab716e

716ea4

master

testHEAD

HEAD

masterHEAD

18

Page 23: Outils de gestion de projets

Commit sur une branche

Un commit va toujours se faire sur la branche courante

1 ...2 $ git commit ...3 $ git checkout master4 ...5 $ git commit ...

82ea19 cd27e1 98173c

62eac3

ab716e 716ea4

master

testHEAD

masterHEAD

18

Page 24: Outils de gestion de projets

Commit sur une branche

Un commit va toujours se faire sur la branche courante

1 ...2 $ git commit ...3 $ git checkout master4 ...5 $ git commit ...

82ea19 cd27e1 98173c

62eac3

ab716e 716ea4

master

test

HEAD

HEAD

masterHEAD

18

Page 25: Outils de gestion de projets

Commit sur une branche

Un commit va toujours se faire sur la branche courante

1 ...2 $ git commit ...3 $ git checkout master4 ...5 $ git commit ...

82ea19 cd27e1 98173c

62eac3

ab716e 716ea4

test

HEAD

masterHEAD

18

Page 26: Outils de gestion de projets

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

Page 27: Outils de gestion de projets

Modèle de branchement

http://nvie.com/posts/a-successful-git-branching-model/20

Page 28: Outils de gestion de projets

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

Page 29: Outils de gestion de projets

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 -v2 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 updatekernel2 $ git merge remotes / charlesvdv / updatekernel

22

Page 30: Outils de gestion de projets

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

Page 31: Outils de gestion de projets

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

Page 32: Outils de gestion de projets

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

Page 33: Outils de gestion de projets

Plateforme GitHub (2)

26

Page 34: Outils de gestion de projets

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

Page 35: Outils de gestion de projets

Déploiement de code

Page 36: Outils de gestion de projets

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

Page 37: Outils de gestion de projets

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

Page 38: Outils de gestion de projets

Plateforme Heroku (2)

31

Page 39: Outils de gestion de projets

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.92 requests ==2.9.1

32

Page 40: Outils de gestion de projets

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

Page 41: Outils de gestion de projets

Test de code

Page 42: Outils de gestion de projets

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

Page 43: Outils de gestion de projets

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

Page 44: Outils de gestion de projets

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

Page 45: Outils de gestion de projets

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

Page 46: Outils de gestion de projets

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

Page 47: Outils de gestion de projets

Plateforme Travis (2)

40

Page 48: Outils de gestion de projets

Exemple d’une app Java

Configuration des tests avec .travis.yml

1 language : java2 script : ant test3 jdk: openjdk7

Création du script de test1 <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" />67 <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

Page 49: Outils de gestion de projets

Planification et tâches

Page 50: Outils de gestion de projets

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

Page 51: Outils de gestion de projets

Plateforme Trello (2)

44

Page 52: Outils de gestion de projets

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

Page 53: Outils de gestion de projets

Plateforme FreedCamp (2)

46

Page 54: Outils de gestion de projets

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

Page 55: Outils de gestion de projets

Plateforme Slack (2)

48

Page 56: Outils de gestion de projets

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

Page 57: Outils de gestion de projets

Plateforme Tom’splanner (2)

50

Page 58: Outils de gestion de projets

Documentation de code

Page 59: Outils de gestion de projets

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

Page 60: Outils de gestion de projets

Plateforme Read the Docs (2)

53

Page 61: Outils de gestion de projets

Créditshttps://www.flickr.com/photos/vfsdigitaldesign/5396691102https://www.flickr.com/photos/jwhitesmith/7363049912https://openclipart.org/detail/34531/tango-computerhttps://openclipart.org/detail/36565/tango-network-serverhttps://www.flickr.com/photos/faisal_akram/8107449789https://www.flickr.com/photos/nasamarshall/21064480196https://www.flickr.com/photos/bohman/5206587246https://www.flickr.com/photos/bike/10502030344

54