modélisation o-o avec umlsliders.alpha.free.fr/efrei/m1/efrei%20m1/cours%20campus%20efr… · mais...

169
© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 1/ Modélisation O-O avec UML Reda Bendraou reda.bendraou{{@}}Lip6.fr http://pagesperso-systeme.lip6.fr/Reda.Bendraou/ Le contenu de ce cours a été influencé par les lectures citées à la fin de ce support.

Upload: others

Post on 07-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 1/

Modélisation O-O avec UML

Reda Bendraoureda.bendraou{{@}}Lip6.fr

http://pagesperso-systeme.lip6.fr/Reda.Bendraou/

Le contenu de ce cours a été influencé par les lectures citées à la fin de ce support.

Page 2: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 2/

La Modélisation

-Définition-Pourquoi modéliser?

-Quel Langage utiliser?-Logiciel=Code?

Page 3: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 3/

En quoi consiste la modélisation?

Construire une reprConstruire une reprConstruire une reprConstruire une repréééésentation abstraite de la rsentation abstraite de la rsentation abstraite de la rsentation abstraite de la rééééalitalitalitalitéééé

Abstraction =Abstraction =Abstraction =Abstraction =• Ignorer les détails insignifiants• Ressortir des détails les plus importants

– Important= décider de ce qui est signifiant et de ce qui ne l’est pas, dépend directement de l’utilisation visée du modèle

AbstractionAbstractionAbstractionAbstraction: « Opération intellectuelle qui consiste à isoler par la pensée l'un des caractères de quelque chose et à le considérer indépendamment des autres caractères de l'objet. »Source Larousse en ligne.

Page 4: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 4/

Une autre définition de la modélisation

ModelingModelingModelingModeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive purpose. It allows us to use something that is simpler, safer or cheaper than reality instead of reality for some purpose

A ModelModelModelModel represents reality for the given purpose; the model is an abstraction of reality in the sense that it cannot represent all aspects of reality. This allows us to deal with the world in a simplified manner, avoiding the complexity, danger and irreversibility of reality

Par Jeff Rothenberg, « The nature of modeling »

• Attention au dAttention au dAttention au dAttention au déééébat: abstraction = simplification?bat: abstraction = simplification?bat: abstraction = simplification?bat: abstraction = simplification?– La modLa modLa modLa modéééélisation simplifie la comprlisation simplifie la comprlisation simplifie la comprlisation simplifie la comprééééhension et la communication autour du hension et la communication autour du hension et la communication autour du hension et la communication autour du

problproblproblproblèèèème, elle ne simplifie pas le problme, elle ne simplifie pas le problme, elle ne simplifie pas le problme, elle ne simplifie pas le problèèèème lui même!me lui même!me lui même!me lui même!

Page 5: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 5/

Exemple: Google Maps

• DiffDiffDiffDifféééérents niveaux drents niveaux drents niveaux drents niveaux d’’’’abstractionsabstractionsabstractionsabstractions

• DiffDiffDiffDifféééérents points de vuesrents points de vuesrents points de vuesrents points de vues

Vue satelliteVue plan

Vue traficStreet view

Un autre niveau d’abstraction

Page 6: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 6/

Pourquoi Modéliser?

Pour gPour gPour gPour géééérer la complexitrer la complexitrer la complexitrer la complexitéééé

• Des applications de plus en plus énormes– Windows 2000:~40 millions de lignes de code– Impossible à gérer par un seul programmeur

• Permet de rPermet de rPermet de rPermet de rééééflflflflééééchir sur la conceptionchir sur la conceptionchir sur la conceptionchir sur la conception

• SSSSééééparation des prparation des prparation des prparation des prééééoccupationsoccupationsoccupationsoccupations– Plusieurs vues sur le même problème (statique, comportementale, etc.)

• Exemple: : : : Google– 400 000 Serveurs, une capacité de calcul gigantesque– 1 milliard de requêtes par jour

• Chacune interrogeant 8 milliards de pages web en moins d’1/5 de S.

Page 7: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 7/

Pourquoi Modéliser?

Pour communiquerPour communiquerPour communiquerPour communiquer

• Plusieurs acteurs dans le procédé de développement– Clients, manager, marketing, ingénieurs système & réseaux, etc.

• Le code n’est pas toujours compréhensible par les développeurs qui ne l’ont pas écrit

– On peut difficilement communiquer avec du code, pas assez abstrait!pas assez abstrait!pas assez abstrait!pas assez abstrait!

• Dans de gros projets souvent :– Des centaines de personnes– un peu partout dans le monde

• L’apparition de nouvelles façons de travailler– L’outsourcing, sous-traitance, etc.

Page 8: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 8/

Pourquoi Modéliser?

Pour pPour pPour pPour péééérenniser un savoirrenniser un savoirrenniser un savoirrenniser un savoir----fairefairefairefaire

• Certains projets peuvent durer des années– Pas toujours les mêmes personnes qui travaillent sur le projet

– Besoin de capitaliser un savoir faire indépendant du code et des technos

– Capturer le métier sans se soucier des détails techniques

• Exemples de projets:– Contrôleur aérien (Thalès): Projet ~8 ans, durée de vie 40 ans

– La construction d’un avion (Airbus): Projet ~10 ans, durée de vie 50 ans

La vision MD

E

Page 9: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 9/

Pourquoi Modéliser?

AugmenterAugmenterAugmenterAugmenter la productivitla productivitla productivitla productivitéééé• Génération de code à partir des modèles

– La vision MDE (Model-Driven Engineering)– 100% du code généré dans certains domaines d’application

• Exp. Site Web, fichier de configuration, BD, etc.

• Maîtrise de la variabilité– La vision ligne de produitLa vision ligne de produitLa vision ligne de produitLa vision ligne de produit

• Un modèle générique pour un produit, plusieurs variantes

• Exemple: Nokia– 1,1 milliard de téléphones portables (100 millions de plus par an)– Des milliers de versions de logiciels– Time-to-market ~3 mois

Page 10: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 10/

Logiciel = Code ?

• EstEstEstEst----ce vraiment nce vraiment nce vraiment nce vraiment néééécessaire de poser encore la question?cessaire de poser encore la question?cessaire de poser encore la question?cessaire de poser encore la question?

• Avant oui mais plus aujourdAvant oui mais plus aujourdAvant oui mais plus aujourdAvant oui mais plus aujourd’’’’hui:hui:hui:hui:– Logiciel= Documentation + ModLogiciel= Documentation + ModLogiciel= Documentation + ModLogiciel= Documentation + Modèèèèles + Codeles + Codeles + Codeles + Code

– Plusieurs Modèles, vues pour le même logiciel

– De la documentation générée en partie des modèles

– Du code généré en partie des modèles (100% dans certains cas)

• Grâce aux modGrâce aux modGrâce aux modGrâce aux modèèèèles aujourdles aujourdles aujourdles aujourd’’’’huihuihuihui– Une meilleurs gestion de la complexité, de la variabilité et de la productivité

Page 11: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 11/

Mais quel langage utiliser pour modéliser?

• Plusieurs langages existaient/existent Plusieurs langages existaient/existent Plusieurs langages existaient/existent Plusieurs langages existaient/existent

• En rEn rEn rEn rééééalitalitalitalitéééé un seul a run seul a run seul a run seul a rééééussi ussi ussi ussi àààà ssss’’’’imposer comme Le LANGAGE imposer comme Le LANGAGE imposer comme Le LANGAGE imposer comme Le LANGAGE pour la modpour la modpour la modpour la modéééélisation dlisation dlisation dlisation d’’’’applications OOapplications OOapplications OOapplications OO

• UML (UML (UML (UML (UnifiedUnifiedUnifiedUnified Modeling Modeling Modeling Modeling LanguageLanguageLanguageLanguage): Pourquoi l): Pourquoi l): Pourquoi l): Pourquoi l’’’’utiliser?utiliser?utiliser?utiliser?– Un standard mondialement utilisé (plus de 80% des projets)

– Standardisé par l’OMG (Open Mangement Group)

– Très bien outillé et documenté (livres, tuto, forums, etc.)

Page 12: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 12/

UML

- Historique- Les utilisations possibles d’UML

-Le processus de développement avec UML-Les phases de développement couvertes par UML

- UML: des diagrammes et des points de vue

Page 13: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 13/

Naissance d’UML

• Entre 89 et 94 : le nombre de méthodes orientées objet est passé de 10 à plus de 50

