79
Wajdi BOUAJILA Institut Supérieur des Etudes Technologiques de Djerba Département technologies de l’Informatique

Cours UML

  • Upload
    saf-bes

  • View
    104

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Cours UML

Wajdi BOUAJILA

Institut Supérieur des Etudes Technologiques de DjerbaDépartement technologies de l’Informatique

Page 2: Cours UML

Plan Qu’est que UML?

Diagramme de cas d’utilisation

Diagramme de classes

Diagramme de séquences

Diagramme de communication

Diagramme d’état-transition

Diagramme d’activité

Diagramme de paquetage

Diagramme de déploiement

Diagramme de composant

Correction du projet Sivex

Proposition d’une correction de concours (2009)

Page 3: Cours UML

La modélisation : Pourquoi

Pourquoi réaliser des modèles?

A quoi cela peut-il vraiment servir à part me faire perdre du temps alors qu’il serait plus rapide de passer directement au codage?

Vous avez peut être aussi travaillé à partir de modèles réalisés par les autres et vous n’avez pas vraiment saisie l’intérêt?

Voire vous vous êtes dit « mes ces modèles sont faux, je ne fais pas comme cela dans mon code »?

Page 4: Cours UML

Un modèle est avant tout une représentation abstraite du monde réel.

=> Un modèle va donc nous servir à communiquer et échanger des points de vue afin d’avoir une compréhension commune et précise d’un même problème.

Un modèle ?

Page 5: Cours UML

Pour un problème complexe, il est conceptuellement impossible de l’appréhender d’un seul bloc=> dégrossir le problème

Ce mode de résonnement est à la base même des niveaux d’abstraction que l’on retrouve dans les méthodes :

Merise (niveau conceptuel, niveau logique, niveau physique)

RUP1 (niveau fonctionnel, niveau analyse, niveau conception).

=>enrichir un modèle de niveau N par l’analyse de niveau N+1.

C’est un outil pour documenter

Les niveaux d’abstraction

Page 6: Cours UML

Historique d'UML

Booch-93 Rumbaugh( OMT2)

Oct-950.8

Jacobson (use case - sdl)

Juillet-960.9

Janv-971.0

Nov-971.0

Sept-971.1 (OMG)

20001.4

20052.0

20062.1

Page 7: Cours UML
Page 8: Cours UML

UML 1.x

Page 9: Cours UML

UML 2.0

Page 10: Cours UML

UML 2.3

Page 11: Cours UML

C’est quoi UML?

Objectifs : spécifier, construire, visualiser et documenter les systèmes à base de logiciel

Pour communiquer, travailler à plusieurs

Pour Comprendre la «big picture»

Par approche orientée objets

Avec différents modèles pour différentes vues

UML : Langage et non simple notation graphique (ni méthode)

UML est Indépendant des méthodologies

UML Support des systèmes concurrents et répartis, à base de composants

UML: un méta-langage de modélisation pour unifier les modèles utilisés dans les méthodes

Page 12: Cours UML

Diagramme de Use case

La notation UML

Page 13: Cours UML

D. Cas d’utilisation : les acteurs

Un acteur est un rôle d’un ou plusieurs objetssitués à l’extérieur du système et qui interagissentavec lui pour remplir une fonctionnalité donnée de ce système.Un acteur caractérise le rôle joué par un objet àl’extérieur du système.

Uti lisateur

• Un acteur parle au système (Acteur principal)• Le système parle à un acteur (Acteur secondaire)• Un acteur est :

• Un humain (via une IHM)• Du soft• Du hard

<<actor>>

Autre Système

Page 14: Cours UML

Use Case :Use Case

Un Cas d’utilisation ( use case ) est une fonctionnalité remplie par le système et qui semanifeste par un ensemble de messages échangésentre le système et un ou plusieurs acteurs.

UtilisateurVerifierBonneMarche

CapteurTemperat

ure

Page 15: Cours UML

Exemple

Consulter solde

compte

Client

Technicien

Distributeur de billets

Retirer de l ’agent

Mettre en marche / arrêter

Ravitailler le coffre

visualise

débite

Cas d ’utilisation objectif du système motivé par un

besoin

Acteurpersonne ou système externe à l ’origine d ’une interaction avec le systèmes

Paquetage

regroupe des éléments de modélisation

Nature de l ’interaction

Le technicien éteint le distributeur avant de ravitailler le coffre

On ne peut retirer de l ’argent que dans la limite du stock

<<actor>>

SI Banque

Acteur secondaire

