You are on page 1of 28

Analyse par Objets avec UML

(Unified Modeling Language)


Pr. Jean-Marc Jzquel
IRISA - Univ. Rennes I
Campus de Beaulieu F-35042 Rennes Cedex Tel : +33 299 847 192 Fax : +33 299 842 532 e-mail : jezequel@irisa.fr http://www.irisa.fr/prive/jezequel
1

Problmatique du logiciel moderne


Importance des aspects non fonctionnels
systmes rpartis, parallles et asynchrones qualit de service : fiabilit, latence, performances...

Flexibilit accrue des aspects fonctionnels


notion de lignes de produits (espace, temps) Versions (Temps)
1.4 1.3 1.2 1.1 1.0 1.4 1.3 1.2 1.1 1.0 1.0 1.1 1.2 1.4 1.3 1.2 1.1 1.0 1.4 1.3 1.2 1.1 1.0 1.4 1.3 1.2 1.1 1.0 3

Time to Market!

Variantes (Fonctionalits)

Activits du dveloppement de logiciels


Valider le logiciel Assembler les composants Dvelopper un des composants Dfinir comment il sera dvelopp Dfinir ce qui sera dvelopp

Lorganisation de ces activits et leur enchanement dfinit le cycle de dveloppement du logiciel


4

Cycle de vie en V normalis AFNOR


Analyse
Expression du besoin Analyse dtaille

Validation
Validation Mise en uvre

Conception
Etude technique pralable Conception prliminaire Conception dtaille

Intgration
Intgration Tests d'Intgration

Ralisation
Codage Mise au point Tests unitaires

Variante US : Cycle en cascade


5

Problmes avec le processus classique...

Ce que demande lutilisateur

Ce que lanalyste a spcifi

Ce que prvoit le concepteur

Ce que le programmeur a crit

Ce que la mise au point a fait

Ce que lutilisateur na pas 6 su exprimer

Problmes du processus classique


Organisation industrielle hrite du XIXme sicle
rassurant pour les managers hirarchie malsaine dans les rles antinomie : Coplien s organizational pattern
Architects Also Implement

cycle management <> cycle dveloppement linarit implicite


temps d approbation des documents => effet tampon cot de la (non-) modification d un document final irraliste pour un projet innovant, donc risques

Cycle de vie en spirale


Analyse dtaille

Conception V1 Ralisation

Analyse prliminaire (de risque) V2 Validation Intgration

Synergie avec approche par objets


8

Intrts du cycle de vie en spirale


Bien adapt au dveloppements innovants
les progrs sont tangibles : c est du logiciel qui tourne et pas seulement des kilos de documents possibilit de s arrter temps , i.e. avant que l irralisabilit du projet ait cre un gouffre financier

Moins simple manager


difficile grer en situation contractuelle mal contrl => on retombe dans le hacking

Production des incrments asservie sur 2 parmi 3 :


priode (e.g. release toutes les 2 semaines) fonctionnalits (releases dcoups suivant use-cases) niveau de qualit (problme de la mesure)
9

Exemple du RUP
RPW
Realtime ROOM Performance testing Business Engineering Configuration & change Mgmt

RUP 2000 RUP 5.5 Rational Unified Process 5.0 Rational Objectory Process 4.1 Rational Objectory Process 4.0

2000

UML 1.4

1999

UML 1.3 Project management

1998

Objectory UI design Data Engineering UML 1.1

1997

Requirements College 1996 1995 SQA Process

OMT Booch

UML 1.1

Rational Approach

Objectory 3.8

10

Principes du Rational Unified Process


Dveloppement Itratif Gestion prcise des besoins exprims Utilisation darchitectures de composants

Best Practices

Modlisation Visuelle Contrle qualit en continu

Contrle des changements

Point cls
Dvelopper seulement ce qui est ncessaire Minimiser la paperasserie flexibilit
besoins, plan, utilisation des ressources, etc

Apprendre de ses erreurs prcdentes Rvaluer les risques rgulirement tablir des critres de progrs
objectifs et mesurables

Automatiser

12

Architecture du processus
2 structures orthogonales Structure statique
Workers, artifacts, activities, workflows authoring et configuration du processus SPEMsi, ingnierie des mthodes et des processus

Structure dynamique
Structure du cycle de vie : phases, itrations Mise en oeuvre du processus : planification, excution gestion des activits, suivi de projet

