Sciences de l'ingénieur1ère

Diagrammes structurels
Exercices corrigés

Maîtrisez les diagrammes structurels : diagrammes de classes, diagrammes de composants, diagrammes de paquetages, diagrammes d'objets et diagrammes de profil dans la modélisation des systèmes grâce à ces 5 exercices détaillés.

Concepts & Exercices
\(\text{Structure} = \sum_{i=1}^{n} \text{Élément}_i + \text{Relation}_i\)
Modèle structurel
Classes
C(x) → abstraction
Modèle d'objet
Composants
Comp(y) → modularité
Unité de déploiement
Paquetages
Pkg(z) → organisation
Groupe d'éléments
🏗️
Définition : Les diagrammes structurels montrent l'organisation statique d'un système.
🔄
Types : Classes, objets, composants, paquetages, profils, blocs (SysML).
🔗
Objectif : Représenter l'architecture statique du système et les relations entre éléments.
✅
Avantages : Compréhension de l'architecture, documentation, réutilisation.
Exercice 1
Créer un diagramme de classes pour un système de gestion de bibliothèque.
Exercice 2
Établir un diagramme de composants pour une application mobile.
Exercice 3
Organiser un système en paquetages pour une application web.
Exercice 4
Représenter un diagramme d'objets pour un panier d'achat.
Exercice 5
Créer un diagramme de profil pour un domaine spécifique.
Corrigé : Exercices 1 à 3
1 Diagramme de classes
Définition :

Diagramme de classes : Représentation statique des classes, de leurs attributs, méthodes et relations.

Méthode de création :
  1. Identifier les entités du système
  2. Créer les classes correspondantes
  3. Définir les attributs de chaque classe
  4. Spécifier les méthodes de chaque classe
  5. Établir les relations entre classes
  6. Valider la cohérence du modèle

Système de Gestion de Bibliothèque - Classes

Livre
- isbn: String
- titre: String
- auteur: String
- genre: String
- disponible: Boolean
+ emprunter(): void
+ rendre(): void
+ estDisponible(): Boolean
Emprunteur
- id: Integer
- nom: String
- prenom: String
- email: String
+ emprunter(l: Livre): Boolean
+ rendre(l: Livre): void
+ consulterHistorique(): List<Livre>
Emprunt
- dateDebut: Date
- dateFin: Date
- rendu: Boolean
+ prolonger(): void
+ estEnRetard(): Boolean
📚
Classes principales
• Livre : Contient les informations sur les livres
• Emprunteur : Gère les utilisateurs du système
• Emprunt : Représente les transactions
🔗
Relations entre classes
• Livre ↔ Emprunt : Association (un emprunt concerne un livre)
• Emprunteur ↔ Emprunt : Association (un emprunt est fait par un emprunteur)
• Multiplicité : 1 Livre ↔ 0..n Emprunts, 1 Emprunteur ↔ 0..n Emprunts
Étape 1 : Identification des entités

Déterminer les objets principaux du système de gestion de bibliothèque.

Étape 2 : Création des classes

Modéliser chaque entité comme une classe avec ses attributs.

Étape 3 : Définition des méthodes

Spécifier les comportements de chaque classe.

Classes = Entités + Attributs + Méthodes + Relations
Réponse finale :

Diagramme de classes complet avec Livre, Emprunteur et Emprunt, avec leurs attributs, méthodes et relations.

Règles appliquées :

• Abstraction : Chaque classe doit représenter une entité claire

• Encapsulation : Les attributs sont privés, les méthodes publiques

• Relations : Les associations doivent être pertinentes et documentées

2 Diagramme de composants
Définition :

Diagramme de composants : Représentation des composants logiciels et de leurs dépendances.

Méthode de création :
  1. Identifier les modules logiciels du système
  2. Regrouper les modules en composants
  3. Spécifier les interfaces fournies et requises
  4. Établir les relations de dépendance
  5. Représenter les ports d'interaction
  6. Valider l'architecture modulaire

Application Mobile - Composants

Interface Utilisateur
<<component>>
Logique Métier
<<component>>
Accès Données
<<component>>
API Externe
<<component>>
🧩
Composants principaux
• Interface Utilisateur : Gère l'affichage et les interactions
• Logique Métier : Traite les règles de gestion
• Accès Données : Gère la persistance
• API Externe : Services tiers
🔌
Interfaces et dépendances
• Interface Utilisateur → Logique Métier : Demande de services
• Logique Métier → Accès Données : Persistance des données
• Accès Données ← API Externe : Services externes
• Interfaces : API clairement définies
Étape 1 : Identification des modules

