Aller au contenu

Solution pour le TP Gestion des Demandes de Formation

Analyse du problème

Nous avons cette fois 2 acteurs “métier” principaux :

Acteur Rôle
Employé Recherche une formation et crée ou gère ses demandes
Responsable formation Traite les demandes et administre le catalogue

On peut aussi avoir 2 acteurs techniques qui sont en fait des appels à des API pour l’envoi d’email ou de fax (quoique les fax tombent en désuètudes à notre époque, mais pourquoi pas !):

Acteur secondaire Rôle
Service de messagerie Permet l’envoi automatique des e-mails
Service de fax Permet l’envoi du bon de commande

Un organisme de formation pourrait également apparaître comme un acteur externe puisqu’il reçoit la demande d’inscription. Cependant, si l’organisme n’accède jamais directement au système, il est parfaitement acceptable de représenter uniquement le service de fax comme acteur technique. Bref, tout ceci n’est pas obligatoire.


Cas d’utilisation de l’employé.e

Représentation sous la forme d’un tableau. L’employé.e peut :

Cas d’utilisation Explication
Consulter le catalogue Rechercher des thèmes, formations et sessions
Initialiser une demande de formation Créer une nouvelle demande
Sélectionner une formation Sélectionner une formation ou un thème
Sélectionner une session Peut choisir directement une session
Consulter ses demandes Consulter leur état
Annuler une demande Supprimer une demande encore en cours

Lorsqu’une demande est créée :

  1. Elle est enregistrée
  2. le/la responsable formation est averti.e

Ces opérations étant obligatoires, elles peuvent être modélisées par des <<include>> !


Cas d’utilisation du responsable Formation

Le responsable formation peut :

Cas d’utilisation Explication
Consulter le catalogue Recherche une session
Sélectionner une session Complète une demande incomplète
Traiter une demande Analyse une demande
Accepter une demande Valide la formation
Inscrire l’employé Lance l’inscription
Ajouter une formation Administration du catalogue
Modifier une formation Administration du catalogue
Supprimer une formation Administration du catalogue
Modifier une session Dates, lieux,…

Diagramme avec PlantUML pour vous aider

diagramme solution 1

@startuml

title TP - Gestion des demandes de formation

left to right direction

actor "Employé" as Employe
actor "Responsable\nFormation" as Responsable
actor "Service de\nMessagerie" as Mail
actor "Service de Fax" as Fax
actor "Organisme de\nFormation" as Organisme

rectangle "Système de gestion des formations" {

    usecase "Consulter\nle catalogue" as UC_CATALOGUE

    usecase "Initialiser une demande\nde formation" as UC_DEMANDE

    usecase "Enregistrer\nla demande" as UC_ENREG

    usecase "Notifier le responsable\npar e-mail" as UC_MAIL_RESP

    usecase "Sélectionner\nune session" as UC_SESSION

    usecase "Consulter l'état\ndes demandes" as UC_ETAT

    usecase "Annuler\nune demande" as UC_ANNULER

    usecase "Traiter\nune demande" as UC_TRAITER

    usecase "Accepter\nune demande" as UC_ACCEPTER

    usecase "Inscrire\nl'employé" as UC_INSCRIRE

    usecase "Envoyer le bon de\ncommande par fax" as UC_FAX

    usecase "Ajouter\nune formation" as UC_AJOUT

    usecase "Modifier\nune formation" as UC_MODIF

    usecase "Supprimer\nune formation" as UC_SUPPR

    usecase "Modifier une session\n(date / lieu)" as UC_MODIF_SESSION
}

' ---------------------
' Employé
' ---------------------

Employe --> UC_CATALOGUE
Employe --> UC_DEMANDE
Employe --> UC_SESSION
Employe --> UC_ETAT
Employe --> UC_ANNULER

' ---------------------
' Responsable formation
' ---------------------

Responsable --> UC_CATALOGUE
Responsable --> UC_TRAITER
Responsable --> UC_SESSION
Responsable --> UC_ACCEPTER
Responsable --> UC_INSCRIRE

Responsable --> UC_AJOUT
Responsable --> UC_MODIF
Responsable --> UC_SUPPR
Responsable --> UC_MODIF_SESSION

' ---------------------
' INCLUDE
' ---------------------

UC_DEMANDE ..> UC_ENREG : <<include>>
UC_DEMANDE ..> UC_MAIL_RESP : <<include>>

UC_ANNULER ..> UC_MAIL_RESP : <<include>>

UC_INSCRIRE ..> UC_FAX : <<include>>

' ---------------------
' EXTEND
' ---------------------

UC_SESSION ..> UC_TRAITER : <<extend>>\n[aucune session choisie]

' ---------------------
' Systèmes externes
' ---------------------

Mail --> UC_MAIL_RESP

Fax --> UC_FAX
Organisme --> UC_FAX

@enduml

L’énoncé indique :

« La demande est automatiquement enregistrée […] et transmise au responsable de formation par e-mail. »

Vous comprenez que le comportement est donc obligatoire ! donc… on utilise un :

<<include>>

Variante avec 2 acteurs

diagramme solution 2

@startuml

left to right direction

actor Employé
actor "Responsable formation" as Responsable

rectangle "Gestion des formations" {

    usecase "Consulter catalogue" as UC1
    usecase "Créer une demande" as UC2
    usecase "Consulter ses demandes" as UC3
    usecase "Annuler une demande" as UC4

    usecase "Traiter une demande" as UC5
    usecase "Sélectionner une session" as UC6
    usecase "Inscrire l'employé" as UC7

    usecase "Ajouter une formation" as UC8
    usecase "Modifier une formation" as UC9
    usecase "Supprimer une formation" as UC10
    usecase "Modifier les sessions" as UC11
}

Employé --> UC1
Employé --> UC2
Employé --> UC3
Employé --> UC4

Responsable --> UC1
Responsable --> UC5
Responsable --> UC6
Responsable --> UC7
Responsable --> UC8
Responsable --> UC9
Responsable --> UC10
Responsable --> UC11

UC6 ..> UC5 : <<extend>>\n[session non choisie]

@enduml

autre modèle un peu plus moche

Le Use Case Etablir une demande peut être détaillé en d’autres Uses Cases

Gestion des Formations