212
Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M Huchard T. Libourel [email protected] [email protected]

Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel [email protected] [email protected]

Embed Size (px)

Citation preview

Page 1: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Méthodologie objet

UML et RUP : un survolIUP GMI 2ième année

2005/2006

M Huchard T. [email protected] [email protected]

Page 2: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Plan

• Cours 3Modèle dynamique Modèle d’implémentation

• Cours 1IntroductionPrésentation d’UMLModèle fonctionnel (utilisation)

• Cours 2Modèle structurel

• ANNEXESProjection vers les Bases de Données Projection vers la programmationMéthodologie (RUP)

Page 3: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Plan

• Cours 1IntroductionPrésentation d’UMLModèle fonctionnel (utilisation)

Page 4: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Introduction

Modélisation

Produire une représentation simplifiée du monde réel pour :

• accumuler et organiser des connaissances,

• décrire un problème,

• trouver et exprimer une solution,

• raisonner, calculer.

Page 5: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Introduction

En informatique, Résoudre le hiatus entre :

le réel

le monde informatique

• Évolutif

• Ambiguïté

• Langages codifiés

• Sémantique unique

Page 6: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Introduction Difficultés de la modélisation

Problèmes des spécifications parfois imprécises, incomplètes, ou incohérentes

Taille et complexité des systèmes importantes et croissantes

les besoins et les fonctionnalités augmentent

la technologie évolue rapidement les architectures se diversifient assurer l’interface avec le métier (domaine d’application)

Page 7: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Évolution des applications évolution des besoins des utilisateurs réorientation de l'application évolution de l'environnement technique (matériel et logiciel)

Problèmes liés à la gestion des équipes taille croissante des équipes spécialisation technique spécialisation métier

Introduction Difficultés de la modélisation

Page 8: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Introduction

Les méthodes = des guides structurants

• Décomposition du travail

• Organisation des phases

• Concepts fondateurs

• Représentations semi-formelles

Assurent une démarche reproductible pour obtenir des résultats fiables

Page 9: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Introduction

Décomposition du travail

• Phases

analyse, conception, codage, validation, etc.

• Niveaux d’abstraction

conceptuel (besoins)

logique (solution informatique abstraite)

physique (solution informatique concrète)

Page 10: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Introduction

Organisation du travail

• Processus de développement

Phases séquentielles

Itération sur les phases

Page 11: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Introduction

Concepts fondateurs

• Fondent l’approche du problème et l’expression de la solution

Classe, signal, état, fonction, etc.

Page 12: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Introduction

Représentations semi-formelles

• Représentations partiellement codifiées basées sur les concepts fondateurs

diagrammes, formulaires, etc.

• Support de différentes activités

réflexion, spécification, communication,

documentation, mémorisation (trace)

Page 13: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Une méthode d’analyse et de conception propose une démarche qui distingue les étapes du développement dans le cycle de vie du logiciel (modularité, réduction de la complexité, réutilisabilité éventuelle, abstraction)

s’appuie sur un formalisme de représentation qui facilite la communication, l’organisation et la vérification

Le langage de modélisation produit des documents (modèles) qui facilitent les retours sur conception et l’évolution des applications

Introduction

Pour résumer …

Page 14: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Plan

• Cours 1IntroductionPrésentation d’UMLModèle fonctionnel (utilisation)

Page 15: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

• Langage de modélisation véhiculant en particulier

les concepts des approches par objets

classe, instance, classification, etc.

mais intégrant d’autres aspects

associations, fonctionnalités, événements,

états, séquences, etc.

UML - Unified Modeling LanguageUML - Unified Modeling Language

Page 16: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

• Simplicité• Facilité pour coder et réutiliser• Modèle plus proche de la réalité

–description plus précise des combinaisons

(données, opérations)–décomposition basée sur “classification naturelle”

–facile à comprendre et à maintenir• Stabilité

–de petites évolutions peuvent être prises en compte sans changements massifs

UML = Bénéficier des qualités UML = Bénéficier des qualités des approches par objetsdes approches par objets

Page 17: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Omniprésence technique de l’Objetdans les langages de programmation, les bases de données, les interfaces graphiques, ... et les méthodes d’analyse et de conception.

Universalité de l’Objetla notion d’objet, plus proche du monde réel,

est compréhensible par tous et facilite la communication entre tous les intervenants d’un projet.

La portée d’UML s’explique par La portée d’UML s’explique par l’importance de l’approche par objetsl’importance de l’approche par objets

Page 18: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Au début des années 90, une cinquantaine de méthodes objet, liées uniquement par un consensus autour d’idées communes (objets, classes, sous-systèmes, ...)

Recherche d’un langage commun unique utilisable par toute méthode objet

dans toutes les phases du cycle de vie, compatible avec les techniques de réalisation actuelles.

Genèse d’UMLGenèse d’UML

Page 19: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

UML (Unified Modeling Language)

OOD (Booch) OMT (Rumbaugh)OOSE (Jacobson)

OOPSLA

OMG

UML

Autres

Page 20: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Autres méthodesBooch’91 OMT-1 OOSE Partenaires

Booch’93 OMT-2

OOPSLA’95Unified Method 0.8Commentaires du

public

UML 0.9 & 0.91Juin 96 puis OOPSLA’96

UML 1.0Soumission à l’OMG - Janvier 97

UML 1.1

UML 1.2

UML 1.3

Standardisation à l’OMG - Novembre 97

Version intermédiaire non publiée

Version béta - fin 99

UML 2.02003

Page 21: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

VueCas d’utilisation

Vue   structurelle

Vue architecture(déploiement)

Vue dynamique

Points de vue sur le système

Concepts généraux

Vue implémentation

<------- Logique Physique ------>

Page 22: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle Implémentation

Modèle DynamiqueModèle structurel

Quatre modèles pour concrétiser ces points de vue

Types d'objets et leurs relations

Stimuli des objets et leurs réponses

Modèle d’utilisation

Concepts généraux

ComposantsFichiers BD

Projection sur lematériel

Fonctionnalités

Page 23: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Chaque modèle est une représentation abstraite d ’une réalité, il fournit une image simplifiée du monde réel selon un point de vue.

Il permet :

- de comprendre et visualiser (en réduisant la complexité)

- de communiquer (à partir d’un « langage » commun à travers un nombre restreint de concepts)

- de valider (contrôle de la cohérence, simuler, tester …)

Concepts généraux

Page 24: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Diagrammes (représentations graphiques de modèles)

de classesd’instan

ces

Diagrammes

de déploiementde composants

Diagrammes

Diagrammes

de collaborationde séquences

d'états, d’activités

Diagrammes

de cas d’utilisation

Concepts généraux

Page 25: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Analyse Conception Implémentation

Démarche uniforme sur le cycle de vie

Même notation

Concepts généraux

Page 26: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Les diagrammes sont majoritairement des graphes

Aspects du langage

Noeuds

Chaînes de caractères

Arcs

Notes

noms, étiquettes,

mots clefs << interface >>

Contraintes

Texte libre, lge prog. OCL, etc.

Page 27: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Plan

• Cours 1IntroductionPrésentation d’UMLModèle fonctionnel (utilisation)

Page 28: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle d’utilisation

Les cas d’utilisation, ou « USE CASE »

• Fonctionnalités externes

• Modèles descriptifs du point de vue des utilisateurs

• Interactions avec les acteurs extérieurs

la manière d’utiliser le système

Page 29: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle d’utilisation

On part de l’analyse des besoins ….

Deux conceptsActeur toute entité extérieure au système et interagissant avec celui-ci.

acteurs humains, acteurs « machine » (système extérieur communiquant avec le système étudié)Cas d’utilisation

