Vous êtes sur la page 1sur 43

UML RENFORCE

UML Renforcé - eBaieDesAnges

Sommaire
1 - Introduction 4
1.1 - Présentation du projet 4

1.2 - Hypothèses et choix effectués 4

2 - Diagrammes de cas dʼutilisation 6


2.1 - Cas dʼutilisation ChercherObjet 6

2.2 - Cas dʼutilisation CreerCompte 6

2.3 - Cas dʼutilisation Encherir 7

2.4 - Cas dʼutilisation Facturer 8

2.5 - Cas dʼutilisation GererAnnonce 8

2.6 - Cas dʼutilisation FinirVente 9

2.7 - Cas dʼutilisation MettreObjetEnVente 10

2.8 - Cas dʼutilisation PrevenirFinDeVente 11

2.9 - Cas dʼutilisation SeLogger 11

2.10 - Cas dʼutilisation Suivre 11

2.11 - Cas dʼutilisation ModifierCompte 12

3 - Diagramme de classes 13

4 - Diagrammes de séquence 14
4.1 - Chercher objet 14

4.2 - Se logger 15

4.3 - Créer membre/compte 16

4.4 - Enchérir 17

4.5 - Annuler enchère 19

4.6 - Facturer 20

4.7 - Finir vente 21

4.8 - Annuler vente enchérisseur 22

2
UML Renforcé - eBaieDesAnges

4.9 - Annuler vente vendeur 23

4.10 - Inscrire 25

4.11 - Confirmer envoi 26

4.12 - Confirmer réception 27

4.13 - Commenter vendeur 28

4.14 - Gérer annonce 29

4.15 - Mettre objet en vente 31

4.16 - Prévenir fin de vente 33

4.17 - Suivre 34

5 - Diagrammes dʼétats 35
5.1 - Diagramme dʼétat Annonce 35

5.2 - Diagramme dʼétat AnnonceEnCours 36

6 - Diagrammes dʼactivité 37
6.1 - Encherir 37

6.2 - Finir vente 38

7 - Diagramme de composant 39

8 - Diagramme de déploiement 40

7 - Spécifications en OCL 41

3
UML Renforcé - eBaieDesAnges

1 - Introduction
1.1 - Présentation du projet

Le site “eBaieDesAnges” est un projet de site dʼenchère en ligne.

Il permet aux utilisateurs du site de mettre en vente des objets, dʼenchérir puis de mettre
en correspondance le vainqueur de lʼenchère et le vendeur, afin de garantir le paiement et
la livraison.

Les paiements se font par “banque virtuelle niçoise”. Le site “eBaieDesAnges” propose
également un système dʼenchères automatiques, plafonnées par les acheteurs potentiels.
Le vendeur et le vainqueur peuvent ensuite donner une note en fonction de la qualité de
lʼobjet vendu et du temps de paiement.

1.2 - Hypothèses et choix effectués

Les fonctionnalités dʼachat immédiat, dʼannonce classique, de prix de réserve, de départ


différé, de questions/réponses entre utilisateurs, de catégories dʼannonces ne sont pas
traitées par le système.

Une annonce dont lʼétat est “Gagnée” signifie que lʼobjet nʼa pas été payé. Elle est
considérée comme payée et archivée lorsque son état est “Archivée”. Ainsi, toutes les
annonces sont conservées dans le système, quʼelles soient “Terminée”, “Annulée”, etc.

Les états dʼune annonce peuvent être “En cours”, “Perdue”, “Gagnée”,
“ConfirmationEnvoi”, “ConfirmationReception”, “Annulée“, “Payée”, “Archivée”.

Les accesseurs, modificateurs de base, ainsi que les constructeurs et destructeurs ne sont
pas représentés dans les méthodes des classes.

On suppose quʼune commission de 3% est perçue sur le prix final. Les frais de mise en
vente et la commission sont perçus à la fin du mois de la date de fin de lʼannonce.

Les factures sont établies chaque mois. A des fins dʼoptimisation, nous avons relié la
classe “Facture” à “AcheteurVendeur”. Ceci dans le but dʼoptimiser les recherches de
factures concernant un acheteurVendeur.