13

Les 2 dimentions du processus


Dynamic structure
Phases Technical Disciplines
Business Modeling Requirements Analysis & Design Implementation Test & Assessment Deployment
Inception Elaboration Construction Transition

Static structure

Supporting Disciplines
Configur. & Change Mgmt Project Management Environment

Iterations->

Preliminary Iteration(s)

Iter. #1

Iter. #2

Iter. #n

Iter. Iter. #n+1 #n+2

Iter. #m

Iter. #m+1

14

Phases du dveloppement itratif


Major Milestones Inception Elaboration Construction Temps Transition

Inception: dfinition de la port du projet Elaboration: planification du projet, spcification des fonctionnalits, architecture de base Construction: ralisation du produit Transition: transfert du produit vers les utilisateurs
15

Itrations
Livraison dexcutables Inception Elaboration
Devel. Iteration

Construction
Devel. Iteration Devel. Iteration

Transition
Transition Transition Iteration Iteration

Preliminary Architect. Architect. Iteration Iteration Iteration

Une itration est une squence dactivits avec un plan bien tabli et un critre dvaluation, rsultant en la livraison dun logiciel excutable.

16

Phases et itrations : 2 exemples


Petit projet de commerce lectronique
Intgration un mainframe 5 personnes

Grand projet dinfrastructure


Gros travail darchitecture ncessaire 20 personnes
Project Length 3-4 months Iteration Length 2-3 weeks

No. of Iterations Inception Elaboration Construction e-business infrastructure 0.2 1 1 3 3 3

Transition 1 2

9-12 months 5-7 weeks

17

Vision gnrique dun cycle UML


INCEPTION
Cas d'utilisation Modle des objets du domaine Interfaces Maquettes

VALIDATION
Validation technique Validation par les utilisateurs

UML
Modle utilisateur Modle statique Modle dynamique Modle dimplantation

ELABORATION
Architecture Modles des objets et scnarios Rgles de transformation (Design patterns)

CONSTRUCTION
Modle dtaill des objets Scnarios dtaills Algorithmes Codage - Mise au point Intgration

18

Processus de dveloppement avec UML


Approche itrative, incrmentale, dirige par les cas dutilisation
Expression des besoins Analyse
Elaboration d un modle idal

Conception
passage du modle idal au monde rel

Ralisation et Validation

19

Temprature des diagrammes UML


Temprature

Diagramme de cas dutilisations Diagramme de classes Diagramme de paquetages Diagramme de squences Diagramme de collaborations Diagramme dtats-transitions Diagramme dactivits Diagramme dimplantation
Besoins Conception V&V Analyse Ralisation

20

Objectif dune analyse avec UML


Construction d un modle danalyse Modle unique mais quadri-dimentionnel
Aspects utilisation du systme Aspects statiques du systme Aspects dynamiques du systme (comportemental) Aspects dploiement et implantation

21

10

Construction dun modle danalyse


Hypothse dun monde idal
processeur suffisamment rapide mmoire suffisamment grande et rapide communications rapides et fiables pas de dfaillances

Slection des aspects cruciaux dun problme Pas de solution unique :


modlisation = interprtation Quoiquon en dise, dans la vie scientifique, les problmes ne se posent pas deux-mmes. Rien ne va de soi. Rien nest donn. Tout est construit. G. Bachelard
22

Modlisation UML
Modlisation selon 4 points de vue principaux :
Vision utilisateur du systme
Cas dutilisation

Aspects statiques du systme


Description des donnes et de leurs relations Structuration en paquetages

Aspects dynamiques du systme (comportemental)


Diagramme de squences (scnarios) Diagramme de collaborations (entre objets) Diagramme dtats-transitions (Harel) Diagramme dactivits

Vision implantation
Diagramme de composants et de dploiement
23

11

Etude de cas
Un serveur de runions virtuelles
Adaptation du concept d'IRC un contexte de runions de travail au sein d'une entreprise gographiquement disperse

Cette tude de cas va nous servir de fil conducteur pour dcrire un processus d'analyse et de conception avec UML

24

Cahier des charges (1/2)