toute manière d’utiliser le système suite d’événements notable du point de vue de l ’utilisateur

Page 30: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle d’utilisation

Trois concepts

Acteur (rôle 1)

Acteur (rôle 2)

« communicate »

« communicate »

Acteur

Cas d’utilisation

<< actor >>

role

Frontière du système

Page 31: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle d’utilisation

Les cas d ’utilisation peuvent être liés par des relations :

- d’utilisation « include » (le cas origine contient obligatoirement l’autre)

- de raffinement « extend » (le cas origine peut être ajouté optionnellement )

Acteur (rôle 1)

Acteur (rôle 2)

« include »« extend »

- de généralisation/spécialisation « generalizes »

Page 32: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Diagramme du « contexte statique »

système

Acteur (rôle 2)Acteur (rôle 1)

<< actor >>

role

association

0..1

0..1

0..*

Modèle d’utilisation

Page 33: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle d’utilisation

Client

GestionnaireDu stock

« include » « extend »

Commander

Décrireproduits

Procéder aupaiement

« include »

Livraison

Demandecatalogue

extension

Page 34: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle d’utilisation

Client

« include »

Commander

Décrireproduits

Procéder aupaiement

« include »

Paiement CB Paiement cash

« specializes »

Page 35: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle d’utilisation

Délimiter le système - ce qui est extérieur et qui communique avec le système- ce qui est interne au système

Définir les fonctionnalités du système du point de vue des utilisateurs

Donner une description cohérente de toutes les vues que l’on peut avoir du système

Page 36: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle d’utilisation

Descriptions complémentaires Textes, diagramme de séquences ou d’activités

Une proposition couranteSommaire d’identification

Titre, résumé, acteurs, dates création maj, version, auteurs

Description des enchaînements Pré-conditions, scénario nominal, alternatives, exceptions, post-conditions

Besoins IHMContraintes non fonctionnelles

Temps de réponse, concurrence, ressources machine, etc.

Page 37: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Plan

• Cours 2

Modèle structurel

Page 38: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle structurel

En UML, le modèle structurel ou statique est décrit à l'aide de

deux sortes de diagrammes Diagrammes de classes

