Contratos para la implantación de software
Para ciertas operaciones, poner en funcionamiento un software es relativamente sencillo. Se trata de adquirir una licencia, que muchas veces no se puede negociar, se instala, se aprende a usar con los manuales y si hay un problema se llama al departamento de servicio al cliente. Operaciones más complejas implican una serie de servicios adicionales llamados comúnmente implantación o implementación. Estos contratos suelen ir de la mano de los contratos de compraventa y de licenciamiento, y por ello se ven títulos de contrato como licenciamiento e implantación de software o compraventa e implementación de software.
Implantación e implementación se usan de una manera indistinta pero si tienen una sutil diferencia. De acuerdo con el diccionario de la Real Academia de la Lengua Española implantar significa: plantar, encajar, injertar, e implementar significa: poner en funcionamiento, aplicar métodos, medidas, etc., para llevar algo a cabo. Ambos términos involucran el concepto de traer algo de afuera y ponerlo a funcionar en un nuevo medio.
En la práctica, implantar se utiliza en relación con aquel software que se puede instalar y parametrizar sin necesidad de hacer modificaciones en su código fuente. Por el contrario, se tiende a utilizar implementar cuando hay necesidad de hacer modificaciones o nuevos desarrollos que implican programación y modificación de los códigos fuente. Esto no es una definición legal pero si recomiendo que se utilicen estas palabras en este sentido.
El proceso de implantación requiere del compromiso y la obligación de ambas partes de colaborar. Incluso el cliente en este momento tiene la mayor responsabilidad puesto que ningún proceso de implantación funcionará sin su compromiso. Suelen presentarse inconvenientes en la implantación cuando no se especifican en el contrato las obligaciones de las partes. Si el contrato está redactado de forma que se entienda que la obligación de implantación es de resultado, el cliente exigirá todo cuanto le sea posible hasta que vea que el programa está en marcha y en uso dentro de su organización.
La implantación incluye ciertas actividades de compilación, instalación, personalización, migración de datos, capacitación y entrega de documentación que entraremos rápidamente a estudiar.
Compilación e instalación
La compilación e instalación son los primeros pasos que deben seguirse para poner en funcionamiento un programa en un computador. A continuación veremos rápidamente en que consisten estos pasos[1] para mirar cuáles son las dificultades que suelen presentarse.
Como vimos en el punto anterior, el software se escribe en un lenguaje de programación que es entendible por el programador y el resultado que se obtiene es el código fuente. El código fuente del programa se debe someter a un proceso de transformación para convertirse en lenguaje binario, interpretable por el procesador del computador. A este proceso se le llama compilación. El programa que realiza esta traducción se llama compilador. El archivo de código objeto que se obtiene con la compilación está representado normalmente en un código binario, es decir una larga lista de 1 y 0 que sólo puede entender el computador.
Para conseguir el programa ejecutable final a partir de todos los archivos de código objeto se debe utilizar un programa llamado instalador y un enlazador (linker). Este proceso de montaje tiene como resultado un archivo ejecutable que contiene el programa en código listo para ser ejecutado con la ayuda del sistema operativo.
Los ejecutables generalmente se entregan al momento de adquirirse el software independientemente del tipo de contrato que se haya realizado. Es a estos ejecutables a los que se les está permitido hacer copias de seguridad[2] cuando se tiene una licencia del software. Tenerlos permite que el software pueda volver a ser instalado de nuevo. Aunque me atrevo a señalar que es una costumbre mercantil entregar los ejecutables es mejor establecer en el respectivo contrato la obligación de hacerlo.
La instalación no presenta mayores dificultades pero algunas veces se complica. Las fallas pueden ir ligadas a una compilación inadecuada, un daño en el soporte (diskette, cdrom…), problemas en el dispositivo de lectura, incompatibilidades con el hardware, conflictos con otro tipo de programas. Incluso, algunos antivirus o software de protección del computador impiden su correcta instalación y funcionamiento.
Para evitar este tipo de problemas el proveedor del software debe señalar en la propuesta, o en el contrato, claramente los requerimientos técnicos que debe tener el computador donde se piensa instalar, tales como: tipo de procesador, memoria requerida, sistema operativo, parches o programas adicionales que deben instalarse. Si el software ha de instalarse en una red también es importante que se determinen las características que ha de tener dicha red. No todos los programas corren en todos los computadores, el desarrollador del software debe hacer las pruebas necesarias para saber en que condiciones particulares funciona el programa y cuales no.
En el caso que el cliente ponga a disposición el hardware requerido y el software continúa presentando problemas en la instalación consideramos que estos deben ser resueltos por cuenta del proveedor puesto que es él quién conoce su programa y los problemas que éste pudiera llegar a tener. Muchas veces se escucha el siguiente argumento por parte de los proveedores: «Este programa se ha instalado y funciona en cientos o miles de computadores y aquí es el primer lugar donde molesta». Puede que esto sea cierto, pero el proveedor de software es el profesional y debe estar preparado para afrontar este tipo de situaciones.
La personalización
Esta palabra es un anglicismo que no aparece en el diccionario. Lo que si aparece es el verbo personalizar. Se trata del conjunto de acciones necesarias para que el software se adapte a las necesidades y requerimientos del cliente. El concepto es un poco más amplio pero también incluye la configuración. Esta adaptación puede hacerse cómo una parametrización, palabra que tampoco existe en el diccionario, o con desarrollos específicos.
La parametrización se realiza cuando deben ajustarse unos parámetros establecidos en el software a las particularidades del cliente. Esta parametrización es relativamente fácil de hacer si el cliente cuenta con la información necesaria. Algunas veces por ejemplo, hay que parametrizar un determinado procedimiento pero resulta que el cliente no tiene definidos sus procesos. Surge entonces la discusión entre el cliente y el proveedor para determinar quien debe levantar los procesos y luego parametrizarlos en el software. Seguramente en el contrato no se estableció nada para solventar esta situación. Por ello recomendamos que en los contratos se especifique que tipo de información se requiere para parametrizar el software y quién va a estar encargado de conseguir esa información.
Muchas veces no es posible encontrar un software que sólo requiera ser parametrizado y por eso se hace necesario recurrir a la implementación. Sobre este asunto ya nos hemos pronunciado en el punto anterior, así que no insistiremos más.
La migración de datos
Cuando se instala el nuevo programa generalmente se encuentra sin ningún dato. El cliente seguramente tiene los datos que desea migrar al nuevo software en algún tipo de base de datos, un archivo de hoja de cálculo, en documentos escritos en papel, disperso en distintos medios o simplemente en la memoria de las personas.
En una organización joven la migración no presenta mayores dificultades pero en una organización con experiencia migrar todos los datos al sistema puede ser un trabajo muy grande. Los datos muchas veces están en distintas o diferentes bases de datos totalmente desarticuladas y con distintas estructuras que hace muy complicado consolidarlas.
En el contrato debe establecerse claramente quién tendrá a cargo la migración de los datos, en que formato se entregan los datos y en que formato deben entregarse. Esta información sólo se puede obtener luego de una consultoría previa y que se haya hecho el diseño de la nueva base de datos. Pero resulta que muchas veces en los contratos se establecen previsiones sobre estos temas sin que se haya dimensionado realmente el trabajo a realizar. No es de extrañar que luego las partes se encuentren en un eventual conflicto.
La capacitación
Una vez instalado el software hay que enseñarles a los futuros usuarios su utilización. Este proceso se puede hacer a través de manuales, ayudas del programa, capacitación en línea o presencial. La capacitación puede contratarse con la empresa proveedora del software o con empresas especializadas en estos servicios.
La capacitación está determinada por el nivel que tengan las personas a capacitar y las funciones que tienen que prestar dentro de la empresa. Se presenta el caso en que se va a capacitar sobre la utilización de un software muy específico y resulta que los usuarios no saben ni siquiera como coger el ratón de un computador. El tiempo y los recursos destinados empiezan entonces a verse afectados con los futuros inconvenientes que esto conlleva.
La alta rotación de personal que caracteriza a nuestras empresas igualmente afecta este proceso. Puede ocurrir que cuando se termina la capacitación ya no continúen muchas de las personas capacitadas en la empresa. Si la cláusula del contrato se limita a señalar que «el contratista capacitará a los empleados del contratante» puede ingresar a un ciclo infinito de capacitaciones del que sólo saldrá deteriorando la relación con su cliente.
Considero conveniente incluir siguientes puntos en los contratos:
1. Número de horas que se van a emplear.
2. Número de personas a las que se va a capacitar.
3. Perfiles de las personas que se van a capacitar.
4. Perfil de las personas que va a dictar la capacitación
5. Conocimientos previos que se requieren para la capacitación.
6. Lugar, equipos necesarios para la capacitación y quién cubre con los gastos.
7. Gastos de desplazamiento
8. Valor de las horas adicionales de capacitación.
9. Sistema de evaluación de los resultados de la capacitación
La documentación
Junto a los instaladores se acostumbra entregar una documentación acerca del funcionamiento del programa. Dependiendo de la persona a que vaya dirigida la documentación está incluirá las funciones básicas para el usuario o información más técnica para las personas que prestan soporte interno dentro de las organizaciones.
Una característica muy común en los programas desarrollados a medida es la escasa o muy precaria documentación que existe sobre los mismos. No se han desarrollado en nuestro medio estándares que garanticen una buena calidad. Al final puede que se entregue un documento en el que se explique muy por encima las funcionalidades del programa. De esta manera se cumplirá con lo establecido en el contrato pero la documentación no cumplirá su función, permitir el correcto uso y aprovechamiento del programa
La ausencia o indebida documentación obliga a los clientes a apoyarse bastante en el servicio de soporte del proveedor de software. La apuesta de la empresa de software puede ser peligrosa, puede que así amarré más a sus clientes pero esta estrategia no le va a procurar muchos clientes nuevos y va a hacer su departamento de soporte aumente a un tamaño que le resultará muy poco rentable o costoso de sostener. Tener buenos manuales es importante para la empresa de software porque con ello ayudará a reducir las llamadas de soporte.
Aunque es difícil establecer contractualmente las características de la documentación si es importante al menos especificar:
1. Tipo de documentación a entregar (manual de usuario, otro tipo de manuales)
2. Idioma
3. Tipo de información que debe contener el manual (funciones y procedimientos principales, preguntas frecuentes, problemas frecuentes…)
4. Número de ejemplares y formato en el que se deben entregar
El proceso de implantación no debe descuidarse o tratarse simplemente como unas obligaciones anexas al contrato relacionado con el programa. La correcta implantación es fundamental para el buen desarrollo y utilización del programa que es en últimas el objetivo de la contratación.
[1] Tomado de la enciclopedia wikipedia «compilación» (2005)
[2] Decisión 351 de 1993. Comunidad Andina de Naciones. Artículo 25.
Fuente: Alvaro Ramírez Bonilla – computerworld.com.co