Pour les commentaires effectués sur lʼacheteur par le vendeur et ceux effectués sur le
vendeur par lʼacheteur, il nʼy a quʼun diagramme de séquence car ils sont identiques.

Dans le diagramme de séquence “ChercheObjet”, mots désigne une collection de String.

La méthode “mail1ereEnchere” permet de passer lʼétat dʼun booléen à “True” lorsque la


première enchère sur une annonce a été effectuée.

Un note effectuée sur un vendeur et un acheteur est sur 5. 1 correspondant à “très


mauvais”, 2 à “mauvais”, 3 à “moyen”, 4 à “bon”, 5 à “excellent”.

4
UML Renforcé - eBaieDesAnges

Lors de la création dʼune annonce, la facture associée est immédiatement créée. Si une
facture existe déjà pour un vendeur pour le mois en cours, une ligne sur la facture est
rajoutée.

Le système ne permet pas de relancer les factures. Lorsquʼune demande de paiement est
envoyée à la banque virtuelle niçoise, il sʼeffectue toujours avec succès.

Dans la classe “Modérateur”, la propriété “dernierIdFiltre” représente un Id dʼannonce.


Lorsque le modérateur se connecte, une liste dʼannonces non filtrées est créée. Cette liste
est créée à partir de la dernière connexion du modérateur et donc du dernier id filtré du
modérateur.

Lʼhorloge déclenche une alerte pour prévenir les suiveurs et les enchérisseurs que
lʼenchère va bientôt arriver à son terme. Cette alerte est effectuée à minuit tous les jours et
grâce à toutes les annonces qui se terminent le jour suivant, lʼalerte permet dʼenvoyer des
mails à toutes les personnes concernées.

Pour quʼune annonce ait son état “Archivée”, lʼacheteur et le vendeur doivent
obligatoirement avoir rempli les commentaires et les notes.

Nous supposons que le mail dʼun membre dans notre système est strictement identique à
celui de ce membre dans le système de la banque virtuelle niçoise.

5
UML Renforcé - eBaieDesAnges

2 - Diagrammes de cas dʼutilisation


2.1 - Cas dʼutilisation ChercherObjet

2.2 - Cas dʼutilisation CreerCompte

6
UML Renforcé - eBaieDesAnges

2.3 - Cas dʼutilisation Encherir

7
UML Renforcé - eBaieDesAnges

2.4 - Cas dʼutilisation Facturer

2.5 - Cas dʼutilisation GererAnnonce

8
UML Renforcé - eBaieDesAnges

2.6 - Cas dʼutilisation FinirVente

9
UML Renforcé - eBaieDesAnges

2.7 - Cas dʼutilisation MettreObjetEnVente

10
UML Renforcé - eBaieDesAnges

2.8 - Cas dʼutilisation PrevenirFinDeVente




2.9 - Cas dʼutilisation SeLogger



2.10 - Cas dʼutilisation Suivre

11
UML Renforcé - eBaieDesAnges

2.11 - Cas dʼutilisation ModifierCompte

12
UML Renforcé - eBaieDesAnges

3 - Diagramme de classes

13
UML Renforcé - eBaieDesAnges

4 - Diagrammes de séquence
4.1 - Chercher objet

• Scénario

1) Un utilisateur cherche un objet avec des mots


Pour toutes les annonces
Si lʼétat de lʼannonce est en cours
2) Le système cherche les mots clés de lʼannonce
Pour tous les mots clés
Si les mots cherchés sont dans les mots clés
3) Le système affiche le lien de lʼannonce

14
UML Renforcé - eBaieDesAnges

4.2 - Se logger

• Scénario

1) Un membre se logge avec un login et un mot de passe


2) Le système recherche le membre correspondant à ce login et à ce mot de passe

15
UML Renforcé - eBaieDesAnges

4.3 - Créer membre/compte

• Scénario

1) Un utilisateur entre une adresse mail et un mot de passe


2) Le système cherche si un membre correspond à cette adresse mail
Si oui
3) Le système indique à lʼutilisateur quʼun membre avec cette adresse mail
existe déjà
Sinon
4) Un membre est créé avec lʼadresse mail et le mot de passe

