0% ont trouvé ce document utile (0 vote)
20 vues31 pages

Uml TSMM

Le document présente un cours sur la modélisation objet, en mettant l'accent sur UML et les méthodes d'analyse et de conception, notamment Merise. Il aborde le cycle de vie d'un logiciel, les différentes étapes de développement, ainsi que les concepts clés de la programmation orientée objet tels que l'encapsulation, l'héritage et le polymorphisme. Enfin, il décrit la modélisation des systèmes d'information et les niveaux de conception associés à la méthode Merise.

Transféré par

BaroiguiAchref
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
20 vues31 pages

Uml TSMM

Le document présente un cours sur la modélisation objet, en mettant l'accent sur UML et les méthodes d'analyse et de conception, notamment Merise. Il aborde le cycle de vie d'un logiciel, les différentes étapes de développement, ainsi que les concepts clés de la programmation orientée objet tels que l'encapsulation, l'héritage et le polymorphisme. Enfin, il décrit la modélisation des systèmes d'information et les niveaux de conception associés à la méthode Merise.

Transféré par

BaroiguiAchref
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

CSFTélécom El Khadra​ Cours UML​ TSMM

Sommaire
Chapitre 1 : introduction à la modélisation objet

Chapitre 2 : Merise

1-​ Flux de données

2-​ MCD Modèle conceptuel de données

3-​ MLD Modèle logique de données

4-​ MCT Modèle conceptuel de traitement

Chapitre 3 : UML

1-​ Introduction

2-​ Diagramme de cas d’utilisation

3-​ Diagramme de séquence

4-​ Diagramme de classe

Chapitre 1. Introduction à la modélisation objet

L’informatique s’est glissée imperceptiblement dans notre vie quotidienne. Des machines à laver,
distributeurs de billets, téléphones … quasiment toutes nos activités quotidiennes utilisent du logiciels,
et plus le temps passe, plus ce logiciel devient complexe et couteux. Pour surmonter ces difficultés, les
informaticiens vont devoir apprendre à faire à expliquer et à comprendre c’est pour ces raisons qu’ils
ont et auront toujours plus besoins de méthodes.
1-Pourquoi modeliser ?

Emna Dimassi Frikha​ 1


CSFTélécom El Khadra​ Cours UML​ TSMM

Modéliser, c’est décrire de manière visuelle et graphique les besoins et, les solutions fonctionnelles et
techniques de votre projet logiciel pour obtenir des résultats fiables.

Les cuisiniers parlent de recettes de cuisine, les pilotes déroulent des check-lists avant le décollage,
les architectes dessinent des plans et les musiciens suivent des règles de composition.
Si vous avez à constituer un meuble en kit ou à brancher un nouvel équipement électronique? c’est plus
facile à partir de schéma plutôt qu’une page de texte.

Cet exemple nous démontre que l’utilisation de schémas et d’illustrations rend quelque chose de complexe
plus compréhensible.

Tous les domaines de la connaissance utilisent des méthodes plus ou moins sophistiquées et plus ou
moins formalisées.
UML nous aide à faire cette description de façon graphique et devient alors un excellent moyen pour
« visualiser » le(s) futur(s) logiciel(s).

Un logiciel qui a été réalisé sans analyse et sans conception (étapes où l’on modélise le futur logiciel)
risque lui aussi de ne pas répondre aux besoins, de comporter des anomalies et d’être très difficile à
maintenir. Tout comme la construction d’une maison nécessite des plans à différents niveaux (vision
extérieure, plan des différents étages, plans techniques…), la réalisation d’un logiciel ou d’un ensemble de
logiciels a besoin d’un certain nombre de diagrammes.

2-Le génie logiciel

Le génie logiciel est un domaine de recherche qui a pour objectif de répondre à un problème qui
s'énonçait en deux constatations : d'une part le logiciel n'était pas fiable, d'autre part, il était
incroyablement difficile de réaliser dans des délais prévus des logiciels satisfaisant leur cahier des
charges.

L'objectif du génie logiciel est d'optimiser le coût de développement du logiciel. L'importance d'une
approche méthodologique s'est imposée à la suite de la crise de l'industrie du logiciel à la fin des
années 1970.

La maintenance est devenue une facette très importante du cycle de vie d'un logiciel.

3- Cycle de vie d’un logiciel

Le cycle de vie d'un logiciel (en anglais software lifecycle), désigne toutes les étapes du
développement d'un logiciel, de sa conception à sa disparition.

L'objectif d'un tel découpage est de permettre de définir des jalons (tâches) intermédiaires
permettant la validation du développement logiciel, c'est-à-dire la conformité du logiciel avec les
besoins exprimés, et la vérification du processus de développement.

Emna Dimassi Frikha​ 2


CSFTélécom El Khadra​ Cours UML​ TSMM

L'origine de ce découpage provient du constat que les erreurs ont un coût d'autant plus élevé qu'elles
sont détectées tardivement dans le processus de réalisation. Le cycle de vie permet de détecter les
erreurs au plus tôt et ainsi de maîtriser la qualité du logiciel, les délais de sa réalisation et les coûts
associés.

Le cycle de vie du logiciel comprend généralement au minimum les étapes suivantes :

Analyse des besoins et faisabilité

●​ c'est-à-dire l'expression, le recueil et la formalisation des besoins du demandeur (le client) et


de l'ensemble des contraintes, puis l'estimation de la faisabilité de ces besoins ;
Spécifications ou conception générale

●​ il s'agit de l'élaboration des spécifications de l'architecture générale du logiciel ;


Conception détaillée

●​ cette étape consiste à définir précisément chaque sous-ensemble du logiciel ;


Codage (Implémentation ou programmation)

●​ c'est la traduction dans un langage de programmation des fonctionnalités définies lors de


phases de conception ;
Tests unitaires

●​ ils permettent de vérifier individuellement que chaque sous-ensemble du logiciel est