• Chaque méthode proposait son propre langage de modélisation

• Toutes les méthodes avaient pourtant d’énormes points communs (objets, méthode, paramètres, …)

• Au milieu des années 90, G. Booch, I. Jacobson et J. Rumbaugh ont chacun commencé à adopter les idées des autres. Les 3 auteurs ont souhaité créer un Langage de Modélisation Unifié

Page 14: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 14/

Historique

Page 15: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 15/

Généalogie d’UML

• L’histoire n’a retenu que les 3 amigos alors que tant d’autres ont participé à la standardisation d’UML

• UML évolue régulièrement (sans les 3 amigos ☺)

Page 16: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 16/

UML: Principales influences

• BoochBoochBoochBooch: : : : Catégories et sous-systèmes• EmbleyEmbleyEmbleyEmbley: : : : Classes singletons et objets composites• Fusion: Fusion: Fusion: Fusion: Description des opérations, numérotation des messages• Gamma, et al.: Gamma, et al.: Gamma, et al.: Gamma, et al.: Frameworks, patterns, et notes• HarelHarelHarelHarel: : : : Automates (Statecharts)• Jacobson: Jacobson: Jacobson: Jacobson: Cas d’utilisation (use cases)• Meyer: Meyer: Meyer: Meyer: Pré- et post-conditions• OdellOdellOdellOdell: : : : Classification dynamique, éclairage sur les événements• OMT: OMT: OMT: OMT: Associations• ShlaerShlaerShlaerShlaer----MellorMellorMellorMellor: : : : Cycle de vie des objets• WirfsWirfsWirfsWirfs----BrockBrockBrockBrock: : : : Responsabilités (CRC)

Page 17: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 17/

UML Aujourd’hui

• UML est le langage de modUML est le langage de modUML est le langage de modUML est le langage de modéééélisation OO le plus connu et le plus utilislisation OO le plus connu et le plus utilislisation OO le plus connu et le plus utilislisation OO le plus connu et le plus utiliséééé

• UML s’applique à plusieurs domaines

– OO, RT, Déploiement, Requirement, …

• UML nUML nUML nUML n’’’’est pas une mest pas une mest pas une mest pas une mééééthodethodethodethode

– Exemple de méthode: RUP (Rational Unified Process)

• Peu dPeu dPeu dPeu d’’’’utilisateurs connaissentutilisateurs connaissentutilisateurs connaissentutilisateurs connaissent le standardle standardle standardle standard, ils ont une vision outillée d’UML (Vision Utilisateur)

– 5% forte compréhension, 45% faible compréhension, 50% aucune compréhension

• UML est fortement critiquUML est fortement critiquUML est fortement critiquUML est fortement critiquéééé car pas assez formelcar pas assez formelcar pas assez formelcar pas assez formel

• Le marché UML est important et s’accroît

– MDA et MDD, UML2.1, IBM a racheté Rational !!!

Page 18: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 18/

Trois utilisations possibles d’UML

(1)(1)(1)(1) Comme un langage pour faire des croquis, esquisses, Comme un langage pour faire des croquis, esquisses, Comme un langage pour faire des croquis, esquisses, Comme un langage pour faire des croquis, esquisses, éééébauchesbauchesbauchesbauches………… (explorer)(explorer)(explorer)(explorer)

– Pour échanger, communiquer rapidement autour d’une idée

– Des modèles pas forcément 100% complets

– Objectifs:Objectifs:Objectifs:Objectifs: Analyser, rrrrééééflflflflééééchirchirchirchir, décider (brainstorming)

– Probablement la manière dont UML est le plus utilisé aujourd’hui

Page 19: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 19/

Trois utilisations possibles d’UML

(2) Comme un langage de sp(2) Comme un langage de sp(2) Comme un langage de sp(2) Comme un langage de spéééécification de modcification de modcification de modcification de modèèèèles, patronsles, patronsles, patronsles, patrons…………(sp(sp(sp(spéééécifier)cifier)cifier)cifier)– Des modèles complets, des modèles prêts à être codés

– Des modèles utilisés pour prendre des décisions poussées de design

– Des modèles issus de Reverse Engineering• Cela permet de réfléchir dessus, d’améliorer la conception, • De casser des dépendances, d’appliquer des design patterns, etc.

– Possibilité de faire du round-trip engineering (outils pas encore très matures)

• Génération de code (classes et signatures de méthodes, pas le corps!!!pas le corps!!!pas le corps!!!pas le corps!!!)• Reverse engineering pour isoler une vue ou un élément du système

– Objectifs:Objectifs:Objectifs:Objectifs: (1)+ Concevoir, PPPPéééérenniserrenniserrenniserrenniser, Générer une partie du code– La maniLa maniLa maniLa manièèèère dont est utilisre dont est utilisre dont est utilisre dont est utiliséééé UML dans de gros projetsUML dans de gros projetsUML dans de gros projetsUML dans de gros projets

Page 20: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 20/

Trois utilisations possibles d’UML

(3) Comme langage de programmation (3) Comme langage de programmation (3) Comme langage de programmation (3) Comme langage de programmation (produire)(produire)(produire)(produire)

• Tout mettre dans le modèle, le modèle UML devient la source du code– même le corps des méthodes, en Java et dans d’autres formalismes tels que

Executable UML, J, xOCL, etc.

• Génération + compilation du code à partir du modèle

• Un outillage sophistiqué par assez mature malheureusement

• Objectifs:Objectifs:Objectifs:Objectifs: (2) + génération automatique de tout le code

• La manière dont on aimerait utiliser UML dans le futur mais le domaine reste encore immature malgré quelques tentatives

– La difficulté réside à modéliser la logique du comportement

• « It’s worth using UML as a programming language only if it results in something that’ssignificantly more productive than using another programming language »

– Martin Fowler, UML Martin Fowler, UML Martin Fowler, UML Martin Fowler, UML DistilledDistilledDistilledDistilled

Page 21: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 21/

Dans ce cours

• On utilisera UML comme dans (1) (Explorer) et (2) (SpOn utilisera UML comme dans (1) (Explorer) et (2) (SpOn utilisera UML comme dans (1) (Explorer) et (2) (SpOn utilisera UML comme dans (1) (Explorer) et (2) (Spéééécifier)cifier)cifier)cifier)

• On expliquera pourquoi (3) nOn expliquera pourquoi (3) nOn expliquera pourquoi (3) nOn expliquera pourquoi (3) n’’’’est pas encore matureest pas encore matureest pas encore matureest pas encore mature

Page 22: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 22/

Le processus de développement avec UML

• UML est indépendant du procédé ou de la méthode de développement

• Cependant le processus de dCependant le processus de dCependant le processus de dCependant le processus de dééééveloppement avec UML est veloppement avec UML est veloppement avec UML est veloppement avec UML est ddddééééfini comme fini comme fini comme fini comme éééétant:tant:tant:tant:– Itératif & Incrémental

– Dirigé par les cas d’utilisation

– Centré sur l’architecture

• Après la présentation des différents diagrammes nous proposerons une méthode de développement utilisant UML qu’on nommera UML-P6

Page 23: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 23/

Les phases du développement couvertes par UML

• Expression des besoins

• Analyse

• Conception

• Réalisation

• Validation

• Déploiement

• Maintenance

Dans ce cours, nous essayerons de voir toutes ces utilisations d’UML

Bien couvertes par UML

Discutable:Réalisation : si utilisation d’UML comme langage de programmation.

Validation : génération automatique de cas de tests mais loin d’être exhaustifs

Déploiement : un diagramme UML pour ça

Maintenance : possibilité de faire du reverse eng. Application de Design patterns, round-trip eng.

Page 24: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 24/

UML: des diagrammes et des points de vue

- Présentation des diagrammes par point de vue

Page 25: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 25/

UML: des diagrammes et des points de vue

Digramme de packages

GRH Paye

Fondation

Gestion Activité

Instance:Candidat

Bibliothèque:Terminal:

searchItemByTitle

findItemByTitle

Diagramme de séquencesDiagramme d’activité

Acteur:Employé Acteur:Manager Acteur:RH

Créer demande de poste

Créer une offre d'emploi

Examiner demande de poste

Rechercher des candidats

Telecom

Organisme

PersonnePhysiqueNationalite PersonneMorale

est formé de

1..*1..*

LienTypeLien

*

*

Personne

Adresse

1..*

*

1..*

possède

possède

1..* Auteur

Groupe*

1

Diagramme classes

