đ SAISON C Semaine 1 Ăpisode 1 - Conception et Gestion de Projet
đ Notions du jour
Aujourdâhui, nous attaquons la derniĂšre saison de la formation : Expert JavaScript ! đ Cette saison promet dâĂȘtre intense et passionnante, car nous allons plonger encore plus profondĂ©ment dans les notions avancĂ©es de la programmation, la gestion de projet, lâarchitecture logicielle, les tests, et la sĂ©curitĂ©.
La premiĂšre semaine est dĂ©diĂ©e Ă lâanalyse et la conception de projet, une Ă©tape cruciale pour tout dĂ©veloppeur. Aujourdâhui, nous avons abordĂ© deux thĂšmes principaux : la gestion de projet et la modĂ©lisation UML.
- Gestion de projet :
- Recueil du besoin
- Clarifications et échanges
- Récits utilisateurs (user stories)
- Modélisation UML :
- PlantUML et extension VSCode
- Différents types de diagramme
- RĂ©alisation : diagramme « cas dâutilisation »
đ Gestion de Projet : Les Fondamentaux
La gestion de projet est une compétence essentielle pour tout développeur. Elle permet de structurer le travail, de clarifier les attentes et de livrer un produit qui répond aux besoins des utilisateurs.
1ïžâŁ Recueil du Besoin
Le recueil du besoin est la premiĂšre Ă©tape dâun projet. Il sâagit de comprendre les attentes du client ou des utilisateurs finaux. Pour cela, plusieurs mĂ©thodes peuvent ĂȘtre utilisĂ©es :
- Entretiens : Discuter directement avec les parties prenantes pour recueillir leurs besoins.
- Questionnaires : Envoyer des formulaires pour obtenir des retours structurés.
- Observation : Analyser les processus existants pour identifier les points dâamĂ©lioration.
Au début du cours, l'enseignant nous a partagé une vidéo fictive d'un client qui nous présente son besoin. Il s'agissait d'un chef d'établisement qui nous demandait de développer une application de Quiz afin que les élÚves puissent s'y connecter et réaliser des quiz.
2ïžâŁ Clarifications et Ăchanges
Une fois les besoins recueillis, il est crucial de clarifier et valider ces informations avec le client. Cela permet dâĂ©viter les malentendus et de sâassurer que tout le monde est sur la mĂȘme longueur dâonde.
Dans l'exemple du chef d'établissement, il fallait clarifier beaucoup de choses car il avait beaucoup d'idées mal ordonnées.
Il fallait donc recadrer les choses.
Bonnes pratiques :
- Reformuler les besoins pour vérifier la compréhension.
- Documenter les échanges pour avoir une trace écrite.
- Prioriser les fonctionnalités en fonction de leur importance.
3ïžâŁ RĂ©cits Utilisateurs (User Stories)
Les user stories sont des descriptions courtes et simples des fonctionnalitĂ©s dâun projet, du point de vue de lâutilisateur. Elles suivent gĂ©nĂ©ralement le format suivant :
Exemples de user stories :
# User Story 1
En tant que membre, je veux pouvoir lancer un quiz.
# User Story 2
En tant quâauteur, je veux pouvoir ajouter de nouveaux quiz.
# User Story 3
En tant qu'administrateur, je veux pouvoir gérer les thÚmes des quiz afin de limiter la création par les auteurs.
Avantages des user stories :
- ClartĂ© : Elles sont faciles Ă comprendre pour tous les membres de lâĂ©quipe.
- FlexibilitĂ© : Elles permettent dâajuster les prioritĂ©s en fonction des retours.
- Collaboration : Elles favorisent la communication entre les développeurs, les designers et les clients.
đ ModĂ©lisation UML : Comprendre et Appliquer
La modĂ©lisation UML (Unified Modeling Language) est un outil puissant pour visualiser et concevoir des systĂšmes logiciels. Elle permet de reprĂ©senter graphiquement les diffĂ©rentes composantes dâun projet et leurs interactions.
1ïžâŁ PlantUML et Extension VSCode
PlantUML est un outil qui permet de crĂ©er des diagrammes UML Ă partir de code texte. Câest une solution pratique et efficace pour intĂ©grer la modĂ©lisation dans un workflow de dĂ©veloppement. C'est l'outil que nous a conseillĂ© l'enseignant d'utiliser.
Extension VSCode recommandée :
- PlantUML : Cette extension permet de prévisualiser et générer des diagrammes directement dans VSCode.
2ïžâŁ DiffĂ©rents Types de Diagrammes
UML propose plusieurs types de diagrammes, chacun ayant un objectif spécifique. Voici les plus courants :
| Type de Diagramme | Utilité |
|---|---|
| Diagramme de cas dâutilisation | DĂ©crit les interactions entre les utilisateurs et le systĂšme. |
| Diagramme de classes | Représente la structure des classes et leurs relations. |
| Diagramme de séquence | Montre les interactions entre les objets dans un ordre chronologique. |
| Diagramme dâactivitĂ© | Illustre les flux de travail et les processus mĂ©tiers. |
| Diagramme dâĂ©tats | DĂ©crit les diffĂ©rents Ă©tats dâun objet et les transitions entre eux. |
3ïžâŁ RĂ©alisation : Diagramme « Cas dâUtilisation »
Le diagramme de cas dâutilisation est lâun des plus utilisĂ©s en gestion de projet. Il permet de visualiser les fonctionnalitĂ©s principales dâun systĂšme et les acteurs qui interagissent avec lui.
Exemple de diagramme de cas dâutilisation pour une application de gestion de bibliothĂšque :
@startuml
left to right direction
actor "Utilisateur" as User
actor "Bibliothécaire" as Librarian
rectangle "SystĂšme gestion bibliothĂšque" {
User --> (Rechercher un livre)
User --> (Emprunter un livre)
User --> (Retourner un livre)
Librarian --> (Ajouter un livre)
Librarian --> (Supprimer un livre)
Librarian --> (Gérer les utilisateurs)
}
User <|-- Librarian
@enduml
Rendu visuel du diagramme :

