• 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 07/08/2024

Planifiez le versioning du projet

La phase de préparation n’est pas encore terminée. Il nous faut maintenant structurer notre travail grâce au versioning

Établissez votre stratégie de versioning

Structurer le travail en développement logiciel est crucial pour plusieurs raisons.

  • Il permet de garder une trace claire des modifications et des développements en cours.

  • Il facilite la collaboration entre les membres de l'équipe, permettant à chacun de savoir sur quoi les autres travaillent et comment leurs contributions s'intègrent dans le projet global.

  • Il rend la maintenance et la mise à jour du code plus facile, en permettant de localiser rapidement les sections du code qui doivent être modifiées ou corrigées.

Le versioning s'inscrit parfaitement dans cette structuration en offrant un cadre pour gérer les différentes versions du code source de manière organisée et contrôlée.

Est-ce qu'il existe différentes stratégies de versioning ?

Oui, il en existe plusieurs, chacune est adaptée à des besoins spécifiques du projet et de l'équipe. Voici les plus courantes.

Stratégie de versioning

Fonctionnement

Principaux objectifs

Par fonctionnalité (Feature Branching)

  • Chaque nouvelle fonctionnalité est développée dans une branche distincte, séparée de la branche principale (main en anglais).

  • Une fois la fonctionnalité terminée et testée, elle est fusionnée dans la branche principale.

  • Isolation des développements

  • Facilitation de l'intégration et des tests

  • Retours aux versions antérieures (rollbacks en anglais) simplifiés

Par release (Release branching)

Des branches spécifiques sont créées pour chaque version majeure ou mineure de l'application.

Stabiliser une version avant sa mise en production, tout en continuant le développement de nouvelles fonctionnalités dans des branches séparées.

Par environnement (Environment branching)

Les branches sont créées en fonction des environnements de déploiement, comme développement, pré-production (staging en anglais) et production.

Tester les modifications dans des environnements contrôlés avant de les déployer en production.

Branche unique de travail

On sauvegarde au fur et à mesure sur la seule et unique branche du projet.

Réduire la gestion des branches et simplifier le versioning à la seule utilisation des sauvegardes incrémentales (commits en anglais).

Voici un exemple de noms de branches.

- main
  - feature/login
  - feature/dashboard
  - release/1.0
  - dev
  - staging
  - production

Sélectionnez l’option de versioning adaptée à votre projet

Il est maintenant important de choisir une stratégie adaptée à vos besoins et à votre équipe. Dans le contexte de l’application EPCollaboratif, nous allons examiner deux options principales pour la gestion du versioning : l'utilisation d'une branche unique pour le développement et la création d'une branche par brique de travail.

Option 1 : Utilisez une branche unique pour le développement jusqu'à la fusion finale

Cette option consiste à développer toutes les fonctionnalités et à effectuer les modifications sur une seule branche, généralement la branchemain ou develop. Une fois que le travail est terminé, la branche est fusionnée dans la branchemain.

Voici ses principaux avantages.

  • La gestion des branches est simplifiée car il n'y a qu'une seule branche à gérer.

  • Il n’y a pas besoin de synchroniser régulièrement les modifications entre plusieurs branches.

Voici ses principaux inconvénients.

  • Les relectures de code (reviews en anglais) peuvent devenir très lourdes et complexes, car toutes les modifications sont regroupées dans une seule fusion.

  • Il y a une augmentation du risque de conflits lorsque plusieurs développeurs travaillent sur la même branche.

Voici un exemple de branche unique.

- main
  - develop (développement unique)

Option 2 : Créez une branche par fonctionnalité (feature branching)

Cette option consiste à créer une branche distincte pour chaque brique de travail ou fonctionnalité. Chaque branche est développée et testée séparément avant d'être fusionnée dans la branche principale (“main”).

Voici ses principaux avantages.

  • Les reviews de code  sont plus petites et plus faciles à gérer, car elles se concentrent sur des fonctionnalités spécifiques.

  • Le travail se fait sur plusieurs fonctionnalités en parallèle sans qu’elles interfèrent les unes avec les autres.

Voici ses principaux inconvénients.

  • La gestion des branches est plus complexe, nécessitant une synchronisation régulière pour éviter les conflits.

  • Une meilleure coordination entre les membres de l'équipe doit être organisée pour s'assurer que les branches sont fusionnées de manière régulière.