(description de tout ou d'une partie du système d'une manière abstraite, en termes de classes, de structure et d'associations).

Diagrammes d'objets(description d'exemples de configuration de tout ou partie du système, en termes d'objets, de valeurs et de liens).

Page 39: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle structurel

Objets du monde réel Objets informatiques

État Internecaché

Comportementvisible

Les objets

Page 40: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle structurel

Comportement influe sur l'étatEtat reflète les comportements passés

Objet

Etat ---> évolue au cours du temps

Comportement ---> actions et réactions

Identité ----> essence

Page 41: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Sophie

Alain

Système

BD

Luc

: Professeur

: Discipline

Deux objetsou instances

Modèle structurel

Page 42: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle structurel

Première abstraction

Une classe peut être vue comme

- la description en intension d'un groupe

d'objets ayant

• même structure (même ensemble d'attributs),

• même comportement (mêmes opérations),

• une sémantique commune.

- la « génitrice » des objets ou instances

- le « conteneur » (extension) de toutes ses

instances

Page 43: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Classe

Attributs (propriétés)

Voiture

type : stringmarque : stringcouleur : string

titine :Voiture

type =205Peugeotrouge

Modèle structurel

Instance

Valeurs d'attributs (État)

« Est-instance-de »

Page 44: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Classe et Attributs (propriétés)

Voiture

type : String {changeable}marque : Stringcouleur[1..*]: Couleur = blanc

Modèle structurel

[Visibilité] nom [[multiplicité]][:type][=valeur initiale][{propriétés}]

constant

addOnly

Nom de classe, expression

[0..1]

[n]

[2..*]

+ - ~ #

Couleur

blanc:Couleur

Page 45: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

ClasseAttributs de classe

Voiture

type : stringmarque : stringcouleur : stringnbrVoitures : intnbrRoues : int =4 {cst}

titine :Voiture

type =205Peugeotrouge

Modèle structurel

Instance Valeurs d'attributs (État) Sauf des attributs de classe

« Est-instance-de »

Attribut de classe ~ caractéristique partagéeRévèle souvent une modélisation à approfondir

Page 46: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Classe

Attributs dérivés

Personne

dateNaissance : String/age : int

julie:Personne

08/05/8815

Modèle structurel

Instance

Valeurs d'attributs (État)

« Est-instance-de »

{age = date du jour – date de naissance} Peut-être une opération déguisée ? (stockage optionnel)

Page 47: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Opérations et méthodes

Voiture

type : stringmarque : stringcouleur : string

repeindre(c: Couleur)déplacer(d : longueur) Méthodes

Implémentations

Modèle structurel

nom de la classe

attributs

opérations

Des attributs complémentaires peuvent être nécessaires

Page 48: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Classe, opérations, méthodes

Modèle structurel

[Visibilité] nom [(paramètres)][:type retour][{propriétés}]

query

abstract[mode] param : type [=valeur défaut]

+ - ~ #

Couleur

blanc:Couleur

mode = in (par défaut), out, in/out

Voiture

repeindre(in c: Couleur=blanc)déplacer(in d : longueur)getCouleur():Couleur{query}

Page 49: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Opérations et méthodes de classe

Modèle structurel

Datejour:intmois:intannee:intnomDesMois[12]:String={« janvier », « fevrier » ..}

getJour():int………getFormatEtendu():String……..getNomMois(in i:int)

Opération/méthode de classe

Elle ne s’applique pas à une instance

Page 50: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Opérations et méthodes de classe

Modèle structurel

Produit

Référence : StringPrixHT : floatTauxTVA : float

setPrixHT(f:float)affichePrix()……..fixeTauxTVA(f:float)

Opération/méthode de classe

Elle ne s’applique pas à une instance

Page 51: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle structurel

Un objet est instance (propre) d'une classe :

il se conforme à la description que celle-ci fournit,

il admet une valeur pour chaque attribut déclaré à son attention dans la classe,

il est possible de lui appliquer toute opération définie à son attention dans la classe.

Tout objet admet une identité qui le distingue pleinement des autres objets :

il peut être nommé et être référencé par un nom (mais son identité ne se limite pas à ça).

Page 52: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Association / Lien (analogie Classe / Instance)

Pays Ville

nom nom

a-pour-capitale

Association

: Paysnom=France

:Villenom = Paris

a-pour-capitale

Lien

Modèle structurel

Page 53: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Association / Lien (analogie Classe / Instance)

Modèle structurel

Une association est l’abstraction d’un groupe de liensdont les caractéristiques sont communes

• même type d’origine• même type de destination• même attributs

Page 54: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle structurel

Association en général binaire (degré = 2) mais ..

Adhérent Exemplaireemprunte

DispositifDeLecture

lire

nom d'associatio

n

association binaire

association ternaire

Page 55: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Multiplicités et rôles dans une association

Bassoc

Modèle structurel

nA

- n instances de B peuvent être en relation avec une instance fixée de A

- une instance de B joue le rôle rb pour une instance de A dans lecontexte de assoc

rb

Page 56: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Multiplicité et rôles d'une association

Société Personne

nomadresse

nomdate de nais.n°SSadresse

emploie

travaille-pour

employeur employé

chef

travailleur

encadre

Modèle structurel

* 1..*

1..*

0..1

Page 57: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle structurel

exactement 1Classe

1

0..1

Classe0..*

Classe1..*

Classe 2..4

Classe 2,4

au plus 1

aucun, 1 ou plusieurs (défaut)

au moins 1

de 2 à 4

2 ou 4

Multiplicité

Classe

Page 58: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Conseils pour la modélisation d'association

- verbes candidats possibles

- ne pas "dériver vers la conception" (pointeurs ou attributs référentiels)

Modèle structurel

Page 59: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Voiture

type : String {changeable}marque : String

Modèle structurel

Couleur1..*

Un attribut à valeur multiple est souvent référentiel

Page 60: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Entreprise Personne

nomadresse

nomdate de nais.adresse

quantité

Possède-des-actions

capital actionnaire

Modèle structurelClasse association

Ligne de portefeuille

* 1..*

Page 61: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Classe association

Utilisateur Station de travail

nom nom

Autorisation

Autorisé sur

prioritédroits

Répertoire

répertoire de rattachement

Modèle structurel

1..*

1..*

1..*

Page 62: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Classe d’association

Modèle structurel

Une classe d'association permet de modéliser une association par une classe, donc de disposer d’attributs et d’opérations spécifiques. Les liens d'une telle association sont alors des objets instances de cette classe.À ce titre, ils admettent une valeur pour tout attribut déclaré dans la classe d'association ; et on peut leur appliquer toute opération définie dans celle-ci.En tant que classe, une classe d'association peut à son tour être associée à d'autres classes (voire à elle-même par une association réflexive).

Page 63: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Association qualifiée

Banque Personne

num_client

est_client

Modèle structurel

Dossier_C

1..*

1..*

Banque Personnenum_client

est_client

1..*

0..1

Page 64: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Navigabilité (pour la conception)

Polygone Pointcontient

Modèle structurel

3..*

{ordered}

Exprime un chemin d’accès d’un objet à un autre

Un polygone « connaît ses points »

Par défaut = bidirectionnel

Page 65: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Association dérivée

Société Département

Modèle structurel

1..*

1

Personne/travaillePourLaSociété1..*

0..1

dept

dept

structure

employeur

travaillePourLeDept

{Personne.employeur=Personne.dept.structure}

0..1

1..*

Page 66: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

D’autres « abstractions »

Modèle structurel

associations particulières (composition / agrégation)

spécialisation / généralisation

Page 67: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Agrégation

Sémantique Collection/Élément

Arbre

Site

Forêt1

1..n

Région

Pays

1

1..n

1

1..n

Modèle structurel

Page 68: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Association particulière tout /partie

L’existence du composant est assujettie à celle de l’objet composite

DeptEnseignementUniversité

Composition

Modèle structurel

*1

Page 69: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Composition / Agrégation

Contraintes

- Exclusivité / Partage

- Dépendance / Indépendance

Propagation / Diffusion

Modèle structurel

Page 70: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Généralisation / Spécialisation

Mécanismes d’inférences intellectuelles de caractéristiques Soit on affine (spécialisation) Soit on abstrait (généralisation)

Sémantique Point de vue ensembliste Point de vue logique

Modèle structurel

Page 71: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Généralisation / Spécialisation

Elle relie deux éléments de modèle (classes, cas d’utilisation, méthodes)

Modèle structurel

A

B

B spécialise A ; A généralise B

Définition : L’extension de A (ses instances)contient l’extension de B

A

B

Conséquence : une instance de Bpossède les propriétés de Aéventuellement sous une forme affinée

Page 72: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Personne

nom adresse

Chercheur

grade adresse Exposer()

{disjoint}

Gestionnaire

numadresse

Modèle structurel

Généralisation / Spécialisation

Page 73: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Une sous-classe “hérite” des descriptions de sa super-classe :

les déclarations d'attributs, les définitions d'opérations, les associations définies sur la super-classe,

les contraintes (on en parle plus tard).

Une sous-classe peut redéfinir de façon plus spécialisée une partie ou la totalité de la description « héritée ».

Modèle structurel

Généralisation / Spécialisation

Page 74: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle structurelGénéralisation / Spécialisation

Le discriminant : exprime un critère de classification

Salarié Vacataire Cotisant NonCotisant

Employé

RetraiteComplémentaire

TypeContrat

TypeContrat

RetraiteComplémentaire

Salarié Vacataire Cotisant NonCotisant

Employé

TypeContrat RetraiteComplémentaire

Page 75: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle structurel

Généralisation / Spécialisation multiple

Véhicule terrestre Véhicule aquatique

Auto Véhicule amphibie Bateau

Véhicule

milieumilieu

Page 76: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Composition/Agrégation ou généralisation ?

Modèle structurel

Agrégation lien entre instances un arbre d'agrégation est composé d'objets qui sont parties d'un objet composite

Généralisation lien entre classes

Page 77: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Les contraintes

Les contraintes sont des prédicats, pouvant porter sur plusieurs éléments du modèle statique, qui doivent être vérifiés à tout instant. Les contraintes permettent de rendre compte de détails à un niveau de granularité très fin dans un diagramme de classe. Elles peuvent exprimer des conditions ou des restrictions. En UML, les contraintes sont exprimées sous forme textuelle, entre accolades et de préférence en OCL (Object Constraint Language). Les contraintes sont héritées.

Modèle structurel

Page 78: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle structurelContraintes de généralisation / Spécialisation

SalariéCdiVacataire Cotisant NonCotisant

Employé

{complet,disjoint}{incomplet}

Page 79: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle structurelContraintes de généralisation / Spécialisation

Véhicule terrestre Véhicule aquatique

Auto Véhicule amphibie Bateau

Véhicule

milieumilieu

{incomplet,chevauchement}

Page 80: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Les contraintes

Exemples de contraintes sur associations

SOL

Strates

1..*

Personne Comité

préside *1

membreDe**

{subset}

{ordered}contrainte sur

extrémité d'association

contrainte entre 2 associations

Modèle structurel

Page 81: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

actif : Real {value 0}passif : Real

Les contraintesExemple de contraintes à différents niveaux

contrainte sur classe

Personne

chef

subordonné

<dirige

Société

{ actif = passif }

{ Personne.employeur = Personne.chef.employeur }

employeur

* 1..* 0..10..1

contrainte sur attribut

contrainte sur 2

associations

Modèle structurel

Page 82: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Quelques compléments de notation

relation de dépendance

Sémantique de la relation de dépendance« un changement dans la spécification de B peut affecter A » (appelle, crée, utilise, instance de, etc.)

Modèle structurel

A B

FenêtreGraphique Evénement

Consommer ChoixBoisson

Page 83: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Quelques compléments de notation Un stéréotype est un label qui permet d'apporter une précision supplémentaire à un élément de notation (classe, relation, …)

Modèle structurel

Consommer ChoixBoisson« include »

« enumeration » NomMois

JanvierFévrier ….

Personne

« crée » + Personne()+ getNom():String

Page 84: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Classes abstraites (notation italiques ou avec mot-clef {abstract})

Modèle structurel

Une classe abstraite est une classe non instanciable, c'est à dire qu'elle n'admet pas d'instances directes.Une classe abstraite est une description d'objets destinée à être « héritée » par des classes plus spécialisées.Pour être utile, une classe abstraite doit admettre des classes descendantes concrètes.La factorisation optimale des propriétés communes à plusieurs classes par généralisation nécessite le plus souvent l'utilisation de classes abstraites.

Page 85: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Opérations abstraites

Modèle structurel

Une opération abstraite est une opération n'admettant pas d'implémentation : au niveau de la classe dans laquelle est déclarée, on ne peut pas dire comment la réaliser.Les opérations abstraites sont particulièrement utiles pour mettre en œuvre le polymorphisme.Toute classe concrète sous-classe d'une classe abstraite doit “concrétiser” toutes les opérations abstraites de cette dernière.

Page 86: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Classes abstraites

Modèle structurel

FormeGéométrique

dessiner()déplacer(delta : Vecteur)

centre : Point

régulier : Boolean

PolygonegrandDiam : VecteurpetitDiam : Vecteur

dessiner()

opération abstraite

classe abstraite

classe abstraite

(dessiner() est héritée et non concrétisée)

opération concrétisée

classe concrète

Polygone utile si

spécialisée

Ellipse

Page 87: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Interfaces

Modèle structurel

Une interface est une collection d'opérations utilisée pour spécifier un service offert par une classe.Une interface être vue comme une classe sans attributs et dont toutes les opérations sont abstraites.Une interface est destinée à être “réalisée” par une classe (celle-ci en hérite toutes les descriptions et concrétise les opérations abstraites).Une interface peut en spécialiser une autre, et intervenir dans des associations avec d'autres interfaces et d'autres classes.

Page 88: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Interfaces

Modèle structurel

MenuPopUp

BlocDeChoixsetDefault(o : Option)getChoice() : Option Option

choix

1..*

setDefault(o : String)getChoice() : String

setDefault(o : Bouton)getChoice() : Bouton Bouton

choix

1..*

String

choix1..* opérations concrétisées

«interface» interfaceopérations abstraites

réalisation

MenuBouton

Page 89: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Interfaces

Modèle structurel

Deux notations pour l'utilisation d'une interface

MenuPopUpsetDefault(o : Option)getChoice() : Option

«interface»

BlocDeChoix

MenuPopUp

ApplicationFenêtrée

«uses»

ApplicationFenêtrée«uses»

BlocDeChoix

interfaceinterfaceutilisationutilisation

réalise

classe utilisatriceclasse utilisatrice

Page 90: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Heuristiques d’élaboration du modèle structurel

• Bien comprendre le problème • Faire simple • Bien choisir les noms • Bien expliciter les associations • Ne pas trop “généraliser” • Relire • Documenter

De nombreuses révisions sont nécessaires !

Modèle structurel

Page 91: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

• Cours 3

Modèle dynamiqueModèle d’implémentation

Plan

Page 92: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Décrit les interactions entre objets et les changements au cours du temps

Modèle dynamique

-Le déroulement des actions, le contrôle

-Les états des objets et leurs interactions

- La survenue des événements

Page 93: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle dynamique

diagrammes de collaboration (ou de communication)

diagrammes de séquences

diagrammes états-transitions

diagrammes d'activités

Page 94: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

La communication

Systèmes informatiques : Société d'objets travaillant en synergie pour réaliser les fonctions de l'application

Communication

Client

Serveur

message

Acteur

Modèle dynamique

Page 95: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

constructeursdestructeursappel de méthodes

Types Synchronisation

asynchrone

synchrone

retour

Les messages

Modèle dynamique

Expressions

[condition]*[condition d’itération] itération

Page 96: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Diagramme de collaboration

Interaction entre objets pour la réalisation d’une fonctionnalité du système

:B

:C

message

:A

1: m12: m2

3: m3

4: m4

6: m6

5: m5

Modèle dynamique

L’accent est mis sur la collaboration entre objets

Page 97: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Diagramme d’instance d’une roue de brouette

pneu:Piece

d:Piece

rdb:Piece

4: m4

Modèle dynamique

Chambre:Piece

Jante:Piece

r3:Piece

r2:Piecer1:Piece

Piece

Page 98: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Diagramme de collaboration – calcul du prix

pneu:Piece

d:Piece

rdb:Piece

4: m4

Modèle dynamique

Chambre:Piece

Jante:Piece

r3:Piece

r2:Piecer1:Piece

1:getPrix()

2:getPrix()

3:getPrix()

3.4:getPrix() 3.3:getPrix()

3.2:getPrix()

3.1:getPrix()

Page 99: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Diagramme de séquencesInteraction entre objets pour la réalisation d’une fonctionnalité du système

:B :C:A

m1

m2

m3

m4

m6m5

Modèle dynamique

L’accent est mis sur la chronologie des événements

Page 100: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

La ligne de vie

« create »

Création par le message «create»

Activation de l’objet qui exécute une opération op

Destruction par un autre objet

:C1

« destroy »

op

Modèle dynamique

Page 101: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

rdb pneu chambre jante

tem

psModèle dynamique

d r1 r2 r3

getPrix()

getPrix()

getPrix()getPrix()

getPrix()

getPrix()

getPrix()

Page 102: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

rdb pneu chambre jante

tem

psModèle dynamique

d r1 r2 r3

getPrix()

getPrix()

getPrix()getPrix()

getPrix()

getPrix()

getPrix()

Page 103: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

:Palmier :Feuille :Inflorescence :Régime

tem

psModèle dynamique

Page 104: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Diagrammes d’états Événement et État

État d'un objetmoment de la vie d’un objet où Il accomplit une action Il satisfait une condition Il attend un événement

l’état est défini par la valeur instantanée des attributs et liens de l’objet

Modèle dynamique

Page 105: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Événement et État

ÉvénementStimulus (sans durée) envoyé à un objet

une condition devient vraie appel d’une opération réception d’un signal fin d’une période de temps

Modèle dynamique

Page 106: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

• Graphe

Nœud ÉtatArc Transition nommées par événement

• Une séquence d'événements = chemin dans le graphe

Modèle dynamique

Diagrammes d'États

Ils servent à représenter les états par lesquels passeun objet d’une classe donnée

Page 107: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

• état et événement sont duaux

un événement sépare deux états un état sépare deux événements

Modèle dynamiqueDiagrammes d'États

Page 108: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle dynamiqueNotation des états

Initial

Final

Simple

Complexe

Créditeur

Typing password

entry/ set echo offexit/ set echo on

on type char/ handle charon help/ display helpdo/ curseur clignote

au débutà la finlors d’evt

tout le temps

Activités internes

Diagrammes d'États

Page 109: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle dynamique

Notation des transitions

étiquette

étiquette• événement(paramètres)• [condition]• /action• ^envoiMessage

Diagrammes d'États

Page 110: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

État 1do/ activité 1

Événement 1 [Cond1] / Action1État 2...

Opération Activité / Action

Modèle dynamique

Page 111: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Avec inflorescence

création

e1

Avec régime

e2

[C]

Créé Avec feuille

Modèle dynamique

Page 112: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Diagrammes d'ÉtatsEtats d’un compte bancaire transitions gardées

sous-état

Ouvert FermédemandeCréat()

Débiteuron retrait/ agioson dépôt/ augmenter solde

fermer()

Créditeuron retrait/ debiter soldeon dépôt/ augmenter solde

[Solde >0]

[Solde ≤0]

Modèle dynamique

ouvert

Page 113: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Action opération instantanée, non interruptible,souvent utilisée pour faire des mises à jour de valeurs,attachée à une transition.

Envoyer un événement est une action

Activitéopération qui prend du temps, interruptible par un événement,perpétuelle ou finie,nécessairement attachée à un état.

Opération elle peut être attachée à une transition ou à un état. elle est exécutée en réponse à l'événement ou à l'état.

Modèle dynamique

Page 114: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Généralisation

- permet une meilleure structuration des diagrammes d'états

Un objet dans un état du diagramme général doit

être dans un des états du diagramme imbriqué (relation ou entre les états)

E1

E2

E5

E4E3

E6

Modèle dynamique

Page 115: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Agrégation

une classe "agrégat" aura un état défini par l'agrégation des états de ses composants.

Agrégation concurrente (relation et)

Modèle dynamique

marié

Age

célibataire

Statut familial

Enfant

Ado

Adulte

Page 116: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Diagrammes d’activités Représentation du flot de contrôle

• Actions

• Données, objets

• nœuds de contrôle

• Etat initial

• Etat final

Modèle dynamique

signal

fork décision

Page 117: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Diagramme d’activitésModèle dynamique

Réception

Expédier produits

Exécuter

Envoi facture

FacturePaiement

Accepter paiement

[acceptée]

[rejetée]

Clôturer

Bon de commande

Traiter Commande

Page 118: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Heuristiques d’élaboration du modèle dynamique

• Chemins suivis lors des envois de messages : diag. de séquences ou de collaboration

• Point de vue d’un objet• diag d’états : pour les objets pour lesquels il est significatifde montrer les changements d’états• diag. d’activités : pour décrire un algorithme du point de vue d’un objet

• Contrôler la cohérence, structurer les diagrammes

• Accompagnement des diagrammes de cas d’utilisation• diag. de séquences• diag. d’activités (proches des workflows)

Modèle dynamique

Page 119: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Les packages

Modèle d’implémentation

Un package ou sous-système est un regroupement logique de classes, associations, contraintes .. Un sous-système est généralement défini par les services qu’il rend Les liens entre sous-systèmes sont des liens de dépendance Les « packages » servent à structurer une application Ils sont utilisés dans certains LPO (Java) ce qui assure une bonne « traçabilité » de l ’analyse à l ’implémentation

Page 120: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Les packages

Classes avec fort couplage « sémantique »

Liens

de dép

endanc

e

Modèle d’implémentation

Page 121: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

VenteAutomobile

Voiture

Garage

Vendeur

Page 122: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle d’implémentation (UML 2.0)Diagramme de composants

dépendances entre composants logiciels(sources, binaires, exécutables, etc.)

Système de planification

Agenda

réservation

Page 123: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

:PC

Modèle d’implémentation (UML 2.0)Diagramme de déploiement

organisation matérielle des éléments de calcul et descomposants logiciels

Système de planification

Agenda

:server

Page 124: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

• ANNEXES

Projection vers les Bases de DonnéesProjection vers la programmationMéthodologie (RUP)Patrons de conception

Plan

Page 125: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Persistance

• Classes vs Types persistants vs éphémères

• Points d’entrée (racine de persistance)

• Regroupements

Du modèle objet ... aux BDDu modèle objet ... aux BD

Adéquation aux BD « objet »

Page 126: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

LDD, LMD, L Hôte

• LDD, LMD, L Hôte équivalents LPO

• Langage de requête « like » SQL

• Transactions

Du modèle objet ... aux BDDu modèle objet ... aux BD

Adéquation aux BD « objet »

Page 127: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Adéquation aux BD « classiques »

Traduction

comme précédemment

d. structurels --> schémas

d. dynamiques --> requêtes et

traitements applicatifs divers

Mais règles de « passage »

Du modèle objet ... aux BDDu modèle objet ... aux BD

Page 128: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Classes

AttributsAjout de l’identifiant

Schéma relationnel

ADRESSE

N°RueCPVille

Attribut Domaine Non Null

Id_adresse Identifiant OuiN° Entier NonRue String(30) Non…..

Schéma AdresseClé primaireId_adresse

Du modèle objet ... aux BDDu modèle objet ... aux BD

Page 129: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Classes

AttributsAjout de l’identifiant

Schéma relationnel

PERSONNE

NSS {unique}NomPrénomDate-naissance

Attribut Domaine Non Null

Id_Pers Identifiant OuiNSS String(13) OuiPrénom String(30) NonDate-nais Date Non

Schéma PersonneClés primairescandidates

Id_adresseNSS

On préfère NSS

Du modèle objet ... aux BDDu modèle objet ... aux BD

Page 130: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Associations

PERSONNE ADRESSE

NSS....

N°RueCPVille

1 1a

Attribut Domaine Non Null

NSS String(13) ID OuiNom String(35) OuiId_adresse Identifiant Oui

Schéma PersonneClé primaireNSS

Clé étrangèreId_adresse

Du modèle objet ... aux BDDu modèle objet ... aux BD

Page 131: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Associations

PERSONNE COMPTE

NSS....

N°Type

1 0..*possède

Attribut Domaine Non Null

Id_compte Identifiant OuiN° String(35) Id OuiNSS Identifiant Oui

Schéma CompteClé primaire

Id-compteN°

On choisit N°

Clé étrangèreNSS

Du modèle objet ... aux BDDu modèle objet ... aux BD

Page 132: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Associations

PERSONNE BIBLIOTHEQUE

NSS....

nom0..*adhère->0..*

date adhésiontype adhésion (mensuelle, annuelle)

Schéma AdhèreClé primaireNSSId_bibliothèque

Rque :DateType

Attribut Domaine Non Null

NSS Id String(13) OuiId_bibliothèque Identifiant OuiDate_adhésion Date OuiType_adhésion String(10) Oui

Du modèle objet ... aux BDDu modèle objet ... aux BD

Page 133: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Spécialisation

PERSONNE

NSS....

ETUDIANT

num....

ENSEIGNANT

grade....

Plusieurs choix

- « aplatir vers le haut »

Schéma PersonneClé primaireNSS

- « aplatir vers le bas »Schémas Etudiant, EnseignantClé primaireNSS

- conserver les niveaux

Du modèle objet ... aux BDDu modèle objet ... aux BD

Page 134: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

• ANNEXES

Projection vers les Bases de DonnéesProjection vers la programmationMéthodologie (RUP)Patrons de conception

Plan

Page 135: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmationClasses

- adresse : String = 'adresse inconnue'- numeroINSEE[6] : Integer

# changeAdresse(nouvelleAdresse : String)+ cotisationAJour() : Boolean

Adhérent

note (peut contenir un complément de description, un

commentaire, …)

type d'attribut

valeur initiale

type de paramètretype du résultat

de l'opération

privé

protégé

public

adhérent de labibliothèquevaleurs

multiples

Page 136: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmation

Classes

Attributs, Opérations ------> Champs, Méthodes

Et des méthodes particulières spécifiques à certains langages …

Accesseurs L/E (convention get/set en Java)

Constructeurs (Java, C++), Destructeurs (C++)

Proposer un service et réagir aux messages

Page 137: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Classe Adhérent en Java (extrait)

public class Adherent{ private String adr = ``adresse inconnue``; private int[] numeroInsee; public Adherent(){numeroInsee=new int[6];} public Adherent(String na, int[] ni){adr=na;

numeroInsee=ni;}

public String getAdr(){return adr;} protected void setAdr(String nouvelleAdresse)

{adr=nouvelleAdresse;} public int[] getNumeroInsee(){return numeroInsee;} protected void setNumeroInsee(int[] ni)

{numeroInsee=ni;}

public boolean cotisationAjour(){…….}}

Constructeurs

Accesseurs

Méthodes

Champs

Page 138: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Classe Adhérent en C++ (extrait)

//………. Adherent.h ……………………………………………………class Adherent{ private:

string adr; int* numeroInsee; public:

Adherent();Adherent(string na, int* ni);virtual ~Adherent();virtual string getAdr() const;virtual void setAdr(string nouvelleAdresse);virtual int* getNumeroInsee()const;virtual void setNumeroInsee(int* ni);virtual boolean cotisationAjour()const;

};

Constructeurs

Accesseurs

Méthodes

Champs

Destructeurs

Page 139: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Classe Adhérent en C++ (extrait)

//……………. Adherent.cc …………………………………………………Adherent::Adherent() {adr = ``adresse inconnue``; numeroInsee=new int[6];}

Adherent::Adherent(string na, int* ni) {adr=na; numeroInsee=ni;}

Adherent::~Adherent(){delete[] numeroInsee;}

string Adherent:: getAdr()const{return adr;}void Adherent::setAdr(string nouvelleAdresse) {adr=nouvelleAdresse;}int* Adherent::getNumeroInsee()const{return numeroInsee;}

void Adherent::setNumeroInsee(int* ni){numeroInsee=ni;}

boolean Adherent:: cotisationAjour()const{…….}

Page 140: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmation

Opérations

Données

MessagesEncapsulation

Objet

Retour sur la notion d’encapsulation

Page 141: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmation

Liste GestionPersonnel

ajoute

retire

applique(fct)

Confiner les modifs de Liste dans la classe Liste …

Utilité de l’encapsulation

Page 142: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmationEncapsulationConsensuel

privé ... implémentationpublic ... spécification

En pratique

à chaque langage ses particularismes

Smalltalk. attributs privés, méthodes publiques, ...Java. package, protected, ...C++. friends, protected,

protection sur le lien d’héritage, ...

Quelle philosophie adopter ?

Page 143: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Protection en Java

public class Adherent{

private String adr = ``adresse inconnue``; private int[] numeroInsee; public Adherent(){numeroInsee=new int[6];} public Adherent(String na, int[] ni) {adr=a; numeroInsee=ni;} public String getAdr(){return adr;}

protected void setAdr(String nouvelleAdresse){adr=nouvelleAdresse;}

public int[] getNumeroInsee(){return numeroInsee;} protected void setNumeroInsee(int[] ni)

{numeroInsee=ni;}

public boolean cotisationAjour(){…….}}

Accessible aussi dans toute méthode du package et dans toute méthode d’une sous-classe C sur une variable dont le type statique est C ou une sous- classe de C

Accessible partout

Accessible seulement dans les autres méthodes de la classe

Du modèle objet ... à la programmationDu modèle objet ... à la programmation

Page 144: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Variables et méthodes de classe (en Java)

public class Produit{ private static float tauxTVA; ……….. public static void fixeTauxTVA(float

f){…..}}

Produit

référence : StringprixHT : floattauxTVA : float

setPrixHT(f:float)affichePrix()……..fixeTauxTVA(f:float)

Du modèle objet ... à la programmationDu modèle objet ... à la programmation

Page 145: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmationClasses abstraites, méthodes abstraites

abstract public class Figure{

abstract public void dessine();……..

}

Java

class Figure{ public:

virtual void dessine()const=0;……..

}

C++

Page 146: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmation

Traduction des interfaces en Java

Héritage par réalisation

Spécification de services (sans implémentation)

Page 147: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

interface Ipolygon {float perimeter(); …}

interface Iquadrilateral ….{static const int sideNb = 4; ….}

interface Isquare ….{float getCote(); …..}

public class Square implements Isquare{public float getCote(){….} ….}

public class x{…. public void meth(Isquare i) {…} …..}

Du modèle objet ... à la programmationDu modèle objet ... à la programmationInterfaces en Java

Ipolygon

Iquadrilateral

Isquare

Square

Page 148: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

interface Ipolygon {float perimeter(); …}

interface Iquadrilateral ….{static const int sideNb = 4; ….}

interface Isquare ….{float getCote(); …..}

public class Square implements Isquare{public float getCote(){….} ….}

public class x{…. public void meth(Isquare i) {…} …..}

Du modèle objet ... à la programmationDu modèle objet ... à la programmationInterfaces en Java

méthodes abstraites etpubliques (par défaut)

variables de classe publiques et constantes

(par défaut)

type à implémenter

type de Java(écriture de code

générique)

Page 149: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmation

Associations

PERSONNE ADRESSE

nom....

N°RueCPVille

1 1a

class PERSONNE{ private :

string nom; ADRESSE adr;

....}

rien de spécial dans ADRESSE

Attribut complexe

Navigabilité dans un seul sens

adr

Utilisationdu nom de rôle

Page 150: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmation

Associations

PERSONNE COMPTE

nom....

N°Type

1 0..npossède

class PERSONNE{private :

string nom;list <COMPTE> comptes;....}

class COMPTE{private :

PERSONNE possesseur;....}

Conteneur

Référence

Navigabilité dans les deux sens

comptespossesseur

Page 151: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmationAssociations

PERSONNE BIBLIOTHEQUE

nom....

nom0..nadhère

class PERSONNE {private : string nom;....}class BIBLIOTHEQUE {private : ....}

class ADHESION{private :

PERSONNE adhérent;BIBLIOTHEQUE biblio;DATE dateadhésion; String typeAdhesion; ....}

Réification

0..n

date adhésiontype adhésion (mensuelle, annuelle)

Classe d’association

Page 152: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Personne

nom adresse

Gestionnaire

numadresse

Du modèle objet ... à la programmationDu modèle objet ... à la programmationL’héritage traduit la généralisation/spécialisation

C++class Personne{};class Gestionnaire

: virtual public Personne

Javapublic class Personne{}public class Gestionnaire

extends Personne {}

Page 153: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmation

Héritage

• adéquation des deux relations

• représentation et traitement des conflits

• spécialisation des attributs

• représentation de la surcharge et du masquage

• utilisation de l’héritage à des fins d’implémentation ?

Implémentation de la relation de spécialisation par l’héritage, quelques problèmes ....

Page 154: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmation

Héritage : adéquation des deux relations

Spécialisation multiple (possible en C++, impossible entre classes Java)

Flot

good()eof() ...

FlotEcriture

écrire(blocOctets)...

FlotLecture

lire(nbOctets)...

FlotLectureEcriture

Page 155: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

interface Ipolygon {float perimeter(); …}

interface Iquadrilateral extends Ipolygon{static const int sideNb = 4; ….}

interface Isquare extends Irectangle,Irhombus{float getCote(); …..}

public class Square implements Isquare{public float getCote(){….} ….}

public class x{…. public void meth(Isquare i) {…} …..}

Du modèle objet ... à la programmationDu modèle objet ... à la programmationAdéquation des deux relations (cas de Java)

héritage multipleentre interfaces

spécialisation

implémentation

Page 156: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Cas de Java : héritage simple pour l’implémentation, multiple pour les interfaces ... côté classes, ...les méthodes de FlotLecture et FlotEcriture doivent être réécrites dans FlotLectureEcriture

Du modèle objet ... à la programmationDu modèle objet ... à la programmationHéritage : adéquation des deux relations (Java)

interface Flot

interface FlotEcritureinterface FlotLecture

interface FlotLectureEcritureclasse Flot

classe FlotLecture

classe FlotLectureEcriture

classe FlotEcriture

extendsimplements

Page 157: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmationSpécialisation/Généralisation ....

Conflit portant sur le nom des propriétés

Il y a clairement deux propriétés

Objet

couleur (rouge, vert ...)

Elément de jeu

Pion DéCarte à jouer

couleur (coeur, trèfle, ...)

Page 158: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmationSpécialisation/Généralisation .... multiplesConflit portant sur les valeurs

ou le domaine d’une propriété

Le pédalo n’a qu’une propriété zoneNav, mais quel sera son domaine ?

ObjetNautique

Bateau EnginPlage

Pedalo

zoneNav

{zoneNav sup. à 100}

{zoneNav inf. à 10}

{zoneNav ?}

Page 159: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmation

Héritage : représentation et traitement d’un conflit de nom

Smalltalk

JavaC++

Désignation expliciteObjet::CouleurCarteAJouer::Couleur

Donner deux nomsdifférents

pas d’accès possibleà couleur d’objetautre qu’avec “super”(dans les méthodes)

mieux vaut donnerdeux noms différents

Page 160: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmation

Héritage : spécialisation des attributs

Animal

nourriture (végétale, animale, minérale)

Herbivore

nourriture (végétale)

Relation

ensemblesImpliqués > 1

RelationBinaire

ensemblesImpliqués = 2

Aucune représentation, ni en C++, ni en Smalltalk, ni en Java

Seule issue : vérification des contraintes dans les méthodes (surtout accesseurs) ...

Page 161: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmation

Héritage : surcharge statique et redéfinition

Redéfinitioncoexistence de méthodes de même nom dans des classes comparablesappel déterminé par le type de l’objet (dynamique)

Surcharge statiquecoexistence de méthodes de même nom dans des classes différentesappel déterminé par le type de la variable (statique)

Page 162: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmationHéritage : redéfinitionJava

redéfinition seulement si les signatures sont strictement identiques,C++redéfinition si les types des paramètres sont identiques, le type de retour peut être spécialisé

Magnitude

<(Magnitude)

Time

<(Time)

heureminutesecondes

Date

<(Date)

jourmoisannée

Java, C++ : on ne peut pas représenter directement une spécialisation des paramètres

cas de surcharge statique

Magnitude

<(Magnitude)

Time

<(Magnitude)

heureminutesecondes

Date

<(Magnitude)

jourmoisannée

cas de redéfinition

Page 163: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmation

Héritage : à chacun sa surcharge

Personne

Princesse

habiller(Vêtement)habiller(Vêtement, Chaussure)

habiller(Vêtement, Bijou)

VêtementChaussureBijou

QuiSePorte

En Java : correctement interprété comme de la surcharge statiqueEn C++ : habiller(Vêtement, Bijou) cache les deux autres

Page 164: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmation

Héritage : l’utiliser pour des raisons d’implémentation ?

Liste

ajoutFin

Pile

pushpoptop

A éviter dans tous les cas ...même si les livres en sont pleins ...

Page 165: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmation

Généricité paramétrique

Pile

push(t:T)pop():Ttop():T

En C++ : template

template<typename T>class Pile{… push(T element) …}

Pile<int> p;

En Java : simulé

class Pile{…. push(Object element) ….}

Pile p = new Pile();

problèmes :- contrôle des éléments insérés- cast des éléments retirés

T

T

Page 166: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Du modèle objet ... à la programmationDu modèle objet ... à la programmationA partir du modèle dynamique - diagrammes de séquencejim:Etudiant

afficheResultats()

afficheMoyenneEtMention()

[moyenne<10]afficheModulesObtenus()

public class Etudiant{ public void afficheResultats()

{afficheMoyenneEtMention();if (getMoyenne()<10)

afficheModulesObtenus();}

}

Page 167: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

cnam03:Promotion

Du modèle objet ... à la programmationDu modèle objet ... à la programmationA partir du modèle dynamique - diagrammes de collaboration

:Etudiant

*[i:=0..nbEtudiants-1]:moyenne()

public class Promotion{

private Vector listeEtudiants;……….public float moyenneGenerale(){

double mg=0;for (int i=0; i<listeEtudiants.size(); i++

mg+=((Etudiant)(listeEtudiants.get(i))).moyenne();return mg/listeEtudiants.size();

}}

Page 168: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

• ANNEXES

Projection vers les Bases de DonnéesProjection vers la programmationMéthodologie (RUP)Patrons de conception

Plan

Page 169: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Méthodologie

Méthode ou Processus de développement

acteurs nécessaires (qui)grands types d’activités (comment)

artefacts (quoi)organisation du travail (quand)

Page 170: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Historique

• Méthodes cartésiennes

Jackson, SADT, Yourdon

• Méthodes systémiques

Merise, Axial, Information Engineering

• Méthodes objet

OOD, HOOD, OMT, OOSE, OOA/OOD, unifiées dans le RUP (Rational Unified Process)

Page 171: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Concepts généraux

• Conceptualiser

obtenir un énoncé du problème (utilisateurs)

• Analyser

spécifier le problème

• Implémenter

réaliser la solution informatique

• Concevoir

une solution informatique

Page 172: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Concepts généraux

Étapes Résultats

Planification Schéma directeur

Analyse des besoins Modèle des besoins

Spécification formelle ou analyse Modèle conceptuel

Spécification technique ou conception Modèle logique

Implémentation Modèle physique

Intégration et Tests Rapport de cohérence logique

Validation du système Rapport de conformité

Maintenance et évolution Documentation et trace

Page 173: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Concepts généraux

• Cycles de développement

- en cascade

- en V

- en spirale

- tridimensionnel

Page 174: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Analyse

Conception

Implémentation

Tests

Maintenance

Modèle de cycle en cascade

Page 175: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Organisation séquentielle des phases du cycle de vie

Une phase est structurée en un ensemble d'activités pouvant s'exécuter en parallèle par plusieurs personnes

Le passage d'une phase à la suivante ne se fait que lorsque les sorties de la première ont été fournies

Modèle de cycle en cascade

Page 176: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle de cycle en cascade

Contre : Retours sur les phases précédentes difficiles (rupture entre les phases)

Visualisation et validation tardive

Pour : Organisation simple et directe

Page 177: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Implémentation

Expressiondes besoins

Validationdes besoins

Validationfonctionnelle

Spécificationfonctionnelle

Conceptiondu système

Tests dusystème

Tests descomposants

Conceptiondes composants

Modèle de cycle en V

Page 178: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle de cycle en V

Approche descendante dans les phases précédant l’implémentation : on décompose le système au fur et à mesure qu’on le construit

Approche ascendante dans les phases suivantes : on recompose le système en testant les parties

Hiérarchie de tests : les différents tests provoquent un retour d’information directement sur la phase permettant de corriger les erreurs.

Page 179: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle de cycle en V

Pour : Décomposition du système en sous-systèmes

Hiérarchie de tests et retours facilités

Vérification ascendante

Contre : Validation en fin de cycle (erreurs d’analyse coûteuses)

Page 180: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Conception

Analyse

Spécifications Besoins

Validation

Tests

Implémentation

Modèle de cycle en spirale

Page 181: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle de cycle en spirale

Modèle itératif On passe par toutes les phases du cycle de vie plusieurs fois

Modèle incrémental On améliore à chaque passage

Un passage peut aussi bien permettre d’évaluer un nombre réduit de fonctionnalités ou l’organisation générale du système de façon non détaillée

Page 182: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Modèle de cycle en spiralePour :

Réalisation de plusieurs prototypes (versions) avant la réalisation du système réel (définitif)

Validation progressive et précoce Souplesse dans le choix des prototypes

Contre : Mise en œuvre parfois coûteuse Possibilité de divergence, nombre de prototypes difficile à déterminer

Le RUP est une réponse à ces critiques

Page 183: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)

RUP

Objectory OMT BOOCH

Page 184: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)

