====== Diagramme de séquence en analyse ======
Attention en ligne vous trouverez un très grand nombre de diagrammes de séquence incohérents !
{{:2017_2018:s2:td:courses-2318039_960_720.jpg?100|}}{{:2017_2018:s2:td:4-umlsequences-2018.pdf|Cours sur les diagrammes de séquence}}
Les diagrammes de séquence en analyse permettent de mieux comprendre l'application à réaliser. Ils restent "superficiels"
dans la mesure où ils ne visent pas à mettre en avant l'architecture du système, à l'instar des diagrammes de classes qui décrivent le domaine.
Plus tard et surtout en 2e année nous étudierons ces diagrammes dans un objectif de détermination de l'architecture du système et de "codage". Dans ce cas, nous parlerons de **diagrammes en conception** qui seront bien plus détaillés.
===== Je comprends (15mn) =====
"Les diagrammes de séquences sont la représentation graphique des interactions entre les acteurs et le **système** (pas entre acteurs!!) selon un ordre chronologique".
Ces diagrammes doivent vous aider à mieux comprendre qui "fait quoi" et par conséquence qui dans votre code portera les comportements.
{{:2016_2017:s2:td:sequence_2017-02-08_a_15.47.14.png?500|}}
Relativement au diagramme de séquence ci-dessus répondez aux questions suivantes :
- Quels sont les acteurs?
- Comprenez-vous le scénario?
- Quelle structure correspond à une boucle? à une condition?
- Quel objet est créé?
- Qui exécute le comportement de "réserver une chambre à une date donnée" ?
- Qui répond à "available(date)" ?
- Qui fait appel à "available(date)" ?
- Qui exécute "lookForAvailableHotels(Place)" ?
- Définissez les classes correspondantes et les méthodes qui leur sont associées.
- Que devez-vous modifier pour que les "éléments" clef correspondent à des classes ?
- Quelles méthodes devraient implémenter ces classes?
===== Je m'implique, J'apprends (45 mn) =====
* Q1 : **Représentez le diagramme de séquence Système** correspondant au cas d'utilisation
//(3) Un internaute s'inscrit sur le site pour devenir client// de la galerie d'art
Nous le décomposons ainsi :
- L'internaute saisit son nom, son prénom, son adresse email;
- Le système vérifie que ces informations sont bien construites;
- Le système enregistre le nouveau client;
- Le système signale au client que tout s'est bien passé.
* Q2 : **Enrichissez le diagramme de séquence Système** et visualisez la présence de flots alternatifs par des notes //(comme dans le slide 28 par exemple//):
* A1 : Données non valides \\
* A2 : Client déjà enregistré \\
* Q3 : **Représentez le diagramme de séquence Système** correspondant au cas d'utilisation //Acheter des oeuvres d’art//
Nous partons du principe que l'utilisateur a déclenché ce scénario précédemment, ce qui a eu pour conséquence de créer le panier puis de le connecter au début du scénario ci-après.
- Le système propose les oeuvres d’art.
- Le client sélectionne des oeuvres d’art.
- Chaque oeuvre est placée dans le panier par le système
- Le client demande à acheter.
- Le contenu du panier est réservé dans les stocks((Vous pouvez affiner ici la notion de Stock!!)).
- Le système demande au système de paiement l’encaissement du panier.
- Le système de paiement valide le paiement et retourne une facture.
- Le système enregistre le retrait du stock.
- Le système confirme l’achat au client
* Q4 : **Complétez le diagramme de classe** du [[2015_2016:s2:td:td_domaine|TD 3]] pour prendre en compte les nouveaux objets apparus par votre analyse du diagramme de séquence.
* Q5 : Peut-on avoir payé sans que l'oeuvre soit retirée du stock ?
* Q6 : Quel est le meilleur moment pour ajouter de la pub sur le site des galerie d'art relativement à ce diagramme de séquence ?
====== Partie évaluation du TD (1h) =====
[[2017_2018:s2:td:devoirs:sequence|Devoir sur les diagrammes de séquence à faire seul en séance]]