Page 16: Cours UML

Liens entre cas d ’utilisation

Trois types de liens entre cas d’utilisation : Extension (<<extends>>) : comportement optionnel du

système (variation d’un comportement « normal ») Inclusion (<<includes>>) : un cas intègre le

comportement d’un autre (raffinement ou factorisation) Utilisation (<< uses>>) : spécialisation avec héritage

(ajout ou remplacement de comportement)

Extends ou uses utilisent l’idée de factorisation, mais : Dans l’extension, un acteur réalise le cas de base et ses

extensions Dans l’utilisation, il n’y a pas en général d’acteur associé

au cas commun

Page 17: Cours UML

Stéréotypes

Page 18: Cours UML

Cas d ’utilisation et scénarios

Un scénario est une série d ’événements ordonnés

dans le temps, simulant une exécution particulière du

système

Pour chaque cas d ’utilisation, il existe un ou plusieurs scénarios

dont la description permet d ’expliciter le comportement du

système pour une situation donnée.

Appelant Appelé

téléphoner

communication directe

ligne occupée

sans réponse

communication par répondeur

ligne en dérangement

etc...

Page 19: Cours UML

Transition vers les objets

La réalisation d ’un cas d ’utilisation nécessite la

collaboration de plusieurs objets

•Chaque objet de la collaboration participe à la réalisation des scénarios.

• Chaque scénario peut être décrit par rapport aux interactions entre les objets de la collaboration à travers

• un diagramme de collaboration

• ou

• un diagramme de séquence

Page 20: Cours UML

exempleUne société de vente par correspondance vous demande de développer sonsystème informatique. Ce système doit pouvoir prendre en compte descommandes passées par la poste et des commandes passées par internet. Ildoit suivre les expéditions qui ne sont effectuées que si le paiement est OK.Les paiements se font par carte bancaire dans le cas d'internet et par chèquedans le cas de la poste. Les paiements sont validés par un système bancaireappartenant à la société et existant. Il faut récupérer ce système. Lenouveau système est chargé aussi de la gestion de stocks, lorsqu'un articleatteint un seuil minimal, alors il faut passer une nouvelle commande aufournisseur adéquat. A la réception de la commande, la mise à jour de labase est faite par un employé. Dans le cas d'un paiement accepté et de stockdisponible, l'expédition est faite par un robot existant au quel il suffit depasser les coordonnées du client, et la liste des produits achetés. En casd'indisponibilité, une lettre doit être envoyé au client.

Page 21: Cours UML

Ce qui nous demande généralement

Un tableau dont les noms des colonnes sont:

Scénarios pour chaque cas d’utilisation

Nom d’ acteur Description Rôle

Page 22: Cours UML

correction

Robot

ClientPoste

ClientInternet

Verifier StockFournisseur

Passer Commande Internet

include

Passer Commande Posteinclude

SystemBancaireVerifier Paiement

Include

Include

Expedier Commande

Extend

Page 23: Cours UML

Diagramme de séquences

La notation UML

Page 24: Cours UML

Diagramme de séquences

Un diagramme de classe permet de décrire les intéractions entre différentes entités et/ou acteurs : par exemple des objets dans un modèle d'un logiciel, des sous-systèmes dans un modèle d'un système complet.- Le temps est représenté comme s'écoulant du haut vers le bas le long des "lignes de vie" (lifeline) des entités.- Des flèches représentent les messages qui transitent d'une entité vers l'autre. Le nom des message apparaît sur chaque flèche. Si l'extrémité de la flèche est pleine, le message est synchrone. Si l'extrémité de la flèche est creuse, le message est asynchone.

Page 25: Cours UML

Événements et messages

Page 26: Cours UML

Message Asynchrone :

Page 27: Cours UML

Message Synchrone :

Page 28: Cours UML

Les fragments combinés

Un fragment combiné représente des articulations d'intéractions.

Il existe 10 opérateurs définis dans la notation UML2.0

permettent de décrire des diagrammes de séquence de manière compacte

Page 29: Cours UML

Opérateur "Alternative“ -- AltL'opérateur "alt" désigne un choix, une alternative. Il représente deux comportements possibles : c'est en quelque sorte l'équivalent du SI...ALORS...SINON

Page 30: Cours UML

Opérateur"Option“ -- Opt

L'opérateur "opt"désigne un fragment combiné optionnel comme son nom l'indique : c'est à dire qu'il représente un comportement qui peut se produire... ou pas. Un fragment optionnel est équivalent à un fragment "alt" qui ne posséderait pas d'opérande else (qui n'aurait qu'une seule branche)

