Mini Projet UML

Embed Size (px)

Citation preview

KABA FANTA Ibrahima ROUVIERE Aude MERCIER Julien FOATA Adrian PHILIPPON-DAUDEL Mathias

Mini Projet UML

Bibliothque universitaire

Anne universitaire 2007 / 2008 Second semestre

SOMMAIREI Prsentation1.1 Prsentation du sujet 1.2 Prsentation globale du systme

II Cas d'utilisation2.1 Adhrent 2.2 Emprunt 2.3 Relance 2.4 Retour d'un emprunt 2.5 Commande d'un livre 2.6 Rception d'une commande

III Diagrammes de classe3.1 Prsentation des classes 3.2 Vue globale du systme 3.3 Les classes

IV Diagrammes de squence4.1 Emprunt 4.2 Relance 4.3 Rendre 4.4 Commande 4.5 Rception commande

V Diagrammes de machine d'tat5.1 Etat emprunt 5.2 Etat commande 5.3 Etat exemplaire

VI Spcifications et invariants OCL6.1 Invariants 6.2 Spcifications

~2~

I Prsentation1.1 Prsentation du sujetCe mini projet a pour objectif de modliser le systme d'information d'une bibliothque universitaire. Il comprend la modlisation des emprunts de livres effectus par les tudiants et les enseignants ainsi que les achats de livres pour la bibliothque. En revanche, le systme ne grera pas la rservation d'un document (livres et revues).

1.2 Prsentation globale du systmeL'emprunt d'un livre (et sa restitution) ainsi que l'achat d'un livre sont les deux scnarios principaux grs par le systme. Lorsqu'un tudiant (ou un enseignant) veut emprunter un livre, le systme vrifie en premier lieu que la personne en a le droit : les tudiants peuvent avoir des pnalits (en cas de retard lors du retour de l'emprunt), les professeurs n'ont, quant a eux, aucunes pnalits applicables. Dans un second temps, le systme vrifie le nombre d'emprunts en cours de la personne. Ce nombre ne peut en aucun cas excder 3. Si les conditions d'emprunt sont respectes, l'exemplaire du livre emprunt ainsi que la personne l'empruntant sont enregistrs dans le systme. La dure maximale d'emprunt est fixe 15 jours pour un tudiant et 30 jours pour un enseignant. Si, une fois ce dlai atteint, le livre n'est pas encore rendu, le systme relance automatiquement la personne concerne (par mail pour les enseignants et par courrier pour les tudiants). A noter qu'une seule relance est effectue. Si un mois aprs la relance le livre n'a toujours pas t rendu, il est considr comme perdu. Lors de la restitution du livre, le systme vrifie si ce dernier n'a pas t rendu en retard, et, le cas chant, calcule la pnalit applicable la personne concerne (seuls les tudiants peuvent tre pnaliss). La pnalit est gale au nombre de jours de retard par rapport la date de retour d'emprunt prvue (date d'emprunt + dure maximale d'emprunt).

~3~

L'achat d'un livre requiert deux acteurs : les enseignants, qui, via une interface web, auront accs aux diffrents diteurs et livres prsents dans le systme d'information de la bibliothque et pourront ainsi commander des livres. Une fois leur commande effectue, la bibliothcaire la consulte et doit soit la valider, soit la refuser. Lorsque la commande est refuse, elle est automatiquement annule. Si la commande est valide, la bibliothcaire l'envoie l'diteur. Lors de la rception de la commande, chaque exemplaire des livres commands est ajout au systme. D'autres fonctionnalits sont galement disponibles telles que la recherche d'un livre, etc...

II Cas d'utilisation2.1 L'adhrent

Un adhrent est soit un tudiant soit un enseignant. Le choix de l'acteur (adhrent, tudiant ou enseignant) dans les prochains cas d'utilisation dpendra du ou des acteurs concerns.

~4~

2.2 L'emprunt

C'est la bibliothcaire qui s'occupe d'enregistrer l'emprunt. Avant de valider ou refuser un emprunt, le systme vrifie les pnalits et le nombre d'emprunts de la personne concerne.

~5~

2.3 La relance

La relance est automatique, elle est donc dclenche par l'horloge. Lorsque la date de retour prvue plus 2 jours est atteinte, le systme envoie un message de relance l'emprunteur (par mail pour un enseignant ou par courrier pour un tudiant).

~6~

2.4 Le retour d'un emprunt

Tout comme pour l'emprunt, c'est la bibliothcaire qui enregistre le retour d'un emprunt. En fonction du retard constat, une pnalit est calcule s'il s'agit d'un tudiant. Si cet tudiant a dj une pnalit, elles s'accumulent. De plus, les diffrents emprunts d'un adhrent seront archivs.

~7~

2.5 La commande d'un livre

