Introduction

Ce projet a été réalisée pour une étude de cas dans le cadre de mon Mastère avec l’ISCOD. Il fallait concevoir et développer une plateforme de gestion de projet collaboratif destinée aux équipes de développement logiciel. L’objectif global était de fournir une application permettant aux équipes de planifier, suivre et collaborer efficacement sur des projets.

Objectifs

Sur l’aspect technique, le but est de concevoir une architecture robuste et évolutive en utilisant Angular pour le frontend et Spring Boot (Java) pour le backend

Il a fallu implémenter une API REST, sécuriser l’application avec Spring Security et JWT, assurer la fiabilité du code par des tests automatisés et industrialiser le projet avec Docker et une pipeline CI/CD.

Sur l’aspect fonctionnel, il s’agit de modéliser un système relationnel cohérent (Utilisateurs, Projets, Tâches, Rôles, Statuts), mettre en place des User Stories pour la création des fonctionnalités et faire preuve d’adaptabilité face à l’évolution des exigences métiers.
 
Contexte
Ce projet exigeait la maîtrise de toutes les couches de l’ingénierie logicielle sur le plan technique : de la conception (diagrammes UML, schéma SQL) , à la création de l’API (utilisation du modèle MVC et des DTO) , jusqu’à la création de l’interface SPA (Single Page Application).
 

Réalisé lors d’une mise en situation professionnelle en tant que développeur full-stack au sein de l’entreprise fictive « Code Solutions ». Le travail nécessitait de s’aligner sur les fonctionnalités demandées par le Product Owner et les guidelines d’une Tech Lead.

Enjeux et risque

L’un des défis majeurs de ce projet résidait dans l’exigence de qualité : il fallait atteindre une couverture de code d’au moins 60% (instructions et branches) lors des tests automatisés et configurer une chaîne d’intégration continue capable de bloquer le déploiement en cas d’échec de ces tests.

La sécurisation du backend n’était initialement pas requise, mais l’ajout soudain d’un système d’inscription avec Spring Security et JWT a causé une grande perte de temps. De plus, un conflit d’architecture lié à Angular (migration forcée de l’ancienne méthode NgModule vers la méthode moderne Standalone) a généré de nombreuses erreurs de compilation qu’il a fallu résoudre.

Avec ce projet, j’estime avoir un très bon niveau sur cette compétence et je le qualifie comme une force majeure de mon profil.

Les différentes étapes d’un projet
  1. Conception & Modélisation : Analyse des besoins et création des diagrammes de classes UML pour définir la structure de la base de données relationnelle.

  2. Mise en place de la Stack Technique : Initialisation du backend (Spring Boot) et du frontend (Angular Standalone) et configuration de la sécurité avec JWT.

  3. Développement Agile : Implémentation des fonctionnalités par « briques » (Authentification > Projets > Tâches) pour permettre une validation continue.

  4. Validation Qualité & Tests : Rédaction et exécution des tests unitaires (JUnit pour Java, Karma pour Angular) afin d’atteindre une couverture de code supérieure à 60 %.

  5. Industrialisation (DevOps) : Création des fichiers Docker pour conteneuriser l’application et mise en place d’une pipeline CI/CD automatisée sur GitHub Actions.

Retour d’expérience et perspective d’avenir

Avec cette expérience, j’ai appris à mes dépens qu’un développement en « cycle en V » strict (séparant totalement le back et le front dès le départ) est inadapté face à des exigences changeantes. Adopter une démarche Agile m’a permis de livrer des fonctionnalités concrètes à chaque étape, d’anticiper les erreurs de conception et de finaliser mon projet avec beaucoup plus d’aisance.

La pipeline CI/CD est fonctionnelle et l’application est prête à l’emploi. À l’avenir, j’envisage de déployer ces conteneurs Docker directement sur une infrastructure Cloud (comme AWS ou GCP) pour rendre l’outil accessible en ligne et d’y ajouter des tableaux de bord analytiques pour suivre la productivité des équipes.

Retour en haut