Voici un exemple de branche par fonctionnalité.

- main
  - feature/home
  - feature/addproject
  - feature/addtask

Mettez en place des tickets sur GitHub

Pour structurer encore plus votre travail, il est utile d'utiliser des tickets sur GitHub pour suivre les tâches, les bogues et les nouvelles fonctionnalités. Voici comment mettre en place et utiliser des tickets sur GitHub :

1. Créez un nouveau ticket.

  • Accédez à l'onglet Issuesde votre dépôt GitHub.

Capture d'écran de la page GitHub d'un projet d'OpenClassrooms. La barre de navigation supérieure affiche les onglets 'Code', 'Issues' et 'Pull requests'. L'icône de GitHub est visible en haut à gauche.
Onglet “Issues”
  • Cliquez surNew issuepour créer un nouveau ticket.

Capture d'écran d'un bouton vert intitulé 'New issue' sur une page GitHub, permettant de créer une nouvelle issue dans le projet.
Onglet “New issue”
  • Remplissez le formulaire avec un titre descriptif et une description détaillée de la tâche ou du problème.

Capture d'écran d'une issue GitHub intitulée 'Implémenter la HomePage #1'. L'utilisateur a ouvert cette issue et a commenté : 'Créer une page home qui affiche la liste des projets, permet d'ajouter/supprimer/consulter/filtrer des projets.
Description d’une issue

2. Assignez des tickets.

Vous pouvez assigner des tickets à des membres spécifiques de l'équipe pour indiquer qui est responsable de la tâche. Utilisez des labels pour catégoriser les tickets (par exemple : “bug”, “feature” ou “enhancement”).

Capture d'écran montrant les assignations et les labels d'une issue GitHub. Un utilisateur est assigné à l'issue. Deux labels sont présents : 'feature' en vert et 'UI' en rose.
Assignations et labels d'un ticket

3. Suivez le statut des tickets.

  • Mettez à jour les tickets pour refléter leur statut actuel, par exemple : "open", "in progress", ou "closed".

  • Utilisez des milestones pour regrouper les tickets par version ou par étape du projet.

Capture d'écran de la section des jalons (milestones) sur GitHub, montrant le jalon 'V1'. Aucun délai n'est fixé et le jalon est complété à 0 %. Une issue est ouverte sous ce jalon, intitulée 'Implémenter la HomePage'
Milestones et statuts

4. Liez les tickets et les branches.

  • Incluez le numéro du ticket dans le nom de la branche pour un suivi facile. Par exemple : "feature/123-home-page".

  • Référencez les tickets dans les messages de commit pour garder une trace des modifications liées à chaque tâche. Par exemple : "git commit -m "Feature #123: Implement login page".

Maîtrisez la gestion de versions avec Xcode

Xcode offre des outils puissants pour gérer les versions de votre code source à l'aide de Git. Utiliser ces outils peut grandement simplifier le processus de gestion des versions et améliorer la collaboration au sein de votre équipe.

Interface du logiciel de gestion de versions Xcode montrant le projet 'EPCollaboratif' sur la branche 'main'. La liste des commits récents est affichée, avec des messages de commit comme 'Merge branch 'main'', 'Add French Screenshots' et 'Implement Init
Interface de l’outil intégré de gestion de version dans Xcode

Voici quelques fonctionnalités clés :

  • Initialiser un nouveau dépôt Git ou cloner un dépôt existant directement depuis l'interface.

  • Créer, changer, fusionner et supprimer des branches.

  • Effectuer des commits et pousser vos changements vers un dépôt distant.

Créez des branches directement depuis l'interface de Xcode

  1. Ouvrez votre projet dans Xcode.

  2. Allez dans le menuSource Control et faites un clic droit sur labranch main.

  3. SélectionnezNew Branch from Mainet nommez votre nouvelle branche (par exemple : "feature/home").

Interface de gestion de branches dans le logiciel de gestion de versions Xcode. La branche main est sélectionnée, et un menu contextuel affiche des options comme New Branch from main, Rename main, et Tag main.
Sélection d'une nouvelle branche

4. Cliquez sur “Create new branch”.