Explications du diagramme :
- Acteurs :
UtilisateuretBibliothĂ©cairesont les acteurs qui interagissent avec le systĂšme. - Cas dâutilisation : Les ellipses reprĂ©sentent les fonctionnalitĂ©s du systĂšme (ex:
Rechercher un livre,Emprunter un livre). - Relations : Les flÚches montrent qui utilise quelle fonctionnalité.
- Enxtension d'un cas d'utilisation : Les flÚches entre les acteurs montrent qu'un acteur étend ses fonctions (exp:
User <|-- LibrarianleBibliothécairepossÚde les fonctions de l'Utilisateuret d'autres fonctions).
Comment générer le diagramme avec PlantUML ?
- Installer PlantUML et lâextension VSCode.
- CrĂ©er un fichier avec lâextension
.puml. - Coller le code PlantUML ci-dessus.
- PrĂ©visualiser le diagramme avec lâextension.
đĄ Ce Que Jâai Appris Aujourdâhui
- Gestion de projet :
- Lâimportance du recueil du besoin pour comprendre les attentes du client.
- Comment clarifier et documenter les échanges pour éviter les malentendus.
-
Lâutilisation des user stories pour dĂ©crire les fonctionnalitĂ©s de maniĂšre simple et collaborative.
-
Modélisation UML :
- Les différents types de diagrammes UML et leurs utilités.
- Comment utiliser PlantUML pour créer des diagrammes directement depuis VSCode.
- La rĂ©alisation dâun diagramme de cas dâutilisation pour visualiser les interactions entre les acteurs et le systĂšme.
âšïž Challenge du jour : "O'vitrine" â Conception d'un Site Vitrine
đ PrĂ©sentation du Challenge
Le challenge du jour nous a permis de mettre en pratique ce que nous avons vu dans la journĂ©e. Nous avons travaillĂ© sur la conception d'un projet pour un client fictif. Lâobjectif Ă©tait de concevoir un site vitrine pour exposer leurs projets digitaux et faciliter la prise de contact avec les clients potentiels.
Contexte :
- Le client souhaite un site vitrine pour présenter ses projets publics et charitables.
- Les projets doivent ĂȘtre affichĂ©s sous forme de cartes avec les technologies utilisĂ©es.
- Un formulaire de contact doit ĂȘtre disponible pour les visiteurs.
- Un espace administrateur est nécessaire pour gérer les projets.
đŻ Objectifs du Challenge
- PrĂ©parer des questions pour Ă©claircir les zones dâombre avec le client.
- Apporter une expertise en matiĂšre de conception, dâarchitecture et de rĂ©alisation technique.
- Prévoir des récits utilisateurs (user stories) pour décrire les fonctionnalités.
- Concevoir un diagramme de cas dâutilisation UML pour prĂ©ciser les diffĂ©rents cas dâusage.
đ Ătapes RĂ©alisĂ©es
1ïžâŁ Questions ComplĂ©mentaires au Client
Pour mieux comprendre les attentes du client, jâai prĂ©parĂ© une liste de questions complĂ©mentaires :
Les différents acteurs :
à partir des notes récupérées je dégage 2 acteurs qui utiliseront le site vitrine :
- Visiteur
- Administrateur
Questions qui découlent de l'analyse des notes :
- Qu'entendez-vous par un "logo customisable" ?
- Souhaitez-vous une fonctionnalité de recherche/filtrage des projets par technologie, date, ou autre critÚre ?
- Les projets doivent-ils ĂȘtre classĂ©s par ordre chronologique (du plus rĂ©cent au plus ancien) ou par ordre alphabĂ©tique ?
- Voulez-vous une fonctionnalité de "projet mis en avant" ou "projet à la une" ?
- Les administrateurs doivent-ils pouvoir gérer les technologies disponibles (ajout/suppression/modification) ?
- Souhaitez-vous une politique de conservation des données pour les messages de contact ?
- Le site doit-il ĂȘtre disponible en plusieurs langues ? Si oui, quelles langues souhaitez-vous supporter ?
- Lorsque l'on clique sur un projet :
- Ouverture d'une nouvelle page avec les détails du projet ?
- Apparation d'une modale avec les détails du projet ?
- Les pastilles représentant les technologies utilisées dans un projet :
- Couleur représentative d'une techno avec une légende pour dire quelle couleur correspond à quelle techno ?
- Logo de chaque techno utilisée ?
- Formulaire de contact : voulez-vous mettre en place une case Ă cocher pour que le visiteur s'inscrive Ă une newletter ?
2ïžâŁ Expertise en terme de conception Ă apporter au client
Le client souhaite utiliser des technologies raw HTML/CSS/JS (sans frameworks) pour le développement du projet. Cela suggÚre qu'il n'a pas de réelle vision en terme de coneption et d'architecture concernatn les technologies à utiliser pour le développement de son projet.
Il ne fait aucune disctinction entre le front-end et le back-end. Pourant il va falloir à minima prévoir un back-end avec une BDD afin de gérer le CRUD des projets qui seront affichés sur le site vitrine.
Proposition technique :
Mise en place d'une API avec Express.js qui communique avec une BDD PostgreSQL.
Pour le front-end on pourra effectivement rester simple avec HTML/CSS/JS.
Nous aurons donc une architecture API + SPA (Single Page Application).
3ïžâŁ RĂ©cits Utilisateurs (User Stories)
Voici une liste de user stories pour décrire les fonctionnalités du site :
User Stories :
| Usecase ID | En tant que | Je souhaite/je veux | Afin de (facultatif) |
|---|---|---|---|
| UC01 | Visiteur | accéder à la page d'accueil | consulter la liste des cartes différents projets |
| UC02 | Visiteur | cliquer sur la carte d'un projet | voir les détails d'un projet |
| UC03 | Visiteur | remplir un formulaire de contact | demander des informations |
| UC04 | Visiteur | accéder aux mentions légales | |
| UC05 | Visiteur | pouvoir demander la suppression de mes données personnelles | |
| UC06 | Visiteur | rechercher un projet par mot-clé | trouver rapidement un projet spécifique |
| UC07 | Administrateur | accéder à la page de connexion de la page d'administration | accéder à la page d'administration |
| UC08 | Administrateur | accéder à la page d'administration | afin de pouvoir gérer les projets |
| UC09 | Administrateur | ajouter une carte projet | |
| UC10 | Administrateur | modifier une carte projet | |
| UC11 | Administrateur | supprimer une carte projet | |
| UC12 | Administrateur | consulter les emails des visiteurs | contacter un visiteur |
| UC13 | Administrateur | supprimer un email visiteur | supprimer les données personnelles d'un visiteur qui en fait la demande |
| UC14 | Administrateur | gérer la liste des technologies disponibles | maintenir à jour les technologies utilisées par l'entreprise |
| UC15 | Administrateur | consulter les statistiques de visite | analyser l'audience du site vitrine |
| UC16 | Administrateur | recevoir des notifications pour les nouveaux messages | répondre rapidement aux demandes des visiteurs |
4ïžâŁ Diagramme de Cas dâUtilisation UML
Enfin, jâai conçu un diagramme de cas dâutilisation UML pour visualiser les interactions entre les acteurs et le systĂšme avec l'extension VS Code plantUML.
Voici ma proposition :
@startuml Ovitrine
left to right direction
actor Visiteur as v
actor Administrateur as a
package "Site vitrine" {
usecase "accéder à la page d'accueil" as UC1
usecase "cliquer sur la carte d'un projet" as UC2
usecase "remplir un formulaire de contact" as UC3
usecase "accéder aux mentions légales" as UC4
usecase "pouvoir demander la suppression de mes données personnelles" as UC5
usecase "rechercher un projet par mot-clé" as UC6
}
usecase "accéder à la page de connexion de la page d'administration" as UC7
usecase "accéder à la page d'administration" as UC8
package "Page d'administration" {
usecase "ajouter une carte projet" as UC9
usecase "modifier une carte projet" as UC10
usecase "supprimer une carte projet" as UC11
usecase "consulter les emails des visiteurs" as UC12
usecase "supprimer un email visiteur" as UC13
usecase "gérer la liste des technologies disponibles" as UC14
usecase "consulter les statistiques de visite" as UC15
usecase "recevoir des notifications pour les nouveaux messages" as UC16
}
v --> UC1
v --> UC2
v --> UC3
UC3 .> UC16 : <<extends>>
v --> UC4
v --> UC5
UC5 .> UC16 : <<extends>>
v --> UC6
a --> UC7
UC7 .> UC8 : <<includes>>
UC8 .> (Page d'administration) : <<extends>>
a --> UC9
a --> UC10
a --> UC11
a --> UC12
a --> UC13
a --> UC14
a --> UC15
a --> UC16
@enduml
Explications du diagramme :
- Acteurs :
VisiteuretAdministrateursont les acteurs qui interagissent avec le systĂšme. - Cas dâutilisation : Les ellipses reprĂ©sentent les fonctionnalitĂ©s du systĂšme (ex:
accéder à la page d'accueil,remplir un formulaire de contact). - Relations : Les flÚches montrent qui utilise quelle fonctionnalité.
đ„ïž Rendu Final du Diagramme

đĄ Ce Que Jâai Appris avec ce Challenge
- Analyse des besoins : Comment poser les bonnes questions pour clarifier les attentes du client.
- Architecture technique : RĂ©flexion sur lâarchitecture back-end et front-end pour rĂ©pondre aux besoins du client.
- User Stories : Rédaction de récits utilisateurs pour décrire les fonctionnalités du projet.
- Conception UML : Utilisation de PlantUML pour crĂ©er des diagrammes de cas dâutilisation.