Vidéothèque

Louer un DVD

Rendre un DVD

Diagramme de Cas d’Utilisation

Diagramme états/transitions

Page 26: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 26/

UML: des diagrammes et des points de vue

Aspects Statiques du Système -Diagramme de classes-[Diagramme d’objets]-Diagramme de structure composite

Aspects Dynamiques du Système-Diagramme de séquences/[communication]-Diagramme d’états transitions-Diagramme d’activités-Diagramme de temps

Aspects fonctionnels du Système-Diagramme de cas d’utilisation-Diagramme de séquences-[Diagramme d’activités]

Aspects déploiements du Système -Diagramme de déploiement-Diagramme de composantsEn rouge: abordé dans ce cours

Entre [ ]: peu utilisé dans la vue

Page 27: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 27/

UML: Point de vue Fonctionnel

-Diagramme de Cas d’utilisation

-Les Scénarios

Page 28: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 28/

UML: Point de vue Fonctionnel

• UML propose pour cette vue, le diagramme de Cas d’Utilisation ou Use Case Diagram

• Les Cas d’utilisations peuvent être documentés par la suite avec:– Des scénarios (langage naturel),

– Des diagrammes de séquences pour formaliser les scénarios

– Des diagrammes d’activités pour exprimer le workflow

• Point de départ important dans le processus de dév. avec UML– Dirigé par les use cases

Page 29: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 29/

Le diagramme de Cas d’Utilisation

Un diagramme centrUn diagramme centrUn diagramme centrUn diagramme centréééé utilisateurutilisateurutilisateurutilisateur

• Un système est conçu pour les utilisateurs :

– ils savent ce que le système doit faire mais pas comment

– ils connaissent l’aspect fonctionnel du système

• Les utilisateurs du système sont les plus aptes à décrire comment ils s’en servent

���� Le systLe systLe systLe systèèèème doit donc être bâti me doit donc être bâti me doit donc être bâti me doit donc être bâti àààà partir des descriptions des utilisateurs.partir des descriptions des utilisateurs.partir des descriptions des utilisateurs.partir des descriptions des utilisateurs.

Page 30: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 30/

Le diagramme de Cas d’Utilisation

Le diagramme des cas d’utilisation est modélisé par :– Des acteurs– Des cas d’utilisation– Le Système– Des relations

• Associations, Héritage, dépendances

Ses objectifs sont :– Communiquer– Capturer les besoins fonctionnels du système– Délimiter le système– Visualiser le cahier des charges graphiquement – Peut servir à concevoir les tests

Page 31: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 31/

Le diagramme de Cas d’Utilisation: Acteur

• Un ActeurUn ActeurUn ActeurUn Acteur représente un rôle joué par une entité externe qui interagit directement avec le système étudié (déf. UML2.0, omg)

• Ça peut être un utilisateur humain (ex. Agent, caissier, client, etc.), un dispositif matériel (ex. serveur, imprimante, etc.) ou un autre système (ex. Gestion de stock, etc.);

• Notations graphiques

Gestion de stock

Page 32: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 32/

Le diagramme de Cas d’Utilisation: Acteur

• Comment identifier les acteurs?– Par un dialogue avec le client et les utilisateurs

– En délimitant les frontières du système

• Qui sont-ils ?• les utilisateurs humains: les profils possibles sans oublier l’administrateur

et l’opérateur de maintenance

• les autres systèmes connexes interagissant avec le système : logiciels, périphériques …

Page 33: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 33/

Le diagramme de Cas d’Utilisation: Cas d’Utilisation

• Un Cas dCas dCas dCas d’’’’UtilisationUtilisationUtilisationUtilisation représente un ensemble de séquences d’actions qui sont réalisées par le système et qui produisent un résultat observable intéressant pour un acteur particulier (déf. UML2.0, omg)

• Chaque Cas d’utilisation spspspspéééécifie un comportement attendu du systcifie un comportement attendu du systcifie un comportement attendu du systcifie un comportement attendu du systèèèèmemememeconsidconsidconsidconsidéééérrrréééé comme un toutcomme un toutcomme un toutcomme un tout, sans imposer le mode de réalisation de ce comportement.

• Il permet de décrire ce que le futur système devra faire, sans spsans spsans spsans spéééécifier cifier cifier cifier comment il le feracomment il le feracomment il le feracomment il le fera

• Notations graphiquesRetirer ArgentRetirer Argent

Nommer avec un verbe à l’infinitif + complément

Page 34: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 34/

Le diagramme de Cas d’Utilisation: Cas d’Utilisation

Comment identifier les cas d’utilisations?

• Répondre aux questions suivantes:

• Quels sont les services rendus par le système ?– Chaque fonctionnalité métier est représentée par un use case

• Quelles sont les interactions Acteurs/ système ?Pour chaque acteur identifié– Rechercher les différentes intentions métiers avec lesquelles il utilise le système

– Déterminer les services fonctionnels attendus du système par cet acteur

– Ne pas oublier celui qui maintient le système

• Quels sont les évènements perçus par le système (externes, temporels, changement d’état) ?

Page 35: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 35/

Le diagramme de Cas d’Utilisation: Le Système

• Le SystLe SystLe SystLe Systèèèèmemememe représente les limites de l’application considérée et regroupe un ensemble de cas d’utilisation

• Notations graphiques

Vidéothèque

Louer un DVD

Page 36: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 36/

Le diagramme de Cas d’Utilisation: Les Relations

• Entre acteurs– Héritage

Client

Client de la banque

• Entre acteurs & UC– Association

Client

Retirer ArgentRetirer Argent

Page 37: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 37/

Le diagramme de Cas d’Utilisation: Les Relations

Entre Cas d’utilisation: trois types de relations• Généralisation (héritage): le cas fils spécialise le

cas père. Sémantique cependant ambigüe dans le cadre des UC. À éviter

• Inclusion (<<include>>): le cas source incorpore directement et nnnnécessairementcessairementcessairementcessairement le cas cible à un endroit précis dans son enchaînement. Le cas Le cas Le cas Le cas inclus ninclus ninclus ninclus n’est jamais exest jamais exest jamais exest jamais exécutcutcutcuté tout seul. tout seul. tout seul. tout seul. À utiliser pour factoriser

• Extension (<<extend>>): le cas de base en incorpore indirectement et pas pas pas pas nnnnécessairementcessairementcessairementcessairementun autre à un endroit précis dans son enchaînement. Le cas de base peut être exLe cas de base peut être exLe cas de base peut être exLe cas de base peut être exécutcutcutcutétout seul.tout seul.tout seul.tout seul. À utiliser avec parcimonie

VirementVirement

Virement en LigneVirement en Ligne

Retirer ArgentRetirer Argent IdentificationIdentification<<include>>

Retirer ArgentPoints d’extension:

Vérif. Solde

Retirer ArgentPoints d’extension:

Vérif. SoldeConsulter SoldeConsulter Solde

<<extend>>

Condition: {porteur choisit Consulter Solde}Point d’extension: vérif. SoldeCondition: {porteur choisit Consulter Solde}Point d’extension: vérif. Solde

Page 38: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 38/

Le diagramme de Cas d’Utilisation

Quelques conseils:Quelques conseils:Quelques conseils:Quelques conseils:

• Granularité des UC 2 UC Vs. 15 UC– « There is a magic number:7, plus or minus 2. This refers to the number of concepts that

we humans can keep in mind at any one time » (H.A. Miller, 1958)

– Notions de fonctions fondamentales Vs. Opérationnelles

– Possibilité après d’abstraire (réduire le nombre de UC en définissant des fonctions plus globales) ou de décomposer (en définissant des fonctions à grain plus fin – ddddééééconseillconseillconseillconseilléééé!!!!)

• Eviter d’abuser des <<include>>, <<extend>> et de l’héritage entre UC.

• Processus itératif et centré utilisateurs pour définir les UC

Page 39: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 39/

Le diagramme de Cas d’Utilisation: Conclusion

• Les diagrammes de cas dLes diagrammes de cas dLes diagrammes de cas dLes diagrammes de cas d’’’’utilisation sont souvent employutilisation sont souvent employutilisation sont souvent employutilisation sont souvent employééééssss

– Ils permettent de décrire le système de façon très abstraite

– Ils offrent une vue fonctionnelle (par opposition à une vue OO)

– Ils sont très simples

