Exo Complet

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 11

BE1-2 : Phase d’analyse

Gestion des prêts dans une médiathèque


Enseignants IO21

9 janvier 2007

1 Sujet

1.1 But
Analyse et conception d’un système de gestion du fonds de CD audios, de K7 vidéo et de livres
d’une médiathèque, et du prêt de ce fond à ses clients.

1.2 Expression du problème


– La médiathèque contient un certain nombre de documents disponibles à la consultation ou à
l’emprunt ; les personnes désirant emprunter des ouvrages pour une durée et à un tarif donnés
doivent s’inscrire en tant que client.
– L’inscription des clients consiste à remplir une fiche sur laquelle sont notées les informa-
tions suivantes : nom et prénom du client ainsi que son adresse ; ils peuvent choisir de payer
à chaque emprunt effectué (type « à tarif normal » ou « à tarif réduit ») ou de régler une
cotisation annuelle (type « abonné »). En plus du tarif, ce type conditionne les critères d’em-
prunt suivants : le nombre de documents empruntables et la durée de prêt (voir ci-dessous).
Dans le cas « tarif réduit », un justificatif est demandé à l’inscription, puis à chaque date
anniversaire ; les cas à prévoir sont : étudiant/scolaire, carte vermeil et carte « à caractère
social ».
– Les documents disponibles sont des CD audios, des K7 vidéo ou des livres. Chaque docu-
ment est repéré par un code unique et une localisation (salle/rayon) dans la médiathèque.
Certains documents ne peuvent pas être empruntés, mais uniquement consultés sur place.
Les informations communes aux documents sont les suivantes : le titre, l’auteur (écrivain,
groupe ou metteur en scène) et l’année de sortie. Enfin, afin de disposer de statistiques d’uti-
lisation, on souhaite connaître le nombre d’emprunts effectués pour les différents types et
genres de documents.
– Les CD ont un genre musical (« classique », « variétés françaises », « variétés internatio-
nales », « compilation »...) et une classification (par exemple, « opéra » pour le genre «
classique », « hardcore » pour le genre « variétés internationales » ou « rock » pour le
genre « compilation »).

1
– Les K7 ont un genre de vidéo (« documentaire », « comédie »...), une durée d’émission et
une mention légale de diffusion (restrictions d’usage) ; cette mention devra être disponible
lors de l’emprunt de la K7 pour permettre un éventuel contrôle.
– Les livres ont un genre (« roman », « policier »...) et un nombre de pages.
Les genres précisés sont libres ; ils sont donnés aux clients à titre indicatif pour aider au choix
lors d’un emprunt.
– Chaque sortie de document entraîne la constitution d’une fiche d’emprunt. Sur cette fiche
sont notés, le client emprunteur, la date de début du prêt, le document emprunté et la date
limite de restitution. Les durées de prêt dépendent du type de document et de la catégorie du
client (voir les règles ci-dessous).
Le système de gestion doit prévoir toute opération d’ajout et de suppression de clients et de do-
cuments. Les informations les concernant ne sont pas construites par le système (par exemple,
la localisation des documents dans les locaux), mais supposées fournies lors de l’invocation de
ces opérations. D’autre part, les formats de la plupart des informations sont libres (chaînes de
caractères) ; le système devra toutefois veiller à la cohérence des informations stockées (im-
possibilité d’avoir deux clients ou deux documents avec le même nom, emprunter deux fois le
même document, etc.).

1.3 Règles de prêt