Il s'agit de raliser la partie serveur d'une application client-serveur permettant de faire des runions virtuelles multimdia sur Internet. L'objectif de cette application est de permettre d'imiter le plus possible le droulement de runions de travail classiques. Cependant, dans la premire version de ce projet, les interventions des participants se feront en mode mono-mdia seulement (i.e. changes en forme textuelle). Le serveur devra permettre de planifier et de grer le droulement de plusieurs runions simultanes. Des programmes clients existeront dans l'avenir pour plusieurs plate-formes (Mac, Windows, Unix) afin de permettre des personnes dsirant organiser des runions virtuelles ou y participer de dialoguer avec le serveur en utilisant un protocole ad hoc dvelopp au dessus de IP.

25

12

Cahier des charges (2/2)


Aprs s'tre connect au serveur ( l'aide d'un nom de login et d'un mot de passe mmoris par le systme), une personne a la possibilit de planifier des runions virtuelles (choix d'un nom, dfinition du sujet, date de dbut et dure prvue, ordre du jour), de consulter les dtails d'organisation d'une runion, de les modifier (seulement l'organisateur), d'ouvrir et de clturer une runion (seulement l'animateur), d'entrer (virtuellement) dans une runion prcdemment ouverte, et d'en sortir. En cours de runion, un participant peut demander prendre la parole. Quand elle lui est accorde, il peut entrer le texte d'une intervention qui sera transmise en ``temps-rel'' par le serveur tous les participants de la runion. Plusieurs sortes de runions doivent pouvoir tre organisables :
Runions standards, avec un organisateur qui se charge de la planification de la runion et dsigne un animateur charg de choisir les intervenants successifs parmi ceux qui demandent la parole. Runions privs, qui sont des runions standards dont l'accs est rserv un groupe de personnes dfini par l'organisateur Runions dmocratiques, qui sont planifies comme des runions standards, mais o les intervenants successifs sont choisis automatiquement par le serveur sur la base d'une politique premier demandeur-premier servi.
26

Dmarche de modlisation avec UML


Construction du diagramme de cas dutilisations
Grande dcoupe fonctionnelle (10% de leffort)

Construction du diagramme de classes


partir des noms des donnes du problme (30%)

Construction de diagrammes de squences et de collaborations


instances des cas d utilisation (25%)

Gnralisation laide de diagrammes dtatstransitions


partir des diag. Squences (15%)

Affiner et prciser la solution (20%)


27

13

Cas dutilisation
Grande dcoupe fonctionnelle
pilote les incrments dans la spirale chaque incrment correspond la ralisation d un cas d utilisation

1 diagramme global + texte 10 lignes / cas

28

Diagramme de cas d'utilisations


ServeurRunion
Connexion * Utilisateur * * * * Planification Organisateur * Tous les cas d'utilisation <<utilisent>> le cas connexion

Consultation

Animation * Animateur EntreSortie * * Intervention * Participant * * * *

29

14

Exemple de cas d'utilisation : Planification


La planification d'une runion virtuelle est effectue par une personne jouant le rle d'organisateur pour cette runion. Ceci consiste crer une nouvelle runion dans le systme (ou la mettre jour si elle existe dj) en faisant le choix d'un nom, la dfinition du sujet, de la date de dbut et la dure prvue, ainsi que l'ordre du jour.

30

Identifier les classes dobjets

Processus de construction du diagramme de classes

Garder les bonnes classes constitution du dictionnaire de donnes

Identifier les associations.


Garder les bonnes associations

Identifier les attributs.


Garder les bons attributs

Raffiner au moyen de lhritage


Gnralisations et raffinages

Itrer la modlisation Grouper les classes en modules


31

15

Identification des classes


A laide des noms des donnes du problme
processus de remue-mninges (brainstorming)

Eliminer les classes :


redondantes (noms synonymes) non pertinentes (vs. le modle) trop vagues (non rifiable facilement) attributs, oprations, rles de relations constructions lies limplantation

32

Souligner les noms dans le cahier des charges


Il s'agit de raliser la partie serveur d'une application clientserveur permettant de faire des runions virtuelles multimdia sur Internet. L'objectif de cette application est de permettre d'imiter le plus possible le droulement de runions de travail classiques. Cependant, dans la premire version de ce projet, les interventions des participants se feront en mode monomdia seulement (i.e. changes en forme textuelle). Le serveur devra permettre de planifier et de grer le droulement de plusieurs runions simultanes. Des programmes clients existeront dans l'avenir pour plusieurs plateformes (Mac, Windows, Unix) afin de permettre des personnes dsirant organiser des runions virtuelles ou y participer de dialoguer avec le serveur en utilisant un protocole ad hoc dvelopp au dessus de IP.
33

