En la primara parte del curso mencioné algunas de las ventajas que emergieron mientras dasarrollaba la Superficie Gráfica y básicamente era la de poder utilizar la superficie en diversas aplicaciones y precisamente este segunda parte trata de la transformación de la Superficie Gráfica en una verdadera Fábrica de Software a la que he llamado GENESIS y se convierte en una autómata para la creación de aplicaciones informáticas de forma sencilla, rápida y sobre todo, seguras. Expreso algunos conceptos que permiten justificar el hecho de tener en el arsenal de desarrollo, un autómata.
En el transcurso de mi actividad informática me he enfrentado a varios desafíos notables y como siempre el mayor y más cruel de todos, es el tiempo. Nuestros ingresos y por ende nuestro sostenimiento se apoyan en los resultados exitosos que podamos lograr cuando desarrollamos aplicaciones de software, ya que eso es lo que hemos elegido como medio de sustento. Entonces, cada vez que nos acorrala el fantasma del vencimiento de plazos hacemos una rememoración de qué manera se ha planeado tal o cual proyecto, si se han considerado los factores de riesgo y se les ha dedicado mayor esfuerzo y más tiempo de calidad en las alternativas de solución. Y nos encontramos con algo que seguramente hemos vivido todos, los aspectos rutinarios de todo desarrollo. Si analizamos este componente dentro de nuestros proyectos, podemos verificar con cierto estupor, a pesar de nuestra experiencia, que ha consumido una gran parte de tiempo que podría ser empleado en desmenuzar a esos temidos factores de riesgo. Solo es de esperar que aun estemos a tiempo de tomar las medidas correctivas ya que el fracaso de una gran parte de proyectos de software tiene que ver con que el tiempo se agota y con nuestra desesperación que crece.
Cierto día mientras revisaba documentación que en la década anterior llegaba tanto por Internet como material físico y escrito, encontré una frase en un artículo de la revista The Technologist de enero de 2006 y que decía: Computer Software That Writes Itself. Leyendo el artículo me di cuenta que se abría un nuevo camino en el desarrollo de software. Ya había hablado con la gente de Genexus, desarrollado por Artech en Uruguay y me enteré que la idea de automatizar la componente rutinaria de cualquier proyecto venía de hacía mucho tiempo y si bien había servido para solucionar problemas muy personales del inspirador de esta herramienta, fueron la base para convertir la idea en un emporio de software exitoso y floreciente. El artículo que leí me inspiró y me puse a trabajar con las herramientas que tenía a mi alcance y después de mucha transpiración y algo de inspiración surgió Génesis, que era en definitiva un autómata alimentado por abstracciones y que se apoyaba en un diseño gráfico donde se esparcían los elementos que formaban parte de los productos que se fabricaban. Tuve varios debates con profesionales que nunca lograron aceptar el hecho de una máquina reemplazara el código que ellos tenían como patrimonio innegociable y todos estos intercambios, si bien no convencieron de todas maneras a los puristas, dejaron muy bien parado al producto que se defendió con gallardía.
Pero indudablemente tenía que trabajar mucho más para lograr cumplir con el objetivo que dio origen a su creación y era el de ahorrar tiempo en la codificación y mientras peleaba denodadamente por perfeccionar el funcionamiento de Génesis, vi que con una herramienta de automatización se tenían otras ventajas que al principio no eran tan evidentes pero que surgieron como consecuencia a los éxitos y fracasos. Entre estas tenemos:
- Creación de prototipos
- Estandarización de procesos
- Fácil aprendizaje
- Inclusión de metodologías no previstas
- Mantenimiento mucho más eficiente
- Posibilidades de cambios radicales
- Satisfacción de los clientes
Quizá se puedan encontrar otras ventajas pero esto tiene que venir de otras mentes mucho más inspiradas, lo que sí puedo mencionar es que la única desventaja de tener un autómata, es que los programadores no acepten otro código que no sea el suyo, esto es muy real y espero que en el transcurso del trabajo que presento, esta desventaja pueda, aunque no revertirse, ya no ser tan urticante. Particularmente me fascina la idea de automatizar procesos.
Es cierto que en el campo de la investigación han surgido conceptos muy profundos como ser el de los Patrones, que son generalizaciones de piezas de software que se aplican a cualquier lenguaje y facilitan los algoritmos con la ventaja de ser únicos en su concepto. Es decir que cuando se hace investigación no se puede automatizar el genio, eso es totalmente cierto y gracias a esos genios es que tengo a mi disposición las herramientas y las facilidades que me permiten construir mis propias fantasías.
Pero qué ocurre en la vida diaria donde un gerente de un banco espera a que sus empleados del departamento de sistemas entreguen la aplicación de cajas de ahorro o de depósitos de cheques. Eso sí es presión, ese momento no se requieren genios sino obreros dedicados y entusiastas. Aquí las prioridades son muy diferentes de las que rigen en un laboratorio de investigación. Aquí lo que interesan son los resultados prontos, eficientes y confiables o las cabezas de muchos jefes ruedan sin misericordia.
Este es el ámbito ideal de un autómata ya que la misión de la gerencia de sistemas de cualquier institución es la de organizar un equipo compacto y solidario en el que ninguno de sus miembros pueda anteponer sus preferencias al objetivo principal de la institución. Ni qué decir si el equipo trabaja en una compañía que debe entregar en plazos perentorios y bajo presiones de multas o recisiones de contrato, aplicaciones de alto costo o muy complejas. Entonces, si el equipo está pronto, si han aceptado la estandarización, si han comprendido que el mantenimiento de las aplicaciones no serán solo deseables sino hasta divertidas y que todo eso redunda en producir más y mejores aplicaciones, que al final se traduce en mejores ingresos suyos y de las compañías, ese momento todos desearán tener una herramienta de generación de código y cuanto más abstracciones se utilicen todo será solo ganancia.
Aquí hago un alto ya que lo expresado suena más a magia que a software y para ser sinceros, aún sigo maravillándome de los caracteres que se despliegan en un monitor, por lo tanto si eso no es magia pues... Pero todo tiene techos y límites y no sería serio si no los menciono. No existe y eso lo sabemos tanto por intuición como por comprobación, un autómata o un sistema, por complejo que sea, que pueda resolverlo todo en el mundo de la informática. Son demasiadas variables y tipos de aplicaciones las que están siendo manejadas en este mundo para que una sola entidad se ocupe de armonizarlas. Por esta razón es que debo mencionar el alcance de mi herramienta. Esto no quita la posibilidad que los entusiastas del software produzcan o encuentren otras aplicaciones hasta la panacea final.
En algunos párrafos anteriores mencioné a un gerente de banco esperando el desarrollo de la aplicación de Cajas de Ahorro o Depósitos de Cheques. Ese es el tipo de aplicaciones que serán automatizadas con la fábrica de software que construiré en el curso. Es decir, se podrán fabricar aplicaciones que tengan datos a ser registrados en un formulario y que desemboquen necesariamente en un repositorio físico, sea una base de datos o algún otro medio de almacenamiento y estos datos puedan a su vez ser recuperados del repositorio para su edición o impresión. Estas aplicaciones son las denominadas aplicaciones OLTP (On Line Transaction Processing) y de esas me ocuparé durante todo el curso.
Este curso trata de Génesis pero quiero mencionar que es una primera aproximación a lo que sería una completa y universal Fábrica de Software y espero que estos primeros conceptos sirvan a ustedes, estimados estudiantes, a seguir en las investigaciones incorporando por ejemplo tecnologías tan de avanzada como ser las Redes Neuronales.
He utilizado para el curso la herramienta Visual Estudio 2012 de Microsoft pues la considero muy completa. El lenguaje ha sido C# de amplia difución y creciendo y la base de Datos SQL Server 2012 Express.