L’emprunt d’un document par un client obéit à certaines règles :
– Un client ne peut pas emprunter plus d’un certain nombre de documents fixé par son type
(par exemple, 2 pour le type « à tarif réduit », 5 pour le type « à tarif normal » et 10 pour le
type « abonné »). Dès que ce nombre maximal est atteint pour un client donné, tout nouveau
prêt devra être impossible.
– Tout client qui n’a pas restitué un document avant sa date limite de restitution ne pourra plus
faire de nouvel emprunt tant qu’il n’aura pas régularisé sa situation, ceci même si le nombre
maximal d’emprunts n’est pas atteint. Pour ce faire, à chaque demande d’emprunt, on vérifie
s’il est à jour dans ses restitutions ; si ce n’est pas le cas, l’emprunt n’est pas autorisé et le
client est marqué de telle manière qu’il ne puisse plus emprunter de nouveaux documents. De
plus, l’ensemble des fiches emprunt est parcouru chaque jour afin de repérer s’il existe des
documents pour lesquels la date limite de restitution est dépassée ; pour chacune de ces fiches
trouvées, le client concerné est marqué comme précédemment et la médiathèque envoie une
lettre de rappel.
– Le tarif des emprunts dépend du document et du client. Le tarif du document est fixé par
son type (par exemple, 0, 5¤ pour un livre, 1¤ pour un CD audio et 1, 5¤ pour une K7
vidéo). La règle pour les clients « à tarif normal » est de payer le montant fixé pour chaque
document emprunté (indiqué auparavant). Le tarif appliqué aux clients « à tarif réduit » est
la moitié du « tarif normal ». Les « abonnés » réglant une cotisation annuelle empruntent les
documents gratuitement.
– La durée des emprunts dépend du document et du client. Chaque type de document est em-
pruntable pour une durée dite nominale (par exemple, 2 semaines pour une K7 vidéo, 4
semaines pour un CD audio et 6 semaines pour un livre). Ensuite, la durée de prêt est mo-
difiée selon le type de client (par exemple, aucun changement — la durée nominale — pour
un client à tarif normal, la moitié de cette durée pour un client à tarif réduit et le double de

2
cette durée pour un abonné).

2 Questions du BE1-2 :
À partir de l’analyse du texte :
– rechercher les acteurs ;
– rechercher les fonctionnalités du système accessibles aux acteurs ;
– faire le diagramme de cas d’utilisation ;
– rechercher les classes de ce problème ;
– construire un diagramme de classes de ce problème ;
– décrire les premières opérations de chaque classe ; noter les opérations internes et celles
nécessitant la collaboration avec d’autres classes ;
– décrire les premiers attributs des classes : type, valeur par défaut...
– vérifier que le système «fonctionne» : en partant des cas d’utilisation, vérifier que la naviga-
tion entre les classes (associations et opérations) permet de réaliser ce qui est demandé.

3
3 Méthodologie

3.1 Phase de lecture et d’analyse de texte


La première étape consiste à bien comprendre le système à étudier. Dans le cadre de l’exer-
cice, cela consiste à lire attentivement l’énoncé. Cette lecture doit permettre de délimiter le
système à étudier : la méthode générale consiste à retrouver les acteurs qui interagissent avec
lui. Il est très important de fixer des frontières au problème.
Ensuite, il faut rechercher les fonctionnalités du système par l’utilisation des « cas d’utilisa-
tion ». Dans le cadre de ce cours, il s’agira de rechercher les principales fonctions attendues du
système.
La seconde étape consiste à analyser le texte du BE, afin d’y rechercher les différentes classes
métier1 et leurs associations.

Conseil 1 Il est préférable de sur-spécifier le modèle d’analyse avec beaucoup de classes mé-
tier ; il sera plus facile de les regrouper plus tard que de trouver celles que l’on aura ignorées.

Il faut rechercher les noms qui correspondront le plus souvent aux classes métier, et les verbes
qui les relient qui correspondront aux associations ; attention toutefois à certains verbes (comme
le verbe être) qui peuvent correspondre à des attributs ou à des opérations. La méthode ha-
bituelle consiste à établir des listes exhaustives puis à les trier/sélectionner (suppression des
classes métier trop vagues ou non pertinentes, éliminer les noms ou verbes inutiles (bruits in-
troduits lors de la rédaction du texte qui ne sont pas significatifs du problème), faire la chasse
aux synonymes...) afin de ne garder que celles utiles à la résolution.

Conseil 2 Une autre manière de trouver ces classes métier sont les « cas d’utilisation » : les
classes métier seront les noms et les verbes utilisés dans les descriptions des actions effectuées
par les acteurs.

Conseil 3 Si un nom est associé à une valeur (nombre, texte...) dans le monde réel, alors il
s’agit certainement d’un attribut. Dans le doute, en faire une classe métier.

Remarquez que, partant d’un énoncé, cette méthode d’analyse n’est pas une fin en soi : les
limites sont celles apportées par un texte ; cela nécessite un dialogue avec le « client ». Enfin,
il est important de bien choisir le nom des classes métier et des associations : on retrouve en
général des noms pour les classes métier et des verbes pour les associations.

3.2 Phase de construction du diagramme de classes


Le diagramme de classes est un réseau statique de classes et d’associations (l’analogie avec le
réseau routier peut aider : il s’agit de décrire les différentes voies de circulation, pas comment on
1
Certains préfèrent utiliser le terme de concept ; il faut faire attention à ne pas mélanger les notions de classe
métier/concept utilisées dans la phase d’analyse et les notions de classe utilisées dans la phase de conception.

4
voyage). En partant des classes et des associations trouvées précédemment, il faut construire un
schéma (représentation graphique) dans lequel les classes seront représentées par des rectangles
et les associations par des traits pleins. Il faut ajouter à ce schéma des informations concernant
les classes et les associations.
Nous vous conseillons de :
– construire un premier diagramme de classes à partir des noms obtenus dans la phase précé-
dente ;
– par étapes successives, enrichir ce diagramme par les associations à l’aide des verbes obte-
nus ;
– affiner le diagramme en éliminant les associations redondantes 2 en simplifiant le schéma dès
lors qu’il respecte les spécifications de l’énoncé ;
– dernier conseil : ne chercher les généralisations et spécialisations qu’à la fin, lorsque les
classes sont déjà bien établies.
La notation UML doit être respectée impérativement. Elle conditionne la compréhension du
schéma par l’équipe de développement (ou du correcteur accessoirement).
Il n’y a pas, dans cette phase, d’information à ajouter concernant les classes (classe abstraite,
visibilité, etc.).
Concernant les associations, il faut rechercher les relations simples, les relations d’agégation
et de composition et les relations de spécialisation/généralisation.
Ensuite, il faut trouver la multiplicité (cardinalité) de chaque relation qu’il faut porter sur le
schéma. La notation est la suivante : min..max où :
– max peut être omis, auquel cas la multiplicité est exactement min,
– max peut prendre la valeur * qui signifie une limite non bornée (par exemple 2..* signifie 2
ou plus)
– la notation 0..* peut être abrégée en *
– la multiplicité 1 est généralement omise pour des raisons de lisibilité.

3.3 Phase de recherche des attributs et opérations


Enfin, il faut trouver les attributs et les opérations des classes. À ce niveau, quelques retours
en arrière seront possibles à cause d’oublis ou de mauvaises compréhensions du système. Il
s’agit des attributs ou opérations que les spécifications du problème nécessitent : ils sont liés au
modèle statique. Dans la partie conception (lors du BE5), d’autres attributs/opérations seront
trouvés, comme par exemple les classes dites « techniques » ou classes d’association.

Conseil 4 Un critère de validité d’un attribut est qu’il doit être simple (type/valeur) : par
exemple, date, nombre, texte... Dans le cas contraire, en faire une classe métier. D’autre part,
les classes métiers doivent être reliées avec des associations et non avec des attributs.

Vous devez réfléchir sur le choix de la classe où placer les attributs. En cas de doute, il faut
éventuellement analyser de nouveau la relation. Quelquefois, la solution consiste à ajouter une
classe d’association (ce cas peut se présenter dans cet exercice avec la classe Emprunt). Il ne
2
Le cas des associations ou attributs dérivés n’est pas pris en compte à ce niveau de l’analyse ; ils seront
précédés par le caractère « / » dans le diagramme de classes.

5
faut pas évoquer les problèmes de visibilité publique ou privée pour les attributs : cela sera vu
lors de la conception/implémentation.
Pensez à qualifier les atributs de classes (par opposition aux attributs d’instance). Il y en a un
certain nombre qui ne sont pas forcément évident à détecter avant d’aborder la phase dynamique
de l’analyse.

Conseil 5 Pour placer une opération dans une classe :


