Tiempo de lectura: 8 minutos

Segundo clasificado en el concurso +Ideas2015 de Indra Software Labs

El 18 de Noviembre del 2015 se celebró la fase final del Concurso +Ideas2015 que celebra Indra Software Labs entre todos sus factorías.

Para quién no lo conoce, os dejo la descripción del concurso.

Mi idea: RED (Repositorio Empresarial Distribuido)

Este año era la segunda vez que participaba en la fase final del concurso. Mi idea para este año 2015 estaba englobada dentro del apartado Ingeniería del Software y Reutilización.

Aunque el concurso está dotado con premios económicos mi principal objetivo era que la idea pudiera llevarse a cabo en Indra pues mi departamento, entre otros muchos, se vería beneficiado. RED fue la segunda idea más votada. Sabor agridulce. Feliz por el segundo puesto y por el premio, y triste porque la idea no recibió el suficiente apoyo para llevarse a cabo. Pese a que esto no es una restricción, creo que con un primer puesto hubiera sigo más fácil.

¿Qué es RED?

Aquí tenéis la presentación, pero recomiendo que sigáis leyendo para que se entienda correctamente.

Aunque para entenderla sería necesario la explicación que di, creo que con la diapositivas se puede tener una idea.

RED es un sistema para compartir librerías o código entre las factorías de Indra de una forma “inteligente”. Y pongo inteligente con dobles comillas porque esa palabra, inteligente, está muy ligada al ‘humo tecnológico’ y todo lo que propongo existe. RED sería un conjunto de ideas y aplicaciones ya existentes por lo que su viabilidad es posible.

Además, ofrece estimaciones sobre el uso de integración de las librerías, información útil sobre la compatibilidad de estas librerías en un futuro, sistema de notificaciones ante posibles problemas encontrados en las librerías… y más cosas.

¿Por qué RED?

La idea fue propuesta porque en las factorías donde trabajo nos encontramos con los siguientes problemas:

  • Factorías distribuidas por todo el mundo. Además, dentro de estas factorías existen departamentos por tecnologías por lo que el desarrollo de aplicaciones está muy fragmentado.
  • Reutilización. Indra cuenta con un espacio de reutilización de código basado en Confluence de Atlassian. Las personas que quieran subir código, se crea una página en blanco y sube ficheros o copia y pega el código. A través de filtros se puede acceder a estas páginas. El problema de usar esto para compartir código, es que no existe un control sobre ese código encontrándonos con los siguientes problemas:
    • Código obsoleto. Código deprecated. Versión obsoletas.
    • Falta de ficheros para completar la librería.
    • No se garantiza que el código funcione pues es un copy&paste.
  • Valoración del código. A través del espacio reutiliza se puede valorar las librerías subidas. Esta valoración consiste en dar un valor de 1 a 5. No existe ningún requisito sobre la valoración. Cualquiera puede valorar el código lo hayas usado o no.
  • Autores abandonan la librería. Se da en muchas ocasiones que alguien comparte código y con el paso del tiempo esta persona abandona el proyecto o se va a otra empresa. La librería queda desierta y sin apoyo.

Ante este problema, surgió la idea propuesta. RED está formado por cuatro sistemas que se encargan de trabajar el código. Estos sistemas son:

  • Sistema de Código. Es un repositorio de código tal cual. Es el encargado de recoger todas las librerías y código que se quiera compartir. Se podría usar Git. Además se usarían otras herramientas como Integración Continua (Jenkins), Virtualización (Docker), etc. La idea es poder coger el código, probarlo y versionarlo. Así evitamos que se suba código que no compila.
  • Sistema de Información. Este sistema sería el encargado de ofrecer información útil dada por el autor, por equipos que han usado la librería y por aplicaciones de terceros. La valoración de estas tres fuentes harán que una librería sea más o menos destacada. Se podrá encontrar información como:
    • Nombre de la librería, descripción, lenguaje, manual, si lleva o no test, etc. Toda esta información es dada por el autor.
    • Deuda técnica, coverage del código, errores, etc. Esta información puede ser dada por programas que analizan el código como SonnarQube.
    • Estimaciones de integración. Cada vez que en un proyecto se use una librería, se pedirá una estimación de su integración. El sistema de información ofrecerá una media de estimaciones dadas.
    • Valoración. A través de las distintas valoraciones dadas por los equipos que han usado una librería, se ofrecerá una valoración media.
  • Sistema VIDA. Es el sistema encargado de mantener el “código vivo“. Cuando escribo código vivo, me refiero a mantener lo máximo posible el código con el paso del tiempo. Para ello, se podrán realizar operaciones como:
    • Métodos deprecated. Auto corrección de estos métodos o envió de estos problemas al Sistema Información para su valoración.
    • Comportamiento en futuras versiones. Todas las librerías serán probadas con las versiones de framework o Sdk que vayan saliendo. Por ejemplo, una librería desarrollada para Android 4, se probará de forma automática en versiones posteriores a la 4 para conocer si funciona o no, o si empeora su rendimiento, etc. antes de que llegue al usuario final. Lo mismo se podría hacer con MySql, Php, Sdk Java, iOS, Symfony, etc.
  • Sistema de Notificaciones. Es el sistema encargado de comunicarse de forma autónoma con el responsable del proyecto que usó alguna librería contenida en RED. Si se encuentra un bug, o si se encuentra un fallo en una futura versión de una dependencia, o problemas de rendimiento en algún dispositivo, etc. enviará una notificación a todos los proyectos donde se usó la librería.