Décomposer l'application en modules logiciels cohérents.

Étape 2 : Groupement en composants

Regrouper les modules en composants fonctionnels.

Étape 3 : Définition des interfaces

Spécifier les interfaces fournies et requises par chaque composant.

Composants = Modules + Interfaces + Dépendances
Réponse finale :

Diagramme de composants avec Interface Utilisateur, Logique Métier, Accès Données et API Externe, avec leurs relations.

Règles appliquées :

• Modularité : Chaque composant doit avoir une responsabilité claire

• Interfaces : Les interfaces doivent être bien définies et documentées

• Dépendances : Les relations doivent refléter les véritables dépendances

3 Diagramme de paquetages
Définition :

Diagramme de paquetages : Représentation de l'organisation hiérarchique des paquetages.

Méthode de création :
  1. Identifier les groupes logiques d'éléments
  2. Créer des paquetages pour chaque groupe
  3. Organiser les paquetages en hiérarchie
  4. Spécifier les dépendances entre paquetages
  5. Représenter les importations et exportations
  6. Valider la structure organisationnelle

Application Web - Paquetages

com.app.web
<<package>>
• controllers
• models
• views
• utils
controllers
<<package>>
models
<<package>>
services
<<package>>
📁
Paquetages principaux
• com.app.web : Paquetage racine de l'application
• controllers : Gestion des requêtes
• models : Modèles de données
• views : Composants d'affichage
• services : Services métiers
🔗
Dépendances entre paquetages
• controllers → models : Accès aux données
• controllers → services : Services métiers
• models → utils : Utilitaires
• services → models : Persistance
Étape 1 : Identification des groupes

Regrouper les classes/modules selon leur fonction ou responsabilité.

Étape 2 : Création des paquetages

Créer des paquetages pour chaque groupe logique.

Étape 3 : Organisation hiérarchique

Organiser les paquetages dans une structure arborescente.

Paquetages = Groupes + Hiérarchie + Dépendances
Réponse finale :

Diagramme de paquetages avec com.app.web, controllers, models, views et services, organisés hiérarchiquement.

Règles appliquées :

• Cohésion : Les paquetages doivent contenir des éléments cohérents

• Couplage : Minimiser les dépendances entre paquetages

• Hiérarchie : Organiser les paquetages de manière logique

Corrigé : Exercices 4 à 5
4 Diagramme d'objets
Définition :

Diagramme d'objets : Représentation d'une instance particulière du système à un moment donné.

Méthode de création :
  1. Identifier une situation spécifique du système
  2. Représenter les instances des classes
  3. Spécifier les valeurs des attributs
  4. Montrer les relations entre objets
  5. Indiquer les liens d'association
  6. Valider la cohérence avec la structure

Panier d'Achat - Objet

Objet Classe Attributs Valeurs
panier1 Panier id, date, articles, total 1, 2023-10-15, [prod1, prod2], 45.99
client1 Client id, nom, email 101, Dupont, j.dupont@email.com
prod1 Produit ref, nom, prix P001, T-shirt, 19.99
prod2 Produit ref, nom, prix P002, Pantalon, 25.00
panier1 : Panier
id: 1
date: 2023-10-15
total: 45.99
client1 : Client
id: 101
nom: Dupont
email: j.dupont@email.com
prod1 : Produit
ref: P001
nom: T-shirt
prix: 19.99
prod2 : Produit
ref: P002
nom: Pantalon
prix: 25.00
📦
Caractéristiques des objets
• Instantiation : Chaque objet est une instance d'une classe
• Valeurs : Les attributs ont des valeurs spécifiques
• Relations : Les objets sont liés selon les associations
• État : Représente une situation à un moment donné
Étape 1 : Identification de la situation

Choisir un état spécifique du système à représenter.

Étape 2 : Représentation des instances

Créer des objets avec des noms d'instance spécifiques.

Étape 3 : Attribution des valeurs

Spécifier les valeurs concrètes des attributs.

Étape 4 : Représentation des relations

Montrer les liens entre objets selon les associations de classes.