16

Classes potentielles
Serveur Application Runion Internet Objectif Droulement Version Projet Intervention Participant Mode Programme Plate-formes Personne Protocole Implantation Redondant serveur OK Implantation Non pertinent Action Implantation Non pertinent OK (?) Rle relation Personne-Runion Implantation Implantation Implantation OK Implantation
34

Recherche des phrases verbales Eliminer les relations :


Identification des relations entre classes

entre classes limines non pertinentes ou lies limplantation qui sont en fait des actions pouvant tre drives dautres relations Raffiner la smantique des relations ajouter les rles qualifier les relations (slecteur) spcifier la multiplicit

35

17

Identification des attributs


Proprits dobjets individuels
rechercher laide des adjectifs (couleur, poids...) ou propositions substantives du problme

Eliminer les attributs non ncessaires ou incorrects


sils sont en fait des objets slecteurs de relations identificateurs (clef de BD) attributs de relations valeurs internes ou dtails dimplantation

36

Raffiner au moyen de lhritage


Gnralisation laide de super-classes
Recherche de classes avec des attributs, relations ou oprations similaires

Spcialisation laide de sous-classes


Diffrentes variantes dune mme classe
Runion prive, dmocratique

sous-classe ou attribut pour distinguer ?

37

18

Diagramme de classes d'analyse


-organise Personne +login : String +password : String +connect : bool 1 * -participe Runion +nom : String +sujet : String +agenda : String +dbut : Date +dure : int

* * * 1

-anime

RunionStandard

RunionDmocratique

-{ordered} -estAutorisDans RunionPrive

demandeParoleDans

38

Itrer la modlisation
Classes manquantes ou en trop
asymtries : ajout de classes par analogies scinder les classes disparates en classes plus lmentaires A quoi sert une classe si pas dattributs ou doprations?

Relations manquantes, en trop ou mal places


si aucune opration ne traverse une relation...

Attributs
accder un objet par un attribut -> relation qualifie

Il faut parfois attendre davoir fait les autres vues pour pouvoir itrer
39

19

Diagrammes dynamiques
Pour chaque cas d utilisation
un scnario nominal (diagramme de squence)
tout se passe bien

quelques scnarios exceptionnels


montrent des variations sur le scnario optimal

Alternativement (Catalysis)
description par pre/post de l tat du systme avant/aprs chaque occurrence d vnement

40

Exemples de scnarios : Cas d'utilisation Connexion


Connexion Nominale Connexion Errone
ServeurRunionVirtuelle Utilisateur connecte("Alice","3333") connecte("3333") Alice : Personne Utilisateur connecte("Alice","3333") connecte("3333") ServeurRunionVirtuelle Alice : Personne

ok connect erreur("dja connect")

erreur("dja connect")

Connexion Nouvelle

ServeurRunionVirtuelle Utilisateur connecte("Alice","3333") connecte("3333") Alice : Personne

ok connect

41

20

Exemples de scnarios : Cas d'utilisation Planification


CreerR1Nominal ServeurRunionVirtuelle Alice : Organisateur plannifie("R1","Avancement","01/02/05-10:00",1,"divers") make("R1",...) r1 : runion Alice : Personne

SetAsOrganisateur(r1) OK

CreerR1Erron

ServeurRunionVirtuelle Bob : Organisateur plannifie("R1","Avancement","01/02/05-10:00",1,"divers")

r1 : runion

Erreur ("dj existante")

42

Exemples de scnarios : Cas d'utilisation Animation 1/3


AnimerNominal {r1.organisateur=Alice}

ServeurRunionVirtuelle Alice : Animateur ouvre("R1") ouvre(Alice)

r1 : runion

Alice : Personne

OK

ferme("R1") ferme(Alice) OK

43

21

Exemples de scnarios : Cas d'utilisation Animation 2/3

AnimerNonAutoris

{r1.organisateur<>Alice}

ServeurRunionVirtuelle Alice : Animateur ouvre("R1")

r1 : runion

Alice : Personne

Erreur("Non autoris")

44

Exemples de scnarios : Cas d'utilisation Animation 3/3