Ventajas

Las principales ventajas que veo con respecto al sistema de reutilización actual son:

  • Código estable. Al menos el código que se suba compila.
  • Información extra. Información sobre estimación, calidad del código, problemas detectados… ayudaran a la elección de la librería y creará librerías estándar para los desarrollos.
  • Notificaciones automáticas ante posibles problemas. No se esperará a que el cliente o usuario notifique de posibles errores.
  • Estimaciones en proyectos. Con información sobre su integración, ayudará a estimar parte del desarrollo en los proyectos.
  • Evolución de las librerías y personalización. Se pueden pedir personalizaciones de librerías al ser código de la propia empresa.

Conclusiones

Como podéis ver, RED está formado por herramientas o ideas (DevOps) que existen habitualmente. Mi innovación consistía en unir todas estas herramientas y usarlas como un único sistema para compartir librerías o código internamente.

Premiados

PRIMER PREMIO

Idea: LIRA

Autora: María de Fátima Requena Cabot

Centro: Ciudad Real

Elaboración de un protocolo de digitalización de documentos (a partir de papel o de PDF) o construcción de los mismos (a partir de un compositor tipo LaTeX) que permita su conversión a audio de tal forma que facilite la posterior navegación sobre dichos documentos por voz (avanzar, retroceder, “ir a…”, búsqueda de palabras, enfatización tipo subrayado, adición de contenido al estilo de anotaciones al margen, etc.). Por lo tanto se establece un estándar a adoptar por la parte de producción del material de manera que se facilite la posterior interacción sobre los audios obtenidos siguiendo dicho estándar.

SEGUNDO PREMIO

Idea: RED- Repositorio empresarial distribuido

Autor: José María Perez Ramos

Centro: Salamanca

Sistema inteligente que permite compartir librerías, módulos, etc., entre las distintas factorias y mantener el código ‘vivo’ de forma autónoma. Además ofrece información útil como estimaciones de tiempo de integración, deuda técnica, posibles bugs y un sistema de seguimiento que permite mantener informado en todo momento a aquellos proyectos que han usado código de RED.

TERCER PREMIO

Idea: Monitor de Trabajo Personal

Autor: David Ramos Fernández

Centro: Madrid

Creación de un sistema que explote y muestre la información mediante un widget de escritorio referente a la actividad y un cuadro de estadísticas respecto a profesionales de su mismo perfil. Mediante un monitor de trabajo tridimensional el profesional puede controlar su estado de forma y seguir su progreso, con el objetivo de optimizar su productividad en un determinado tipo de tarea o disciplina, en base a su capacitación y experiencia.

Premios especiales:

ACCESIT

Idea: FormaSAP

Autor: Alejandro Pérez Mateo

Centro: Málaga

Aplicación Web para creación de contenidos ABAP, conexión con servidor Web con tablas similares a SAP, gestor de ficheros y terminal. Permite visualizar las ejecuciones de programas en el entorno Web.

ACCESIT Y PREMIO ESPECIAL A LA IDEA MAS VOTADAS POR LOS FINALISTAS

Idea: Generación de documentación para ABAP

Autor: Alberto García de Haro

Centro: Málaga

Conversión de código fuente ABAP en ecuaciones LaTeX y viceversa. Se genera un documento .tex que se puede compilar en cualquier herramienta, el documento consistirá en todos los cálculos que realice el programa ABAP.

Ganadores y Jurado Concurso +Ideas2015

Ganadores y Jurado Concurso +Ideas2015

Ganadores Concurso +Ideas2015

Ganadores Concurso +Ideas2015