outils de gestion de projets
TRANSCRIPT
Outils de gestion de projetsSébastien Combéfis
Mercredi 13 avril 2016
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative CommonsAttribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.
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
Versioning de code
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
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
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
Prononciation
[ gít ] [ jít ]
4 8
8
Prononciation
[ gít ] [ jít ]
4 8
8
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
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
É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
É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
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
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
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
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
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
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
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
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
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
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
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
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
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
Modèle de branchement
http://nvie.com/posts/a-successful-git-branching-model/20
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
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
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
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
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
Plateforme GitHub (2)
26
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
Déploiement de code
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
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
Plateforme Heroku (2)
31
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
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
Test de code
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
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
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
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
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
Plateforme Travis (2)
40
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
Planification et tâches
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
Plateforme Trello (2)
44
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
Plateforme FreedCamp (2)
46
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
Plateforme Slack (2)
48
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
Plateforme Tom’splanner (2)
50
Documentation de code
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
Plateforme Read the Docs (2)
53
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