Uml Coo
Uml Coo
Département d’informatique
1
Plan du cours
6
Étapes classiques d’un processus de développement logiciel
1.Analyse des besoins
1. Compréhension des attentes des utilisateurs et du client.
2. Rédaction du cahier des charges / spécifications fonctionnelles.
2.Conception (Design)
1. Conception globale (architecture du système).
2. Conception détaillée (modules, bases de données, UML).
3.Implémentation (Codage)
1. Transformation de la conception en code source.
2. Respect des normes de programmation.
4.Tests
1. Tests unitaires (chaque module).
2. Tests d’intégration (modules combinés).
3. Tests système et validation (avec l’utilisateur).
5.Déploiement
1. Mise en production.
2. Formation des utilisateurs.
6.Maintenance et évolution
1. Correction de bugs.
2. Amélioration et ajout de nouvelles fonctionnalités.
3. Adaptation aux changements techniques (mises à jour).
Modèles de développement logiciel (processus)
1. Modèle en cascade (Waterfall)
•Étapes séquentielles : analyse → conception → codage → test → déploiement.
•Simple mais rigide, peu flexible face aux changements.
2. Modèle en V
•Similaire à la cascade mais avec tests associés à chaque étape.
•Accent sur la vérification et validation.
3. Modèle incrémental
•Développement par petits incréments (fonctionnalités ajoutées progressivement).
4. Modèle itératif
•Développement par versions successives, avec retours fréquents des utilisateurs.
5. Méthodes agiles (Scrum, XP, Kanban, …)
•Développement adaptatif et collaboratif.
•Cycles courts appelés sprints.
•Forte implication du client.
6. Modèle spiral
•Combine l’itératif et l’approche gestion des risques.
Processus en cascade
Chaque étape doit être terminée avant que ne commence la suivante
Conception Dossier de
conception détaillée
Programmation
Code documenté +
et test unitaire
Rapport de tests unitaires
Intégration
et test système Rapport de validation
Livraison
et maintenance
Processus en cascade
Caractéristiques:
Hérité des méthodes classiques d'ingénierie
Découverte d'une erreur entraîne retour à la phase à l'origine de
l'erreur et nouvelle cascade, avec de nouveaux documents...
Coût de modification d'une important, donc choix
•
erreur en
• diagramme de classes
• diagramme d’objets
• diagramme de composants
• diagramme de déploiement
Dynamique
(comment le système
EVOLUE) Fonctionnel
(ce que le système FAIT)
• diagramme de séquence
• diagramme de collaboration • diagramme de cas d’utilisation
• diagramme d’états-transitions • diagramme de collaboration
• diagramme d’activités
• Les objets du monde réel nous entourent, ils naissent, vivent et meurent.
• Exemples d’abstractions
– Une carte routière
– Un nombre complexe
– Un téléviseur
– Une transaction bancaire
– Une porte logique
– Une pile
– Un étudiant
• Exemples
– Pour un signal électrique : l’amplitude, la pulsation, la phase, …
– Pour une voiture : la marque, la puissance, la couleur, le nombre de
places assises, …
– Pour un étudiant : le nom, le prénom, la date de naissance, l'adresse,
…
• Le comportement
– décrit les actions et les réactions d’un objet
– regroupe toutes les compétences d’un objet
– se représente sous la forme d’opérations (méthodes)
• Tout objet possède une identité qui lui est propre et qui le caractérise
• L’identité permet de distinguer tout objet de façon non ambiguë,
indépendamment de l’état
• Il est possible de définir une contrainte d’unicité
• Une clé primaire dans une base de donnée relationnelle est une manière de
réaliser l’identité (en l’insérant dans l’état)
• Les objets
– ne vivent pas en ermites
– Les objets interagissent les uns avec les autres
– Les objets communiquent en échangeant des messages
• Catégories de messages :
• La classe
– est une description abstraite d’un ensemble d’objets
– peut être vue comme la factorisation des éléments communs à un
ensemble d’objets
– décrit le domaine de définition d’un ensemble d’objets
• Les objets sont regroupés dans des classes qui les décrivent de manière abstraite
• Opérations / méthodes
– Opération : service qui peut être demandé à n’importe quel objet de
la classe.
– Méthode : implémentation d’une opération.
– Chaque opération non abstraite d’une classe doit avoir une méthode
qui fournit un algorithme exécutable comme corps (cet algorithme
est donné dans un langage de programmation ou dans du texte
structuré).
• simplifié
–Uniquement le nom de la classe NomClasse
•intermédiaire NomClasse
–Nom de la classe attribut1 NomClasse
–Nom des attributs, ou des opérations attribut2
attribut3 attribut1
… attribut2
•complet attribut3
–Nom de la classe …
–Noms des attributs
Opération1
–Noms des méthodes
Opération2
…
•Attributs :
–Type
–Valeurs par défaut
–Degré de visibilité NomClasse
–Caractéristique - Attribut1 : type1
# Attribut2 : type2 = valeur2
•Opérations :
# /Attribut3 : type3
–Signature …
–Degré de visibilité
+ Opération1 (arg1, arg2,…) : type4
–Caractéristique
# Opération2 () : void
…
Nom de classe
Attributs
Opérations( )
• Attribut
<visibilité> <nomAttribut> : <type> = <valeur par défaut>
• Opération
<visibilité> <nomOpération> (listeParamètres) : <typeRetour>
Paramètre
<nom> : <type> = <valeur par défaut>
+ Attribut publique
# Attribut protégé
- Attribut privé
+ Opération publique
# Opération protégée
- Opération privée
• Attribut
• type de base (entier, booléen, caractère, tableau…)
integer, double, char, string, boolean, date, time, void
• Au niveau analyse, pas d’attribut instance d’une classe (on utilise
une association)
• Au niveau conception, on décide quelles associations peuvent être
représentées par des attributs
• Opération
• Type quelconque (de base ou classe)
Voiture
- Marque : string
- Modèle : string
- Turbo : boolean = false
+ Démarrer ()
+ Rouler ()
+ Freiner ()
Voiture
- Marque : string
- Modèle : string
- Turbo : boolean = false
- NbRoues : int = 4
- NbInstances = 0
+ Démarrer ()
+ Rouler ()
+ Freiner ()
+ IncrémenterNbInstances ()
voiture voiture
immatriculation + immatriculation : string
couleur + couleur : string
marque + marque : string
puissance # puissance : int attributs
poids # poids : int types
date - date : Date
propriétaire - propriétaire : string
demarrer + demarrer()
arreter - contact() : bool
conduire + conduire(a : string = « kenitra », b : string) méthodes
voiture prototype
vendre + vendre(prix : float)
Niveaux d’accès
Classe non documentée Classe documentée Classe détaillée
UML 46
pr. LAASSIRI Jalal / Dept 49
Attributs et opérations dérivés
• Notation : /nomAttribut
• Propriété redondante, dérivée d’autres propriétés déjà allouées
• En conception, un attribut dérivé peut donner lieu à une opération qui
encapsulera le calcul effectué
Commande Commande
Numéro Numéro
PrixHT PrixHT
TVA TVA
/PrixTTC /PrixTTC
CalculerPrixTTC ()
UML 48
pr. LAASSIRI Jalal / Dept 51
Les relations entre classes
• L’association
• L’agrégation
• La généralisation
Classe1 Classe2
Université Étudiant
Enseignant Étudiant
Cours
Début
Fin
• Représentation au moyen d’une
classe
+ contrainte qui exprime que
les multiples branches de
Salle
l’association s’instancient
simultanément en un même lien
<< assoc. Ternaire>>
Une association qualifiée met en relation deux classes sur la base d’un attribut
spécifique appelé « clé »
* 1..n
Banque numCompte Personne
52
pr. LAASSIRI Jalal / Dept 55
Nommage des associations
NomAssoc >
Classe1 Classe2
Emploie >
Société Personne
• Le rôle décrit comment une classe voit une autre classe à travers une
association
• Une association a par essence 2 rôles, selon le sens dans lequel on la
regarde
• Usage : Forme nominale
Rôle1
Classe1 Classe2
Rôle2
Société Employeur
Personne Parent
Employé
Personne
Directeur
Société Personne Enfant
Employé
UML 55
pr. LAASSIRI Jalal / Dept 58
Exemples
Peintre Tableau
1 peint 1..n
{ordonnée}
Personne Armée
militaire
{sous-ensemble}
général
Personne Licence
enseignant
{ou-exclusif}
étudiant
56
pr. LAASSIRI Jalal / Dept 59
Multiplicité
Rôle1 m2
Classe1 Classe2
m1 Rôle2
Valeur : signification :
1 Un et un seul
0..1 Zéro ou un
M .. N De M à N (entiers naturels)
* De zéro à plusieurs
0 .. * De zéro à plusieurs
1 .. * D'un à plusieurs
*
Société SonEmployeur
1 SesEmployés Personne
*
Échiquier Case
Ligne 1
Échiquier Case
Colonne
SesÉtudiants *
Étudiant SesMatières
Matière
*
Moyenne
• Représentation simplifiée
• Agrégation
CoPropriétaire 0..*
Personne Immeuble
Immeuble
1..*
• Composition
Voiture
Moteur Voiture 1
Moteur
* 1
Cylindre Carburateur
• Qualité d’une association qui permet le passage d’une classe vers une autre
• Par défaut, on peut naviguer dans les 2 sens
• On peut cependant limiter la navigabilité :
Classe 1 Classe 2
• Exemple :
Une instance d’utilisateur peut accéder à des instances
de Mot de passe, mais pas l’inverse.
Utilisateur
détenteur * Mot de passe
1 clef
+ GetNom () : string
+ GetDescription () : string
+ GetPoids () : float
+ GetPrixHT () : float
+ GetTauxTaxe () : float
+ GetPrixTTC () : float
+ GetTauxFrancs () : float
+ GetPrixTTCFrancs () : float
+ GetSesPaniers () : ensemble(PANIER)
+ CalculerPrixTTC () : void
+ CalculerPrixTTCFrancs () : void
• Gérer la complexité
Arborescences de classes d’abstraction croissante
• Généralisation : Super-classes
• Spécialisation : Sous-classes
Classe plus
Super-classe générale
Classe plus
Sous-classe
spécialisée
Véhicule
Transmission
Continue Discrète
Animal
Carnivore Herbivore
A A
A
Impossible !!!
C
BC Impossible !!!
Animal
Station Protection
Nourriture
Bipède Quadrupède Herbivore Carnivore A plumes A poils A écailles
Lapin
CompteBancaire
Généralisation Spécialisation
crédit : nombre
débit : nombre
déposer(nombre)
retirer(nombre)
donner-solde
CompteÉpargne
taux :nombre
calculer-intérêts
• Classe qui ne peut avoir aucune instance directe ; on écrit son nom en italique
Forme
-Nom : string
+Calc-surface()
+Get-nom()
Forme
-Nom : string
+Calc-surface()
+Get-nom()
Rectangle Cercle
-Longueur : real -Rayon : real
-Largeur : real
+Calc-surface()
+Calc-surface()
Opération
polymorphe
• Ils modélisent les instances d’éléments qui apparaissent sur les diagrammes de
classe.
• Ils montrent un ensemble d ’objets et leurs relations à un moment donné.
– Instances nommées
:Cercle
– Instances avec valeurs d’attributs
bouton3:Rectangle
Nom : string=“bouton-poussoir”
Longueur : real=13.5
Largeur : real=3.2
• Une association est une abstraction des liens qui existent entre les objets
instances des classes associées
• Les associations se représentent de la même manière que les liens.
Une association
Université Étudiant
MohamedV : Université
Un lien
Latifa : Étudiant
enseigne
Enseignant Matière
* 1..*
Laassiri:Enseignant
Génie-Logiciel:Matière
Hadi:Enseignant Réseaux:Matière
Système:Matière
Fakhri:Enseignant
Monopoly
<<include>>
Monopoly
<<include>>
Monopoly
<<extend>>
UML 119
pr. LAASSIRI Jalal / Dept 109
Exemple
Client distant
<<extend>>
Virement
Client <<include>>
<<include>>
UML 120
pr. LAASSIRI Jalal / Dept 110
Exemple 2 : La CBM
CBM
<<include>> <<extend>>
Passer une commande
Employé
urgente
Enregistrer un nouveau client
Système : CBM
Acteur primaire : l’employé de la coopérative
Objectif : enregistrer une commande de livres
Précondition : le libraire existe
Scénarios :
1 - l’employé vérifie la solvabilité du libraire
2 - l’employé vérifie l’existence du livre
3 - l’employé précise la quantité
Exception :
1a - le libraire n’est pas solvable (l’employé est informé)
2a - le livre n’existe pas (l’employé est informé)
COMMANDE LIBRAIRIE
1
*
LIVRE EDITEUR
Système : CBM
Acteur primaire : l’employé de la coopérative
Objectif : enregistrer une commande de livres
Précondition : le libraire existe
Scénarios :
1 - l’employé vérifie la solvabilité du libraire
* une instance de commande est créée
2 - l’employé vérifie l’existence du livre
* un lien entre l'instance de commande et
une instance de livre est créé
3 - l’employé précise la quantité
* la quantité est ajoutée (classe associative)
Exception :
1a - le libraire n’est pas solvable
* un message est affiché
2a - le livre n’existe pas
* un message est affiché
pr. LAASSIRI Jalal / Dept 115
Diagramme de classes
2ème version : Spécification intermédiaire
LIGNE DE COMMANDE
quantité
putQuantité (qt)
sesLivres *
LIVRE EDITEUR
ISBN sesLivres nom
Titre * adresse
getTitre () getLivre (titre) : LIVRE
• Comporte :
– des objets dans une situation donnée
– les liens qui relient les objets qui se connaissent
– les messages échangés entre les objets, représentés le long de ces
liens
COMMANDE LIBRAIRIE
2. commande (libr)
6. ligneDeCommande () 5. ajouterLivre (livre) 1. isSolvable ()
7. putQuantité(qt)
4. getTitre ()
LIVRE EDITEUR
* sesEditeurs
sesLivres *
LIVRE EDITEUR
ISBN sesLivres nom
Titre * adresse
getTitre () getLivre (titre) : LIVRE
Acteur :
Objet :
:nom
Ligne de vie : nom:Classe
Bande d’activation :
Envoi de message :
Message()
Création dynamique :
Supprimer un objet : new() obj:Classe2
kill()
UML 136
pr. LAASSIRI Jalal / Dept 124
LAASSIRI
pr. LAASSIRI
Jalal
Jalal / Dept
LAASSIRI
pr. LAASSIRI
Jalal
Jalal / Dept
LAASSIRI
pr. LAASSIRI
Jalal
Jalal / Dept
Convention graphique
Branchement conditionnel :
obj1:Classe obj2:Classe
Récursivité :
if x cas1()
else cas2()
endif
msg()
8: M8
A B C
M1
3: M3 M2
5: M5
C
A M3
1: M1
4: M4 M4
10: M10
2: M2 M5
6: M6
9: M9
7: M7 M6
M7 M8
B
M9
M10
temps temps
appelant ligne appelé : Client : Cmd : Article
décroche
tonalité getValue
numérote getPrice
numérote
indication de sonnerie
getName
sonnerie
décroche
unA:ClasseA unB:ClasseB
toto:Acteur1
meth1(…)
message
meth2 (…)
SonTruc boolean
retour
•type
•nom d'une instance
unA : ClasseA
toto:Acteur
meth1 (…)
ClasseB (…)
: ClasseB
unB
X
Création
Arrive sur la classe
Pas de nom d'instance au début
Suppression renvoie tj l'instance créée
1 * sesEditeurs
sonLivre
LIVRE EDITEUR
ISBN sesLivres nom
titre * adresse
getLivre (titre) : LIVRE
1. getDate()
2. getInfosLdC
COMMANDE LIBRAIRIE
3. getQuantité()
4. getTitre()
LIVRE EDITEUR
getDétailCommandes()
getSesCommandes()
sesCommandes
getDétailCommande()
getDate()
date
sesLdC
getDétailLigne()
getLivre()
sonLivre
getTitre()
Pour chaque
ligne de com. titre
getQuantité()
1 * sesEditeurs
sonLivre
LIVRE EDITEUR
ISBN sesLivres nom
titre * adresse
getLivre (titre) : LIVRE
getDétailCommandes()
getSesCommandes()
getDate()
date
getSesLignes()
Pour chaque
commande sesLdC
getQuantité()
quantité
getLivre()
Pour chaque ldc
de chaque com. sonLivre
getTitre()
titre
{date +{titre,quantité}}
1 * sesEditeurs
sonLivre
LIVRE EDITEUR
ISBN sesLivres nom
titre * adresse
getLivre (titre) : LIVRE
des états :
initial
final
Intermédiaires
- ex : mineur et majeur
des transitions
induisant un changement d'état
- ex : naissance, anniversaire…
• Exemple :
En alerte
entry/allumer lampe alerte
do/sonnerie toutes les 5 ''
4ème sonnerie/appel poste de garde
exit/éteindre lampe alerte
Action à l'entrée
En alerte
entry/allumer lampe alerte Action interne
do/sonnerie toutes les 5 ''
4ème sonnerie/appel poste de garde
exit/éteindre lampe alerte Action à la sortie
événement
EN-VEILLE EN-ALERTE
do : détecteur do : sonnerie
détectionPb / envoyer message
sous tension
poste de surveillance
activité
action
activité
alarm off
pr. LAASSIRI Jalal / Dept 180
pr. LAASSIRI Jalal / Dept
pr. LAASSIRI Jalal / Dept
pr. LAASSIRI Jalal / Dept
pr. LAASSIRI Jalal / Dept
pr. LAASSIRI Jalal / Dept
pr. LAASSIRI Jalal / Dept
pr. LAASSIRI Jalal / Dept
pr. LAASSIRI Jalal / Dept
pr. LAASSIRI Jalal / Dept
pr. LAASSIRI Jalal / Dept
Diagrammes hiérarchisés
•Permettent de structurer les DET complexes
•Factorisation des actions et activités
•Exemple :
État composite
do/a1 do/a2
do/a3 do/a4
do/a5 do/a6
Chercher le café
Mettre un filtre
Remplir le
réservoir d'eau
Mettre du café
Prendre une tasse
Allumer la cafetière
Le café passe
servir
pr. LAASSIRI Jalal / Dept 201
Diagrammes d’activités
Recette simplifiée : commencer par casser le chocolat en morceaux, puis le faire fondre.
En parallèle, casser les œufs en séparant les blancs des jaunes.
Quand le chocolat est fondu, ajouter les jaunes d’oeuf.
* Les diagrammes de déploiement peuvent montrer des instances de noeuds (un matériel
précis), ou des classes de nœuds.