• Les CU se limitent Les CU se limitent Les CU se limitent Les CU se limitent àààà ddddéééécrire le crire le crire le crire le «««« quoi quoi quoi quoi »»»» dddd’’’’un systun systun systun systèèèème, pas le me, pas le me, pas le me, pas le «««« comment comment comment comment »»»»

• Les cas dLes cas dLes cas dLes cas d’’’’utilisation sont une description fonctionnelle dutilisation sont une description fonctionnelle dutilisation sont une description fonctionnelle dutilisation sont une description fonctionnelle d’’’’un systun systun systun systèèèème aprme aprme aprme aprèèèès s s s quoi il faut passer quoi il faut passer quoi il faut passer quoi il faut passer àààà une description objet (une description objet (une description objet (une description objet (les scles scles scles scéééénariosnariosnariosnarios) utilisant :) utilisant :) utilisant :) utilisant :

– les diagrammes de séquences ou les diagrammes d’activités comme alternative ;

Page 40: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 40/

Les Scénarios

- Scénarios et Cas d’utilisation

- Exemple

Page 41: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 41/

Les Scénarios

• Les scénarios sont des instances de cas d’utilisation– Un scénario est un exemple de dialogue entre le système et un ou plusieurs acteurs

• Souvent dSouvent dSouvent dSouvent déééécrits en langage naturel puis formaliscrits en langage naturel puis formaliscrits en langage naturel puis formaliscrits en langage naturel puis formaliséééés s s s àààà llll’’’’aide de aide de aide de aide de diagrammes de sdiagrammes de sdiagrammes de sdiagrammes de sééééquences UMLquences UMLquences UMLquences UML– Une séquence d’actions décrivant l’interaction entre utilisateur et système

• Ils font partie de la documentation des CU. (très conseillé de les faire)

• Certains s’en servent pour identifier les Cas d’Utilisation– Plusieurs scénarios ayant le même but utilisateur =>=>=>=> un CU.

Page 42: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 42/

Les Scénarios

• Chaque cas d'utilisation va avoir un ensemble de scChaque cas d'utilisation va avoir un ensemble de scChaque cas d'utilisation va avoir un ensemble de scChaque cas d'utilisation va avoir un ensemble de scéééénariosnariosnariosnarios

• des scénarios primaires (tout va bien, le Happy Path)

• des scénarios secondaires (les exceptions)

• L'ensemble des scénarios + UC constitue + ou - le cahier des charges du système

Page 43: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 43/

Les Scénarios: Exemple

• Exemple de documentation d’un UC/Scénario

Page 44: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 44/

Les Scénarios: Exemple

• Le scénario Retirer Argent (le Happy Path):

• Identifier par la suite les différents scénarios d’exceptions– La technique du If (faire un « si » ça ne marche pas à chaque étape)

• Prochaine étape, formaliser les scformaliser les scformaliser les scformaliser les scéééénarios narios narios narios àààà llll’’’’aide de diagrammes aide de diagrammes aide de diagrammes aide de diagrammes de sde sde sde sééééquencequencequencequence

1) Le client introduit sa carte bancaire2) Le système demande le code secret3) Le client saisit son code secret. Le système vérifie le code 5) Le système demande le montant à retirer. Le client saisit le montant 6) Le système retourne la carte bancaire 7) Le client reprend sa carte bancaire8) Le système délivre les billets correspondant au montant9) Le client prend les billets

Page 45: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 45/

Diagramme de Séquence et d’Activités

• Ces diagrammes peuvent être utilisés dans cet vue

• Pour représenter visuellement les scénarios

• Pour représenter visuellement des fonctionnalités compliquées

• Nous les présenterons dans le contexte de la vue dynamique

Page 46: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 46/

UML: Point de vue Statique

-Rappel OO-Diagramme de Classes

-Diagramme d’Objet- Diagramme de Structure Composite

Page 47: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 47/

Rappel OO

-Vision OO

-Concepts de base

Page 48: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 48/

Vision OO

• Moyens d’organiser le logiciel (application) sous forme d’une collection d’objets qui encapsulent ensemble structures de données et comportement– Plutôt que sous forme de fonctions

• Concepts dans ce rappel– Objet– Classe– Message– Encapsulation – Héritage– Polymorphisme

Page 49: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 49/

Les Objets

• Les objets informatiques dLes objets informatiques dLes objets informatiques dLes objets informatiques dééééfinissent une reprfinissent une reprfinissent une reprfinissent une repréééésentation sentation sentation sentation simplifisimplifisimplifisimplifiéééée des entite des entite des entite des entitéééés du monde rs du monde rs du monde rs du monde rééééelelelel

• Les objets représentent des entités concrètes (avec une masse) ou abstraites (concept)

• Les objets encapsulent une partie de la connaissance du monde dans lequel ils évoluent

Page 50: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 50/

Un Objet

IdentitIdentitIdentitIdentitéééé– constante– permet à un objet d'être manipulé, référencé par d'autres

EtatEtatEtatEtat– variable– conforme à un certain type (classe)– caractérise la "valeur" d'un objet à un instant donné

ComportementComportementComportementComportement– opérations que peut accomplir l'objet– invoqué via l'interface de l'objet– modifie ou non l'état

Page 51: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 51/

Objet : Exemples

Page 52: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 52/

Objet: Exemples

Page 53: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 53/

Messages & Méthodes

• MessagesMessagesMessagesMessages– La seule façon de communiquer entre objets

– Indiquent quel comportement les objets doivent exécuter

• MMMMééééthodesthodesthodesthodes– Indiquent comment répondre à un message (comment le

comportement s’exécute)

– Ont accès aux données de l’objet (i.e. état)

Page 54: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 54/

Encapsulation

• Les donnLes donnLes donnLes donnéééées de les de les de les de l’’’’objet (son objet (son objet (son objet (son éééétat) sont privtat) sont privtat) sont privtat) sont privééééeseseses

• Le comportement d’un objet est encapsulé– Les clients d’un objet connaissent seulement l’ensemble de

messages que l’objet peut recevoir

– Les implémentations des méthodes restent cachées aux clients externes

Page 55: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 55/

Encapsulation

• Interface : une vitrine de lInterface : une vitrine de lInterface : une vitrine de lInterface : une vitrine de l’’’’objetobjetobjetobjet

• Les actions exécutées sont masquées à l’initiateur du message

• Délégation: un objet peut faire appel à un autre objet afin d’honorer son service

Page 56: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 56/

Classe

• Une unitUne unitUne unitUne unitéééé dddd’’’’abstraction abstraction abstraction abstraction

• Un mUn mUn mUn méééécanisme de groupage, de classificationcanisme de groupage, de classificationcanisme de groupage, de classificationcanisme de groupage, de classification

– Une collection d’objet similaires

– Chaque objet est l’instance d’une classe

– La classe est le type de l’objet

• Décrit la structure commune à une collection d’objets en termes de propriétés et de méthodes (comportement)

Page 57: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 57/

Classe Vs. Objets

• Une classe spécifie la structure et le comportement d’un ensemble d’objets de même

nature (un moule)

– La structure d’une classe est constante

• Les objets sont des instances de classe, ils peuvent être détruits ou ajoutés pendant l’exécution

• La valeur des attributs des objets peut changer

Page 58: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 58/

Classes et Instances

Page 59: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 59/

Variables d’instances

• Valeurs de celles-ci propres à l’instance

• Versus Variable de classe: partagVersus Variable de classe: partagVersus Variable de classe: partagVersus Variable de classe: partagéééée par toutes les instances de la e par toutes les instances de la e par toutes les instances de la e par toutes les instances de la classeclasseclasseclasse

– Notion de statique en Java ou C++

– Si une instance modifie la valeur de la variable de classe, toutes les autres seront affectées

Page 60: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 60/

Héritage

• Permet la réutilisation de l’état et du comportement d’une classe par d’autres classes

• Super-classe– Contient les éléments communs à un ensemble de sous-classes

– Les sous-classes héritent toutes les variables et méthodes de la super-classe

– Les sous-classes raffinent la définition de leur super-classe

Page 61: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 61/

Héritage -exemple

Person

NurseDoctor

Surgeon FamilyDoctor

simple

Vehicle

Land Vehicle Water Vehicle

Car Amphibious Vehicle Boat

multiple

Page 62: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 62/

Polymorphisme

• Polymorphisme adPolymorphisme adPolymorphisme adPolymorphisme ad----hochochochoc

– représente la possibilité de définir plusieurs fonctions de même nom mais possédant des paramètres différents (en nombre et/ou en type)

