jueves, 25 de agosto de 2011

El Remedio o la Enfermedad

Un remedio, según su definición, es “Una medida que se toma para reparar un daño o para evitar un inconveniente”. En este contexto y, en línea con la definición anterior, si se decide remediar una situación, es fundamental intentar hacerlo sin incorporar un problema mayor o, como dice el dicho, haciendo peor el remedio que la enfermedad. Esto es algo que, obviamente, aplica a cualquier ámbito. A continuación, algunos ejemplos al respecto.

Ejemplo No. 1
En un supermercado me encontré con una situación como la que se puede apreciar en la foto siguiente:

estacionamiento.01

En términos simples, lo que se puede apreciar acá es que se han tomado medidas para asegurar el uso de los estacionamientos para discapacitados por personas que realmente los requieren. Desde afuera, puedo interpretar que la pintura en el piso no es suficiente como mecanismo de demarcación y que muchas personas han de aludir a esta situación para estacionarse ahí “por error”. Por lo tanto, para evitar esta situación, se incorporaron los letreros en altura de manera de hacer más visible la situación, sin embargo, la pregunta es inmediata y obvia:

¿Será fácil para una persona con discapacidad estacionarse ahí?
¿Es razonable pensar que, para estacionarse, primero deba mover o pedir que muevan el letrero?

Ejemplo No. 2
En un control de asistencia de un lugar público, la puerta que se ubica al lado del cajero del control de acceso, tenía un letrero como el siguiente:

puerta

El letrero dice:

FUNCIONARIOS (CAJEROS)
POR RAZONES DE SEGURIDAD QUEDA EXTRICTAMENTE PROHIBIDO MANTENER LA PUERTA ABIERTA.

       LA ADMINISTRACIÓN.

Considerando la situación, las preguntas naturales son obvias:

¿El cajero no hace caso al aviso?
¿Nadie fiscaliza el cumplimiento del aviso de la Administración?

En los ejemplos anteriores, sin desmercer las buenas intenciones, no está claro si el remedio es mejor que la enfermedad.

En el mundo del software, pasa exactamente lo mismo, sin embargo, con mucha menor visibilidad. Son ejemplos típicos de esta situación, la incorporación de restricciones en el software para evitar condiciones determinadas, requeridas por cierto, pero, como resultado de esto, no se consideran correctamente las consecuencias ni las herramientas para la administración de tales restriccones en aquellos casos que se escapan del flujo normal. A continuación algunos ejemplos.

Ejemplo No. 3
En un modelo de operación determinado, se requiere que los documentos enviados por un cliente no sean enviados más de una vez al gobierno. Dado que los documentos del cliente poseen un identificador único, se decidió implementar la restricción considerando este hecho. En régimen, si los documentos del cliente estaban correctos, no había ningún problema, sin embargo, si un documento queda con error y el cliente requiere realizar el reenvío, no hay cómo hacerlo ya que:

  • El sistema lo rechaza por la restricción del identificador único
  • El sistema no tiene las interfaces para eliminar el documento malo y permitir el reenvío del documento correcto.

Ejemplo No. 4
En un modelo de operación similar al anterior, realizando una optimización de un proceso, se asumió que dada las condiciones de operación del sistema y del modelo, un elemento no podía llegar más de una vez (dado un identificador único). Dado esto, se implementó una validación que controlaba esta situación y, al momento de identficar un “caso duplicado”, símplemente se eliminaba el elemento. El problema fue que, como era de esperar, llegaron elementos con el mismo identificador pero que no eran equivalentes. El error acá no es la restricción asociada al identificador único, el error es decidir eliminar el elemento y no dejar un registro, mensaje, copia o respaldo para revisiones posteriores, por lo tanto, los errores son:

  • El sistema elimina los elementos duplicados
  • El sistema no deja un registro asociado a la decisión de eliminar un elemento duplicado
  • El sistema no posee las herramientas/mecanismos de auditoría para revisión de estos casos.

Ejemplo No. 5
Este ejemplo no es real, es símplemente un ejercicio para comprender el proceso y no caer en el error de que el remedio sea peor que la enfermedad. Supongamos una aplicación con un sistema de autenticación de usuarios por medio de un login y una password. Esta es la versión inicial. A continuación, una secuencia de funcionalidades nuevas requeridas que surgen de hacerse las preguntas correctas (ver el El Plan B).

  1. Cambio de Password. Se solicita que el sistema permita que el usuario cambie su clave. Como es lógico, se requiere que el usuario ingrese su clave anterior para poder cambiarla. Se habilita la opción pero… ¿Qué sucede si el usuario no recuerda su clave anterior?, entonces, si seguimos esta pregunta tenemos dos opciones:
    • Mecanismo de Reseteo de Clave.
      Se debe habilitar un mecanismo para resetear la clave por parte del usuario.
    • Herramienta de Administración.
      Se debe habilitar un ambiente para que el administrador pueda reingresar la clave de un usuario.
  2. Bloqueo de Usuario. Se solicita que el sistema bloquee al usuario si falla los intentos de ingreso más de tres veces.
    • Mecanismo de Administración.
      Si se bloquea un usuario, al igual que en el caso anterior, se requiere habilitar las interfaces para permitir desbloquearlo.
    • Mecanismo de Configuración.
      Es algo obvio, sin embargo, qué sucede si se desea modificar el número de intentos previo al bloqueo de tres a cuatro. Por lo tanto, se requiere un mecanismo de configuración para permitir modificar este valor. De esto, obviamente, es necesario hacerse algunas preguntas para asegurar que la configurabilidad sea correcta.

