Mostrando las entradas con la etiqueta casos de uso. Mostrar todas las entradas
Mostrando las entradas con la etiqueta casos de uso. Mostrar todas las entradas

Explicación de la Semana 2 - "Casos de Uso" (I/IV)

Esta es la explicación complementaria para la parte "casos de uso" del desafío de la Semana 2. Quiero aclarar que no me voy a limitar a decir solo lo que se esperaba como respuesta del desafío, buscaré ahora reforzar algunos conceptos sobre el tema.



En el gráfico dos opciones posibles. Una más descriptiva que la otra, pero ninguna comete el error de entrar a descomponer las funcionalidades del sistema como si estuviéramos ya desarrollando.

¿Cual de las dos opciones es correcta? Ambas lo son, pues describen la realidad pero toda documentación se deben ajustar a un contexto: ¿quién es el público objetivo de la documentación?. Si son los clientes del proyecto se podría usar la versión 1, pero si son desarrolladores (con más razón si cuentan con poca experiencia) tal vez se podría usar la versión 2 que explica con un poco más de detalle la funcionalidad que tendrá el sistema.

Algunas puntualizaciones sobre el tema de los diagramas de casos de uso:
  • Para qué se usan: Los Casos de Uso son empleados para descubrir y capturar requerimientos de los clientes en una forma que sea accesible para todos los participantes del proyecto, tanto desarrolladores como clientes.
  • Qué deben comunicar: Un Caso de Uso describe QUÉ hace el sistema sin decir CÓMO lo hace.
  • Qué representan: una o varias funcionalidades de nuestro sistema que ofrecen valor al usuario del mismo. Si lo que estamos documentando ("el globo") no devuelve ningún valor al usuario, no debe considerarse un caso de uso.
  • Flecha"include": es cuando un caso de uso incluye otro caso de uso. El caso base incorpora explícitamente el comportamiento del otro. En ambos casos el sistema lista ("listar usuarios") o consulta ("consultar usuario") para llegar a mostrar finalmente toda la información del usuario como si fuera una ficha ("mostrar usuario") que en nuestro caso se hace dos veces (se llega por dos caminos distintos a la ficha del usuario).
  • Los nombres de los casos de uso: preferiblemente que sean descriptivos de la acción o el valor que generan al actor del sistema. En vez de usar términos como "Listado de Usuarios" se usa una expresión más genérica que describa la acción o uso en el contexto del sistema: "listar usuarios".
Esto es lo básico de los Casos de Uso, pero hay algunos detalles más. Por ejemplo, la documentación que debe acompañar a cada caso es tan importante como el propio diagrama. Debe describir con palabras el comportamiento del caso de uso, su curso básico y sus cursos alternativos.

Por ejemplo, para el caso de uso "consultar usuario":

Curso Básico
  1. El usuario ingresa el id o el nombre del usuario
  2. El sistema lo encuentra y muestra la ficha del usuario
Cursos alternativos
  1. Si el usuario no ingresa ni id ni el nombre el sistema envía un mensaje de error
  2. Si el sistema no encuentra el usuario envía un mensaje de ayuda y posibilita volver a intentar la consulta.
Todo esto es parte de la documentación de una "Especificación de Requerimientos" o "ESRE" que se origina luego de una entrevista con nuestro cliente y este nos cuenta qué desea que haga el sistema (existen muchos templates para usarlos como ejemplos).

Relación entre Casos de Uso y los "módulos" de nuestro sistema

Podemos hacer un paralelismo en nuestro contexto: cada caso de uso puede convertirse literalmente en un "módulo" de nuestra aplicación:
  • Caso de Uso "Listar Usuarios" -> listado_usuarios.php
  • Caso de Uso "Consultar Usuario" -> consultar_usuario.php
  • Caso de Uso "Mostrar Usuario" -> mostrar_usuario.php
Detalle final

En muchos casos pude ver trabajos que incluían el "index" como un caso de uso. A pesar de que nuestro sistema siempre tendrá uno, no necesariamente hay que representarlo (cuanto más minimalista el diagrama, mejor). Lo más realista sería que si nuestro "index" ofrece algo más que información estática (como sucede en el "proyecto base") se podría considerar que ofrece "valor" al usuario. Por ejemplo, si la página principal fuera un sistema de noticias, ordenadas cronológicamente, con posibilidad de comentarios, etc, sí lo agregaría como un caso de uso y lo nombraría "mostrar noticias" (no necesariamente "index", estoy contando la funcionalidad, no cómo la voy a implementar ni en donde).

Espero haber aportado un poco más sobre el tema y haber despejado algunas dudas. Cualquier otra consulta está disponible la sección de comentarios de esta entrada ;-)

Entradas populares