Skip to content

Commit

Permalink
Merge pull request #52 from ucudal/feature/usecases
Browse files Browse the repository at this point in the history
Feature/usecases
  • Loading branch information
fmachadopiriz authored Jun 12, 2024
2 parents bac7f2b + e4b6261 commit 3d0ee41
Show file tree
Hide file tree
Showing 12 changed files with 439 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

### 2.4.1 Diagramas de actividad UML

Los diagramas de actividad UML permiten representar flujos de trabajo o
Los diagramas de actividades UML permiten representar flujos de trabajo o
procesos que incluyen opciones, iteraciones y concurrencia, así como los flujos
de datos que ocurren entre actividades relacionadas.

Expand Down
134 changes: 134 additions & 0 deletions 2_Tecnicas_y_herramientas/2_4_4_Diagramas_BPMN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# 2 Técnicas y herramientas

## 2.4 Modelos de comportamiento

### 2.4.4 Diagramas BPMN

BPMN significa *business process model and notation* —modelado y notación de
procesos del negocio—. Es un estándar para el modelado de procesos del negocio
que provee una notación gráfica similar a los [diagramas de actividades
UML](/2_Tecnicas_y_herramientas/2_4_1_Diagramas_de_actividades_UML.md).

Este documento está basado en BPMN 2.0.2[^1].

El objetivo de BPMN es dar soporte a la gestión de los procesos del negocio,
pero también proveer una correspondencia entre los gráficos de la notación y las
construcciones subyacentes de los lenguajes utilizados por herramientas de
automatización de procesos como WS-BPEL[^2].

Los diagramas BPMN tienen típicamente los siguientes elementos gráficos:

* **Objeto de flujo**: evento, actividad, pasarela —*gateways*—.

* **Datos**: objeto de datos, entrada de datos, salida de datos,
almacenamiento de datos.

* **Objeto conector**: flujo de secuencia, flujo de mensajes, asociación,
asociación de datos.

* **Andarivel**: piscinas y carriles.

Un evento es algo que sucede durante el curso de un proceso (ver página 235) o
una coreografía (ver página 339). Estos eventos afectan el flujo del modelo y
generalmente tienen una causa —desencadenante— o un impacto —resultado—. Los
eventos se representan con círculos con centros en blanco para permitir agregar
marcadores en el interior para diferenciar diferentes desencadenantes o
resultados. Hay tres tipos de eventos, según cuándo afectan el flujo: inicio,
intermedio y final.

![Eventos de inicio, intermedio y final](/diagrams/BPMN_Diagram_Events.svg)

*Figura 1: Eventos de inicio, intermedio y final.*

Una actividad es un término genérico para el trabajo que realiza el negocio en
un proceso. Una actividad puede ser atómica o no atómica —compuesta—. Los tipos
de actividades que forman parte de un modelo de procesos son sub-procesos y
tareas, que se representan con rectángulos redondeados. Las actividades se
utilizan tanto en procesos estándar como en coreografías.

![Tareas y sub-procesos](/diagrams/BMPN_Diagram_Activities.svg)

*Figura 2: Tareas y sub-procesos*

Una pasarela —*gateway*— se utiliza para controlar la divergencia y convergencia
de los flujos de secuencia en un proceso y en una coreografía. Por lo tanto,
determinará la ramificación —*branch*—, bifurcación —*fork*—, fusión —*merge*— y
unión —*join*— de caminos. Los marcadores internos indicarán el tipo de
comportamiento.

![Algunas pasarelas](/diagrams/BPMN_Diagram_Gateways.svg)

*Figura 3: Algunas pasarelas*

Algunos tipos de pasarelas son:

* Pasarela exclusiva —XOR—: Crea caminos alternativos en un flujo de proceso. En
una pasarela usada como ramificación, una expresión está asociada a los flujos
de secuencia de salida; el flujo de control pasará por aquél en que la
expresión sea verdadera; las condiciones son excluyentes —no pueden ser todas
verdaderas a la vez—; puede haber un flujo sin expresión, que se tomará si no
se cumple ninguna de las otras expresiones. Cuando esta pasarela es usada como
fusión, combina el flujo de control previamente separado en ramas por una
pasarela exclusiva.

* Pasarela inclusiva —OR—: Crea caminos alternativos o paralelos en un flujo de
proceso. En una pasarela usada como ramificación, una expresión está asociada
a los flujos de secuencia de salida; el flujo de control pasará en paralelo por
todas los flujos de secuencia cuyas condiciones se cumplan; puede haber un
flujo de secuencia sin expresión, que también se ejecuta en paralelo. Cuando
esta pasarela es usada como fusión, combina el flujo previamente separado por
una pasarela inclusiva.

* Pasarela paralela: Crea caminos paralelos en un flujo de procesos. En una
pasarela usada como bifurcación, todos los flujos de salida se ejecutan en
paralelo. Cuando esta pasarela es usada como unión, combina el flujo
previamente separado en ramas paralelas.

* Pasarela compleja: Análoga a la inclusiva pero con un estado interno que
indica si fue activado o si fue reiniciado.

