Introduction
Gérer un projet informatique est souvent complexe en raison de l’évolution constante des exigences clients et de l’urgence des demandes. Les équipes doivent respecter des délais serrés tout en répondant à des besoins précis et parfois changeants. Chaque modification peut impacter l’ensemble du cycle de développement, ce qui rend l’organisation essentielle pour garantir la réussite du projet. Une structure bien définie permet à l’équipe de rester efficace, de s’adapter aux besoins et de garder le cap sur les objectifs.
Pour répondre à ces défis, il est crucial d’utiliser des outils adaptés, permettant de suivre l’avancement des tâches, de coordonner les efforts et d’assurer la qualité des livrables. Des outils tels que Jira, Trello, Asana, et GitLab offrent chacun des fonctionnalités spécifiques pour organiser les projets et faciliter la collaboration des équipes techniques.
Prérequis
Pour une meilleure compréhension, il est recommandé d’avoir des notions de base sur :
- Git et GitLab : Connaître les branches, commits, Merge Requests, et le suivi de code source.
- CI/CD : Savoir comment fonctionnent les pipelines CI/CD, les étapes de build et de test, et leur importance pour automatiser le développement.
- Environnements de Développement, Recette, Production : Comprendre les rôles de chaque environnement dans le cycle de développement.
- Documentation API avec Apidog : Lire l’article sur Apidog pour comprendre comment documenter chaque endpoint afin de simplifier le travail entre équipes.
- Organisation Agile et Sprints : Lire l’article sur la Gestion de projet agile pour une vue d’ensemble sur l’organisation des sprints et des issues.
- Documentation Front-End : Consulter l’article Documenter efficacement une application frontend pour structurer et maintenir une documentation front-end claire et collaborative.
Use Case
Imaginons le développement d’une application e-commerce où l’équipe utilise GitLab pour gérer le projet en mode agile. L’objectif est de fournir une plateforme permettant aux utilisateurs de naviguer dans un catalogue de produits, de gérer leur panier et de finaliser leurs commandes.
Le chef de projet organise les fonctionnalités en user stories, telles que “Ajouter un produit au panier” ou “Visualiser le catalogue”, qui sont regroupées dans un backlog. Chaque sprint est structuré via une milestone dans GitLab, regroupant les user stories prioritaires à accomplir, avec des dates de début et de fin précises. Cela facilite la gestion des priorités et la coordination des efforts.
Chaque user story est transformée en issue puis décomposée en scénarios pour détailler les étapes nécessaires à sa réalisation. Ces scénarios sont assignés aux développeurs, permettant un suivi précis des tâches. L’équipe utilise un tableau Kanban dans GitLab pour visualiser l’avancement en temps réel, structuré en colonnes telles que Open,Sprint, In Progress, Testing, et Done, facilitant ainsi la coordination.
À la fin de chaque tâche, les développeurs soumettent leur code via une merge request. Cette action déclenche des tests CI automatisés pour garantir la qualité du code avant la fusion dans la branche principale. Une fois validé, le code est prêt pour le déploiement, permettant à l’équipe de livrer des fonctionnalités de manière organisée et continue.
Les Outils pour une Organisation Efficace
Dans le cadre d’un projet informatique, l’organisation est cruciale pour garantir la fluidité des processus et la livraison dans les délais impartis. Plusieurs outils permettent d’organiser efficacement un projet de développement logiciel :
- Jira : Un outil puissant, largement utilisé dans les environnements agiles, qui permet de gérer des backlogs, des sprints, et de suivre l’état d’avancement des tâches avec des rapports et tableaux Kanban.
- Trello : Un outil visuel très accessible, idéal pour organiser des tâches à l’aide de tableaux Kanban, mais limité dans ses fonctionnalités pour les projets plus complexes.
- Asana : Un outil de gestion de tâches collaboratif qui propose des timelines, des vues en liste, et une gestion des dépendances entre tâches.
- GitLab : Un outil DevOps intégré, qui combine la gestion de projet et le développement logiciel. Il permet de suivre les tâches, les versions du code, les tests automatisés, et les déploiements, tout en offrant une visibilité globale sur l’avancement des projets.
Dans un contexte informatique, GitLab devient un choix stratégique car il combine les fonctionnalités de gestion de projet avec le développement logiciel. Ce qui le rend particulièrement adapté pour les équipes techniques, c’est son intégration transparente avec les outils de développement, les pipelines CI/CD, et la gestion des versions de code. De plus, il facilite l’organisation des sprints et la mise en œuvre des méthodologies agiles, ce qui en fait un outil puissant pour les chefs de projet cherchant à optimiser la gestion des cycles de développement.
Pourquoi Choisir GitLab pour la Gestion de Projet ?
GitLab ne se contente pas de gérer les tâches, il permet de suivre l’ensemble du cycle de développement, de la planification à la livraison des fonctionnalités. Voici pourquoi GitLab est particulièrement adapté à la gestion de projet dans un contexte informatique :
Une Intégration Complète avec le Cycle de Développement
GitLab propose une solution tout-en-un qui intègre la gestion des tâches, le contrôle de version, l’intégration continue (CI), le déploiement continu (CD), et la gestion de projet. Cela permet d’avoir une visibilité complète sur chaque étape du cycle de développement, tout en assurant la traçabilité des modifications et la gestion des priorités. En tant que chef de projet, je peux suivre l’avancement des tâches en temps réel, tout en automatisant les tests et les déploiements, ce qui réduit les risques d’erreurs.
Organisation des Sprints avec les Milestones
Chaque projet informatique est structuré autour de sprints, des périodes de développement limitées dans le temps, au cours desquelles l’équipe doit livrer des fonctionnalités spécifiques ou résoudre des problèmes techniques. GitLab permet de structurer ces sprints via des milestones. Un milestone regroupe l’ensemble des user stories à accomplir dans un sprint, facilitant ainsi la gestion des priorités et la coordination des efforts.
- Création de Milestones : Chaque Sprint est représenté par un Milestone. Celui-ci regroupe toutes les use cases (issues sélectionnées et priorisées) associés au sprint, avec des dates de début et de fin précises.
- Suivi de l’Avancement : Les milestones permettent de suivre l’avancement des scénarios en pourcentage, en fonction de ce qui a été accompli. Cela offre une vue d’ensemble et aide à identifier les éventuels retards.
Décomposition des Use Cases en Issues
Dans un projet agile, chaque sprint repose sur un certain nombre de use cases, qui représentent des fonctionnalités à livrer. GitLab permet de représenter chaque use case sous forme d’issues, qui regroupent toutes les informations nécessaires à leur réalisation (objectifs, critères d’acceptation, etc.).
- Création des Issues : Chaque use case est défini comme une issue dans GitLab. L’équipe peut décomposer chaque issue en plusieurs sous-tâches (également appelées child items), qui forment une sous-section des issues. Cela permet de diviser les fonctionnalités en tâches spécifiques, facilitant ainsi la répartition du travail entre les membres de l’équipe. Chaque sous-tâche peut être assignée individuellement à des membres spécifiques, assurant une responsabilité claire et une meilleure gestion des rôles.
- Suivi des Issues : En tant que chef de projet, je peux suivre l’état d’avancement de chaque use case grâce aux Issue Boards de GitLab, qui offrent une vue Kanban pour visualiser ce qui est en cours, terminé, ou en attente.
- Commentaires et Discussions : Chaque issue et chaque sous-tâche disposent d’une section de commentaires, permettant aux membres de l’équipe d’échanger des informations, de poser des questions, et de partager des mises à jour. Cela permet de centraliser la discussion pour chaque tâche spécifique, assurant que toutes les informations sont regroupées au bon endroit.
- Assignation et Notifications : Les issues peuvent être assignées à des membres spécifiques de l’équipe. Lorsqu’une issue leur est assignée ou modifiée, ils reçoivent une notification, ce qui leur permet de rester informés des mises à jour et des nouvelles responsabilités.
- Gestion des Bloqueurs : Les issues bloquées ou nécessitant une attention particulière peuvent être rapidement identifiées et priorisées pour résoudre les problèmes de manière proactive. Dans GitLab, cela ne bloque pas le flux de travail automatiquement mais permet d’indiquer visuellement qu’une issue est bloquée en ajoutant un label “Bloqué” ou en spécifiant des dépendances. Cela informe l’équipe de l’obstacle à résoudre pour progresser efficacement.
Gestion du Tableau Kanban dans GitLab
GitLab propose une fonctionnalité de tableau Kanban (Issue Board) qui permet d’organiser visuellement les issues et de suivre l’avancement des projets en temps réel. Ce tableau est particulièrement utile pour les équipes agiles, car il permet de structurer et de prioriser les issues (ou use cases) de chaque sprint, facilitant ainsi la coordination des efforts et la gestion des priorités.
Le tableau Kanban dans GitLab offre une vue d’ensemble des issues du projet et permet de visualiser leur progression de leur création jusqu’à leur achèvement.
Fonctionnement du Tableau Kanban dans GitLab
Le tableau Kanban dans GitLab est structuré en colonnes représentant les différentes étapes de progression des issues. GitLab propose des colonnes standards, mais celles-ci peuvent être personnalisées pour répondre aux besoins de l’équipe.
Création et Organisation des Colonnes dans le Tableau Kanban
Dans GitLab, le tableau Kanban permet d’organiser les issues en colonnes, représentant les différentes étapes du workflow. Bien que GitLab propose une configuration de base, les colonnes peuvent être personnalisées selon les besoins de l’équipe. Voici une configuration typique :
- Open : Cette colonne regroupe toutes les issues non planifiées ainsi que les retours (logs) et idées à explorer. Lors des réunions de planification, l’équipe peut prioriser les issues du backlog et déplacer celles qui sont prêtes dans la colonne Sprint.
- Sprint : Au début de chaque sprint, les issues prioritaires sont sélectionnées depuis le backlog et déplacées dans cette colonne pour être démarrées.
- In Progress : Issues actuellement en cours de traitement par les membres de l’équipe. Cette colonne montre les tâches actives du sprint.
- Testing : Une fois qu’une issue est terminée par le développeur, elle est déplacée dans cette colonne pour vérification. L’équipe s’assure que l’issue a bien été implémentée sans bugs.
- Done : Si le développeur termine le travail sur l’issue et que celle-ci passe les tests, elle est placée dans Done pour indiquer qu’elle est prête pour une validation plus approfondie.
- Review : Les issues dans cette colonne sont soit en phase de relecture ou de validation finale par un responsable, soit des issues ayant échoué aux tests en Testing et nécessitant des corrections. Cela permet au responsable de l’issue de faire les ajustements nécessaires pour assurer la conformité avant clôture.
- Closed : Une fois que le use case (issue) est entièrement validé, sans aucun bug restant, et approuvé par le client ou le responsable, il est déplacé ici pour indiquer sa clôture définitive.
Cette organisation permet un suivi efficace des issues, depuis leur planification jusqu’à leur validation finale, en facilitant une vue d’ensemble claire du flux de travail.
Ajout et déplacement des issues dans le tableau Kanban
Chaque issue (ou use case) est représentée sous forme de carte dans le tableau Kanban, qui peut être déplacée de colonne en colonne selon son avancement.
- Ajout d’Issues : Pour ajouter une issue au tableau Kanban, il suffit de la créer dans l’onglet Issues de GitLab, puis de lui assigner un label ou un milestone (par exemple, le sprint en cours) pour qu’elle apparaisse dans le tableau correspondant.
- Déplacement des Cartes : Les issues peuvent être déplacées d’une colonne à l’autre par glisser-déposer, ce qui permet de mettre à jour leur statut en fonction de leur progression dans le cycle de travail.
Suivi et Gestion des Priorités
Le tableau Kanban de GitLab permet de prioriser visuellement les issues en déplaçant les plus importantes vers le haut de chaque colonne. Cela permet aux membres de l’équipe de se concentrer en priorité sur les issues critiques.
Réorganisation des Priorités : Les issues les plus prioritaires peuvent être placées en haut de la colonne, tandis que les tâches de moindre priorité sont positionnées plus bas. Cette hiérarchisation aide les équipes à se concentrer sur les objectifs principaux.
Labels et Couleurs : Les labels colorés peuvent être utilisés pour différencier les types d’issues ou les niveaux de priorité. Par exemple:
- 1. 🐞 Bug – 🔴 Rouge
- Indique un problème ou une erreur dans le code nécessitant une correction prioritaire.
- 2. 🚀 Enhancement – 🟢 Vert
- Utilisé pour les améliorations du projet, comme l’ajout de nouvelles fonctionnalités ou des optimisations.
- 3. 📘 Documentation – 🔵 Bleu clair
- Marque les tâches liées à la création ou à la mise à jour de la documentation.
- 4. 🌐 Feature – 🟣 Violet
- Désigne les issues concernant de nouvelles fonctionnalités importantes dans le projet.
- 5. 🔨 In Progress – 🟠 Orange
- Indique que l’issue est actuellement en cours de traitement par un membre de l’équipe.
- 6. 🧩 Testing – 🟡 Jaune
- Signale les issues en phase de test, en attente de validation pour s’assurer de leur qualité.
- 7. 📋 Review Required – 🔵 Bleu foncé
- Pour les issues nécessitant une relecture ou une validation finale avant clôture.
- 8. ⛔ Blocked – ⚪ Gris
- Marque les issues bloquées par des dépendances ou des obstacles à résoudre.
- 9. ⚠️ High Priority – 🔴 Rouge foncé
- Indique une issue urgente nécessitant une attention immédiate de l’équipe.
- 10. ⏳ Low Priority – 🟢 Vert clair
- Signale les issues moins urgentes, pouvant être traitées après les tâches prioritaires.
- 11. 🛠️ Refactor – 🔄 Gris foncé
- Utilisé pour les tâches de réorganisation ou d’amélioration du code sans ajout de nouvelles fonctionnalités.
- 12. 🎨 Design – 🟦 Turquoise
- Label pour les issues nécessitant un travail de design ou d’interface utilisateur.
Automatisation des Processus avec les Pipelines CI/CD
Un des avantages majeurs de GitLab est son système de pipelines CI/CD, qui automatise les processus critiques comme les tests, les validations, et les déploiements.
Promotion en Recette et en Production
Dans un projet bien structuré, l’organisation des processus de mise en ligne est cruciale pour garantir la qualité et la stabilité des livrables. Une gestion rigoureuse des déploiements, de la recette à la production, permet à l’équipe de s’assurer que chaque version passe par des étapes de validation et de tests. Les développeurs doivent comprendre ce processus pour maintenir un flux de travail fluide et coordonné, essentiel à une bonne collaboration.
Lorsqu’un développeur effectue un commit sur la branche dev, cela déclenche automatiquement une série d’étapes dans le pipeline CI/CD de GitLab, comprenant :
- Construction (build) du code pour s’assurer qu’il est prêt à être testé et déployé,
- Tests automatisés pour vérifier la stabilité et la conformité aux exigences,
- Push du build dans le registre pour centraliser les versions de build,
- Déploiement sur l’environnement de développement (dev) pour tester les changements en conditions réelles.
Ces étapes structurées permettent de repérer et corriger les problèmes en amont, avant de passer à la recette ou la production. Une organisation claire et partagée du workflow garantit que chaque membre de l’équipe connaît les processus de validation, évitant ainsi les erreurs en phase finale et assurant un déploiement en production réussi.
Workflow de Déploiement : dev → staging → main
Ce flux de travail structuré aide à valider chaque étape du développement avant la mise en production. Voici comment l’organiser :
Branche dev (Développement)
La branche dev est la branche principale de développement où les nouvelles fonctionnalités et corrections de bugs sont intégrées. Chaque développeur crée une feature branch pour travailler sur une tâche spécifique, puis crée une Merge Request pour intégrer le code dans dev une fois la tâche terminée et validée.
- Utilisation : Développement et tests internes.
- Validation : Les tests automatisés sont exécutés pour vérifier que le code est stable.
- Règle : Tout nouveau code passe par dev pour garantir la cohérence avant d’être promu.
Branche staging (Recette)
La branche staging est destinée aux tests de validation avant la production. Une fois que les modifications sur dev sont stables, elles sont fusionnées dans staging pour permettre aux clients ou à l’équipe qualité d’effectuer des tests complets.
- Utilisation : Validation fonctionnelle et tests de recette.
- Processus : Une Merge Request est créée pour intégrer le code de dev vers staging. Cette étape peut nécessiter une approbation manuelle si des tests additionnels sont nécessaires.
- Règle : Le client valide les modifications en staging avant la mise en production.
Branche main (Production)
La branche main est la branche de production, contenant le code final validé. Une fois que le client a validé les modifications sur staging, une Merge Request est créée pour fusionner le code dans main. Ce code est alors prêt pour le déploiement en production.
- Utilisation : Code en production, visible par les utilisateurs finaux.
- Processus : Fusionner staging vers main après validation finale du client.
- Règle : Seul le code validé par l’équipe et le client arrive dans main.
Avantages de ce Workflow
- Validation par Étapes : En séparant les environnements dev, staging, et main, chaque modification passe par plusieurs niveaux de validation, assurant la qualité du code en production.
- Flexibilité : Les corrections urgentes peuvent être directement testées et validées dans staging avant de passer en production, sans perturber le développement en cours sur dev.
- Clarté pour l’Équipe : Les règles de fusion et le passage d’une branche à l’autre assurent une communication claire entre les membres de l’équipe, le client, et les parties prenantes.
Ce processus garantit une progression fluide du code du développement jusqu’à la production, en intégrant des étapes de validation essentielles pour assurer un haut niveau de qualité et de fiabilité.
Bonnes Pratiques pour les Merge Requests dans le Workflow
Dans GitLab, il est recommandé de créer une Merge Request pour chaque issue afin de suivre et valider les modifications de code. Les Merge Requests sont ensuite envoyées aux responsables, souvent au chef de projet ou au lead développeur, pour une révision et validation.
Création de Merge Request par Issue
Chaque issue doit être associée à une Merge Request, même pour les petites tâches. Cela permet de garder une traçabilité claire des modifications et de faciliter la révision. Le développeur crée une Merge Request dès qu’il a terminé une issue, en mentionnant les détails et en liant la Merge Request à l’issue correspondante.
Validation par le Chef de Projet ou Responsable
Les Merge Requests sont envoyées au chef de projet ou à un responsable pour révision. Ce processus assure une validation rigoureuse et garantit que chaque modification répond aux standards et objectifs du projet avant d’être intégrée.
Communication et Collaboration
Lors de la révision, le chef de projet ou le responsable peut ajouter des commentaires ou suggérer des modifications. Le développeur ajuste le code si nécessaire, puis renvoie la Merge Request pour approbation.
Fusion Après Validation
Une fois la Merge Request approuvée, elle peut être fusionnée dans la branche principale (par exemple, dev, staging, ou main selon le workflow). Cela clôture le cycle de l’issue et assure que les modifications sont correctement intégrées.
Gestion des Hotfixes
Les hotfixes sont des correctifs rapides appliqués directement en production pour résoudre des problèmes critiques. Ce processus permet de déployer une solution immédiate sans attendre le cycle de développement habituel.
Processus de Hotfix
- Création de la Branche Hotfix : Une hotfix branch est créée à partir de main pour isoler le correctif.
- Développement et Validation : Le correctif est développé et testé rapidement pour garantir sa stabilité. Des tests automatisés ou manuels sont exécutés en préproduction si possible.
- Fusion dans main et staging : Une fois validé, le hotfix est fusionné dans main pour déploiement en production, puis dans staging et dev pour synchroniser toutes les branches.
Règles et Avantages
- Usage Limité : Les hotfixes sont réservés aux problèmes critiques.
- Traçabilité : Documenter chaque hotfix pour suivre les corrections.
- Synchronisation des Branches : Garantit une cohérence entre main, staging, et dev, évitant les conflits futurs.
Les hotfixes complètent le workflow dev → staging → main en permettant des corrections urgentes tout en maintenant l’intégrité et la continuité du projet.
Documentation Back-End
La documentation back-end se concentre sur l’architecture du serveur, les API, et les bases de données. Elle fournit une vue détaillée des fonctionnalités côté serveur, des endpoints, et des processus métiers.
- Description des APIs avec Apidog : Une documentation API de qualité est cruciale pour les développeurs front-end et d’autres équipes qui utilisent les endpoints. Utiliser un outil comme Apidog permet de créer et maintenir une documentation complète et interactive des APIs. Apidog permet de décrire chaque endpoint, y compris les paramètres, les codes de retour, et les exemples de requêtes et réponses. Une bonne documentation API améliore la communication entre les équipes et simplifie le développement côté client.
- Modèle de Données : Expliquer la structure des bases de données, les relations entre les tables, et les migrations. La documentation des modèles de données aide à comprendre la logique métier et l’organisation des informations dans le système.
- Instructions de Déploiement : Fournir des indications pour le déploiement en back-end, y compris les pré-requis et les environnements nécessaires.
Documentation Front-End
Une documentation front-end claire et concise facilite la navigation dans le code et assure une cohérence dans le développement. En structurant la présentation des dossiers, des exemples de fonctionnalités, et des règles de design, elle devient une référence essentielle pour l’équipe.
- Structuration des Dossiers
- Documenter la structure des dossiers pour permettre une navigation efficace, en expliquant brièvement le rôle de chaque dossier clé sans entrer dans les détails de chaque fichier.
- Exemple de Fonctionnalité
- Décrire une fonctionnalité type (ex. : connexion utilisateur), en détaillant les fichiers et modules impliqués pour montrer comment tout s’intègre dans la structure du projet.
- Design System
- Documenter l’intégration du design system pour assurer une cohérence visuelle avec des composants UI standardisés (boutons, formulaires) et des règles de style (couleurs, typographie).
- Dépendances
- Lister les bibliothèques et services externes utilisés (ex. Axios), en expliquant brièvement leur rôle et leur configuration dans le projet.
- Éviter la Surdocumentation
- Concentrez-vous sur les spécificités du projet et évitez de répéter les informations présentes dans les documentations officielles des bibliothèques.
Conclusion
Un workflow structuré dans GitLab, incluant la création d’issues, l’organisation en tableaux Kanban, et le suivi des Merge Requests, permet de maintenir une gestion de projet fluide et efficace. En organisant les tâches par étapes – de dev à staging puis main – et en validant chaque modification via des Merge Requests rigoureusement révisées par le chef de projet ou le responsable, l’équipe garantit la qualité et la fiabilité du code.
Les hotfixes, intégrés pour répondre aux urgences en production, complètent ce processus en assurant une réactivité sans perturber le développement en cours. Cette méthodologie permet d’assurer la traçabilité des changements, de renforcer la collaboration entre les membres, et de respecter les délais sans compromis sur la qualité. Grâce aux outils intégrés de GitLab, ce workflow agile favorise la coordination et la satisfaction des objectifs de chaque projet.
Développeuse Fullstack passionnée par le code, je suis diplômée en Programmation/Développement informatique de Sup’Info. Maîtrisant des langages comme PHP, JAVA et C++, je m’adapte facilement à différents environnements techniques. Mon parcours m'a permis de travailler sur une variété de projets, allant du développement Web et mobile à la création d'API et d'applications monétiques pour TPE. J'ai également une bonne connaissance de frameworks tels que Laravel, Tailwind CSS, Spring Boot et React Native.