Utiliser UML dans les projets Java Daniel Tschirhart. UML pour les projets. Révision 1.0
Préparer son projet
Cahier des charges Essayer de privilégier la description du QUOI avant celle du COMMENT Le QUOI et plus simple à comprendre que le COMMENT Dessiner une maquette de l IHM et dérouler un scénario. 3
Cahier des charges : horloge Horloge analogique Ou numérique Elle se synchronise automatiquement sur l heure GMT. On peut choisir le fuseau horaire On peut choisir l heure d été/hivers 4
Exemple : Horloge universelle synchronisée par un serveur NTP Horloge synchronisée par l horloge atomique de Boulder (Colorado). L horloge se resynchronise à minuit. On peut choisir les fuseaux horaires. On peut choisir manuellement l heure d été Maquette de l horloge Peut être dessinée à la main 5
Diagramme de cas d utilisation (DCU) Daniel Tschirhart. UML pour les projets. Révision 1.0 Un cas d utilisation est un condensé d une activité, décrit dans le dossier technique, que l utilisateur (l acteur) peut exercer avec le logiciel. Cette activité doit obligatoirement apporter une plus value à l acteur qui déclenche le cas d utilisation. 6
Diagramme de cas d utilisation (DCU) Daniel Tschirhart. UML pour les projets. Révision 1.0 Une activité doit s énoncer à l aide d un verbe + complément. Les traits qui relient l acteur au(x) CU(s) ne doivent pas être décorés par du texte car ils sont déjà porteur de l information suivante: Quel acteur principal à déclenche le CU pour obtenir la plus value escomptée. Quel acteur secondaire participe à l activité désignée par le CU 7
Diagramme de cas d utilisation (DCU) Daniel Tschirhart. UML pour les projets. Révision 1.0 On peut préparer le DCU à l aide du tableau suivant Actions que l on peut faire sur le dispositif Acteur humain (acteur principal) Acteur matériel (acteur secondaire) 8
Diagramme de cas d utilisation (DCU) Daniel Tschirhart. UML pour les projets. Révision 1.0 On peut préparer le DCU à l aide du tableau suivant Actions que l on peut faire sur le dispositif Acteur humain (acteur principal) Choisir le fuseau horaire utilisateur - Acteur matériel (acteur secondaire) 9
Diagramme de cas d utilisation (DCU) Daniel Tschirhart. UML pour les projets. Révision 1.0 On peut préparer le DCU à l aide du tableau suivant Actions que l on peut faire sur le dispositif Acteur humain (acteur principal) Choisir le fuseau horaire utilisateur - Choisir l heure d été / hivers utilisateur - Acteur matériel (acteur secondaire) 10
Diagramme de cas d utilisation (DCU) Daniel Tschirhart. UML pour les projets. Révision 1.0 On peut préparer le DCU à l aide du tableau suivant Actions que l on peut faire sur le dispositif Acteur humain (acteur principal) Choisir le fuseau horaire utilisateur - Choisir l heure d été / hivers utilisateur - Acteur matériel (acteur secondaire) Incrémenter les h, m, s - Mécanisme utilisant base de temps du calculateur 11
Diagramme de cas d utilisation (DCU) Daniel Tschirhart. UML pour les projets. Révision 1.0 On peut préparer le DCU à l aide du tableau suivant Actions que l on peut faire sur le dispositif Acteur humain (acteur principal) Choisir le fuseau horaire utilisateur - Choisir l heure d été / hivers utilisateur - Acteur matériel (acteur secondaire) Incrémenter les h, m, s - Mécanisme utilisant base de temps du calculateur Resynchroniser l horloge - Serveur NTP de Boulder 12
Diagramme de cas d utilisation de l horloge Daniel Tschirhart. UML pour les projets. Révision 1.0 C est moi Choisir le fuseau horaire Utlisateur Choisir l heure d été / hivers Incrémenter les h, m, s Mécanisme utilisant base de temps du calculateur Resynchroniser l horloge Serveur NTP de Boulder 13
Remarques sur les DCU Un DCU ne dit pas si les CU seront réalisés par un seul logiciel ou plusieurs logiciels séparés. Dans le cas présent, l horloge est évidement un seul logiciel. 14
Diagramme de classes d analyse On réfléchis au problème posé Daniel Tschirhart. UML pour les projets. Révision 1.0 On ne détaille pas les classes au de la de l indispensable (pas de méthodes, pas d attributs) 15
Diagramme de classes d analyse Une classe = un nom commun Daniel Tschirhart. UML pour les projets. Révision 1.0 Un lien entre deux classes = un verbe + éventuellement un complément d objet 16
Ce qu il ne faut pas faire Utilisateur Affichage Choix HE Affichage Données Choix utilisateur Mécanisme Code Recherche du site Internet 17
Ce qu il faut faire. Classe principale : IHM Daniel Tschirhart. UML pour les projets. Révision 1.0 IHM Horloge 18
Le mécanisme IHM L horlogerie Horloge Mécanisme 19
La base de temps IHM L horlogerie Horloge Mécanisme Le tic tac Timer 20
La référence du temps HeureGMT Accède au serveur NTP IHM L horlogerie Horloge Mécanisme Le tic tac Timer 21
Calcul de l heure HeureGMT Accède au serveur NTP IHM L horlogerie Horloge démarrer Mécanisme Le tic tac Timer 22
Calcul de l heure HeureGMT Accède au serveur NTP IHM L horlogerie Horloge démarrer Mécanisme Régler période 1s démarrer Le tic tac Timer 23
Calcul de l heure HeureGMT Accède au serveur NTP IHM L horlogerie Horloge démarrer Mécanisme Régler période 1s démarrer Le tic tac Timer 24
Affichage de l heure HeureGMT Accède au serveur NTP IHM L horlogerie Horloge démarrer Mécanisme MAJ et obtenir heure Régler période 1s démarrer Le tic tac Timer 25
Affichage de l heure HeureGMT Accède au serveur NTP IHM L horlogerie Obtenir l heure GMT Horloge démarrer Mécanisme MAJ et obtenir heure Régler période 1s démarrer Le tic tac Timer 26
Affichage de l heure HeureGMT Accède au serveur NTP IHM L horlogerie Horloge démarrer Mécanisme l horloge devra instancier le mécanisme en lui passant sa référence. Le timer utilisera cette référence pour appeler un méthode de l horloge permettant d afficher l heure MAJ et obtenir heure Régler période 1s Timer démarrer Le tic tac 27
Synchronisation de l horloge HeureGMT Accède au serveur NTP IHM L horlogerie Obtenir l heure GMT Horloge démarrer Mécanisme MAJ et obtenir heure Régler période 1s démarrer Le tic tac Timer 28
Synchronisation de l horloge HeureGMT Accède au serveur NTP IHM L horlogerie Obtenir l heure GMT Horloge démarrer Mécanisme MAJ et obtenir heure Régler période 1s démarrer Le tic tac Timer 29
Synchronisation de l horloge HeureGMT Accède au serveur NTP IHM L horlogerie Obtenir l heure GMT Horloge démarrer Mécanisme l horloge devra instancier le mécanisme en lui passant sa référence. L HeureGMT devra être instancée en lui passant la référence de l horloge recue par le mécanisme MAJ et obtenir heure Régler période 1s démarrer Le tic tac Timer 30
Choix du fuseau horaire HeureGMT Accède au serveur NTP IHM L horlogerie Obtenir l heure GMT Horloge démarrer Mécanisme MAJ et obtenir heure Régler période 1s démarrer Le tic tac Choise Liste déroulante Timer 31
Classe Timer? 32
Classe Timer 33
Création d'un objet Timer 34
Affichage et calcul de l heure 35
Diagramme de classes de conception. Affichage et calcul de l heure Défini à l instanciation Start() hms() afficheheure(h,m,s) 36
Synchroniser l horloge : Connexion à un serveur NTP Exemple Socket1 Ouverture du socket Lecture de la donnée fournie par le serveur 37
Diagramme de classes de conception. Obtention de l heure GMT 38
39
Lecture et mémorisation des fuseaux horaires 40
Lecture et mémorisation des fuseaux horaires (GMT+00:00) Casablanca (GMT+00:00) Heure de Greenwich : Dublin, Édimbourg, Lisbonne, Londres (GMT+00:00) Monrovia, Reykjavik (GMT+01:00) Afrique centrale - Ouest (GMT+01:00) Amsterdam, Berlin, Berne, Rome, Stockholm, Vienne (GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague (GMT+01:00) Bruxelles, Copenhague, Madrid, Paris (GMT+01:00) Sarajevo, Skopje, Varsovie, Zagreb (GMT+02:00) Amman (GMT+02:00) Athènes, Bucarest, Istanbul (GMT+02:00) Beyrouth (GMT+02:00) Harare, Pretoria (GMT+02:00) Helsinki, Kiev, Riga, Sofia, Tallinn, Vilnius (GMT+02:00) Jérusalem (GMT+02:00) Le Caire (GMT+02:00) Minsk (GMT+02:00) Windhoek (GMT+03:00) Bagdad (GMT+03:00) Koweït, Riyad (GMT+03:00) Moscou, St. Petersbourg, Volgograd (GMT+03:00) Nairobi (GMT+03:00) Tbilissi (GMT+03:30) Téhéran (GMT+04:00) Abu Dhabi, Muscat (GMT+04:00) Baku (GMT+04:00) Erevan (GMT+04:30) Kaboul (GMT+05:00) Iekaterinbourg (GMT+05:00) Islamabad, Karachi 41
Diagramme de classes de conception. Lecture et mémorisation des fuseaux horaires 42
Lecture et mémorisation des fuseaux horaires Daniel Tschirhart. UML pour les projets. Révision 1.0 43
Diagramme de classes complet 44
Diagramme de séquences Les diagrammes de séquences permettent de représenter les collaborations entre objets selon un point de vue temporel. La représentation se concentre sur l'expression des interactions. Les diagrammes de séquences peuvent servir à illustrer un cas d'utilisation. 45
Syntaxe des diagrammes de séquences L'ordre d'envoi d'un message est déterminé par sa position sur un axe vertical; le temps s'écoule "de haut en bas" de cet axe. La disposition des objets sur l'axe horizontal n'a pas de conséquence pour la sémantique du diagramme. 46
Diagramme de séquences (2) 47
Signification des messages message simple Message dont on ne spécifie aucune caractéristique d'envoi ou de réception particulière. message minuté (timeout) Bloque l'expéditeur pendant un temps donné (qui peut être spécifié dans une contrainte), en attendant la prise en compte du message par le récepteur. L'expéditeur est libéré si la prise en compte n'a pas eu lieu pendant le délai spécifié. message synchrone Bloque l'expéditeur jusqu'à prise en compte du message par le destinataire. Le flot de contrôle passe de l'émetteur au récepteur (l'émetteur devient passif et le récepteur actif) à la prise en compte du message. message asynchrone N'interrompt pas l'exécution de l'expéditeur. Le message envoyé peut être pris en compte par le récepteur à tout moment ou ignoré (jamais traité). message dérobant N'interrompt pas l'exécution de l'expéditeur et ne déclenche une opération chez le récepteur que s'il s'est préalablement mis en attente de ce message. 48
Tests et itérations dans les diagramme de séquences Ce fragment de diagramme de séquence (sd) illustre l emploi de 3 fragments UML2 : - l option (opt) qui correspondant en pseudo-code à l instruction «SI condition ALORS FINSI» - l alternative (alt) qui correspondant en pseudo-code à l instruction «SI condition ALORS SINON FINSI» - la boucle (loop) qui correspondant en pseudo-code à l instruction «TANT QUE condition ALORS FIN TANT QUE» sd a : AAA message0 b : BBB Pseudo-code équivalent b.message0() SI condition1 ALORS b.message1() FINSI loop opt [ condition1 ] message1 alt message2 [ condition d itération ] [ condition2 ] TANT QUE condition d itération FAIRE SI condition2 ALORS b.message2() message3() SINON b.message4() FINSI message5() FIN TANT QUE message3 message4 [ sinon ] message5 49
Diagramme de séquence de la méthode Horloge.initialize() : Horloge initialize() créer() labeltime : Label créer(41,32,205,53) setbounds(r) r : Rectangle settext("") setfont(créer("", Font.BOLD, 48)) f : Font setlayout(null) setbackground(color.green) setsize(301, 134) settitle("horloge Universelle") add(labeltime) cfh = getchoicefuseauhoraire() add(cfh) créer Objet anonyme d'une classe anonyme dérivée de WindowAdapter qui redéfinit la méthode windowclosing() pour terminer l'application. oanonyme : Anonyme1 addwindowlistener(obj Anonyme) retour 50
Diagramme de séquence du lancement Daniel Tschirhart. de l'horloge UML pour les projets. Révision 1.0 :programme_principal créer() :Horloge Frame() initialize() choicefuseauhoraire : Choice Cette séquence génère une exception si le fichier n'est pas trouvé. Un message d'erreur est alors affiché dans le composant choicefuseauhoraire. créer("fuseautriés.txt") f : File créer(f) fr : FileReader créer(fr) in : BufferedReader loop break line = readline() [line == null] add(line) créer(this) : Mecanisme start() retour setvisible(true) 51
Diagramme de séquence du constructeur de Mécanisme créer (thehorloge) :Mécanisme Objet anonyme de la classe Mécanisme Message trouvé : Cela veut simplement dire que l'objet appelant ne nous intéresse pas ici. mémoriser thehorloge La classe HeureGMT ne possède qu'une méthode statique get(). HeureGMT L'appel de la méthode privée CreateTimer est ici mis en exergue par 3 éléments : - l'auto-message "createtimer", - la barre d'activation grisée, qui se détache de la ligne de vie de l'objet :Mécanisme - l'auto-message "retourne t" qui indique la fin de l'exécution de createtimer et la reprise du contrôle dans le constructeur de Mécanisme. time = get(thehorloge) timer = createtimer() créer() al : ActionListener Le constructeur ne fait alors rien d'autre que de rendre le contrôle à son appelant. Message perdu : Cela veut simplement dire que l'objet appelant ne nous intéresse pas ici créer(1000, al) retourne t t : Timer retourne Ligne de vie de l'objet :Mécanisme 52
Diagramme de séquence montrant la lecture de l'heure GMT sur le site de Daniel Boulder Tschirhart. UML pour les projets. Révision 1.0 1 objet Horloge La classe HeureGMT et sa méthode de classe get (static) : Horloge HeureGMT get(this) Bloc try-catch bâti à l'aide d'un cadre d'interaction stéréotypé. Ceci n'est pas de l'uml normalisé mais permet de représenter utilement une structure de contrôle utilisée en C++, java et C#. try créer("time-a.timefreq.bldrdoc.gov",13) is = getinputstream() s : Socket créer(is) isr : InputStreamReader créer(isr) in : BufferReader loop line = readline() break [line == null] opt [line.lenght > 30] ts = extrait l'heure de la ligne close() close() catch [UnknownHostException [UnknownHostException e] e] settitle("serveur non trouvé") [IOException e] settitle("pas de mise à l'heure") retourne ts 53
Construire les diagrammes UML pour le projet Les projets devrons comporter au minimum Un ou plusieurs diagrammes de cas d utilisation Les diagrammes ce classes d analyse montrant les interactions entre les classes. Un ou plusieurs diagrammes de classe de conception. Un ou plusieurs diagramme de séquences que vous jugerez digne d intérêt pour la compréhension de votre projet. 54
Construire les diagrammes UML pour le projet Les projets devrons comporter au minimum Un ou plusieurs diagrammes de cas d utilisation Les diagrammes ce classes d analyse montrant les interactions entre les classes. Un ou plusieurs diagrammes de classe de conception. Un ou plusieurs diagramme de séquences que vous jugerez digne d intérêt pour la compréhension de votre projet. 55
Outils pour construire les diagrammes UML On pourra utiliser Visual Paradigme téléchargeble avec ce lien : http://www.visual-paradigm.com/download/vpuml.jsp?edition=ce Microsoft Visio + stencils UML 2 disponibles dans le répertoire OutilsProjets sur le serveur de l école. 56
Soutenance 1. D abord présenter le contexte du problème 2. Présenter le problème. 3. Puis votre solution 4. Et enfin les informations les moins inportantes 57