– Ex.• La méthode int addition(int, int) pourra retourner la somme de deux entiers

• La méthode float addition(float, float) pourra retourner la somme de deux flottants

• La méthode char addition(char, char) pourra définir au gré de l'auteur la somme de deux caractères

Page 63: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 63/

Polymorphisme

• Polymorphisme dPolymorphisme dPolymorphisme dPolymorphisme d’’’’hhhhééééritage (ou sousritage (ou sousritage (ou sousritage (ou sous----typage)typage)typage)typage)

– La possibilité de redéfinir une méthode dans des classes héritant d'une classe de base

– Il est possible d'appeler la méthode d'un objet sans se soucier de son type intrinsèque

– permet de faire abstraction des détails des classes spécialisées d'une famille d'objet, en les masquant par une interface commune(qui est la classe de base)

Page 64: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 64/

Polymorphisme

• Polymorphisme dPolymorphisme dPolymorphisme dPolymorphisme d’’’’hhhhééééritage ritage ritage ritage –––– ExempleExempleExempleExemple

Vehicle v = null;

v = new Car();v.startEngine();

v = new Boat();v.startEngine();

Page 65: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 65/

Polymorphisme

• Polymorphisme dPolymorphisme dPolymorphisme dPolymorphisme d’’’’hhhhééééritage ritage ritage ritage –––– ExempleExempleExempleExemple

class Forme {

public: virtual float Aire() = 0;

};

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

class Carre:public Forme {

public: virtual float Aire() {

return m_cote*m_cote;

}

private: float m_cote;

};

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

class Cercle:public Forme {

public: virtual float Aire() {

return 3.1415926535*m_rayon*m_rayon;

}

private: float m_rayon;

};

float AireTotal(Forme* tabl[], int nb) {

float s=0;

for(int i = 0;i<nb; i++) {

s+= tabl[i]->Aire(); // le programme sait automatiquement quelle fonction appeler

}

return s;

}

...

Forme* tableau[3] = {new Carre, new Cercle, new Carre}; AireTotal(tableau,3);

...

Page 66: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 66/

Polymorphisme

• Polymorphisme gPolymorphisme gPolymorphisme gPolymorphisme géééénnnnééééralisralisralisraliséééé (param(param(param(paraméééétrtrtrtréééé))))– correspond à la possibilité de définir des fonctions génériques et

suppose la possibilité d'abstraire les types et peut être vu comme la forme ultime du polymorphisme

#include <iostream.h>

template <class C> void echanger(C &a, C &b){ C x;

x = a;

a = b;

b = x;

}

Page 67: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 67/

Diagramme de Classes

Page 68: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 68/

Diagramme de Classes

• Un diagramme de classes est un graphe d’éléments connectés par des relations

• Un diagramme de classes est une vue graphique de la structure statique d’un système

Company

Person

Employeemembers

0..1 *

Page 69: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 69/

Classe

• Représentation détaillée d'une classe

• Représentation simplifiée

Nom_classe

Nom_classe

AttributAttribut : typeAttribut : type = valeur par défaut

OpérationOpération (par1 : type ...) : type retour

. . .

Employee

Person

+name : string

+firstName : string

#id : string

nbPerson : integer

/completeName : string+getId()

Page 70: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 70/

Les visibilités

Interface

corps private = - implémenteur

usager

héritier

package = ~

protected = #

public = +

frère

Page 71: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 71/

Attributs

• Une classe peut contenir des attributs

• La syntaxe d’un attribut est :visibilité nom : type [= valeur par défaut]

• La visibilité est:

– ‘+’ pour public

– ‘#’ pour protected

– ‘-’ pour private• UML définit son propre ensemble de types

– Integer, real, string, …• Un attribut peut être un attribut de classe, il est alors souligné.

• Un attribut peut être dérivé (calculé), il est alors préfixé par le caractère ‘ /’

Page 72: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 72/

Attributs: Exemples

Person

+name : string

+firstName : string

#id : string

nbPerson : integer

/completeName : string

Company

url [3] : string

name : string

Attribut de classe

Attribut calculé

• Un attribut de classe est un attribut dont la valeur est partagée par toutes les instances de cette classe

• Un attribut dérivé (calculé), est un attribut dont la valeur est calculée à partir d’autres attributs

cardinalité

Page 73: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 73/

Opérations

• Une opération est un service qu’une instance de la classe peut exécuter

• La syntaxe d’une opération est:visibility name(parameter):return

• La syntaxe des paramètres est:kind name : type

• Le kind peut être:– in, out, inout

Page 74: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 74/

Opérations: Exemples

Company

url [3] : string

name : string

+makeProfit():real

+getWorkingEmployee(): [*] Employee

Employee

+stopWork():boolean

+startWork(In work:string):boolean

Page 75: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 75/

Les Associations

• Concept important dans UML

• Une relation met en correspondance des éléments d’ensembles

• Une relation permet la description d'un concept à l’aide d’autres concepts

• TrTrTrTrèèèès important: Une association est un lien stable (persistant) s important: Une association est un lien stable (persistant) s important: Une association est un lien stable (persistant) s important: Une association est un lien stable (persistant) entre deux objetsentre deux objetsentre deux objetsentre deux objets

Company Employee

* 1..*

Page 76: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 76/

Les Associations: Vue ensembliste

• Une association met en correspondance des Une association met en correspondance des Une association met en correspondance des Une association met en correspondance des ééééllllééééments ments ments ments dddd’’’’ensemblesensemblesensemblesensembles

• Exemple avec un diagramme d’objet (présenté plus loin)

Page 77: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 77/

Les Associations

• Une association binaire est composée de deux associations ends.

• Une association end est paramétrée par:– Un nom (le role joué par l’entité connectée)

– Une cardinalité (0, 1, *, 1..*, …)

– Un genre d’agrégation (composite, aggregation, none)

– De plusieurs propriétés: isNavigable, isChangeable, etc.

Page 78: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 78/

Association: Notation

Client Compte1..*

compte

Navigabilité

Rôle

Nom d’association

Cardinalitéprécisée

procède0..1client

Page 79: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 79/

Association réflexive

• Une association réflexive lie des objets de la même classe

Page 80: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 80/

Les Associations N-aires

• Relation entre plus de deux classes

• Peuvent toujours être représentées autrement

Page 81: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 81/

Classe d’association

• Quand l’association contient de l’information

Le salaire est une information correspondant• ni à une personne,• ni à une société,mais à un emploi (un couple personne-société)

Traduction

Page 82: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 82/

Association : Navigabilité

• Le moyen d’accéder aux propriétés (attributs et opérations) d’autres objets à travers le graph d’objets représentant l ’application

• Représentée par une flèche– Attention à la notation en cas de navigabilité dans les 2 sens

Client

Produit

concerne

Commande

1..*

commande1..*

1..* produit

Commandefait

*

Une instance de Client pour accéder aux propriétés de Produit (attributs et opérations)

Page 83: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 83/

Association : Navigabilité

Student Course

attends

students attendedCourses

* *

Un étudiant suit des cours (0 ou plusieurs). A partir d’un étudiant, il est possible d’identifier les cours suivis (navigable).

Un cours est suivi par plusieurs étudiants (0 ou plusieurs).

public class Student {

public Course attendedCourses[];

public Student() { }

}

public class Course {

public Course() {

}}

• Impact de la navigabilitImpact de la navigabilitImpact de la navigabilitImpact de la navigabilitéééé et des noms de rôles sur la get des noms de rôles sur la get des noms de rôles sur la get des noms de rôles sur la géééénnnnéééération de code ration de code ration de code ration de code

Page 84: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 84/

• Dans le cas d’une association réflexive

• Cas de plusieurs associations entre deux mêmes classes

Associations: Rôles Indispensables

Page 85: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 85/

Associations: Agrégation & Composition

• Notion de « est composé de », « contient » « est construit à partir de », « est formé de », …

• Renforce la sémantique d’association (un ensemble d’objets qui fait partie d’un autre objet)

S tudent

S chool Departmenthas

1 1..*

member

1..*

*

Composition

Agrégation

Page 86: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 86/

Associations: Agrégation

• L’agrégation exprime une composition faible(partagée)

• Un composant peut faire partie de plusieurs composites– La multiplicité coté composite peut être (1…*)

• Le cycle de vie du composant n’est pas lié à celui du composite– Si le composite est détruit, les composants restent

Student

School

member

1..*

*

Page 87: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 87/

Associations: Composition