AnimerReunionDemocratique ServeurRunionVirtuelle rd : RunionDmocratique DateOuverture ouvre()

{rd.dateFermeture-rd.dateOuverture=rd.dure} DateFermeture ferme()

45

22

Exemples de scnarios : Cas d'utilisation EntreSortie 1/4


EntreSortieNominal

ServeurRunionVirtuelle Paul : Participant entre("R1") entre(Paul)

r1 : runion

Paul : Personne

OK

sort("R1") sort(Paul) OK

46

Exemples de scnarios : Cas d'utilisation EntreSortie 2/4

SortieImpossible

{r1.participants.excludes(Paul)}

ServeurRunionVirtuelle Paul : Participant sort("R1")

r1 : runion

Paul : Personne

Erreur("Non participant")

47

23

Exemples de scnarios : Cas d'utilisation EntreSortie 3/4

EntreImpossible {not r1.ouverte()}

ServeurRunionVirtuelle Paul : Participant entre("R1")

r1 : runion

Paul : Personne

Erruer("Runion non ouverte")

48

Exemples de scnarios : Cas d'utilisation EntreSortie 4/4

EntreInterdite

{not rp.personneAutorise(Paul)}

ServeurRunionVirtuelle Paul : Participant entre("RP")

rp : RunionPrive

Paul : Personne

Erruer("Participation non autorise")

49

24

Construction des diagrammes dtats


Gnralisation pour une classe donne de l ensemble des scnarios qui mettent en jeu ses instances
en suivant les transition de l automate, on doit pouvoir retrouver tous les scnarios

50

Diagramme d'tats : Runion


planifier(p)[p=organisateur] entrer(p)[autoris(p)]

planifier(p)

Planifie

ouvrir(p)[p=animateur]

Ouverte

sortir(p)[participe(p)]

cloturer(p)[p=animateur]

Ferme

51

25

Diagramme d'tats : Runion dmocratique


planifier(p)[p=organisateur] entrer(p)[autoris(p)] after(dbut-now())

planifier(p)

Planifie

Ouverte

sortir(p)[participe(p)]

after(dure)

Ferme

52

Diagramme d'tats : Personne


EnRunion
entre(r)[r.autoris(self)]

connecte(passwd)

Connect

Passif
demandeParole termine

connecte(passwd)

dconnecte

relche

Parlant
dtruire

Attente

Dconnect

dconnecte contribue

accordeParole

53

26

Conseils pratiques
Rflchir au problme avant de commencer
Soigner le nommage, insister sur le nommage des relations et des rles

Faire simple!
Things must be as simple as possible, but no simpler. A. Einstein viter toute complication nuisible
utiliser les qualifieurs viter les relations ternaires, quaternaires (trop complexe) se dgager de limplmentation : raisonner objets, classes, messages, relations, attributs, oprations

ne pas sinquiter si les possibilits de la notation ne sont pas toutes exploites


54

Conseils pratiques (suite)


Approche incrmentale
Itrer Confronter ses modles aux autres Savoir s'arrter avant datteindre la perfection...
prise en compte qualit (niveau de prcision), cots, dlais... asservissement au processus de dveloppement

Faire simple (encore)


Un bon modle nest pas un modle o lon ne peut plus rien ajouter, mais un modle o on ne peut plus rien enlever. (daprs A. de St-Exupry)

55

27

Cas d utilisation

Critres de qualit dun bon modle danalyse avec UML (1/2)


environ 6 cas, nommage correct des acteurs (noms) et des cas (actions) pour chaque cas, prsence d un court texte d explication compltude vs. Cahier des charges

Diagramme de classes
nommage correct des classes (noms) dfinitions prsentes dans un dictionnaire nommage de toutes les relations, prsence des cardinalits attributs seulement de types simples non duplication attributs/relations (utilisation hritage)
56

Diagrammes de squence

Critres de qualit dun bon modle danalyse avec UML (2/2)


attachs un cas d utilisation pour chaque cas d utilisation,
prsence d un scnario nominal quelques scnarios exceptionnels

chaque opration (message reu par un objet) dfinie dans la classe correspondante du diagramme statique

Diagrammes d tats
chaque automate est attach une classe chaque attribut/opration utilise sur l automate doit tre dfini dans la classe englobante en suivant les transition de l automate, on doit pouvoir retrouver tous les scnarios
57

28

You might also like