<div class="page"> <div class="cover text-center"> <img class="mx-auto" src=/itb/images/logo_mislata.png alt="logo"> # Diagrames de casos d'ús <div class="text-end fit-content ms-auto my-3 mt-auto pt-3"> <p><strong>Autor:</strong> Joan Puigcerver Ibáñez</p> <p><strong>Correu electrònic:</strong> j.puigcerveribanez@edu.gva.es</p> <p><strong>Curs:</strong> 2024/2025</p> </div> <div> <p class="fw-bold mb-0">Llicència: BY-NC-SA</p> <p class="d-none d-md-block">(Reconeixement - No Comercial - Compartir Igual)</p> <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ca" target="_blank"> <img class="mx-auto" src="/itb/images/license.png" alt="Licence"/> </a> </div><!--license--> </div><!--cover--> </div><!--page--> {:toc} ## Introducció Els __diagrames de casos d'ús__ són un tipus de __diagrames de comportament UML__. ![](/itb/DAM-ED/UD7/img/uml/uml_comportament_usecase.png){height=600}{.center} Els __diagrames de casos d'ús__ són un tipus de diagrama que s'utilitza per modelar i representar __les interaccions entre un sistema i els seus actors__. Un actor pot ser qualsevol entitat que interactua amb el sistema, com ara un usuari, un dispositiu o un altre sistema. Un diagrama de casos d'ús representa els requisits funcionals del sistema mostrant com els actors interactuen amb aquest per assolir determinats objectius. Els elements bàsics d'un diagrama de casos d'ús d'UML inclouen actors, casos d'ús i les relacions entre ells. Els actors es representen com a figures de pal, mentre que els casos d'ús es representen amb ovals. Les relacions entre actors i casos d'ús es representen mitjançant línies. ## Elements d'un diagrama de casos d'ús ### Sistemes Un __sistema__ fa referència al sistema o __aplicació de software que s'està modelant__. És el focus del diagrama i representa la col·lecció de components de programari, mòduls i altres elements que treballen conjuntament per assolir un conjunt d'objectius o funcions. El sistema normalment es representa com un rectangle al diagrama, on els casos d'ús s'especifiquen dins del rectangle i els actors fora d'aquest. El rectangle també es pot etiquetar amb el nom del sistema o aplicació que s'està modelant. ![](/itb/DAM-ED/UD7/img/use_case/banking_usecase_system.png){.center} En aquest exemple, anem a modelar una __aplicació bancària__, que serà el __sistema__ d'aquest diagrama. ### Actors Un __actor__ és una __entitat que interactua amb el sistema__ que s'està modelant. Els actors poden ser persones, altres sistemes de programari, dispositius de maquinari o qualsevol altra entitat externa que interactua amb el sistema d'alguna manera. Els actors normalment es representen com a figures de pal al diagrama i es col·loquen fora del límit del sistema. El nom de l'actor es pot escriure baix de la figura per identificar l'entitat concreta que es representa. És important que cada actor interactue almenys una vegada en el sistema (tinga almenys una associació amb algún cas d'ús). Els actors poden ser: - __Primaris__: Interactua directament amb el sistema que s'està modelant per assolir un objectiu o tasca específica. Els actors principals són els principals usuaris del sistema i normalment són el focus del diagrama de casos d'ús. Sovint, són els actors als quals el sistema està dissenyat per servir, i els seus objectius i tasques són el principal motor del disseny del sistema. - __Secondaris__: Interactua indirectament amb el sistema que s'està modelant. Els actors secundaris poden proporcionar entrada o eixida al sistema, però no són els usuaris principals del sistema i els seus objectius i tasques no són el focus principal del diagrama de casos d'ús. En canvi, els actors secundaris juguen un paper de suport en el funcionament del sistema, ajudant a facilitar les interaccions entre els actors primaris i el sistema. Normalment, aquests __reaccionen__ a les accions que realitzen els actors primaris. Normalment, els __actors primaris__ es dibuixen a __l'esquerra__ del sistema, mentre que els __actors secondaris__ es dibuixen a la dreta. ![](/itb/DAM-ED/UD7/img/use_case/banking_usecase_actors.png){.center} En aquest exemple, tenim dos actors. Un actor primari __Client__, que modela els clients del banc que utilitzaràn l'aplicació. Per una altra banda, tenim l'actor secondari ~~Bob~~ __Banc__, que reaccionarà a les accions del client i proporcionarà les dades que utilitzarà l'aplicació. ### Casos d'ús Un __cas d'ús__ és una descripció d'una tasca o funció específica per a la qual està dissenyat el sistema que s'està modelant. Un cas d'ús representa una seqüència d'accions o passos que el sistema fa per aconseguir un objectiu específic, normalment com a resposta a una sol·licitud d'un actor. Els casos d'ús normalment es representen com cercles al diagrama, amb el nom del cas d'ús escrit dins del cercle. Els casos d'ús estan connectats amb els actors que els inicien mitjançant línies o fletxes, que indiquen la direcció de la interacció. És important denominar els casos d'us amb un __verb__, ja que els casos d'ús especifiquen una __acció__. ![Banking Casos d'ús](/itb/DAM-ED/UD7/img/use_case/banking_usecases.png){.center} En aquest exemple, hem afegit diferent accions que els dieferents actors poden realitzar en el nostre sistema. ### Relacions Una __relació__ és una connexió o __associació__ entre dos o més elements del diagrama. Les relacions s'utilitzen per representar les interaccions i dependències entre els actors, casos d'ús i altres elements del diagrama. Hi ha diversos tipus de relacions que es poden utilitzar als diagrames de casos d'ús d'UML. #### Associacions Una relació d'associació representa una relació entre dos o més elements del diagrama. Les associacions es poden utilitzar per connectar actors amb casos d'ús, casos d'ús amb altres casos d'ús o actors amb altres actors. Normalment es representen com una línia que connecta els dos elements, amb fletxes opcionals que indiquen la direcció de la relació. ![Associació](/itb/DAM-ED/UD7/img/use_case/association.png){.center} #### Include Una __relació d'inclusió__ representa una relació entre dos o més casos d'ús on un cas d'ús __sempre inclou els passos d'un altre__ cas d'ús. Les relacions d'inclusió es representen normalment com una línia discontínua amb una fletxa que apunta des del cas d'ús base fins al cas d'ús inclòs, on cal expecificar el text `<<include>>`. ![Include](/itb/DAM-ED/UD7/img/use_case/include.png){.center} ::: example Un cas d'ús _Log In_ ha d'incloure _Comprovar credencials_. ![Banking Include](/itb/DAM-ED/UD7/img/use_case/banking_include.png){.center} ::: #### Extend Una __relació extesa__ representa una relació entre dos o més casos d'ús on un cas d'ús __afegeix passos addicionals opcionals__ a un altre cas d'ús. Les relacions exteses es representen normalment com una línia discontínua amb una fletxa que apunta des del cas d'ús estes fins al cas d'ús base. on cal expecificar el text `<<extend>>`. ![Extend](/itb/DAM-ED/UD7/img/use_case/extend.png){.center} ::: example Un cas d'ús _Realitzar transferència bancària_ pot donar l'opció a l'usuari a _Imprimir el justificant_. ![Banking Extend](/itb/DAM-ED/UD7/img/use_case/banking_extend.png){.center} ::: #### Generalització o herència Una __generalització__ representa una relació entre dos o més elements del diagrama on un element és __un tipus més específic de l'altre__. Aquest tipus de relació es pot definir per __Actors__ i per a __Casos d'ús__. En el cas dels __actors__, s'utilitzen per distingir actors que hereden els aspectes d'un altre actor. Per exemple, un actor _Estudiant_ pot ser un tipus més específic d'actor _Usuari_. ![Banking Generalization Actor](/itb/DAM-ED/UD7/img/use_case/generalization_actors.png){.center} En el cas dels __cas d'ús__, s'utilitzen per especificar els casos concrets d'un altre cas d'ús. ::: example Un cas d'ús _Realitzar pagament_ pot ser d'uns tipus més específics com _Pagar en efectiu_ o _Pagar en targeta_. ![Banking Generalization Use Case](/itb/DAM-ED/UD7/img/use_case/generalization.png){.center} ::: Les relacions de generalització es representen normalment com una línia amb una fletxa buida que apunta des de l'element més específic fins a l'element més general. ## Diagrama de casos d'ús complet ::: example Podeu consultar l'explicacó completa a [Exemple: Aplicació bancària](../examples/01_bank_use_case.html) <div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="{&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;resize&quot;:true,&quot;toolbar&quot;:&quot;zoom layers tags lightbox&quot;,&quot;edit&quot;:&quot;_blank&quot;,&quot;xml&quot;:&quot;&lt;mxfile host=\&quot;app.diagrams.net\&quot; modified=\&quot;2024-04-22T09:18:27.491Z\&quot; agent=\&quot;Mozilla&#x2F;5.0 (X11; Linux x86_64) AppleWebKit&#x2F;537.36 (KHTML, like Gecko) Chrome&#x2F;123.0.0.0 Safari&#x2F;537.36\&quot; etag=\&quot;XePaXVIK48OhZ994X6lB\&quot; version=\&quot;24.2.7\&quot; type=\&quot;device\&quot;&gt;\n &lt;diagram id=\&quot;cEy1NtEsgTI_BelX2UjX\&quot; name=\&quot;Pàgina-1\&quot;&gt;\n &lt;mxGraphModel dx=\&quot;2074\&quot; dy=\&quot;1114\&quot; grid=\&quot;1\&quot; gridSize=\&quot;10\&quot; guides=\&quot;1\&quot; tooltips=\&quot;1\&quot; connect=\&quot;1\&quot; arrows=\&quot;1\&quot; fold=\&quot;1\&quot; page=\&quot;1\&quot; pageScale=\&quot;1\&quot; pageWidth=\&quot;827\&quot; pageHeight=\&quot;1169\&quot; math=\&quot;0\&quot; shadow=\&quot;0\&quot;&gt;\n &lt;root&gt;\n &lt;mxCell id=\&quot;0\&quot; &#x2F;&gt;\n &lt;mxCell id=\&quot;1\&quot; parent=\&quot;0\&quot; &#x2F;&gt;\n &lt;mxCell id=\&quot;Bulnb-fsSEnwmhny_e_g-10\&quot; value=\&quot;Client\&quot; style=\&quot;shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;\n &lt;mxGeometry x=\&quot;100\&quot; y=\&quot;390\&quot; width=\&quot;40\&quot; height=\&quot;80\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-1\&quot; value=\&quot;Banking App\&quot; style=\&quot;rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;fontStyle=1\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;\n &lt;mxGeometry x=\&quot;190\&quot; y=\&quot;80\&quot; width=\&quot;410\&quot; height=\&quot;500\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-2\&quot; value=\&quot;Servidor Banc\&quot; style=\&quot;shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;\n &lt;mxGeometry x=\&quot;640\&quot; y=\&quot;240\&quot; width=\&quot;40\&quot; height=\&quot;80\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-13\&quot; value=\&quot;&amp;amp;lt;&amp;amp;lt;include&amp;amp;gt;&amp;amp;gt;\&quot; style=\&quot;edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.963;exitY=0.317;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;startArrow=none;startFill=0;endArrow=open;endFill=0;startSize=12;endSize=12;exitPerimeter=0;\&quot; parent=\&quot;1\&quot; source=\&quot;XFR0C_TBxOH167qgRVbT-3\&quot; target=\&quot;XFR0C_TBxOH167qgRVbT-4\&quot; edge=\&quot;1\&quot;&gt;\n &lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-3\&quot; value=\&quot;Log In\&quot; style=\&quot;ellipse;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;\n &lt;mxGeometry x=\&quot;240\&quot; y=\&quot;150\&quot; width=\&quot;80\&quot; height=\&quot;60\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-4\&quot; value=\&quot;Comprovar credencials\&quot; style=\&quot;ellipse;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;\n &lt;mxGeometry x=\&quot;430\&quot; y=\&quot;120\&quot; width=\&quot;80\&quot; height=\&quot;60\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-5\&quot; value=\&quot;Veure saldo\&quot; style=\&quot;ellipse;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;\n &lt;mxGeometry x=\&quot;240\&quot; y=\&quot;240\&quot; width=\&quot;80\&quot; height=\&quot;60\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-14\&quot; value=\&quot;&amp;amp;lt;&amp;amp;lt;include&amp;amp;gt;&amp;amp;gt;\&quot; style=\&quot;edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.975;exitY=0.717;exitDx=0;exitDy=0;entryX=-0.009;entryY=0.367;entryDx=0;entryDy=0;dashed=1;startArrow=none;startFill=0;endArrow=open;endFill=0;startSize=12;endSize=12;entryPerimeter=0;exitPerimeter=0;\&quot; parent=\&quot;1\&quot; source=\&quot;XFR0C_TBxOH167qgRVbT-6\&quot; target=\&quot;XFR0C_TBxOH167qgRVbT-10\&quot; edge=\&quot;1\&quot;&gt;\n &lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-6\&quot; value=\&quot;Realitzar transferència\&quot; style=\&quot;ellipse;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;\n &lt;mxGeometry x=\&quot;240\&quot; y=\&quot;310\&quot; width=\&quot;80\&quot; height=\&quot;60\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-15\&quot; value=\&quot;&amp;amp;lt;&amp;amp;lt;include&amp;amp;gt;&amp;amp;gt;\&quot; style=\&quot;edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.018;entryY=0.65;entryDx=0;entryDy=0;dashed=1;startArrow=none;startFill=0;endArrow=open;endFill=0;startSize=12;endSize=12;entryPerimeter=0;\&quot; parent=\&quot;1\&quot; source=\&quot;XFR0C_TBxOH167qgRVbT-7\&quot; target=\&quot;XFR0C_TBxOH167qgRVbT-10\&quot; edge=\&quot;1\&quot;&gt;\n &lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-7\&quot; value=\&quot;Realitzar pagament\&quot; style=\&quot;ellipse;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;\n &lt;mxGeometry x=\&quot;290\&quot; y=\&quot;380\&quot; width=\&quot;80\&quot; height=\&quot;60\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-16\&quot; value=\&quot;&amp;amp;lt;&amp;amp;lt;extend&amp;amp;gt;&amp;amp;gt;\&quot; style=\&quot;edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.975;entryY=0.3;entryDx=0;entryDy=0;dashed=1;startArrow=none;startFill=0;endArrow=open;endFill=0;startSize=12;endSize=12;entryPerimeter=0;\&quot; parent=\&quot;1\&quot; source=\&quot;XFR0C_TBxOH167qgRVbT-8\&quot; target=\&quot;XFR0C_TBxOH167qgRVbT-6\&quot; edge=\&quot;1\&quot;&gt;\n &lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-8\&quot; value=\&quot;Imprimir justificant\&quot; style=\&quot;ellipse;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;\n &lt;mxGeometry x=\&quot;460\&quot; y=\&quot;280\&quot; width=\&quot;80\&quot; height=\&quot;60\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-12\&quot; value=\&quot;&amp;amp;lt;&amp;amp;lt;extend&amp;amp;gt;&amp;amp;gt;\&quot; style=\&quot;edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.975;entryY=0.667;entryDx=0;entryDy=0;dashed=1;startArrow=none;startFill=0;endArrow=open;endFill=0;startSize=12;endSize=12;entryPerimeter=0;\&quot; parent=\&quot;1\&quot; source=\&quot;XFR0C_TBxOH167qgRVbT-9\&quot; target=\&quot;XFR0C_TBxOH167qgRVbT-3\&quot; edge=\&quot;1\&quot;&gt;\n &lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-9\&quot; value=\&quot;Mostrar missatge d&amp;#39;error\&quot; style=\&quot;ellipse;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;\n &lt;mxGeometry x=\&quot;440\&quot; y=\&quot;190\&quot; width=\&quot;80\&quot; height=\&quot;60\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-10\&quot; value=\&quot;Comprovar si hi ha saldo suficient\&quot; style=\&quot;ellipse;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;\n &lt;mxGeometry x=\&quot;450\&quot; y=\&quot;350\&quot; width=\&quot;130\&quot; height=\&quot;60\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-17\&quot; value=\&quot;\&quot; style=\&quot;endArrow=none;html=1;rounded=0;startSize=12;endSize=12;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.3333333333333333;exitDx=0;exitDy=0;exitPerimeter=0;\&quot; parent=\&quot;1\&quot; source=\&quot;6OrTN1pEU6hki6MGTOYN-1\&quot; target=\&quot;XFR0C_TBxOH167qgRVbT-3\&quot; edge=\&quot;1\&quot;&gt;\n &lt;mxGeometry width=\&quot;50\&quot; height=\&quot;50\&quot; relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;\n &lt;mxPoint x=\&quot;160\&quot; y=\&quot;280\&quot; as=\&quot;sourcePoint\&quot; &#x2F;&gt;\n &lt;mxPoint x=\&quot;440\&quot; y=\&quot;230\&quot; as=\&quot;targetPoint\&quot; &#x2F;&gt;\n &lt;&#x2F;mxGeometry&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-18\&quot; value=\&quot;\&quot; style=\&quot;endArrow=none;html=1;rounded=0;startSize=12;endSize=12;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.3333333333333333;exitDx=0;exitDy=0;exitPerimeter=0;\&quot; parent=\&quot;1\&quot; source=\&quot;Bulnb-fsSEnwmhny_e_g-10\&quot; target=\&quot;XFR0C_TBxOH167qgRVbT-5\&quot; edge=\&quot;1\&quot;&gt;\n &lt;mxGeometry width=\&quot;50\&quot; height=\&quot;50\&quot; relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;\n &lt;mxPoint x=\&quot;160\&quot; y=\&quot;280\&quot; as=\&quot;sourcePoint\&quot; &#x2F;&gt;\n &lt;mxPoint x=\&quot;250\&quot; y=\&quot;190\&quot; as=\&quot;targetPoint\&quot; &#x2F;&gt;\n &lt;&#x2F;mxGeometry&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-19\&quot; value=\&quot;\&quot; style=\&quot;endArrow=none;html=1;rounded=0;startSize=12;endSize=12;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.3333333333333333;exitDx=0;exitDy=0;exitPerimeter=0;\&quot; parent=\&quot;1\&quot; source=\&quot;Bulnb-fsSEnwmhny_e_g-10\&quot; target=\&quot;XFR0C_TBxOH167qgRVbT-6\&quot; edge=\&quot;1\&quot;&gt;\n &lt;mxGeometry width=\&quot;50\&quot; height=\&quot;50\&quot; relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;\n &lt;mxPoint x=\&quot;160\&quot; y=\&quot;280\&quot; as=\&quot;sourcePoint\&quot; &#x2F;&gt;\n &lt;mxPoint x=\&quot;260\&quot; y=\&quot;200\&quot; as=\&quot;targetPoint\&quot; &#x2F;&gt;\n &lt;&#x2F;mxGeometry&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-20\&quot; value=\&quot;\&quot; style=\&quot;endArrow=none;html=1;rounded=0;startSize=12;endSize=12;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.3333333333333333;exitDx=0;exitDy=0;exitPerimeter=0;\&quot; parent=\&quot;1\&quot; source=\&quot;Bulnb-fsSEnwmhny_e_g-10\&quot; target=\&quot;XFR0C_TBxOH167qgRVbT-7\&quot; edge=\&quot;1\&quot;&gt;\n &lt;mxGeometry width=\&quot;50\&quot; height=\&quot;50\&quot; relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;\n &lt;mxPoint x=\&quot;160\&quot; y=\&quot;280\&quot; as=\&quot;sourcePoint\&quot; &#x2F;&gt;\n &lt;mxPoint x=\&quot;270\&quot; y=\&quot;210\&quot; as=\&quot;targetPoint\&quot; &#x2F;&gt;\n &lt;&#x2F;mxGeometry&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-21\&quot; value=\&quot;\&quot; style=\&quot;endArrow=none;html=1;rounded=0;startSize=12;endSize=12;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.3333333333333333;entryDx=0;entryDy=0;entryPerimeter=0;\&quot; parent=\&quot;1\&quot; source=\&quot;XFR0C_TBxOH167qgRVbT-5\&quot; edge=\&quot;1\&quot; target=\&quot;XFR0C_TBxOH167qgRVbT-2\&quot;&gt;\n &lt;mxGeometry width=\&quot;50\&quot; height=\&quot;50\&quot; relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;\n &lt;mxPoint x=\&quot;200\&quot; y=\&quot;320\&quot; as=\&quot;sourcePoint\&quot; &#x2F;&gt;\n &lt;mxPoint x=\&quot;640\&quot; y=\&quot;270\&quot; as=\&quot;targetPoint\&quot; &#x2F;&gt;\n &lt;&#x2F;mxGeometry&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-22\&quot; value=\&quot;\&quot; style=\&quot;endArrow=none;html=1;rounded=0;startSize=12;endSize=12;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.3333333333333333;entryDx=0;entryDy=0;entryPerimeter=0;\&quot; parent=\&quot;1\&quot; source=\&quot;XFR0C_TBxOH167qgRVbT-4\&quot; edge=\&quot;1\&quot; target=\&quot;XFR0C_TBxOH167qgRVbT-2\&quot;&gt;\n &lt;mxGeometry width=\&quot;50\&quot; height=\&quot;50\&quot; relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;\n &lt;mxPoint x=\&quot;210\&quot; y=\&quot;330\&quot; as=\&quot;sourcePoint\&quot; &#x2F;&gt;\n &lt;mxPoint x=\&quot;620\&quot; y=\&quot;270\&quot; as=\&quot;targetPoint\&quot; &#x2F;&gt;\n &lt;&#x2F;mxGeometry&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-23\&quot; value=\&quot;\&quot; style=\&quot;endArrow=none;html=1;rounded=0;startSize=12;endSize=12;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.3333333333333333;entryDx=0;entryDy=0;entryPerimeter=0;\&quot; parent=\&quot;1\&quot; source=\&quot;XFR0C_TBxOH167qgRVbT-10\&quot; edge=\&quot;1\&quot; target=\&quot;XFR0C_TBxOH167qgRVbT-2\&quot;&gt;\n &lt;mxGeometry width=\&quot;50\&quot; height=\&quot;50\&quot; relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;\n &lt;mxPoint x=\&quot;220\&quot; y=\&quot;340\&quot; as=\&quot;sourcePoint\&quot; &#x2F;&gt;\n &lt;mxPoint x=\&quot;620\&quot; y=\&quot;270\&quot; as=\&quot;targetPoint\&quot; &#x2F;&gt;\n &lt;&#x2F;mxGeometry&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-26\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;startArrow=none;startFill=0;endArrow=block;endFill=0;startSize=12;endSize=12;\&quot; parent=\&quot;1\&quot; source=\&quot;XFR0C_TBxOH167qgRVbT-24\&quot; target=\&quot;XFR0C_TBxOH167qgRVbT-7\&quot; edge=\&quot;1\&quot;&gt;\n &lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-24\&quot; value=\&quot;Pagar mitjançant transferència\&quot; style=\&quot;ellipse;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;\n &lt;mxGeometry x=\&quot;210\&quot; y=\&quot;480\&quot; width=\&quot;110\&quot; height=\&quot;60\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-27\&quot; style=\&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;startArrow=none;startFill=0;endArrow=block;endFill=0;startSize=12;endSize=12;\&quot; parent=\&quot;1\&quot; source=\&quot;XFR0C_TBxOH167qgRVbT-25\&quot; target=\&quot;XFR0C_TBxOH167qgRVbT-7\&quot; edge=\&quot;1\&quot;&gt;\n &lt;mxGeometry relative=\&quot;1\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;XFR0C_TBxOH167qgRVbT-25\&quot; value=\&quot;Pagar mitjançant Bizum\&quot; style=\&quot;ellipse;whiteSpace=wrap;html=1;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;\n &lt;mxGeometry x=\&quot;340\&quot; y=\&quot;480\&quot; width=\&quot;120\&quot; height=\&quot;55\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;6OrTN1pEU6hki6MGTOYN-1\&quot; value=\&quot;Usuari\&quot; style=\&quot;shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;\&quot; parent=\&quot;1\&quot; vertex=\&quot;1\&quot;&gt;\n &lt;mxGeometry x=\&quot;100\&quot; y=\&quot;150\&quot; width=\&quot;40\&quot; height=\&quot;80\&quot; as=\&quot;geometry\&quot; &#x2F;&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;mxCell id=\&quot;6OrTN1pEU6hki6MGTOYN-5\&quot; value=\&quot;\&quot; style=\&quot;endArrow=block;html=1;rounded=0;endFill=0;endSize=18;\&quot; parent=\&quot;1\&quot; edge=\&quot;1\&quot;&gt;\n &lt;mxGeometry width=\&quot;50\&quot; height=\&quot;50\&quot; relative=\&quot;1\&quot; as=\&quot;geometry\&quot;&gt;\n &lt;mxPoint x=\&quot;120\&quot; y=\&quot;380\&quot; as=\&quot;sourcePoint\&quot; &#x2F;&gt;\n &lt;mxPoint x=\&quot;120\&quot; y=\&quot;260\&quot; as=\&quot;targetPoint\&quot; &#x2F;&gt;\n &lt;&#x2F;mxGeometry&gt;\n &lt;&#x2F;mxCell&gt;\n &lt;&#x2F;root&gt;\n &lt;&#x2F;mxGraphModel&gt;\n &lt;&#x2F;diagram&gt;\n&lt;&#x2F;mxfile&gt;\n\n&quot;}"></div><script type="text/javascript" src="https://viewer.diagrams.net/js/viewer-static.min.js"></script> <figcaption>Figura 3.1: Diagrama de casos d'ús d'una aplicació bancària</figcaption> ::: ## Recursos - https://www.uml-diagrams.org/use-case-diagrams.html - UML Use Case Diagram Tutorial per Lucid Software: https://www.youtube.com/watch?v=zid-MVo7M-E - Diagramas de casos de uso per Universitat Politècnica de València: https://www.youtube.com/watch?v=orvAkFFWo5o - https://ioc.xtec.cat/materials/FP/Recursos/fp_dam_m05_/web/fp_dam_m05_htmlindex/WebContent/u3/a1/continguts.html