Page 31: Cours UML

Opérateur "Break"

L'équivalent de ce diagramme de séquence sans l'opérateur break correspond aux deux diagrammes de séquence dans le diapositive suivant:

Page 32: Cours UML
Page 33: Cours UML

Opérateur "Parallel“ -- par

L'opérateur "par" est utilisé pour représenter des intéractionsayant lieu en parallèle

Page 34: Cours UML

Opérateur "Loop"

L'opérateur "Loop" (boucle) est noté "loop". Cet opérateur est utilisé pour décrire un ensemble d'intéraction qui s'exécutent en boucle. En général, une contrainte appelée garde indique le nombre de répétitions (minimum et maximum) ou bien une condition booléenne à respecter.

Page 35: Cours UML

Fragment combiné -- mixte

Page 36: Cours UML

Diagramme de communication

La notation UML

Page 37: Cours UML

Définition

Un diagramme de communication est un diagramme d'interaction qui présente les messages échangés en fonction de la structure.

un diagramme de communication rend compte de l'organisation spatiale des participants à l'interaction

Il est souvent utilisé pour illustrer un cas d'utilisation ou pour décrire une opération.

Le diagramme de communication aide à valider les associations du diagramme de classe en les utilisant comme support de transmission des messages.

Page 38: Cours UML

Éléments composant une collaboration:1. Objets: Instance d’une classe.

Rectangle avec étiquette de la forme nomObjet:nomClasse ou :nomClasseOn représente uniquement les objets pertinents i.e. interagissant dans le cas d’utilisation ou le scénario qu’on veut décrire.

2. Liens: Instances de certaines associations dans le diagramme de classes. On ne représente que les instances d’associations pertinentes pour la collaboration décrite.

3. Acteurs: On peut représenter les acteurs participant au cas d’utilisation ou scénario décrit. L’acteur initiant un cas d’utilisation est appelé initiateur.

Page 39: Cours UML

Exemple sans lien

mb:MembreBiblio

unExemplaire:Exemplaire

leLivre :Livre

unMembre: Emprunteur

Page 40: Cours UML

Ajout des messages sur les liens...

On indique les messages à côté des liens appropriés sur le diagramme de collaboration.

La flèche est issue de l’émetteur et pointe vers le destinataire.

L’association correspondante dans le diagramme de classe doit être navigable dans la même direction que la flèche.

Le destinataire doit pouvoir comprendre le message (opération appropriée?)

n°, cond, …: message

Page 41: Cours UML

Représentation des interactions Numéro du message: Lorsqu’un objet O reçoit un

message (synchrone), le numéro de ce message est utilisé comme préfixe pour tous les messages envoyés par O… jusqu’à ce que O réponde à ce message.

En général, les messages de retour n’apparaissent pas explicitement dans les diagrammes de collaboration.

Types de messages: simple, synchrone, asynchrone…

Aussi: garde, itération, etc.

Page 42: Cours UML

Attention (cohérence des divers diagrammes) :

methodeR doit être une méthode de la Classe A dans le diagramme de Classes, MéthodeS doit être une méthode de la Classe B dans le diagramme de Classes MéthodeT doit être une méthode de la Classe D dans le diagramme de Classes

Page 43: Cours UML

Représentation des messages Un message est spécifié sous la forme suivante :

cond est une condition sous forme d’expression booléenne entre crochets. séq est le numéro de séquence du message. On numérote les messages par

envoi et sous-envoi désignés par des chiffres séparés par des points : ainsi l’envoi du message 1.4.3 est antérieur à celui du message 1.4.4 mais postérieur à celui du message 1.3.5. La simultanéité d’un envoi est désignée

par une lettre : les messages 1.6.a et 1.6.b sont envoyés en même temps. iter spécifie (en langage naturel, entre crochets) l’envoi séquentiel (ou en

parallèle, avec ||). On peut omettre cette spécification et ne garder que le caractère "*" (ou "*||") pour désigner un message récurrent envoyé un certain nombre de fois.

r est la valeur de retour du message, qui sera par exemple transmise en paramètre à un autre message.

msg est le nom du message. par désigne les paramètres (optionnels) du message.

Page 44: Cours UML

Représentation des messages

A

B

1: message()

Message

A

B

1: [cond] message()

A

B

1: res:= message()

A

B

1: *[i:=1..n] message()

BB

A

B C

1: m1()

1.1: m2()

1.2: m3()

