Buscar en Gazafatonario IT

martes, septiembre 25, 2012

Casos de Abuso, Parte 8: Precondiciones vs. Validaciones y Poscondiciones vs. Resultados


A este caso de abuso originalmente lo titulé:
Las precondiciones son validaciones que hace el caso de uso al comienzo del mismo o en algún paso siguiente. Las poscondiciones y el resultado del caso de uso son una misma cosa.
Este es quizás el mayor de los abusos. Las precondiciones no ocurren dentro del caso de uso, es justamente lo contrario. Las precondiciones representan el estado en el que debe estar el sistema para que se ejecute el caso de uso a la que pertenecen. Son acciones que ocurren antes, en algún momento del tiempo, de la ejecución (o de la necesidad de ejecución) del caso de uso. Y cuando digo “en algún momento del tiempo” no me refiero a que tiene que ser inmediatamente antes del caso de uso, puede ser en cualquier instante, mientras sea antes de la ejecución del caso de uso. Para usar términos bastante reconocidos por nosotros, si un caso de uso tiene precondiciones, se encuentra deshabilitado hasta tanto todas las precondiciones no se hayan ejecutado y hayan producido los resultados necesarios para que el caso de uso se habilite y pueda ejecutarse.
Figura 2: Representación Visual de las Precondiciones y las poscondiciones de un caso de uso. Fuente: Adaptado de IBM Rational Unified Process
El error más común ocurre cuando confundimos una precondición con la validación a un elemento específico del negocio, por ejemplo, que el Cliente debe tener una cuenta corriente para solicitar aumento de cupo de sobregiro. Esta, a todas luces, es una verificación que debe ocurrir en el caso de uso “solicitar aumento de cupo de sobregiro” después de que el cliente se haya identificado, antes no es posible.
Un análisis similar puede hacerse para las poscondiciones, confundidas casi siempre con los resultados del caso de uso. Por ejemplo, es frecuente leer en la especificación de un caso de uso: “el sistema almacena los datos de la solicitud.”, “el sistema muestra el mensaje ‘no se pudo realizar la operación’.”, “el sistema cancela la ejecución del proceso.” Todas estos detalles corresponden a eventos que ocurren (deben ocurrir) dentro del caso de uso, no después de su ejecución, que es el terreno donde se mueven las poscondiciones.
Una poscondición típica puede ser: “el cliente puede consultar el estado de sus facturas.” Otra puede ser: “la cuenta del usuario queda deshabilitada.” Una más: “el cliente VIP puede modificar el estado de su reserva.” Todas estas son acciones que los usuarios pueden hacer después de que un determinado caso de uso se haya ejecutado, satisfactoriamente o no. El momento en el que se haga tampoco tiene que ser inmediatamente después, casi siempre depende de las necesidades de los usuarios particulares de cada funcionalidad.
Una situación adicional que ocurre en muchas oportunidades es que nos quedamos buscando precondiciones y poscondiciones del caso de uso durante un tiempo considerablemente extenso. Siempre recomiendo a los neófitos que si no las encuentran en las primeras de cambio pueden estar sucediendo dos cosas importantes:
  • No tenemos información suficiente del caso de uso (o no lo hemos entendido bien)

O
  • No tenemos la experiencia práctica o el conocimiento teórico suficiente para lidiar con estos dos aspectos de los casos de uso.

En el primer caso, debemos siempre buscar la información que nos hace falta con las personas involucradas, los usuarios; en el segundo caso es un poco más difícil, pero mientras este tema se nos vuelve una costumbre, recomiendo no quedarnos mucho tiempo paralizados por ello y seguir adelante. Las precondiciones y las poscondiciones son aspecto importantes para el diseño y la implementación del caso de uso, pero si no las encontramos, existen otras formas de llegar a la misma solución, quizás tome un poco más de tiempo a los diseñadores, pero este será mucho menos que si los analistas se quedan horas o días buscando algo que no conocen.
Otra cosa más, tanto las precondiciones como las poscondiciones son opcionales: no siempre son un elemento adherido al caso de uso. Es posible que haya casos de uso que no tengan unas o las otras, o ambas.
Impacto en la calidad: Alto.
PD. Para saber más de precondiciones y poscondiciones y de otras características de los casos de uso pueden leer mi Lectura Fundamental 3: “Casos de Uso: del todo y de sus partes”, en mi Gazafatonario IT: