Me enfrentaba ante la difícil situación de redactar el primero de los flujos de una respetable lista de casos de uso pendientes. Me di cuenta que el escribir casos de uso no es tan fácil como la gente piensa. Me enfoqué en una de las principales recomendaciones de los casos de uso: debe ser comprensible para cualquier persona.
En un caso de uso un error común es pensar ya en el diseño de la interfaz del usuario y redactarlo como tal. Por ejemplo: 'El cliente hace click en el botón de seleccionar vuelo' o 'El sistema actualiza la ventana con un combobox que muestra la información de los vuelos disponibles'. Se supone que un caso de uso debe ser escrito en base a los requerimientos que el sistema debe satisfacer y por lo tanto, la interfaz no forma parte de dichos requerimientos, es mas bien una elección de diseño para después (normalmente al implementar un caso de uso aprobado). Otro error común es mencionar a la base de datos: 'El sistema guarda la información en la base de datos' o 'Se guardan los datos de la reservación en la tabla FLIGHTS'. Lo mas sano será mencionar: 'El sistema registra la reservación'.
Otra cosa muy importante a considerar es que un caso de uso debe describir un comportamiento, por lo tanto no podemos hacer 'todo' mediante casos de uso. Existen herramientas adecuadas para todo, no podríamos representar un requerimiento de desempeño mediante un caso de uso, o detallar estructuras de datos dentro de los casos de uso. Por ejemplo: ' El cliente introduce su nombre', El cliente introduce su apellido paterno' y así sucesivamente por cada campo que haga referencia a los datos del cliente. Lo mejor en este caso sería tener la estructura de datos detallada en un diagrama adecuado para ello y enunciar en el caso de uso algo así: 'El cliente proporciona sus datos generales'. Podríamos incluso hacer referencia como un anexo al documento de diseño que contiene los detalles de dicha estructura.
En las plantillas de casos de uso de Rational Rose me encontré con algo interesante: un caso de uso tiene una descripción breve, la cual nos resumirá la funcionalidad que se desea implementar, pero aún hay más... un caso de uso debe de ser breve, ya que los casos de uso demasiado largos y complicados serán más difíciles de entender. Por ejemplo, en el caso de uso 'reservar vuelo' de la aerolínea no deberíamos incluir los detalles de cómo se va a realizar el pago del boleto, lo mejor será crear un caso de uso específico para ello: 'pagar boleto'. Entonces utilizaremos el 'divide y vencerás' y el 'pequeño es mejor', y así enfocarnos a la verdadera funcionalidad del caso de uso que deseamos describir. No hay que olvidar que aunque sean casos de uso cortos debemos describir siempre el comportamiento para alcanzar la funcionalidad del caso de uso.
Tampoco debemos enfocarnos en casos de uso de bajo nivel, tales como 'establecer seguridad del sistema', o 'conectarse al servidor', ya que estos casos de uso son meramente técnicos y al usuario final no le interesan (recuerden la abstracción) y batallaría mucho para interpretarlos. Generalmente estos casos de uso se elaboran detalladamente por personas que a final de cuentas tendrán la responsabilidad de implementar esas funcionalidades y características en el sistema.
Como punto final, un caso de uso es una historia que describe una funcionalidad, siempre debemos especificar quien ejecuta que acción, y redactar de manera comprensible cada paso, sin ambigüedades, y de una manera simple y breve.... mmm creo que quedé como al principio, en fin. Mejor les dejo esto para pensar un rato... ¿Cual sería el diagrama de casos de uso del cuento de caperucita roja?