2: m4() 1.a: m1()

A

B C

1.b: m2()

Message conditionnel Message avec retour

Itération Invocations synchrones Concurrence

Page 45: Cours UML

Exemple avec interactions

leMembre:MembreBiblio

cetExemplaire:Exemplaire

leLivre :Livre

unMembre: Emprunteur

emprunter(cetExemplaire)

1: okPourEmprunter()

2: emprunter

2.1: est_emprunté

Page 46: Cours UML
Page 47: Cours UML

Création et destruction dynamiques d’objets

Ajout d’une contrainte ({new} ou {destroyed}) après l’étiquette dans le rectangle représentant l’objet créé ou détruit.

Si au cours des interactions représentées par le diagramme, un objet est créé puis détruit, on utilise la contrainte {transient}.

Les messages de création et de destruction d’objets: new, destroy…

Page 48: Cours UML

exemple

:ProfAgrégé {new}

:ProfAdjoint {destroyed}

: Doyen

1: k : = obtenirNom()

2: new ProfAgrégé(n)

3 : destroy()

Page 49: Cours UML

Message avec garde

Page 50: Cours UML

concurrence

Le message 1 est un message simple itératif.

Les messages 2.a et 2.b sont des messages synchrones concurrents.

Les messages 3.a et 3.b sont des messages asynchrones concurrents

t:TourDeContrôle

b:Boeing747

a1:Avionétat = à_terre

position = piste

a2:Avionétat = à_terre

position = piste

:Pompiers1: * alerte()

3.b: atterrir(piste)

3.a: envoyer(piste)

2.b: déplacer(piste,parking)

2.a: déplacer(piste,parking)

Page 51: Cours UML

Diagramme d’état-transition

La notation UML

Page 52: Cours UML

Introduction

Permet de décrire le cycle de vie d’un Objet :

Les différents états qu’il peut atteindre

Les règles régissant le passage d’un état à un autre

Au niveau métier permet de décrire les règles de

gestion assurant comment sont utilisés les objets du

monde (ex. facture).

Au niveau logique :

Transposition au niveau des objets concrets (ie futur code)

Spécification de règles de comportement des objets « concrets » (ex. objet graphique).

Page 53: Cours UML

État :

Objet: caractérisé en principe par l’ensemble des valeurs prises par les attributs de l’objet à un instant t. Mais selon cas peut se réduire à l’étude de certains attributs.

Métier: caractérise l’état d’une entité au sens large : état stable, en cours d’exécution, attente d’un évènement…

Transition :

traduit le passage possible d’un état à un autre avec éventuellement des conditions sur l’événement à l’origine de l’activation de la transition (condition de garde).

Page 54: Cours UML

Type d’état

Type d’État :

État initial : traduit l’initialisation du diagramme d’état (1 seul par diagramme).

État final : caractérise la fin du diagramme (0..n).

État simple : caractérise l’état d’un objet

État composite: permet de gérer l’abstraction en définissant un « super » état dans lequel une séquence d’état et de transition peuvent décrire plus finement ce qui se passe dans cet état (ex. l’état Inscription peut être décomposé en état saisi, état frais inscription calculés, frais payés, inscrit).

Page 55: Cours UML

Type d’évènement

Type d’évènement pouvant déclencher une transition :

Réception d’un signal : envoi d’un message asynchrone par un autre objet ou par un acteur (point de vue métier)

Appel de méthode (call event) sur l’objet modélisé (synchrone ou asynchrone). (point de vue objet)

Écoulement d’une durée (time event) relative (10 sec) ou absolue (date précise). Utilisation du mot clé after

Changement de condition (change event) : décrite par une expression booléenne sur des variables (état d’une variable, d’un objet, d’une valeur globale) mot clé when

Page 56: Cours UML

Exemple

Page 57: Cours UML

Etat et transition interne

Diagramme actif: possibilité de spécifier des actions…

Action : opération associée à un état non interruptible

Activité : idem mais interruptible.

Ces opérations peuvent être exécutées :

Dés l’entrée dans l’état

A la sortie de l’état

Pendant l’activation de l’état interruptible)

Les transitions peuvent également réaliser des actions

Page 58: Cours UML

Point de décision

Il est possible de représenter des alternatives pour franchir une transition, on utilise soit:

Point de jonction ( représenter par )

Elle permet de partager des segments de transition.

Tous les chemin sont potentiellement valides.

Point de choix ( représenter par )

Saisie formulaire

Afficher problèmes

Demander confirmation

Go/valideEntrée() Entrée valide