La commande est effectue par un enseignant, qui, aprs avoir recherch le livre qui l'intresse, l'ajoute a sa commande. La commande est cre lors de l'ajout du premier livre command. Une fois la commande effectue, la bibliothcaire doit valider la commande ou la refuser. On suppose alors que les livres que les diteurs nous proposent sont enregistrs dans notre systme la rception de leurs catalogues de livres.

~8~

2.6 La rception de la commande

Lors de la rception de la commande, autant d'exemplaires de livres sont cres que la quantit de livres commands.

~9~

III Diagrammes de classe3.1 Prsentation des classesLa classe 'Adhrent' : elle regroupe toutes les informations d'un adhrent la bibliothque. Cet adhrent est soit un enseignant, soit un tudiant. La classe 'Enseignant' : l'enseignant tant un adhrent, cette classe hrite de 'Adhrent', tout en ajoutant les informations propres un enseignant. La classe 'Etudiant' : tout comme la classe 'Enseignant', elle hrite de 'Adhrent', avec, en plus, des informations spcifiques l'tudiant. La classe 'Livre' : Elle est hrite de 'Ouvrage'. On y retrouve galement le prix du livre. La classe 'Exemplaire' : Hrite de 'Document', la classe 'Exemplaire' a une cte, une disponibilit et un tat ('Comme neuf', 'Bon etat', 'Partiellement abime', 'Tres abime', 'En reparation'). La classe 'Document' : Classe mre de 'Exemplaire' et 'No Revue', elle ne contient que la cote. La classe 'NumeroRevue' : Elle correspond un numro de revue, avec galement son sommaire. La classe 'Ouvrage' : Classe mre de 'Revue' et 'Livre', un ouvrage a un numro et un titre. La classe 'Emprunt' : C'est une classe d'association entre 'Adherent' et 'Exemplaire'. Un emprunt correspond un exemplaire de livre et un adhrent. Les cardinalits de cette association permettent de garder l'historique de tous les emprunts d'un adhrent. La classe 'Relance' : Permet d'effectuer une relance sur un emprunt rendu en retard. C'est la classe mre de 'Relance Mail' et 'Relance Courrier', deux types de relance en fonction de l'adhrent concern. La classe 'Commande' : Un professeur peut effectuer une commande, cette classe contient donc un numro de commande et une date. La classe 'LigneCommande' : Une commande est constitue de lignes de commande. Une ligne de commande correspond un livre et une quantit, le tout command par un enseignant, c'est pour cela que cette classe est une classe d'association entre 'Enseignant' et 'Livre'. La classe 'Editeur' : Elle regroupe toutes les informations utiles sur un diteur. Un diteur peut proposer un plusieurs livres, mais un livre n'est dit que par un diteur.

3.2 Vue globale du systme

~ 10 ~

3.3 Les classes

~ 11 ~

3.3 Les classes3.3.1 La classe 'Adherent' 3.3.1.1 Attributs nom : Nom de l'adhrent prenom : Prnom de l'adhrent dureeMaxEmprunt: Dure maximale d'un emprunt 3.3.1.2 Mthodes Adherent (N: String; P : String): Constructeur redfini de la classe CaculPenalite (Nbjours : Integer): Calcule la pnalit d'un adhrent Emprunter (cote : Integer) : Permet un adhrent d'emprunter un livre Rendre (cote : Integer) : Permet un adhrent de rendre un livre emprunt Rechercher (doc : Ouvrage) : Permet un adhrent de rechercher un ouvrage (livre ou revue) 3.3.2 La classe 'Enseignant' 3.3.2.1 Attributs departement : Dpartement dans lequel il enseigne email: Adresse lectronique de l'enseignant 3.3.2.2 Mthodes Enseignant (Dep: String; email: String): Constructeur redfini de la classe Commander (li : Livre, quantite : Integer) : Permet de commander un livre avec une certaine quantit d'exemplaires Consulter () : Permet de consulter les livres 3.3.3 La classe 'Etudiant' 3.3.3.1 Attributs adresse : Adresse de l'etudiant codePostal: Code postal de la ville dans laquelle l'tudiant se trouve ville : Ville de l'tudiant dateFinPenalite: Date laquelle un tudiant ne sera plus pnalis 3.3.3.2 Mthodes Etudiant (Adr: String; CP : Integer; V: String): Constructeur redfini la classe

~ 12 ~