• Exprime une composition forte (n’est pas partagée)

• Le composant ne fait partie qu’un d’un seul composite– Multiplicité coté composite égale à 1

• Le cycle de vie du composant est lié à celui du composite– Si le composite est détruit, les composant n’ont plus raison d’être

School Departmenthas

1 1..*

Page 88: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 88/

Associations: Agrégation & Composition

• Attention aux abus d’utilisation de ces types d’associations

• L’agrégation n’est pas trop utilisée vu qu’elle présente pas mal de similitudes dans la sémantique avec une association simple

– Pas de contraintes sur les cardinalités

– Juste sémantiquement un peu plus forte (le but initial dans le standard) et interdiction des cycles

– Utilisation toujours ambiguë dans la communauté

• Eviter de construire vos diagrammes de classe en vous posant lesEviter de construire vos diagrammes de classe en vous posant lesEviter de construire vos diagrammes de classe en vous posant lesEviter de construire vos diagrammes de classe en vous posant les questions questions questions questions du genre, si je ddu genre, si je ddu genre, si je ddu genre, si je déééétruis cette classe esttruis cette classe esttruis cette classe esttruis cette classe est----ce que lce que lce que lce que l’’’’autre doit disparaautre doit disparaautre doit disparaautre doit disparaîîîître aussi, tre aussi, tre aussi, tre aussi, cette classe est forcement composcette classe est forcement composcette classe est forcement composcette classe est forcement composéééée de cette classe, etc.e de cette classe, etc.e de cette classe, etc.e de cette classe, etc.

– Ces types d’associations doivent être des cas spéciaux et non la généralité

Page 89: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 89/

Généralisation (Héritage)

• L’héritage est un type de relation dans UML – et non pas un type d’association, elle aussi est une relation

• L’héritage permet de partager les points communs (attributs, opérations et associations), et de préserver les différences

• Peut être simple ou multiple– En Java l’héritage n’est que simple

• Peut être spécifié entre classes, packages, Use case, etc.

• Identifiable avec des phrase du genre « est une sorte de »

Page 90: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 90/

Généralisation: Notation

Shape

Rectangle Circle

• On parle de Généralisation, Spécialisation

• Classe mère, classes filles

• Super classe, sous-classes

Page 91: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 91/

Généralisation: Héritage des associations

membre Contrat

1..*

joueur entraineur

procède

équipe0..1

joueur entraineur assistant

membreestComposee

*

Page 92: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 92/

Les Classes et Opérations Abstraites

• Une classe abstraite est une classe qui contient au moins une opération abstraite

– Capture des comportements communs

– Servent à structurer le système

– Ne peut pas être instanciée

• Une opération abstraite est une opération dont l’implémentation est laissée aux classes filles

Attention: dans UML1.X, classe et opération abstraite étaient en italique. Ce n’est plus obligatoire dans UML2.0. Rajouter {abstract}

Forme

{abstract}

CalculerSurface() {abstract}

Carre

{abstract}

CalculerSurface()

Cercle

{abstract}

CalculerSurface()

Page 93: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 93/

Les Interfaces

• La vitrine de la classe

• Un ensemble d’opérations sans corps – Juste la signature– Peut être vue comme une classe abstraite dont toutes les opérations sont

abstraites

• Un puissant moyen de typage

• Une Classe peut réaliser une ou plusieurs interfaces

• Un contrat qui engage la classe qui réalise l’interface à implémenter ses opérations

Page 94: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 94/

Les Interfaces: Notation

String

isEqual (Object) : booleanisGreater (Object) : booleanhash () : integer

«interface»Comparable

isEqual (Object) : booleanisGreater (Object) : boolean

Comparable

String

isEqual (Object) : booleanisGreater (Object) : booleanhash () : integer

Ou bien:

Page 95: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 95/

Les Notes (commentaires)

• Il est possible de rattacher à n’importe quel élément de digrammes UML des notes ou des commentaires

– Pour mieux expliquer certains aspects, rajouter plus de précision

– Certains outils s’en servent pour y mettre le code des opérations (en Java par ex.) afin d’aller vers une génération 100% du code à partir du modèle

• Notation graphique

Company Employee

<<comment>>

Une association n'est pas une company

* 1..*

Page 96: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 96/

Les Contraintes

• Ça peut être des règles métiers, de bonne structuration du modèle, etc.

• Peuvent être exprimé en langage naturel, en utilisant les quelques contraintes définies par UML ({ordred}, {frozen}, etc.)

• Peuvent être formalisées à l’aide d’OCL (Object ConstraintLanguage), standard OMG (pas abordé dans ce cours)

Company Employee

ageLimit

{self.age<60}

* 1..*

Exemple de contrainte exprimée à l’aide d’OCL

Page 97: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 97/

Autres Concepts

• On peut ajouter une contrainte {ordonnordonnordonnordonnéééé} (ordred) ou {tritritritriéééé} (sorted) pour transformer un "ensemble d'objets« en "liste d'objets" ordonnés ou triés.

• La notion de soussoussoussous----ensembleensembleensembleensemble indique qu’une collection fait partie d’une autre collection. Le ouououou----exclusifexclusifexclusifexclusif ne le permet pas

Personne ecole

Page 98: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 98/

Autres Concepts

• Qualification ou Qualifieur permet la restriction des associations

Page 99: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 99/

Les Packages

• Un package permet de grouper des éléments– Classes, use case, etc.

• Un package sert d’espace de désignation (nommage)– Deux classes portant le même nom ne peuvent être dans le même package– Précéder du nom de package si deux classes ont le même nom mais

appartiennent à deux packages différents

• Un package peut inclure d’autres packages

• Un package peut importer ou utiliser d’autres packages

• L’héritage entre package est possible

Page 100: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 100/

Les Packages: Exemple

• Import: élément est importé dans le package avec une visibilité public. l’import est transitif en cas de plusieurs imports

• Access: élément est importé dans le package avec une visibilité private. Pas de transitivité

Page 101: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 101/

Diagramme d’Objets

Page 102: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 102/

Diagramme d’Objets

• Un diagramme d’objet représente la vue statique d’un ensemble d’ instance de classes

• On parle d’objets et de liens et non pas de classes et d’associations

• Les rôles sont facultatifs

• Servent à valider le diagramme de classe, à donner des exemples

• Il est peu utilisé

Page 103: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 103/

Diagramme d’Objets: Exemple

Page 104: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 104/

Diagramme de Structure Composite

Page 105: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 105/

Diagramme de Structure Composite

• Nouveauté dans UML 2.0

• Expose la structure interne d'une classe ainsi que les collaborations que cette dernière rend possible – Notion d’interfaces fournies et requises

– Notion de parties: un rôle joué par une instance d'une classe ou un ensemble d'instances à l'exécution. La partie peut inclure une cardinalité

– Notion de port: regroupe les interfaces fournies et requises selon des interactions logiques que le composant aura avec le monde extérieur ou avec ses parties

• Encore trop tôt pour voir s’il est utile/utilisé

Page 106: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 106/

Diagramme de Structure Composite: Exemples

Un composant avec de multiples ports

Vue interne d’un composantInstance de la classe Car

Page 107: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 107/

UML: Point de vue Dynamique

-Diagramme de Séquence-Diagramme de Collaboration-Diagramme d’État/Transition

-Diagramme d’Activité

Page 108: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 108/

Les Diagrammes de Séquence

Page 109: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 109/

Diagrammes de Séquence

• Objectif:Objectif:Objectif:Objectif: représenter des exemples (instances) d’interaction entre objets dans la réalisation de processus de l’application

– Interaction:Interaction:Interaction:Interaction: un ensemble de messages échangés par une partie du système

• Un diagramme de séquence capture typiquement le comportement d’un seul scénario– Possibilité de faire des IF dans le même D.S pour gérer les alternatives

• Très utilisés!– Peuvent aussi servir pour les Tests (abordés plus loin)

Page 110: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 110/

Exemple

• Un diagramme de séquence a deux dimensions :– L'axe horizontal représente les différents objets

– L'axe vertical représente le temps

Page 111: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 111/

Diagrammes de Séquence: Constituants

• Objets:Objets:Objets:Objets: instances de classes qui participent à l’interaction

• Les objets sont représentés avec une ligne de vie

Objet anonyme non typé anonyme typé identifié non typé identifié typé

Page 112: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 112/

Diagrammes de Séquence: Constituants

