SlideShare une entreprise Scribd logo
Outils de gestion de projets
Sébastien Combéfis
Mercredi 13 avril 2016
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.
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 ]
8
Prononciation
[ gít ] [ jít ]
 
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
push
pull
push
pull request
10
É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
É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
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
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
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 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 branch
2 * master
3 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 test
2 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 master
4 ...
5 $ git commit ...
82ea19 cd27e1 98173c
master
testHEAD
18
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
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
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
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
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 -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
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.9
2 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: 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
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é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

Contenu connexe

Tendances

Guide méthodologique pour mettre en oeuvre une démarche de e formation
Guide méthodologique pour mettre en oeuvre une démarche de e formationGuide méthodologique pour mettre en oeuvre une démarche de e formation
Guide méthodologique pour mettre en oeuvre une démarche de e formationMission laïque française
 
Cours et TP Ms Project
Cours et TP Ms ProjectCours et TP Ms Project
Cours et TP Ms Projecthindif
 
Agile presentation
Agile presentationAgile presentation
Agile presentation
Benjamin ACHAB
 
Management des coûts
Management des coûtsManagement des coûts
Management des coûts
younes elhaiba
 
Management du contenu du projet
Management du contenu du projetManagement du contenu du projet
Management du contenu du projet
younes elhaiba
 
Modélisation des processus métiers BPMN
Modélisation des processus métiers BPMNModélisation des processus métiers BPMN
Modélisation des processus métiers BPMN
Youness Boukouchi
 
Présentation projet de fin d'étude
Présentation projet de fin d'étudePrésentation projet de fin d'étude
Présentation projet de fin d'étude
Donia Hammami
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
Bilal ZIANE
 
Méthodes agiles: Scrum et XP
Méthodes agiles: Scrum et XPMéthodes agiles: Scrum et XP
Méthodes agiles: Scrum et XP
Youness Boukouchi
 
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
Ardesi Midi-Pyrénées
 
Gestion de projet
Gestion de projetGestion de projet
Gestion de projet
Aurelien Gaucherand
 
Développement d'un forum de discussion
Développement d'un forum de discussionDéveloppement d'un forum de discussion
Développement d'un forum de discussion
Youssef NIDABRAHIM
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
Thibaut Marmin
 
Gestion de projet
Gestion de projetGestion de projet
Gestion de projet
naziha harrag
 
Créer une application Cloud native_v7.pdf
Créer une application Cloud native_v7.pdfCréer une application Cloud native_v7.pdf
Créer une application Cloud native_v7.pdf
KhalidKadmiri
 
Ch 01 poo
Ch 01 pooCh 01 poo
Ch 01 poo
Yassine Badri
 
Formation VBA Excel
Formation VBA ExcelFormation VBA Excel
Formation VBA Excel
Olivier Le Goaër
 
Méthodes Agiles - La Méthode XP
Méthodes Agiles - La Méthode XPMéthodes Agiles - La Méthode XP
Méthodes Agiles - La Méthode XP
Mohammed Amine Mostefai
 
Cycle de développement du logiciel
Cycle de développement du logicielCycle de développement du logiciel
Cycle de développement du logiciel
Majid CHADAD
 
Fondamentaux de la gestion de projet (cours 2)
Fondamentaux de la gestion de projet (cours 2)Fondamentaux de la gestion de projet (cours 2)
Fondamentaux de la gestion de projet (cours 2)
Françoise Gouzi
 

Tendances (20)

Guide méthodologique pour mettre en oeuvre une démarche de e formation
Guide méthodologique pour mettre en oeuvre une démarche de e formationGuide méthodologique pour mettre en oeuvre une démarche de e formation
Guide méthodologique pour mettre en oeuvre une démarche de e formation
 
Cours et TP Ms Project
Cours et TP Ms ProjectCours et TP Ms Project
Cours et TP Ms Project
 
Agile presentation
Agile presentationAgile presentation
Agile presentation
 
Management des coûts
Management des coûtsManagement des coûts
Management des coûts
 
Management du contenu du projet
Management du contenu du projetManagement du contenu du projet
Management du contenu du projet
 
Modélisation des processus métiers BPMN
Modélisation des processus métiers BPMNModélisation des processus métiers BPMN
Modélisation des processus métiers BPMN
 
Présentation projet de fin d'étude
Présentation projet de fin d'étudePrésentation projet de fin d'étude
Présentation projet de fin d'étude
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Méthodes agiles: Scrum et XP
Méthodes agiles: Scrum et XPMéthodes agiles: Scrum et XP
Méthodes agiles: Scrum et XP
 
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
 
Gestion de projet
Gestion de projetGestion de projet
Gestion de projet
 