3.3.4 La classe 'Livre' 3.3.4.1 Attributs prixUnitaire : Prix d'achat du livre 3.3.4.2 Mthodes Livre( Titre : String, prix : Integer) : Constructeur redfini de la classe GetLivre ():Livre : Renvoie toutes les informations du livre en cours SetPrixUnitaire(prix : Double) : Modifie le prix du livre 3.3.5 La classe 'Exemplaire' 3.3.5.1 Attributs disponible: Donne la disponibilit du livre ( disponible ou pas ) etatExemplaire TresAbime) 3.3.5.2 Mthodes Exemplaire() : Constructeur de la classe. Detruire() : Supprime l'exemplaire courant de la bibliothque SetEtatExemplaire(etat : String) : Modifie l'tat d'exemplaire Reparer() : Change l'tat de l'exemplaire 'En rparation' GetDisponible():Boolean : Retourne la disponibilit de l'exemplaire SetDisponible(dispo : Boolean) : Modifie la disponibilit 3.3.6 La classe 'Document' 3.3.6.1 Attributs cote: Identifie de faon unique un document 3.3.6.2 Mthodes Document() : Constructeur de la classe 3.3.7 La classe 'NumeroRevue' 3.3.7.1 Attributs numeroRevue : Identifie une revue dans la bibliothque sommaire : Sommaire du contenu de la revue 3.3.7.2 Mthodes NumeroRevue() : Constructeur de la classe. : Etat de l'exemplaire (CommeNeuf, BonEtat, Abime,

3.3.8 La classe 'Ouvrage'

~ 13 ~

3.3.8.1 Attributs titre: Titre de l'ouvrage (Livre ou Revue) 3.3.8.2 Mthodes Ouvrage() : Constructeur de la classe 3.3.9 La classe 'Emprunt' 3.3.9.1 Attributs dateEmprunt : Date laquelle l'emprunt a eu lieu dateRetourPrevu : Date calcule du retour prvu du livre dateEffective : Date de retour relle de l'emprunt etatEmprunt : Etat de l'emprunt (EnCours, Relance ou Perdu) 3.3.9.2 Mthodes Emprunt(ex : Exemplaire, adh : Adherent) : Constructeur redfini de la classe Relancer () : Permet de relancer un adhrent GetEtatEmprunt():String : Retourne l'tat d'un emprunt. SetEtatEmprunt (etat : String) : Permet de modifier l'tat d'un emprunt. 3.3.10 La classe 'Relance' 3.3.10.1 Attributs dateRelance : C'est la date laquelle un adhrent est relanc 3.3.10.2 Mthodes Relance() : Constructeur de la classe 3.3.11 La classe 'Commande' 3.3.11.1 Attributs etatCommande : Renseigne sur la situation de la commande(EnCours, Proposee, Validee ou Recue) dateCommande : Date laquelle la commande a t passe 3.3.11.2 Mthodes Commande() : Constructeur de la classe Valider (): Elle permet de valider une commande AjouterProduit ( li: Livre; quantite: Integer) : Permet d'ajouter un livre la commande Refuser() : Permet de refuser une commande Recevoir(): Permet de mettre jour le systme suite la rception d'une commande Proposer() : Permet un enseignant de proposer une commande

~ 14 ~

3.3.12 La classe 'LigneCommande' 3.3.12.1 Attributs nbExemplaires: Nombre de livres que l'on veut commander 3.3.12.2 Mthodes LigneCommande() : Constructeur de la classe GetLigneCommande():LigneCommande : Retourne la ligne courante 3.3.13 La classe 'Editeur' 3.3.13.1 Attributs nomEditeur : nom de l'diteur adresse : adresse de l'diteur ville : Ville de l'diteur CP : Code Postal de l'diteur 3.3.13.2 Mthodes Editeur(nom : String) : Constructeur redfini de la classe Editeur(nom : String, adr : String, cp : Integer, ville : String) : Constructeur redfini de la classe 3.3.1.4 La classe 'Auteur' 3.3.14.1 Attributs nom: Nom de l'auteur 3.3.14.2 Mthodes Auteur(nom : String) : Constructeur redfini de la classe

~ 15 ~

IV Diagrammes de squence4.1 EmpruntCe diagramme de squence reprsente l'enregistrement d'un emprunt de livre dans le systeme. La bibliothcaire, tant l'acteur qui interagi avec le systeme, enregistre l'emprunt qu'un adhrent effectue. Le systeme cr alors l'objet emprunt et modifie la disponibilit de l'exemplaire emprunt.

4.2 RelanceCe diagramme de squence reprsente l'excution par le systme d'une relance lorsqu'un emprunt n'a pas t rendu deux jours aprs la date limite d'emprunt. C'est donc l'horloge qui dclenche l'envoi d'un message pour lancer la relance, le systme parcourt les classes afin de dterminer le type d'adhrent et crera ainsi l'objet relance adquat de l'emprunteur.

~ 16 ~

4.3 Rendre

~ 17 ~

Ce diagramme de squence reprsente l'enregistrement d'un retour d'exemplaire emprunt. La bibliothcaire, tant l'acteur qui interagi avec le systeme, enregistre le retour de l'exemplaire. Le systeme vrifie si l'adhrent rendu l'exemplaire avec du retard et calcul la pnalit cela doit tre fait. Le systeme modifie ensuite la disponibilit de l'exemplaire, enregistre la date de retour relle et modifie l'tat de l'exemplaire. Puis si besoin est, si l'tat de l'exemplaire est trs abime il propose de l'envoy en rparation ou de le dtruire.

~ 18 ~

4.4 CommandeCe diagramme de squence reprsente l'enregistrement d'une commande lance par un enseignant. Lenseignant cre ca commande et tant qu'il ne propose pas ca commande la bibliothcaire il peut y rajouter des livres. Une foi ca commande propos elle est soit valide par la bibliothcaire, et passe l'tat 'validee', soit refus et passe l'tat 'refuse'.

~ 19 ~

4.5 Rception commandeCe diagramme de squence dcrit l'enregistrement de la rception d'une commande. La bibliothcaire reoit la commande et le systme rcupre les quantits de livres command pour crer chaque livre le nombre correspondant d'exemplaire.

~ 20 ~

V Diagrammes de machine d'tat5.1 Etat EmpruntL'emprunt a diffrents tats comme dcrit ci-dessous. L'tat 'Rendu' est obligatoire dans notre systme pour calculer la pnalit ainsi que pour garder un historique des exemplaires emprunts par un adhrent.

~ 21 ~

5.2 Etat CommandeLes diffrents tats de la commande sont prsents ci-aprs. L'tat 'annule' n'apparait pas car nous avons suppos qu'une commande annule est automatiquement supprime du systme d'information. L'historique des commandes ne comprend donc que des commandes qui ont t valid par la bibliothcaire.

5.3 Etat ExemplaireDiagramme de machine d'tat mettant en vidence les diffrents tats d'un exemplaire : sa disponibilit ainsi que son tat de dtrioration. On prend pour hypothse qu'un exemplaire revient de rparation l'tat 'Comme neuf'.

~ 22 ~

VI Spcifications et invariants OCL~ 23 ~

4.1. Invariants:4.1.1 Classe Emprunt inv : dateRetourPrevu > DateEmprunt 4.1.2 Classe Etudiant inv: inherit Adherent redefine dureeMaxEmprunt dureeMaxEmprunt = 15 4.1.3 Classe Enseignant inv: inherit Adherent redefine dureeMaxEmprunt dureeMaxEmprunt = 30 4.1.4 Classe Relance inv: dateRelance = monEmprunt.dateRetourPrevu +2 4.1.5 Classe LigneCommande inv: nbExemplaire > 0 4.1.6 Classe Commande inv: Valider() implies mesLigneCommandes -> notEmpty() 4.1.5 Classe Livre inv: PrixUnitaire > 0

4.2.Spcifications4.2.1 Context Adherent::Emprunter(cote : Integer): pre: if( this = Etudiant) then dateFinPenalite < DateJour endif select(EtatExemplaire = 'EnCours').size() dateRetourPrevu + 2 etatEmprunt = 'EnCours' post: etatEmprunt = 'Relance' 4.2.3 Context Adherent::Rendre(cote : Integer): pre: mesEmprunts -> count(select(mesEmprunts.getEtat() ='EnCours') and select(mesExemplaires.cote = cote)) = 1 post :if (select(mesExemplaires.cote = cote).etatExemplaire = 'Tres Abime') then select(mesExemplaires.cote = cote).disponible = false else select(mesExemplaires.cote = cote).disponible = true end if 4.2.4 Context etudiant::CalculPenalite(nb : integer) : pre: nb = dateJour - monEmprunt.dateRetourPrevu this = Etudiant post : if (dateFinPenalite@pre > DateJour) dateFinPenalite = dateFinPenalite@pre + nbjour else dateFinPenalite = dateJour + nbjour endif 4.2.5 Context Exemplaire::Reparer(): pre : etatExemplaire ='En Reparation' disponible = false post : etatExemplaire = 'Comme Neuf' disponible = true

4.2.6 Context Exemplaire::Detruire():

~ 25 ~

pre :

etatExemplaire ='Tres Abime' ou etatExemplaire ='Perdu'

post : mesExemplaires.count() = mesExemplaires.count()@pre - 1 4.2.7 Context Enseignent::Commander(li : Livre, quantite : entier): pre : quantite > 0 post : etatCommande = 'Propose' 4.2.8 Context Commande::Recevoir(): pre : etatCommande= 'Valide' post : mesLigneCommandes -> forall(Ligne | Ligne.mesLigneCommandes.mesExemplaires.size()= Ligne.mesLIgneCommandes.mesExemplaire.size()@pre + nbExemplaires) etatCommande = 'Reu' 4.2.9 Context Commande::Valider(): pre : etatCommande='Propose' post : etatCommande='Valide' 4.2.10 Context Commande::Refuser(): pre : etatCommande='Propose' post : etatCommande='Refuse'

~ 26 ~