implémenté conformément aux spécifications ;
Intégration

●​ l'objectif est de s'assurer de l'interfaçage des différents éléments (modules) du logiciel. Elle
fait l'objet de tests d'intégration consignés dans un document ;
Qualification (ou recette)

●​ c'est-à-dire la vérification de la conformité du logiciel aux spécifications initiales ;


Documentation

●​ elle vise à produire les informations nécessaires pour l'utilisation du logiciel et pour des
développements ultérieurs ;
Mise en production

●​ c'est le déploiement sur site du logiciel ;


Maintenance

●​ elle comprend toutes les actions correctives (maintenance corrective) et évolutives


(maintenance évolutive) sur le logiciel.

Emna Dimassi Frikha​ 3


CSFTélécom El Khadra​ Cours UML​ TSMM

Modèle du cycle de vie en cascade.

chaque phase se termine à une date précise par la production de certains documents ou logiciels.

4-Méthodes d’analyse et de conception

Les méthodes d'analyse et de conception fournissent une méthodologie et des notations standards
qui aident à concevoir des logiciels de qualité. Il existe différentes manières pour classer ces
méthodes, dont :

La distinction entre fonctionnelle (dirigée par le traitement) et orientée objet :

Dans la stratégie fonctionnelle (également qualifiée de structurée) un système est vu comme un


ensemble hiérarchique d'unités en interaction, ayant chacune une fonction clairement définie. Les
stratégies orientées objet considèrent qu'un système est un ensemble d'objets interagissants. Chaque
objet dispose d'un ensemble d'attributs décrivant son état et l'état du système est décrit (de façon
décentralisée) par l'état de l'ensemble.
De la programmation structurée à l’orienté objet :

4.1- Méthode fonctionnelle ou structurée :

Représentation graphique d'une approche fonctionnelle.

Emna Dimassi Frikha​ 4


CSFTélécom El Khadra​ Cours UML​ TSMM

Les méthodes fonctionnelles (également qualifiées de méthodes structurées) trouvent leur origine
dans les langages procéduraux. Elles mettent en évidence les fonctions à assurer et proposent une
approche hiérarchique descendante et modulaire.

L'approche fonctionnelle dissocie le problème de la représentation des données, du problème du


traitement de ces données. Sur la figure 2, les données du problème sont représentées sur la gauche.

4.2- L’approche orientée objet

L'approche considère le logiciel comme une collection d'objets dissociés, identifiés et possédant des
caractéristiques. Une caractéristique est soit un attribut (i.e. une donnée caractérisant l'état de
l'objet), soit une entité comportementale de l'objet (i.e. une fonction). La fonctionnalité du logiciel
émerge alors de l'interaction entre les différents objets qui le constituent. L'une des particularités de
cette approche est qu'elle rapproche les données et leurs traitements associés au sein d'un unique
objet.

Comme nous venons de le dire, un objet est caractérisé par plusieurs notions :

L'identité

●​ l'objet possède une identité, qui permet de le distinguer des autres objets, indépendamment
de son état. On construit généralement cette identité grâce à un identifiant découlant
naturellement du problème (par exemple un produit pourra être repéré par un code, une
voiture par un numéro de série, etc.) ;
Les attributs

●​ il s'agit des données caractérisant l'objet. Ce sont des variables stockant des informations sur
l'état de l'objet ;
Les méthodes

●​ les méthodes d'un objet caractérisent son comportement, c'est-à-dire l'ensemble des actions
(appelées opérations) que l'objet est à même de réaliser. Ces opérations permettent de faire
réagir l'objet aux sollicitations extérieures (ou d'agir sur les autres objets). De plus, les
opérations sont étroitement liées aux attributs, car leurs actions peuvent dépendre des
valeurs des attributs, ou bien les modifier.
Concepts importants de l’approche objet

Notion de classe

Emna Dimassi Frikha​ 5


CSFTélécom El Khadra​ Cours UML​ TSMM

Une classe est un type de données abstrait qui précise des caractéristiques (attributs et méthodes)
communes à toute une famille d'objets et qui permet de créer (instancier) des objets possédant ces
caractéristiques. Les autres concepts importants qu'il nous faut maintenant introduire sont
l'encapsulation, l'héritage et l'agrégation.

Une classe est composée:

●​ d'attributs: il s'agit des données, dont les valeurs représentent l'état de l'objet
●​ Les méthodes : il s'agit des opérations applicables aux objets

Si on définit la classe voiture, les objets Peugeot 406, Volkswagen Golf seront des instanciations de
cette classe.
L’encapsulation

L'encapsulation est un mécanisme consistant à rassembler les données et les méthodes au sein d'une
structure en cachant l'implémentation de l'objet, c'est-à-dire en empêchant l'accès aux données par un
autre moyen que les services proposés. L'encapsulation permet donc de garantir l'intégrité des données
contenues dans l'objet.
L'utilisateur d'une classe n'a pas forcément à savoir de quelle façon sont structurées les données dans
l'objet, cela signifie qu'un utilisateur n'a pas à connaître l'implémentation. Ainsi, en interdisant
l'utilisateur de modifier directement les attributs, et en l'obligeant à utiliser les fonctions définies pour
les modifier (appelées interfaces), on est capable de s'assurer de l'intégrité des données ​
L'encapsulation permet de définir des niveaux de visibilité des éléments de la classe. Ces niveaux de
visibilité définissent les droits d'accès aux données selon que l'on y accède par une méthode de la
classe elle-même, d'une classe héritière, ou bien d'une classe quelconque.
Il existe trois niveaux de visibilité:
●​ publique: les fonctions de toutes les classes peuvent accéder aux données ou aux méthodes d'une
classe définie avec le niveau de visibilité public. Il s'agit du plus bas niveau de protection des
données
●​ protégée: l'accès aux données est réservé aux fonctions des classes héritières, c'est-à-dire par les
fonctions membres de la classe ainsi que des classes dérivées
●​ privée: l'accès aux données est limité aux méthodes de la classe elle-même. Il s'agit du niveau de
protection des données le plus élevé.
La notation UML permet de représenter le niveau de visibilité des attributs de façon graphique en
faisant précéder le nom de chaque attribut par un caractère représentant la visibilité:

●​ + défini un attribut public


●​ # défini un attribut protégé
●​ - défini un attribut privé

Emna Dimassi Frikha​ 6


CSFTélécom El Khadra​ Cours UML​ TSMM

Relation entre les classes


L’association
Elle exprime une connexion sémantique bidirectionnelle entre classes. Une association est une
abstraction des liens qui existent entre les objets
Exmple :

Héritage, spécialisation, généralisation et polymorphisme

L'héritage est un mécanisme de transmission des caractéristiques d'une classe (ses attributs et
méthodes) vers une sous-classe. Une classe peut être spécialisée en d'autres classes, afin d'y ajouter
des caractéristiques spécifiques ou d'en adapter certaines. Plusieurs classes peuvent être
généralisées en une classe qui les factorise, afin de regrouper les caractéristiques communes d'un
ensemble de classes.

Ainsi, la spécialisation et la généralisation permettent de construire des hiérarchies de classes.


L'héritage peut ê tre simple ou multiple. L'héritage évite la duplication et encourage la réutilisation.

Exemple d'une hiérarchie de classes :

Emna Dimassi Frikha​ 7


CSFTélécom El Khadra​ Cours UML​ TSMM

Composition et agrégation

La composition peut être vue comme une relation “fait partie de” (“part of”), c’est à dire que si un
objet B fait partie d’un objet A alors B ne peut pas exister sans A. Ainsi si A disparaît alors B
également.

L’agrégation quant à elle est vue comme une relation de type “a un” (“has a”), c’est à dire que si un
objet A a un objet B alors B peut vivre sans A.

L'agrégation permet d'assembler des objets de base, afin de construire des objets plus complexes.

Agrégation, exemple :​

Le polymorphisme représente la faculté d'une méthode à pouvoir s'appliquer à des objets de classes
différentes. Le terme polymorphisme indique qu'une entité peut apparaître suivant plusieurs formes.
Dans le cas de notre hiérarchie de documents nous remarquons qu'il existe une méthode qui porte le
même nom.

Emna Dimassi Frikha​ 8


CSFTélécom El Khadra​ Cours UML​ TSMM

Il s'agit de la méthode description(). Elle apparaît sur toutes les classes faisant partie de la hiérarchie.

Chapitre 2 Merise

Le système d’information SI

Emna Dimassi Frikha​ 9


CSFTélécom El Khadra​ Cours UML​ TSMM

Le système d'information ou SI, peut être défini comme étant l'ensemble des moyens humains,
matériels et immatériels mis en œuvre afin de gérer l'information au sein d'une unité, une entreprise
par exemple.

Il ne faut toutefois pas confondre un système d'information avec un système informatique. En effet,
les systèmes d'information ne sont pas toujours totalement informatisés et existaient déjà avant
l'arrivée des nouvelles technologies de l'information et des communications dont l'informatique fait
partie intégrante.

Le SI possède 4 fonctions essentielles :

●​ La saisie ou collecte de l'information


●​ La mémorisation de l'information à l'aide de fichier ou de base de données
●​ Le traitement de l'information afin de mieux l'exploiter (consultation, organisation, mise à
jour, calculs pour obtenir de nouvelles données, ...)
●​ La diffusion de l'information

Autrefois, l'information était stockée sur papier à l'aide de formulaires, de dossiers, … et il existait
des procédures manuelles pour la traiter. Aujourd'hui, les systèmes informatisées, comme les
systèmes de gestion de bases de données relationnelles (SGBDR), sont mis au service du système
d'information

MERISE

MERISE est donc une méthode d'analyse et de conception des SI basée sur le principe de la
séparation des données et des traitements. Elle possède un certain nombre
de modèles (ou schémas) qui sont répartis sur 3 niveaux :

●​ Le niveau conceptuel,
●​ Le niveau logique ou organisationnel,
●​ Le niveau physique.
1-Modélisation d’une base de données niveau conceptuel

Il s'agit de l'élaboration du modèle conceptuel des données (MCD) qui est une représentation
graphique et structurée des informations mémorisées par un SI. Le MCD est basé sur deux notions
principales : les entités et les associations, d'où sa seconde appellation : le schéma
Entité/Association.

L'élaboration du MCD passe par les étapes suivantes :

●​ La mise en place de règles de gestion (si celles-ci ne vous sont pas données),
●​ L'élaboration du dictionnaire des données,
●​ La recherche des dépendances fonctionnelles entre ces données,
●​ L'élaboration du MCD (création des entités puis des associations puis ajout des cardinalités).

il vous faut recueillir les besoins des futurs utilisateurs de votre application. Et à partir de ces besoins,
vous devez être en mesure d'établir les règles de gestion des données à conserver.

Prenons l'exemple d'un développeur qui doit informatiser le SI d'une bibliothèque. On lui fixe les
règles de gestion suivantes :

Emna Dimassi Frikha​ 10


CSFTélécom El Khadra​ Cours UML​ TSMM