Los flujos de secuencia se utilizan para mostrar el orden en el que se realizan
las actividades en un proceso o en una coreografía.

![Algunos flujos de secuencia](/diagrams/BPMN_Diagram_Sequence_Flows.svg)

*Figura 4: Algunos flujos de secuencia*

Algunos tipos de flujos de secuencia son:

* Flujo normal: Refiere a caminos de flujo de secuencia que no comienzan desde
un evento intermedio adjunto al límite de una actividad. Estos flujos se
representan con una flecha.

* Flujos no controlados: Refiere al flujo que no se ve afectado por ninguna
condición o que no pasa a través de una pasarela; por ejemplo, un flujo de
secuencia que conecta dos actividades. También puede aplicarse a múltiples
flujos de secuencia que convergen o divergen de una actividad.

* Flujo condicional: Un flujo de secuencia puede tener una expresión de
condición que se evalúa en tiempo de ejecución para determinar si se utilizará
o no el flujo de secuencia. Cuando el flujo condicional sale de una actividad,
tendrá un pequeño diamante al comienzo del conector; no tiene ningún símbolo
adicional si sale de una pasarela.

* Flujo predeterminado: Para puertas de enlace exclusivas basadas en datos o
puertas de enlace inclusivas, un tipo de flujo es el flujo de condición
predeterminado —sin expresión asociada—. Este flujo se utilizará solo si el
resto del flujo condicional saliente no es verdadero en tiempo de ejecución.
Estos flujos de secuencia tendrán una barra diagonal que se agregará al
comienzo del conector.

* Flujo de excepción: Este flujo ocurre fuera del flujo normal del proceso y se
basa en un evento intermedio adjunto al límite de una actividad que ocurre
durante la ejecución del proceso.

* Flujo de mensaje: Se utiliza para mostrar el flujo de mensajes entre dos
participantes que están preparados para enviarlos y recibirlos en una
colaboración.