16
UML Renforcé - eBaieDesAnges

4.4 - Enchérir

17
UML Renforcé - eBaieDesAnges

• Scénario

1) Un acheteur/vendeur décide dʼenchérir une annonce avec un montant


2) Le système cherche lʼannonce en cours correspondante
3) Le système crée une enchère avec lʼacheteur/vendeur, lʼannonce et le montant
Si le nombre dʼenchère est supérieur à 1
Si le meilleur enchérisseur de cette annonce est différent de lʼacheteur/
vendeur qui enchérit
4) Un mail est envoyé au meilleur enchérisseur précédent lui disant
quʼil nʼest plus le meilleur enchérisseur de lʼannonce
5) Un mail est envoyé au meilleur enchérisseur pour lui dire que cʼest
le meilleur enchérisseur de lʼannonce
Si le nombre dʼenchère nʼest pas supérieur à 1
6) Un mail est envoyé à lʼacheteur/vendeur pour lui dire que cʼest le meilleur
enchérisseur de lʼannonce
Si la variable mail1ereEnchere est à « FALSE »
7) Lʼétat de la variable mail1ereEnchere passe à « TRUE »
8) Un mail est envoyé au vendeur de lʼannonce pour lui dire quʼil y a
eu une première enchère sur son annonce

18
UML Renforcé - eBaieDesAnges

4.5 - Annuler enchère

• Scénario

1) Un acheteur/vendeur décide dʼannuler une enchère sur une annonce avec une la date
de lʼenchère
2) Le système recherche lʼannonce en cours correspondante
3) Le système recherche lʼenchère correspondante à cette annonce, à ce membre et à la
date de lʼenchère
4) Lʼenchère est supprimée du système
5) Un mail est envoyé à cet acheteur/vendeur pour lui confirmer lʼannulation de son
enchère
Sʼil reste au moins une enchère :
6) Le système recherche le membre qui a la meilleure enchère
7) Un mail est envoyé à ce nouveau meilleur enchérisseur
Sʼil nʼy a plus dʼenchère :
8) Un mail est envoyé au vendeur pour lui dire quʼil nʼy a plus dʼenchère
9) Lʼétat de mail1ereEnchere passe à « FALSE »

19
UML Renforcé - eBaieDesAnges

4.6 - Facturer

• Scénario

1) Lʼhorloge ordonne au système de facturer le mois courant


Pour toutes les factures du moi :
2) Le système récupère un acheteur/vendeur
3) Un mail est envoyé au vendeur pour lui notifier la facturation
4) Le système transmet à la banque virtuelle niçoise notre mail, ainsi que le
mail du membre et le montant à payer (calculé)

20
UML Renforcé - eBaieDesAnges

4.7 - Finir vente

• Scénario

1) Lʼhorloge ordonne au système de finir la vente


Pour toutes les annonces en cours
Si la date de début de lʼannonce plus le nombre de jours de lʼannonce est
inférieure ou égale à la date du jour
2) Lʼétat de lʼannonce passe à « Perdue »
Sʼil y a au moins une enchère
3) Lʼétat de lʼannonce passe à « Gagnée »
4) Le système crée une AnnonceGagnee
5) Un mail est envoyé au vendeur pour lui dire que la vente a été
terminée avec succès
6) Un mail est envoyé au meilleur enchérisseur pour lui dire que
lʼannonce est remportée
7) Un mail est envoyé aux enchérisseurs perdants pour leur dire que
lʼannonce est perdue
21
UML Renforcé - eBaieDesAnges

4.8 - Annuler vente enchérisseur

• Scénario

1) Le meilleur enchérisseur de lʼannonce décide dʼannuler lʼachat de lʼannonce


2) Le système cherche lʼannonce correspondante
Si lʼétat de lʼannonce est à « Gagnée » et que le meilleur enchérisseur de lʼannonce
correspond au meilleur enchérisseur voulant annuler son achat
3) Lʼétat de lʼannonce passe à « Annulée »
4) Lʼobjet AnnonceGagnee est supprimé
5) Un mail est envoyé au vendeur pour lui dire que le meilleur enchérisseur
annule son achat
6) Un mail est envoyé au meilleur enchérisseur pour lui confirmer son
annulation