Développement d'un forum de discussion
Développement d'un forum de discussionDéveloppement d'un forum de discussion
Développement d'un forum de discussion
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
 
Gestion de projet
Gestion de projetGestion de projet
Gestion de projet
 
Créer une application Cloud native_v7.pdf
Créer une application Cloud native_v7.pdfCréer une application Cloud native_v7.pdf
Créer une application Cloud native_v7.pdf
 
Ch 01 poo
Ch 01 pooCh 01 poo
Ch 01 poo
 
Formation VBA Excel
Formation VBA ExcelFormation VBA Excel
Formation VBA Excel
 
Méthodes Agiles - La Méthode XP
Méthodes Agiles - La Méthode XPMéthodes Agiles - La Méthode XP
Méthodes Agiles - La Méthode XP
 
Cycle de développement du logiciel
Cycle de développement du logicielCycle de développement du logiciel
Cycle de développement du logiciel
 
Fondamentaux de la gestion de projet (cours 2)
Fondamentaux de la gestion de projet (cours 2)Fondamentaux de la gestion de projet (cours 2)
Fondamentaux de la gestion de projet (cours 2)
 

En vedette

UKO-JAVA1001-slides
UKO-JAVA1001-slidesUKO-JAVA1001-slides
Laboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projetLaboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projet
ECAM Brussels Engineering School
 
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarquéProgrammation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
ECAM Brussels Engineering School
 
De la Terre aux Étoiles : Mesure des distances Terre-Étoile
De la Terre aux Étoiles : Mesure des distances Terre-ÉtoileDe la Terre aux Étoiles : Mesure des distances Terre-Étoile
De la Terre aux Étoiles : Mesure des distances Terre-Étoile
ECAM Brussels Engineering School
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...
ECAM Brussels Engineering School
 
Modélisation avec UML
Modélisation avec UMLModélisation avec UML
Modélisation avec UML
ECAM Brussels Engineering School
 
Arbre et algorithme de recherche
Arbre et algorithme de rechercheArbre et algorithme de recherche
Arbre et algorithme de recherche
ECAM Brussels Engineering School
 
Développement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresDéveloppement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulières
ECAM Brussels Engineering School
 
Python avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiersPython avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiers
ECAM Brussels Engineering School
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
ECAM Brussels Engineering School
 
Tests unitaires : Utilisation de la librairie CUnit
Tests unitaires : Utilisation de la librairie CUnitTests unitaires : Utilisation de la librairie CUnit
Tests unitaires : Utilisation de la librairie CUnit
ECAM Brussels Engineering School
 
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Découvrir et utiliser Git : le logiciel de gestion de versions décentraliséDécouvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
ECAM Brussels Engineering School
 
Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exception
ECAM Brussels Engineering School
 
Développement informatique : Programmation graphique
Développement informatique : Programmation graphiqueDéveloppement informatique : Programmation graphique
Développement informatique : Programmation graphique
ECAM Brussels Engineering School
 
Polymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraitePolymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraite
ECAM Brussels Engineering School
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielle
ECAM Brussels Engineering School
 
Composition, agrégation et immuabilité
Composition, agrégation et immuabilitéComposition, agrégation et immuabilité
Composition, agrégation et immuabilité
ECAM Brussels Engineering School
 
HTML, CSS et Javascript
HTML, CSS et JavascriptHTML, CSS et Javascript
HTML, CSS et Javascript
ECAM Brussels Engineering School
 
Type abstrait de données
Type abstrait de donnéesType abstrait de données
Type abstrait de données
ECAM Brussels Engineering School
 
Introduction à la formation Digitalent
Introduction à la formation DigitalentIntroduction à la formation Digitalent
Introduction à la formation Digitalent
ECAM Brussels Engineering School
 

En vedette (20)

UKO-JAVA1001-slides
UKO-JAVA1001-slidesUKO-JAVA1001-slides
UKO-JAVA1001-slides
 
Laboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projetLaboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projet
 
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarquéProgrammation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
 
De la Terre aux Étoiles : Mesure des distances Terre-Étoile
De la Terre aux Étoiles : Mesure des distances Terre-ÉtoileDe la Terre aux Étoiles : Mesure des distances Terre-Étoile
De la Terre aux Étoiles : Mesure des distances Terre-Étoile
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...
 
Modélisation avec UML
Modélisation avec UMLModélisation avec UML
Modélisation avec UML
 
Arbre et algorithme de recherche
Arbre et algorithme de rechercheArbre et algorithme de recherche
Arbre et algorithme de recherche
 
Développement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresDéveloppement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulières
 
