# Cas d'ús

En enginyeria del programari, un cas d'ús és una tècnica per a la captura de requisits potencials d'un nou sistema o una actualització de programari. Cada cas d'ús proporciona un o més escenaris que indiquen com hauria d'interaccionar el sistema amb l'usuari o amb un altre sistema per aconseguir un objectiu específic. Normalment, en els casos d'ús s'evita l'ús d'argots tècniques, preferint en el seu lloc un llenguatge més proper a l'usuari final. De vegades, s'utilitza a usuaris sense experiència amb els analistes per al desenvolupament de casos d'ús.
En altres paraules, un cas d'ús és una seqüència d'interaccions que es desenvoluparan entre un sistema i els seus actors en resposta a un esdeveniment que inicia un actor principal sobre el mateix sistema. Els diagrames de casos d'ús serveixen per especificar la comunicació i el comportament d'un sistema mitjançant la seva interacció amb els usuaris i / o altres sistemes. O el que és igual, un diagrama que mostra la relació entre els actors i els casos d'ús en un sistema. Una relació és una connexió entre els elements del model, per exemple l'especialització i la generalització són relacions. Els diagrames de casos d'ús s'utilitzen per il·lustrar els requeriments del sistema en mostrar com reacciona a esdeveniments que es produeixen en el seu àmbit o en ell mateix.

## Definicions
### Actor

Un actor és una entitat externa, que interactua amb el sistema interpretant un rol. Un actor pot ser una persona, un dispositiu, un procés, un sistema, etc. Els actors no formen part del sistema, sinó que hi entren informació i en reben informació. Un exemple d'actor podria ser el temps. Hi ha esdeveniments d'un sistema que passen regularment (com per exemple pagar el sou dels treballadors). Això es fa automàticament però el sistema ha de rebre un senyal per a fer-ho. En aquests casos s'acostuma a fer servir un actor Temps que és l'encarregat d'iniciar aquests esdeveniments.

### Comunicació

Una comunicació relaciona un cas d'ús amb un actor que denomina la participació de l'actor en el mateix cas d'ús.

### Escenari

Un escenari és una seqüència d'accions i interaccions entre els actors i el sistema. El podríem definir com un camí a través del cas d'ús. Per exemple, l'escenari de l'èxit en la compra d'un article pagant amb targeta o l'escenari de l'error al comprar pel fet que el banc ha refusat la targeta. Tots aquests escenaris engloben el cas d'ús de comprar un article.

## Identificació dels casos d'ús

El primer de tot és identificar tots els actors del sistema. Cal saber qui o què interactuarà amb el sistema per tal de poder-se preguntar quin és el seu objectiu o intenció en interactuar amb el sistema. Un cop definits cal preguntar-se quins són els objectius dels diferents actors dins del sistema i trobar totes les formes d'interactuar que tenen amb el sistema. Cada forma d'interactuar correspon a un cas d'ús.
Dit de manera estructurada:
* Identificar els usuaris del sistema
* Trobar tots els rols que juguen els usuaris i que són rellevants al sistema
* Per a cada rol, identificar totes les formes d'interactuar amb el sistema (objectius).
* Crear un cas d'ús per a cada objectiu.
* Estructurar els casos d'ús.
* Revisar i validar amb l'usuari.

## Tipus de casos d'ús

* Segons el nivell de detall:
** Breu: Descripció simple.
** Informal: Descripció més elaborada que cobreix diversos escenaris.
** Complet: Descripció detallada amb totes les possibilitats.
* Segons la importància:
** Primari.
** Secundari.
** Opcional.
* Segons el nivell d'abstracció:
** Essencial: intencions de l'usuari i responsabilitats del sistema.
** Concret: S'hi inclouen detalls d'implementació (GUI i tecnologia).

## Representació dels casos d'ús

