Uml 2 Cas d`utilisation
Transcription
Uml 2 Cas d`utilisation
Claude Belleil Université de Nantes Le langage UML 2.0 Diagramme de Cas d'Utilisation 1 Introduction Les cas d'utilisation décrivent sous la forme d'actions et de réactions le comportement d'un système du point de vue d'un utilisateur. Ils permettent de définir : les limites du système en fonction des utilisateurs. la frontière entre le système est le monde extérieur formé par les utilisateurs ou les autres systèmes amenés à interagir avec lui. Un cas d'utilisation est une manière spécifique d'utiliser le système. Le système est complètement défini fonctionnellement quand on a dressé la liste de tous ses cas d'utilisation. Les cas d'utilisation se déterminent en observant et en précisant, acteur par acteur, les scénarios (séquences d'interactions) d'utilisation du système, étape par étape. Une famille de scénarios, regroupée suivant un critère fonctionnel, forme un cas d'utilisation. Ainsi, un cas d'utilisation est une sorte de classe dont l'instance serait le scénario. 2 Les Cas d’utilisation Le formalisme des cas d'utilisation -- basé sur la description de scénarios en langage naturel -- est accessible pour les utilisateurs, qui peuvent ainsi exprimer leurs attentes et leurs besoins en communiquant facilement avec les experts du domaine et les informaticiens. La terminologie employée dans la rédaction des scénarios est celle employée par les utilisateurs dans leur vie de tous les jours, de sorte que l'expression des besoins s'en trouve grandement facilitée. Les cas d'utilisation permettent aux utilisateurs de structurer et d'articuler leurs demandes ; ils les obligent à définir la manière dont ils voudraient interagir avec le système, à préciser quelles informations ils entendent échanger et à décrire ce qui doit être fait pour obtenir le résultat escompté. Les cas d'utilisation concrétisent le futur système dans une formalisation proche de l'utilisateur ; ils favorisent la définition d'un cahier des charges qui reflète réellement les besoins, même en l'absence d'un système à critiquer. 2.1 flots d’événements Chaque cas d'Utilisation est décrit par un flot d'évènements. Il s’agit de la suite des évènements qui permettent d'accomplir la fonctionnalité requise par le cas d'utilisation. Celle-ci est réalisée dans le langage du domaine en faisant référence aux objets du domaine. En phase d’analyse, c’est une démarche efficace pour faire apparaître les objets du domaine. Le langage du domaine est le langage du Client ou du spécialiste avec lequel on décrit le modèle des besoins. Il est en général nécessaire de créer un Glossaire des termes utilisés, ce glossaire définit le _____________________________________________________________________________ Le Langage UML 2.0 Claude Belleil Université de Nantes 1 langage du domaine. Les Objets du domaine sont les entités réelles ou conceptuelles que manipule le client et le système. Ils sont utilisés à la fois pour écrire le modèle des besoins mais constituent également un bon point de départ pour faire émerger les classes du système. Les Flots d'évènements décrivent ce que le système doit faire et non pas comment il le fait. Les flots d'évènements doivent intégrer : • • • • • Quand et comment le cas d'utilisation commence et se termine Les interactions du cas d'utilisation et des acteurs Les données nécessaires au cas d'utilisation La séquence normale d'évènements La description de tous les flots d'événements alternatifs ou exceptionnels (erreurs). La description du flot d'évènements est une opération importante qui doit être menée de façon itérative avec le client. Une première itération consiste à décrire brièvement les étapes nécessaires pour réaliser le scénario standard du cas d'utilisation (ce qui est fourni par le cas d'utilisation). Un scénario est un chemin particulier au travers de la description abstraite et générale fournie par le cas d'utilisation. Les scénarios traversent le cas d'utilisation, en suivant le chemin nominal des chemins alternatifs et exceptionnels. L'explosion combinatoire fait qu'il est bien souvent impossible de dérouler tous les scénarios (toutes les combinaison du chemin principal avec les chemins alternatifs et exceptionnels). Avec la progression de l'analyse, les différentes étapes sont raffinées. Finalement les scénarios de gestion d'exceptions sont créés. Un projet doit définir un modèle de création de flots d'évènements qui possède la structure suivante : 1. 2. 3. 4. 5. 6. 2.2 Flot d'évènement pour le cas d'utilisation <<nom du cas>> Pré conditions Flot Principal Flots Alternatif (si nécessaire) Flots d'exceptions Post conditions Formalisme de représentation Le modèle des cas d'utilisation comprend au moins quatre éléments : 1. 2. 3. 4. les acteurs le système le ou les cas d'utilisation par eux-mêmes. les liens entre ces différents éléments Ainsi, les fonctionnalités d'un système sont déterminées en examinant les besoins fonctionnels de chaque acteur, exprimés sous la forme de familles d'interactions dans les cas d'utilisation. ============================================================================ «Le Diagramme de Cas d’utilisation1» Règles de cohérence extraites du document de l’OMG « UML2SuperStructure2» Contexte : Les cas d’utilisation sont un moyen de spécifier les usages 1 Les paragraphes avec ce style (Courier New 8) sont des traductions d’extraits du document officiel de définition du langage UML 2 dont vous trouverez la référence web ci-dessous. 2 http://www.omg.org/technology/documents/formal/uml.htm _____________________________________________________________________________ Le Langage UML 2.0 Claude Belleil Université de Nantes 2 attendus d’un système. Typiquement ils sont utilisés pour cerner les exigences fonctionnelles d’un système, c’est-à-dire les fonctionnalités que le système doit remplir. Les concepts clés d’un tel diagramme sont les cas d’utilisation eux-mêmes, les acteurs et les sujets (subject en anglais). Le sujet est le système considéré sur lequel les cas d’utilisation s’appliquent. Les utilisateurs et autres systèmes qui interagissent avec le sujet sont représentés comme des acteurs. Les diagrammes des cas d’utilisation sont une spécialisation des diagrammes de classes dans lesquels les seuls classificateurs qui apparaissent sont soit des acteurs soit des cas d’utilisation. Règles : • Les noeuds graphiques qui peuvent apparaître dans un diagramme des cas d’utilisation sont : [p.523]3 des acteurs des points d’extension des cas d’utilisation Remarque : Il est également possible de représenter le sujet ou contexte des cas d’utilisation comme un rectangle qui entoure tous les cas d’utilisation. Remarque : Les cas d’utilisation peuvent apparaître dans d’autres diagrammes afin de montrer à quel classificateur un cas d’utilisation appartient. • Les chemins graphiques qui peuvent apparaître dans un diagramme des cas d’utilisation sont : [p.523] des relations d’extension des relations d’inclusion des associations binaires des relations de généralisation. ============================================================================ 2.2.1 Les Acteurs Les acteurs sont des entités en interaction avec le système. Ils sont représentés sous la forme de petits personnages qui déclenchent les cas d'utilisation ceux-ci étant représentés par des ellipses contenues par le système. ============================================================================ « Acteur » Règles de cohérence extraites du document de l’OMG « UML2SuperStructure4» Contexte : Un acteur (actor en anglais) représente un ensemble cohérent de rôles que peuvent jouer des utilisateurs d’un système lorsqu’ils interagissent avec les cas d’utilisation. Règles : • Un acteur ne peut avoir d’associations qu’avec des des des des cas d’utilisation sous-systèmes composants classes. [p.513] • Les associations mettant en jeu un acteur doivent être binaires. [p.513] • Un acteur doit avoir un nom. [p.513] • Un acteur ne doit pas être contenu par un autre classificateur. [Règle dérivée du méta-modèle] ============================================================================ 3 4 Numéro de la page dans le document «UML2SuperStructure» http://www.omg.org/technology/documents/formal/uml.htm _____________________________________________________________________________ Le Langage UML 2.0 Claude Belleil Université de Nantes 3 Figure 1 : Représentation des acteurs Le niveau de détail de présentation d'un cas d'utilisation correspond à la visibilité que l'acteur a du système. On doit distinguer entre les acteurs principaux et les acteurs secondaires. Les fonctionnalités principales du système ont été définies pour les acteurs principaux. Afin d'atteindre cet objectif, il est en général nécessaire de réaliser des opérations en amont et en aval de ces fonctions principales. C'est le rôle des acteurs secondaires . Cela peut être par exemple la gestion des droits utilisateurs, la sauvegarde de la base de données, etc. Dans bien des cas, cette classification s'avère suffisante, toute fois certains professionnels proposent de l'affiner : Un acteur peut être humain ou purement informatique, hardware ou software. Il peut avoir de multiples "personnalités", jouer plusieurs rôles dans un ou plusieurs cas d'utilisation; on en identifie quatre : 1. Initiateur : Rôle joué par un acteur qui déclenche le cas, qui met en mouvement le système. 2. Serveur : Rôle joué par un acteur lorsqu'il aide le système à assumer ses responsabilités. 3. Receveur : Rôle joué par un acteur lorsqu'il reçoit des informations du système (par exemple un SGBD ou un système de backup ). 4. Facilitateur : Rôle joué par un acteur lorsqu'il réalise une action pour le bénéfice d'un autre (un guichetier pour un client par exemple). Les acteurs se déterminent en observant les utilisateurs directs du système, ceux qui sont responsables de son exploitation ou de sa maintenance, ainsi que les autres systèmes qui interagissent avec le système en question. Un acteur étant défini par son rôle dans l'interaction avec le scénario d'utilisation, il peut être constitué par un autre sous-système interne et donc modélisé par un autre scénario d'utilisation. Les acteurs potentiels se recrutent parmi les utilisateurs, les partenaires, les autres systèmes, c’est à dire, les personnes et les éléments extérieurs à un système qui interagissent avec lui en échangeant de l'information. Un diagramme de cas d’utilisation ne se construit pas en une seule fois. La détermination des acteurs permet de préciser les limites du système de manière progressive : floues au départ, elles se précisent au fur et à mesure de l'élaboration des différents cas d'utilisation. Cette activité de délimitation est extrêmement importante car elle sert de base contractuelle où est signalé ce qui doit être fait, ce qui fait partie du système à développer et ce qui n'en fait pas partie. Elle précise également les éléments intangibles, que l'équipe de développement ne peut pas modifier. Il existe quatre grandes catégories d'acteurs : • • • • 2.2.2 Les acteurs principaux qui regroupent les personnes utilisant les fonctions principales du système. Les acteurs secondaires qui regroupent les personnes réalisant des tâches nécessaires au fonctionnement du système, mais n’étant pas à l’origine de son activation Les autres systèmes regroupant les systèmes avec lesquels le système doit interagir. Le matériel externe. Il ne s’agit pas de l’ordinateur sur lequel s’exécute l’application, mais des autres dispositifs matériels. Les Cas d’utilisation Un cas d'utilisation regroupe une famille de scénarios d'utilisation selon un critère fonctionnel. Les cas d'utilisation sont des abstractions du dialogue entre les acteurs et le système : ils décrivent des interactions potentielles, sans entrer dans les détails de chaque scénario. Ils peuvent être vus comme des classes dont les instances sont les scénarios. _____________________________________________________________________________ 4 Le Langage UML 2.0 Claude Belleil Université de Nantes Figure 2: Un Cas d’Utilisation se représente sous la forme d’un ovale ============================================================================ « Cas d’utilisation » Règles de cohérence extraites du document de l’OMG « UML2SuperStructure5» Contexte : Un cas d’utilisation (use case en anglais) est un classificateur qui représente une unité cohérente de fonctionnalités fournies par un système, un sous-système ou une classe. Règles : • Un cas d’utilisation doit avoir un nom. [p.520] • Les cas d’utilisation ne doivent participer qu’à des associations binaires.[p.520] • Un cas d’utilisation ne doit pas avoir d’associations avec d’autres cas d’utilisation qui spécifient le même système. [p.520] ============================================================================ 2.2.3 Notion de scénario Un scénario est une séquence d’événements se déroulant dans le temps. C’est une instance d’un cas d’utilisation du système. En général, un cas d’utilisation comporte plusieurs scénarios. Figure 3: Représentation symbolique de scénarios alternatifs d'un cas d'utilisation6 Un événement est une transmission d’information, une communication soit entre un acteur et un objet, entre un objet et un autre objet, ou encore entre un objet et lui-même. En général on formalise un scénario par une liste numérotée d’actions7. Bien que ne faisant pas partie directement du formalisme UML, les scénarios ont fait l’objet d’une normalisation, sous la forme de fiche standardisées. 2.3 Les relations dans les cas d’utilisation UML prédéfinit quatre types particuliers8 de relations dans un diagramme de cas d'utilisation. A ce sujet, Thierry Cros note : « Les relations entre cas d' utilisation sont en fait des relations entre ensembles 5 http://www.omg.org/technology/documents/formal/uml.htm D’après : http://grand.patrice.free.fr 7 Voir en annexe un exemple de fiche de description d’un scénario 8 Ils sont définis comme étant des « stereotypes » 6 _____________________________________________________________________________ Le Langage UML 2.0 Claude Belleil Université de Nantes 5 d' interactions et ne représentent pas une décomposition fonctionnelle. Elles permettent d' organiser les interactions, alors que les paquetages permettront d' organiser les cas - en tant que fonctionnalités - eux-mêmes par acteur ou priorité ou tout autre critère logique choisi par le modeleur. Lorsque la description textuelle fait apparaître des interactions communes à plusieurs cas, la relation <<include>> (qui remplace le stéréotype <<uses>>) permet d' éviter la réécriture Lorsque dans un diagramme, un cas A dépend d' un cas B au travers d' une relation <<include>>, cela ne signifie donc pas que B est une fonction qui sera appelée par A. Cela indique simplement que les interactions décrites dans B sont à injecter dans les interactions décrites dans A. Plus tard, ces interactions seront de la responsabilité de plusieurs objets du système. En fait, à une interaction (par exemple : le système affiche le total H.T.), correpondra très probablement une collection d' opérations dans plusieurs objets. Chacun des objets collaborants sera peut-être impliqué dans plusieurs scénarii de plusieurs cas. La relation <<include>> est inconditionnelle. A partir du moment où elle est modélisée entre deux cas, l' inclusion des interactions est systématique. Il est aussi possible de créer ces descriptions d' interactions incluses simplement pour alléger la description de cas principaux ou secondaires particulièrement importants.9» Voici, à titre d’exemple, un ensemble de cas d’utilisation d’un système que l’on appelle « Magasin10 ». Dans une première phase d’analyse, les différents cas sont définis, sans que l’on puisse détecter de façon certaine les relations qui peuvent exister entre eux. Ce sont les scénarios, illustrés par des diagrammes de séquence d’objets qui permettront de mettre en évidence ces relations particulières, grâce à des séquences communes ou optionnelles. Figure 4 : Les différents cas d'utilisation du système « Magasin» 9 Thierry Cros Inspiré de Pascal André et Alain Vailly « Génie Logiciel » Editions Ellipses 10 _____________________________________________________________________________ Le Langage UML 2.0 Claude Belleil Université de Nantes 6 L’analyse des diagrammes de séquence d’objet correspondant à chacun des cas fait apparaître les relations suivantes : Figure 5 : Les mêmes cas raffinés et reliés 2.3.1 La relation <<Association>> C'est la seule relation autorisée entre un acteur et un cas d’utilisation. C’est une relation de communication. La participation de l'acteur est signalée par un trait ou une flèche entre l'acteur et le cas d'utilisation. Elle peut porter des cardinalités. A ce sujet Thierry Cros11 écrit : « UML définit une relation entre acteurs et système: l' association. Cette relation correspond plus précisément à un potentiel de communication entre acteurs et système (techniquement, la relation d' association est stéréotypée en <<communication>>. (….) De même qu' une association dans un diagramme de classes représente une relation permanente, un potentiel de liens, de même la relation de communication entre acteurs et cas. Il est quelquefois judicieux d' indiquer les informations (qui deviendront des objets dans le développement) échangées entre acteurs et système, par rapport au cas. Il est alors possible d' utiliser des mécanismes communs tels que étiquettes, contraintes ou notes. La communication étant la relation permanente entre acteur et système, un label devrait éviter toute ambiguïté avec une modélisation dynamique. En dernière analyse, les diagrammes d' interactions 12 permettent de spécifier les échanges entre acteurs et système. Ils modélisent des scénarii et sont donc tout à fait adaptés à la représentation des échanges, d' un point de vue dynamique. Ils sont très complémentaires des diagrammes de cas d' utilisation. » 11 12 séquence ou collaboration _____________________________________________________________________________ Le Langage UML 2.0 Claude Belleil Université de Nantes 7 Figure 6: Relations stéréotypées «association » 2.3.2 La relation <<Extend>> Une relation d'extension entre cas d'utilisation signifie que le cas d'utilisation source étend le comportement du cas d'utilisation destination. C'est une relation entre deux instances de scénarios telle que A étend B signifie que le comportement d'un scénario B peut être complété par le développement d'un scénario A. Par exemple dans la figure 6 ci-dessous, le cas d’utilisation «Obtenir une réduction» étend le cas d’utilisation « Commander un produit». Ainsi, « Obtenir une réduction» correspond à un ensemble d’opérations qui doivent s’ajouter aux opérations de « Commander un produit ». Ces opérations supplémentaires n’ont de sens que si les opérations de « Commander un produit » sont réalisées. La relation <<Extend>> doit spécifier à la fois : • • la condition de l'extension le point d'extension, c’est à dire l'endroit où l'extension doit être faite dans le cas d’utilisation général. La relation <<Extend>> spécifie donc une possibilité, une option. _____________________________________________________________________________ Le Langage UML 2.0 Claude Belleil Université de Nantes 8 Figure 7: Relations stéréotypées "extend" Figure 8 : Exemple d’extension à partir d’un scénario nominal13 ============================================================================ « Extension » Règles de cohérence extraites du document de l’OMG « UML2SuperStructure14» Contexte : Une relation d’extension (extend relationship en anglais) met en relation un cas d’utilisation < étendant > et un cas d’utilisation < étendu > et spécifie comment et quand le comportement du cas d’utilisation < étendant > peut être inséré dans le comportement du cas d’utilisation < étendu >. Il est possible de préciser via une note, la condition qui déterminera si le cas d’utilisation est étendu ou non par le cas d’utilisation cible. La note peut également faire apparaître le nom du point d’extension à laquelle se réfère la condition 13 D’après : http://grand.patrice.free.fr 14 http://www.omg.org/technology/documents/formal/uml.htm _____________________________________________________________________________ Le Langage UML 2.0 Claude Belleil Université de Nantes 9 ! # $ " Figure 9: Exemple de relation d’extension avec spécification du nom du point d’extension Règles : • Une relation d’extension a comme source un (et un seul) cas d’utilisation.[Règle dérivée du méta-modèle] • Une relation d’extension a comme cible un (et un seul) cas d’utilisation.[Règle dérivée du méta-modèle] • Le point d’extension qui est référencé par la relation d’extension doit appartenir au cas d’utilisation < étendu.> [p.515] • La condition (si présente dans la note) est une contrainte et doit donc répondre aux règles de contraintes [p.55] Relations Remarque : Les cas d’utilisation étant généralement utilisés pendant la phase d’analyse, il est souvent difficile d’exprimer la contrainte autrement qu’en langage naturel, ce qui limite la capacité d’analyse statique. ============================================================================ 2.3.3 La relation <<Include>> Une relation <<include>> entre cas d'utilisation signifie qu'une instance du cas d'utilisation « source » comprend également le comportement décrit par le cas d'utilisation « destination ». C'est une relation entre deux instances de scénarios d'utilisations, telle que la réalisation de la fonction de l'un nécessite la réalisation de la fonction de l'autre. Elle signifie donc qu’une instance du cas d’utilisation « source » comprend (inclut) également le comportement décrit par le cas d’utilisation de destination. Dans la figure 10, le cas d’utilisation « Régler la Facture» inclut le cas d’utilisation « Payer ». _____________________________________________________________________________ Le Langage UML 2.0 Claude Belleil Université de Nantes 10 Figure 10 : Relations stéréotypées "Include" Figure 11 : Exemple d'inclusion dans un scénario nominal15 ============================================================================ « Inclusion » Règles de cohérence extraites du document de l’OMG « UML2SuperStructure16» Contexte : Une relation d’inclusion (include relationship en anglais) entre deux cas d’utilisation implique que le comportement du cas d’utilisation qui est inclus est inséré dans le comportement du cas d’utilisation < incluant >. Le cas d’utilisation cible de la relation est inclus dans la cas d’utilisation source de la relation. Règles : • Une relation d’inclusion a comme source d’utilisation.[Règle dérivée du méta-modèle] • Une relation d’inclusion a comme cible d’utilisation.[Règle dérivée du méta-modèle] 15 D’après : http://grand.patrice.free.fr 16 http://www.omg.org/technology/documents/formal/uml.htm un (et un seul) cas un (et un seul) cas _____________________________________________________________________________ Le Langage UML 2.0 Claude Belleil Université de Nantes 11 • Les relations d’inclusion ne doivent pas former de circuit. [Nouvelle règle] ============================================================================ 2.3.4 La relation <<Generalize>> Elle exprime la relation de « généralisation spécialisation » qui sera présentée en détail lors de l’étude du diagramme de classes. Elle est souvent désignée par le concept "est une sorte de". A l’inverse des précédentes, il s'agit d'une relation entre deux cas d’utilisation et non entre des instances17 de ceux-ci. Figure 12 : Relation stéréotypées "Généralize" La portée des cas d'utilisation dépasse largement la définition des seuls besoins du système. En effet, les cas d'utilisation interviennent tout au long du cycle de vie, depuis le cahier des charges jusqu'aux tests, en passant par l'analyse, la conception, la réalisation et la rédaction de la documentation pour l'utilisateur. De ce point de vue, il est possible de naviguer vers les classes et les objets qui collaborent pour satisfaire un besoin, puis vers les tests qui vérifient que le système s'acquitte correctement de sa tâche. 2.4 2.4.1 Construction des Cas d’utilisation Les Scénarios Comme nous l’avons déjà vu, un cas d’utilisation correspond à un ensemble de scénarios, chacun d’entre eux étant formalisé par un diagramme de séquence d’objet ou un diagramme de collaboration. Bien qu'UML ne préconise pas explicitement un cycle de développement particulier, les cas d’utilisation induisent un enchaînement particulier dans l’utilisation des diagrammes. Cet enchaînement consiste à regarder le système à construire de l'extérieur, du point de vue de l'utilisateur et des fonctionnalités qu'il en attend. Chaque cas d’utilisation consiste en un ensemble de « scénarios possibles ». C’est leur étude qui permettra de mettre en évidence des factorisations 17 scénarios _____________________________________________________________________________ Le Langage UML 2.0 Claude Belleil Université de Nantes 12 possibles dans le cas des <<include>>, des options dans le cas des <<extend>> et des généralisations spécialisations. Un scénario peut être employé de deux manières : - comme une spécification de ce qu'il sera possible de demander de l'extérieur à l'entité ainsi représentée - comme une spécification de la fonctionnalité offerte par cette même entité (déjà réalisée). D'un point de vue méthodologique, le scénario décrit un ensemble cohérent de fonctions pour l'utilisateur. 2.4.2 Processus d’élaboration des Cas d’Utilisation Au moment la construction des cas d'utilisation, il faut se demander : • • • • quelles sont les responsabilités de l'acteur vis à vis du système? quelles sont les informations qu’il devra créer, sauvegarder, modifier, détruire ou simplement lire ? devra-t-il informer le système des changements externes ? le système devra-t-il informer l'acteur de l’évolution interne du système ? Les cas d'utilisation peuvent être présentés aux travers de vues multiples : • • un acteur avec tous ses cas d'utilisation un cas d'utilisation avec tous ses acteurs Les cas d'utilisation peuvent également être groupés selon leurs séquences de déclenchement types, c'est-à-dire en fonction de leurs enchaînements, ou encore en fonction des différents points de vue, souvent corrélés aux grandes catégories d'acteurs (client, fournisseur, maintenance...). L'étape suivante consiste à classer les cas d'utilisation selon leur 2.4.3 Règles de mise en œuvre Un cas d'utilisation décrit non seulement une fonctionnalité ou une motivation, mais aussi une interaction entre un acteur et un système sous la forme d'un flot d'événements. La description de l'interaction se concentre sur ce qui doit être fait dans le cas d'utilisation, pas sur la manière de le faire. Un cas d'utilisation doit rester simple et compréhensible par le donneur d’ordre qui n’est pas obligatoirement un spécialiste de la modélisation conceptuelle. La description d'un cas d'utilisation comprend les éléments suivants : • • • • • • • le début du cas d'utilisation, c’est à dire l'événement qui le déclenche. Il doit être clairement exprimé avec une assertion du type : « Le cas débute quand l’événement X se produit. » ; de façon symétrique, la fin de celui-ci, c’est à dire l'événement qui cause l'arrêt du cas d'utilisation. Lui aussi doit être clairement identifié et documenté par une assertion du type : « Quand l’événement Y se produit, le cas d'utilisation est terminé. » ; l'interaction entre le cas d'utilisation et les acteurs qui décrit clairement les limites du système ; les échanges d'informations entre le système et les acteurs. Une formulation en langage naturel est préférable à toute autre, par exemple : « Le Client demande des renseignements concernant les compositions florales au vendeur» ; la chronologie et l'origine des informations qui décrivent quand le système a besoin d'informations internes ou externes et quand il les enregistre à l'intérieur ou à l'extérieur ; les comportements répétitifs les situations optionnelles qui doivent apparaître clairement à l’aide de formulations du type de: «L'acteur choisit l'un des éléments suivants, éventuellement plusieurs fois de suite » Ces points ne suffisent pas pour obtenir un bon cas d'utilisation. Il est également primordial de trouver _____________________________________________________________________________ 13 Le Langage UML 2.0 Claude Belleil Université de Nantes le bon niveau de granularité, c'est-à-dire la quantité de détails qui doivent apparaître, et de faire la distinction entre un cas d'utilisation qui est obligatoirement conceptuel et un scénario qui est nécessairement contingent. Il n’existe pas de méthodologie apportant une aide dans ce domaine. L'appréciation du niveau de granularité repose essentiellement sur l'expérience. 2.4.4 Cas d’Utilisation : un processus d'élaboration itératif et contractuel18 La modélisation par les Cas d’Utilisation est une technique imprécise, assez difficile à mettre en œuvre. Néanmoins, elle apparaît comme un document contractuel sur lequel le donneur d'ordre et l'exécutant peuvent travailler. Elle permet de vérifier qualitativement la conformité du produit avec les spécifications. Ce « mal nécessaire » vient du fait que le donneur d'ordre ignore la façon dont le produit sera conçu et que le donneur d'ordre pense essentiellement aux « fonctionnalités » du futur système. La modélisation par Cas d’Utilisation adopte un formalisme assez simpliste, ce qui facilite la compréhension par tout le monde, surtout aux non initiés aux pratiques objet. Ce n'est pas une technique OBJET en soi. L’analyste profite du flou relatif sur la modélisation par les Cas d’Utilisation pour laisser le champ libre à sa conception future du produit L'exécutant a besoin des Cas d’Utilisation pour faire l'évaluation de l'ampleur du projet et établir le coût et les autres paramètres. Une bonne modélisation par les Cas d’Utilisation doit répondre à la question : que fait le système à un haut niveau et jamais comment il le fait (WHAT et NOT HOW) ? Doit-on décomposer les Cas d’Utilisation et partir dans les techniques de réduction de complexité ? Réponses: • • NON lorsqu’on est capable, avec les Cas d’Utilisation en place, d’estimer l’ampleur du projet. OUI en considérant les sous-systèmes comme des systèmes « indépendants » en soi. Avec cette démarche, on s’assure que la décomposition respecte le principe d’indépendance des sous systèmes. On s’assurera que les sous-systèmes peuvent être considérés comme des objets à part entière. Quelques recettes pour établir les cas d’utilisation Étape 1: Identifiez les « usagers » du système. Ce sont les acteurs avec le stéréotype « acteur ». Lorsqu’un système est subdivisé en sous-systèmes plus élémentaires, un sous-système peut devenir un acteur pour un autre sous système et n’a rien d’humain. Dans ce cas, servez-vous du stéréotype « classe » pour l’acteur si le sous-système qui agit en tant qu’acteur s’apparente à un objet. Étape 2: Différenciez les acteurs si la nature du problème l’exige. Cherchez les propriétés communes de ces acteurs. Factorisez éventuellement un acteur commun et dérivez (si possible) les autres acteurs à partir de cet acteur commun Étape 3: Choisissez l'acteur type ou l'acteur le plus important. Cherchez ce que cet acteur peut faire avec votre système et identifiez les premiers Cas d’Utilisation de base Étapes 4: Étudiez chaque Cas d’Utilisation de base. S'il a l'air complexe et ne vous permet pas d'estimer l'ampleur du projet, identifiez les Cas d’Utilisation sous-jacents les plus importants sans caractériser à cette étape-ci les relations entre les Cas d’Utilisation (include, extend, etc.) Étape 5: Décrivez en détail chaque Cas d’Utilisation, aussi bien des Cas d’Utilisation de base que les Cas d’Utilisation sous-jacents. C'est une étape importante car elle permet de clarifier ce que vous voulez confier comme tâches à votre système. Cette description est consultée, d'un côté, par le donneur d'ordre, de l'autre, par les développeurs. Bien que la description soit TEXTUELLE, restez PRÉCIS, CONCIS Ne pas faire mention de l'interface usager dans cette description car ce faisant, vous ligotez les bras du développeur. 18 d’après Bui Minh Duc, Ingénieur INSA de Lyon _____________________________________________________________________________ Le Langage UML 2.0 Claude Belleil Université de Nantes 14 Étape 6: Trouvez maintenant les traitements communs dans les descriptions et cherchez les possibilités de factorisation. Dégagez si possible les Cas d’Utilisation « factorisés » Étape 7: Établissez maintenant les liens stéréotypés pour préciser la sémantique de votre analyse un peu plus technique de la spécification. Étape 8: Vous devez recommencer les étapes 4 à 7 pour tous les Cas d’Utilisation de base. Étape 9: Identifiez les acteurs secondaires (par exemple, les acteurs de maintenance) et recommencez les étapes de 2 à 8 pour les acteurs secondaires. 3 Conclusion Ce document est une première présentation de l’articulation entre les trois éléments qui constituent toujours une première approche d’un processus d’analyse « objet » utilisant les digrammes UML : • • • • Cas d’utilisation (généraliste) Scénarios correspondants Pour chacun des scénarios, diagramme de séquence d’objets Pour synthétiser plusieurs scénarios, diagramme d’activités L’observation des diagrammes de séquences va nous amener à considérer qu’il existe parfois des séquences de messages entre objets qui se retrouvent d’un diagramme à l’autre. Il faut alors envisager un regroupement de ces séquences en une séquence unique qui constituera un « sous-cas d’utilisation » relié au cas principal par un <<include>>. A l’opposé, il peut se trouver une sous séquence particulière renvoyant plutôt à une option possible. Ce sera alors un sous cas d’utilisation correspondant à une extension du cas principal. Il sera relié par une relation <<extend>>. Tout cela n’est possible que par une approche itérative entre les trois composants déjà cités (Cas d’utilisation, scénarios, diagrammes de séquences). L’objectif est de raffiner le cas d’utilisation jusqu’à obtenir un niveau de décomposition et de granularité pertinents au regard de l’analyse que nous conduisons. Un prochain polycopié sera consacré à ce processus itératif, en présentant de façon plus détaillée les diagrammes de séquences. Enfin, une dernière précision qui peut paraître évidente pour tout le monde, mais l’expérience montre qu’il est souvent nécessaire de la reformuler. Dans un premier temps, les scénarios et les diagrammes de séquence représentent l’activité des objets « métier » . Ce n’est que dans un second temps qu’ils donneront naissance à des objets informatiques. Garder cela présent à l’esprit, c’est garantir que le futur système sera une image fidèle (aussi fidèle que possible !) de la réalité _____________________________________________________________________________ Le Langage UML 2.0 Claude Belleil Université de Nantes 15 Index du Texte 1 2 Introduction....................................................................................................................................... 1 Les Cas d’utilisation ......................................................................................................................... 1 2.1 flots d’événements...................................................................................................................... 1 2.2 Formalisme de représentation.................................................................................................... 2 2.2.1 Les Acteurs ........................................................................................................................ 3 2.2.2 Les Cas d’utilisation........................................................................................................... 4 2.2.3 Notion de scénario............................................................................................................. 5 2.3 Les relations dans les cas d’utilisation ....................................................................................... 5 2.3.1 La relation <<Association>> .............................................................................................. 7 2.3.2 La relation <<Extend>> ..................................................................................................... 8 2.3.3 La relation <<Include>> ................................................................................................... 10 2.3.4 La relation <<Generalize>> ............................................................................................. 12 2.4 Construction des Cas d’utilisation ............................................................................................ 12 2.4.1 Les Scénarios .................................................................................................................. 12 2.4.2 Processus d’élaboration des Cas d’Utilisation................................................................. 13 2.4.3 Règles de mise en œuvre................................................................................................ 13 2.4.4 Cas d’Utilisation : un processus d'élaboration itératif et contractuel ............................... 14 3 Conclusion...................................................................................................................................... 15 Index des Figures Figure 1 : Représentation des acteurs .................................................................................................... 4 Figure 2: Un Cas d’Utilisation se représente sous la forme d’un ovale .................................................. 5 Figure 3: Représentation symbolique de scénarios alternatifs d'un cas d'utilisation .............................. 5 Figure 4 : Les différents cas d'utilisation du système « Magasin» .......................................................... 6 Figure 5 : Les mêmes cas raffinés et reliés............................................................................................. 7 Figure 6: Relations stéréotypées «association » .................................................................................... 8 Figure 7: Relations stéréotypées "extend" .............................................................................................. 9 Figure 8 : Exemple d’extension à partir d’un scénario nominal............................................................... 9 Figure 9: Exemple de relation d’extension avec spécification du nom du point d’extension ................ 10 Figure 10 : Relations stéréotypées "Include" ........................................................................................ 11 Figure 11 : Exemple d'inclusion dans un scénario nominal ................................................................. 11 Figure 12 : Relation stéréotypées "Généralize" .................................................................................... 12 _____________________________________________________________________________ Le Langage UML 2.0 Claude Belleil Université de Nantes 16 Annexe 1 Fiche de description d’un scénario de cas d’utilisation Préparation à la formalisation d’un diagramme de séquence d’objets (scénario nominal) ou d’un diagramme d’activités (scénarios nomimal et alternatifs) Numéro et Nom du Cas Objectif Date de création : Date de la dernière mise à jour Acteur principal Acteur secondaire Pré - conditions Post – conditions Déclencheur Scénario nominal Scénarios Alternatifs Extensions Cas d’utilisation inclus Cas d’utilisation optionnels Exigences spéciales Alternatives et technologiques contraintes Problèmes ouverts : _____________________________________________________________________________ Le Langage UML 2.0 Claude Belleil Université de Nantes 17 Annexe 2 Historique des Cas d’utilisation C’est à Ivar Jacobson, auteur de la méthode Objectory que l’on doit les premières formulations. Cette méthode a ensuite été complétée notamment par les Use case pour devenir OOSE : Object-Oriented Software Engineering. La définition de Jacobson en 1995 est la suivante: « A use case is a sequence of transactions in a system whose task is to yield a measurable value to an individual actor of the system." Jacobson fait des cas d'utilisation un guide pour l'analyse des besoins et l'architecture complète d'un système logiciel. Il en souligne deux avantages essentiels. : "Lorsque nous souhaitons modifier le comportement d' un système, nous refaisons le modèle de l' acteur concerné et le cas d' utilisation. L' architecture de tout le système dépendra de ce que les utilisateurs veulent en faire (...) Le modèle des besoins est facile à comprendre et à formuler du point de vue de l' utilisateur, de sorte que nous pouvons facilement parler avec les utilisateurs et vérifier que nous construisons bien le système correct qui répond à leurs besoins" Les cas d'utilisation recentrent l'expression des besoins sur les utilisateurs, en partant du point de vue qu'un système est construit pour eux. La structuration de la démarche s'effectue par rapport aux interactions d'une seule catégorie d'utilisateurs à la fois ; cette partition de l'ensemble des besoins réduit considérablement la complexité de la détermination des besoins. Laurent Piechocki de la société Valtech note sur le site internet qu’il consacre à la présentation d’UML (http://uml.free.fr) : « Le modèle conceptuel est le type de diagramme UML qui possède la notation la plus simple ; mais paradoxalement c' est aussi celui qui est le plus mal compris! Au début des années 90, Ivar Jacobson (inventeur de OOSE, une des méthodes fondatrices d' UML) a été nommé chef d' un énorme projet informatique chez Ericsson. Le hic, c' est que ce projet était rapidement devenu ingérable, les ingénieurs d' Ericsson avaient accouché d' un monstre. Personne ne savait vraiment quelles étaient les fonctionnalités du produit, ni comment elles étaient assurées, ni comment les faire évoluer... Classique lorsque les commerciaux promettent monts et merveilles à tous les clients qu' ils démarchent, sans se soucier des contraintes techniques, que les clients ne savent pas exprimer leurs besoins et que les ingénieurs n' ont pas les ressources pour développer le mouton à cinq pattes qui résulte de ce chaos. Pour éviter de foncer droit dans un mur et mener à bien ce projet critique pour Ericsson, Jacobson a eu une idée. Plutôt que de continuer à construire une tour de Babel, pourquoi ne pas remettre à plat les objectifs réels du projet ? En d' autres termes : quels sont les besoins réels des clients, ceux qui conditionneront la réussite du projet ? Ces besoins critiques, une fois identifiés et structurés, permettront enfin de cerner ce qui est important pour la réussite du projet. Le bénéfice de cette démarche simplificatrice est double. D' une part, tous les acteurs du projet ont une meilleure compréhension du système à développer, d' autre part, les besoins des utilisateurs, une fois clarifiés, serviront de fil rouge, tout au long du cycle de développement. A chaque itération de la phase d' analyse, on clarifie, affine et valide les besoins des utilisateurs ; à chaque itération de la phase de conception et de réalisation, _____________________________________________________________________________ Le Langage UML 2.0 Claude Belleil Université de Nantes 18 on veille à la prise en compte des besoins des utilisateurs et à chaque itération de la phase de test, on vérifie que les besoins des utilisateurs sont satisfaits. Simple mais génial. Pour la petite histoire, sachez que grâce à cette démarche initiée par Jacobson, Ericsson a réussi à mener à bien son projet et a gagné une notoriété internationale dans le marché de la commutation. Morale de cette histoire : La détermination et la compréhension des besoins sont souvent difficiles car les intervenants sont noyés sous de trop grandes quantités d' informations. Or, comment mener à bien un projet si l' on ne sait pas où l' on va ? Conclusion : il faut clarifier et organiser les besoins des clients (les modéliser). Jacobson identifie les caractéristiques suivantes pour les modèles : Un modèle est une simplification de la réalité. Il permet de mieux comprendre le système qu' on doit développer. Les meilleurs modèles sont proches de la réalité. Les use cases, permettent de modéliser les besoins des clients d' un système et doivent aussi posséder ces caractéristiques. Ils ne doivent pas chercher l' exhaustivité, mais clarifier, filtrer et organiser les besoins! Une fois identifiés et structurés, ces besoins : définissent le contour du système à modéliser (ils précisent le but à atteindre), permettent d' identifier les fonctionnalités principales (critiques) du système. Les use cases ne doivent donc en aucun cas décrire des solutions d' implémentation. Leur but est justement d' éviter de tomber dans la dérive d' une approche fonctionnelle, où l' on liste une litanie de fonctions que le système doit réaliser. Bien entendu, rien n' interdit de gérer à l' aide d' outils (Doors, Requisite Pro, etc...) les exigences systèmes à un niveau plus fin et d' en assurer la traçabilité, bien au contraire. Mais un modèle conceptuel qui identifie les besoins avec un plus grand niveau d' abstraction reste indispensable. Avec des systèmes complexes, filtrer l' information, la simplifier et mieux l' organiser, c' est rendre l' information exploitable. Produisez de l' information éphémère, complexe et confuse, vous obtiendrez un joyeux "désordre" (pour rester poli). Dernière remarque : Utilisez les use cases tels qu' ils ont été pensés par leurs créateurs ! UML est issu du terrain. Si vous utilisez les use cases sans avoir en tête la démarche sousjacente, vous n' en tirerez aucun bénéfice ». _____________________________________________________________________________ Le Langage UML 2.0 Claude Belleil Université de Nantes 19