Python avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiersPython avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiers
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 
Tests unitaires : Utilisation de la librairie CUnit
Tests unitaires : Utilisation de la librairie CUnitTests unitaires : Utilisation de la librairie CUnit
Tests unitaires : Utilisation de la librairie CUnit
 
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Découvrir et utiliser Git : le logiciel de gestion de versions décentraliséDécouvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
 
Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exception
 
Développement informatique : Programmation graphique
Développement informatique : Programmation graphiqueDéveloppement informatique : Programmation graphique
Développement informatique : Programmation graphique
 
Polymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraitePolymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraite
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielle
 
Composition, agrégation et immuabilité
Composition, agrégation et immuabilitéComposition, agrégation et immuabilité
Composition, agrégation et immuabilité
 
HTML, CSS et Javascript
HTML, CSS et JavascriptHTML, CSS et Javascript
HTML, CSS et Javascript
 
Type abstrait de données
Type abstrait de donnéesType abstrait de données
Type abstrait de données
 
Introduction à la formation Digitalent
Introduction à la formation DigitalentIntroduction à la formation Digitalent
Introduction à la formation Digitalent
 

Similaire à Outils de gestion de projets

3_SCM_Git.pdf
3_SCM_Git.pdf3_SCM_Git.pdf
3_SCM_Git.pdf
NourFrioui
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
François Petitit
 
Versioning avec Git
Versioning avec GitVersioning avec Git
Versioning avec Git
Jean-Baptiste Vigneron
 
Git utilisation quotidienne
Git   utilisation quotidienneGit   utilisation quotidienne
Git utilisation quotidienne
Sylvain Witmeyer
 
Git ou le renouveau du contrôle de version
Git ou le renouveau du contrôle de versionGit ou le renouveau du contrôle de version
Git ou le renouveau du contrôle de versiongoldoraf
 
les commandes Git que vous devez absolument connaitre!.pdf
les commandes Git que vous devez absolument connaitre!.pdfles commandes Git que vous devez absolument connaitre!.pdf
les commandes Git que vous devez absolument connaitre!.pdf
SimpleLearn1
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
Nicolas wallerand
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
Michael Akbaraly
 
JCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratiqueJCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratique
Rossi Oddet
 
Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgents
Nicolas Mussat
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
Jonathan Bonzy
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureMarc Nazarian
 
Tutorial Git
Tutorial GitTutorial Git
Initiation à Git, GitHub2.pdf
Initiation à Git, GitHub2.pdfInitiation à Git, GitHub2.pdf
Initiation à Git, GitHub2.pdf
mouad55
 
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
akramalidrissi1
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
Arnaud Héritier
 
Git
GitGit
Présentation Git & GitHub
Présentation Git & GitHubPrésentation Git & GitHub
Présentation Git & GitHub
Thibault Vlacich
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
Arnaud Héritier
 
Présentation du versioning avec Git
Présentation du versioning avec GitPrésentation du versioning avec Git
Présentation du versioning avec Git
msadouni
 

Similaire à Outils de gestion de projets (20)

3_SCM_Git.pdf
3_SCM_Git.pdf3_SCM_Git.pdf
3_SCM_Git.pdf
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
Versioning avec Git
Versioning avec GitVersioning avec Git
Versioning avec Git
 
Git utilisation quotidienne
Git   utilisation quotidienneGit   utilisation quotidienne
Git utilisation quotidienne
 
Git ou le renouveau du contrôle de version
Git ou le renouveau du contrôle de versionGit ou le renouveau du contrôle de version
Git ou le renouveau du contrôle de version
 
les commandes Git que vous devez absolument connaitre!.pdf
les commandes Git que vous devez absolument connaitre!.pdfles commandes Git que vous devez absolument connaitre!.pdf
les commandes Git que vous devez absolument connaitre!.pdf
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
JCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratiqueJCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratique
 
Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgents
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Tutorial Git
Tutorial GitTutorial Git
Tutorial Git
 
Initiation à Git, GitHub2.pdf
Initiation à Git, GitHub2.pdfInitiation à Git, GitHub2.pdf
Initiation à Git, GitHub2.pdf
 
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
Git
GitGit
Git
 
Présentation Git & GitHub
Présentation Git & GitHubPrésentation Git & GitHub
Présentation Git & GitHub
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
Présentation du versioning avec Git
Présentation du versioning avec GitPrésentation du versioning avec Git
Présentation du versioning avec Git
 

Plus de ECAM Brussels Engineering School

Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...
ECAM Brussels Engineering School
 
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSSProgrammation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
ECAM Brussels Engineering School
 
Programmation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communicationProgrammation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communication
ECAM Brussels Engineering School
 
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarquésProgrammation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
ECAM Brussels Engineering School
 
