DS 2022 — Société Sansouci
L'annale complète du DS du 28/09/2022 (1 h 30) : le cas de la société Sansouci, diagramme de cas d'utilisation, fiche descriptive de planification et diagramme de classes — démarche expliquée.
Le cas d'étude
La société Sansouci est prestataire de services à la personne : environ 200 agents contractuels effectuent des missions chez les clientes (garde d'enfants, ménage, repassage, tonte de pelouse, taille de haie, aide aux personnes dépendantes). Elle veut informatiser son système d'information pour : gérer l'emploi du temps et l'état des services des agents ; proposer un site web où les clientes planifient une intervention ; gérer la facturation et la paye.
Les éléments à prendre en compte :
- Les services sont classés dans des catégories évolutives (travaux ménagers, garde d'enfants, bricolage, jardinage, auxiliaire de vie…). Chaque agent est compétent pour un sous-ensemble des catégories. Le taux horaire facturé aux clientes et le salaire horaire des agents dépendent de la catégorie.
- Une intervention est faite auprès d'une cliente, par un agent, à une date, avec heure de début et de fin, et concerne une catégorie.
- Une cliente peut planifier des interventions depuis le site : elle choisit catégorie, date et durée ; le site propose des créneaux selon les disponibilités des agents ; elle en choisit un pour qu'il soit programmé. Seules les clientes avec un compte et authentifiées accèdent à la planification.
- Chaque semaine, le service planification établit l'emploi du temps des agents (horaire, adresse, catégorie de chaque intervention).
- Chaque fin de mois : le service paye établit le salaire de chaque agent selon ses interventions du mois ; le service facturation édite les factures clientes.
Conditions de l'épreuve : 1 h 30, documents de cours, TD et TP autorisés. Copie 1 (questions 1-2), copie 2 (question 3).
Question 1 — Le diagramme de cas d'utilisation
- En tant que cliente, je dois pouvoir planifier une intervention (choisir catégorie, date, durée, puis un créneau proposé).
- En tant que service planification, je dois pouvoir établir l'emploi du temps hebdomadaire des agents.
- En tant que service paye, je dois pouvoir établir le salaire mensuel de chaque agent.
- En tant que service facturation, je dois pouvoir éditer les factures mensuelles des clientes.
- L'agent n'a pas de fonctionnalité propre dans la description : il est destinataire de l'emploi du temps — pas un acteur qui démarre un cas d'utilisation.
- La catégorie est une donnée (évolutive), pas un acteur.
- La connexion/authentification : c'est une précondition du cas « Planifier une intervention » (ou un cas d'utilisation « Se connecter » relié — le sujet de TP précise qu'on peut l'ignorer dans le diagramme de classes).
- Temps pourrait être acteur des traitements mensuels/hebdomadaires s'ils sont automatiques — la description les attribue à des services, donc des acteurs humains.
Question 2 — La fiche descriptive de « Planifier une intervention »
Aucun scénario alternatif demandé. Le squelette à produire :
Système : SI de Sansouci
Cas d'utilisation : Planifier une intervention
Acteur principal : Cliente
Autres acteurs : aucun
Préconditions : La cliente a un compte et est authentifiée sur le site.
Garanties en cas de succès : L'intervention est programmée aux date,
heure et catégorie choisies, avec un agent compétent.
Garanties minimales : Si le scénario n'aboutit pas, l'état du système
reste inchangé.
Scénario nominal :
1. La cliente sélectionne la fonctionnalité « Planifier une
intervention ».
2. Le système demande la catégorie de service, la date et la durée
souhaitées.
3. La cliente les saisit et valide.
4. Le système propose la liste des créneaux possibles, selon les
disponibilités des agents compétents pour la catégorie.
5. La cliente choisit un créneau et valide.
6. Le système programme l'intervention pour le créneau choisi.Vérifier les règles : première étape « sélectionne la fonctionnalité », alternance strict acteur/système, dernière étape système, formulation abstraite (pas « clique sur le bouton réserver »), précondition explicite (compte + authentification).
Question 3 — Le diagramme de classes (copie 2)
Le diagramme doit permettre d'implémenter toutes les fonctionnalités sauf la connexion. Par la méthode du cours (une méthode par cas d'utilisation dans la classe principale, enrichir jusqu'à ce que chaque cas soit implémentable), les éléments attendus :
Categorie:nom : String,tauxHoraireFacture : double,salaireHoraire : double— le taux dépend de la catégorie.Agent: identité +competences(multiplicité1..★versCategorie).Cliente: identité, compte.Intervention:date : Date,heureDebut,heureFin, liée à uneCliente, unAgentet uneCategorie(par association).
Sansouci (ou SystemeInformation) avec une opération par cas
d'utilisation : etablirEmploiDuTemps(…) pour la semaine, proposerCreneaux(…) /
planifierIntervention(…) pour le site, etablirSalaires(…) et
editerFactures(…). Pour que chaque opération soit implémentable, il faut
pouvoir retrouver les interventions par agent, par cliente et par mois — d'où les
associations et multiplicités (0..★ du côté des interventions).
- Ignorer la connexion (explicitement exclu de la question 3).
- Le taux horaire dépend de la catégorie, pas de l'agent : ne pas le mettre en
attribut de
Agent. - Une intervention relie une cliente, un agent, une date, deux heures et une
catégorie — les multiplicités sont toutes
1de ce côté. - Ne pas dupliquer la catégorie en attribut en ligne ET par association : si
Categorieest dans le diagramme, c'est par association.
Ce qui peut tomber le jour J
Le format est stable : un cas d'étude décrit en langue naturelle, 1 h 30, 18,5 pts, copie 1 pour les questions 1–2 (diagramme de cas d'utilisation + fiche descriptive), copie 2 pour la question 3 (diagramme de classes). Les notes manuscrites de cours et de TD sont autorisées — prépare-les, elles font partie du matériel d'examen.
Trois points du programme n'ont pas été évalués dans ce sujet alors qu'ils sont sérieusement entraînés dans la matière : «include» / «extend» (TD/TP 1), les scénarios alternatifs (TD/TP 2 — le sujet disait « aucun scénario alternatif n'est demandé ») et le déclencheur automatique avec l'acteur Temps (cours Scénarios, exemple Groupin). Ce sont les candidats logiques du prochain sujet — les variantes ci-dessous les travaillent un par un.
Les trois incontournables
Ces questions reviennent à chaque épreuve, seuls le cas d'étude et l'habillage changent — le DS 2022 les a toutes les trois posées.
La méthode ne change jamais : extraire les phrases « En tant que …, je dois pouvoir … », l'acteur à gauche, le verbe d'action dans l'encadré. Ce qui est systématiquement piégé :
- une donnée (la catégorie de service, le produit, le film) n'est pas un acteur — c'est une classe du diagramme de classes ;
- un destinataire (l'agent qui reçoit son emploi du temps) n'initie rien : il ne porte aucun cas d'utilisation ;
- connexion / authentification : précondition du cas concerné (ou cas « Se connecter » relié), jamais une fonctionnalité métier à elle seule ;
- les traitements périodiques automatiques (fin de mois, chaque semaine) réveillent l'acteur Temps quand le sujet ne les attribue pas à un service ;
- les services externes (banque, facturation) sont des acteurs secondaires, dessinés de l'autre côté de la limite du système ;
- acteurs = des rôles (jamais de noms propres), cas d'utilisation = des verbes d'action avec l'acteur comme sujet actif.
Le squelette complet : système, cas d'utilisation, acteur principal, autres acteurs, déclencheur (si déclenchement automatique), préconditions, garanties en cas de succès, garanties minimales, scénario nominal, scénarios alternatifs. Les cinq règles du nominal, chacune vaut des points à chaque épreuve :
- étape 1 : « L'acteur sélectionne la fonctionnalité … » ;
- alternance stricte acteur / système ;
- dernière étape réalisée par le système ;
- rester abstrait : pas de bouton, de menu déroulant, de QR code — « sélectionne », « saisit », « valide » ;
- garanties minimales : si le scénario n'aboutit pas, l'état du système reste inchangé. Les scénarios alternatifs se numérotent depuis l'étape du nominal qui dévie (4(A)…) avec reprise explicite (« revient à l'étape 2 du scénario nominal ») ou arrêt. Le DS 2022 n'en demandait pas — le prochain sujet peut les exiger.
La démarche attendue : classe Main (du nom du système), une méthode par cas d'utilisation, puis enrichir les classes de données jusqu'à ce que chaque méthode soit implémentable — sans rien de superflu. Ce qui est systématiquement piégé :
- attribut en ligne vs par association : si le type fait partie du diagramme, c'est par association — jamais les deux à la fois ;
- les multiplicités se justifient (les interventions d'un agent :
0..★; une intervention relie une cliente, un agent et une catégorie :1) ; - les valeurs qui dépendent d'une autre classe vont sur cette classe : le taux horaire facturé et le salaire dépendent de la catégorie ;
- ignorer la connexion quand le sujet l'exclut explicitement ;
- pas de visibilité, pas de getters/setters — trois zones par classe.
Variante 1 — Le cinéma : calculs automatiques et «include»
Reprenez le SI du cinéma, fil rouge du cours, avec deux évolutions : le calcul des entrées par film (chaque semaine) et du chiffre d'affaires (chaque mois) est désormais effectué automatiquement par le système ; et la vente de tickets doit systématiquement vérifier la capacité restante de la salle. Qui initie les calculs ? Où placer la vérification de capacité — «include» ou «extend» ?
- Les calculs périodiques sont automatiques : l'acteur initiateur est Temps (déclencheurs : chaque semaine, chaque fin de mois), sur le modèle de la fiche Groupin du cours. Le service financier devient simple destinataire des résultats — comme l'agent de Sansouci, il n'initie plus rien et sort du diagramme.
- La vérification de capacité accompagne toutes les ventes, sans exception : c'est un «include» depuis Vendre des tickets. Un «extend» serait faux — l'extension est optionnelle, ici la vérification est obligatoire.
- Enregistrer un nouveau film, Planifier les séances et Vendre des tickets ne changent pas : mêmes acteurs, mêmes associations.
Variante 2 — « Planifier une intervention », cette fois avec scénarios alternatifs
Même sujet que la question 2, mais le sujet demande maintenant deux scénarios alternatifs de la fiche descriptive.
Scénarios alternatifs (complément à la fiche de la question 2) :
A : aucun créneau disponible — à l'étape 4, aucun agent compétent n'est
disponible pour la catégorie, la date et la durée demandées.
4(A). Le système informe la cliente qu'aucun créneau ne correspond et
propose de modifier la date ou la durée.
5(A). La cliente modifie sa demande ou abandonne.
6(A). Le système revient à l'étape 2 du scénario nominal.
B : créneau devenu indisponible — à l'étape 5, le créneau choisi vient
d'être réservé par une autre cliente.
5(B). Le système détecte le conflit, retire le créneau et affiche les
créneaux restants.
6(B). La cliente choisit un nouveau créneau ou abandonne.
7(B). Le système revient à l'étape 5 du scénario nominal.Les deux alternatifs dévient depuis une étape système (4) et une étape acteur (5) : la numérotation suit l'étape du nominal, la reprise cite explicitement l'étape de retour, et chaque alternatif garde l'alternance acteur/système.
Variante 3 — Diagramme de classes de la plateforme de financement participatif
Question 3 du DS transposée au cas d'étude du TD/TP 1 (demandé au TD/TP 3 sans corrigé publié) : construire le diagramme de classes de la plateforme de financement participatif pour implémenter toutes les fonctionnalités sauf la connexion.
- Classe principale
Plateforme, une méthode par cas d'utilisation :creerProjet(…),validerProjet(…),rechercherProjets(…),faireUnDon(…),reverserDon(…),obtenirRemboursement(…),consulterDonateurs(…). - Classes de données :
Projet(titre,description,montantCible,montantCollecte,dateFinCollecte,statut : String),Don(montant,date,numeroTransaction : String),Contrepartie(description,seuilMontant),Donatrice(identité). - Associations :
Donatrice—Don(émet,0..★) ;Projet—Don(reçoit,0..★) ;Don—Contrepartie(choisit,0..1— l'optionnalité du «extend» du TD/TP 1 devient une multiplicité) ;Plateforme—Projet(0..★). - Les pièges :
- pas de classe
Banque: le service bancaire est un acteur externe du diagramme de cas d'utilisation ; dans les classes, la trace du paiement tient en un attributnumeroTransaction : StringsurDon; - le «extend» Choisir une contrepartie se traduit en multiplicité
0..1sur l'associationDon—Contrepartie, pas en cas supplémentaire ; statutsurProjet(en cours, réussie, échouée) est ce qui permet d'implémenter Reverser son don et Obtenir le remboursement (déclenchés à l'échec de la collecte) ;- pas de visibilité, pas de getters/setters : trois zones par classe, attributs en ligne avec type et multiplicité.
- pas de classe
Sujet de DS 2022.pdf
R3.03 · DS du 28/09/2022 — Société Sansouci (1 h 30, documents autorisés)
Chargement du document…
Dernière mise à jour le