Original in es Juan Pablo Rosas Duran
Actualmente es Gerente de sistemas en Óptica LUX en México.
Esta involucrado con la informática desde los 3 años,
cuando revolvía los lotes de tarjetas perforadas en el trabajo
de su padre y usaba los manuales de un Gamma10 como cuaderno de
dibujo. Cuando conoció Linux su vida profesional fue
transformada, y desde entonces trata de aplicar (con cierto éxito)
el software de fuente abierta en cualquier problema donde se
requieren computadoras.
Se encuentra promoviendo la formación de un grupo para el
desarrollo de aplicaciones de negocios bajo licencia GPL:
http://www.pochtecah.org.mx/.
Agradece encarecidamente a _LF_ la oportunidad de compartir sus
experiencias sobre Linux y el software de fuente abierta.
En este artículo conoceréis la historia de como una empresa mediana dedicada a la comercialización y fabricación de anteojos ha utilizado el linux y el software libre para atender mejor a sus clientes.
Óptica LUX es una empresa dedicada a la fabricación y comercialización de anteojos para sol y graduados. En Marzo del año 2000 cumplirá 58 años de permanencia en el mercado, y en los últimos ocho años ha duplicado el número de sus sucursales hasta llegar a 40.
Desde su fundación Óptica LUX ha desarrollado una mística de trabajo orientada a la plena satisfacción de los clientes, la cual exige el máximo conocimiento sobre los gustos y necesidades ópticas de cada uno de ellos.
Se estima que al cierre de 1999 se contaba con la preferencia de varios cientos de clientes, los datos generales y optométricos de todos ellos se han conservado en fichas de cartón (Con las limitaciones derivadas de su operación manual).
El problema fue encontrar una solución viable que permitiera sistematizar la atención a los clientes, sin restar agilidad ni calidad al servicio, sino todo lo contrario, que agregara más valor a cada anteojo entregado.
Para empezar, se debe reseñar brevemente el proceso general de atención a clientes en Óptica LUX, con el fin de comprender el alcance de la aplicación que será descrita más adelante. Cuando un cliente llega a cualquiera de las Ópticas LUX, es atendido siguiendo los siguientes pasos:
Son tomados los datos generales del cliente, entre otros su nombre, dirección y buzón de correo electrónico.
El cliente es conducido a un gabinete, donde se le realizan distintos tipos de mediciones y exámenes, entre ellos se encuentran la lensometría, la refracción, la queratometría, la medición de la agudeza visual, etc.
Con base a las pruebas efectuadas se asesora al cliente sobre las tecnologías ópticas que pueden ayudarle en su problema de visión.
El cliente selecciona tanto la tecnología de lentes como el modelo de armazón que más le acomoden.
El cliente otorga un anticipo o la liquidación de su trabajo, mismo que es remitido a la fábrica para su pronta elaboración y entrega.
Del estudio del proceso de atención a clientes se derivaron ciertas consideraciones, las cuales son cruciales para la implementación de cualquier aplicación que pretenda apoyarlo, a saber:
Los pasos no son del todo secuenciales, dependiendo del tamaño de la óptica, y de la cantidad de personas que estén esperando atención. Se puede optar por tomar los generales dentro del gabinete o, si todos los gabinetes están siendo ocupados, preferir que el cliente seleccione primero el armazón antes de que se le apliquen los exámenes.
El personal de las ópticas es experto en optometría, más no están familiarizados con los sistemas de cómputo.
El espacio de cada óptica es limitado, y el que existe se prefiere usarlo para mostrar a los clientes los armazones que se encuentran a su disposición.
Deben ser almacenados una gran variedad de datos optométricos de cada cliente.
La atención al cliente debe ser ágil y personalizada, las personas deben ser identificadas por su nombre, no por un número.
De todo lo expuesto se ve que la aplicación para apoyar la atención a clientes es bastante especializada e innovadora.
Desde 1990 se han estudiado diferentes sistemas propietarios especializados en puntos de venta para ópticas, pero ninguno de ellos se apega completamente a los procesos de atención a clientes y fabricación de anteojos de Óptica LUX. De haberlos adoptado hubiera implicado cambiar los procesos o pagar el doble del costo original del software por concepto de adecuaciones y modificaciones, sin mencionar el costo implícito de la dependencia a una casa de software.
En el año 1995 se consideró la posibilidad de desarrollar in-house el software justo a la medida de las necesidades de Óptica LUX. No obstante al proyectar los costos de licenciamiento de la plataforma y herramientas que en aquel entonces estaban en uso (SCO Unix e Informix), resultaba que se tenía que erogar un monto equivalente a la apertura de una nueva óptica!!!, incluyendo instalaciones, equipo de medición optométrica y mercancía.
Fue entonces cuando se decidió buscar soluciones viables que no implicarán inversiones multimillonarias en licencias. Las plataformas que más llamaron la atención fueron coherent, qnx y Linux.
Tratamos de contactar a coherent, pero en esa época cesaron de operar.
Qnx contaba con un representante en México (en la ciudad de Monterrey N.L.). Su labor se concretó a enviarnos folletería, pero el tiempo de respuesta y su atención dejaron mucho que desear.
Se conoció a Linux por medio de un artículo titulado ``Linux una propuesta indecorosa'', escrito por Fernando Magariños (mejor conocido en los grupos de correo como la mítica ``Mancha de la Calabaza que ladra''). Le mandamos un correo, el cual fue contestado por el mismísimo Miguel de Icaza (dudo que él lo recuerde). Él dio sus puntos de vista, los cuales reforzaron aún más el interés hacia Linux.
En un principio se vio a Linux sólo como una plataforma ``Royalty free''. Sin embargo los principios en los que se basa, así como el dinamismo y espíritu de las comunidades alrededor del mismo fueron impactantes y cautivadoras.
El soporte técnico que se obtiene de las listas de correo es más efectivo que cualquiera de sus contrapartes comerciales. Linux es una plataforma estable en constante perfeccionamiento y tiene gran cantidad de aplicaciones ampliamente disponibles.
Además, la información sobre Linux y el software libre es mucho más asequible que la de su contraparte propietaria, haciendo factible un auto-aprendizaje de estas herramientas.
Actualmente Linux es usado en Óptica LUX no sólo en las sucursales, sino también en las oficinas ejecutivas, sobre todo en el lado del servidor, para compartir archivos e impresoras, almacenar bases de datos y ejecutar aplicaciones desarrolladas para otros Unix.
También es utilizado como base de la infraestructura de comunicaciones, como servidor ppp, servidor de web, correo electrónico y ftp (nuestra pequeña ``intranet''), así como para el control y segmentación del tráfico de la red.
Últimamente se ha introducido el Linux como plataforma de escritorio para usuarios finales, pero esa es otra historia. :-)
Todo inicio es difícil, y el factor crítico en Óptica LUX fue el convencer a los Directivos no tanto de las bondades técnicas de la plataforma, si no más bien el que tomaran conciencia de que el costo de desarrollo de nuevos sistemas, sobre todo altamente especializados, no es barato ni rápido.
Fueron 7 empresas o grupos quienes cotizaron el desarrollo del sistema sobre Linux, pero sus propuestas sobrepasaban el costo de las soluciones propietarias de las que ya se ha hablado.
Se intentó reclutar programadores para el desarrollo in-house. Sin embargo aún son pocas las personas que realmente programan en esta plataforma, y quienes se encuentran disponibles cobran (y con justa razón) más allá de la media del mercado.
Hoy se reconoce que el desarrollo de aplicaciones basadas en software de fuente abierta podría ser más caro que el dependiente de herramientas propietarias, pero los resultados son mucho mejores. De cualquier forma, los ahorros en licenciamiento se pueden aplicar al desarrollo de este tipo de aplicaciones.
A mediados de 1999 se contrató a un grupo de consultores para desarrollar la aplicación de atención a clientes teniendo como base Linux y software GNU.
El desarrollo se abordó con un enfoque de prototipos incrementales. Primero se elaboró un análisis donde se obtuvieron :
El diseño detallado de la base de datos.
Los casos de uso de la aplicación.
Las interfaces de usuario.
Con base en ello se programó un primer prototipo, el cual fue evaluado por optometristas expertos, derivándose más detalles sobre los requerimientos y comportamientos del sistema, los cuales se concretaron en un nuevo prototipo un tanto más perfeccionado, continuándose así en ciclos sucesivos de refinamiento.
El poder de las herramientas utilizadas permitió acelerar el proceso de programación, reutilizando y perfeccionando los componentes de la aplicación.
Las herramientas seleccionadas se pueden agrupar en dos divisiones: las empleadas durante el análisis, diseño y documentación, y las empleadas en la construcción de la aplicación.
Es difícil reseñar brevemente una aplicación tan especializada y densa. El esquema o script para la creación de la base de datos tiene más de 1000 líneas sql, y la aplicación más de 15,000 líneas perl. Así que sólo se mencionarán los aspectos más relevantes.
El punto más importante de está aplicación es la interface de usuario. Para facilitar la labor del usuario se decidió un diseño lo más plano y sencillo posible, en donde el experto en optometría se sienta cómodo e identifique los elementos de información por sus conocimientos en óptica y no tanto por su experiencia en cómputo.
Los elementos de la interface de usuario se agrupan en pestañas siguiendo la metáfora de un cuaderno (ver siguiente figura). A pesar de ser construida en un medio ambiente gráfico, la aplicación no necesita del mouse para poder ser manejada. De hecho con una combinación de teclas se puede acceder a cualquier pestaña o botón.
Las pestañas que conforman la aplicación son las siguientes:
A continuación se expondrán los aspectos más importantes relacionados con estos grupos de información.
Lo que se destaca en esta pestaña es la facilidad con la que se pueden buscar y encontrar datos. Por ejemplo, se puede introducir parte del nombre de la colonia, seleccionar un estado de la lista e inmediatamente la aplicación proveerá de una lista con los códigos postales (C.P.) que cumplan con esas dos condiciones.
En lugar de colonia pudo haberse seleccionado Delegación/Municipio, o ambas, en cuyo caso el sistema habría provisto una lista más específica.
En la base de datos se encuentran cargados todos los códigos postales, colonias, delegaciones y municipios del país en una tabla de más de 60,000 renglones. En las búsquedas más largas la aplicación no tarda más de 3 segundos en elaborar y presentar una lista de los códigos postales.
Tales facilidades de búsqueda se extienden a lo largo de toda la aplicación. Si el usuario desea encontrar a una persona llamada ``Juan'', pero no recuerda si su Apellido es ``Pérez'' o ``Penas'', entonces escribirá ``Pe'' en el Apellido Paterno y ``Juan'' en el Nombre, oprimirá el botón ``Buscar'' (o mejor aún oprimirá la combinación de teclas Ctrl-B). El sistema le presentará una lista con todos los clientes de la base de datos que cumplan con las condiciones solicitadas.
En cualquier parte de la aplicación, se puede oprimir la combinación de teclas Ctrl-A, con las cuales se presenta una ventana con los clientes que se están atendiendo en ese preciso momento, permitiéndose identificarlos por su nombre y pudiendo acceder inmediatamente a cualquiera de sus datos.
Esta es una de las pestañas que más trabajo causó a los programadores, porque implicó efectuar modificaciones al código fuente de los widgets de pTk, en particular el frame de ``Revisiones de Medios Externos y Transparentes''.
En dicho frame el usuario puede seleccionar cualquiera de las revisiones que se ponen a su disposición, apareciendo a su lado derecho otra lista con las anomalías que se pueden dar, tanto en el ojo derecho como en el izquierdo, para tal revisión.
Cuando el optométrista activa el ``check button'' automáticamente aparece una cruz al lado derecho de la etiqueta de la revisión que seleccionó previamente. (¿Alguien sabe si tal cosa se puede programar fácilmente, digamos en VB?).
En la pestaña de Examen se realizan una serie de validaciones un poco complejas. Cuando el optometrista anota las lecturas que arrojan cada uno de los instrumentos y toma la decisión de la graduación que ha de prescribir al cliente, entonces el sistema valida las correlaciones que hay entre todos los datos y avisa al usuario si existe alguna condición errónea.
¡Esta es la joya de la aplicación!, es la parte del código que más discusiones y esfuerzos costó al equipo de desarrollo. Cuando una persona usa lentes de contacto no se imagina la maravilla tecnológica que tiene puesta en sus ojos.
Los lentes de contacto son como los zapatos. Así como no hay dos pares de pies iguales en todo el mundo, tampoco hay dos pares de ojos con idénticos padecimientos visuales.
La aplicación está diseñada para ayudar al optometrista a determinar el tipo de lente de contacto más viable para cada cliente. No es posible que la aplicación determine (o ``recete'') una graduación de manera automática, ya que hay varias condicionantes ``no medibles'' que se han de tomar en cuenta (como las asentadas en la pestaña de antecedentes). Sin embargo puede servir como herramienta para evaluar el impacto de determinados valores sobre la agudeza visual de cada ojo.
Así por ejemplo, para cierto tipo de lente llamado tórico, la aplicación pone a disposición del optometrista un medio para ensayar y corregir la desviación del eje del lente de contacto (esquina inferior derecha de la figura anterior). Como ya hemos dicho, no hay dos ojos iguales en todo el mundo, y cuando los lentes de contacto se colocan en ellos sufren ciertos acomodamientos derivados de la curvatura de la córnea, los cuales afectan a la graduación final del ojo en cuestión.
Existen otros aspectos de la aplicación que por su singularidad son dignos de mención, uno de ellos es un mecanismo de duplicación de base de datos vía internet, el cual pretende la transmisión segura de los datos de todas las ópticas para su concentración en una enorme bodega de datos residente en las computadoras de las oficinas ejecutivas.
Dicho mecanismo esta implementado en una serie de módulos que pueden ser conseguidos en cualquier espejo de CPAN, así como con código escrito para el manejador de la base de datos PostgreSQL, tal y como se aprecia en la siguiente figura:
De hecho esta implementación tiene tantos detalles interesantes, que se espera exponerlos en un articulo futuro en _LF_, esto es, si los editores nos dan nuevamente la oportunidad. :-)
El último aspecto importante que se ha de mencionar es el uso de clientes ligeros. Como se indicó al principio de este artículo, se requería que las computadoras empleadas en la aplicación ocupen el menor espacio físico posible. Por ello se emprendió la tarea de buscar la mejor opción entre computadoras 486 usadas, computadoras con gabinetes slim, ultra-slim y network computers.
Las alternativas que resultaron más viables fueron:
Como el factor crítico es el espacio físico se eligieron las Network Computers con monitores SVGA de 9 pulgadas, ya que sus dimensiones (19.05 x 26.67 x 3.18 cm) permiten ubicarlas hasta en cualquier cajón de los aparadores.
La experiencia respecto a los clientes ligeros también esta repleta de detalles interesantes, por lo que se propone describirla en un futuro articulo en _LF_, si es que los editores nos conceden su venia.
Sólo resta reconocer la labor de todos aquellos que con su creatividad y esfuerzo hicieron posible que la aplicación de atención de clientes se basara completamente en Linux:
Citlali Calderón de Anda: citlali@galois.fciencias.unam.mx
Liliana Araceli Cabello: liliana@galois.fciencias.unam.mx
Juan José Alba
Edgar Raúl Acosta Villaseñor: edgar@galois.fciencias.unam.mx
Gunnar Wolf: gwolf@chmd.edu.mx
Roberto Andrade Fonseca: randrade@abl.com.mx
Existen partes de código que creemos que pueden ser de interés general para la comunidad, tales como las modificaciones hechas a los widgets de pTk, la implementación para enviar e-mails encriptados desde perl, los programas para la sincronización y duplicación de bases de datos PostgreSQL, así como las imágenes de discos de arranque para despliegue gráfico. Todo ello se podrá encontrar en la siguiente dirección: http://www.pochtecah.org.mx/ABL_GNU.html.