●​ Pour chaque livre, on doit connaître le titre, l'année de parution, un résumé et le type
(roman, poésie, science fiction, ...).
●​ Un livre peut être rédigé par aucun (dans le cas d'une œuvre anonyme), un ou plusieurs
auteurs dont on connaît le nom, le prénom, la date de naissance et le pays d'origine.
●​ Chaque exemplaire d'un livre est identifié par une référence composée de lettres et de
chiffres et ne peut être paru que dans une et une seule édition.
●​ Un inscrit est identifié par un numéro et on doit mémoriser son nom, prénom, adresse,
téléphone et adresse e-mail.
●​ Un inscrit peut faire zéro, un ou plusieurs emprunts qui concernent chacun un et un seul
exemplaire. Pour chaque emprunt, on connaît la date et le délai accordé (en nombre de
jours).
Ce qui arrive le plus souvent : les futurs utilisateurs de votre projet n'ont pas été en mesure de vous
fournir ces règles avec suffisamment de précision ; c'est pourquoi vous devrez les interroger afin
d'établir vous même ces règles.

a-​ Le dictionnaire de données

Le dictionnaire des données est un document qui regroupe toutes les données que vous aurez à
conserver dans votre base (et qui figureront donc dans le MCD). Pour chaque donnée, il indique :

●​ Le code mnémonique : il s'agit d'un libellé désignant une donnée (par exemple «titre_l» pour
le titre d'un livre)
●​ La désignation : il s'agit d'une mention décrivant ce à quoi la donnée correspond (par
exemple «titre du livre»)
●​ Le type de donnée :
o​ A ou Alphabétique : lorsque la donnée est uniquement composée de caractères
alphabétiques (de 'A' à 'Z' et de 'a' à 'z')
o​ N ou Numérique : lorsque la donnée est composée uniquement de nombres (entiers
ou réels)
o​ AN ou Alphanumérique : lorsque la donnée peut être composée à la fois de
caractères alphabétiques et numériques
o​ Date : lorsque la donnée est une date (au format AAAA-MM-JJ)
o​ Booléen : Vrai ou Faux
●​ La taille : elle s'exprime en nombre de caractères ou de chiffres. Dans le cas d'une date au
format AAAA-JJ-MM, on compte également le nombre de caractères, soit 10 caractères. Pour
ce qui est du type booléen, nul besoin de préciser la taille (ceci dépend de l'implémentation
du SGBDR).
●​ Et parfois des remarques ou observations complémentaires (par exemple si une donnée est
strictement supérieure à 0, etc).
b-​ Entité d’un MCD

Chaque entité est unique et est décrite par un ensemble de propriétés encore appelées attributs ou
caractéristiques. Une des propriétés de l'entité est l'identifiant. Cette propriété doit posséder des
occurrences uniques et doit être source des dépendances fonctionnelles avec toutes les autres
propriétés de l'entité. Bien souvent, on utilise une donnée de type entier qui s'incrémente pour
chaque occurrence, ou encore un code unique spécifique du contexte.

Le formalisme d'une entité est le suivant :

Emna Dimassi Frikha​ 11


CSFTélécom El Khadra​ Cours UML​ TSMM

Ainsi, si on reprend notre dictionnaire de données précédent, on schématise par exemple une entité
«Auteur» comme ceci :

À partir de cette entité, on peut retrouver la règle de gestion suivante : un auteur est identifié par un
numéro unique (id_a) et est caractérisé par un nom, un prénom et une date de naissance

exemple de table d'occurrences de l'entité Auteur :

id_a nom_a prenom_a date_naissance_a

1 Hugo Victor 1802-02-26

2 Rimbaud Arthur 1854-10-20

3 de Maupassant Guy 1850-08-05

Cette table est composée de trois occurrences de l'entité Auteur.

c-​ Les associations

Une association définit un lien sémantique entre une ou plusieurs entités. En effet, la définition de
liens entre entités permet de traduire une partie des règles de gestion qui n'ont pas été satisfaites par
la simple définition des entités.

Le formalisme d'une association est le suivant :

Généralement le nom de l'association est un verbe définissant le lien entre les entités qui sont reliées
par cette dernière. Par exemple :

Emna Dimassi Frikha​ 12


CSFTélécom El Khadra​ Cours UML​ TSMM

Ici l'association «être né» traduit les deux règles de gestion suivantes :

●​ Un auteur est né dans un et un seul pays,


●​ Dans un pays, sont nés aucun, un ou plusieurs auteurs.

Vous remarquerez, que cette association est caractérisée par ces annotations 1,1 et 0,N qui nous ont
permis de définir les règles de gestions précédentes. Ces annotations sont appelées les cardinalités.

Une cardinalité est définie comme ceci :

minimum, maximum

Les cardinalités les plus répandues sont les suivantes : 0,N ; 1,N ; 0,1 ; 1,1

L'identifiant d'une association ayant des cardinalités 0,N/1,N de part et d'autre, est obtenu par la
concaténation des entités qui participent à l'association. Imaginons l'association suivante :

Ici un auteur rédige au moins un ou plusieurs livres et pour chaque livre, on connaît le nombre de
chapitres rédigés par l'auteur (on connaît aussi le nombre total de chapitres pour chaque livre).

L'association «rédiger» peut donc être identifiée par la concaténation des propriétés id_a et id_l.
Ainsi, le couple id_a, id_l doit être unique pour chaque occurrence de l'association.

On dit que nb_chapitres (nombre de chapitres rédigés par un auteur, pour un livre) est une donnée
portée par l'association «rédiger». Cette association est donc une association porteuse de données.

Elaboration du MCD

Avec toutes ces connaissances, il nous est donc possible d'élaborer le MCD complet à partir des
données présentes dans le dictionnaire des données :

Emna Dimassi Frikha​ 13


CSFTélécom El Khadra​ Cours UML​ TSMM

2- Passage MCD-MLD

Le modèle logique de données (MLD) est composé uniquement de ce que l'on appelle des relations.
Ces relations sont à la fois issues des entités du MCD mais aussi d'associations, dans certains cas. Ces
relations nous permettront par la suite de créer nos tables au niveau physique.

Une relation possède un nom qui correspond en général à celui de l'entité ou de l'association qui lui
correspond. Elle possède aussi une clef primaire qui permet d'identifier sans ambiguïté chaque
occurrence de cette relation.

Il existe un autre type de clef appelé clef étrangère. La clef étrangère est un attribut d'une relation qui
fait référence à la clef primaire d'une autre relation

Conversions d’association 0/1,N des deux cotés

Emna Dimassi Frikha​ 14


CSFTélécom El Khadra​ Cours UML​ TSMM

Une association ayant des cardinalités 0,N ou 1,N de part et d'autre devient une relation dont la clef est
constituée des identifiants des entités reliées par cette association. Ces identifiants seront donc
également des clefs étrangères respectives.

Voici un exemple de relation associative issu de l'association «rédiger» de notre MCD :

Rediger (id_a#, id_l#)

Dans le cas d'associations porteuses de données, les données portées deviennent des attributs de la
relation correspondante. Si l'on reprend cet exemple :

L'association «rédiger» devrait maintenant être traduite comme ceci :

Rediger (id_a#, id_l#, nb_chapitres)

Conversion d’association avec d’un coté 0/1,N et 0/1,1

La règle de conversion la plus répandue aujourd'hui est d'ajouter une clef étrangère dans la relation
qui correspond à l'entité se situant du côté de cette cardinalité 1,1. Cette clef étrangère fera donc
référence à la clef de la relation correspondant à la seconde entité reliée par l'association.

Prenons un exemple issu de l'association «être originaire de» et des entités «Auteur» et «Pays» :

Pays (nom_p)​
Auteur (id_a, nom_a, prenom_a, date_naissance_a, nom_p#)

●​ L'association doit être binaire (c'est à dire relier uniquement deux entités et pas plus).

Lorsque deux entités sont toutes deux reliées avec une cardinalité 1,1 par une même association, on
peut placer la clef étrangère de n'importe quel côté.

Avec ces différentes règles de conversion, il nous est déjà possible de convertir notre MCD au complet
:

Pays (id_p, nom_p)​


Auteur (id_a, nom_a, prenom_a, date_naissance_a, id_p#)​
TypeLivre (id_t, libelle_t)​
Livre (id_l, titre_l, annee_l, resume_l, id_t#)​
Rediger (id_a#, id_l#)​
Edition (id_ed, nom_ed)​
Exemplaire (ref_e, id_ed#, id_l#)​
Inscrit (id_i, nom_i, prenom_i, date_naissance_i, rue_i, ville_i, cp_i, email_i, tel_i, tel_portable_i)​

Emna Dimassi Frikha​ 15


CSFTélécom El Khadra​ Cours UML​ TSMM

Emprunt (id_em, date_em, delais_em, id_i#, ref_e#)​



Légende :​
x : relation​
x : clef primaire​
x# : clef étrangère

Comme vous pouvez le constater, le schéma de la base est déjà fait. Les règles de passage au SQL sont
assez simples :

●​ chaque relation devient une table


●​ chaque attribut de la relation devient une colonne de la table correspondante
●​ chaque clef primaire devient une PRIMARY KEY
●​ chaque clef étrangère devient une FOREIGN KEY

Voici ce que cela donnerait :

Sélectionnez
CREATE TABLE Pays (
id_p INT NOT NULL,
nom_p VARCHAR(50),
PRIMARY KEY (id_p)
); ...
Cas particulier : association reflexive

Il est possible de relier une entité à elle même par une association, on parle dans ce cas là
d'association réflexive. Imaginons que l'on veuille connaître les inscrits qui sont mariés entre eux
tout en conservant leur date de mariage, voici ce que l'on obtiendrait au niveau conceptuel :

L’heritage

Désormais, MERISE II permet aussi de modéliser l'héritage entre les entités. L'héritage a du sens
lorsque plusieurs entités possèdent des propriétés similaires. On parle alors de généralisation avec un
sur-type (ou entité mère) et de spécialisation avec des sous-type (entités filles).

Emna Dimassi Frikha​ 16


CSFTélécom El Khadra​ Cours UML​ TSMM

Voici comment on pourrait représenter un héritage sur notre MCD :

De façon générale, l'héritage peut être implanté au niveau relationnel en utilisant une clef étrangère
vers la relation mère, comme clef primaire pour les relations filles. Reprenons notre exemple
précédent :

Personne (id_p, nom_p, prenom_p, date_naissance_p)​


Inscrit (id_p#, rue_i, ville_i, cp_i, email_i, tel_i, tel_portable_i)​
Auteur (id_p#)

Chapitre 3. UML

1-Introduction

UML, c’est l’acronyme anglais pour « Unified Modeling Language ». On le traduit par « Langage de
modélisation unifié ». La notation UML est un langage visuel constitué d’un ensemble de schémas, appelés
des diagrammes, qui donnent chacun une vision différente du projet à traiter son fonctionnement, sa mise
en route, les actions susceptibles d’être effectuées par le logiciel, etc. Réaliser ces diagrammes revient donc
à modéliser les besoins du logiciel à développer.

Et ces diagrammes, on les réalise comment ?


Vous avez le choix soit les dessiner à la main, soit utiliser des logiciels gratuits ou payants pour les réalise
comme StarUml, mais vous pouvez aussi utiliser ArgoUml, BoUml, PowerDesigner, etc.

Le langage UML ne préconise aucune démarche, ce n’est donc pas une méthode. Chacun est libre d’utiliser
les types de diagramme qu’il souhaite, dans l’ordre qu’il veut. Il suffit que les diagrammes réalisés soient
cohérents entre eux, avant de passer à la réalisation du logiciel.

Quel est la différence entre une vue statique et une vue dynamique ?

Une vue statique permet de représenter la structure du modèle sans tenir compte de l’évolution au
cours du temps. Une vue dynamique représente au contraire les changements qui interviennent au
cours du temps.

2-Le diagramme de cas d’utilisation

Emna Dimassi Frikha​ 17


CSFTélécom El Khadra​ Cours UML​ TSMM

Il représente les fonctionnalités (ou dit cas d’utilisation) nécessaires aux utilisateurs.
-​ Représente les utilisations possibles d’un système par les différents acteurs
-​ Représente le système du point de vue de l’utilisateur
-​ Un cas d’utilisation représente une manière d’utiliser
Elèments d’un diagramme de cas d’utilisation :
1 – Acteur
Un acteur est l'idéalisation d'un rôle joué par une personne externe, un processus ou une chose qui interagit
avec un système.

Il se représente par un petit bonhomme avec son nom (i.e. son rôle) inscrit dessous.

Exemple de représentation d'un acteur.


Il est également possible de représenter un acteur sous la forme d'un classeur

Exemple de représentation d'un acteur sous la forme d'un classeur.

2- Cas d’utilisation
Un cas d'utilisation se représente par une ellipse contenant le nom du cas (un verbe à l'infinitif), et
optionnellement, au-dessus du nom, un stéréotype.

Exemple de représentation d'un cas d'utilisation.

Exemple simplifié de diagramme de cas d'utilisation modélisant une borne d'accès à une banque.

Un acteur est qualifié de principal pour un cas d'utilisation lorsque ce cas rend service à cet acteur. Les autres
acteurs sont alors qualifiés de secondaires.

Relation entre cas d’utilisation


Il existe principalement deux types de relations :

●​ les dépendances stéréotypées, qui sont explicitées par un stéréotype (les plus utilisés sont l'inclusion
et l'extension) ;
●​ et la généralisation/spécialisation.

Emna Dimassi Frikha​ 18


CSFTélécom El Khadra​ Cours UML​ TSMM

Une dépendance se représente par une flèche avec un trait pointillé. Si le cas A inclut ou étend le cas B, la flèche
est dirigée de A vers B.

Un cas A inclut un cas B si le comportement décrit par le cas A inclut le comportement du cas B : le cas A
dépend de B par exemple, l'accès aux informations d'un compte bancaire inclut nécessairement une phase
d'authentification avec un identifiant et un mot de passe.

On dit qu'un cas d'utilisation A étend un cas d'utilisation B lorsque le cas d'utilisation A peut être appelé au
cours de l'exécution du cas d'utilisation B. Exécuter B peut éventuellement entraîner l'exécution de A :
contrairement à l'inclusion, l'extension est optionnelle. Cette dépendance est symbolisée par le
stéréotype << extend >>

Le symbole utilisé pour la généralisation est un flèche avec un trait plein dont la pointe est un triangle fermé
désignant le cas le plus général. Un cas A est une généralisation d'un cas B si B est un cas particulier de A. La
consultation d'un compte via Internet est un cas particulier de la consultation. Cette relation de
généralisation/spécialisation est présente dans la plupart des diagrammes UML et se traduit par le concept
d'héritage dans les langages orientés objet.

relation entre acteurs (généralisation)

Emna Dimassi Frikha​ 19


CSFTélécom El Khadra​ Cours UML​ TSMM

3- Le diagramme de séquence

●​ Les diagrammes de cas d’utilisation modélisent à QUOI sert le système, en organisant les interactions
possibles avec les acteurs.
●​ Les diagrammes de classes permettent de spécifier la structure et les liens entre les objets dont le système
est composé : ils spécifient QUI sera à l’oeuvre dans le système pour réaliser les fonctionnalités décrites
par les diagrammes de cas d’utilisation.

●​ Les diagrammes de séquences permettent de décrire COMMENT les éléments du système interagissent
entre eux et avec les acteurs :

o​ Les objets au coeur d’un système interagissent en s’échangent des messages.


o​ Les acteurs interagissent avec le système au moyen d’IHM (Interfaces Homme-Machine).

Interaction
une interaction doit être décrite dans plusieurs diagrammes UML :

●​ Cas d’utilisation

●​ Séquences

●​ Classes pour spécifier les opérations nécessaires

Emna Dimassi Frikha​ 20


CSFTélécom El Khadra​ Cours UML​ TSMM

Ligne de vie
Une ligne de vie représente un participant à une interaction (objet ou acteur). La syntaxe de son libellé est :

nomLigneDeVie {[selecteur]}: NomClasseOuActeur


Une ligne de vie est une instance, donc il y a nécessairement les deux points (:) dans son libellé.

Dans le cas d’une collection de participants, un sélecteur permet de choisir un objet parmi n (par
exemple objets[2]).

Messages
Les principales informations contenues dans un diagramme de séquence sont les messages échangés entre les
lignes de vie :

●​ Ils sont représentés par des flèches


●​ Ils sont présentés du haut vers le bas le long des lignes de vie, dans un ordre chronologique

Un message définit une communication particulière entre des lignes de vie (objets ou acteurs).

Plusieurs types de messages existent, dont les plus courants :

●​ l’envoi d’un signal ;


●​ l’invocation d’une opération (appel de méthode) ;
●​ la création ou la destruction d’un objet.

La réception des messages provoque une période d’activité (rectangle vertical sur la ligne de vie) marquant le
traitement du message (spécification d’exécution dans le cas d’un appel de méthode).

Messages synchrones et asynchrones


Un message synchrone bloque l’expéditeur jusqu’à la réponse du destinataire. Le flot de contrôle passe de
l’émetteur au récepteur.

●​ Si un objet A envoie un message synchrone à un objet B, A reste bloqué tant que B n’a pas terminé.
●​ On peut associer aux messages d’appel de méthode un message de retour (en pointillés) marquant la
reprise du contrôle par l’objet émetteur du message synchrone.

Un message asynchrone n’est pas bloquant pour l’expéditeur. Le message envoyé peut être pris en compte par le
récepteur à tout moment ou ignoré.

Emna Dimassi Frikha​ 21


CSFTélécom El Khadra​ Cours UML​ TSMM

Messages synchrones et diagramme de classe


Les messages synchrones correspondent le plus souvent à une opération :

●​ A l’invocation, le flux contrôle passe de l’émetteur au récepteur


●​ L’émetteur attend la fin de l’exécution, et reprend après le retour

Les méthodes correspondant aux messages synchrones doivent être définies dans un diagramme de classes.

Les méthodes sont définies dans la classe du récepteur, et pas de l’émetteur du message.

Fragment combiné
Un fragment combiné permet de décomposer une interaction complexe en fragments suffisamment simples pour
être compris il se représente de la même façon qu’une interaction. Il est représenté par un rectangle dont le coin
supérieur gauche contient un pentagone.

Dans le pentagone figure le type de la combinaison (appelé opérateur d’interaction).

Fragment alt : opérateur conditionnel


Les différentes alternatives sont spécifiées dans des zones délimitées par des pointillés.

●​ Les conditions sont spécifiées entre crochets dans chaque zones.


●​ On peut utiliser une clause [else]

Fragment loop : opérateur d’itération


Le fragment loop permet de répéter ce qui se trouve en son sein.

On peut spécifier entre crochets à quelle condition continuer.

Emna Dimassi Frikha​ 22


CSFTélécom El Khadra​ Cours UML​ TSMM

Opérateurs de flux de contrôle


●​ opt (facultatif*) : Contient une séquence qui peut ou non se produire. Dans la protection, vous pouvez
spécifier la condition sous laquelle elle se produit.

●​ alt : Contient une liste des fragments dans lesquels se trouvent d’autres séquences de messages. Une
seule séquence peut se produire à la fois.

●​ loop : Le fragment est répété un certain nombre de fois. Dans la protection, on indique la condition sous
laquelle il doit être répété.

●​ break : Si ce fragment est exécuté, le reste de la séquence est abandonné. Vous pouvez utiliser la
protection pour indiquer la condition dans laquelle la rupture se produira.

●​ par (parallel) : Les événements des fragments peuvent être entrelacés.

●​ critical : Utilisé dans un fragment par ou seq. Indique que les messages de fragment ne doivent pas être
entrelacés avec d’autres messages.

●​ seq : Il existe au moins deux fragments d’opérande. Les messages impliquant la même ligne de vie
doivent se produire dans l’ordre des fragments. Lorsqu’ils n’impliquent pas les mêmes lignes de vie, les
messages des différents fragments peuvent être entrelacés en parallèle.

●​ strict : Il existe au moins deux fragments d’opérande. Les fragments doivent se produire dans l’ordre
donné.

Opérateurs d’interprétation de la séquence


●​ consider : Spécifie une liste des messages que ce fragment décrit. D’autres messages peuvent se produire
dans le système en cours d’exécution, mais ils ne sont pas significatifs quant aux objectifs de cette
description.

●​ ignore : Liste des messages que ce fragment ne décrit pas. Ils peuvent se produire dans le système en
cours d’exécution, mais ils ne sont pas significatifs quant aux objectifs de cette description.

Emna Dimassi Frikha​ 23


CSFTélécom El Khadra​ Cours UML​ TSMM

●​ assert : Le fragment d’opérande spécifie les seules séquences valides. Généralement utilisé dans un
fragment Consider ou Ignore.

●​ neg : La séquence affichée dans ce fragment ne doit pas se produire. Généralement utilisé dans un
fragment Consider ou Ignore.

Réutilisation de séquences
Un fragment ref permet d’indiquer la réutilisation d’un diagramme de séquences défini par ailleurs.

En supposant qu’il existe un diagramme intitulé Authentification et un autre Paiement, on peut établir
le diagramme suivant :

Un exemple de diagramme de séquence

4/- Le diagramme de classes


Le diagramme de classes est considéré comme le plus important de la modélisation orientée objet, il
est le seul obligatoire lors d'une telle modélisation.​
Il s'agit d'une vue statique, car on ne tient pas compte du facteur temporel dans le comportement du
système. Les principaux éléments de cette vue statique sont les classes et leurs relations : association,
généralisation et plusieurs types de dépendances, telles que la réalisation et l'utilisation.

Emna Dimassi Frikha​ 24


CSFTélécom El Khadra​ Cours UML​ TSMM

Une instance est une concrétisation d'un concept abstrait. Par exemple :

●​ la Ferrari Enzo qui se trouve dans votre garage est une instance du concept
abstrait Automobile ;
●​ l'amitié qui lie Jean et Marie est une instance du concept abstrait Amitié ;

Une classe est un concept abstrait représentant des éléments variés comme :

●​ des éléments concrets (ex. : des avions),


●​ des éléments abstraits (ex. : des commandes de marchandises ou services),
●​ des composants d'une application (ex. : les boutons des boîtes de dialogue),
●​ des structures informatiques (ex. : des tables de hachage),
●​ des éléments comportementaux (ex. : des tâches), etc.

Tout système orienté objet est organisé autour des classes.

Une classe est la description formelle d'un ensemble d'objets ayant une sémantique et des
caractéristiques communes. Un objet est une instance d'une classe

Par exemple, si l'on considère que Homme (au sens être humain) est un concept abstrait, on peut dire
que la personne Mohamed Ali est une instance de Homme. Si Homme était une classe, Mohamed Ali
en serait une instance : un objet.

Représentation graphique d’une classe

Les opérations décrivent les éléments individuels d'un comportement que l'on peut invoquer. Ce sont
des fonctions qui peuvent prendre des valeurs en entrée et modifier les attributs ou produire des
résultats.

Il y a donc deux sortes de fonctions :


-​ les fonctions qui renvoient une valeur : on leur met un des types que l'on connaît
(char, int, double, etc.)

Emna Dimassi Frikha​ 25


CSFTélécom El Khadra​ Cours UML​ TSMM

-​ les fonctions qui ne renvoient pas de valeur : on leur met un type spécial void (qui signifie «
vide »).
Encapsulation
L'encapsulation permet de définir des niveaux de visibilité des éléments d'un conteneur.
• Elle permet de définir les droits d’accès aux propriétés d’une classe.
• UML définit quatre niveaux d’encapsulation d’une propriété d’une classe
Il existe quatre visibilités prédéfinies.
Public ou + :
●​ tout élément qui peut voir le conteneur peut également voir l'élément indiqué.
Protected ou # :
●​ seul un élément situé dans le conteneur (classe) ou un de ses descendants peut voir
l'élément indiqué.
Private ou - :
●​ seul un élément situé dans le conteneur peut voir l'élément.
Package ou ∼ ou rien :
●​ seul un élément déclaré dans le même paquetage peut voir l'élément.
Une association est une relation entre deux classes (association binaire) ou plus (association n-aire)

Deux types de représentation d’une association (UML a tranché pour la première version)

multiplicité :

●​ comme un attribut, une terminaison d'association peut posséder une multiplicité.

​ Association binaire

Emna Dimassi Frikha​ 26


CSFTélécom El Khadra​ Cours UML​ TSMM

Association n-aire

Une association n-aire lie plus de deux classes.

quelques exemples de multiplicité ou cardinalitées:

●​ exactement un : 1 ou 1..1 ;
●​ plusieurs : * ou 0..* ;
●​ au moins un : 1..* ;
●​ de un à six : 1..6.

Une classe-association possède les caractéristiques des associations et des classes : elle se connecte à
deux ou plusieurs classes et possède également des attributs et des opérations. Une
classe-association est caractérisée par un trait discontinu entre la classe et l'association qu'elle
représente

Remarque : Il faut noter que, pour les habitués du modèle entité/relation, les multiplicités sont en
UML « à l'envers » (par référence à Merise) pour les associations binaires et « à l'endroit » pour les
n-aires avec n>2.

Autoassociation d’une classe-association

Emna Dimassi Frikha​ 27


CSFTélécom El Khadra​ Cours UML​ TSMM

Imaginons que nous voulions ajouter une association Supérieur de dans le diagramme pour préciser
qu'une personne est le supérieur d'une autre personne

la raison de la contrainte {bag} qui, placée sur les terminaisons d'association de la classe-association
indique qu'il peut y avoir des liens multiples impliquant les mêmes paires d'objets.

Deux modélisations modélisant la même information.

Agrégation et composition

Agrégation :

Exemple de relation d’agrégations et de composition

Lorsque l'on souhaite modéliser une relation tout/partie où une classe constitue un élément plus
grand (tout) composé d'éléments plus petits (partie), il faut utiliser une agrégation(Elle représente
une relation de type "ensemble / élément").

Une agrégation est une association qui représente une relation d'inclusion structurelle ou
comportementale d'un élément dans un ensemble. Graphiquement, on ajoute un losange vide du
côté de l'agrégat (Agrégation : un élément est une composante facultative de l’autre A entre dans la
composition de B sans être indispensable à son fonctionnement).

Emna Dimassi Frikha​ 28


CSFTélécom El Khadra​ Cours UML​ TSMM

Composition

La composition, également appelée agrégation composite, décrit une contenance structurelle entre
instances. Ainsi, la destruction de l'objet composite implique la destruction de ses composants. Une
instance de la partie appartient toujours à au plus une instance de l'élément composite : la
multiplicité du côté composite ne doit pas être supérieure à 1 (i.e. 1 ou 0..1). Graphiquement, on
ajoute un losange plein (✦) du côté de l'agrégat

Composition : un élément est une composante obligatoire de l’autre A entre dans la composition de
B et lui est indispensable

Généralisation et héritage

Partie du règne animal décrit avec l'héritage multiple.

La généralisation décrit une relation entre une classe générale (classe de base ou classe parent) et
une classe spécialisée (sous-classe) est une dépendance de type « filiation » entre 2 items A est une
sorte de B. Dans le langage UML, ainsi que dans la plupart des langages objet, cette relation de
généralisation se traduit par le concept d'héritage.

Le symbole utilisé pour la relation d'héritage ou de généralisation est une flèche avec un trait plein
dont la pointe est un triangle fermé désignant le cas le plus général

Les propriétés principales de l'héritage sont :

Emna Dimassi Frikha​ 29


CSFTélécom El Khadra​ Cours UML​ TSMM

●​ la classe enfant possède toutes les caractéristiques de ses classes parents, mais elle ne peut
accéder aux caractéristiques privées de cette dernière ;
●​ une classe enfant peut redéfinir une ou plusieurs méthodes de la classe parent. Sauf
indication contraire, un objet utilise les opérations les plus spécialisées dans la hiérarchie des
classes ;
●​ toutes les associations de la classe parent s'appliquent aux classes dérivées ;
●​ une instance d'une classe peut être utilisée partout où une instance de sa classe parent est
attendue. Par exemple, en se basant sur le diagramme de la figure toute opération acceptant
un objet d'une classe Animal doit accepter un objet de la classe Chat ;
●​ une classe peut avoir plusieurs parents, on parle alors d'héritage multiple. Le langage C++ est
un des langages objet permettant son implémentation effective.

Interface

Le rôle de ce classeur, stéréotypé << interface >>, est de regrouper un ensemble de propriétés et
d'opérations assurant un service cohérent. L'objectif est de diminuer le couplage entre deux
classeurs. Une interface est représentée comme une classe excepté l'absence du
mot-clef abstract (car l'interface et toutes ses méthodes sont, par définition, abstraites) et l'ajout du
stéréotype << interface >>

Une classe peut très bien réaliser plusieurs interfaces. Une classe (classe cliente de l'interface) peut
dépendre d'une interface (interface requise). On représente cela par une relation de dépendance et
le stéréotype « use ».

Emna Dimassi Frikha​ 30


CSFTélécom El Khadra​ Cours UML​ TSMM

Un exemple de diagramme de classes (utilisé en phase d’analyse)

Emna Dimassi Frikha​ 31

Vous aimerez peut-être aussi