[else]

Page 59: Cours UML

Etat composite

Un état composite est graphiquement composé en deux ou plusieurs sous-état.

Exemple cabinet téléphonique

Début

Entry/tonalité « prêt »Exit/cesse tonalité

Numéroter

Entry/numéro.apprend(n)

Chiffrer (n)

Chiffrer (n) [Num.valid]

Composer numéro

Composer numéro

Page 60: Cours UML

Gestion de la concurrence

Les diagramme d’état permettent de décrire efficacement les mécanismes concurrents.

fork join

Page 61: Cours UML

état historique

Exemple de diagramme possédant un état historique profond permettant de reprendre le programme de lavage ou de séchage d'une voiture à l'endroit où il était arrivé avant d'être interrompu.

Page 62: Cours UML

Diagramme de paquetage

La notation UML

Page 63: Cours UML

Définition

Un diagramme de paquetage est un diagramme de structure qui montre les paquetages et, éventuellement, les relations entre eux.

Un paquetage étant un conteneur logique permettant de regrouper et d'organiser les éléments dans le

modèle UML (classes, use cases, etc.)

le Diagramme de paquetage sert à représenter les dépendances entre paquetages, c’est-à-dire les dépendances entre ensembles de définitions.

Page 64: Cours UML

Utilité

Très utilisé, indispensable pour les grands modèle

Indispensable pour définir l’architecture d’un modèle, pour gérer un modèle et son développement par une équipe

Utile dès l’analyse et fondamentale en conception

Page 65: Cours UML

Dépendance

un paquetage est dépendant d’un autre s’il l’utilise…

SimpleChat

ClientCommon

OCSF

ClientServer

<<import>>

Page 66: Cours UML

Diagramme de composant

La notation UML

Page 67: Cours UML

Définition

Un composant doit fournir un service bien précis

Les fonctionnalités qu’il encapsule doivent être cohérentes entre elles et génériques

Un composant est une unité autonome représentée par un classeur structuré, stéréotypé «component», comportant une ou plusieurs interfaces requises ou offertes.

Son comportement interne, généralement réalisé par un ensemble de classes, est totalement masqué : seules ses interfaces sont visibles.

Pour montrer les instances des composants, un diagramme de déploiement doit être utilisé

Composant

Page 68: Cours UML

Composants et interfaces

Composant

Commande

EntréeCmdes

PaiementComptes

Personne

composantinterface requise interfaces offertes

Commande

<<provided interfaces>>

EntréeCmdes

PaiementComptes

<<required interface>>

Person

Page 69: Cours UML

Composants et relations

Une flèche de dépendance permet de mettre en relation des composant via les interfaces requises et fournies

Système de

commande

AccèsProduit

RechercheClient

Système

d’inventaire

Repositoire

ClientsRechercheClient

AccèsProduit

(3) dépendance

(1) composant

(2) interface

Page 70: Cours UML

Composants et relations

Planificateur

réservations

GUI

Gestionnaire

d’horairesréservations

mise à jour

mise à jour

Réunions_BD

accèsBD

accèsBD

Page 71: Cours UML

Composants – Vue de la structure interne

Pour montrer la structure interne d’un composant

:CommandePersonne

:Produit

:Client

ItemCommandable

Magasin

EntréeCmdes

<<delegate>>

Compte

Compte

EntréeCmdes

<<delegate>>

port

Assembly

connector

Entête

LigneCmde*

Page 72: Cours UML

Diagramme de composants MVC

Page 73: Cours UML

Diagramme de déploiement

La notation UML

Page 74: Cours UML

Définition

Un diagramme de déploiement décrit la disposition physique des ressources matérielles qui composent le système

Il montre la répartition des composants sur chaque matériels

Chaque ressource étant matérialisée par un nœud

Page 75: Cours UML

Chaque ressource est matérialisée par un nœud représenté par un cube comportant un nom

Un nœud est un classeur et peut posséder des attributs (quantité de mémoire, vitesse du processeur, …).

Page 76: Cours UML

Exemple

GPS satellite

M1:MachineX

M2:MachineX

C1:Client

C2:Client

S:Serveur

Communication

sans fil

TCP/IP

noeuds

lien

Page 77: Cours UML

Exemple 2

Machine de Joe:PC

:Planificateur

GUI

mise à jour

Admin:MachineHote

:Gestionnaire

Horaires

:Réunions_BD

réservations

Accès_bd

internet

Page 78: Cours UML

Exemple 3

Page 79: Cours UML