Mots-clefs :développement itératifdéveloppement incrémentalpilotage par les cas d’utilisation

centré sur l’architectureconfigurable

Page 185: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)

1- Les grandes activités2- La notion d’architecture logicielle3- L’organisation itérative des activitésBibliographie

• « The RUP, an Introduction »P. Kruchten, Addison-Wesley 2000

• « The unified Software Developement Process »I. Jacobson, G. Booch, J. Rumbaugh, Addison-Wesley 1999

• « Modélisation Objet avec UML »P.-A. Muller, N. Gaertner, Eyrolles, 2002

Page 186: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)1- Les grandes activités

Le RUP distingue 9 activités,à chacune correspond :

des artefacts

des métiers

des outils (cf. site de Rational)

Page 187: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)1- Les grandes activités

activité 1. GESTION DE PROJET

PlannificationAllocation des tâches et des responsabilitésAllocation des ressourcesEtude de faisabilité et des risques

calendrier des tâcheschef de projet

Page 188: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)1- Les grandes activités

activité 2. MODELISATION DE L’ORGANISATION

modélisation - de la structure- du fonctionnement

de l’organisation où le système sera déployé

cas d’utilisation de l’organisation (avec scenarii)

concepteur d’organisation

Page 189: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)1- Les grandes activités

activité 3. ANALYSE DES BESOINS

