Analyse des acteurs et cas d’utilisation pour Sysvote
Exercice 1 - Spécification des besoins Question 1 - Acteurs de l'application Voici l'identification des acteurs pour l'application "Sys_vote". Un acteur représente une entité externe (humain, matériel ou un autre système) qui interagit directement avec le système modélisé. Nom Statut Justification (si non retenu) / Type (si retenu) a.
D'après le document Analyse des acteurs et cas d’utilisation pour Sysvote
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source
Programming, Math, etc. · PDF · 8 pages
Afficher l'aperçu du document
Exercice 1 - Spécification des besoins
Question 1 - Acteurs de l'application
Voici l'identification des acteurs pour l'application "Sys_vote". Un acteur représente une entité externe (humain, matériel ou un autre système) qui interagit directement avec le système modélisé.
| Nom | Statut | Justification (si non retenu) / Type (si retenu) |
|---|---|---|
| a. Appareil | Non retenu | Il s'agit du système informatique lui-même (ou de l'un de ses composants matériels), et non d'une entité externe qui interagit avec. |
| b. Administrateur | Acteur | Principal : Il configure et gère le système (ajout de partis, gestion technique). |
| c. Serveur Central | Acteur | Secondaire : Il reçoit les résultats ou fournit les listes électorales. C'est un système externe. |
| d. Directeur Général Des Élections | Acteur | Principal : Il interagit avec le système pour déclencher des actions globales ou consulter les résultats finaux. |
| e. Electeur | Acteur | Principal : Utilisateur direct du système dont le but est d'enregistrer son vote. |
| f. Partie Politique | Non retenu | C'est une donnée ou une information gérée par le système (une classe métier), mais le parti n'interagit pas physiquement avec la machine de vote. |
| g. Employé | Non retenu | Terme beaucoup trop vague. On préfèrera utiliser un rôle spécifique comme "Administrateur" ou "Scrutateur". |
| h. Bulletin | Non retenu | C'est un objet informatique (le résultat du vote) ou un concept, il n'a aucun comportement actif vis-à-vis du système. |
| i. Lecteur De L’appareil De Vote | Non retenu | C'est un composant matériel (interface) qui fait partie des frontières du système, pas un acteur externe. |
| j. Horloge | Acteur | Secondaire : Système externe autonome qui déclenche des événements temporels (ex: ouverture/fermeture automatique du scrutin). |
| k. Scrutateur | Acteur | Principal : Personne responsable d'un bureau de vote qui interagit avec l'application pour ouvrir, fermer ou auditer une machine. |
Question 2 - Cas d'utilisation complémentaires
Un cas d'utilisation doit représenter un service complet rendu par le système à un acteur, apportant une valeur ajoutée observable.
| Actions | Statut | Justifications |
|---|---|---|
| a. Consulter liste des partis politiques | Retenu | Service autonome pour un électeur ou un administrateur souhaitant s'informer avant le vote ou vérifier la base de données. |
| b. S’identifier | Retenu | Sous-fonctionnalité majeure, souvent modélisée comme un cas d'utilisation inclus (relation «include») dans le vote ou l'administration. |
| c. Compléter le bulletin | Non retenu | C'est une étape interne (une action ou un scénario) du cas d'utilisation principal "Voter pour un parti", pas un cas d'utilisation indépendant. |
| d. Modifier les informations sur un parti politique | Retenu | Action métier complète (CRUD) nécessaire pour l'administrateur afin de maintenir les données à jour. |
| e. Ajouter un nouveau parti politique | Retenu | Action métier complète (CRUD) de configuration initiale du système par l'administrateur. |
| f. Récupérer le résultat du vote | Retenu | Objectif métier fondamental pour le Scrutateur ou le Directeur à la fin de la période électorale. |
| g. Accéder aux données globales | Retenu | Cas d'utilisation de reporting global utile au Directeur Général des Élections ou au Serveur Central. |
| h. Enlever un parti politique existant | Retenu | Action métier complète (CRUD) de maintenance pour l'administrateur. |
Question 3 - Diagramme de cas d'utilisation
Note : Le format texte ne permettant pas de tracer des diagrammes graphiques UML, voici la description structurelle exacte des éléments et de leurs relations que vous devez dessiner.
Acteurs :
- Électeur (Bonhomme allumette, placé à gauche)
- Scrutateur (Bonhomme allumette, placé à gauche ou à droite)
Cas d'utilisation et dépendances (à placer dans le cadre du système) :
- L'acteur Électeur est relié par une association simple au cas d'utilisation
(Voter pour un parti politique). - L'acteur Scrutateur est relié par une association simple au cas d'utilisation
(Comptabiliser les votes). - Le cas
(Voter pour un parti politique)pointe vers le cas(S'identifier)avec une flèche en pointillés stéréotypée«include»(l'identification est obligatoire pour voter). - Si le scrutateur doit aussi s'identifier, le cas
(Comptabiliser les votes)pointe également vers(S'identifier)avec une flèche«include».
Question 4 - Spécification de l'ordre d'exécution
Un diagramme de cas d’utilisation uniquement permet-il de spécifier l’ordre d’exécution des cas ?
Non. Le diagramme de cas d'utilisation est un diagramme structurel d'exigences. Il décrit le "quoi" (les fonctionnalités offertes) et le "qui" (les acteurs impliqués), mais en aucun cas le "quand" ou le "comment". L'ordre chronologique d'exécution, la logique conditionnelle et les boucles doivent être modélisés par des diagrammes comportementaux, tels que les diagrammes de séquence (pour les échanges chronologiques de messages) ou les diagrammes d'activité (pour le flux de contrôle).
Question 5 - Scénarios du cas « voter pour un parti politique »
a. Pré-condition au cas : La machine de vote est dans l'état "scrutin ouvert", et l'électeur dispose de ses identifiants valides (carte d'électeur, code, ou biométrie) non encore utilisés.
b. Variantes de scénarios :
- Nominal : Le scénario idéal. L'électeur s'identifie avec succès, le système affiche la liste des partis. L'électeur sélectionne un parti, valide son choix. Le système enregistre le vote de manière anonyme, incrémente le compteur du parti, marque l'électeur comme "a voté" et affiche un message de confirmation.
- Alternatif : Le scénario qui atteint l'objectif par un chemin différent. L'électeur s'identifie, consulte la liste, mais décide de voter "Blanc". Il sélectionne l'option "Vote Blanc", valide. Le système enregistre un vote blanc, marque l'électeur comme "a voté" et confirme. (Un autre alternatif valable : l'électeur se trompe, annule sa sélection avant la validation finale, et choisit un autre parti).
- Exceptionnel : Le scénario d'échec. L'électeur insère sa carte, mais le système détecte qu'il est déjà marqué comme "a voté" dans la base de données. Le système refuse l'accès, génère une alerte d'anomalie, n'affiche pas les bulletins, et met fin au cas d'utilisation.
Question 6 - Scénarios du cas « comptabiliser les votes »
- Nominal : À l'heure de fermeture, le scrutateur lance la comptabilisation. Le système clôture définitivement les votes, fait la somme des bulletins pour chaque parti politique, génère un procès-verbal électronique chiffré, l'affiche à l'écran du scrutateur et l'envoie au serveur central.
- Alternatif : Durant la journée (si la loi l'autorise), le scrutateur demande une comptabilisation partielle (taux de participation). Le système calcule uniquement le nombre de votants par rapport aux inscrits sans dépouiller les bulletins pour préserver le secret, et affiche ce chiffre au scrutateur.
Exercice 2 : Analyse + Conception
Note concernant la source : L'énoncé original mentionne un "diagramme de classes suivant" à compléter, mais celui-ci est absent du document extrait. Les réponses suivantes sont basées sur les règles canoniques de modélisation UML d'un jeu d'échecs demandées par le texte.
Partie 1 : Analyse
Question 1 - Complétion du diagramme de classes (Jeu d'échecs)
Justifications des modifications :
- Cardinalités manquantes :
JeuEchecs(1) --- (1)Echiquier: Un jeu ne possède qu'un seul plateau de jeu, et un plateau appartient à un seul jeu à la fois.Echiquier(1) --- (64)Case: Un échiquier standard est obligatoirement composé de 64 cases fixes.JeuEchecs(1) --- (32)Piece: Un jeu d'échecs standard débute avec exactement 32 pièces (16 blanches, 16 noires).
- Associations avec la classe
Coup:- Un
Coupdoit lier unePiece(celle qui bouge, multiplicité 1). - Un
Coupdoit lier uneCasede départ (multiplicité 1) et uneCased'arrivée (multiplicité 1). - Un
Coupappartient à l'historique duJeuEchecs(JeuEchecs1 --- 0..*Coup).
- Un
- Composition et Agrégation :
- Composition (Losange plein) : Entre
JeuEchecsetEchiquier/Case. Les cases n'ont pas d'existence propre en dehors de l'échiquier, et l'échiquier n'a pas de sens sans le jeu. La destruction du jeu détruit le plateau. - Agrégation (Losange vide) ou Association simple : Entre
CaseetPiece. Une pièce est "posée sur" une case (0..1 pièce par case, 1 case par pièce active), mais la pièce a une existence indépendante de la case.
- Composition (Losange plein) : Entre
Question 2 - Diagrammes d'objets
La consigne exige de représenter uniquement les cases occupées pour plus de clarté.
a. Disposition initiale (Extrait descriptif) : Le diagramme d'objets (instances) montrerait :
- Un objet
j1 : JeuEchecslié àe1 : Echiquier. - L'objet
e1est composé de plusieurs objetsCase(ex:c_e2 : Case,c_e7 : Case). - Des instances de pièces :
pB : Pion(avec attribut couleur = blanc),pN : Pion(couleur = noir). - Des liens d'association : L'instance
pBest liée à la casec_e2. L'instancepNest liée à la casec_e7.
b. Évolution après deux coups (Extrait descriptif) :
- Les instances
j1,e1,c_e2,c_e7,c_e4,c_e5,pB,pNexistent toujours. - Le lien entre
pBetc_e2est détruit. Un nouveau lien reliepBàc_e4(Pion blanc avance). - Le lien entre
pNetc_e7est détruit. Un nouveau lien reliepNàc_e5(Pion noir avance). - Création de deux instances de
Coup:coup1 : Couplié àpB, àc_e2(départ) et àc_e4(arrivée).coup2 : Couplié àpN, àc_e7(départ) et àc_e5(arrivée).- Ces deux instances
coup1etcoup2sont reliées à l'instancej1 : JeuEchecs.
Partie 2 : Conception
Question 1 - Contraintes sur les associations
- JeuEchecs-Piece :
{frozen}(ou gelé).- Justification : Les 32 pièces créées lors de l'instanciation du jeu appartiennent à cette instance de jeu jusqu'à la fin. On n'ajoute pas de nouvelles pièces venues d'ailleurs pendant la partie (même la promotion remplace l'état de la pièce, elle ne crée généralement pas un objet d'un autre jeu).
- JeuEchecs-Coup :
{ordered}et{addOnly}- Justification : Les coups forment un historique.
{ordered}est indispensable car l'ordre chronologique dicte l'état de la partie.{addOnly}est pertinent car, dans le déroulement légal et le registre final de la partie, un coup joué ne s'efface pas.
- Justification : Les coups forment un historique.
- Echiquier-Case :
{frozen}- Justification : Le lien structurel de l'échiquier est immuable. Les 64 cases sont créées à l'initialisation et ne sont jamais supprimées, retirées ou déplacées.
Question 2 - Structures de collections (C++ STL)
- JeuEchecs-Piece :
std::array<Piece, 32>(ou un tableau statique classiquePiece[32]).- Commentaire : La collection est de taille fixe et connue à la compilation. Un tableau statique est parfait pour la performance spatiale et temporelle.
- JeuEchecs-Coup :
std::vector<Coup>- Commentaire : Le nombre total de coups dans une partie est variable et inconnu à l'avance. On ajoute constamment des éléments en fin de collection. Le
vectoroffre un redimensionnement dynamique et préserve l'ordre séquentiel (parfait pour l'historique et la contrainte{ordered}).
- Commentaire : Le nombre total de coups dans une partie est variable et inconnu à l'avance. On ajoute constamment des éléments en fin de collection. Le
- Echiquier-Case :
std::array<std::array<Case, 8>, 8>(ou tableau 2D statiqueCase[8][8]).- Commentaire : Taille absolument fixe de 8x8. Permet un accès direct en O(1) via les index (ligne, colonne).
Question 3 - Ordre de navigation
- Savoir si une case est jouable ou non pour une pièce donnée :
- Navigation :
Piece→Case(actuelle) + Règles propres → Interroger l'Echiquier→Case(visée) → Vérifier associationCase-Piececible. - Commentaire : On part de la pièce pour obtenir ses règles de déplacement brutes. On interroge ensuite le plateau pour voir si la trajectoire vers la case visée est libre, puis on vérifie si la case d'arrivée est vide ou occupée par une pièce ennemie.
- Navigation :
- Navigation :
Echiquier→ Liste desPieceadverses actives → Pour chaquePieceadverse, calculer ses mouvements possibles →Casevisée =Casede notre pièce ? - Commentaire : Pour évaluer un risque (notamment l'échec), il faut itérer de manière systématique depuis le plateau (ou le jeu) vers l'ensemble des pièces adverses, puis naviguer vers les cases qu'elles contrôlent.
Question 4 - Mémorisation des coordonnées dans la classe 'Case'
Avantage :
Un objet Case se "connaît" lui-même. N'importe quel objet possédant une référence vers une Case peut demander directement sa position sans avoir besoin de faire une requête coûteuse au plateau (Echiquier) pour la chercher. L'accès est de complexité temporelle O(1).
Inconvénient :
Redondance et risque d'incohérence. Si l'échiquier est implémenté sous forme de matrice (ex: Case[8][8]), les coordonnées sont déjà définies par les indices du tableau. Stocker x et y à l'intérieur de la classe duplique l'information, consomme plus de mémoire (faible impact ici, mais mauvais principe de conception) et risque de créer un état contradictoire (ex: l'objet en [0][0] prétend que ses coordonnées sont x=5, y=2).
Question 5 - Diagramme d'états/transitions de la classe JeuEchecs
Description textuelle du diagramme à modéliser :
- État initial (Point noir plein) pointant vers l'état
Initialisation. - État : Initialisation
- Transition automatique (mise en place terminée) pointant vers
Tour des Blancs.
- Transition automatique (mise en place terminée) pointant vers
- État : Tour des Blancs
- Transition "Coup valide joué par les Blancs" pointant vers
Tour des Noirs.
- Transition "Coup valide joué par les Blancs" pointant vers
- État : Tour des Noirs
- Transition "Coup valide joué par les Noirs" pointant vers
Tour des Blancs.
- Transition "Coup valide joué par les Noirs" pointant vers
- État : Fin de partie (qui peut être divisé en sous-états
Victoire Blancs,Victoire Noirs,Nulle/Pat).- Depuis
Tour des Blancs, transition "Roi adverse échec et mat" ou "Abandon des Noirs" versFin de partie. - Depuis
Tour des Noirs, transition "Roi adverse échec et mat" ou "Abandon des Blancs" versFin de partie. - Depuis n'importe quel tour, transition "Situation de Pat / 50 coups / Répétition / Accord mutuel" vers
Fin de partie.
- Depuis
- Depuis
Fin de partie, flèche vers l'État final (Cercle contenant un point noir).
Méthode
Face à une épreuve d'Analyse et Conception (UML) :
- Lisez l'énoncé comme un cahier des charges : Chaque nom correspond potentiellement à une classe ou un acteur, chaque verbe à une méthode, un cas d'utilisation ou une association. Ne sur-modélisez pas : tenez-vous strictement au périmètre du texte (ex: dans l'exercice 1, ne gardez que les acteurs qui interagissent numériquement avec le système décrit).
- Maîtrisez le vocabulaire formel UML : La différence entre composition et agrégation est classique. Posez-vous toujours la question de la durée de vie : si "A" est détruit, "B" survit-il ? Si non, c'est une composition (losange plein).
- Faites le pont entre Modèle et Implémentation : L'UML n'est pas qu'un dessin. Quand on vous demande de choisir une collection STL (Exercice 2, Partie 2), projetez la multiplicité UML (statique
1..*ou dynamique0..*) directement dans le code source (tableau vs vecteur dynamique). - Assainissez les cas d'utilisation : Un cas d'utilisation n'est jamais une action unitaire basique de l'interface graphique ("cliquer sur bouton", "compléter un champ"). C'est un objectif métier ("Voter", "Comptabiliser"). Si vous identifiez une action technique, c'est probablement un fragment de scénario, pas une bulle sur le diagramme.
Commentaires
Aucun commentaire pour le moment. Posez la première question.