Per a representar els casos d'ús utilitzarem fitxes de casos d'ús i diagrames de casos d'ús.
La fitxa de cas d'ús descriu de manera més detallada el cas d'ús. Contindrà:
* El nom del cas d'ús
* La versió i la data
* Una descripció informal del cas d'ús
* Els actors que interactuen
* Quan comença i quan acaba
* El comportament esperat dels actors i del sistema
* El flux principal d'esdeveniments i la seqüència de variacions possibles
* Excepcions que puguin passar
Distingirem entre les fitxes de cas d'ús creades per i per a informàtics, amb detalls més tècnics, i les fitxes de cas d'ús per a usuaris que no fan servir tecnicismes i expliquen de manera més informal què fa el cas d'ús.
Els diagrames de cas d'ús representen els escenaris del cas d'ús d'una manera fàcil i ràpida de comprendre. S'utilitzen símbols per definir els actors, els escenaris i les comunicacions. Un diagrama de cas d'ús es pot desenvolupar en tants nivells com es vulgui, descomponent el cas d'ús en casos d'ús més petits i enllaçant-los. Així, es poden representar diferents escenaris.
Un cop definits els diagrames de cada cas d'ús, es pot donar peu als diagrames de casos d'ús que engloben tots els casos d'ús en un sol diagrama, el qual sol contenir cada cas d'ús com un simple element sense mostrar tots els seus escenaris, ja que significaria tenir un diagrama molt carregat i, per tant, difícil d'entendre. Aleshores, tindrem un diagrama de casos d'ús per mostrar de manera simple i elegant tot el que fa el sistema i com interactua amb l'exterior, i per cada cas d'ús, una fitxa i/o un diagrama de cas d'ús que mostri més detalladament el comportament del cas d'ús, mantenint la senzillesa.

## Relacions entre casos d'ús

Entre casos d'ús pot haver-hi diferents relacions. Veure diagrama de casos d'ús.

### Generalització

Una generalització d'un cas d'ús mostra que el cas d'ús X fa tots els processos del cas d'ús Y més algun procés específic.

### Inclusió

Un cas d'ús pot incorporar explícitament el comportament d'altres casos d'ús com a fragment del seu propi comportament. Això ens permet mostrar funcionalitats comunes entre diversos casos d'ús. Així doncs, hi haurà alguns casos d'ús que seran activats per altres casos d'ús.

### Extensió

Un cas d'ús es pot definir com una extensió opcional d'un altre cas d'ús. És a dir, dins del cas d'ús X s'executa Y quan es compleix una condició. Hi pot haver diverses extensions d'un mateix cas d'ús.

## Una mica d'Història de la programació

El 1986, Ivar Jacobson, important contribuent al desenvolupament dels models de UML i procés unificat, va crear el concepte de cas d'ús. S'han realitzat moltes millores al concepte que es va establir llavors, però probablement la més influent i significativa, en termes de definició del terme cas d'ús, va ser la de Alistair Cockburn en el llibre Escriu casos d'ús efectius ' 'publicat l'any 2000.
Durant els anys 1990 els casos d'ús es van convertir en una de les pràctiques més comunes per a la captura de requisits funcionals, especialment amb el desenvolupament del paradigma de la programació orientada a objectes, on es van originar, si bé es pot utilitzar amb resultats igualment satisfactoris amb altres paradigmes de programació.
El 2011 Jacobson va publicar una actualització del seu treball, anomenat Cas d'Ús 2.0, amb la intenció d'incorporar moltes de les seves experiències pràctiques de l'aplicació de casos d'ús des de la creació original del concepte

## Limitacions

Els casos d'ús poden ser útils per establir requisits de comportament, però no estableixen completament els requisits funcionals ni permeten determinar els requisits no funcionals. Els casos d'ús han de complementar-se amb informació addicional com regles de negoci, requisits no funcionals, diccionari de dades que complementin els requeriments del sistema. No obstant això l'enginyeria del funcionament especifica que cada cas crític de l'ús ha de tenir un requisit no funcional centrat en el funcionament associat.

## Referències

* ↑ Rosenberg, Doug. Applying use case driven object modeling with UML (en anglès). Mendeley. ISBN 0201730391.
* ↑ Larman, Craig. UML y patrones : una introducción al análisis y diseño orientado a objetos y al proceso unificado (en castellà). 2ª ed. Mendeley. ISBN 8420534382.