22
UML Renforcé - eBaieDesAnges

4.9 - Annuler vente vendeur

23
UML Renforcé - eBaieDesAnges

• Scénario

1) Le vendeur décide dʼannuler la vente de son annonce


2) Le système recherche lʼannonce correspondante terminée
Si lʼannonce existe et que son état est « Gagnée »
3) Un mail est envoyé au vendeur pour lui confirmer lʼannulation
4) Un mail est envoyé au meilleur enchérisseur pour lui dire que lʼannonce
est annulée
5) Lʼobjet AnnonceGagnee est supprimé
6) Le système recherche lʼannonce correspondante en cours
Si lʼannonce existe
7) Un mail est envoyé à tous les enchérisseurs de cette annonce pour leur
dire que la vente est annulée
8) Un mail est envoyé à tous les suiveurs de cette annonce pour leur dire
que la vente est annulée
9) Un mail est envoyé au vendeur de cette annonce pour lui confirmer
lʼannulation

10) Lʼétat de lʼannonce passe à « Annulée »

24
UML Renforcé - eBaieDesAnges

4.10 - Inscrire

• Scénario

1) Un acheteur/vendeur décide dʼeffectuer le paiement dʼune annonce


2) Le système cherche lʼannonce correspondante terminée
Si lʼétat de lʼannonce est à « Gagnée » et que le meilleur enchérisseur de lʼannonce
correspond à cet acheteur/vendeur
3) Le système transmet à la banque virtuelle niçoise le mail du meilleur
enchérisseur, du vendeur, ainsi que le montant correspondant à la somme de lʼenchère
plus les frais de ports associés
4) Lʼétat de lʼannonce passe à « Payée »
5) Un mail est envoyé au meilleur enchérisseur pour lui confirmer son
paiement
6) Un mail est envoyé au vendeur pour lui confirmer que le paiement a été
effectué

25
UML Renforcé - eBaieDesAnges

4.11 - Confirmer envoi

• Scénario

1) Le vendeur confirme lʼenvoi de lʼobjet correspondant à son annonce


2) Le système cherche lʼannonce correspondante terminée
Si le vendeur correspond à lʼannonce trouvée et que lʼétat de lʼannonce est à
« Payée »
3) Lʼétat de lʼannonce passe à « Envoyée »
4) Un mail est envoyé au vendeur pour lui confirmer lʼenvoi
5) Un mail est envoyé au meilleur enchérisseur de lʼannonce pour lui
confirmer lʼenvoi

26
UML Renforcé - eBaieDesAnges

4.12 - Confirmer réception

• Scénario

1) Le meilleur enchérisseur confirme la réception dʼun objet correspondant à une annonce


2) Le système cherche lʼannonce correspondante terminée
Si le meilleur enchérisseur correspond à lʼannonce trouvée et que lʼétat de
lʼannonce est à « Envoyée »
3) Lʼétat de lʼannonce passe à « Reçue »
4) Un mail est envoyé au meilleur enchérisseur pour lui confirmer la
réception
5) Un mail est envoyé au vendeur de cette annonce pour lui confirmer la
réception

27
UML Renforcé - eBaieDesAnges

4.13 - Commenter vendeur

• Scénario

1) Le meilleur enchérisseur choisit de commenter et de noter une annonce


2) Le système cherche lʼannonce correspondante terminée
Si le meilleur enchérisseur correspond à lʼannonce et que lʼétat de lʼannonce est à
« Reçue »
3) La note du vendeur correspondante à cette annonce est maintenant égale
à la note mise par le meilleur enchérisseur
4) Le commentaire du vendeur correspondant à cette annonce est
maintenant égal au commentaire mis par le meilleur enchérisseur
Si le meilleur enchérisseur de lʼannonce nʼa pas laissé de commentaire et de
note
5) Lʼétat de lʼannonce passe à « Archivée »

Le diagramme de séquence Commenter acheteur est exactement le même à lʼexception