• Messages:Messages:Messages:Messages: un message est une communication entre objets pour communiquer une information ou bien déclencher une action

– Message Simple (un Call)

– Message Asynchrone

– Message de Retour • Peut être omis

résultat=:nomOp (param)

Valeur de retour

nomOp (param)

Les paramètres et le résultat, de l’appel, si y’en a

Page 113: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 113/

Diagrammes de Séquence: Messages de Création et de Destruction

Ob1: A:

Ob2: B

X

:création

opération1

opération2

Destruction

Page 114: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 114/

Un autre exemple, d’autres concepts

Page 115: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 115/

Diagrammes de Séquence: La bande d’activation

• Permet de voir quand l’objet est actif dans l’interaction

Page 116: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 116/

Diagrammes de Séquence: L’appel récursif

• L’objet peut appeler une opération chez lui (interaction interne)– Voir aussi la bande d’activation

Page 117: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 117/

Diagrammes de Séquence: Le type de contrôle

• Les diagrammes de séquence permettent d’identifier aisément (visuellement) le type de contrôle– Contrôle centralisé Vs. Contrôle distribué

Page 118: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 118/

Diagrammes de Séquence: les fragments combinés

• Permettent de représenter les boucles, les branchements conditionnels, les références dans un diagramme de séquence

Exemple de branchements conditionnels

Exemple de boucle

Fragment optionnel avec condition

Page 119: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 119/

Diagrammes de Séquence: les fragments combinés

Instance:user

objet1:

m3

ref

Instance:user

objet1:

m1

m2

Instance:user

objet1:

m4

ref

Sd S1

M12 M12

Sd S2

Sd M12

• Exemple de l’opérateur refrefrefref : permet de r: permet de r: permet de r: permet de rééééfffféééérencer un diagramme de rencer un diagramme de rencer un diagramme de rencer un diagramme de ssssééééquence quence quence quence àààà partir dpartir dpartir dpartir d’’’’autres D.Sautres D.Sautres D.Sautres D.S

Page 120: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 120/

Diagrammes de Séquences: L’ancienne notation UML 1.x

• Principalement, la notation concernant les boucles, les If, et les messages asynchrones

Page 121: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 121/

Diagrammes de Séquence: Conclusions

• Permettent de décrire la dynamique d’un système

• De formaliser les scénarios

• Mettent l’accent sur la dimension « Temps » dans l’interaction

• Permettent de réfléchir sur le type de contrôle + objets impliqués dans l’interaction (moins bien que le diagramme de collaboration)

• Permettent de faire le lien entre les diagrammes de cas d’utilisation et les diagrammes de classes

Page 122: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 122/

Diagramme de Collaboration

Page 123: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 123/

Diagrammes de Collaboration: En bref

• Les mêmes constituants qu’un diagramme de séquence

• L’accent est plus mis sur les objets impliqués dans l’interaction que sur l’aspect temporel des échanges de messages

• Peu utilisé

• Dans certains outils, ils sont générés automatiquement à partir des diagrammes de séquence

Page 124: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 124/

Diagrammes de Collaboration: Exemple

Page 125: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 125/

Diagrammes d’États/Transitions

Page 126: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 126/

Diagrammes d’États/Transitions

• Attachés à une classe– Généralisation des scénarios (tous les cas de figures)– Description systématique des réactions d'un objet aux changements de son

environnement– Peuvent être utilisés pour décrire les états d’un système entier (lors des 1ères

phases de dév. où les classes ne sont pas encore identifiées)

• Décrivent les séquences d’états d’un objet ou d’une opération :– En réponse aux «stimulis» reçus– En utilisant ses propres actions (transitions déclenchées)

• Réseau d’états et de transitions– Automates étendus– Essentiellement Diagrammes de Harel (idem OMT)

Page 127: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 127/

Diagrammes d’États/Transitions: Exemple

Porte

ouvrir()fermer()verrouiller()déverrouiller()

Ouverte fermee

Verouillee

fermer()

ouvrir()

verrouiller()deverrouiller()

Page 128: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 128/

Diagrammes d’États/Transitions: Constituants

• ÉÉÉÉtat:tat:tat:tat: Un état est caractérisé par une notion de durée et de stabilité. Il porte un nom

• Un automate comporte un et un seul état initial et un nombre quelconque d'états finaux

• TransitionTransitionTransitionTransition: Ce qui provoque le passage instantané de l’objet d’un état à un autre– Connexion unidirectionnelle– Déclenchée par un événement

NomEtat

Page 129: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 129/

Diagrammes d’États/Transitions: Syntaxe & Notation

• L'événement : "événement"

• déclenche l'action : "action"

• si la condition : "garde" est vérifiée.

evt1 [cond] /opE1 E2

état

transition

événement reçuaction

condition de garde

Page 130: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 130/

Diagrammes d’États/Transitions: Événements

• Stimulis auxquels réagissent les objets– Occurrence déclenchant une transition d’état

• Abstraction d'une information instantanée échangée entre des objets et des acteurs

– Un événement est instantané

– Un événement correspond à une communication unidirectionnelle

– Un objet peut réagir à certains événements lorsqu'il est dans certains états.

– Un événement appartient à une classe d'événements (classe stéréotypée «signal»).

Page 131: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 131/

Diagrammes d’États/Transitions: Événements (types)

• Réalisation d’une condition arbitraire– transcrit par une condition de garde sur la transition

• Réception d’un signal issu d’un autre objet– transcrit en un événement déclenchant sur la transition

• Réception d’un appel d’opération par un objet– transcrit comme un événement déclenchant sur la transition

• Période de temps écoulée– transcrit comme une expression du temps sur la transition

Page 132: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 132/

Diagrammes d’États/Transitions: Événements (Exemples)

• nomEvenement( listeParametre )

• nomParametre1 : Type, nomParametre2 : Type, ...

• Pour une durée : after( 2 secondes )

• Pour une condition : when( var = 3 )

Page 133: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 133/

Diagrammes d’États/Transitions: Action

• Action :Action :Action :Action : opération instantanée (conceptuellement) et atomique (ne peut être interrompue)

• Déclenchée par un événement– Traitement associé à la transition

– Ou à l ’entrée dans un état ou à la sortie de cet état

Page 134: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 134/

Diagrammes d’États/Transitions: Action

• Actions à l’entrée et sortie de l’état– entry/ indique une action exécutée à chaque entrée dans l'état.

– exit/ indique une action exécutée à chaque sortie de l'état.

Etat

entry/ faire quelque choseexit/ faire autre chose

Page 135: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 135/

Diagrammes d’États/Transitions: Activité Interne

• Activité : opération se déroulant continuellement tant que l’objet est dans l ’état associé

– do/ action

• Lien directe entre diagramme d’E/T et le diagramme d’activités

• Une activité peut être interrompue par un événement.

Page 136: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 136/

Diagrammes d’États/Transitions: Transition Interne

• L’objet ne change pas d’état

• Une transition interne est déclenchée à chaque occurrence de l'événement spécifié (dans l’état)

• Elle est différente d'une transition réflexive– dans une transition réflexive, il y a sortie puis entrée dans l'état

Etat

Ev1 [t=0]/ faire quelque choseEv1 [t>0]/ faire autre chose

Page 137: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 137/

Diagrammes d’États/Transitions: Garde

• Une condition qui valide ou non le déclenchement d'une transition lors de l'occurrence d'un événement

Attente

ClimatiserVentiler

when (temperature > 22) [ete]when (temperature > 22) [hiver]

Page 138: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 138/

Diagrammes d’États/Transitions: Concepts avancés

Page 139: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 139/

Diagrammes d’États/Transitions: État composé

• Un état peut être décomposé en sous-états– Pour simplifier la compréhension du problème

– Factoriser des transitions

Page 140: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 140/

Diagrammes d’États/Transitions: État composé

• L’exemple du téléphone

Actif

En composition

décroche

Repos

Appelé raccroche

Dialogue SonnerieRéponse de l’appelé

Compose numéro (n) [n.isValid]

Appelant raccroche

Tonalité

Tonalité occupée occupé

Compose numéro (n) [nb<10 && n.isValid ()]

After (15 s) Invalide

Compose numéro (n) [n.isInvalid]

Compose numéro (n) [n.isInvalid]

En connexion

When(nb=10)

connecté

Page 141: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 141/

Diagrammes d’États/Transitions: État composé

• Notion de souche: masque les détails

Page 142: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 142/

Diagrammes d’États/Transitions: État composé & Concurrents

