-
Notifications
You must be signed in to change notification settings - Fork 2
/
Annexe_Cas_utilisation_Ouvrir_caisse.qmd
179 lines (125 loc) · 6.82 KB
/
Annexe_Cas_utilisation_Ouvrir_caisse.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# Cas d'utilisation -- Ouvrir la caisse {#sec-CU_Ouvrir_caisse}
Le contexte est l'étude de cas du système NextGen POS, notamment le scénario principal du cas d'utilisation *Ouvrir la caisse* (en anglais *Cash In*).
C'est l'acte d'un caissier ou d'une caissière qui arrive avec son tiroir-caisse contenant déjà de l'argent, qui s'authentifie sur la caisse (le registre) et qui saisit le montant en espèces dans le tiroir-caisse.
::: {.callout-note}
En effet, ce cas d'utilisation n'est pas présenté en détail par @craig_uml_2005, bien qu'il soit mentionné dans son livre dans un diagramme de cas d'utilisation.
Alors, nous proposons pour cet exercice des modifications au modèle du domaine présenté par Larman afin de modéliser cette fonctionnalité additionnelle du logiciel.
:::
```{.plantuml genurl="true" #fig-DCU_ouvrir_la_caisse caption='Diagramme de cas d\'utilisation pour le système NextGen.'}
@startuml
!include normal.pumlinclude
scale 1.0
left to right direction
skinparam packageStyle rect
skinparam defaulttextalignment center
actor Client
actor Caissier
actor Manager
rectangle "Système des\nventes" << acteur >> as SV
actor "Administrateur\nsystème" as AS
actor "Service\nd'autorisation\ndes paiements" as SAP
rectangle "Calculateur de\ntaxes" << acteur >> as CT
rectangle "Système de\ncomptabilité" << acteur >> as SC
rectangle "Système de\nressources\nhumaines" << acteur >> as SRH
rectangle "NextGen" {
(...) as other
(Traiter une vente) as TV
(Traiter les retours) as TR
(Ouvrir la caisse) as OLC #yellow
(Analyser l'activité) as AA
(Gérer la sécurité) as GS
(Gérer les utilisateurs) as GU
Client -d- TV
Client -d- TR
Caissier -d- TV
Caissier -d- TR
Caissier -d- OLC
Manager -d- TV
Manager -d- TR
TV -d- SAP
TV -d- CT
TV -d- SC
OLC -d- SRH
SV -d- AA
AS -d- GS
AS -d- GU
}
@enduml
```
## Terminologie
Quelques termes du domaine d'affaires doivent être compris avant de procéder:
Tiroir-caisse.
: C'est la partie de la caisse qui s'ouvre, dans laquelle on peut placer un plateau-billets.
Plateau-billets.
: C'est un contenant pour les billets de banque et les pièces de monnaie qui facilite le changement de personnel à une caisse.
Chaque caissier ou caissière possède un plateau-billets et l'apporte au début ou à la fin de son quart de travail.
## Cas d'utilisation: Ouvrir la caisse
**Acteur principal: Caissier ou Caissière**
**Préconditions:** La caisse est libre et son tiroir-caisse est vide (il n'y a pas de plateau dedans).
**Garanties de succès (postconditions):** La caissière ou le caissier est authentifié.
Son plateau-billets est placé dans le tiroir-caisse, et son identificateur est enregistré.
Le montant d'argent du plateau est enregistré.
L'heure de l'arrivée du caissier ou de la caissière est enregistrée.
\filbreak
**Scénario principal (succès)**
1. Le Caissier ou la Caissière arrive à la caisse avec son plateau-billets.
2. Le Caissier ou la Caissière saisit son identifiant et son mot de passe dans la boîte de dialogue d'authentification.
3. Le Système authentifie le Caissier ou la Caissière.
4. Le Système ouvre le tiroir-caisse et demande au Caissier ou à la Caissière de poser son plateau dans le tiroir-caisse.
5. Le Caissier ou la Caissière pose son plateau dans le tiroir-caisse.
6. Le Système reconnaît l'identificateur du plateau.
7. Le Système demande au Caissier ou à la Caissière de saisir le montant d'argent du plateau.
8. Le Caissier ou la Caissière saisit le montant d'argent du plateau.
9. Le Système demande au Caissier ou à la Caissière de fermer le tiroir-caisse.
10. Le Caissier ou la Caissière ferme le tiroir-caisse.
**Spécifications particulières:**
Les caisses sont configurées avec un modèle de plateau-billets comme celui-ci: [voir exemple sur YouTube](https://youtu.be/hgA3GFxlzBg?t=21)\ {{< fa brands youtube >}}.
**Fréquence d'occurrence:** Normalement, au début du quart de travail de chaque caissier ou caissière.
## Modèle du domaine partiel
Voici un exemple pour le système NextGen POS.
Notez les nouvelles classes conceptuelles **PlateauBillets** (un objet physique) et **MisePlateau** (une transaction) faisant partie du scénario d'*Ouvrir la caisse*.
![Modèle du domaine partiel pour le système NextGen POS présentant les différences par rapport au modèle du domaine de base présenté par Larman, avec l'ajout des classes conceptuelles PlateauBillets et MisePlateau, qui modélisent de nouveaux éléments du cas d'utilisation _Ouvrir la caisse_.](images/MDD_POS_NextGen_export.svg)
On remarque que lorsqu'un Registre (Caisse) n'a pas de Caissier (l'état du système au début du cas d'utilisation), l'objet Registre n'est associé à aucun objet Caissier.
Nous avons donc modifié les cardinalités de l'association en conséquence.
C'est une différence par rapport au modèle du domaine de base présenté par Larman, qui n'avait pas considéré ce cas d'utilisation, bien qu'il soit dans l'ensemble des spécifications du système.
Les associations en rouge sont celles qui sont affectées par la dynamique de ce cas d'utilisation.
\clearpage
## Diagramme de séquence système (DSS)
La @fig-DSS_ouvrir_la_caisse est le diagramme de séquence système (DSS) pour le scénario _Ouvrir la caisse_.
```{.plantuml genurl="true" #fig-DSS_ouvrir_la_caisse caption='Diagramme de séquence système (DSS) pour le scénario _Ouvrir la caisse_.'}
@startuml
!include normal.pumlinclude
skinparam SequenceMessageAlign center
title Ouvrir la caisse
actor ":Caissier" as C
participant ":Système" as S
C->S: démarrerOuvrirCaisse()
C->S: authentifier(identifiant : String, mdp : String)
C<<--S: confirmation, ouverture du tiroir
C->S: poserPlateau(identifiant : String)
C->S: saisirMontant(montant : Monnaie)
C->S: fermerTiroir()
@enduml
```
\clearpage
## Contrats d'opération
Voici les contrats pour chaque opération système.
**Opération: démarrerOuvrirCaisse()**
**Postconditions:**
- Une instance *mp* de MisePlateau a été créée.
**Opération: authentifier(identifiant: String, mdp: String)**
**Postconditions:**
- *mp* a été associée à un Caissier, sur la base de correspondance avec **identifiant**.
- Le Registre en cours a été associé à un Caissier, sur la base de correspondance avec **identifiant**.
**Opération: poserPlateau(identifiant: String)**
**Postconditions:**
- *mp* a été associée à un PlateauBillets, sur la base de correspondance avec **identifiant**.
- Le Registre en cours a été associé à un PlateauBillets, sur la base de correspondance avec **identifiant**.
**Opération: saisirMontant(montant: Monnaie)**
**Postcondition:**
- *mp.montant* est devenu **montant**.
**Opération: fermerTiroir()**
**Postconditions:**
- *mp.dateHeure* est devenue la date et l'heure actuelles.
- *mp* a été associée à GrandLivre.
- *mp* a été associée à Registre.