Université Paris-Sud L3 MIAGE apprentissage Année 2014-2015 Génie logiciel avancé Conception (suite) Delphine Longuet delphine.longuet@lri.fr
Objectifs Objectifs de la conception Préparer l'implémentation du diagramme de classes et des opérations Avoir une vision d'ensemble avant de programmer Intérêt de la conception abstraite, à base de modèles Échapper aux détails et contraintes des langages de programmation Vue haut niveau permettant de factoriser les comportements Documentation lisible et à part du code D. Longuet - Génie logiciel 2
Objectifs de la conception Préciser et compléter le diagramme de classes Préciser les attributs et les associations (visibilité, attributs et associations dérivés, implémentation des associations...) Ajouter les classes de contrôle et d'interface Décrire les opérations complexes Par de pseudo-code ou des diagrammes de séquence Identifier les méthodes auxiliaires nécessaires Identifier le profil précis des méthodes (paramètres, exceptions) Répartir les méthodes dans les classes Choisir les algorithmes pour implémenter les opérations Réfléchir à la réalisation des contraintes et des exigences non fonctionnelles (unicité d'un attribut, contraintes de sécurité, de performance...) D. Longuet - Génie logiciel 3
Diagrammes de séquence (conception) Objectif : Représenter les communications avec et au sein du logiciel Représentation temporelle des interactions entre les objets Chronologie des messages échangés entre les objets et avec les acteurs En conception : Décrire la réalisation des cas d'utilisation sur le système décrit par le diagramme de classes Point de vue interne sur le fonctionnement du système Description au niveau de l'instance (état du système à un instant) Description de scénarios particuliers Représentation des échanges de messages Entre les acteurs et le système, entre les objets du système De façon chronologique D. Longuet - Génie logiciel 4
Diagrammes de séquence (conception) Éléments du diagramme de séquence Acteurs Objets (instances) Messages (cas d'utilisation, appels d opération) Principes de base : Représentation graphique de la chronologie des échanges de messages avec le système ou au sein du système «Vie» de chaque entité représentée verticalement Échanges de messages représentés horizontalement D. Longuet - Génie logiciel 5
Utilisation en phase de conception Classe2 Utiliser Acteur Système Classe1 Classe3 Diagramme de cas d'utilisation Diagramme de classes du système Objectif : Description de la réalisation d'un cas d'utilisation sur le système décrit par le diagramme de classes Problème : Communication entre les acteurs et le système vu comme un ensemble d'objets D. Longuet - Génie logiciel 6
Utilisation en phase de conception Classe2 Utiliser Acteur Système Classe1 Classe3 Diagramme de cas d'utilisation Diagramme de classes du système interface Classe2 Acteur Classe1 Classe3 Communication entre acteurs et système via une interface (texte, web, physique...) D. Longuet - Génie logiciel 7
Utilisation en phase de conception Utiliser Classe2 Acteur Système Classe1 Classe3 Diagramme de cas d'utilisation Diagramme de classes du système Clavier classes d'interface classe de contrôle Classe2 Acteur Écran Interface Contrôle Classe1 Classe3 Communication entre acteurs et système via une interface (texte, web, physique...) Solution : Création de classes de contrôle et de classes d'interface qui : gèrent les interactions avec les acteurs encapsulent le résultat des opérations D. Longuet - Génie logiciel 8
Utilisation en phase de conception Classe2 Utiliser Acteur Système Classe1 Classe3 Diagramme de cas d'utilisation Diagramme de classes : Acteur : Clavier : Écran : Interface : Contrôle obj1 : Classe1 saisir() saisir() affichage affichage opération(args) retour Classe2() obj2 obj2 : Classe2 affichage affichage détruire() Diagramme de séquence du cas d'utilisation Utiliser D. Longuet - Génie logiciel 9
Éléments de base instance d'acteur instance d'une classe du diagramme de classes Jean : Acteur objet1 : Classe1 objet2 : Classe2 appel d'une opération opération1() opération2(args) retour2 ligne de vie retour1 exécution valeur renvoyée D. Longuet - Génie logiciel 10
Types de messages Message synchrone : Émetteur bloqué en attente du retour exécution bloquée : GAB : Banque vérifiersolde(compte) soldeok flèche pleine Message asynchrone : Émetteur non bloqué, continue son exécution : Ascenseur : Voyant allumer() flèche ouverte processus évoluant en parallèle pas nécessairement de retour D. Longuet - Génie logiciel 11
Création et destruction d'objet : PageWeb appel du constructeur de la classe retour obligatoire de l'instance créée Session() nouvsession nouvsession : Session exécution du constructeur destroy() destruction de l'objet (pas nécessairement à la suite d'un message) D. Longuet - Génie logiciel 12
Message réflexif : Catalogue livres : Ensemble chercher(auteur) appel d'une opération interne trier() listelivresauteurtriée D. Longuet - Génie logiciel 13
Alternative Principe : Condition à l'envoi d'un message Notation : Deux diagrammes condition a : Ascenseur p : Portes c : Cabine [demandé = courant] ouvrir() si la condition est vérifiée sinon [demandé courant] déplacer(étage) D. Longuet - Génie logiciel 14
Alternative Principe : Condition à l'envoi d'un message Notation : Deux diagrammes Bloc d'alternative alt a : Ascenseur p : Portes c : Cabine alt [démandé = courant] ouvrir() [demandé courant] déplacer(étage) D. Longuet - Génie logiciel 15
Boucle Principe : Répéter un enchaînement de messages Notation : Note Pour chaque livre du catalogue cat : Catalogue premierauteur() auteur livre : Livre opération répétée pour tous les objets mentionnés D. Longuet - Génie logiciel 16
Boucle Principe : Répéter un enchaînement de messages Notation : Note Bloc de boucle loop cat : Catalogue livre : Livre loop(livre in cat) premierauteur() auteur objets sur lesquels répéter la boucle D. Longuet - Génie logiciel 17
Référence à un autre diagramme b : Banque c : Compte cl : Client ref vérification du solde ref prélèvement agios notifié au client référence à un diagramme décrit ailleurs D. Longuet - Génie logiciel 18
Exemple Analyse Employé Effectuer un virement personnel Système de gestion bancaire Employé SGB effectuervirementp(id,noc1,noc2,mnt) true D. Longuet - Génie logiciel 19
Exemple - Conception Employé Effectuer un virement personnel Client nom : string naissance : Date 1 1..* Compte numéro : int devise : Devise solde : float 1 1 Système de gestion bancaire 0..* 0..* Virement montant : float date : Date Employé SGB effectuervirementp(id,noc1,noc2,mnt) true D. Longuet - Génie logiciel 20
Exemple - Conception Employé Effectuer un virement personnel Client nom : string naissance : Date 1 1..* Compte numéro : int devise : Devise solde : float 1 1 Système de gestion bancaire 0..* 0..* Virement montant : float date : Date : Employé : SGB EnsClients effectuervirementp(id,noc1,noc2,mnt) ref ref chercher client chercher comptes c : Client ref créer virement v : Virement true ref effectuer virement D. Longuet - Génie logiciel 21
Exemple - Conception : Employé : SGB EnsClients effectuervirementp(id,noc1,noc2,mnt) chercher(id) client compte(noc1) c1 compte(noc2) c2 client : Client Virement(c1,c2,mnt) virement effectuer() virement : Virement retirer(mnt) true déposer(mnt) c1 : Compte c2 : Compte true true true D. Longuet - Génie logiciel 22
Exemple - Conception Diagramme de classes complété avec les opérations nécessaires Client nom : string 1 1..* Compte numéro : int naissance : Date devise : Devise compte(no : int) : Compte solde : float * * déposer(mnt : float) : bool retirer(mnt : float) : bool 1 1 1 1 0..* 0..* SGB Virement effectuervirementp() : bool chercherclient(id : int) : Client montant : float date : Date effectuer() : bool D. Longuet - Génie logiciel 23
Messages entre acteurs et interface Quelques règles «Fausses» opérations liées au cas d'utilisation (même nom) Arguments (saisis) et valeurs de retour (affichées) simples : texte, nombre Messages au sein du système Opérations du diagramme de classes Si message de obja : ClasseA vers objb : ClasseB, alors opération du message dans ClasseB D. Longuet - Génie logiciel 24