détermination des besoins :- fonctionnels (ce que l’on attend du système)- non fonctionnels (fiabilité, temps de réponse,

environnement distribué, etc.)

cas d’utilisation du système à construire (avec scenarii)

documents descriptifsconception de l’interface utilisateuranalyste

Page 190: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)1- Les grandes activités

activité 4. ANALYSE ET CONCEPTION

évoluer depuis la spécification des besoins

jusqu’à une solution informatique

analyse~besoins fonctionnelsconception~intègre aussi les besoins non

fonctionnels

diagrammes de classes, paquetages, sous-systèmesdiagrammes de collaboration, d’étatsdiagrammes de composantsarchitecte, concepteur

Page 191: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)1- Les grandes activités

activité 5. IMPLEMENTATION

Transcription dans un langage de programmation

ou de base de donnéesUtilisation de composants existants

codeimplémenteur, développeur

Page 192: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)1- Les grandes activités

activité 6. TEST

Estimer si les besoins sont satisfaitss’il y a des erreurs/défauts à

corriger

Renforcer et stabiliser l’architecture

modèles de test, scriptsconcepteur de test, testeur

Page 193: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)1- Les grandes activités

activité 6. TEST

Différents niveaux de tests

• unitaires (test d’une classe, d’un module isolément)

• intégration (plusieurs modules ensembles)

