Buscar en Gazafatonario IT

martes, septiembre 04, 2012

Casos de Abuso, Parte 1: El caso de uso se usa en todos los casos


La segunda ley de la Ingeniería del Software o el modelo Información-Materia-Energía (IME) establece que el mundo natural que forma el contexto de la inteligencia humana y la ciencia del software es una dualidad: un aspecto de ésta es el mundo físico y el otro es el mundo abstracto, donde la materia y la energía son usadas para modelar el primero, y la información, para modelar el segundo. Los modelos del mundo físico han sido bien estudiados por la Física y otras ciencias naturales. Sin embargo, el modelado del mundo abstracto todavía es un problema fundamental a ser explorado por la ingeniería del software.
Ahora bien, aunque el mundo físico es el mismo para todas las personas, el mundo natural es percibido de forma diferente por distintos individuos debido a que el mundo abstracto, como parte de éste, es subjetivo dependiendo de la información que los individuos obtienen y perciben. Y es debido a esta diversidad en la percepción del mundo abstracto que se presentan los errores en la ingeniería del software y por ello es que son más comunes de lo que a veces queremos. En el ciclo de vida de la ingeniería del software, esos errores empiezan durante la identificación, especificación y modelado de casos de uso.
Algunas de estas falencias, son las que empezaré a presentar a partir de hoy en varias entregas. Se trata de un estudio de los malos usos de los casos de uso.
Este es realmente un estudio patológico y forense: es patológico porque hago un estudio de los desórdenes más comunes encontrados durante mis continuas revisiones de casos de uso a todo lo largo de su ciclo de vida: identificación, especificación, análisis, diseño, implementación y pruebas. Quise hacer este estudio en un sentido amplio, es decir, observé estas alteraciones como procesos o estados anómalos de raíces conocidas o ignoradas. También es patológico porque extraje las pruebas que señalan la presencia de tales afecciones del examen minucioso de cada error en todos sus niveles estructurales, desde el nombre del caso de uso, hasta las secuencias básica y las alternativas del mismo, pasando por la breve descripción, las pre y poscondiciones, el actor y los requisitos especiales, entre otros aspectos. Desde este punto de vista me convertí en un anatomopatólogo o, simplemente, en un patólogo clínico de los casos de uso, si es posible trasladar ese término médico a nuestro entorno.
Es forense porque estudié los aspectos técnicos derivados de la práctica diaria de los equipos de desarrollo de software, en los que he participado centenares de veces, como sujeto activo y como perito. Bajo este último título he tratado de contribuir con mi actuación a dar valor y significación genuinos a los aciertos hechos en materia de especificación y evolución de casos de uso y también a la promoción de ciertas prácticas que creo exitosas en la industria. En particular, he tenido la oportunidad de examinar y recoger indicadores de casos de uso propios y de extraños (colegas, clientes, socios de negocio); de los modelos y especificaciones de casos de uso he determinado los elementos donde se presentan los errores, las posibles causas de los mismos y he presentado posibles soluciones.
Caso de Abuso 1: El caso de uso se usa en todos los casos.
Es un juego de palabras pero es falso. Los casos de uso son un repositorio, un mecanismo de comunicación durante el ciclo de vida de desarrollo del software. Contienen y transmiten requisitos y otros aspectos relacionados con la funcionalidad del software en construcción.
Pero hay muchas maneras de documentar todo esto: documentos de requisitos funcionales y no funcionales donde, en prosa, se especifican los detalles del producto. En otros casos se pueden usar prototipos, como en los reportes ad-hoc o estándares, donde preparar un documento en el que se muestre como lucirá un reporte es más práctico que escribir en palabras los detalles del mismo. En otros casos, serán necesarios uno o más diagramas de UML (de estados o de actividad, por ejemplo), como cuando la descripción en prosa del proceso funcional es engorrosa debido a la complejidad del proceso y, además, un prototipo no es suficiente o no aplica.
Impacto en la calidad: Bajo.
Caso de Abuso 2: Lo que no está documentado en los casos de uso no hace parte del proyecto.
Esta es una consecuencia del abuso anterior. En muchas ocasiones usamos sólo los requisitos que están consignados en casos de uso para realizar la estimación del proyecto, para considerar tiempos y recursos, para definir la arquitectura del software y para diseñar el sistema. Sólo cuando ya es muy tarde alguien recuerda que hay otras funcionalidades a diseñar e implementar y que posiblemente afecten no sólo la arquitectura del sistema, sino también los tiempos y los recursos necesarios para terminar el producto. Un caso típico ocurre cuando el producto tiene muchos procesos batch, de esos que se ejecutan por la noche o al cierre de un período específico y que hacen uso intensivo de datos sin ninguna interfaz gráfica. Otro caso se presenta con las consultas y reportes, muchas veces menoscabados, en el sentido de reducidos, por todos los involucrados en el proyecto.
Impacto en la calidad: Medio.

2 comentarios:

  1. Hola Lucho, estoy encantado con tus artículos.
    M gustaría matizarte algo respecto del punto 1. Los casos de uso no son solo un mecanismo durante el ciclo de vida del desarrollo, son también el repositorio de la funcionalidad que aporta el producto software a lo largo del ciclo de vida de dicho producto, pero no solo del desarrollo si no también de su posterior mantenimiento, ya sea evolutivo o correctivo.
    Además en la mayoría de las ocasiones también son un contrato con el cliente.
    Es mi opinión, un saludo muy cordial y gracias por tu blog
    Angel Luis Lozano

    ResponderEliminar
  2. Angel, muchas gracias por tu opinión. Muy a lugar tu punto sobre el mantenimiento del software.

    Estamos en contacto.

    Saludos,

    Lucho

    ResponderEliminar