Langage de modélisation unifié UML en informatique de gestion
Transcription
Langage de modélisation unifié UML en informatique de gestion
Langage de modélisation unifié UML P.-A. Sunier 25 mars 2013 http://lgl.isnetne.ch Table des matières 1 Propos liminaires ................................................................................................................ 2 2 Modèle de cas d'utilisation ................................................................................................. 3 3 2.1 Diagramme de cas d'utilisation .................................................................................... 3 2.2 Description du comportement de cas d'utilisation ....................................................... 5 2.2.1 Comportement perçu par l'acteur – Boîte noire ................................................... 6 2.2.2 Comportement réalisé à l'interne – Boîte blanche ................................................ 7 Modèle d'activité ................................................................................................................ 8 3.1 Choix d'illustration ...................................................................................................... 8 3.2 Diagramme d'activité ................................................................................................... 8 3.3 Organisation des flux ................................................................................................. 11 3.3.1 Choix et débranchements ................................................................................... 11 3.3.2 Optionalités et jointures ..................................................................................... 11 3.4 Choix organisationnels de l’entreprise ...................................................................... 12 4 Modèle d'interaction ......................................................................................................... 13 5 Modèle de machine à états ............................................................................................... 13 6 5.1 Les états ..................................................................................................................... 13 5.2 Les événements.......................................................................................................... 17 5.3 Actions et activités propres à un état ......................................................................... 18 5.4 Les transitions ............................................................................................................ 19 5.5 Eléments de factorisation........................................................................................... 20 5.6 Les états composites .................................................................................................. 21 5.6.1 Etat non orthogonal ........................................................................................... 21 5.6.2 Etat orthogonal ou concurrent ............................................................................ 23 Bibliographie .................................................................................................................... 25 1 Propos liminaires Nous invitons le lecteur à prendre connaissance de notre document Bases du langage de modélisation unifié UML [PAS-8]; ce document fait office d'introduction à UML et à notre vision de son utilité pour le développement de logiciels de gestion. Nous nous limitons volontairement dans cette présentation du langage UML aux modèles et diagrammes qui nous semblent les plus pertinents en informatique de gestion. Langage de modélisation unifié UML 2/25 P-A. Sunier 2 Modèle de cas d'utilisation Le modèle de cas d'utilisation permet de spécifier les fonctions attendues d'un système. Un diagramme de cas d'utilisation montre le système offrant des services à son environnement; l'environnement est représenté par des acteurs. Les termes fonctions et services utilisés ci-avant sont des synonymes de Cas d'utilisation qui est peut-être un terme obscure. 2.1 Diagramme de cas d'utilisation Un diagramme de cas d'utilisation permet de visualiser synthétiquement les services offerts par un système; toutefois, un ou des diagrammes ne suffisent pas, il y aura lieu de décrire avec précision le comportement du cas d'utilisation. Si le seul nom donné à un acteur ne suffit pas à expliquer son rôle ou sa responsabilité, il y a lieu de le documenter. Figure 1- Diagramme représentant les services offert par le SII de l'institution Arc en ciel Langage de modélisation unifié UML 3/25 P-A. Sunier Avant d'expliquer la lecture du diagramme de la Figure 1, il nous faut décrire Arc en Ciel et son organisation de gestion des événements. Arc en Ciel est une institution qui permet à de jeunes gens légèrement handicapés d’acquérir une formation professionnelle de base. En plus de la formation professionnelle, Arc en Ciel assure un encadrement sociologique et éducatif. Tout événement significatif impliquant un jeune ou un groupe de jeunes est saisi par le collaborateur ayant connaissance dudit événement Lorsqu'un événement est de gravité importante le SII doit en informer les membres de la direction de l'institution. Tout collaborateur peut participer à une discussion initiée par un événement en émettant une ou des remarques. Naturellement, seuls les collaborateurs dûment autorisés peuvent créer des événements et émettre des remarques. Dans notre diagramme de la Figure 1, nous pouvons observer les éléments essentiels de modélisation: 1 Le conteneur nommé System par défaut et représentant la partie du SII que nous avons modélisé sous forme de cas d'utilisation. Les cas d'utilisation qui sont les fonctions ou services offerts par le SII. Les cas d'utilisation peuvent être spécialisés; Saisir un év. individuel est une spécialisation de Saisir un événement. Saisir un événement est une généralisation de Saisir un év. individuel et de Saisir un év. collectif. Les acteurs qui sont les bénéficiaires directs ou indirects des services offert par le SII. Les acteurs sont qualifiés de principal lorsqu'ils sollicitent le SII et en obtiennent un résultat; l'acteur Collaborateur est l'acteur principal du cas d'utilisation Saisir un év. individuel et par contre, l'acteur f() de direction en est un acteur secondaire. Les acteurs peuvent être spécialisés tout comme les cas d'utilisation; une f() de direction est un1 Collaborateur. Les liens de communication qui permettent aux acteurs principaux d'invoquer les cas d'utilisation, à leur tour, les cas d'utilisation peuvent donner un résultat aux acteurs secondaires. Les associations «include» et «extend» entre cas d'utilisation. L'association «include» oblige à utiliser un cas d'utilisation; le cas d'utilisation Plus rigoureusement, il y aurait lieu de dire: "Une f() de direction est une sorte de collaborateur". Langage de modélisation unifié UML 4/25 P-A. Sunier Emettre une remarque doit obligatoirement faire appel au cas d'utilisation S'identifier. L'association «extend» va étendre un cas d'utilisation si la condition d'extension est satisfaite; le cas d'utilisation Saisir un événement va s'étendre à Informer f() de direction si l'événement est grave. 2.2 Description du comportement de cas d'utilisation Le comportement de cas d'utilisation peut être décrit en tant que boîte noire, ce que l'acteur perçoit du comportement et en tant que boîte blanche, ce que le système réalise comme comportement. Les deux visions du comportement peuvent être décrites textuellement ou à l'aide de modèles/diagrammes dynamiques. A notre sens, un diagramme de séquence est un bon choix pour montrer le comportement sous forme de boîte noire et un diagramme de communication ou d'activité est pertinent pour montrer le comportement sous forme de boîte blanche. Pour illustrer ce concept de boîte noire et de boîte blanche, nous reprenons le cas ArcPizzas du document d'introduction [PAS-8]. Figure 2 - Diagramme du cas d'utilisation Dispatcher commande d'ArcPizzas Langage de modélisation unifié UML 5/25 P-A. Sunier 2.2.1 Comportement perçu par l'acteur – Boîte noire Le diagramme de séquence cicontre montre le service offert par le système lorsque l'acteur Caissier utilise le cas d'utilisation Attribuer livreur de la Figure 2. Nous ne montrons que: - les messages échangés entre l'acteur et le système; - les messages que le système s'envoie à lui-même pour répondre aux sollicitations de l'acteur. L'extrême simplicité du diagramme de séquence, boîte noire, permet de nous concentrer sur les 2 aspects essentiels que sont: - les résultats attendus par l'acteur (les messages en retour du système); - les opérations que devra effectuer le système pour répondre aux sollicitations de l'acteur (les messages que s'envoie le système). Ce diagramme est utilisé dans le dialogue avec la maîtrise d'ouvrage (utilisateurs) pour convenir de ce que le système devra offrir comme service. Figure 3 - Diagramme de séquence structuré du cas d'utilisation Attribuer livreur Langage de modélisation unifié UML 6/25 P-A. Sunier 2.2.2 Comportement réalisé à l'interne – Boîte blanche Le diagramme de communication ci-dessous montre les éléments constitutifs du système qui vont réaliser le service spécifié par le diagramme de séquence de la Figure 3. Les messages échangés entre l'acteur et le système sont pris en charge par un écran; les messages internes au système sont représentés par une collaboration entre formulaires, contrôleurs et entités de données. Figure 4 - Diagramme de communication montrant la réalisation du cas d'utilisation Attribuer livreur Dans un diagramme de communication pratiqué en analyse2, nous ne montrons que 3 "sortes" d'objets en plus des acteurs: - Les interfaces hommes/machines3 (boundary) qui permettent aux acteurs d'interagir avec le système (informatique). Les contrôleurs (controler) qui vont réaliser les traitements nécessaires à répondre aux sollicitations des acteurs. Les entités (entity) qui vont assurer la persistance des données. Ce diagramme est utilisé dans le dialogue au sein de la maitrise d'œuvre (analystes, concepteurs, développeurs) pour convenir de la manière dont le système sera réalisé et comment les différentes parties communiquent. 2 3 Spécification des modalités de réalisation "informatique" d'un cas d'utilisation. Ecrans, claviers, souris, formulaires… Langage de modélisation unifié UML 7/25 P-A. Sunier 3 Modèle d'activité Le modèle d'activité représente la dynamique interne ou le comportement, sous forme d'enchaînement d'activités et/ou d'actions d'un processus, d'un traitement ou de manière plus générale de toute activité que l'on désire décrire. 3.1 Choix d'illustration A notre sens et en informatique de gestion, le diagramme d'activité est particulièrement pertinent pour décrire un cas d'utilisation métier. Lorsque l'on parle de cas d'utilisation métier, le système auquel l'on s'intéresse n'est pas le système d'information de l'entreprise mais, l'entreprise en tant que système et tout particulièrement son système opérant qui est le métier de l'entreprise; les acteurs proviennent de l'environnement de l'entreprise, ce sont ses clients, fournisseurs, partenaires…; les cas d'utilisation sont les services offerts par l'entreprise à son environnement. Figure 5 - Entreprise-système et son soussystème d'information 3.2 Diagramme d'activité Pour présenter le modèle d'activité, nous reprenons le cas pratique ArcPizzas [PAS-20] et plus particulièrement le diagramme d'activité décrivant le cas d'utilisation Commander une pizza qui permet à un client de passer une commande. Ce diagramme, Figure 6, est particulièrement intéressant car il nous permet de décrire les choix organisationnels d'ArcPizzas permettant de faire le lien entre le traitement de l'information comme "recevoir une commande d'un client" et les opérations métier comme "fabriquer une pizza par le pizzaiolo". Nous nous appuyons sur la Figure 6 pour décrire les éléments essentiels du modèle d'activité: Les activités ou actions qui sont des parties de l'activité globale qu'il s'agit de décrire; sans que cette terminologie ne soit utilisée, on pourrait dire qu'une activité est décrite dans un diagramme sous forme de sous-activités et actions reliées entre elles par des flux de contrôle ou d'objets. L'activité Prendre commande guichet, sous la responsabilité du caissier, est une partie de l'activité déployée par l'entreprise pour réaliser le cas d'utilisation Commander une pizza. Langage de modélisation unifié UML 8/25 P-A. Sunier Les flux4 de contrôle qui montrent le passage d'une activité/action à une autre. De par les choix organisationnels d'ArcPizzas, nous n'avons pas de flux de contrôle entre activités/actions. Par contre, nous développons cela plus en détail au chapitre 0. Figure 6 - Diagramme d'activité (partiel) décrivant le cas d'utilisation métier Commander une pizza Les objets qui vont faire office de "relai" pour passer d'une activité à une autre; l'objet Ticket à fabriquer va servir de relai entre le SII et le pizzaiolo. Les flux d'objets qui montrent la consommation, production ou transformation d'objets par les activités/actions; le SII produit l'objet Ticket à fabriquer et le transmet au pizzaiolo. Les travées5 qui représentent les responsabilités en charge de chacune des activités/actions; les responsabilités et la répartition des activités/actions relèvent de choix d'organisation du système considéré; il appartient au caissier (responsabilité Caissier) d'attribuer (activité Attribuer un livreur) un livreur pour les commandes à livrer. 4 Certains auteurs parlent de flots au lieu de flux; à notre sens, le terme de flux nous semble approprié pour le contrôle et le terme flot pour les objets. Par souci de simplification et par habitude, nous retenons le terme de flux autant pour le contrôle que pour les objets. 5 Swimlane en anglais. Langage de modélisation unifié UML 9/25 P-A. Sunier Les choix qui permettent de séparer un flux sur la base de critères logiques; le choix Livraison à domicile? va diriger le flux de contrôle vers l'activité Livrer domicile si la réponse est Oui et Livrer client guichet si la réponse est Non. Oui et Non sont des gardes; une garde autorise ou pas le flux de contrôle ou d'objet; une garde est notée entre crochets, par exemple [Oui]. Les fusions ou optionalités6 qui permettent de fusionner des flux pour simplement rendre les diagrammes plus faciles à lire. Les flux sortants des activités Prendre commande guichet et Prendre commande téléphone mènent tout deux à la création de l’objet Commande ; pour éviter de surcharger le diagramme, nous mettons le symbole de fusion pour n’avoir qu’un seul flux menant à Commande. Les débranchements7 qui permettent de paralléliser des flux de contrôle ou d’objets. Le débranchement représenté dans la travée Client permet au caissier de délivrer la pizza au client sans devoir simultanément lui donner le ticket ; le ticket peut être donné avant, après ou en même temps. Les jointures8 qui obligent la présence de l’ensemble des flux entrants pour passer la barre de jointure ; en sortie de jointure, il peut y avoir plusieurs flux sortants. La jointure représentée dans la travée Pizzaiolo oblige le pizzaiolo à ne fabriquer une pizza seulement s'il dispose du ticket de fabrication et des ingrédients nécessaires. Les nœuds de début et de fin qui fixent les bornes d'un diagramme d'activité. Il y a toujours un nœud de début mais pas nécessairement de fin; il peut y avoir graphiquement plusieurs nœuds de fin pour ne pas alourdir la représentation graphique. 6 Merge en anglais Fork en anglais 8 Join en anglais 7 Langage de modélisation unifié UML 10/25 P-A. Sunier 3.3 Organisation des flux 3.3.1 Choix et débranchements OU Sortie ET Sortie La sortie d'un choix ne peut se faire que par les flux dont la garde est franchissable. En sortie du choix Livraison à domicile?, le contrôle ira vers l'activité: - Livrer domicile si la réponse est Oui; - Livrer client guichet si la réponse est Non. La sortie d'un débranchement amène à une exécution parallèle de chacun des flux sortants. En sortie du débranchement représenté dans la travée Client, les objets Ticket et Pizza sont délivrés parallèlement et sans préséance entre eux. 3.3.2 Optionalités et jointures OU Entrée ET Entrée Langage de modélisation unifié UML L'entrée dans une fusion ou optionalité ne requiert qu'un des flux parmi ceux possibles. Il suffit d'un des deux flux de contrôle sortants des activités Prendre commande guichet ou Prendre commande téléphone pour que la fusion menant à la création d'une commande soit franchissable. L'entrée dans une jointure ne peut se faire que lorsque tous les flux entrants sont présents. La jointure fait office de synchronisation entre activités et/ou objets. La jointure représentée dans la travée Pizzaiolo oblige le pizzaiolo à ne fabriquer une pizza qu’à condition qu’il dispose du ticket de fabrication et des ingrédients nécessaires. 11/25 P-A. Sunier 3.4 Choix organisationnels de l’entreprise Figure 7 - Flux d'objet (communication asynchrone) Nous avons retenu comme choix d'organisation du travail du pizzaiolo de lui donner les ordres de fabrication par l'intermédiaire d'un ticket. Le fait de passer par cet objet Ticket permet une communication asynchrone entre le pizzaiolo et le SII ou le caissier; cette communication asynchrone permet au pizzaiolo de ne pas être dérangé pendant qu'il confectionne une pizza et au caissier de ne pas dépendre de la disponibilité du pizzaiolo pour transmettre sa commande. La Figure ci-contre montre un flux de contrôle entre le caissier et le pizzaiolo. Les deux collaborateurs doivent se synchroniser pour que le caissier puisse passer la commande au pizzaiolo. La synchronisation de communication impliquerait très souvent que: - le caissier dérange le pizzaiolo; - le caissier doit attendre que le pizzaiolo soit disponible. Figure 8 - Flux de contrôle (communication synchrone) Langage de modélisation unifié UML 12/25 P-A. Sunier 4 Modèle d'interaction Nous prions le lecteur de se référer au chapitre Modèle d'interaction de notre cours Bases du langage de modélisation unifié - UML [PAS-8] pour une explication du modèle d'interaction et de sa déclinaison en modèle de séquence ou modèle de communication. 5 Modèle de machine à états Nous prions le lecteur de se référer au chapitre Modèle de machine à état de notre cours Bases du langage de modélisation unifié - UML [PAS-8] pour une explication des concepts de base du modèle de machine à états. Ci-après, nous nous attacherons plus particulièrement à décrire les éléments particuliers du modèle et les modalités de l'utilisation de ce modèle en informatique de gestion. Nous utiliserons très souvent dans la suite de ce chapitre le terme "objet"; dans notre vision d'UML utilisé en informatique de gestion, le terme "objet" est à assimiler à "occurrence d'entité". 5.1 Les états L'état d'un objet résulte de la conjonction de la valeur de ses attributs et l'existence ou non de liens vers d'autres objets. Figure 9 - Partie du MCD relatif aux commandes Langage de modélisation unifié UML 13/25 P-A. Sunier A propos du MCD de la Figure 9: Lors de la création d'une commande à livrer, CdeALivrer, la valeur de l'attribut DateHreRechercheLivreur est nulle. Lorsque le caissier choisit un livreur, le cas d'utilisation Attribuer livreur va créer le lien attribue entre les occurrences d'entités CdeALivrer et Livreur. Avant de se terminer, le cas d'utilisation Attribuer livreur va mettre la date et l'heure courante dans l'attribut DateHreRechercheLivreur; ainsi, il sera possible de déterminer si: o la recherche d'un livreur a été effectuée et un livreur a été trouvé; (attribut DateHreRechercheLivreur non nul + lien attribue existe); o la recherche d'un livreur a été effectuée et aucun livreur n'a été trouvé; (attribut DateHreRechercheLivreur non nul + lien attribue n'existe pas); o la recherche d'un livreur n'a pas encore été effectuée; (attribut DateHreRechercheLivreur nul + lien attribue n'existe pas); Si aucun livreur n'est disponible et que le client ne peut accepter de décaler l'heure de livraison, le cas d'utilisation Attribuer livreur va mettre la date et l'heure courante dans l'attribut DateHreAnnulation. Lorsqu'un livreur est attribué et 30' avant l'heure de fin de cuisson, le cas d'utilisation Dispatcher commande va créer une occurrence de TicketFabrication et l'associer à Commande. La structure de données relative à l'entité CdeALivrer ayant été explicitée, nous pouvons maintenant expliciter les états de sa machine à états associée et représentée (partiellement) en Figure 10: L'état A traiter résulte de la création de la commande après que toutes les données obligatoires ont été saisies. L'état Livreur indisponible résulte d'une valeur dans l'attribut DateHreRechercheLivreur et de l'absence de lien attribue. L'état Commande annulée résulte d'une valeur dans l'attribut DateHreAnnulation. L'état Livreur attribué résulte d'une valeur dans l'attribut DateHreRechercheLivreur et de l'existence d'un lien attribue. L'état Fabrication ordonnée résulte de l'existence d'un lien genere montrant qu'un ticket de fabrication a été créé et envoyé au pizzaiolo. Remarque: Une occurrence de Commande est créée automatiquement lors de la création d'une occurrence de CdeALivrer; cette occurrence de Commande généralise ou factorise les éléments (attributs et associations) communs à toutes les sortes de commande telles qu'une commande par Internet, une commande au guichet ou encore une commande téléphonique. Langage de modélisation unifié UML 14/25 P-A. Sunier Figure 10 - Diagramme de machine à états partielle de l'entité CdeALivrer En certaines situations, il peut être utile d'enregistrer les états successifs des objets dans un souci de traçabilité; pour notre gestion des commandes la structure d'enregistrement pourrait correspondre au modèle de données ci-dessous. Figure 11 - Partie de MCD relatif à l'enregistrement de la chronologie des états d'une commande Langage de modélisation unifié UML 15/25 P-A. Sunier Note méthodologique: Une entité doit être créée pour pouvoir modéliser ses états par une machine à état. Figure 12 - relation structurelle entre une entité de données et la description de son comportement par un modèle à état Par contre, dès que ce lien est établi, il n'y a pas de règle de préséance entre MCD et machine à états. Dans certaines situations, il est intéressant de modéliser la structure de données et ensuite d'en déduire son comportement et ses états; dans d'autres situations, la démarche peut être inversée. Que l'on choisisse de démarrer par le MCD ou par la machine à états, il pertinent d'affiner les deux modèles en les validant l'un l'autre par confrontations successives. Figure 13 - Processus de travail de modélisation des aspects statique et dynamique d'une entité de données Langage de modélisation unifié UML 16/25 P-A. Sunier 5.2 Les événements Les événements déclenchent une transition entre états ou une action à l'intérieur d'un état; ils peuvent être classés en trois familles ou types: externes qui sont déclenchés par un acteur humain ou matériel; nous parlons d'externe car l'acteur ne fait pas partie du SII; internes qui sont déclenchés par un changement d'état d'un autre objet du SII; par exemple, une commande passe dans l'état payée si un paiement a été créé et enregistré dans le SII; temporels qui sont déclenchés par l'atteinte d'un point temporel. Pour illustrer les 3 types d'événements, nous proposons cicontre une partie de la machine à états de commandes à livrer passées par une entreprise; dans ce cas, ArcPizzas envoie une facture à l'entreprise et celle-ci s'en acquitte au guichet ou par virement bancaire. Cette partie de modèle est à placer dans le contexte du modèle plus complet présenté au chapitre Modèle de machine à états du document [PAS-8] - L'événement Livraison effectuée est déclenché par le caissier au retour du livreur, c'est un événement externe. - L'événement at(Fin de semaine) est déclenché par l'horloge interne d'un matériel utilisé pour l'informatisation du SII, c'est un événement temporel. Figure 14 - Machine à états partielle de commande à livrer pour entreprises L'événement when(paiement créé) est déclenché par le SII lors du paiement relatif à la commande facturée; c'est un événement interne au SII. Remarque: Nous retenons d'utiliser les mots-clés: at pour un événement temporel, atteinte d'un point de rendez-vous (date, heure…); after pour un événement temporel, durée écoulée; when pour un événement interne, un objet créé, modifié ou supprimé. Certains auteurs préconisent de rechercher tous les événements auxquels doit réagir un SII pour servir de bases à l'élaboration de ses spécifications [Pour plus de détails PAS-30]. Langage de modélisation unifié UML 17/25 P-A. Sunier 5.3 Actions et activités propres à un état Comme nous l'avons vu précédemment, tout objet est dans un et un seul état à un moment donné. Pour chacun des états d'un objet, il est possible de définir une activité à mener ou des actions ponctuelles à conduire. Pour illustrer ce concept, nous nous appuyons sur l'état Livreur indisponible de la machine à états des commandes à livrer d'ArcPizzas [PAS-8]. Une activité menée au sein d'un état est marquée par l'entête do/ L'activité Recontacter client pour décision est à réaliser lorsqu'une commande est dans Figure 15 - Représentation des activités et actions au cet état et la transition de sortie se sein d'un état déclenchera lorsque cette activité se terminera et que la décision du client sera connue. Les actions sont ponctuelles, elles peuvent être déclenchées: lorsque l'objet entre dans l'état; l'action est alors marquée de l'entête entry/. Lorsqu'une commande entre dans l'état Livreur indisponible l'action de recherche une variante d'horaire de livraison est exécutée; lorsque l'objet sort de l'état; l'action est alors marquée de l'entête exit/. Lorsqu'une commande sort de l'état Livreur indisponible l'action d'enregistrement du choix du client est exécutée; lorsque l'objet réagit à un événement sans pour autant quitter son état; l'action de réaction est alors marquée du nom de l'événement, pour notre exemple: LivraisonAnnulée/. Ce couple événement et action sans quitter l'état est nommé Transition interne. Les actions peuvent être gardées par des pré-conditions tout comme des post-conditions peuvent être spécifiées. [Voir la Figure 18 pour une illustration de pré-condition] Langage de modélisation unifié UML 18/25 P-A. Sunier 5.4 Les transitions Les transitions sont déclenchées par la survenance d'un événement. Une transition permet: de passer d'un état à un autre; de quitter un état et d'y revenir. Il s'agit d'une transition réflexive ou d'une transition propre. Lors d'une transition réflexive ou propre: o si une action de sortie d'état existe, elle est exécutée; o si une action de transition existe, elle est exécutée; o si une action d'entrée d'état existe, elle est exécutée; de rester dans un état mais de réagir à un événement en exécutant une action. Il s'agit d'une transition interne. Les transitions peuvent être gardées; malgré la survenance de l'événement, la transition n'est exécutée que si la garde est franchissable. Toute transition et pas seulement la transition interne peut s'accompagner d'une action à exécuter après avoir quitté l'état précédent et avant d'entrer dans l'état suivant (précédent et suivant peuvent être un même état lors de transition propre ou réflexive). Figure 16 - Machine à états partielle de commande à livrer pour entreprises Pour illustrer notre propos, nous avons repris la machine à états de la Figure 14; nous y avons ajouté les deux états Payée partiellement et FactureAnnulée; nous avons affiné les spécifications pour illustrer l'enrichissement des transitions. Langage de modélisation unifié UML 19/25 P-A. Sunier A propos de la Figure 16: Les transitions en sortie de l'état Facturée déclenchées par l'événement interne when(paiement créé) sont gardées. Les gardes dirigent la commande vers l'état Payée partiellement ou Payée. La transition gardée par l'expression [paiement > facture] déclenche l'action Créditer client (différence) avant d'entrer dans l'état Payée. La transition propre sur l'état Payée partiellement permet de prendre autant de paiements partiels que nécessaires; la sortie de cet état ne se fera que lorsqu'un paiement partiel permettra de quittancer la facture. La transition interne Réclamation client / Modifier facture de l'état Facturée permet à ArcPizzas de modifier une facture lors d'une réclamation d'un client. La modification peut consister à modifier le montant à payer et dans ce cas, la commande reste dans l'état Facturée. La modification peut consister en une annulation de la facture; dans ce cas, l'événement annulationFacture va mener la commande dans l'état FactureAnnulée. 5.5 Eléments de factorisation Lorsqu'un même événement déclenche deux (ou plus) transitions, une garde autorise une seule des transitions; pour alléger la lecture du diagramme, il est possible de mettre un choix [Voir Chapitre 3.3.1] en sortie de l'état. Lorsque plusieurs transitions mènent à un même état, il est possible de mettre un nœud de jointure pour alléger la lecture du diagramme. Le nœud de jointure peut recevoir plusieurs transitions en entrée et avoir plusieurs transitions en sortie. Pour faciliter la lecture des diagrammes, nous conseillons de n'utiliser la jointure que pour factoriser des transitions entrantes et de gérer les sorties multiples avec un nœud de choix (sauf pour les états concurrents que nous verrons plus loin). Si plusieurs transitions en sortie d'un nœud de jointure sont possibles, des gardes doivent assurer qu'en toute situation, une et une seule transition soit franchissable; le nœud de jointure fait alors office de choix. Langage de modélisation unifié UML 20/25 P-A. Sunier Pour illustrer notre propos (Figure 17), nous avons factorisé quelques unes des transitions de la Figure 16, en cherchant à rendre le modèle plus aisé à lire. A notre sens, il ne faut pas exagérer avec la factorisation au risque de produire des diagrammes qui deviennent difficiles à lire! Figure 17 - Machine à états partielle de commande à livrer pour entreprises factorisée 5.6 Les états composites Un état peut être décomposé en une ou plusieurs régions; chaque région va recevoir une machine à états contenant un ou plusieurs super états. Un état composite est nommé super état par certains auteurs Un état composite ne contenant qu'une seule région est appelé un état non orthogonal. Un état composite contenant plusieurs régions est appelé état orthogonal ou état concurrent. 5.6.1 Etat non orthogonal L'objet représenté par un état non orthogonal (une seule région) est dans l'état de sa région. Pour illustrer le concept d'état orthogonal, nous avons repris la machine à états de la Figure 16; afin de rendre l'exercice plus intéressant, nous avons pris en compte que ArcPizzas journalise chaque fin de mois toutes les commandes payées (passées par les entreprises) afin d'alimenter un outil de reporting. Dès lors, nous avons rajouté l'état Journalisée atteint par la transition temporelle de fin de mois. Langage de modélisation unifié UML 21/25 P-A. Sunier Techniquement et afin de rendre le diagramme plus lisible, nous n'avons plus qu'une seule garde [paiement >= facture] sur les transitions when(paiement créé); c'est en entrée de l'état Payée.Totalement que nous déclencherons l'action consistant à créditer le client du surplus payé, CréditeClient, si la pré-condition paiement > facture est vraie. Naturellement, ce choix n'est pas lié au super état et nous aurions pu le faire précédemment. Figure 18 - Machine à états partielle de commande à livrer pour entreprises avec super états A propos de la Figure 18: Un pseudo état initial doit marquer l'initialisation de la machine à états décrivant un super état, l'état Payée dans notre cas. Un pseudo état de fin n'est pas obligatoire comme pour toute machine à états; nous n'en avons pas mis car une commande peut rester "indéfiniment" dans l'état Payée.Partiellement. Par contre, la sortie de cet état Payée sur l'événement at(Fin de mois) ne se réalisera que si la commande est dans le sous-état Payée.Totalement; elle passera alors dans l'état Journalisée. Langage de modélisation unifié UML 22/25 P-A. Sunier 5.6.2 Etat orthogonal ou concurrent L'objet représenté par un état orthogonal ou concurrent (plusieurs régions) est dans un état résultant de la conjonction de l'ensemble des sous états de ses régions. Tout objet dans l'état EtatConcurrent (Figure ci-contre) sera obligatoirement dans un sous état de la région I et un sous état de la région II; par exemple: Region I.EtatB et Region II.EtatX. Figure 19 - Etat concurrent Pour illustrer le concept d'état orthogonal (Figure 20), nous avons fait une consolidation de l'ensemble des modalités de gestion des commandes d'ArcPizzas. Figure 20 - Machine à états concurrents des différentes commandes A propos de la Figure 20: 3 régions composent l'état concurrent Dispatchée: o Livraison; cette région prend en charge le comportement des commandes à livrer; o Fabrication; cette région prend en charge le traitement de l'information relative à la fabrication des pizzas; Langage de modélisation unifié UML 23/25 P-A. Sunier o Facturation; cette région prend en charge la traitement financier des commandes d'entreprises9. Nous n'avons pas mis de nœud de fin dans chacune des 3 régions car il faut prendre en compte les exceptions qui empêchent une fin normale, par exemple: o la livraison ne peut pas se faire car le client est absent; o la fabrication ne peut pas se faire car le four tombe en panne; o l'entreprise n'honore pas la facture qui lui a été adressée. La sortie de l'état concurrent est déclenchée par l'événement temporel at(Délai d'archivage dépassé); elle se fait depuis n'importe quel sous état des 3 régions pour prendre en compte les exceptions évoquées précédemment. Nous avons retenu comme principe que les commandes sont conservées en l'état au sein du SII10 jusqu'au délai légal de conservation des documents financiers et autres; passé ce délai les commandes peuvent être historisées. La région Livraison reprend les éléments du modèle que nous avons réalisé en [PAS8 Chapitre Modèle de machine à états]; elle ne concerne que les commandes à livrer. Les commandes à prendre au guichet restent dans le pseudo état initial. L'état Fabrication.Ordonnée est atteint pour autant que ce soit une commande à prendre au guichet ou que ce soit une commande à livrer dans l'état Livraison.Attribuée. La transition du pseudo état initial de la région Facturation vers son état Facturée est déclenchée par l'événement d'atteinte de l'état Livrée dans la région Livraison. Afin de rendre les 3 régions indépendantes les unes des autres, nous nous basons sur l'atteinte de l'état Livraison.Livrée et non sur les conditions de la transition y menant qui est propre à la région Livraison. Le comportement des commandes dans l'état Facturation.Payée et ses différents sous états sont décrits au sein d'une machine à états qui lui est propre; elle est reproduite en Figure 21. 9 Nous admettons que les commandes de privés sont payées à la livraison qu'elle se fasse au guichet ou à domicile. 10 En informatique de gestion, les données sont conservées au sein de bases de données; pour accéder à des informations comme les commandes, il y a lieu de passer par l'intermédiaire de traitements informatiques (les interfaces et contrôleurs évoqués en [PAS-8 Chapitre Modèle de communication]). Dès lors, l'archivage consiste simplement à présenter un filtre aux utilisateurs par lequel il va choisir une période temporelle de travail; par exemple, les commandes de l'année civile en cours, de l'an passé ou des cinq dernières années. Une fois passé le délai légal de conservation des documents, il est possible: de conserver les données à des fins d'exploitation d'un patrimoine informationnel potentiellement intéressant, ce que nous conseillons - de supprimer les données, ce que nous déconseillons – de faire un mixte entre les deux, c'est-à-dire de supprimer les données mais en ayant pris soin auparavant d'avoir créé une copie informatique ou papier pour une historisation des documents. Les documents historisés sont consultables en tant que fichiers textes et ne nécessitent pas d'autres ressources qu'un lecteur de fichier. Langage de modélisation unifié UML 24/25 P-A. Sunier Un état non orthogonal peut être représenté au sein d'une région du super état comme nous l'avons fait en Figure 18; il peut aussi être représenté dans un diagramme spécifique comme nous l'avons fait ci-dessous pour l'état Payée. Figure 21 - Machine à états représentant les super états de l'état généralisé Payée de la région Facturation du Figure précédente A propos de la Figure 21: La machine à états ne comporte pas de pseudo état final pour permettre, comme évoqué précédemment, de garder une trace des factures partiellement payées et pour lesquelles le débiteur a fait défaut pour le règlement du solde. 6 Bibliographie [PAS-8] HEG-Arc – Bases du langage de modélisation unifié - UML P.-A. Sunier, 2013 http://lgl.isnetne.ch/BachelorII/Modelisation/UML/UML_Bases.pdf [PAS-20] Bases de modélisation du système d'information de l'entreprise Eléments théoriques en complément du cas pratique ArcPizzas P.-A. Sunier, octobre 2012 http://lgl.isnetne.ch/BachelorII/Modelisation/BasesSI/BasesModelisationSI.pdf [PAS-30] Les événements P.-A. Sunier, 2005-2013 http://lgl.isnetne.ch/methodologie-2005HES/chapitre_310/evenements.pdf Langage de modélisation unifié UML 25/25 P-A. Sunier