Skip to content

📅 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 :

En tant que [rÎle], je veux [fonctionnalité] afin de [bénéfice].

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 :

Plant UML Diagram
@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 :

exemple diagramme de cas d'utilisation UML

Explications du diagramme :

  • Acteurs : Utilisateur et BibliothĂ©caire sont 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 <|-- Librarian le BibliothĂ©caire possĂšde les fonctions de l'Utilisateur et d'autres fonctions).

Comment générer le diagramme avec PlantUML ?

  1. Installer PlantUML et l’extension VSCode.
  2. CrĂ©er un fichier avec l’extension .puml.
  3. Coller le code PlantUML ci-dessus.
  4. PrĂ©visualiser le diagramme avec l’extension.

💡 Ce Que J’ai Appris Aujourd’hui

  1. Gestion de projet :
  2. L’importance du recueil du besoin pour comprendre les attentes du client.
  3. Comment clarifier et documenter les échanges pour éviter les malentendus.
  4. L’utilisation des user stories pour dĂ©crire les fonctionnalitĂ©s de maniĂšre simple et collaborative.

  5. Modélisation UML :

  6. Les différents types de diagrammes UML et leurs utilités.
  7. Comment utiliser PlantUML pour créer des diagrammes directement depuis VSCode.
  8. 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

  1. PrĂ©parer des questions pour Ă©claircir les zones d’ombre avec le client.
  2. Apporter une expertise en matiĂšre de conception, d’architecture et de rĂ©alisation technique.
  3. Prévoir des récits utilisateurs (user stories) pour décrire les fonctionnalités.
  4. 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 :

ovitrine-usecases.puml
@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 : Visiteur et Administrateur sont 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

Diagramme de cas d'utilisation pour O'vitrine


💡 Ce Que J’ai Appris avec ce Challenge

  1. Analyse des besoins : Comment poser les bonnes questions pour clarifier les attentes du client.
  2. Architecture technique : RĂ©flexion sur l’architecture back-end et front-end pour rĂ©pondre aux besoins du client.
  3. User Stories : Rédaction de récits utilisateurs pour décrire les fonctionnalités du projet.
  4. Conception UML : Utilisation de PlantUML pour crĂ©er des diagrammes de cas d’utilisation.