El desarrollo de software tiene muchas dificultades y éstas son cada vez más complejas dada la dimensión de los sistemas y el alcance global de los mismos y, por lo tanto, la incorporación de nuevas funcionalidades y, en particular, de nuevas restricciones, requiere la habilitación de los mecanismos de revisión y de auditoría para poder asegurar que las restricciones se están aplicando correctamente. Y, más importante que lo anterior, es que alguien realice la revisión correspondiente. Pero, lo más importante, es asegurar que el remedio no va a ser peor que la enfermedad.

jueves, 18 de agosto de 2011

Déjà vu

Dadas las modificaciones a la política de cambio de horario realizadas en el presente gobierno, el tema del cambio de hora volvió a ser noticia en estos días y, por lo tanto, varios noticiarios rellenaron su programación con él. Me parece que, considerando los hechos importantes que están ocurriendo en el mundo, la rebelión en Libia, los problemas económicos de Estados Unidos, Grecia y Europa y la hambruna en Somalia por mencionar algunos, una noticia de este tenor tiene una relevancia menor y refleja una mirada egocéntrica y aislada de la realidad de Chile y su inserción en el contexto global.

En términos generales, se debe informar para lograr comunicar a toda la población el hecho de que hay que adelantar y/o atrasar el reloj según corresponda. En este contexto, me parecería razonable que los noticieros dedicaran algunos minutos a informar sobre el tema y, cuando digo informar, me refiero única y exclusivamente a eso. 

Sin embargo, como parte de la noticia se incluyen reflexiones de doctores, psicólogos, etc., destinadas a divulgar las “consecuencias que el cambio de hora podría traer a las personas”. No tengo formación en áreas de la medicina, ni de la psicología, sin embargo, me parece que esta situación refleja poca resilencia de la población si un hecho tan menor, como el atraso o el adelanto del reloj, es capaz de producir cambios y/o impactos importantes en el estado de ánimo general. Desde mi punto de vista, esta situación es equivalente a lo que en física se conoce como un estado de equilibrio inestable, es decir, un sistema en el cual un pequeño desplazamiento en la posición de equilibrio (cambio de hora) producirá un alejamiento irreversible de esta posición (cambios en el estado de ánimo).

Lo simpático de la situación es que, cuando se atrasa la hora, todo el mundo considera que “ganó una hora” siendo que, desde el punto de vista estrictamente biológico, el cuerpo no necesariamente dormirá una hora más. Por el contrario, al adelantar la hora, todo el mundo considera que “pierde una hora” siendo que, nuevamente desde el punto de vista biológico, se podría evitar la pérdida acostándose más temprano. En cualquiera de las dos situaciones, es común escuchar a las personas quejándose de haber dormido menos y/o de estar descontrolados respecto al horario cosa que, creo, sólo en los niños más chicos tiene alguna justificación.

Pero, más allá de la noticia en sí, hay una situación peor. La noticia del cambio de hora es parte de un selecto grupo de noticias que se repiten todos los años, en las misma fechas en todos los noticiarios del país como un Déjà Vu, casi como un Copy-Paste periodístico. La gracia principal de estas noticias es que están vigentes siempre, es decir, se podría mostrar la noticia del año anterior y, probablemente, nadie se daría cuenta.

Las noticias que componen este selecto grupo son las siguientes:

  • Cambio de Hora.
    Marzo y Octubre. Básicamente, lo descrito anteriormente, dos veces al año.
  • Restricción Vehicular.
    Desde Marzo a principios de Abril. Básicamente, las fallas en el modelo predictivo obligan a la declaración de pre-emergencias y a la rehabilitación de la restricción vehicular.
  • Alza en el Precio de la Carne.
    Desde finales de Agosto hasta Fiestas Patrias. Básicamente, el alza en el precio de la carne como resultado de aumento en el consumo para Fiestas Patrias.
  • Alza en el Precio de los Mariscos y Pescados.
    Desde mediados de Marzo hasta Semana Santa. Básicamente, el alza en el precio de la carne como resultado de aumento en el consumo para Fiestas Patrias.
  • Uniformes escolares días después de Año Nuevo.
    Desde Enero a mediados de Febrero. Básicamente, la renovación inmediata de la mercadería de los malls y supermercados en plenas vacaciones y la tortura que representa para los estudiantes/alumnos que vayan a comprar.
  • Inicio de Clases en Vacaciones.
    Desde mediados de Febrero a la última semana de Febrero. Básicamente, la publicación de los colegios que deciden comenzar su año escolar en febrero y no en Marzo, cuando todavía medio país está de vacaciones.
  • Huevos de Pascua días después del inicio de clases.
    Desde Marzo hasta Semana Santa. Básicamente, la venta de huevos de pascua y todos los artículos relacionados con miras a semana santa.
  • Halloween días después del Día del Niño.
    Todo el mes de Octubre. Básicamente, el día siguiente del día del niño comienzan a venderse los productos de Hallowen.
  • Artículos de Navidad días después de Halloween.
    Desde Noviembre a Diciembre. Básicamente, el día siguiente de Halloween, comienzan a venderse los productos de navidad.
  • Operación Verano.
    Desde Agosto a Diciembre. Básicamente, la noticia sobre el aumento en la matrícula de los gimnasios debido a las personas que quieren llegar “en forma” al verano.
  • Alza en el Precio de los Pasajes.
    Antes de Semana Santa, Fiestas Patrias y Navidad. Básicamente, el alza indiscriminada de los precios de los pasajes de los buses interurbanos.
  • Monto de los Aguinaldos.
    Antes de Fiestas Patrias y Navidad. Básicamente, una revisión de los montos de los aguinaldos que serán pagados y la variaciones entre las diversas industrias y cargos.

Las noticias anteriores reflejan en gran medida varios cambios que se producen a lo largo del año y que, de alguna manera u otra, creo nos representan, son parte de nuestra cultura, de nuestro inconsciente colectivo.