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.
Hola Lucho, estoy encantado con tus artículos.
ResponderBorrarM 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
Angel, muchas gracias por tu opinión. Muy a lugar tu punto sobre el mantenimiento del software.
ResponderBorrarEstamos en contacto.
Saludos,
Lucho