• validation (les fonctionnalités du système sont

assurées)• recette (souvent contractualisés,

avec le client)

Page 194: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)1- Les grandes activités

activité 6. TEST

Différents types de tests

• Benchmark (sur un ensemble de données type)

• Configuration/installation • Charge • Fiabilité, stress• Performance

Page 195: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)1- Les grandes activités

activité 7. DEPLOIEMENT

Distribuer le logiciel dans son environnement

opérationnelInstallation, testFormation des utilisateursMigration des données

diagrammes de déploiementformateur, graphiste, rédacteur de documentation, testeur, implémenteur (scripts d’installation)

Page 196: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)1- Les grandes activités

activité 8. MAINTENANCE ET EVOLUTION

Gérer pendant l’avancement du projet l’évolution :

des besoins des utilisateurs,du niveau des développeurs,de la technologie, etc.

plan de modificationtous les métiers !

Page 197: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)1- Les grandes activités

activité 9. ENVIRONNEMENT

Activité de support du développementsélection des outils de travail,administration système et réseau,administration BD,formation de l’équipe de travail,

etc.

doc outils, doc installationadmin. S&R, formateur, admin. BD

Page 198: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)2- L’architecture logicielle

• Analogie avec l’architecture dans le domaine dubâtiment

• Désigne un ensemble de descriptions de haut niveau (les « plans de construction »)

