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 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.

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/<UE>-<Session>-<Devoir>

Par exemple :

https://gitlab.dsi.universite-paris-saclay.fr/nicolas.thiery/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 :

  1. Déposez votre travail pour vous assurer que votre dépôt est bien créé et est à jour.

  2. 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.

Indiquer à GitLab que vous travaillez en binôme#

Soient A et B les deux membres du binôme.

  1. L’un des membres, ici A, doit faire :

     cd <Le répertoire du cours>
     ./course.py submit <Devoir> --leader_name <prenomB.nomB>
    
  2. 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#

  1. Ouvrez le dépôt sur GitLab via un navigateur web.
    Par exemple via votre tableau de bord.

  2. Cliquez sur le nom du fichier que vous voulez récupérer, puis cliquez sur la flèche en haut à droite (Download).

  3. 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 (typiquement zip).

\(\clubsuit\) Télécharger les fichiers de votre binôme depuis GitLab avec Git#

Cela se fait en deux temps :

  1. La première fois: faites un clone du dépôt de votre binôme :

    git clone <url> <répertoire>
    

    <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; typiquement ProjetBinome.

    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.

  2. 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 forme Soumission 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!