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) |
|
|
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.
Cliquez surNew issuepour créer un nouveau ticket.
Remplissez le formulaire avec un titre descriptif et une description détaillée de la tâche ou du problème.
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”).
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.
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.
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
Ouvrez votre projet dans Xcode.
Allez dans le menuSource Control et faites un clic droit sur labranch main.
SélectionnezNew Branch from Mainet nommez votre nouvelle branche (par exemple : "feature/home").
4. Cliquez sur “Create new branch”.
Basculez entre les branches
Cliquez sur la branche où vous souhaitez vous situer et sélectionnezSwitch.
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
Établissez une stratégie de versioning en choisissant celle adaptée à vos besoins (par fonctionnalité, par release ou par environnement).
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.