Travail en binôme#
Du fait de la taille et de la complexité des systèmes informatiques, le développement logiciel est devenu une activité hautement sociale où le travail en équipe est central. Les projets informatique de cette année (S1: Programmation Impérative, S2: Programmation Modulaire, Initiation à la Science des données) sont l’occasion de s’initier au travail en équipe – pour le moment, en binôme – et aux outils et bonnes pratique du travail collaboratif sur du logiciel.
Dans ce document, nous vous donnons quelques pistes sur comment vous organiser.
Deux outils essentiels sont la gestion de version (avec des outils comme par exemple Git) et les forges logicielles (par exemple GitLab). Pour préparer le terrain, nous vous avons fait utiliser ces outils implicitement depuis le début de l’année pour télécharger et déposer vos devoirs. Les modalités proposées ci-dessous sont conçues comme des marches intermédiaires simples à mettre en œuvre. Si vous avez déjà un peu d’expérience, nous vous encourageons à aller plus loin et mettre en œuvre les modalités standard de développement collaboratif pour exploiter ces outils à leur plein potentiel, notamment en terme de fusion de modifications.
Comment partager du code avec GitLab#
Indication
Git, GitLab, travo
Git est un logiciel de gestion de versions décentralisé. Créé par Linus Torvalds (l’auteur du noyau Linux), c’est actuellement le logiciel de gestion de versions le plus populaire.
GitLab est une forge logicielle, offrant l’hébergement de dépôt git, et plus largement la gestion de projet logiciel.
travo est le petit outil basé sur
Git et GitLab que vous avez utilisé pour télécharger et déposer vos
devoirs (via le tableau de bord, le script info-111
, ou
course.py
).
Quand vous déposez votre travail avec travo
, les données sont
stockées sous la forme d’un dépôt Git, sur le service GitLab par
l’université. Le dépôt est alors accessible à une adresse de la
forme :
https://gitlab.dsi.universite-paris-saclay.fr/<prenom>.<nom>_travo/<UE>/<Session>/<Devoir>
Par exemple :
https://gitlab.dsi.universite-paris-saclay.fr/nicolas.thiery_travo/Info111/2022-2023/Semaine7
Pour retrouver cette adresse :
depuis le tableau de bord : suivez le lien vers le dépôt
depuis la ligne de commande : elle est affichée au moment où vous déposez
depuis le service GitLab : le dépôt apparaîtra dans la liste de vos projets.
Vous pouvez à tout moment y consulter l’état de ce que vous avez déposé. Vous pouvez aussi y consulter et télécharger les fichiers à la main.
Donner accès à votre devoir à votre binôme#
Par défaut, lorsque vous déposez un devoir, il n’est accessible qu’à vous et à l’équipe enseignante. Pour donner les droits à votre binôme, il faut suivre la démarche suivante :
Déposez votre travail pour vous assurer que votre dépôt est bien créé et est à jour.
Depuis un terminal :
cd <répertoire du cours> ./course.py share_with <Devoir> <prenom.nom>
Attention
Dans les commandes ci-dessus, veillez à remplacer <répertoire du cours>
, <Devoir>
et <prenom.nom>
par les valeurs adéquates. Par
exemple ~/ProgImperative
, Projet-Image
et gael.durand
.
Votre binôme a maintenant accès en lecture à votre devoir.
Indication
Alternative : utiliser l’interface de GitLab
Connectez vous sur votre dépôt via un navigateur web.
Cliquez dans «Project information» (en haut à gauche), puis dans «Members».
Cliquer sur «Invite members» (en haut à droite).
Dans le champ «GitLab member or email address», tapez le début du nom de votre binôme puis sélectionnez le dans la liste qui apparaît alors.
Dans le champ «Select a role», choisissez «Reporter».
Cliquez sur le bouton «Invite».
Indiquer à GitLab que vous travaillez en binôme#
Soient A et B les deux membres du binôme.
L’un des membres, ici A, doit faire :
cd <Le répertoire du cours> ./course.py submit <Devoir> --leader_name <prenomB.nomB>
Tous les membres : vérifiez le résultat de la manœuvre sur votre tableau de bord. Après l’avoir relancé, les identifiants
prenom.nom
de A et de B doivent apparaître pour le devoir, avec des liens vers leurs dépôts respectifs.
Attention
Nous ne consulterons que le devoir de B : à charge pour vous de vous assurer que celui-ci contient bien l’intégralité du travail du binôme!
Danger
Par la suite, lorsque A déposera son devoir, il ne devra pas sélectionner de groupe. Sinon l’information du binôme sera perdue.
Télécharger les fichiers de votre binôme depuis GitLab à la main#
Ouvrez le dépôt sur GitLab via un navigateur web.
Par exemple via votre tableau de bord.Cliquez sur le nom du fichier que vous voulez récupérer, puis cliquez sur la flèche en haut à droite (
Download
).Pour télécharger tous les fichiers d’un coup, cliquez sur la flèche (
Download
) en haut à droite de la liste des fichiers et choisissez le format d’archive qui vous convient (typiquementzip
).
\(\clubsuit\) Télécharger les fichiers de votre binôme depuis GitLab avec Git#
Cela se fait en deux temps :
La première fois: faites un clone du dépôt de votre binôme :
git clone <url> <répertoire>
où
<url>
est l’adresse du dépôt de votre binôme, et<répertoire>
est le nom du répertoire où sera mis le code; typiquementProjetBinome
.Vous avez maintenant un répertoire
ProjetBinome
qui contient le code de votre binôme. Vous pouvez choisir n’importe quel autre nom pour ce répertoire.Chaque fois que vous voudrez récupérer la dernière version que votre binôme aura déposé : Allez dans le répertoire du projet de votre binôme :
cd ProjetBinôme
puis faites :
git pull
Vous devriez avoir un message ressemblant à
remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. From https://gitlab.dsi.universite-paris-saclay.fr/... 4f4af71..64c35d5 master -> origin/master Updating 4f4af71..64c35d5 Fast-forward bla.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
les deux dernières lignes indiquent que dans le fichier bla.cpp une ligne à été supprimée et une ligne à été ajoutée.
Danger
Vous pouvez copier les fichiers de votre binôme, mais ne les modifiez pas !!!. Vous risquez d’avoir des conflits. Si vous l’avez fait par erreur, vous pouvez supprimer le répertoire et refaire le clone selon l’étape 1 ci-dessus.
Conseils#
Communiquez régulièrement entre vous pour éviter de modifier le même fichier simultanément.
Dès que vous avez écrit une fonctionnalité qui marche, déposez votre projet pour la sauvegarder et que votre binôme puisse la récupérer.
Sur GitLab, on peut voir l’historique des modifications en cliquant sur «branch». Par défaut, lorsque vous déposez,
travo
met un message d’information de la formeSoumission depuis ... par ...
. Pour mettre un message plus informatif, allez dans le répertoire de votre projet juste avant de déposer, et tapez la commande suivante :git commit -am "<Message décrivant la modification>"
Avant de déposer, vous pouvez voir la liste des fichiers modifiés avec
git status
Les fichiers marqués «Untracked files» sont ignorés par Git. Pour qu’il en tienne compte il faut faire :
git add <NomDuFichier>
Vous pouvez voir la liste des modifications elles-mêmes avec :
git diff
Les lignes supprimées sont en rouge, celles ajoutées en vert. S’il y a plusieurs pages de modifications vous pouvez vous déplacer avec les flèches. Tapez «q» pour sortir quand vous avez fini.
Nous vous encourageons à explorer plus loin les fonctionnalités de Git!
Comment travailler à deux#
Programmation côte à côte#
Les deux personnes travaillent côte à côte, chacune sur son propre poste et sur son propre code, mais en échangeant constamment sur comment procéder, analyser les bogues, etc
Programmation en binôme#
«La programmation en binôme (de l’anglais pair programming), parfois appelée programmation par pairs ou binômage, est une méthode de travail dans laquelle deux développeurs travaillent ensemble sur un même poste de travail. La personne qui rédige le code est appelée conducteur (driver). La seconde personne, appelée observateur (observer), assiste le conducteur en décelant les imperfections, en vérifiant que le code implémente correctement le design et en suggérant des alternatives de développement. Les rôles s’échangent régulièrement pendant la séance de programmation1.» Wikipedia
Une bonne habitude : changer de rôle toutes les cinq minutes en vous passant le clavier.
À la fin de la session, un partage de code doit être fait pour que les deux personnes disposent du code.
Répartition des tâches#
Les deux personnes se répartissent les tâches à réaliser et mettent régulièrement leur code en commun.
Inconvénient : les projets sont souvent conçus avec un fil directeur de questions progressives. En attaquant directement une question sans avoir fait les précédentes, on ne bénéficie pas de ce fil directeur.