Los casos de uso como fuente de insatisfacción entre analistas, desarrolladores, testers y usuarios
Por mucho tiempo expliqué y empleé los casos de uso con todos sus elementos:
· Precondiciones
· Postcondiciones
· Flujo básico
· Flujos alternativos
· Flujos de excepción
· los misterios de los include y extend
· Y variaciones de acuerdo al autor y la empresa
Pero lo que siempre notaba es que:
· Los diferentes autores lo explican distinto la documentación de los casos de uso
· El mismo caso de uso queda escrito de forma diferente por diferentes personas
· En muchas ocasiones no quedan bien escritos
· Y lo que es peor los clientes/usuarios NO LOS ENTIENDEN - sabiendo que fueron creados para ellos y supuestamente están en lenguaje de usuario - (he notado que los casos de uso no los entendemos muchas veces entre los mismos ingenieros de sistemas)
Luego, tiempo después, con el agilismo aprendí dos lecciones importantes:
· De la comunicación solo el 7% es transmitido en las palabras, el 38% corresponde al tono de la voz y el 55% a la comunicación no verbal (
ver más aquí)
Pero el punto que quiero presentar no es que los casos de uso hacen parte de la práctica de levantamiento de especificaciones funcionales donde el usuario aparece, se levanta información y luego desaparece por un tiempo hasta que por fin regresa a validar el sistema, lo que quiero evidenciar es que los Casos de Uso llevan consigo un problema de comunicación que genera una cantidad de insatisfacciones, reprocesos y hasta de bugs, miremos como sucede:
1. Se levanta el Caso de Uso por el Analista y se identifican 5 escenarios de uso.
|
Especificado por el analista
|
Flujo básico
|
FB1
|
Flujo Alterno 1
|
FA1
|
Flujo Alterno 2
|
FA2
|
Flujo Alterno 3
|
FA3
|
Flujo de Excepción
|
FEx1
|
Flujos identificados
|
5
|
Flujos adicionales
|
0
|
Flujos totales
|
5
|
2. El desarrollador es creativo e identifica 6 escenarios adicionales que funcionan perfectamente dentro de los flujos identificados. El desarrollador tiene gran satisfacción por su proactividad y es posible que hasta su gerente de proyecto lo felicite.
Escenarios
|
Especificado por el analista
|
Desarrollados e identificados por el desarrollador
|
Flujo básico
|
FB1
|
FB1
|
Flujo Alterno 1
|
FA1
|
FA1
FA1.1
|
Flujo Alterno 2
|
FA2
|
FA2
FA2.1
FA2.2
|
Flujo Alterno 3
|
FA3
|
FA3
FA3.1
|
Flujo de Excepción
|
FEx1
|
FEx1
FEx1.1
FEx1.2
|
Identificados
|
5
|
|
Adicionales
|
|
6
|
Flujos totales
|
5
|
11
|
3. El tester, que es alguien que es experto en encontrar escenarios de fallo, encuentra adicionales a los especificados y los 6 adicionales hallados por el desarrollador. En este punto el dialogo del tester y desarrollador es en el mejor de los casos el siguiente:
· Tester: Mira encontré 5 incidentes, me toca devolverte el caso de uso
· Desarrollador: ¿Cómo así? No los vi, identifique 6 escenarios adicionales, pero bueno pásamelo y déjame reviso, si es del caso los corrijo.
(Para ser sensatos no son incidentes, ni bugs, ese golpe no lo veía venir el desarrollador(ni el especificador, ni el gerente de proyecto) por ningún lado, pero empezó a pagar los platos rotos de cuenta de esta cadena de errores involuntarios de cuenta de la metodología de trabajo)
Escenario
|
Especificado por el analista
|
Desarrollados e identificados por el desarrollador
|
Probados y otros nuevos identificados por el analista
|
Flujo básico
|
FB1
|
FB1
|
FB1
|
Flujo Alterno 1
|
FA1
|
FA1
FA1.1-
|
FA1
FA1.1-
|
Flujo Alterno 2
|
FA2
|
FA2
FA2.1-
FA2.2-
|
FA2
FA2.1-
FA2.2-
FA2.3-
FA2.4-
|
Flujo Alterno 3
|
FA3
|
FA3
FA3.1-
|
FA3
FA3.1-
FA3.2-
FA3.3-
|
Flujo de Excepción
|
FEx1
|
FEx1
FEx1.1-
FEx1.2-
|
FEx1
FEx1.1-
FEx1.2-
FEx1.3-
|
Identificados
|
5
|
|
|
Adicionales identificados
|
|
6
|
5
|
Flujos totales
|
5
|
11
|
16
|
Nota: por lo general el Flujo básico es el que queda mejor especificado y no tiene lugar a malas interpretaciones
4. El cliente recibe el caso de uso y al probarlo se da cuenta que el producto está muy bien construido pero encuentra que 5 escenarios no especificados “pero obvios” no fueron considerados y al revisar la documentación junto con el analista, el cliente y el gerente de proyecto del equipo del proveedor concluyen que deben ser elaborados. Estos 5 escenarios son 5 incidentes que se le suman a los 5 anteriores detectados por el tester. A este punto tanto desarrollador como tester tienen cuestionada su “reputación” tanto con el cliente como con el gerente de proyecto.
Escenario
|
Especificado por el analista
|
Desarrollados e identificados por el desarrollador
|
Probados y otros nuevos identificados por el analista
|
Cliente usuario
|
Flujo básico
|
FB1
|
FB1
|
FB1
|
FB1
|
Flujo Alterno 1
|
FA1
|
FA1
FA1.1-
|
FA1
FA1.1-
|
FA1
FA1.1-
FA1.2-
FA1.3-
|
Flujo Alterno 2
|
FA2
|
FA2
FA2.1-
FA2.2-
|
FA2
FA2.1-
FA2.2-
FA2.3-
FA2.4-
|
FA2
FA2.1-
FA2.2-
FA2.3-
FA2.4-
FA2.5-
FA2.6-
|
Flujo Alterno 3
|
FA3
|
FA3
FA3.1-
|
FA3
FA3.1-
FA3.2-
FA3.3-
|
FA3
FA3.1-
FA3.2-
FA3.3-
FA3.4 -
|
Fujo de Excepción
|
FEx1
|
FEx1
FEx1.1-
FEx1.2-
|
FEx1
FEx1.1-
FEx1.2-
FEx1.3-
|
FEx1
FEx1.1-
FEx1.2-
FEx1.3-
|
Identificados
|
5
|
|
|
|
Adicionales identificados
|
|
6
|
5
|
5
|
Flujos totales
|
5
|
11
|
16
|
21
|
A este punto 5 escenarios identificados por el analista, se han convertido en 21 debido a la ambigüedad y falta de precisión de los casos de uso, generando gran insatisfacción y reprocesos en toda la cadena.
---
· Una pequeña descripción funcional
· Y unos criterios de aceptación los cuales tiene la gran ventaja de:
o Discutirse hasta el completo entendimiento (hasta la saciedad) con el cliente (recordemos CCC – Card-Conversation-Confirmation)
o Si se olvida un criterio de aceptación se realizará el próximo Sprint o iteración (que comenzara a lo sumo en un mes)
o No hay lugar a bugs por “omisión funcional” o escenarios “obvios” no identificados, por lo tanto la probabilidad de éxito de un desarrollo satisfactorio es altísima pues no hubo lugar a ambigüedades, ni olvidos no intencionales
· Si hay algo que aclarar se resolverá durante la iteración o sprint con el cliente, el cual estará disponible para resolverla.
Por esta razón es que prefiero hoy en día las historias de usuario a los casos de uso.
Queda abierto el espacio para la discusión y las experiencias.
Saludos ágiles
Jorge Abad