– Rechercher la classe responsable : c’est celle qui détient toutes les informations nécessaires
pour effectuer l’opération ;
– En cas de création, cela devrait être la classe conteneur (composition/agrégation) ou celle
qui détient les valeurs d’initialisation ;

Concernant les opérations, le niveau de détail devra rester faible afin de ne pas empiéter sur la
phase de conception.

3.4 Phase de validation


À partir du diagramme obtenu, vous devez reprendre l’énoncé et vérifier que toutes les spéci-
fications demandées y sont présentes ; dans le cas contraire, il faudra reprendre le schéma et le
corriger. Dans certains cas, cela pourra remettre énormément de choses en question.
Vous devez contrôler également si des fonctionnalités nouvelles ont été ajoutées par rapport
à l’énoncé. Demandez à un enseignant de vous aider à effectuer ce contrôle et à valider les
nouvelles spécifications. Ces nouveautés doivent rester mineures.

6
4 Glossaire objet
Acteur Abstraction d’une entité extérieure au système qui interagit avec lui. Il participe à un
« use case » pour accomplir une tâche dans un but général.
Association (figure 1)
Relation durable entre deux (ou plus) classes qui décrit les connexions entre leurs ins-
tances. Elle est caractérisée par une multiplicité (cardinalité).

fournisseur factures
Fournisseur Facture
1 établir 0..*
nom: String monTTC: Double
monMoy: Double tauxTVA: Double

F IG . 1 – Association UML

UML : Représentée par un trait plein, éventuellement surchargé du nom de l’association


(souvent un verbe à l’infinitif établir). On peut aussi ajouter, en cas d’ambiguïté, un
triangle à côté du nom pour indiquer le sens de lecture. On peut ensuite dans la phase
de conception associer deux noms de rôle à cette association. Les rôles deviendront deux
attributs. Dans l’exemple, la classe Fournisseur aura un attribut factures, et la classe
Facture aura un attribut fournisseur pour traduire l’association.
Attribut (figure 2)
Information portée par un objet, monovaluée en phase d’analyse et éventuellement mul-
tivaluée en phase de conception. Appelé aussi variable d’instance ou champ. Précédé du
signe +, sa visibilité sera publique (toute classe pourra accéder à l’attribut), précédé du
signe -, sa visibilité sera privée (seule la classe elle-même pourra accéder à l’attribut)
et précédé du signe #, sa visibilité sera protégée (la classe et ses descendantes pourront
accéder à l’attribut).

Client
nom: String
prénom: String

F IG . 2 – Attribut d’objet

UML : L’identificateur doit commencer par une lettre minuscule. Les attributs sont pla-
cés avec les opérations dans un rectangle accolé au rectangle de la classe à laquelle ils
appartiennent.

7
Attribut de classe (figure 3)
Attribut commun à l’ensemble des instances de la classe.

Client
nom : String
monMoy: Double

F IG . 3 – Attribut de classe

UML : L’identificateur doit commencer par une lettre minuscule et être souligné.
Classe (figure 4)
Ensemble d’objets ayant les mêmes attributs, les mêmes opérations, les mêmes méthodes,
les mêmes relations et la même sémantique. Une classe représente un concept à l’intérieur
du système à modéliser. Une classe possède un nom, une liste d’opérations et une liste
d’attributs. En définissant les propriétés de tous les objets qui lui sont associés, la classe
est la réalisation d’un type.

Client

F IG . 4 – Classe

UML : La classe est représentée par un rectangle avec 1, 2 ou 3 compartiments (un pour
le nom de la classe, un deuxième pour les attributs et le dernier pour les opérations) ; le
nom de la classe doit commencer par une lettre majuscule.
Composition ou agrégation (figure 5)
L’agrégation est une relation entre classes de type agrégat/agrégé. Une instance (l’agré-
gat) est composée de un ou plusieurs objets (agrégé). La composition est une relation plus
restrictive que l’agrégation : elle lie les durées de vie des objets ; le composé a la respon-
sabilité totale de ses composants et un composant ne peut pas exister sans son composé.
L’agrégation est quelquefois appelée « composition par référence » et la composition
(agrégation forte) est appelée « composition par valeur. »

