Upload
vinot-bernard
View
1.991
Download
0
Embed Size (px)
DESCRIPTION
UML - MOAMaitrise d'oeuvre ouvrage
Citation preview
Plan du coursIntroduction
Le problème, Les techniques objet, Genèse d’UML Intro UML
Les 13 diagrammes, les diagrammes expression de besoin, notion de modèle
Les cas d’utilisation (modélisation métier et application)
Les diagrammes statiquesLe diagramme de classe et de package
Les diagrammes dynamiquesSéquence, automate, activité,…
Etude de cas2
Le problème
3
Importance de l’expression des besoins
4
Source Borland (Juin 2003 à Juin 2004)
5
Il faut une méthode
Booch-93 Rumbaugh( OMT2)
Oct-950.8
Jacobson (use case - sdl)
Juillet-960.9
Janv-971.0
Nov-971.0
Sept-971.1 (OMG)
20001.4
20052.0
DOC-PDF UML1.3 = 4,7MBDOC-PDF UML2.0 = 5.8 MB
20062.1
6
UML
7
Les cycles de DVP
• Conceptualisation• Analyse• Conception• Codage• Tests unitaires• Intégration
8
ExpertMetier ExpertObjet
TrainOméoplasmose
Sténotype
ClassePolymorphisme
Relinker
Langagecommun
• Décrire ce que l’on doit faire(UC) => langage commun• Langage commun => Glossaire• Glossaire => Tout ce qui est mis dans un modèle doit avoir
une définition associée
9
Les UC :• Décrire les acteurs et ce qu’ils attendent du système• Décrire l’ensemble des messages entrant et sortant du système• Ne pas décrire comment on fait
• Décrire l’ensemble des contraintes• Réutilisation d’un autre système• Problème de capacité-volume (des chiffres)• Problème de temps de réponse (des chiffres)• Choix technique quelconque imposé
10
Architecte
Analyste-Concepteur
• Partir des diagrammes de UC• Trouver les classes d’analyse (Boundary et Control)
• Partir de la description des UC• Trouver les classes entity• Faire tourner le programme
• Diagramme de séquence• Cas nominal• Les cas d’exception
• Affiner le diagramme statique (attributs, opérations, nouvelles classes)
• Refaire des sous-systèmes• Affiner les classes complexes : Automate
RMQ : Ne pas se vautrer dans l’héritage
11
UML & Méthode
12
13
14
XP propose une un ensemble de pratiques organisées autour des principes suivants :
• Le client (maîtrise d'ouvrage) pilote lui-même le projet, et ce de très près grâce à des cycles itératifs extrêmement courts (1 ou 2 semaines).
• L'équipe livre très tôt dans le projet une première version du logiciel, et les livraisons de nouvelles versions s'enchaînent ensuite à un rythme soutenu pour obtenir un feedback maximal sur l'avancement des développements.
• L'équipe s'organise elle-même pour atteindre ses objectifs, en favorisant une collaboration maximale entre ses membres.
• L'équipe met en place des tests automatiques pour toutes les fonctionnalités qu'elle développe, ce qui garantit au produit un niveau de robustesse très élevé.
• Les développeurs améliorent sans cesse la structure interne du logiciel pour que les évolutions y restent faciles et rapides.
Regis Medina
Source : the corporate Use Of Object Technology
17
11
81714
11
7
6
2
2
5
IncreasedProductivity
Cost savings
Improvedinterfaces
Software reuse
Improvedapplicationmaintenance
Encapsulateexistingapplications
Develop strategicapplicationsquickly
Developapplications asrevenue source
Access new OSand tools
15
Dvp = 20%
Maintenance = 50%
C++ C++ C++ C C CV0 V1 V2 V0 V1 V2
Average Function LOC 6,66 6,2 6,11 29,62 32,5 37,11Min Function LOC 2 1 1 3 3 3Avg Cyclomatic Complex 1,66 1,59 1,59 5,88 6,25 6,56Avg Comparison Complex 0,25 0,24 0,3 1,38 1,62 2,22Avg Logic Flow Complex 1,91 1,83 1,89 7,25 7,88 8,78Avg Function Complexity 3,69 3,59 3,7 9 9,62 10,56eLoc/100 2,07 2,5 2,68 2,68 2,91 3,53eLOC 207 250 268 268 291 353
16
Les Concepts Objet
17
Une bonne société qui développe des programmes est celle qui fabrique des programmes de qualité qui satisfont les besoins des clients (livraison à temps, utilisation des ressources humaines et matérielles optimales)
Le but principal n’est donc pas de produire de beaux documents,ni de conduire de nombreuses réunions, ni de proclamer de beaux slogans, ni de gagner des prix Pulitzer sur les lignes de code;mais simplement de produire des programmes capables de satisfaire le client aujourd’hui et demain.
Tout le reste est secondaire
UML est fait pour:• Spécifier• Comprendre• Communiquer• Documenter
source : UML-User Guide
Un dvpObjet
18
Un modèle contient :• Des éléments de modélisation
• Des classes (reliées à d'autres classes) avec des opérations etdes attributs
• Des informations supplémentaires sur le comportement des classes (automates, activité)
• Des informations concernant le cahier des charges (UC)• La description des fichiers et des machines supportant l'application
• Des dessins (vues) explicatifs liés les uns aux autres• Des diagrammes de classes réduits• Des diagrammes montrant comment les objets se partagent le
travail (interaction)• Des diagrammes montrant les objets existant à un moment donné
• Toutes ces informations sont organisées dans des packages
19
20
Un modèle contient :• Un diagramme de Use Case
• Des diagrammes d’interraction• Des diagrammes d’automate• Des diagrammes d’activité• Des diagrammes de vues d’ensemble des interractions
• Des diagrammes de classes• Les contraintes techniques
Toutes ces informations sont organisées dans des packages
Introduction
21
22
Les diagrammes pour la définition des besoins
23
24
25
Navigateur
Définitions
Boutons génériques
Boutons Spécifiques
Les diagrammes
ClasseUse Case
Composants
26
Un stéréotype est une nouvelle classe d’un élément de modélisation qui est introduit au moment de la modélisation. Cela représente une sous classe d’un élémentde modélisation existant avec la même forme, mais avecune intention différente.
• Exemple : un acteur est "comme" une classe, mais il ne fait paspartie du système. Un acteur pourrait être un stéréotype d'une classe
• On peut stéréotyper les classes, les associations, les packages, …..• On peut associer un nouvel icône pour chaque nouveau stéréotype.
Z<<nouveauStereotype>>
27
28
{ceci est une contrainte}
Rmq : On peut écrire des contraintes en OCLUne contrainte est raccrochée à un élément de modélisation
Personne
+age: int age > 0
Diagramme de Use case
Un acteur est un rôle d’un ou plusieurs objetssitués à l’extérieur du système et qui interagissentavec lui pour remplir une fonctionnalité donnée de ce système.Un acteur caractérise le rôle joué par un objet àl’extérieur du système.
Uti lisateur
• Un acteur parle au système (Acteur principal)• Le système parle à un acteur (Acteur secondaire)• Un acteur est :
• Un humain (via une IHM)• Du soft• Du hard
30
Un Cas d’utilisation ( use case ) est une fonctionnalité importante pour un acteur remplie par le système et qui semanifeste par un ensemble de messages échangésentre le système et un ou plusieurs acteurs.
UtilisateurVerifierBonneMarche
CapteurTemperature
31
Description
32
• Titre et numérotation• Résumé• Les acteurs
– Acteur principal– Acteurs
secondaires• Pré-conditions• Description• Exceptions• Post-conditions
(3-5 pages)Ce n ’est pas une
description formelleMais doit être très détaillé
Ceci est l ’usagemais ne fait partiede la norme UML
33
Payer cash
Payer par carte
Manger
Demander facture
Maitre d'hotel
Prendre la commande
clientAller au restaurant<<include>>
<<include>>
Caissier
Payer
<<include>>
<<extend>>
SommelierCommander pinard
<<extend>>
Serveur
Retourner plat en cuisine
<<extend>>
34
35
Manger
Descriptions
A
A1()A2()A3()
B
B1()B2()
C
C1()C2()C3()C4()
Distribuer le comportement des fonctionnalitésaux méthodes des objets
36
User Stories et Use Cases formalisent les besoins utilisateurs et sont orientés ButIls font facilement l'objet d'ateliers de travail avec les utilisateurs pour les découvrir, les expliciterIls vont être priorisés et vont ainsi guider les développementsIls mettent en avant les rôles, les différents profils d'utilisateursIls ne traitent que des exigences fonctionnelles (les aspects non fonctionnels sont décrits dans les spécifications supplémentaires(contexte UP) et dans les "Constraints Cards" (contexte XP))Ils sont textuels et obéissent à des règles de construction très précises Ils ne traitent pas des aspects interface et ergonomieIls aident à organiser le modèleIls facilitent le choix du contenu des itérationsIls peuvent être rédigés par les analystes (UC) ou le client (US)
37
38
39
Cas d'utilisation :Essentiellement un ensemble d'interactions
Acteur: Élément externe qui interagit avec le système (humain ou
autre système) Scénario :
Une lecture particulière d'un cas d'utilisation, son instanciation Relation de communication :
Le vecteur de l'échange (l'interaction) entre acteur et système <<include>> :
Relation qui, lorsqu'elle existe entre deux cas, est obligatoirement appliquée. C'est une dépendance entre le cas source qui inclut . <<extend>> :
Relation de dépendance optionnelle. Il s'agit d'étendre les interactions d'un cas avec celles d'un autre. Spécialisation de cas :
La même finalité, mais obtenue par des interactions différentes .
Une société de vente par correspondance vous demande de développer sonsystème informatique. Ce système doit pouvoir prendre en compte descommandes passées par la poste et des commandes passées par internet. Ildoit suivre les expéditions qui ne sont effectuées que si le paiement est OK.Les paiements se font par carte bancaire dans le cas d'internet et par chèquedans le cas de la poste. Les paiements sont validés par un système bancaire appartenant à la société et existant. Il faut récupérer ce système. Lenouveau système est chargé aussi de la gestion de stocks, lorsqu'un articleatteint un seuil minimal, alors il faut passer une nouvelle commande aufournisseur adéquat. A la réception de la commande, la mise à jour de la base est faite par un employé. Dans le cas d'un paiement accepté et de stockdisponible, l'expédition est faite par un robot existant au quel il suffit depasser les coordonnées du client, et la liste des produits achetés. En cas d'indisponibilité, une lettre doit être envoyé au client.
40
La première étape de la définition d’un système d’informationconsiste donc à s’interroger sur l’organisation (l’entreprise) pourlaquelle ce système d’information fonctionne, sur son identité, sur ce qui en fait partie et sur ce qui n’en fait pas partie
Utilisé par L’entreprise
Comment fait l’entrepriseLes objets de l’entreprise
Utilisateur
Employés deL’entreprise
Ce que fait l’entreprise
41
42
Selon Alistair Cockburn, il existe trois niveaux principaux qu'il situe allégoriquement par rapport à un niveau de référence qui est "celui de la mer".
Mouette :Au-dessus de la mer, représente plutôt des cas d'utilisation
métier Mer:
Le cas d'utilisation "système" dans son acceptation classique : une situation qui génère une bonne valeur ajoutée pour l'un des utilisateurs (acteurs) ; une fonctionnalité au sens habituel du terme (un micro-onde offre deux fonctionnalités principales qui sont "Décongélation" et la "Cuisson"). Crabe :
Quelques interactions qui ne constituent pas vraiment une situation d'utilisation en tant que telle. Ce seront généralement des cas qui seront réinjectés dans le modèle via des relations include ou extend.
•De quelle entreprise s'agit-il? Trouver les acteurs, entités (objets), use case, les employés …..
• Voyageur• Métro• Station• Couloir• Client• Inspecteur• Wagon
• Guichetier• Panneau publicitaire• Conducteur• Clochard• Commerciaux• Voyager• Acheter• Louer
43
Diagramme de classe
• Statique :– Ne pas utiliser de verbes d'action pour relier les classes– Une classe isolée est une classe inutile– Doit être vrai tout le temps– Représente LE programme– On ne peut pas tout montrer sur un seul schéma
Un diagramme de classe montre la structure statiquedu modèle, les choses qui existent, leur structureinterne et les relations aux autres choses.
45
Personne
nom : Stringpoids : intsexetaille : intage : int = 0/ dateNaissance : String$ nbPersonne : int
Manger(calories : int, lipide : float)Dormir() : voidTravailler(duree : int) : int$GetNbPersonne() : int//FaireBonneAction()
Dentiste
adresseCabinet
Travailler()
Abstrait
Nom : type [= Initialisation]
Syntaxe libre
Attribut dérivé
Attribut de classe
Opération de classe
Responsabilité
{abstract}
46
Personne
nom : Stringpoids : intsexetaille : intage : int = 0/ dateNaissance : String$ nbPersonne : int
Manger(calories : int, lipide : float)Dormir() : voidTravailler(duree : int) : int$GetNbPersonne() : int//FaireBonneAction()
Personne
nom : Stringpoids : intsexetaille : intage : int = 0/ dateNaissance : String$ nbPersonne : int
Manger()Dormir()Travailler()$GetNbPersonne()//FaireBonneAction()
Personne
nom : Stringpoids : intsexetai lle : intage : int = 0/ dateNaissance : String$ nbPersonne : int
Personne
Manger()Dormir()Travai ller()$GetNbPersonne()//FaireBonneAction()
Personne
Manger()Dormir()Travailler()$GetNbPersonne()//FaireBonneAction()Personne
47
48
Personne
+nom+adresse+age
+travailler()
Dentiste
+adresse cabinet
+travailler()
Boulanger
+type de pain
+travailler()
Vehicule
+carte grise
Avion
+aile
Bateau
+quille
Hydravion
Type de pain<<enumeration>>
+baguette+gros pain+poilane
Association & Dépendance
49
Les associations (relations) connectent deux ou plusieurs classes.
Elles peuvent porter un nom.Si une association connecte une classe à elle-
même, elle est dite réflexive.Une classe peut simplement dépendre d’une
autre classe
Personne
+Guerir(m: Medecin)
EcoleformationMedecin
Personne
+nom+adresse+age
+travailler()
+enfants
+parent
0..*
2
Personne SocieteEst Employée par
Nom d'association
Personne SocieteEst Employée par
-employeur-employeNom de rôle
Personne
employeur : Societe
Societe
employe : Personne
SocietePersonne1..* 0..1
-employe -employeur
1..* 0..1Cardinalité-Multiplicité
Personneemployeur : Societe
Societeemploye : ListeOfPersonne
NavigabilitéSocietePersonne1..*
-employes
1..*
Societeemployes : Personne
Personne
50
51
PersonneEntreprise
**
Contrat de travail
+date embauche+titre-salaire
52
Personne
Coeur
1
J ambe
2
Entreprise
ANPE
*
1
{ou}
53
Un package est un regroupement des éléments du model. Cela s’applique à tous les élémentsUML ainsi qu’aux différents diagrammes.Les packages sont la base de la gestion deconfiguration
P0
On peut montrer ce qu’il y a à l’intérieur du packageUne classe appartient à un package et un seule, mais peutêtre utilisée dans d'autres package.
P1
+ C1C2C3
P2
global
55
Notion de package
• Un paquetage est un regroupement d’éléments de modélisation, mais aussi une encapsulation de ces éléments. A l’image des classes, les paquetages possèdent une interface et une réalisation.
• Chaque élément contenu par un paquetage possède un paramètre qui signale si l’élément est visible ou non à l’extérieur du paquetage.
• Les valeurs prises par le paramètre sont : public ou implémentation (privé).
56
Cela signifie que :• Un élément de P0 au moins
utilise un élément publique de P3 et de P1
• Un élément de P3 au moins utilise un élément publique de P1
• P0, P3 et P1 peuvent utiliser les éléments publiques de p2
P2
global
P1
+ C1C2C3
P0
P3
57
K
L
A B
I
E
J
G
D
H
C
F
58
K
L
A B
I
E
J
G
D
H
C
F
59
Environnement
Métier
Fonctionnel
B
C
E
Control
Fonctionnel
Entite
Métier
Boundary
Environnement
60
Aiguilleur
Pilote
Decoller
Atterrir
Aeroport
Voler
61
Aiguilleur
Pilote
Decoller
Atterrir
Aeroport
VolerCtrlVoler
CtrlDecoller
CtrlAtterrir
DecollerForm
VolerForm
AtterrirForm
AeroportForm
AiguilleurForm
TrainAtterrissage
Reacteur
Frein
62
Immeuble
Famille
Appartement
Pièce
Cuisine
Salon
Gardemanger
Chien
Chat
Animal
Location
Vente
Nourriture
Lapin
Whisky
Mariage
CompteBanquaire
Personne
63
Diagrammes dynamiques
• Diagrammes d'interaction (Séquence collaboration) servent à montrer comment les objets se parlent les une aux autres.Ils montrent le déroulement d'un ou d'une partie d'un Use case(cas nominal, cas des exceptions, …)
• Automates servent à montrer le comportement d'une classe qui réagit différemment selon son état.
• Activités montrent le déroulement d'une méthode d'une classe oucelui d'un Use case
65
: Clienta : A b : B c1 : C : C
A2( )
A3( )
B2( )C2( )
C4( )
new
66
a : A
: Client
b : B
c1 : C
: C
1: A2( )
2: A3( )
3: B2( )
4: C2( )5: C4( )
67
68
69
Un automate est accroché à une classe (ou un UC) et est composé d'états etde transitions. Les transitions permettent de passer d'un état àun autre …
Arret Marche
On
Off
Casse
Casse
70
Etat
entry/ Action1exit/ Action2on Ev1/ Action2do/ Activité
E1 E2Ev1( a1,a2 )[ i == 0 ] / ActionDeTransition ^Cible.SendEv2(a3, a4)
Événement qui déclenche la transition
Garde
Action effectuée sur la transition
Envoie de Ev2 à un objet Cible
Action en entrant dans l'état
Action en sortant de l'étatAction déclenchée sur réception de Ev1
Activité
71
72
73
E1
ST1
entry: i = 0exit: i++
ST2
entry: i++exit: i++on E4: i ++
E1 / i++
ST3ST4
on E2: i = i - 2
E3[ i == 5 ]
E2
E1
E1
E3
E3
E1E3E1E3E1E2E1E2
E3
74
75
76
• Les diagrammes d’interaction générale fusionnent les diagrammes d’activité et de séquence en autorisant l’utilisation de fragments (diagrammes de séquence) avec des points de décision et des flots de contrôle (diagrammes d’activité).
77
Interaction Diagram
Requirements
Sequence
Collaboration
Use Cases
GUI
Class diagram
State Activity
Implementation
Component
Deployment
Code
Code
Code
Code
Tests
78
79
Patron du dossier d'expression des besoinsProjet<<nom du projet>>Version < ?. ?>Historique des révisionsIntroductionPrésentation du documentObjectifs du documentContenu du documentDescription du Métier (Optionnel) Les entités métiers (diagramme de classe) Les processus métiers (diagramme d’activité + états des objets)Description du produit Les objectifs du produit, les avantages qu'apporte le produit Les fonctionnalités du produit (UC) Les utilisateurs du produit et leurs caractéristiques (acteurs humains) Les contraintes du produit, règles métier Les hypothèses (conditions d'utilisation) et les dépendances (acteurs système)
80
Les besoins-exigences non fonctionnelsExigence en terme de qualité Utilisabilité (Maniabilité)[Par exemple: le temps de formation nécessaire à la prise en main du produit, exigence de standardisation, …] Fiabilité (Conformité)[On trouve ici les caractéristiques principales de la fiabilité comme, par exemple: temps moyen entre 2 pannes, le temps moyen d'intervention,…] Performance (Efficacité)[Par exemple: Temps de réponse moyen et maximal pour une transaction, le nombre d'utilisateurs simultanés, les fonctionnements dégradés acceptables, l'utilisation des ressources (mémoire, disque, communications,...) ] Documentation et aide en ligneAutres exigences Contraintes de conception (langage, machine, BD persistence,…..) Les composants non développés dans l'application (Réutilisation) Les interfaces (API, Corba,….) acteurs secondaires? Les interfaces utilisateurs, érgonomie…..construites à partir des boundary
81
Objectifs : décrire les besoins d’un système informatique. La première description est faite par le client. Cas de l’étude : logiciel de Gestion d’Affaires (GA) demandé par un client tertiaire, 250 personnes, 10000 affaires). Le logiciel de gestion d’affaires doit permettre de gérer, par collaborateur, les affaires dont il s’occupe. Une affaire peut posséder un nom, un client, une date de création, une date de fin prévue, un état (en cours, en retard, en cours mais en retard, abandonnée, terminée), une description.Les actions possibles sur une affaire sont : création, modification, suppression.Les affaires devront être présentées en 4 listes : en cours et en retard, en retard, toutes, terminées.La sélection doit se faire par collaborateur, ou bien par client.
82
1. Faire un diagramme de Use Case2. Faire un diagramme d’activité, présentant les étapes pour créer, modifier et supprimer une affaire.3.Faire un diagramme de classe4.Faire un Automate concernant les affaires5.Faire un diagramme de séquence6.Dessiner l’IHM
1
23
4
65
83
Robot
ClientPoste
ClientInternet
Verifier StockFournisseur
Passer Commande Internet
include
Passer Commande Posteinclude
SystemBancaireVerifier Paiement
Include
Include
Expedier Commande
Extend
AdministrateurGérer Stocks et fournisseurs
8484
85
86
87
88
89
90
91
92
93
94
95
Business Actor(client)
• Voyageur• Métro• Station• Couloir• Client• Inspecteur• Wagon
• Guichetier• Panneau publicitaire• Conducteur• Clochard• Commerciaux• Voyager• Acheter• Louer
Business Worker(employée)
• Voyageur• Métro• Station• Couloir• Client• Inspecteur• Wagon
• Guichetier• Panneau publicitaire• Conducteur• Clochard• Commerciaux• Voyager• Acheter• Louer
96
Business use caseLes fonctions
• Voyageur• Métro• Station• Couloir• Client• Inspecteur• Wagon
• Guichetier• Panneau publicitaire• Conducteur• Clochard• Commerciaux• Voyager• Acheter• Louer
• Voyageur• Métro• Station• Couloir• Client• Inspecteur• Wagon
• Guichetier• Panneau publicitaire• Conducteur• Clochard• Commerciaux• Voyager• Acheter• Louer
Business Entité(les objets)
97
98
9999
100
Utilisateur
Gerer les affaires
101
Selectionner un Client ou un collaborateur
Choisir un état
en coursen retarden cours mais en retardterminéeabandonnée
Selectionner une affaire
[N OK]
Creer une Affaire
[NOK]
Modifier l'affaire
[OK]
Afficher les affaires correspondantes
nomclient(si non selectionné)collaborateur(si non selectionné)date de findescription
nomclientcollaborateurdate de débutdate de finetatdescription
102
Affaire
+nom+description+date debut+date fin+etat: EtatEtat
<<enumeration>>
+en cours+en retard+en retard et en cours+abandonné+terminée
Client
+nom
Collaborateur
+nom
+client
1
0..*
+collaborateur0..1
1..*
103
en cours en cours et en retard
[ date>date de fin ]
terminée
fin
fin
Abandonnée
abandonner abandonner
en retard
attendre
reprendre
attendre
[ date<date de fin ]
La date de fin a été repoussée
104
actif
en cours en cours et en retarden cours en cours et en retarddate > date fin
date < date fin
terminée
abandonnée
en retard
attendrereprendre
105
: Utilisateur
GA
Selectionner Client/Collaborateur()
Selectionner un état()
Rechercher des Affaires()
Afficher les afffaires()
Selectionner une affaire()
Afficher les infos de l'affaire()
Modifier un ou plusieurs champps de l'affaire()
Valider la ou les modifications()
106
delete valider