Johnny-Five : Robotique et IoT en JavaScript
Johnny-Five : Robotique et IoT en JavaScriptJohnny-Five : Robotique et IoT en JavaScript
Johnny-Five : Robotique et IoT en JavaScript
ECAM Brussels Engineering School
 
Introduction à LaTeX : le système de composition professionnel
Introduction à LaTeX : le système de composition professionnelIntroduction à LaTeX : le système de composition professionnel
Introduction à LaTeX : le système de composition professionnel
ECAM Brussels Engineering School
 
Développement informatique : Algorithmique II : Techniques de recherche en in...
Développement informatique : Algorithmique II : Techniques de recherche en in...Développement informatique : Algorithmique II : Techniques de recherche en in...
Développement informatique : Algorithmique II : Techniques de recherche en in...
ECAM Brussels Engineering School
 
Intelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielleIntelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielle
ECAM Brussels Engineering School
 
Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...
ECAM Brussels Engineering School
 
Développement informatique : Programmation concurrente
Développement informatique : Programmation concurrenteDéveloppement informatique : Programmation concurrente
Développement informatique : Programmation concurrente
ECAM Brussels Engineering School
 
Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbre
ECAM Brussels Engineering School
 
Développement informatique : Programmation réseau
Développement informatique : Programmation réseauDéveloppement informatique : Programmation réseau
Développement informatique : Programmation réseau
ECAM Brussels Engineering School
 
Python avancé : Qualité de code et convention de codage
Python avancé : Qualité de code et convention de codagePython avancé : Qualité de code et convention de codage
Python avancé : Qualité de code et convention de codage
ECAM Brussels Engineering School
 
Qualité de code et bonnes pratiques
Qualité de code et bonnes pratiquesQualité de code et bonnes pratiques
Qualité de code et bonnes pratiques
ECAM Brussels Engineering School
 
Comment Internet fonctionne-t-il ?
Comment Internet fonctionne-t-il ?Comment Internet fonctionne-t-il ?
Comment Internet fonctionne-t-il ?
ECAM Brussels Engineering School
 
Héritage et redéfinition de méthode
Héritage et redéfinition de méthodeHéritage et redéfinition de méthode
Héritage et redéfinition de méthode
ECAM Brussels Engineering School
 

Plus de ECAM Brussels Engineering School (16)

Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...Programmation de systèmes embarqués : Internet of Things : système connecté e...
Programmation de systèmes embarqués : Internet of Things : système connecté e...
 
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSSProgrammation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
 
Programmation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communicationProgrammation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communication
 
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarquésProgrammation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
 
Johnny-Five : Robotique et IoT en JavaScript
Johnny-Five : Robotique et IoT en JavaScriptJohnny-Five : Robotique et IoT en JavaScript
Johnny-Five : Robotique et IoT en JavaScript
 
Introduction à LaTeX : le système de composition professionnel
Introduction à LaTeX : le système de composition professionnelIntroduction à LaTeX : le système de composition professionnel
Introduction à LaTeX : le système de composition professionnel
 
Développement informatique : Algorithmique II : Techniques de recherche en in...
Développement informatique : Algorithmique II : Techniques de recherche en in...Développement informatique : Algorithmique II : Techniques de recherche en in...
Développement informatique : Algorithmique II : Techniques de recherche en in...
 
Intelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielleIntelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielle
 
Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...
 
Développement informatique : Programmation concurrente
Développement informatique : Programmation concurrenteDéveloppement informatique : Programmation concurrente
Développement informatique : Programmation concurrente
 
Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbre
 
Développement informatique : Programmation réseau
Développement informatique : Programmation réseauDéveloppement informatique : Programmation réseau
Développement informatique : Programmation réseau
 
Python avancé : Qualité de code et convention de codage
Python avancé : Qualité de code et convention de codagePython avancé : Qualité de code et convention de codage
Python avancé : Qualité de code et convention de codage
 
Qualité de code et bonnes pratiques
Qualité de code et bonnes pratiquesQualité de code et bonnes pratiques
Qualité de code et bonnes pratiques
 
Comment Internet fonctionne-t-il ?
Comment Internet fonctionne-t-il ?Comment Internet fonctionne-t-il ?
Comment Internet fonctionne-t-il ?
 
Héritage et redéfinition de méthode
Héritage et redéfinition de méthodeHéritage et redéfinition de méthode
Héritage et redéfinition de méthode
 

Outils de gestion de projets

  • 1. Outils de gestion de projets Sébastien Combéfis Mercredi 13 avril 2016
  • 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. 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
  • 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. 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. 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
  • 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. 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. É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. É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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  • 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. 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. 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. 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. 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
  • 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
  • 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. 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
  • 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. 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
  • 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. 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. 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. 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. 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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. Plateforme Read the Docs (2) 53