La fenêtre indique 'Create new branch: Create a branch from the current branch and switch to it. All uncommitted changes will be preserved on the new branch.' Il y a deux champs de texte : 'From: main' et 'To:', avec des boutons 'Cancel' et 'Create'
Création d'une nouvelle branche

Basculez entre les branches

Cliquez sur la branche où vous souhaitez vous situer et sélectionnezSwitch

La branche 'feature1' est actuellement sélectionnée. Un menu contextuel pour la branche 'main' est ouvert, affichant des options comme 'Switch...'
Bascule sur la branche

Bonnes pratiques pour commit, push, et merge

  • Utilisez des messages de commit descriptifs et clairs qui expliquent les changements effectués comme "Feature: Ajout de la vue home”.

  • Commitez régulièrement pour enregistrer vos progrès et faciliter la gestion des versions.

Voici une vidéo qui récapitule les principales étapes pour gérer le versioning dans Xcode.

Planifiez les tests et les reviews

De manière générale, pour garantir la qualité et la stabilité de votre projet, il est crucial de tester toutes les branches individuellement avant leur fusion et d'organiser des sessions efficaces de review de code. Cette étape est essentielle pour plusieurs raisons. Elle permet de :

  • maintenir un haut niveau de qualité dans votre développement ; 

  • détecter les bugs avant qu'ils ne soient intégrés dans la branche principale ;

  • assurer que seules les fonctionnalités stables et testées sont fusionnées, maintenant ainsi la stabilité du projet ;

  • identifier et résoudre les conflits potentiels avant d'affecter le code principal à un autre développeur.

Découvrez les parties prenantes impliquées dans les tests

Voici un exemple d’organisation des différents acteurs impliqués dans la phase de tests :

  • Développeurs : Ils effectuent des tests unitaires et des tests d'intégration sur les branches qu'ils développent.

  • Testeurs/Quality Assurance (QA): Ils réalisent des tests fonctionnels et des tests d'acceptation sur les branches avant la fusion dans la branche principale.

  • Ces deux équipes mettent en place aussi des tests automatisés. Ils utilisent des pipelines CI (intégration continue) et CD (déploiement continu) pour exécuter des tests automatisés chaque fois qu'une branche est mise à jour ou avant la fusion. 

Organisez le processus de review de code ?

Voici comment organiser des sessions de review efficaces :

  • Planifiez des sessions de review régulières, par exemple à la fin du développement de chaque fonctionnalité.

  • Impliquez plusieurs membres de l'équipe pour obtenir des perspectives différentes et pour partager les connaissances.

  • Concentrez-vous sur la lisibilité du code, la conformité aux standards de codage et la détection des bugs potentiels.

À vous de jouer

Contexte

Vous avez appris les différentes stratégies de versioning et l'importance de structurer votre travail de développement. Il est maintenant temps de mettre en pratique ces connaissances pour planifier le versioning de votre projet EPCollaboratif. Votre mission est de structurer votre travail en utilisant Git et GitHub pour une gestion efficace du code source.

Consignes

  1. Établissez une stratégie de versioning en choisissant celle adaptée à vos besoins (par fonctionnalité, par release ou par environnement).

  2. Préparez une issue ou un ticket GitHub liée à la refactorisation de la View “AddTaskView”.

Livrable

  • Un rapport décrivant la stratégie de versioning choisie et sa justification.

  • Exemple d’une issue créée sur GitHub avec des descriptions et des assignations.

En résumé

  • Choisissez une stratégie de versioning adaptée, comme l'utilisation d'une branche unique, afin de fluidifier et simplifier les développements.

  • Le versioning avec Git permet une gestion organisée des modifications de code, facilitant la collaboration et la maintenance au sein des équipes de développement.

  • Les outils intégrés de versioning dans Xcode permettent de gérer efficacement les versions du code source, en offrant des fonctionnalités comme la création, la modification et la suppression de branches directement depuis l'interface.

  • La mise en place de tests et de revues de code régulières assure une haute qualité de développement en détectant les bugs et en résolvant les conflits avant la fusion des branches dans le code principal. 

Maintenant que vous avez une compréhension approfondie du pattern MVVM, de ses avantages et de la manière de structurer votre travail avec le versioning et les tests, passons à la partie suivante. Vous allez apprendre à appliquer ces concepts pour transformer vos écrans.

Exemple de certificat de réussite
Exemple de certificat de réussite