Page 199: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)2- L’architecture logicielle

La vue de l’architecte est générale et sert à :

• contrôler l’intégrité du système

• identifier les éléments réutilisables

• baser le partage du travail

Page 200: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)2- L’architecture logicielle

Plans de construction

Orientation des modèles par les cas d’utilisation

Cas d’utilisation

Logique Réalisation

ProcessusDéploiement

classes/dynamique composants

use case + scenarii

scenarii sur composantsconcurrencedistributiontolérance aux pannes

composantsprojetés sur le matériel

Page 201: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)2- L’architecture logicielle

Une définition de la notion d’architecture

« vue limitée du système permettant de comprendre :• ce qu’il fait• comment il fonctionne• comment travailler sur une seule

partie• comment l’étendre• comment réutiliser certaines

parties »

Seules les grandes lignes de chaque diagramme

font partie de l’architecture

Page 202: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)3- L’organisation itérative des activités

Pour répondre aux problèmes connus du développement en cascade :

• découverte tardive des défauts• intégration difficile des

modifications• contrôle temps et coûts délicat

Page 203: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)3- L’organisation itérative des activités

Cycle de base

plannification

besoins analyseconceptionimplémentation

déploiementtestévaluation

Page 204: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)3- L’organisation itérative des activités

Contrôle de la convergence : instauration de 4 PHASES