Objet = Instance + Valeurs + Relations + État
Réponse finale :

Diagramme d'objets montrant le panier d'achat avec les produits et le client à un instant donné.

Règles appliquées :

• Instantiation : Chaque objet est une instance d'une classe

• Spécification : Les attributs doivent avoir des valeurs concrètes

• Cohérence : Les relations doivent respecter la structure de classes

5 Diagramme de profil
Définition :

Diagramme de profil : Extension d'UML pour un domaine spécifique d'application.

Méthode de création :
  1. Identifier le domaine d'application spécifique
  2. Définir les stéréotypes nécessaires
  3. Créer des métaclasses si nécessaire
  4. Établir les contraintes de modèle
  5. Documenter les propriétés des stéréotypes
  6. Valider la pertinence du profil

Profil IoT - Domaine spécifique

Stéréotype Métaclass Propriétés Description
<<Capteur>> Class type, précision, portée Composant de mesure
<<Actionneur>> Class type, puissance, fréquence Composant d'action
<<Connectivité>> Association protocole, bande_passante Communication
<<ContrainteTemporelle>> Constraint délai, priorité Exigence de temps
<<Capteur>>
Température
type: température
précision: ±0.5°C
portée: -40 à 85°C
<<Actionneur>>
Relais
type: relais
puissance: 10A
fréquence: 50Hz
<<Connectivité>>
WiFi
protocole: 802.11n
bande_passante: 150Mbps
🔧
Composants d'un profil
• Stéréotypes : Extensions de classes UML
• Métaclass : Classe UML étendue
• Propriétés : Attributs spécifiques
• Contraintes : Règles de modèle
• Tagged Values : Valeurs personnalisées
Étape 1 : Identification du domaine

Déterminer le domaine spécifique pour lequel le profil est nécessaire.

Étape 2 : Définition des stéréotypes

Créer des stéréotypes pour les concepts spécifiques du domaine.

Étape 3 : Spécification des propriétés

Définir les propriétés spécifiques pour chaque stéréotype.

Étape 4 : Validation du profil

Vérifier que le profil répond aux besoins du domaine.

Profil = Stéréotypes + Propriétés + Contraintes + Domaine
Réponse finale :

Profil IoT défini avec des stéréotypes Capteur, Actionneur, Connectivité et ContrainteTemporelle.

Règles appliquées :

• Spécialisation : Le profil doit être adapté au domaine spécifique

• Extensibilité : Les stéréotypes doivent enrichir UML sans le modifier

• Documentation : Chaque élément du profil doit être bien documenté

Cours bien détaillé
\(\text{Complexité Structurelle} = \frac{\sum(\text{Éléments}) \times \sum(\text{Relations})}{\text{Couplage}}\)
Indicateur de complexité
🏗️
Définition : Les diagrammes structurels montrent l'organisation statique d'un système.
🔄
Types : Classes, objets, composants, paquetages, profils, blocs (SysML).
🔗
Objectif : Représenter l'architecture statique du système et les relations entre éléments.
✅
Avantages : Compréhension de l'architecture, documentation, réutilisation.
💡
Conseil : Commencer par les diagrammes de classes pour comprendre la structure
🔍
Attention : Maintenir la cohérence entre les différents diagrammes structurels
⚡
Astuce : Utiliser des outils comme StarUML ou Papyrus pour la modélisation
📋
Méthode : Appliquer une approche itérative pour raffiner les modèles
✅
Vérification : Valider les diagrammes avec les parties prenantes
Bonnes pratiques :
  • Clarté : Utiliser des noms explicites pour les classes et composants
  • Modularité : Organiser les éléments en modules cohérents
  • Hiérarchie : Établir une structure hiérarchique logique
  • Documentation : Commenter les relations et dépendances
Règles importantes :
  • Les diagrammes structurels doivent représenter l'architecture statique du système
  • Les relations entre éléments doivent être cohérentes et documentées
  • La granularité des éléments doit être adaptée au niveau d'abstraction
  • Les diagrammes doivent être lisibles et maintenables
Concepts clés :
  • Classe : Modèle d'objet avec attributs et méthodes
  • Composant : Unité de modularité logicielle
  • Paquetage : Groupe d'éléments liés
  • Objet : Instance d'une classe à un instant donné
  • Profil : Extension d'UML pour un domaine spécifique
Diagrammes structurels Langages de modélisation