des méthodes.

28
UML Renforcé - eBaieDesAnges

4.14 - Gérer annonce

29
UML Renforcé - eBaieDesAnges

• Scénario

1) Le modérateur gère une annonce et choisit de la supprimer ou non


2) Le système cherche lʼannonce correspondante en cours
Sʼil décide de la supprimer
3) Un mail est envoyé aux suiveurs pour les prévenir que lʼannonce a été
supprimée
4) Un mail est envoyé au vendeur pour le prévenir que lʼannonce a été
supprimée
5) Un mail est envoyé aux enchérisseurs pour les prévenir que lʼannonce a
été supprimée
6) Lʼannonce est supprimée
Sinon
7) Lʼétat de FiltreAnnonce passe à TRUE
8) Le DernierFiltreAnnonce est alors égal à lʼId de lʼannonce.

30
UML Renforcé - eBaieDesAnges

4.15 - Mettre objet en vente

31
UML Renforcé - eBaieDesAnges

• Scénario

1) Un acheteur/vendeur crée une annonce avec un titre, un descriptif, des photos(photos),


une durée, un montant, des mots clés (motsCles), des types de frais de port
(typesFraisDePort)
Pour tous les motsCles
2) Le système recherche si le mot clé existe
Si non,
3) Le système crée un Mot Clé
Pour tous les typesDeFraisDePort
4) Le système crée un FraisDePort
Pour toutes les photos ph
5) Le système crée une Photo
6) Le système crée une annonce
7) Le système cherche si une facture existe déjà pour le mois courant pour ce vendeur
Si oui,
8) Lʼannonce est alors ajoutée à la facture existante
Si non,
9) Une facture est créée et lʼannonce est ajoutée à cette facture
10) Un mail est envoyé au vendeur lui confirmant que son objet est bien en vente

32
UML Renforcé - eBaieDesAnges

4.16 - Prévenir fin de vente

• Scénario

1) Lʼhorloge prévient la fin de vente


Pour toutes les annonces en cours
Si le jour de fin de vente de lʼannonce est égal à aujourdʼhui
2) Un mail est envoyé à tous les enchérisseurs pour les prévenir que la fin de
vente est proche
3) Un mail est envoyé à tous les suiveurs pour les prévenir que la fin de
vente est proche

33
UML Renforcé - eBaieDesAnges

4.17 - Suivre

• Scénario

1) Un acheteur/vendeur décide de suivre une annonce


2) Le système recherche lʼannonce en cours correspondante
Si lʼannonce existe
3) Lʼacheteur/vendeur est ajouté à la liste des suiveurs de lʼannonce
4) Lʼannonce est ajoutée à la liste des annonces suivies de lʼacheteur/
vendeur

Remarque : Les diagrammes de séquence “modifier compte” et “ajouter adresse” ne sont


pas fait car ces diagrammes ne sont que des modifications ou ajouts de variables.

34
UML Renforcé - eBaieDesAnges

5 - Diagrammes dʼétats
5.1 - Diagramme dʼétat Annonce

NB : Diagramme dʼétat décrivant la succession des différents états dʼune annonce.

35
UML Renforcé - eBaieDesAnges

5.2 - Diagramme dʼétat AnnonceEnCours

36
UML Renforcé - eBaieDesAnges

6 - Diagrammes dʼactivité
6.1 - Encherir

37
UML Renforcé - eBaieDesAnges

6.2 - Finir vente

38
UML Renforcé - eBaieDesAnges

7 - Diagramme de composant

39
UML Renforcé - eBaieDesAnges

8 - Diagramme de déploiement

40
UML Renforcé - eBaieDesAnges

7 - Spécifications en OCL
Note : Les pré et post-conditions ne sont pas à double sens.

• context Annonce inv :

montantMiseAPrixAnnonce >= 0
fraisMiseEnVenteAnnonce >= 0
dateDebutAnnonce.getMonth() = getFacture().getMoisFacture()
dureeJoursAnnonce >=0
encheres->size()>0 implies
encheres->forAll(e |
dateDebutAnnonce<=e.getDateEnchere()<=dateDebutAnnonce
+dureeJoursAnnonces)
encheres->size()>0 implies
encheres->forAll(e | e.getMontantEnchere()>=montantMiseAPrixAnnonce)
encheres->size()>0 implies
encheres->forAll(e | e.getEncherisseur()!=getVendeur())