Etude d’opportunité

ElaborationConstructionTransition

• Chaque phase développe tout ou partie d’un ou plusieurs cycles• Des points de contrôle entre les phases permettent de vérifier l’avancement

Def. Projetobjectifsrisques, bénéfices

Plannificationarchitecture

versionbéta

versioncourante

Page 205: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)3- L’organisation itérative des activités

A chaque itération

• la plannification est remise à jour et étendue

• les modèles sont approfondis

• un prototype est développé ou augmenté

• on teste (on re-teste parfois …) l’existant

Page 206: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

RUP (Rational Unified Process)3- L’organisation itérative des activités

Bénéfices

• résultats concrets précoces et réguliers • problèmes et évolutions sont intégrés au fur et à mesure• meilleure compréhension par les utilisateurs de ce qu’ils peuvent comprendre -> ils précisent mieux leur besoin• la faisabilité est objectivement mesurée, on a des points de mesure• tous les métiers sont en permanence sollicités, les problèmes remontent plus vite

Page 207: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

• ANNEXES

Projection vers les Bases de DonnéesProjection vers la programmationMéthodologie (RUP)Patrons de conception

Plan

Page 208: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Patrons de conception

Recueillir l’expertise en conception

Définition

Un patron de conception est une solution de conceptiongénérique pour résoudre un problème de conception récurrent

Micro-architecture d’une application

Analogie avec les plans de construction détaillés d’un élément de bâtiment

Page 209: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Patrons de conception

Un exemple :Résumé du patron « objets composite »

Problème

Nous désirons représenter des objets qui se décrivent par une hiérarchie d’objets, avec les deux particularités :

• la hiérarchie est une hiérarchie d’agrégation

• tous les objets jusqu’au plus haut niveau présentent un même comportement (on peut leur appliquer un même ensemble de méthodes)

Page 210: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Patrons de conception

Résumé du patron « objets composite »Exemple 1

Dans un éditeur de dessin, une figure géométrique est simple ou se compose d’autres figures.Toutes les figures peuvent être dessinées, déplacées, effacées, agrandies, etc.

Exemple 2 Dans un système d’exploitation, les fichiers peuvent être ordinaires, ou bien des liens, ou encore des répertoires qui contiennent eux-mêmes d’autres fichiers.Tout fichier peut être déplacé, détruit, renommé, etc.

Page 211: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Patrons de conceptionRésumé du patron « objets composite »Solution générique [E. Gamma et al. « design patterns », 94]

version dite « sécurité »

Composant

+ operation

abstraitesi pas de partie commune

Feuille

+ operation

Composite

+ operation+ ajout(c:Composant)

appliquer operationà tous les fils

fils

Page 212: Méthodologie objet UML et RUP : un survol IUP GMI 2ième année 2005/2006 M HuchardT. Libourel huchard@lirmm.fr libourel@lirmm.fr

Patrons de conceptionRésumé du patron « objets composite »

Spécialisation du patron

Figure

+ dessine+ deplace

FigureSimple FigureGroupee

element

+ dessine+ deplace+ ajoute(f:Figure)

+ dessine+ deplace

Cercle Carré Trait