1 contenir 1
Véhicule Moteur

F IG . 5 – Agrégation

UML : La relation est représentée par un trait plein avec un losange placé du côté de
l’agrégé (avec un losange plein en cas de composition).

8
État (figure 6)
Chaque objet ayant un comportement peut se trouver à un moment donné dans une situa-
tion donnée satisfaisant certaines conditions ou réalisant certaines actions en réaction à
des évènements ; cette situation est appelée état. Il possède un nom et se caractérise par
une certaine stabilité et/ou une certaine durée.

En panne
Evnt[garde]/ Action 1 entrée / Action 2 Evnt[garde]/Action 5
faire / Action 3
sortie / Action 4

état initial
état terminal

F IG . 6 – Etat d’un objet

UML : L’état d’un objet d’une classe se représente par un rectangle aux bords arrondis
ayant un ou deux compartiments : le premier contient le nom de l’état et le deuxième
contient les transitions internes.
Généralisation/Spécialisation (figure 7)
Relation entre classes de type est-un ou est-une-sorte-de. La généralisation permet de
factoriser des attributs ou des opérations, et donc de simplifier le diagramme de classes.
La spécialisation entraîne une partition d’une classe en sous-classes disjointes. La classe
la plus générale (la moins spécialisée) est appelée « superclasse » ou « classe mère » ; la
classe la moins générale (la plus spécialisée) est appelée « sous-classe », « classe fille »
ou « classe dérivée ».

Figure Polygone

F IG . 7 – Généralisation

UML : La relation est représentée par une flèche dirigée de la classe particulière vers la
classe générale ; cette flèche doit avoir une tête dont le triangle est non plein.
Instance (figure 8)
Objet en tant qu’élément d’une classe. L’instanciation est le mécanisme de création d’ob-
jets. Une instance possède son propre nom et sa propre valeur.
UML : Une instance est représentée par un rectangle et son identificateur doit commencer
par une minuscule. Le nom porté dans le rectangle doit être de la forme nom_objet : Nom_classe
et doit être souligné. Une flèche en trait pointillé relie la classe à ses instances.
Interface (figure 9)
Classe qui regroupe un comportement particulier : ensemble d’opérations visibles exté-
rieurement. Elle ne possède pas d’attribut. La classe qui réalise une interface doit fournir
une implantation de chacune des opérations de l’interface.

9
Client

dupont : Client

F IG . 8 – Instance d’objet

« Interface »
Affichable

Figure

F IG . 9 – Interface

UML : Une interface a la même représentation graphique que la classe exceptée que le
nom de la classe doit être en italique ou précédée de la mention « interface » (sur la ligne
du dessus). La réalisation d’une interface se note par un trait pointillé terminé par un
triangle blanc.
Méthode Implantation d’une opération en spécifiant son algorithme.
Objet Un objet est une instance d’une classe. Il possède une identité qui permet de le distinguer
des autres objets. Il est défini par des informations stockées dans des attributs et des
comportements réalisés par des opérations.
Opération (figure 10)
Une opération spécifie une transformation de l’état de l’objet cible ou une requête qui
retourne une valeur à l’appelant de l’opération. Elle possède un nom, une éventuelle liste
de paramètres et un éventuel type de retour. Elle possède également l’indication de sa
visibilité (voir Attribut).
UML : L’identificateur doit commencer par une lettre minuscule et être suivi de paren-

10
Facture

ajouterProduit(): Boolean
calculMontant (p: Produit): Double
modiferTaux (t: Double): Double

F IG . 10 – Opération

thèses ouvrante et fermante ; les paramètres seront placés entre les parenthèses et on in-
diquera le type de retour éventuel. Les opérations sont placées dans un rectangle accolé
sous le rectangle des attributs de la classe à laquelle ils appartiennent.
Type De même que la classe, un type est un ensemble d’objets similaires avec des attributs et
des opérations identiques ; spécification d’un domaine pour lequel un comportement est
applicable, qui peut être prédéfini ou applicatif.
Use case Spécification de séquence d’actions qu’un système peut réaliser en interaction avec
des « acteurs » extérieurs.

11

Vous aimerez peut-être aussi