[^1]: OMG. (2013). Business Process Model and Notation (BPMN). Disponible
[aquí](https://www.omg.org/spec/BPMN/2.0.2/PDF).
[^2]: OASIS. (2007). Web Services Business Process Execution Language Version
2.0. Disponible
[aquí](http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.pdf).
111 changes: 111 additions & 0 deletions 3_Plantillas/3_2_Escenario.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,114 @@
# 3 Plantillas

## 3.2 Escenarios

Esta es la plantilla para el escenario de un caso de uso del negocio o de un
caso de uso del producto. Las entradas
de la plantilla están marcadas <span style="color:#0969DA;font-weight: bold;">así</span>
y el texto a completar en el color normal. Tomado de [^1].

Los escenarios muestran la funcionalidad de un caso de uso dividiéndolo en una
serie de pasos fácilmente reconocibles, escritos en lenguaje natural para que
sean accesibles para todos los interesados.

<table>
<tr>
<td style="color:#0969DA">
<b>Nombre del caso de uso del {negocio|producto}</b>
</td>
<td valign="top">
Un nombre significativo para el caso de uso.
</td>
</tr>
<tr>
<td td style="color:#0969DA" valign="top">
<b>Desencadenante —<i>trigger</i>—</b>
</td>
<td>
El mecanismo por el cual se inicia el caso de uso. Habitualmente
consiste en datos o un evento que llega desde fuera del area de
trabajo. También puede ser cada cierto tiempo o después de cierto
tiempo de ocurrido otro evento.
</td>
</tr>
<tr>
<td td style="color:#0969DA" valign="top">
<b>Precondiciones</b>
</td>
<td>
Estado en el que tiene que estar el
<a href="/4_Conceptos/4_Trabajo_y_area_de_trabajo.md">trabajo</a>
al inicio del caso de uso. Habitualmente implica que otros casos de
uso debieron ocurrir antes para que este caso de uso tenga sentido.
</td>
</tr>
<tr>
<td td style="color:#0969DA" valign="top">
<b>Partes interesadas</b>
</td>
<td>
Las personas que tienen interés en el resultado del caso de uso —que
serán afectadas por la forma en que se haga el trabajo y por los
datos que produzca—.
</td>
</tr>
<tr>
<td td style="color:#0969DA" valign="top">
<b>Actores</b>
</td>
<td>
Las personas o sistemas que hacen el trabajo en el caso de uso.
Habitualmente uno de los actores desencadena el caso de uso y los
demás participan en él.
</td>
</tr>
<tr>
<td td style="color:#0969DA" valign="top">
<b>Pasos del caso normal</b>
</td>
<td>
Una secuencia paso a paso, en lenguaje natural, sin sesgo
tecnológico, de lo que ocurre en el caso de uso cuando transcurre
sin inconvenientes. La secuencia de pasos se numera de 1 en
adelante.
</br>
Para el caso normal, las alternativas y las excepciones es posible
usar <a href="/2_Tecnicas_y_herramientas/2_4_1_Diagramas_de_actividades_UML.md">
diagramas de actividades</a> o un <a href="/2_Tecnicas_y_herramientas/2_4_4_Diagramas_BPMN.md">
diagram BPMN</a>.
</td>
</tr>
<tr>
<td td style="color:#0969DA" valign="top">
<b>Alternativas</b>
</td>
<td>
Aparecen cuando el usuario tiene intencionalmente la posibilidad de
elegir diferentes acciones en uno de los pasos del caso normal.
Cada alternativa se numera de 1 en adelante, anteponiendo la letra
<code>A</code> y el número del paso del caso normal donde aparece la
alternativa.
</td>
</tr>
<tr>
<td td style="color:#0969DA" valign="top">
<b>Excepciones</b>
</td>
<td>
Desvíos indeseados pero inevitables del caso normal. Cada excepción
se numera de 1 en adelante, anteponiendo la letra <code>E</code> y
el número de paso del caso normal donde puede ocurrir la excepción.
</td>
</tr>
<tr>
<td td style="color:#0969DA">
<b>Resultado</b>
</td>
<td>
La situación deseada cuando el caso de uso termina de forma exitosa.
</td>
</tr>
</table>

[^1]: Robertson, S. & Robertson, J. (2012). Mastering the Requirements Process:
Getting Requirements Right, 3<sup>rd</sup> Edition. Addison-Wesley Professional.
4 changes: 4 additions & 0 deletions 4_Conceptos/4_Trabajo_y_area_de_trabajo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Conceptos

## Trabajo y área de trabajo

52 changes: 52 additions & 0 deletions diagrams/BMPN_Diagram_Activities.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<mxfile host="65bd71144e">
<diagram id="9AlIKVe4MQfbpUhIRnks" name="Page-1">
<mxGraphModel dx="640" dy="540" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="Tarea" style="points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];shape=mxgraph.bpmn.task;whiteSpace=wrap;rectStyle=rounded;size=10;html=1;taskMarker=abstract;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" parent="1" vertex="1">
<mxGeometry x="40" y="40" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="4" value="Servicio" style="points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];shape=mxgraph.bpmn.task;whiteSpace=wrap;rectStyle=rounded;size=10;html=1;taskMarker=service;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" parent="1" vertex="1">
<mxGeometry x="180" y="40" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="5" value="Envío" style="points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];shape=mxgraph.bpmn.task;whiteSpace=wrap;rectStyle=rounded;size=10;html=1;taskMarker=send;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" parent="1" vertex="1">
<mxGeometry x="40" y="120" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="6" value="Recepción" style="points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];shape=mxgraph.bpmn.task;whiteSpace=wrap;rectStyle=rounded;size=10;html=1;taskMarker=receive;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" parent="1" vertex="1">
<mxGeometry x="180" y="120" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="7" value="Usuario" style="points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];shape=mxgraph.bpmn.task;whiteSpace=wrap;rectStyle=rounded;size=10;html=1;taskMarker=user;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" parent="1" vertex="1">
<mxGeometry x="40" y="200" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="8" value="Manual" style="points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];shape=mxgraph.bpmn.task;whiteSpace=wrap;rectStyle=rounded;size=10;html=1;taskMarker=manual;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" parent="1" vertex="1">
<mxGeometry x="180" y="200" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="9" value="Regla del negocio" style="points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];shape=mxgraph.bpmn.task;whiteSpace=wrap;rectStyle=rounded;size=10;html=1;taskMarker=businessRule;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" parent="1" vertex="1">
<mxGeometry x="40" y="280" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="10" value="Script" style="points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];shape=mxgraph.bpmn.task;whiteSpace=wrap;rectStyle=rounded;size=10;html=1;taskMarker=script;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" parent="1" vertex="1">
<mxGeometry x="180" y="280" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="11" value="Tareas" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#006EAF;" parent="1" vertex="1">
<mxGeometry x="150" y="360" width="60" height="30" as="geometry"/>
</mxCell>
<mxCell id="12" value="Bucle" style="points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];shape=mxgraph.bpmn.task;whiteSpace=wrap;rectStyle=rounded;size=10;html=1;taskMarker=abstract;isLoopStandard=1;isLoopSub=1;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" parent="1" vertex="1">
<mxGeometry x="480" y="40" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="13" value="Multi-instancia" style="points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];shape=mxgraph.bpmn.task;whiteSpace=wrap;rectStyle=rounded;size=10;html=1;taskMarker=abstract;isLoopSub=1;isLoopMultiParallel=1;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" parent="1" vertex="1">
<mxGeometry x="340" y="120" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="14" value="Compensación" style="points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];shape=mxgraph.bpmn.task;whiteSpace=wrap;rectStyle=rounded;size=10;html=1;taskMarker=abstract;isLoopSub=1;isLoopComp=1;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" parent="1" vertex="1">
<mxGeometry x="480" y="120" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="15" value="Sub-proceso" style="points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];shape=mxgraph.bpmn.task;whiteSpace=wrap;rectStyle=rounded;size=10;html=1;taskMarker=abstract;isLoopSub=1;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" parent="1" vertex="1">
<mxGeometry x="340" y="40" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="17" value="Sub-procesos" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#006EAF;" parent="1" vertex="1">
<mxGeometry x="425" y="200" width="100" height="30" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
1 change: 1 addition & 0 deletions diagrams/BMPN_Diagram_Activities.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 3d0ee41

Please sign in to comment.