UML: Exercices Diagramme des cas d,utilisation
Transcription
UML: Exercices Diagramme des cas d,utilisation
!"#$%&'()*)'+ ,*-.(-//'$0'+$)-+$ 0123*4*+-3*56 1 7-8'3*9('$#$)-+$0123*4*+-3*56 : 7(;'($26$0*-.(-//'$0'+$)-+$0123*4*+-3*56$ ('<(;+'63-63$41*63'63*56$0'$4123*4*+-3'2($ 0126'$7-8'3*9('= >()?;545.*' #$)-+ 0123*4*+-3*56 @ : "-$+5)*;3; (5A-4'$01-()?;545.*'$-235/5B*4'$C52+$ '/B-2)?'$<52($(;-4*+'($26$+A+39/'$0'$+2<<5(3$-2&$ -()?;545.2'+$45(+$0'+$852*44'+= : 6$-()?;545.2'$45(+$0126'$852*44'$(;-4*+'$4'$)(5D2*+$0126'$ <*9)'$+2($+56$3-B4'3 E7$'3$41'6C5*'$-2$+'(C'2($0'$ 41-++5)*-3*56=$E52($)'$8-*('$*4$52C('$26$652C'-2$0'++*6$'3$ )5//'6)'$F 0'++*6'(=$G4$-$;.-4'/'63$4-$<5++*B*4*3; 0'$ )5<*'($0'+$;4;/'63+$F <-(3*($0126$-6)*'6$0'++*6=$><(9+$ -C5*($0;8*6*$26$)'(3-*6$65/B('$0'$<(5<(*;3;+$<52($+56$ 0'++*6$H(;+5423*56I$65/B('$0'$)524'2(+IJKI$ 41-()?;545.2'$'6C5*'$+56$0'++*6$-2$+'(C'2($0'$B-+'+$0'$ 0566;'+$'6$*60*D2-63$5L 4'$8*)?*'($05*3$M3('$+35)N; '3$<-($ D2*$*4$<'23$M3('$C2=$$ 2 >()?;545.*'$#$)-+$0123*4*+-3*56$O : P6$C52+$0'/-60'$01-0-<3'($4'$+A+39/'=$"'+$ -()?;545.2'+$0'$3'((-*6$+563$0'$0'2&$3A<'+I$4'+$ -()?;545.2'+$-<<('63*+$'3$4'+$-()?;545.2'+$ )568*(/;+=$E52($-++2('($4-$D2-4*3; 0'$4-$B-+'$0'$ 0566;'+I$+'24+$4'+$)568*(/;+$<'2C'63$(;-4*+'($'3$ '6C5A'($0'+$)(5D2*+$-2$+'(C'2(=$Q;-6/5*6+I$4'+$ -()?;545.2'+$-<<('63*+$<'2C'63$'6C5A'($0'+$ 653'+$0'$3A<'$3'&3'$H<(*+'+$+2($4'2($R-B4'3 E7K=$ 7'33'$8-)243; '+3$;.-4'/'63$-))'++*B4'$-2&$ )568*(/;+=$7'+$653'+$+'(563$0*+<56*B4'+$<52($ 352+$C*-$4'$+*3'$S'B$0'$41-++5)*-3*56=$$$ "'$)-+ !56>235 #$<(;+'63-3*56 !56>235 '+3$26'$'63('<(*+'$D2*$8-*3$4'$)5//'()'I$ 4T'63('3*'6$'3$4'+$(;<-(-3*56+$0'$C5*32('+=$ !56>235 0;+*('$'&<45*3'($26$45.*)*'4$0'$.'+3*56$0'+$ (;<-(-3*56+U$'44'$0*+<5+'$0;VF 0T26$45.*)*'4$ )5/<3-B4'=$"'+$8-)32('+$0'$(;<-(-3*56+$+'(563$ */<(*/;'+$'3$.;(;'+$<-($4'$45.*)*'4$)5/<3-B4'=$ "'$45.*)*'4$0'$.'+3*56$0'+$(;<-(-3*56+$0'C(-$ )5//26*D2'($-C')$4'$45.*)*'4$)5/<3-B4'$<52($42*$ 3(-6+/'33('$4'+$(;<-(-3*56+$F 8-)32('(=$ 3 "'$)-+ !56>235 #$;656); : : "'$45.*)*'4$0'$.'+3*56$0'+$(;<-(-3*56+$'+3$0'+3*6; '6$<(*5(*3; -2$)?'8$ 0T-3'4*'(I$*4$0'C(-$42*$<'(/'33('$0'$+-*+*($4'+$8*)?'+$0'$(;<-(-3*56+$'3$4'$ 3(-C-*4$'88')32; <-($4'+$0*C'(+$'/<45A;+$0'$4T-3'4*'(= E52($'88')32'($4'2($3(-C-*4I$4'+$/;)-6*)*'6+$'3$-23('+$'/<45A;+$0'$ 4T-3'4*'($C563$)?'()?'($0'+$<*9)'+$0'$(')?-6.'$-2$/-.-+*6=$"5(+D2'$4'$ 45.*)*'4$+'(-$*6+3-44;I$4'+$/-.-+*6*'(+$6'$852(6*(563$0'+$<*9)'+$D2'$<52($ 4'+$C;?*)24'+$<52($4'+D2'4+$26'$8*)?'$0'$(;<-(-3*56$'+3$52C'(3'U$*4+$ +-*+*(563$0*(')3'/'63$4'+$<*9)'+$852(6*'+$0'<2*+$26$3'(/*6-4$*6+3-44; -2$ /-.-+*6= "5(+D2T26'$(;<-(-3*56$'+3$3'(/*6;'I$4'$)?'8$0T-3'4*'($C-$'++-A'($4-$ C5*32('=$W*$3523$'+3$'6$5(0('I$*4$/'3$4-$C5*32('$+2($4'$<-()$)4*'6394'$'3$ B52)4'(-$4-$8*)?'$0'$(;<-(-3*56$*685(/-3*+;'=$"'+$8*)?'+$0'$(;<-(-3*56+$ B52)4;'+$<-($4'$)?'8$0T-3'4*'($0'C(563$<52C5*($M3('$*/<5(3;'+$<-($4'$ )5/<3-B4'$0-6+$4'$45.*)*'4$)5/<3-B4'= "'$)-+$!56>235 7(;'($26$0*-.(-//'$0'+$)-+$ 0123*4*+-3*56$<52($4'$)-+$!56>235 4 "'$)-+ !56>235 #$+2*3' : Découvrez les besoins implicites, c-à-d d’autres cas d’utilisation : Q52+$6T-C56+$<-+$'&<4*)*3; 4-$/-6*9('$0563$4'+$ '/<45A;+$'3$4'2($D2-4*8*)-3*56$+563$.;(;+I$3523$ )5//'$<52($4'$+35)N$0'$<*9)'+$0'$(')?-6.'I$4'+$ )4*'63+I$4'+$'/<45A;+I$4'+$C'63'+$0'$C5*32('+=== Q52+$<52C56+$*/-.*6'($D2'$4'$45.*)*'4$0'$ .'+3*56$0'+$(;<-(-3*56+$588('$4'+$856)3*566-4*3;+$ */<4*)*3'+$0'$.'+3*56$0'+$)4*'63+I$'/<45A;+I$ C'63'+$0'$C5*32('+I$<*9)'+$0'$(')?-6.'=== "'$)-+$!56>235 7(;'($26$0*-.(-//'$01-)3*C*3; <52($4'$2+'$ )-+'$X 7(;'($26'$8*)?'$0'$(;<-(-3*56 Y 5 7(;'( 26' 8*)?'$0'$(;<-(-3*56 #$ ;656); : E52($)(;'($26'$8*)?'$0'$(;<-(-3*56I$4'$)?'8$01-3'4*'($+-*+*3$4'+$ )(*39('+$0'$(')?'()?'$0'$C5*32('+$0-6+$4'$+A+39/'=$"'$45.*)*'4$0'$ .'+3*56$0'+$(;<-(-3*56$42*$0566'$4-$4*+3'$0'+$C5*32('+$ )5(('+<560-63$-2&$)(*39('+$'63(;+=$W*$4-$C5*32('$'&*+3'I$4'$)?'8$ 01-3'4*'($C-$+;4')3*566'($4-$C5*32('=$"'$45.*)*'4$C-I$'6+2*3'I$852(6*($ 4'+$*685(/-3*56+$+2($4'$C;?*)24'=$W*$4-$C5*32('$'+3$+52+$.-(-63*'I$4'$ )?'8$0'C(-$+-*+*($4-$0-3'$0'$0'/-60'$0'$(;<-(-3*56=$W*$4-$C5*32('$ 61'&*+3'$<-+I$4'$)?'8$C-$+-*+*($4'+$*685(/-3*56+$)56)'(6-63$$)'$ 652C'-2$C;?*)24'=$,-6+$352+$4'+$)-+I$4'$)?'8$01-3'4*'($0'C(-$+-*+*($ 4-$0-3'$0'$(;)'<3*56$'3$0'$('+3*323*56=$W*$4'$05//-.'$0'$4-$C5*32('$ '+3$<-A; <-($41-++2(-6)'I$4'$45.*)*'4$C-$852(6*($26'$4*+3'$ 01-++2(-6)'+$-2$)?'8$01-3'4*'(=$7'$0'(6*'($+;4')3*566'(-$ 41-++2(-6)'$-0;D2-3'=$%68*6I$4'$45.*)*'4$'6('.*+3('$4-$8*)?'$0'$ (;<-(-3*56= ,*-.(-//'$01-)3*C*3; 6 7-8'3*9('$#$0*-.(-//'$01-)3*C*3;+ : 756+3(2*('$26$0*-.(-//'$01-)3*C*3;+$ ('<(;+'63-63$4123*4*+-3*56$0126'$)-8'3*9('$ ;4')3(*D2'# Z <('/*'($;3-3#$)?'()?'($02$)-8; Z 0'(6*'($;3-3#$W'(C*($02$)-8; >()?;545.*'$#$0*-.(-//'$ 01-)3*C*3;+ : 7(;'($26$0*-.(-//'$01-)3*C*3;+$ ('<(;+'63-63$4'$<(5)'++2+$02$0'++*6$0126$ )(5D2*+$0126$-()?;545.2'$45(+$0126'$852*44' 7 "'$)-+$!56>235 7(;'($26$0*-.(-//'$01-)3*C*3;+$<52($3523$4'$ 3(-*3'/'63$0126'$(;<-(-3*56= 8 / #0 Olympus Microcassette Handheld S830 Recorder !"#$%OLY-S830 &'()#$%$149.00 9 ' #" ' # 10 1$$ # / ( & $ 2 ' 2 % 11 ! $ " # 3 4 ) #$* # 4 ) * 4 " $ " # 5 $$ # 04 ) 0 #* * 4) # 4 ) 04 12 # $" # ).6 4)$$7/ /4 &" 7. 7 &$$ 7$$7$*7*7 8 7/4 $ $" # $ & $. * !$ 7 $4 13 $" # 3$ 7 $ 9 9 & $$ " & $4 %& )/" & 45$ 0 / & " 7 7 9 7 42 * $ 704 56 $$ *6 )& % $ 7" 4 $ 7* & " 7 7.42$*7 & '&$7/$$ 7.4 *7 : $$ '&$7$ &;; 0: *- & 9 : 64 7& &9 &$7 &*& *777 %4 14 '()*+* ) En tant qu'intermédiaire entre des propriétaires de biens immobiliers et d'éventuels locataires ou acheteur, une agence immobilière propose les différents biens suivants: ¾à louer ou à acheter : des biens immobiliers d'habitation (studios, appartements, maison) et des biens immobiliers commerciaux (entrepôts, emplacements pour bureaux ou commerce); De manière à pouvoir servir efficacement, à la fois, les propriétaires (offrants) et les clients (demandeurs), un certain nombre de "classes standards" de biens immobiliers sont définies; par exemple: la classe des terrains à bâtir de 10 ares et de moins de 300.000 Frs., la classe des maisons d'habitation à louer comprenant au minimum deux chambres et dont le loyer mensuel serait inférieur à 15.000 Francs, la classe des maisons d'habitation à acheter comprenant au minimum trois chambre et dont le prix demandé serait inférieur à 2.500.000 Francs. Une classe standard est identifiée par un code de classe et caractérisée par le type de biens immobiliers qui la composent (maison, appartements, studio, entrepôt, emplacement, terrain), leur mode d'offre (à louer, à acheter), un prix maximum et une superficie minimum. Dans le cas d'appartement à louer, le prix maximum correspond à un prix mensuel maximum de location; pour les biens à acheter, il correspond à un prix maximum d'achat. Dans le cas d'appartement ou maison, la superficie minimale correspond à un nombre de chambres; dans le cas d'immeubles commerciaux ou de studios, à une superficie exprimée en m2; dans le cas d'un terrain à bâtir, à une superficie exprimée en ares. Pour exercer son activité, l'agence immobilière gère les informations suivantes : ¾pour chaque propriétaire: son nom, son adresse (rue et numéro, code postal, localité), deux numéros de téléphone (privé et travail) et les heures de présence à ces numéros, ainsi que la liste des biens qu'elle est chargée de négocier pour eux. ¾pour tout bien immobilier: son statut (disponible, loué ou acheté), la classe standard à laquelle il appartient, la date à laquelle le bien lui a été soumis, sa localisation (rue et numéro, code postal et localité), la date de mise en disposition, le revenu cadastral, la liste des clients qui ont demandé à visiter ainsi que, les dates et heures de chaque visite, et les coordonnées de la personne de l'agence responsable de celle-ci. Enfin, s'il y a lieu, les coordonnées du client acquéreur (nom, adresse, téléphone), les prix et date effectifs d'achat où de location et le numéro de référence du contrat. ¾pour tout bien immobilier à louer: le montant de la caution locative, le loyer mensuel, le montant mensuel des charges, le type de bail, la "garniture" (meublé, non meublé). ¾pour tout bien immobilier à acheter : le prix d'achat demandé. ¾pour tout bien immobilier à acheter, sauf terrain : l'état (à restaurer, correct, impeccable). ¾pour un client: son nom, son adresse, son numéro de téléphone, les types de biens qu'il recherche, c'est à dire la liste des classes standards qui correspondent aux types de biens qui l'intéressent. Pour l'agence immobilière, un client correspond à toute personne s'adressant à ses services pour louer ou acheter un bien immobilier. Il devient acquéreur s'il loue ou achète un bien immobilier par son intermédiaire. Un propriétaire est une personne qui possède des biens immobiliers et s'adresse à l'agence pour les présenter à ses clients. Un propriétaire peut posséder plusieurs biens immobiliers Un bien immobilier ne peut être la propriété que d'un seul propriétaire. Un bien immobilier est soit à louer, soit à acheter. Un numéro permet de l'identifier parmi tous les biens immobiliers. Un bien immobilier appartient toujours à une et une seule classe standard. Une classe standard peut ne contenir aucun bien immobilier. Un client peut être intéressé par plusieurs classe de biens. Un client est identifié par un numéro attribué par compostage. Il peut visiter plusieurs fois le même bien accompagné d'un responsable différent. Un propriétaire est identifié par son numéro. !"#$%#&&'( )*"+,'%#-,".+( /!"#$%#&&' )' 0123'+-' /!"#$%#&&' )' -.&&3+"-#,".+ 15 56'%-"-' 7 8 9',%#", '+ '(:;-' 91)"$'< 3+ )"#$%#&&' )' (123'+-' =#(1 (3% >*1+.+-1 (3"?#+,8 @A' $3"-B',"'% .3?%' 3+' ('((".+ @A' $3"-B',"'% (#"(", >' +3&1%. )' -.&:,' )3 ->"'+,C @A' (D(,;&' $3"-B', ?#>")' >' -.&:,' #3:%;( )3 (D(,;&' -'+,%#>C @A' (D(,;&' $3"-B', )'&#+)' >' ,D:' )*.:1%#,".+ #3 $3"-B',"'% @A' $3"-B',"'% (1>'-,".++' >' &.+,#+, )3 %',%#", @A' (D(,;&' $3"-B', "+,'%%.$' >' (D(,;&' -'+,%#> :.3% (*#((3%'% 23' >' -.&:,' '(, (3EE"(#&&'+, #::%.?"(".++1 @A' (D(,;&' $3"-B', )'&#+)' #3 (D(,;&' -'+,%#> )' )1=",'% >' -.&:,' 4 @A' (D(,;&' +.,"E"' #3 $3"-B',"'% 23*"> :'3, )1>"?%'% >' &.+,#+, )'&#+)1 56'%-"-' G8 H&:%"&#+,' I :#%,"% )3 )"#$%#&&' )' ->#((' -"J)'((3( 7C 91)"$'< 3+ )"#$%#&&' )' (123'+-' :.3% &.)1>"('% >' (-1+#%". .K 3+ 3,">"(#,'3% ?.3)%#", "&:%"&'% 3+ E"-B"'%C GC 91)"$'< 3+ )"#$%#&&' )' -.&&3+"-#,".+ L :#%,"% )3 )"#$%#&&' )' (123'+-' .=,'+3 L ># 23'(,".+ 7C 7F 16 56'%-"-' M8 0"&:>' N#,-B V3,,.+ 7 V3,,.+ G I :#%,"% )3 )"#$%#&&' )' ->#((' -"J)'((3( 7C 91)"$'< 3+ )"#$%#&&' )' (123'+-' :.3% &.)1>"('% 3+ (-1+#%". .K 3+ 3,">"(#,'3% ?.3)%#", %1$>'% >*B'3%' O:#%,"-3>";%'&'+, >'( &"+3,'(P (3% (# &.+,%'C 5+ #::3D#+, GQ (3% >' =.3,.+ 7 "> #--;)' #3 %1$>#$' )'( &"+3,'( OB'3%' ->"$+.,' :3"( &"+3,' ->"$+.,'PC 5+(3",' #?'- >' =.3,.+ G "> "+-%1&'+,' >'( &"+3,'( )*3+ ?#>'3%R >' AS! )"(:>#D '(, %#E%#T-B" #:%;( -B#23' :%'((".+C 5+ #::3D#+, (3% >'( )'36 =.3,.+( L ># E."( >*B'3%' '(, '+%'$"(,%1' ', >*#EE"-B#$' (*#%%U,' )' ->"$+.,'%C GC 91)"$'< 3+ )"#$%#&&' )' -.&&3+"-#,".+ L :#%,"% )3 )"#$%#&&' 77 )' (123'+-' .=,'+3 56'%-"-' W 8 I(-'+('3% I :#%,"% )3 )"#$%#&&' )' ->#((' -"J)'((3( 7C 91)"$'< 3+ )"#$%#&&' )' (123'+-' :.3% &.)1>"('% 3+ (-1+#%". .K 3+ 3(#$'% ?.3)%#", &.+,'% '+ 3,">"(#+, 3+ #(-'+('3% GC 91)"$'< 3+ )"#$%#&&' )' -.&&3+"-#,".+ L :#%,"% )3 )"#$%#&&' )' (123'+-' .=,'+3 7G 17 Diagrammes d’états-transitions Exercice 1 : formation d’un contrat Dessinez un diagramme d’état/transition résumant les états possibles d’un objet “contrat” tel que décrit dans l’énoncé suivant. Un ensemble de personnes décident d’établir un contrat. Pour ce faire elles rédigent un projet par itération successive. Le contrat est ensuite informellement accepté par les parties, et devient ce que l’on appelle un préaccord. A ce stade il peut toujours être l’objet de modification et revenir à l’état de projet. Une fois le préaccord définitivement établi, le contrat est signé par les parties. Dès ce moment les partenaires sont liés. Une fois signé le contrat peut être rendu exécutoire par une décision d’une des parties. Un contrat en exécution peut faire l’objet de discussions qui sont réglées par un arbitre désigné à cet effet. Le contrat une fois exécuté prend fin. 18 Exercice 2 : montre digitale • Ma montre affiche l’heure, si j’appuie 2X sur le boutton 1, la Button1 montre passe en mode “modification”. Chaque pression sur le boutton 2, incrémente l’heure d’une unité. Si j’appuie encore un fois sur le boutton 1, je peux régler les Button2 minutes de la même façon que les heures. Si j’appuie une quatrième fois sur le boutton 1, la montre affiche à nouveau l’heure courante. Exercice 3 : montre digitale plus avancée • Lors du réglage de l’heure ou des minutes lorsque j’appuie sur le boutton 2 plus de deux secondes, les heures ou les minutes avancent très rapidement jusqu’à ce que je relâche la pression • On ajoute un bouton 3 qui permet de rétro-éclairer l’écran LCD Button1 Button3 Button2 19 Exercice 4 : cabine téléphonique • Modélisez le fonctionnement d’une cabine téléphonique 20 Archeo Editer Coquis <<Include>> Faire Croquis Archeologiste <<Extend>> Copier Croquis existant Prendre Notes Archeologiste Expert Archeologiste Apprenti importer croquis pour publication Website BD 21 monauto Logiciel Reparation Saisir Pieces Comptable BD Stock Consulter Fiche Logiciel Comptable Magasinier <<Include>> <<Extend>> Gerer Facture Gerer Fiche Reparation Mecanicien <<Include>> <<Include>> <<Extend>> Cloturer Fiche Reparation Importer Fiche Chef Atelier BD Reparation 22 ATM Recharger Proton obtient statistiques Recharge ATM Prepose Banque Client Tirer de l'argent Login Changer Password <<Extend>> Imprimer ticket Faire Domiciliation <<Include>> <<Extend>> Introduire carte <<Extend>> Faire Virement Faire Virement National <<Extend>> Recevoir Extrait de compte Faire Virement International 23 Full - Tirer de l'argent Use Case ID Super Use Case Primary Actor Secondary Actor(s) Brief Description Preconditions Flow of Events Post-conditions Alternative flows and exceptions Non-behavior requirements Assumptions Issue Source Author Date Client Comment un client utilise l'ATM pour retirer de l'argent Client doit avoir une carte Actor Input System Response 1 Le client entre la carte 2 Le système lit la carte 3 Le système authentifie le client 4 Le client sélectionne le retrait 5 Le client selectionne le montant 6 Le système confirme 7 Le système ejecte la carte 8 Le système donne l'argent Le client a l'argent Retrait d'un montant hors limite : sytème affiche message erreur Carte bloquée dans le système : session terminée et message au client Carte invalide : carte est directement ejectée Carte oubliée dans le système Carte illisible Mot de passe erroné Cash non disponible Client quitte session Sécuriser l'ATM Adapter la visibilité arrière forma1300 12-oct.-2010 14:03:58 24 vente commande un produit facturer la commande Client Vente traiter commande paie la facture sortir les articles Entrepot Caisse expédier la commande 25 cafetiere [tant que pas prete] Allumer Cafetière Préchauffage [Reservoir vide?] [Capsule présente?] oui oui non Mettre Capsule Ejecter Capsule Remplir Reservoir non Placer Tasse Selectionner quantité Appuyer bouton [tant que quantité pas atteinte] Eteindre cafetiere Retirer tasse Produire café 26 vente Client Vente Entrepot Caisse Verifie stock commande produit Traite commande [stock ok?] Recommender Stock non Notification Client oui Payer Facturer Sortir article oui [Paiement ok?] non Expedier article Encaisser client insolvable 27 monautoReparation Chef Atelier Mecanicien Magasinier Comptable [tant que reparation pas terminée] creer fiche Saisir pieces Consulter Fiche Importer Fiche Saisir travail Facturer 28 MonAutoCreerFiche Chef Atelier Logiciel Reparation Saisit criteres recherche Donne Liste Voitures Voiture Existe? Saisit Info Vehicule non oui Selectionne Voiture Fournit Info Vehicule [Sous garantie?] non oui oui non Fournit Liste Assurance Saisit demande reparation Intervention Assurance Cloture Fiche Saisit dates reception/restitution selectionne Assureur 29 CafetiereSimple [tant que qté pas atteinte] Produire café retire tasse Allumer cafetiere Sélection qté eteindre cafetiere verifier niveau eau Placer tasse [préchauffage ok] [reservoir plein] [tant que cafetiere pas a t°] [reservoir vide] Remplir reservoir placer la dosette préchauffage 30 enregistreur Enregistreur -code -marque -modele -prix : integer -annee : date -long : integer -largeur : integer -couleur -position -volume : integer -poids : integer +enregistrer() +ecouter() +rebobiner() +avancer() +ejecter() +reglerVolume() +stopper() +marquerPause() +afficherPosition() Cassette -etiquette -marque -modele -longueur : integer -type 1 * Enregistrement -label -dateEnreg : date -longueur : integer -NumTel Message -auteur -sujetMessage -NumTelAuteur 31 monauto Facture est facturee assureReparation 0..* 0..* 0..* Assurance +emettre() 1..* Reparation -NumPolice : integer -Compagnie -duree : integer 0..* se rapporte +contracterPolice() +definirOptions() +payer() 1 1..* assureVehicule 1..* -dateEntree : date -dateSortie : date 0..* +consulter() +facturer() +definirDevis() +determinerTravaux() Vehicule Vente -dateEmission : date -modele -annee : date -cylindree : integer -carburant : boleean 0..* Garantie 1 1..* sous garantie -numGarantie : integer 0..* -duree : integer -dateDebut : date +souscrire() +etendre() Client appartient prise en compte -prix : integer -date : date -nom -addresse +payer() +enregistrer() ChefAtelier assigné +assignerReparation() 1 PersMorale -numTVA : integer -raisonSociale PersPhysique -prenom 32 Immo ImmoSys <<ORM Persistable>> Bien -ID 1..* 0..* biens visites <<ORM Persistable>> visite 0..* visites -ID personnes 1..* <<ORM Persistable>> Personne -ID 1 personne bien 1 annonce 1 <<ORM Persistable>> Annonce -ID <<ORM Persistable>> Particulier 0..* -nom annonces <<ORM Persistable>> Maison <<ORM Persistable>> Agence -type -numTVA : integer <<ORM Persistable>> Appartement -etage Pour MySQL/Java 33 sd guichetier guichet : Guichet moduleCentral : ModuleCentral Guichetier 1: ouvertureSession() 2: session ouverte 3: saisirCompte() 4: validerCompte() 5: compteValide 6: demandeOperationType() 7: retraitLiquide() 8: verifieSolde() 9: debit 10: notifieRetrait() 34 sd printer :pc : server : printer : queue : user 1: print(file) 2: print (file) 3: print (file) loop [While File not printed] alt [printer available and file NOT IN queue] 4: print (file) [printer not available and file NOT IN queue] 5: store (file) [printer avalable and file IN queue] 6: call(file) 7: print (file) 35 sd montre but1: button but2 : button : LCDDisplay : Timer :user loop [0,2] 1: push() 2: blinkMinutes() loop [While minutes not set] 3: push() 4: incrementMinutes() 5: displayNewTime() 6: visualise() 7: release() 8: push() 36 sd Ascenceur : voyant : tableau : ascenceur : porte : user 1: callLift() 2: switchOn() alt [PosLift > < PosUser] 3: close() alt [PosLift > PosUser] 4: GoDown(PosUser) 5: [PosLift < PosUser] 6: GoUp(PsoUser) 7: 8: switchOff() 9: open() [PosLift = PosUser] 10: switchOff() 11: open() 12: selectLevel() 13: switchOn() 14: close() alt [PosLift < SelectedLevel] 15: GoUp(SelectedLevel) 16: [PosLift > SelectedLevel] 17: GoDown(SelectedLevel) 18: 19: open() 20: switchOff() 21: close() 37 sd Close :Tableau :Porte :Voyant 1: open() 2: switchOff() 3: close() 38 sd guichetier - Communications 8: verifieSolde() 4: validerCompte() 9: debit 5: compteValide guichet : Guichet moduleCentral : ModuleCentral 2: session ouverte 6: demandeOperationType() 10: notifieRetrait() 3: saisirCompte() 1: ouvertureSession() 7: retraitLiquide() Guichetier 39 sd montre - Communications 5: displayNewTime() : LCDDisplay : Timer 8: 6: visualise() 2: blinkMinutes() but1: button 1: push() 4: incrementMinutes() 3: push() 7: release() but2 : button :user 40 sd printer - Communications 2: print (file) :pc : server 3: print (file) 1: print(file) 7: print (file) 6: call(file) : queue : printer 4: print (file) 5: store (file) : user 41 sd Ascenceur - Communications : ascenceur 5: 16: 7: 18: 17: GoDown(SelectedLevel) 6: GoUp(PsoUser) 10: switchOff() 20: switchOff() 13: switchOn() 15: GoUp(SelectedLevel) 4: GoDown(PosUser) 2: switchOn() 8: switchOff() 3: close() : tableau : porte 11: open() 14: close() : voyant 9: open() 12: selectLevel() 19: open() 1: callLift() 21: close() : user 42 ascenceur Arreté non callLift() PosLift = PosUser oui Fermé Porte ouverte? open(doors) close(doors) Ouvert oui EnMouvement non [PosLift >< Selection] GoUp oui PosLift < Selection [PosLift >< Selection] non GoDown [Etage atteint] [Etage atteint] 43 Montre [bouton non appuyé] Affichage Normal do / AfficherHeureMinutes [batteryOn] [batteryOff] push(bouton1) [2x] Modification push(bouton2) push(bouton2) Réglage Heure do / incrémenteHeure() Réglage Minute do / incrémenteMinutes push(bouton1) push(bouton1) Affichage New Time do / AfficherHeureMin Modifié 44 3tiers <<component>> ApplicationPret <<use>> <<component>> Client <<component>> ApplicationServer -Websphere <<component>> WebServer-Apache <<component>> OS-Linux Debian <<component>> DBPret <<component>> RDBMS-SQLServer <<component>> OS Windows Server 2008 45 MonAuto <<component>> Valise-Diagnostic <<component>> ApplicationComptable <<use>> <<use>> <<component>> ApplicationReparation <<component>> FrontEnd <<use>> <<use>> <<component>> BDStock <<component>> BDVoiture 46 DeploymentBDPret workstation Server <<component>> Client <<component>> ApplicationPret <<use>> <<component>> ApplicationServer -Websphere BD-Server <<component>> WebServer-Apache <<component>> DBPret <<component>> OS-Linux Debian <<component>> RDBMS-SQLServer LAN - Router <<component>> OS Windows Server 2008 47 DeploymentMonAuto Workstation - Administration Laptop - Valise <<component>> FrontEnd <<component>> Valise-Diagnostic Serveur <<component>> ApplicationComptable <<use>> <<use>> <<component>> ApplicationReparation Workstation -Garage <<component>> FrontEnd <<use>> <<component>> BDStock <<use>> <<component>> BDVoiture 48 sd Ascenceur sdPosLift >< PosUser sd switchOn :Tableau :Porte :Voyant [PosLift?] :User 1: callLift() 1: close() PosLift >< PosUser 2: sw itchOn() PosLift=PosUser [PosLiftUpDown?] posLift > PosUser posLift < PosUser sd PosLift =PosUser :tableau :voyant :porte 1: sw itchOff() 2: open() sdPosLift > PosUser :Tableau sd PosLift < PosUser :Ascenceur :Tableau :Ascenceur 1: GoDow n(PosUser) 1: GoUp(PosUser) 2: 2: sdswitchOff :Tableau :Voyant :Porte 1: sw itchOff() 2: open() sd PosLift < SelectedLevel :Tableau sd selectLevel :Tableau :User :Ascenceur PosLift < SelectedLevel :Voyant 1: GoUp(SelectedLevel) :Porte sd Close 1: selectLevel() 2: :Tableau 2: sw itchOn() 3: close() :Porte :Voyant 1: open() [PosLift?] 2: sw itchOff() sd PosLift > SelectedLevel :Tableau :Ascenceur 3: close() PosLift > SelectedLevel 1: GoDow n(SelectedLevel) 2: 49 ImmoER Personne +ID NumTVA Nom Discriminator int(11) int(11) varchar(255) varchar(255) Nullable = false Nullable = true Nullable = true Nullable = false visites visite_Personne personne +#visiteID +#PersonneID int(11) int(11) Nullable = false Nullable = false personnes annonces Annonce visite +ID int(11) Nullable = false +ID #BienID #PersonneID int(11) int(11) int(11) +#visiteID +#BienID int(11) int(11) Nullable = false Nullable = false Nullable = false annonce bien biens Bien +ID Etage Type Discriminator int(11) varchar(255) varchar(255) varchar(255) Nullable = false Nullable = true Nullable = true Nullable = false visites visite_Bien Nullable = false Nullable = false 50