• context Facture inv :

annonces->size()>0 implies
annonces->forAll(a | a.getVendeur() = getVendeur())

• context AnnonceGagnee inv :

evaluationVendeur->notEmpty() implies
1<=evaluationVendeur<=5
evaluationAcheteur->notEmpty() implies
1<=evaluationAcheteur<=5
getAnnonce().getDateDebutAnnonce()+getAnnonce().getDureeJoursAnnonce() <=
today

• context FraisDePort inv :

montantFraisDePort>0

• context Membre inv :

dateDerniereConnexion<=today

• context AcheteurVendeur::annulerVenteEncherisseur(idAnnonce : int)


PRE
chercherAnnonce(idAnnonce).getEtatAnnonce()="Gagnee"
POST
chercherAnnonce(idAnnonce).getEtatAnnonce() = "Annulée"
!chercherAnnonce(idAnnonce).getAnnonceGagnee()-> notEmpty()

41
UML Renforcé - eBaieDesAnges

• context AcheteurVendur::annulerVenteVendeur(idAnnonce : int )


PRE
chercherAnnonce(idAnnonce).getEtatAnnonce()="Gagnee" OR
chercherAnnonce(idAnnonce).getEtatAnnonce()="En cours"
POST
chercherAnnonce(idAnnonce).getEtatAnnonce() = "Annulée"
!chercherAnnonce(idAnnonce).getAnnonceGagnee()-> notEmpty()

• context AcheteurVendeur::confirmerEnvoi(idAnnonce : int)


PRE
chercherAnnonce(idAnnonce).getEtatAnnonce() = "Payée"
POST
chercherAnnonce(idAnnonce).getEtatAnnonce() = "Envoyée"

• context AcheteurVendeur::confirmerReception(idAnnonce : int)


PRE
chercherAnnonce(idAnnonce).getEtatAnnonce() = "Envoyée"
POST
chercherAnnonce(idAnnonce).getEtatAnnonce() = "Reçue"

• context AcheteurVendeur::effectuerPaiement(idAnnonce : int, FraisDePort :


FraisDePort)
PRE
chercherAnnonce(idAnnonce).getEtatAnnonce() = "Gagnée"
POST
chercherAnnonce(idAnnonce).getEtatAnnonce() = "Payée"

• context AcheteurVendeur::suivre(idAnnonce : int)


PRE
getAnnoncesSuivies->forAll(a | a != chercherAnnonce(idAnnonce))
POST
getAnnoncesSuivies->size()@pre+1 = getAnnoncesSuivies()->size()
getAnnoncesSuivies->exists(a | a = chercherAnnonceEnCours(idAnnonce))

• context Moderateur::gereAnnonce(idAnnonce : int, supprimer : boolean)


PRE
dernierIdFiltre != idAnnonce
chercherAnnonceEnCours(idAnnonce).getFiltreAnnonce() = FALSE
POST
dernierIdFiltre = idAnnonce
chercherAnnonceEnCours(idAnnonce)->notEmpty() implies
chercherAnnonceEnCours(idAnnonce).getFiltreAnnonce() = TRUE

• context Enchere::Enchere(idAnnonce : int, montant : float)


PRE
montant >=0
chercherAnnonceEnCours(idAnnonce)->notEmpty()
getAnnonce().encheres->size()>=1 implies
montant>=getAnnonce().calculerMeilleurEnchere().getMontantEnchere()
POST
chercherAnnonceEnCours(idAnnonce).getEncheres()-
>size()=chercherAnnonceEnCours(idAnnonce).getEncheres()->size()@pre+1
42
UML Renforcé - eBaieDesAnges

getAnnonce().getMail1ereEnchere()@pre=FALSE AND getAnnonce().encheres-


>size()=1 implies
getAnnonce().getMail1ereEnchere()=TRUE

43

Vous aimerez peut-être aussi