• Utilisation de sous-états concurrents pour ne pas à avoir à expliciter le produit cartésien d ’automates

– si 2 ou plus aspects de l ’état d ’un objet sont indépendants

– Activités parallèles

• Sous-états concurrents séparés par pointillés– « swim lanes »

Page 143: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 143/

Diagrammes d’États/Transitions: État composé & Concurrents

• Autre exemple

Page 144: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 144/

Diagrammes d’États/Transitions: état historique

• Par défaut, un état composite ne retient pas le sous-état dans lequel il était àsa dernière sortie

• Avec un indicateur d'historique, on peut revenir dans le sousAvec un indicateur d'historique, on peut revenir dans le sousAvec un indicateur d'historique, on peut revenir dans le sousAvec un indicateur d'historique, on peut revenir dans le sous----éééétat de la sortie tat de la sortie tat de la sortie tat de la sortie prprprprééééccccéééédentedentedentedente

• En ajoutant une "*" à l'indicateur d'historique, on applique l'indicateur aux

états imbriqués

Page 145: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 145/

Diagrammes d’États/Transitions: Transition Composée

• Le choix de la transition est fait avant d'atteindre le point debranchement

Page 146: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 146/

Diagramme d’Activités

Page 147: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 147/

Diagramme d’Activités

• Souvent utilisSouvent utilisSouvent utilisSouvent utiliséééés pour mods pour mods pour mods pour modééééliser les liser les liser les liser les WorkflowWorkflowWorkflowWorkflow ou Business ou Business ou Business ou Business ProcessProcessProcessProcess

• Pour modéliser les traitements effectués par une opération (corps)– Description d’un flot de contrôle procédural

• Attachés à– une classe,– une opération,– ou un use-case (workflow)

• L’un des diagrammes les moins utilisés

• Changement radical entre UML1.x et UML2.0

Page 148: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 148/

Diagramme d’Activités: Concepts de base

Page 149: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 149/

Diagramme d’Activités

• Attention dans UML 2.0 on ne parle plus d’activité comme unité à grain fin mais d’Action (une action est atomique)

• Une Activité est composée: – d’actions, – De nœuds de contrôle (les fork, merge, decision, join), – De nœuds d’objets (input et output pins, object nodes, ActivityParameterNode)– De flèches (Control Flow et Object Flow)

• Le principe de parcours du graph d’activités et de la gestion de ressources est basé sur la production et la consommation de Token (comme dans réseaux de Petri)

• Les transitions sont automatiques

Page 150: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 150/

Diagramme d’Activités: Des Activités et des Paramètres

• Comme pour les opérations, une activité pour avoir des paramètres en entrée et des paramètres en sortie

Page 151: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 151/

Diagramme d’Activités: Les Call Actions

• Une activité peut appeler une autre activité (CallBehaviorAction)

• Une activité peut appeler une opération (CallOperationAction)

Page 152: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 152/

Diagramme d’Activités: Les Signaux

• Ça peut être suite à l’épuisement d’une durée

• À l’envoi explicite d’un signal– Catché par une AcceptEventAction

Page 153: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 153/

Diagramme d’Activités: Les Swim Lanes

• Possibilité d’utiliser les swim lanes comme dans UML 1.x

Page 154: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 154/

Diagramme d’Activités: Pas plus loin

• Les diagrammes d’activités dans la nouvelle version du standard sont très complets et très riches

• Une spécification large et complexe qui ne sera pas abordée dans ce cours– Le standard reste le document le plus complet concernant les DA

• Sensé être utilisé massivement dans l’approche MDE pour modéliser le corps des méthodes

– Malheureusement trop complexe

– Trop d’ambigüités dans la spéc.

– Aucun outilleur n’arrive à fournir une implémentation complète de la spéc.

– Le code reste plus lisible qu’un énorme diagramme d’activité

Page 155: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 155/

Diagramme de Temps

Page 156: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 156/

Diagrammes de Temps

• Nouveauté dans UML 2.0

• Les diagrammes temps d’UML sont utilisés pour afficher le changement d’état ou de valeur d’un ou plusieurs éléments àtravers le temps

• Exemple de changement d’état à travers le temps/événement

Page 157: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 157/

Diagrammes de Temps

• Exemple de changement de valeur à travers le temps (x)

Page 158: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 158/

UML: Point de vue Déploiement

-Diagramme de Composants

-Diagramme de Déploiement

Page 159: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 159/

Diagramme de Composants

Page 160: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 160/

Diagramme de Composants

• « A component is a self contained unit that encapsulates the state and behavior of a number of classifiers » [UML 2.0, OMG]

• Débat controversé de ce qu’est un composant“Components are not a technology. Technology people seem to find this hard to understand. Components are about how customers want to relate to software. They want to be able to buy their software a piece at a time, and to be able to upgrade itjust like they can upgrade their stereo . They want new pieces to work seamlessly with their old pieces, and to be able to upgrade an their own schedule, not the manufacturer's schedule . They want to be able to mix and match pieces from various manufacturers. This is a very reasonable requirement. It is just hard to satisfy”. Ralph Johnson

• Le diagramme de composants sert à montrer le lien entre les différents composants d’une application

Page 161: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 161/

Diagramme de Composants: Notation

Page 162: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 162/

Diagramme de Composants: Exemple

Notation UML 2.0

Un Exemple de diagramme de Composants

Page 163: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 163/

Diagramme de Déploiement

Page 164: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 164/

Diagramme de Déploiement

• Montrent la configuration des éléments intervenants à l'exécution– Eléments physiques

– Eléments logiciels

• Utile pour réfléchir sur l’architecture physique (distributions, moyens, performances, etc.)

Page 165: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 165/

Diagramme de Déploiement : Exemples

Page 166: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 166/

Méthode de Développement UML: UML-P6

Page 167: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 167/

Processus & diagrammes

Page 168: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 168/

Processus & diagrammes

• Le processus adopté dans ce cours est celui présenté avant

• Ça ne représente qu’un processus parmi d’autres

• Ne couvre pas toutes les phases du développement– Réalisation: génération de code (prévu plus loin dans ce cours)– Validation: nous présenterons une approche avec des jeux de tests en

utilisant les diagrammes de séquences et Junit (prévu plus loin dans ce cours)

– Déploiement: (utilisation du diagramme de déploiement et du diagramme de composants)

– Maintenance et amélioration du design: (prévu plus loin dans ce cours) • Design Pattern• Gestion des dépendances

Page 169: Modélisation O-O avec UMLsliders.alpha.free.fr/EFREI/M1/EFREI%20M1/Cours%20Campus%20efr… · Mais quel langage utiliser pour modéliser? • Plusieurs langages existaient/existent

© Reda Bendraou LI386-S1 Génie Logiciel – UPMC Cours 2: Modélisation OO avec UML 169/

Lectures

• Software Engineering, – Ian Sommerville, Addison Wesley; 8 edition (15 Jun 2006), ISBN-10: 0321313798

• The Mythical Man-Month– Frederick P. Brooks JR., Addison-Wesley, 1995

• Cours de Software Engineering du Prof. Bertrand Meyer à cette @:– http://se.ethz.ch/teaching/ss2007/252-0204-00/lecture.html

• Cours d’Antoine Beugnard à cette @:– http://public.enst-bretagne.fr/~beugnard/

-----------------------• UML Distilled 3rd édition, a brief guide to the standard object modeling language

– Martin Fowler, Addison-Wesley Object Technology Series, 2003, ISBN-10: 0321193687 • UML2 pour les développeurs, cours avec exercices et corrigés

– Xavier Blanc, Isabelle Mounier et Cédric Besse, Edition Eyrolles, 2006, ISBN-2-212-12029-X• UML 2 par la pratique, études de cas et exercices corrigés,

– Pascal Roques, 6ème édition, Edition Eyrolles, 2008• Cours très intéressant du Prof. Jean-Marc Jézéquel à cette @:

– http://www.irisa.fr/prive/jezequel/enseignement/PolyUML/poly.pdf• La page de l’OMG dédiée à UML: http://www.uml.org/• Cours de Laurent Audibert sur http://laurent-audibert.developpez.com/Cours-UML/html/Cours-UML.html------------------------• Design patterns. Catalogue des modèles de conception réutilisables

– Richard Helm (Auteur), Ralph Johnson (Auteur), John Vlissides (Auteur), Eric Gamma (Auteur), Vuibert informatique (5 juillet 1999), ISBN-10: 2711786447