1. La modélisation d’un site marchand avec UML :
une démarche agile mise en œuvre avec Together
09 Octobre 2003 Modéliser un site marchand avec UML et Together 1
3. Présentations
Intervenant : Pascal Roques
Consultant senior chez Valtech Training
Responsable des formations autour d’UML
Auteur de 3 ouvrages sur UML parus chez Eyrolles :
UML en action - 2e édition UML par la pratique UML - Modéliser un site
De l'analyse des besoins à la Cours et exercices Java et C# e-commerce
conception en Java - 2ème édition Les Cahiers du Programmeur
09 Octobre 2003 Modéliser un site marchand avec UML et Together 3
4. Notre programme
1. Introduction
2. Spécification des exigences : les cas d’utilisation
3. Analyse du domaine : les objets « métier »
4. Conception objet et passage au code
5. Conclusion
Et des exemples de diagrammes
réalisés avec Together®
09 Octobre 2003 Modéliser un site marchand avec UML et Together 4
5. UML
UML
Langage de modélisation graphique destiné à :
comprendre et décrire des besoins,
spécifier et documenter des systèmes,
esquisser des architectures logicielles,
concevoir des solutions concrètes,
communiquer des points de vue.
Standardisé par l’OMG
www.omg.org
Mars 2003 : UML 1.5
Bientôt UML 2.0 ?
09 Octobre 2003 Modéliser un site marchand avec UML et Together 5
6. Les diagrammes d’UML
UML 1.5 propose 9 types de diagrammes :
Diagramme de cas d’utilisation
Fonctionnel
Diagramme de classes
Diagramme d’objets DIAGRAMME DE CAS
D'UTILISATION
Diagramme de séquence
Diagramme de collaboration Statique Dynamique
Diagramme d’activités DIAGRAMME DE CLASSES DIAGRAMME D'ÉTATS
DIAGRAMME D'OBJETS DIAGRAMME D'ACTIVITÉS
Diagramme d’états DIAGRAMME DE COMPOSANTS
DIAGRAMME DE DÉPLOIEMENT
DIAGRAMME DE SÉQUENCE
DIAGRAMME DE COLLABORATION
Diagramme de composants
Diagramme de déploiement
09 Octobre 2003 Modéliser un site marchand avec UML et Together 6
7. Le processus proposé
Un processus agile pour la
Domain
UC Diagram Model Class Diagram
Foo
modélisation de site marchand, Foo2
Operation
Contracts
fondé sur UP (Unified Process) :
High Level UC Name:
Responsibilites: Collaboration Diagram
Name:
Actors: 1:bar()
Description: Preconditions:
Postconditions:
foo()
Conduit par les cas d’utilisation,
2:baz()
Expanded UC
Name: System Sequence
Actors: Diagram
Description:
:System
TCOE:
Actor Action Sys Response
Léger et restreint,
foo()
1. Abcde 2. Zidjen
3. Scndi
foo2()
Mais sans négliger les activités de
modélisation en analyse et en conception,
Basé sur un sous-ensemble nécessaire et
suffisant du langage UML.
Pour trouver le meilleur rapport
qualité / prix !
09 Octobre 2003 Modéliser un site marchand avec UML et Together 7
8. L’étude de cas
Une librairie en ligne
Société fictive : jeBouquine.com
But : prendre place sur le marché de la librairie en ligne
Besoin : inventer rapidement des éléments différentiateurs
Le site Web devra donc être facilement évolutif
Objectifs principaux :
permettre aux internautes de …
Chercher des ouvrages par thème, auteur, mot-clef, etc.,
Se constituer un panier virtuel,
Pouvoir commander et payer directement sur le Web.
09 Octobre 2003 Modéliser un site marchand avec UML et Together 8
9. L’étude de cas
Exigences fonctionnelles : gestion du panier
09 Octobre 2003 Modéliser un site marchand avec UML et Together 9
10. L’étude de cas
Exigences
fonctionnelles :
commande
Accès facile au
formulaire de
commande
09 Octobre 2003 Modéliser un site marchand avec UML et Together 10
12. La démarche
Comment décrire les besoins ?
09 Octobre 2003 Modéliser un site marchand avec UML et Together 12
13. Acteurs et cas d’utilisation
Exemples de diagramme de cas d’utilisation
e-librairie (administration)
Nouveautes
Maintenir le catalogue
Administrateur
Service logistique
Webmaster Administrer le site
09 Octobre 2003 Modéliser un site marchand avec UML et Together 13
14. Acteurs et cas d’utilisation
e-librairie (user)
Creer un compte
Rechercher des ouvrages
Internaute
Gerer son panier virtuel
Systeme d'autorisation
de paiement
Commander des livres
Client Gerer son compte
Service logistique
Gerer ses commandes
Suivre les commandes en cours
09 Octobre 2003 Modéliser un site marchand avec UML et Together 14
15. Les cas d’utilisation
Chaque cas d’utilisation va être décrit
textuellement
Par une description narrative dont le plan-type n’est pas
standardisé
Contient en général :
Préconditions et postconditions
Scénario nominal
Scénarios alternatifs
…
On peut compléter cette description textuelle
par des diagrammes dynamiques simples
09 Octobre 2003 Modéliser un site marchand avec UML et Together 15
16. Les cas d’utilisation
Exemple de description de cas d’utilisation
Titre : Commander des livres
Acteurs : Client (principal), Service d’autorisation de paiement, service logistique (secondaires).
Préconditions :
Le panier du client n’est pas vide et il a pu accéder à au formulaire de commande (voir le cas d’utilisation Gérer son panier)
Postconditions :
Une commande a été enregistrée et transmise au service Logistique.
Scénario nominal :
1.Le Système affiche un récapitulatif de la commande.
2.Le Client valide sa commande.
3.Le Système ouvre une connexion sécurisée
4.Le Client saisit un numéro de carte de crédit avec son type et sa date de validité.
5.Le Système récapitule les infos sur la transaction.
6.Le Client valide sa commande.
7.Le Système envoie les informations cryptées au système d’autorisation de paiement.
8.Le Système d’autorisation de paiement valide la transaction.
9.Le Système confirme la prise de commande au client.
10.Le Système envoie la commande validée au service Logistique.
Extensions :
2-6a. L’Internaute annule sa commande.
Le Système revient sur l’affichage du panier et le cas d’utilisation est terminé.
3a. Le système n’arrive pas à ouvrir une connexion sécurisée.
Le cas d’utilisation se termine en erreur.
8a. Le Système d’autorisation de paiement ne valide pas la transaction.
Le cas d’utilisation se termine en erreur.
Exigences supplémentaires :
Pour garantir la sécurisation et la confidentialité des échanges, il est impératif que l'envoi des données se fasse de manière cryptée (protocole SSL).
Le passage de commande est disponible 24h/24, 7j/7.
09 Octobre 2003 Modéliser un site marchand avec UML et Together 16
17. Le diagramme de séquence système
Le diagramme de séquence « système »
illustre la succession temporelle des événements causés
par des messages venant des acteurs
le système est considéré comme une boîte noire
on montre ses interactions avec les acteurs, dans le
cadre d’un scénario d’un cas d’utilisation
Acteur principal à gauche
Acteurs secondaires éventuels à droite du système
En général très bien accepté par les experts
métier
09 Octobre 2003 Modéliser un site marchand avec UML et Together 17
18. Le diagramme de séquence système
e - lib r airie
Exemple de c lie n t syst au t o p aie me n tse r vic e logist iq u e
diagramme acces formulaire de commande
de séquence recapitulatif commande
« système » passage de commande
pour un cas ouverture connexion securisee
d’utilisation saisie infos carte
recapitulatif transaction verification carte
validation commande
infos cryptees
transaction validee
confirmation commande
nouvelle commande
09 Octobre 2003 Modéliser un site marchand avec UML et Together 18
19. Le diagramme d’activités
Client e-librairie
Exemple de
affichage commande
diagramme Passage de commande
d’activités Ouverture connexion securisee
pour un cas Saisie infos carte
d’utilisation
Verification carte
[NOK]
[OK]
Affichage recapitulatif
Systeme d'autorisation de
Validation commande paiement
Cryptage des infos
Validation transaction
Command e [NOK]
[OK]
Consolidation
Service logistique
Traitement commande
09 Octobre 2003 Modéliser un site marchand avec UML et Together 19
21. Le modèle du domaine
Un modèle du domaine représente des concepts
existant dans un domaine du monde réel.
choses tangibles, physiques (Livre, Client)
concepts abstraits, logiques (Thème, Panier)
Il poursuit deux objectifs importants :
aider à la compréhension d’un domaine complexe
dégager un ensemble de classes et associations
candidates pour la conception objet
Le modèle du domaine utilise la notation UML
des diagrammes de classes (statique)
09 Octobre 2003 Modéliser un site marchand avec UML et Together 21
22. Le modèle du domaine
Exemple de diagrammes de classes pour la
maintenance du catalogue
Catalo gue
1
1..*
Ed ite ur
T heme
1..*
nom
nom pays
0..*
sousTheme
0..1 1..* 1
Livr e
titre
1..* est edite par
sousTitre
Aut eur ISBN
nom 1..* a ecrit 1..* langue
dateParution
prenom prix
09 Octobre 2003 Modéliser un site marchand avec UML et Together 22
23. Le modèle du domaine
Exemple de diagrammes de classes pour le
passage de commande
P anier Command e
1 donne lieu a 0..1
total date
modeReglement
delaiLivraison
fraisDePort
montant
0..* commandesEnCours
est passee par
1
Cart eBanc aire Client
type 0..1 1 nom
numero prenom
dateValidite email
09 Octobre 2003 Modéliser un site marchand avec UML et Together 23
24. Le modèle du domaine
passer commande validation[incomplete]
Initialisee
On peut aussi validation[complete]
annulation
avoir besoin
du diagramme Validee annulation
d’états… prise en compte
annulation
Ex. : la classe colis perdu ou incorrect En preparation
Commande
Incident incident mission depart mission
after(6 mois)
incident termine
livraison[OK]
En cours de livraison Livree
livraison[NOK]
09 Octobre 2003 Modéliser un site marchand avec UML et Together 24
26. La démarche
De l’analyse à la conception
09 Octobre 2003 Modéliser un site marchand avec UML et Together 26
27. La démarche
L’architecture logique
<<layer>>
P re se n t at ion
<<layer>>
A p p lic atio n
<<layer>>
Me t ie r
Catalo gu e
Clie n t
P an ie r
<<layer>>
S e r vic e s te c h n iq u e s
09 Octobre 2003 Modéliser un site marchand avec UML et Together 27
28. Les diagrammes
Exemple : diagramme de séquence
Client EcranPanier ControleurCommandes ControleurPanier S yste me d 'aut or isatio S er vice logist iq ue
n
passerCommande():void
passerCommande():void
panier:=getPanier():Panier
create(panier)
no uvelle Co mmand e
Commande
create(nouvelleCommande)
EcranCommande
effectuerPaiement():void
effectuerPaiement():void
create
EcranPaiement
saisirInfosCarte():void
verifCarte():void
validationCommande():void
validationCommande():void
infos cryptees
nouvelleCommande
09 Octobre 2003 Modéliser un site marchand avec UML et Together 28
29. Les diagrammes
Exemple : diagramme de collaboration généré
<<actor>>
<<actor>> S yste me d 'aut or isatio n
S er vice logist iq ue
4.1.1: infos cryptees
4.1.2: nouvelleCommande
2.1.1: create 1.1.1: panier:=getPanier():Panier
<<control>>
3.1: verifCarte():void :Cont r oleu rP anie r
<<control>>
<<boundary>> :Cont r oleu rComman d es
:Ec ran Paie ment
1.1: passerCommande():void 1.1.2: create(panier)
2.1: effectuerPaiement():void
3: saisirInfosCarte():void 4.1: validationCommande():void
1.1.3: create(nouvelleCommande)
<<boundary>>
:Ec ran Pan ier <<entity>>
1: passerCommande():void no uvelle Co mmand e :Co mmand e
2: effectuerPaiement():void
4: validationCommande():void
<<actor>> <<boundary>>
Client :Ec ran Co mmand e
09 Octobre 2003 Modéliser un site marchand avec UML et Together 29
30. La démarche
De l’analyse à la conception
Le concepteur objet applique des “Design Patterns”
Singleton
State
Factory
Proxy
…
09 Octobre 2003 Modéliser un site marchand avec UML et Together 30
31. Les diagrammes
...P re sent at ion.Ecr anCommand e <<singleton>>
...Ap p lic atio n.Cont r oleu rComman d es ...P re sent at ion.Ecr anP aiemen t
+effectuerPaiement():void -instance:ControleurCommandes=null
+validationCommande():void +saisirInfosCarte():void
#ControleurCommandes() +validationCommande():void
+passerCommande():void
+effectuerPaiement():void
Exemple : +verifCarte():void
+validationCommande():void
+getInstance():ControleurCommandes
diagramme de
classes de 0..*
Command e 0..*
conception -date:Date
Client
-modeReglement:int -nom:int
-delaiLivraison:int 0..* 1 -prenom:int
-fraisDePort:int commandesEnCours -email:int
<<singleton>> -montant:int
...Ap p lic atio n.Cont r oleu rP anie r +saisirInfos():void
+valider():void
-instance:ControleurPanier=null 1
#ControleurPanier()
+getPanier():Panier
+getInstance():ControleurPanier <<parameter>>
0..1
Cart eBanc aire
P anier -type:int
1
-dateValidite:int
-total:int -numero:int
+verifier():void
09 Octobre 2003 Modéliser un site marchand avec UML et Together 31
32. La démarche
De la conception préliminaire à la conception
détaillée
Dialogues
Pages PHP
JSP + FormBean + Page HTML
ASP.NET + WebForms
Contrôles
Pages PHP
Servlet + actions
CodeBehind …
Entités
Classes ou bibliothèques de fonctions PHP
EJB ou JavaBeans
Classes C# ou Serviced Components
09 Octobre 2003 Modéliser un site marchand avec UML et Together 32
33. Passage au code Java
09 Octobre 2003 Modéliser un site marchand avec UML et Together 33
37. L’outillage
e - lib r airie
Together ! c lie n t
acces formulaire de commande
recapitulatif commande
syst au t o p aie me n tse r vic e logist iq u e
passage de commande
ouverture connexion securisee
saisie infos carte
e-librairie (user)
recapitulatif transaction verification carte
Creer un compte validation commande
infos cryptees <<actor>>
<<actor>> S yste me d 'aut or isatio n
transaction validee S er vice logist iq ue
Rechercher des ouvrages
confirmation commande
Internaute <<extend>> <<extend>> nouvelle commande
4.1.1: infos cryptees
4.1.2: nouvelleCommande
Gerer son panier virtuel
<<extend>> Systeme d'autorisation 2.1.1: create 1.1.1: panier:=getPanier():Panier
<<control>>
3.1: verifCarte():void
de paiement <<control>> :Cont r oleu rP anie r
Commander des livres <<boundary>> :Cont r oleu rComman d es
:Ec ran Paie ment
<<extend>> 1.1: passerCommande():void 1.1.2: create(panier)
Client Gerer son compte
Service logistique
2.1: effectuerPaiement():void
Gerer ses commandes <<layer>> 3: saisirInfosCarte():void 4.1: validationCommande():void
1.1.3: create(nouvelleCommande)
<<boundary>>
P re se n t at ion 1: passerCommande():void :Ec ran Pan ier <<entity>>
no uvelle Co mmand e :Co mmand e
Suivre les commandes en cours
2: effectuerPaiement():void
<<layer>> 4: validationCommande():void
A p p lic atio n <<actor>>
Client
<<boundary>>
:Ec ran Co mmand e
Catalo gue <<layer>>
1 Me t ie r
...P re sent at ion.Ecr anCommand e <<singleton>>
Catalo gu e ...Ap p lic atio n.Cont r oleu rComman d es ...P re sent at ion.Ecr anP aiemen t
Clie n t
P an ie r +effectuerPaiement():void -instance:ControleurCommandes=null
1..* +validationCommande():void +saisirInfosCarte():void
Ed ite ur #ControleurCommandes() +validationCommande():void
T heme +passerCommande():void
1..*
nom +effectuerPaiement():void
nom pays +verifCarte():void
0..*
sousTheme <<layer>> +validationCommande():void
+getInstance():ControleurCommandes
0..1 1..* 1
S e r vic e s te c h n iq u e s
Livr e
validation[incomplete]
0..*
passer commande
titre Initialisee Command e 0..*
1..* est edite par
sousTitre Client
Aut eur ISBN -date:Date
-modeReglement:int -nom:int
nom 1..* a ecrit 1..* langue annulation -delaiLivraison:int 0..* 1 -prenom:int
dateParution validation[complete]
-fraisDePort:int
prenom commandesEnCours -email:int
prix -montant:int
<<singleton>>
Validee annulation ...Ap p lic atio n.Cont r oleu rP anie r +saisirInfos():void
+valider():void
-instance:ControleurPanier=null 1
prise en compte
#ControleurPanier()
annulation
+getPanier():Panier
+getInstance():ControleurPanier <<parameter>>
colis perdu ou incorrect En preparation
0..1
Cart eBanc aire
Incident incident mission depart mission P anier -type:int
after(6 mois) 1
-dateValidite:int
incident termine -total:int -numero:int
livraison[OK]
En cours de livraison Livree
+verifier():void
livraison[NOK]
09 Octobre 2003 Modéliser un site marchand avec UML et Together 37
38. Fin
Pour en savoir plus :
Les Cahiers du Programmeur
UML : Modéliser un site e-commerce
P. Roques, Eyrolles, 2002
Merci de votre attention !
pascal.roques@gmail.com
09 Octobre 2003 Modéliser un site marchand avec UML et Together 38