Sie sind auf Seite 1von 36

de

Las tesinas
Belgrano
Facultad de Tecnologa Informtica
Ingeniera en Informtica
Generacin de cdigo fuente en aplicaciones
Web.
N 226 Leonardo F. Tom
Tutor: Alejandro A. Vaisman
UNIVERSIDAD DE BELGRANO
Departamento de Investigaciones
Agosto 2008
Tesinas Estilo decisionista matizado de gobierno.
Agradecimientos
A mi hermano Pablo; a Enrique Molinari y a quienes de una u otra manera ayudaron a que este tra-
bajo sea posible.

Tesinas Generacin de cdigo fuente en aplicaciones Web.
4
Tesinas Generacin de cdigo fuente en aplicaciones Web.
5
ndice

ndice .................................................................................................................................................... 5
Resumen .............................................................................................................................................. 7
Captulo 1 Introduccin...................................................................................................................... 7
1.1 Contexto ....................................................................................................................................... 7
1.2 Motivacin .................................................................................................................................... 8
1.3 Contribucin ................................................................................................................................. 8
1.4 Organizacin del documento ........................................................................................................ 8
Captulo 2 Estado del arte ................................................................................................................. 8
2.1 Genexus ....................................................................................................................................... 8
Modelo de desarrollo .................................................................................................................... 9
Tecnologas involucradas ............................................................................................................. 9
2.2 BackEnd Wizard ......................................................................................................................... 10
Modelo de desarrollo .................................................................................................................. 10
Tecnologas involucradas ........................................................................................................... 10
2.3 Otras herramientas ..................................................................................................................... 10
ASPRunner Profesional .............................................................................................................. 10
SQL2JAVA ...................................................................................................................................11
Evolve ..........................................................................................................................................11
Brightsword ..................................................................................................................................11
2.4 Resumen .....................................................................................................................................11
Captulo 3 La herramienta propuesta: Balmod .................................................................................11
3.1 Modelo de desarrollo .................................................................................................................. 12
Lectura de metadatos ................................................................................................................. 12
Confguracin de presentacin ................................................................................................... 12
Generacin de cdigo ................................................................................................................ 12
3.2 Tecnologas involucradas ........................................................................................................... 13
3.3 Comparacin de Balmod con herramientas similares ................................................................ 13
3.4 Resumen .................................................................................................................................... 15
Captulo 4 Diseo de Balmod .......................................................................................................... 15
4.1 Esquema general de Balmod ..................................................................................................... 15
4.2 Tcnica de generacin in-line code expansion ........................................................................ 15
4.3 Modelo de datos y procesos ....................................................................................................... 16
Lector de Metadatos ................................................................................................................... 16
Generador de Cdigo ................................................................................................................. 17
4.4 Ejemplos de funcionamiento ...................................................................................................... 18
Funcionamiento general ............................................................................................................. 18
Generacin de cdigo ................................................................................................................ 20
4.5 Resumen .................................................................................................................................... 21
Captulo 5 Ejemplo de uso .............................................................................................................. 21
5.1 Caso de estudio .......................................................................................................................... 21
Confguracin ............................................................................................................................. 21
Lectura de metadatos ................................................................................................................. 22
Especifcacin ............................................................................................................................. 22
Generacin de cdigo ................................................................................................................ 24
5.2 Anlisis del cdigo generado con Balmod .................................................................................. 26
5.3 Resumen .................................................................................................................................... 27
Captulo 6 Trabajos futuros y conclusiones ..................................................................................... 27
6.1 Trabajos futuros .......................................................................................................................... 27
6.2 Conclusiones .............................................................................................................................. 28
Tesinas Generacin de cdigo fuente en aplicaciones Web.
6
Apndice A Ejemplo de una aplicacin web .................................................................................... 28
Solicitud de datos al usuario............................................................................................................... 28
Validacin de datos ingresados por el usuario ................................................................................... 29
Registro en la base de datos de la informacin ingresada ................................................................ 29
Informacin del resultado de la operacin.......................................................................................... 30
Apndice B Confguracin de Balmod ............................................................................................. 30
Apndice C Conectividad de Balmod con motores de bases de datos ........................................... 31
Apndice D Componentes Auxiliares .............................................................................................. 33
Glosario: ............................................................................................................................................. 33
Bibliografa.......................................................................................................................................... 34

Tesinas Generacin de cdigo fuente en aplicaciones Web.
7
Resumen
Este trabajo presenta Balmod, una herramienta de software generadora de cdigo fuente orientada al
desarrollo de aplicaciones web que utilicen bases de datos. El principal objetivo de la aplicacin consiste
en acelerar el proceso de desarrollo de mdulos de uso habitual en diferentes aplicaciones; bsicamente
altas, bajas y modifcaciones. La generacin automtica de cdigo fuente permite que las tareas que
habitualmente son realizadas por un programador se realicen automticamente generando archivos con
cdigo fuente destinado a resolver un determinado tipo de problemas de aparicin recurrente. Se logra
as disminuir los recursos de desarrollo necesarios, evitando el origen de errores de programacin y
aumentando la productividad.
Una de las caractersticas distintivas de la herramienta aqu propuesta es la capacidad de operar inde-
pendientemente del tipo de tecnologa especfca que desee utilizarse; ya sea en herramientas relativas
a motores de bases de datos, lenguajes de programacin o plataformas de ejecucin.

Captulo 1 Introduccin
1.1 Contexto
Actualmente no existen dudas de que el manejo de informacin automatizado proporciona benefcios
deseados por cualquier clase de organizacin como lo son por ejemplo persistencia de informacin,
bsquedas giles y efcientes de informacin, ptimo mantenimiento de datos y duplicacin de datos
instantnea entre otros. Con el desarrollo de internet; la utilidad de los sistemas informticos se potenci
considerablemente debido a la posibilidad de acceso a la informacin mediante cualquier computadora
conectada a la red con un navegador (browser) instalado. En sus inicios la totalidad de la informacin
publicada en internet estaba compuesta por pginas en formato HTML completamente estticas lo que
no haca posible personalizar informacin publicando datos del inters de algn usuario en particular
de acuerdo a las necesidades y/o posibilidades del mismo. Esa fue la causa en la que se originan los
lenguajes de desarrollo de aplicaciones web.
Los lenguajes de desarrollo de aplicaciones web permiten publicar en la red informacin de manera
dinmica generando pginas HTML mediante el procesamiento de informacin concreta; esto permite,
por ejemplo, que un usuario se conecte a un sitio web y que solicite informacin especfca, luego el
servidor web recibe esa solicitud, busca la informacin en alguna fuente de datos (por ejemplo una base
de datos relacional), genera una pgina HTML que contenga la informacin solicitada y fnalmente enva
la pgina al usuario. En la fgura 1.1 puede observarse un ejemplo tradicional de la arquitectura de una
aplicacin web.

Figura 1.1 Arquitectura de una aplicacin web
Tesinas Generacin de cdigo fuente en aplicaciones Web.
8
El desarrollo de una aplicacin web bsicamente debe contemplar 3 componentes: un modelo de datos,
una aplicacin que enva informacin al cliente desde el servidor web y fnalmente una aplicacin que
enve informacin al servidor web desde el cliente. Para el modelo de datos mayoritariamente se utiliza
un Sistema Administrador de Base de Datos Relacionales mediante el cual es posible manipular datos de
una manera efectiva y efciente. La aplicacin que enva informacin al cliente desde el servidor puede ser
implementada utilizando un lenguaje de programacin de aplicaciones web como por ejemplo ASP, PHP o
JSP. La aplicacin que enva informacin al servidor desde el cliente puede ser implementada en lenguaje
HTML. Dado que HTML bsicamente se trata de un lenguaje orientado a la presentacin de informacin
y no al procesamiento de esta; se extendieron sus capacidades mediante el lenguaje Javascript para tal
fn; para especifcar la apariencia de la informacin presentada se le incluy el procesamiento de archivos
de estilos denominados CSS (Cascade Style Sheet). En el apndice A se encuentra un simple ejemplo
de una aplicacin web en el que puede observarse como interactan las tecnologas involucradas.
1.2 Motivacin
La aplicacin descripta en el apndice A muestra que son muchas las tecnologas necesarias para
un desarrollo web; esta variedad de tecnologas provoca que la complejidad de un sistema de este tipo
aumente provocando as el incremento de tiempos y costos de desarrollo. En todo proceso de desa-
rrollo de software resulta de gran utilidad identifcar previamente tareas recurrentes utilizadas en otros
desarrollos. Considerando que toda aplicacin que incluya un repositorio de datos debe proveer una va
para administrarlo y de acuerdo a la arquitectura expuesta en la fgura 1.1 puede inferirse que una de las
tareas presente en desarrollos web es el desarrollo de una aplicacin que permita la administracin de la
informacin almacenada en las bases de datos del sistema web. A este tipo de aplicaciones tradicional-
mente se los conoce como ABMs debido a que las operaciones bsicas propias de la administracin de
informacin almacenada en bases de datos son Altas, Bajas y Modifcaciones de datos.
1.3 Contribucin
La herramienta aqu presentada permite la generacin automtica de cdigo fuente para aplicaciones
ABMs independientemente del motor de base de datos de soporte con capacidad de generacin en distin-
tos lenguajes orientados a plataformas web. Su utilizacin permite generar aplicaciones con un esfuerzo
considerablemente menor al necesario en la programacin ntegramente manual en cualquier plataforma
de ejecucin compatible con Java Virtual Machine.
1.4 Organizacin del documento
Inicialmente, en el Captulo 2, sern descriptas herramientas similares a Balmod que refejan el estado
del arte en el campo de generacin de cdigo fuente. En el Captulo 3 se describir la funcionalidad de
Balmod y se comparar con las herramientas presentadas anteriormente para establecer las similitudes,
diferencias y contribuciones proporcionadas por cada herramienta focalizndose especialmente en Balmod.
El Captulo 4 presenta y describe el diseo de Balmod. En el Captulo 5 se presenta un ejemplo de uso
de Balmod sobre la generacin de un ABM del que ya se encuentra desarrollada una versin mediante
programacin tradicional. En el captulo 6 se proponen trabajos futuros y se formulan conclusiones. El
Apndice A presenta y describe un ejemplo prctico de una aplicacin web. Los Apndices B, C y D con-
tienen informacin tcnica que ejemplifca el funcionamiento de la aplicacin.

Captulo 2 Estado del arte
En este captulo se describen las principales herramientas de generacin de cdigo existentes. En
particular fueron seleccionadas Genexus y Back End Wizard para estudiarlas en forma detallada.
2.1 Genexus
Genexus es una herramienta desarrollada en Uruguay por ARTech que en 15 aos en el mercado tec-
nolgico comercializ ms de 15000 licencias brindando servicios a 4500 clientes en 26 pases de 4 con-
tinentes; su objetivo es asistir al analista y a los usuarios en todo el ciclo de vida de las aplicaciones.
El paradigma de Genexus consiste en automatizar todo lo automatizable, lo que implica en el ciclo
de vida de un sistema informtico disear automticamente una base de datos normalizada y generar y
mantener la base de datos, los programas de aplicacin y documentacin autosufciente.
Tesinas Generacin de cdigo fuente en aplicaciones Web.
9
Modelo de desarrollo
El modelo de desarrollo utilizado por Genexus es el modelo de desarrollo incremental basado inicial-
mente en tres etapas; diseo, prototipacin e implementacin; posteriormente a la ejecucin completa
de estas etapas pueden desarollarse tareas de mantenimiento y de documentacin. El ambiente de
realizacin y prueba de diseo y prototipo utilizado es Windows NT/2000/XP.
En la etapa de diseo el analista junto con el usuario elaboran una base de conocimientos en la que
se incluyen reglas de negocio las cuales se representan mediante diferentes objetos propios de Genexus
como pueden ser por ejemplo el objeto transaccin mediante el cual es posible que un usuario pueda crear,
modifcar o eliminar informacin de la base de datos. Una vez fnalizada esta etapa puede disearse en
forma abstracta (independientemente del motor de bases de datos) un modelo de datos con base en la
teora de Bases de Datos Relacionales obtenindose una base de datos en tercera forma normal.
La siguiente etapa es la de prototipacin y consiste en probar el modelo diseado en un prototipo de
Genexus. El prototipo de Genexus es una aplicacin completa funcionalmente equivalente a la aplicacin
de produccin. Durante esta etapa probablemente se detecten fallas en el diseo de la aplicacin por lo
que es posible regresar a la etapa anterior para corregir esas fallas.
La tercera y ltima etapa dentro del modelo de desarrollo es la de implementacin la cual se divide en
dos subetapas: especifcacin y generacin. En la subetapa de especifcacin se determinan tecnologas
y caractersticas particulares propias de la tecnologa seleccionada. En la subetapa de generacin se
produce y compila en cdigo fuente.
Debido a que Genexus utiliza una base de conocimientos para cumplir con su propsito es posible
actualizar aplicaciones actualizando la base de conocimientos. Si se realizan cambios en la base de co-
nocimientos de una aplicacin ya implementada Genexus efecta un anlisis de impacto de los cambios
realizados y ofrece la posibilidad de generar programas de conversin para la aplicacin implementada
o bien implementar nuevamente toda la aplicacin. Debido a esta caracterstica es de suma importancia
no modifcar manualmente el cdigo fuente generado por Genexus porque de esta manera se produci-
ran inconsistencias entre la base de conocimientos y la aplicacin fnal lo que puede causar un nivel de
inutilidad absoluto de la funcionalidad de mantenimiento de Genexus.
Durante todo el proceso de desarrollo y mantenimiento de aplicaciones, Genexus elabora y mantiene
un repositorio con documentacin acerca de aplicacin en cuestin. No solamente incluye la informacin
propia de la base de conocimientos sino que adems incluye toda la informacin inferida lgicamente.
Tecnologas involucradas
Actualmente existe una gran variedad de posibilidades para generar aplicaciones con Genexus; a
continuacin se enumeran todas las tecnologas con las que esta herramienta puede implementar apli-
caciones.
Las aplicaciones generadas por Genexus pueden ejecutarse en una gran variedad de plataformas:
Sistemas operativos:
o IBM OS/400
o Linux
o Unx
o Windows NT/2000/2003 Servers
o Windows NT/2000.XP/CE
Plataformas web:
o Java
o ASP.NET
o Visual Basic Script (ASP)
o c/SQL
o HTML
o Web Services
Plataformas de ejecucin:
o JAVA
o Microsoft .NET
Los motores de bases de datos soportados por esta herramienta son:
IBM DB2 UDB
Informix
Miscrosoft SQL Server
MySQL
Tesinas Generacin de cdigo fuente en aplicaciones Web.
10
Oracle
PostgreSQL.
El cdigo generado puede producirse en los siguientes lenguajes:
Java
C#
C/SQL
COBOL
RPG
Visual Basic
Embedded Visual Basic
Visual Fox Pro
Las aplicaciones web pueden ejecutarse en los siguientes servidores:
Microsoft IIS
Apache
Web Sphere
2.2 BackEnd Wizard
El hngaro Attila Zsigmond es el creador de BackEnd Wizard, una herramienta desarrollada uniperso-
nalmente; la ltima versin de este producto data del ao 2004, su principal objetivo es generar pginas
web que permitan listar, buscar, insertar, modifcar y eliminar registros en bases de datos.
La herramienta se encuentra implementada en una arquitectura cliente/servidor en lenguaje PHP y si
bien es una herramienta comercial puede utilizarse parcialmente de manera gratuita ingresando a www.
backend-wizard.com .
Modelo de desarrollo
Backend Wizard genera scripts PHP que permiten administrar tablas soportadas en MySQL; su funcio-
namiento ntegramente basado en una aplicacin web consiste en crear las tablas necesarias enviando a
la herramienta los comandos SQL correspondientes, indicar caractersticas de presentacin de cada uno
de los campos de las tablas en cuestin (por ejemplo, seleccionar si un determinado campo se presentar
como casilla de texto o como lista desplegable) y fnalmente generar el script. Una vez que se genera el
script es posible visualizarlo, utilizarlo y testearlo sin costo alguno; si el usuario lo desea puede descargar
el script generado a cambio del pago de una subscripcin temporal.
El proceso de creacin de scripts resulta ser realmente gil con el uso de esta herramienta sin em-
bargo Backend Wizard posee dos restricciones sobre el modelo de datos a utilizarse que disminuyen
signifcativamente su utilidad; la primera restriccin es que no recomienda el uso de campos que admitan
valores nulos debido a que pueden generar fallas en la funcionalidad de bsqueda de registros; la se-
gunda restriccin establece que todas las tablas del modelo de datos deben poseer como clave primaria
un campo autonumrico, esta restriccin impacta signifcativamente sobre la variedad de modelos de
bases de datos posibles de utilizar ya que restringe la cantidad de campos propios de la clave primaria
impidiendo adems que sea posible establecer claves forneas de ms de un campo.
Tecnologas involucradas
Como ya se mencion anteriormente Backend Wizard genera scripts en cdigo PHP y como motor de
bases de datos utiliza MySQL; actualmente los scripts PHP pueden ejecutarse en servidores web Apache
o Miscrosoft Internet Information Server bajo los sistemas operativos Windows, Linux y Unix. Los scripts
PHP generan informacin en el servidor Web y la presentan al cliente en lenguaje HTML.
2.3 Otras herramientas
La oferta de herramientas generadoras de cdigo fuente es muy variada. En la pgina web www.
codegeneration.net puede encontrarse un listado con aproximadamente 200 aplicaciones de este tipo;
cada una posee caractersticas particulares que enriquecen o empobrecen su utilidad; a continuacin se
describen brevemente algunas de ellas.
ASPRunner Profesional
Lenguaje de generacin de cdigo: ASP
Motores de bases de datos: Oracle, SQL Server, MS Access, DB2, MySQL
Tesinas Generacin de cdigo fuente en aplicaciones Web.
11
Genera base de datos: no
Plataforma de ejecucin: Windows 95/NT o superior
Licencia: comercial
Creador: Universal Data Solutions, Inc (USA)
Pagina web: http://www.xlinesoft.com/asprunnerpro/
SQL2JAVA
Lenguaje de generacin de cdigo: Java
Motores de bases de datos: Oracle, MYSQL, HSQL y cualquier motor de base de datos que soporte
JDBC
Genera base de datos: no
Plataforma de ejecucin: compatible con JVM
Licencia: GPL
Creador: desarrollo conjunto de cdigo abierto
Pagina web: http://sql2java.sourceforge.net/
Evolve
Lenguaje de generacin de cdigo: ASP.NET
Motores de bases de datos: Microsoft SQL Server 2000 o superior
Genera base de datos: no
Plataforma de ejecucin: Windows 98 o superior
Licencia: Freeware
Creador: Joseph Cooney (USA)
Pagina web: http://www.dcooney.com/evolve/
Brightsword
Lenguaje de generacin de cdigo: ASP, PHP, JSP, ASP.NET
Motores de bases de datos: Microsoft Access, MySQL, Oracle y Microsoft SQL Server
Genera base de datos: no
Plataforma de ejecucin: .NET
Licencia: comercial
Creador: BrightSword Technologies Private Limited (India)
Pagina web: http://www.brightsword.com/
2.4 Resumen
En este captulo se presentaron herramientas similares a Balmod. Se describieron en detalle Genexus
y Backend Wizard detallando el modelo de desarrollo que utiliza cada una y las tecnologas con las que
trabajan. Tambin se describieron brevemente otras herramientas similares.
En el captulo 3 se describir en detalle el modelo de desarrollo y las tecnologas incluidas en Balmod
para luego comparar las tres herramientas descriptas en detalle.

Captulo 3 La herramienta propuesta: Balmod
Siempre que se implementa un modelo de datos relacional utilizando un motor de bases de datos es
posible ingresar, modifcar y eliminar datos en la base de datos mediante sintaxis SQL. Sin embargo, esta
sintaxis no resulta prctica para el comn de los usuarios fnales por lo que en la mayora de los casos
en los que se utiliza una base de datos relacional tambin debe desarrollarse una aplicacin que permita
al usuario fnal administrar los datos de la base de datos sin que el mismo deba acudir a los tecnicismos
de la sintaxis SQL. A este tipo de aplicaciones se los conoce como ABMs.
Balmod es un software que permite agilizar el proceso de desarrollo de aplicaciones web focalizndo-
se en la generacin del cdigo fuente de aplicaciones destinadas a administrar los contenidos de bases
de datos relacionales lo que implica la generacin del cdigo fuente de un software que permita realizar
altas, bajas y modifcaciones en las diferentes tablas del modelo de datos en cuestin. En otras palabras;
Balmod genera cdigo fuente para ABMs.
Para cumplir con su objetivo Balmod se basa en utilizar la informacin disponible del modelo de datos;
a la informacin del modelo de datos (metadatos). El anlisis de los metadatos permite deducir el formato
Tesinas Generacin de cdigo fuente en aplicaciones Web.
12
de la informacin que ser almacenada. Por ejemplo; si en el modelo de datos contamos con la tabla
T1 que posee los campos A, B y C siendo A un campo que contiene caracteres, B un campo numrico
y C un campo que almacena fechas es posible inferir que para realizar altas es necesario el ingreso de
una cadena de caracteres, un nmero y una fecha por lo que automticamente es posible generar un
formulario que permita dar altas sobre la tabla T1 validando que la informacin ingresada por el usuario
contenga el formato necesario.
En este captulo se presenta una descripcin general de Balmod y se lo compara con las herramientas
descriptas en el captulo 2. En el captulo 4 se describir detalladamente el producto.
3.1 Modelo de desarrollo
El desarrollo de una aplicacin mediante Balmod consta de tres etapas: lectura de metadatos, conf-
guracin de presentacin y generacin de cdigo.
Lectura de metadatos
En esta etapa se indica el modelo de datos que se utilizar junto con informacin necesaria para
acceder al mismo (usuario de la base de datos, contrasea, etc.); una vez que Balmod se conecta a la
base de datos presenta una lista con las tablas del modelo de datos en la que debe indicarse cules
sern administradas mediante la aplicacin a generar; posteriormente se proceder a la extraccin de
informacin de cada una de las tablas seleccionadas elaborando internamente un esquema que contempla
caractersticas de los diferentes campos de las tablas y sus relaciones. En el Apndice C se indican los
metadatos requeridos por Balmod para interpretar el modelo de datos.
Balmod considera por cada campo:
Pertenencia a clave primaria
Pertenencia a clave fornea
Tipo de dato
Tamao
Admisin de valores nulos
Autonumeracin del valor
Confguracin de presentacin
Una vez especifcada la informacin que debe ser considerada para la generacin de la aplicacin el
usuario tiene la posibilidad de seleccionar diferentes caractersticas de presentacin de la informacin a
publicar como por ejemplo la etiqueta de identifcacin de cada campo y tabla y el modo de seleccin de
valores de claves forneas, entre otros.
Generacin de cdigo
Finalmente se procede a la generacin del cdigo fuente, para ello el usuario debe indicar parmetros
como la ubicacin de los archivos generados, datos para la conexin a la base de datos por parte de
la aplicacin y ubicacin de archivos que pudieran ser referenciados por el cdigo generado como por
ejemplo archivos de imgenes grfcas.
Figura 3.1 Flujo de datos en Balmod
Tesinas Generacin de cdigo fuente en aplicaciones Web.
13
3.2 Tecnologas involucradas
La actual versin de Balmod est desarrollada con tecnologa Java bajo su versin JRE 1.4.2 lo que
permite su ejecucin en mltiples plataformas; los parmetros de confguracin deben indicarse mediante
lenguaje XML permitiendo una confguracin simple, precisa y portable.
Balmod y el cdigo fuente que produce realizan conexiones a bases de datos mediante el uso de objetos
ODBC; actualmente todos los motores de bases de datos utilizados masivamente soportan conexiones
mediante objetos ODBC como es el caso de MS SQL Server, MySQL, PostgreSQL, Informix, IBM DB2
y Oracle. En el apndice C se detallan las caractersticas de conectividad de Balmod con los diferentes
motores de bases de datos.
Balmod genera cdigo fuente en lenguaje PHP, puede ser ejecutado en cualquier servidor web que
soporte esta tecnologa como por ejemplo Linux, Unx, Microsoft Windows, Novell NetWare, OS/2, AS/400
y Solaris. Adems, Balmod est diseado para generar cdigo en lenguajes de desarrollo de aplicaciones
web como por ejemplo ASP y JSP; si bien internamente no implementa mtodos que soporten la gene-
racin de cdigo en estos lenguajes contiene una especifcacin para generacin de cdigo mediante la
cual es posible implementar mtodos que soporten la generacin de cdigo en lenguajes ASP y JSP. En
el captulo 4 se describe el funcionamiento del generador de cdigo de Balmod.
Resumiendo:
Plataformas de ejecucin de la herramienta:
o Cualquiera compatible con JRE 1.4.2 (MS Windows, Linux, Unx, entre otros)
Motores de bases de datos soportados:
o Cualquiera compatible con ODBC (MS SQL Server, MySQL, DB2 entre otros)
Lenguajes del cdigo fuente generado:
o PHP
o Posibilidad de extensin a ASP y JSP.
3.3 Comparacin de Balmod con herramientas similares
A continuacin se presenta un cuadro comparativo en el que se incluyen caractersticas de las tres
herramientas presentadas y descriptas en los captulos 2 y 3. Las caractersticas consideradas son:
Arquitectura de aplicacin generada: indica la disposicin fsica y lgica de los componentes de la
aplicacin a ser generada.
Funcionalidad de las aplicaciones generadas: representa el universo de problemas que la aplicacin
generada es capaz de resolver.
Lenguajes: enumera los lenguajes de programacin en los que puede generarse el cdigo fuente.
Solamente son considerados lenguajes de programacin web.
Motores de bases de datos: enumera aquellos motores con los que la herramienta es compatible.
Plataforma de ejecucin: indica la compatibilidad de la herramienta con software de base (sistemas
operativos).
Generacin de modelos de datos: indica si la herramienta genera automticamente modelos de datos.
Esta caracterstica puede considerarse como una ventaja o una desventaja dependiendo de cada caso
en particular. En aquellos casos en los que no se posea una base de datos generada es un ahorro
de esfuerzo generarla automticamente. En los casos en los que ya se posea una base de datos
que quiera ser reutilizada en una nueva aplicacin la generacin automtica impedira la reutilizacin
generando un modelo que probablemente sea diferente al que se desea reutilizar.
Orientado a modifcaciones manuales sobre el cdigo generado: indica si los componentes generados
automticamente por la herramienta soportan modifcaciones manuales. Si la herramienta utilizada
est orientada al programador es porque se pretende que ste perfeccione y/o modifque el cdigo
generado en caso de que sea necesario por lo tanto el cdigo fuente generado debe ser lo ms sim-
ple, breve y conciso posible para permitir una clara interpretacin del mismo; si el programador puede
modifcar el cdigo fuente generado con un esfuerzo relativamente bajo tiene la posibilidad de explotar
al mximo las capacidades del lenguaje de programacin en cuestin adaptndolo a sus necesidades
particulares. En el caso en el que la herramienta est orientada al analista lo que debe cambiarse para
perfeccionar una aplicacin generada es el modelo lgico de la aplicacin (en Genexus el modelo
lgico es la base de conocimientos) y luego se genera nuevamente o se actualiza el cdigo fuente
pero el usuario en ningn momento entra en contacto con el cdigo fuente por lo que no es necesario
que posea conocimientos especfcos del lenguaje de programacin utilizado
Restricciones sobre el modelo de datos utilizado: indica si la herramienta es compatible o no con
cualquier modelo de datos.
Modifcacin del modelo de aplicaciones generadas: indica si es posible generar nuevas aplicaciones
Tesinas Generacin de cdigo fuente en aplicaciones Web.
14
modifcando el modelo de una aplicacin generada anteriormente.
Documentacin de la aplicacin generada: indica si la herramienta genera algn tipo de documentacin
de la aplicacin generada.
Genexus Backend-Wizard Balmod
Arquitectura de
aplicaciones generadas
stand alone y web web web
Funcionalidad de las
aplicaciones generadas
general ABM ABM
Lenguajes (web)
Java, ASP.NET, ASP,
c/SQL
PHP
PHP extensible a ASP
y JSP
Motores de bases de
datos
IBM DB2 UDB,
Informix, Miscrosoft
SQL Server, MySQL,
Oracle, PostgreSQL.
My SQL
Cualquiera compatible
con ODBC
Plataforma de
ejecucin
MS Windows Entorno web
Compatible con Java
VM
Genera modelo de
datos
SI NO NO
Orientado a
modifcaciones
manuales sobre el
cdigo generado
NO SI SI
Restricciones sobre el
modelo de datos
--
Claves primarias
simples autonumricas
Modelo en 3 forma
normal
Modifcacin del
modelo de aplicaciones
generadas
SI NO NO
Documentacin de la
aplicacin generada
SI NO NO
Del cuadro anterior, con respecto a Genexus, se destaca que:
Es la herramienta ms poderosa de las presentadas.
Su aplicacin no se limita solamente a la generacin de ABMs orientados a web sino a la generacin
de aplicaciones en general.
Posee una amplia variedad en soporte a bases de datos y los lenguajes de generacin de cdigo.
No genera cdigo en PHP.
Ejecuta solamente bajo plataforma MS Windows.
Genera automticamente el modelo de base de datos. No permite utilizar modelos de datos ya gene-
rados.
No est orientado al programador; sino al analista.
Soporta la generacin de cdigo fuente sobre aplicaciones generadas anteriormente.
Genera documentacin de la aplicacin producida.
Con respecto a Backend Wizard se destaca que:
Su aplicacin se limita a la generacin de ABMs orientados a web.
Soporta bases de datos MySQL y genera cdigo fuente en PHP
Al funcionar en un entorno web puede considerarse que se trata de una herramienta que ejecuta
en cualquier plataforma (si bien la aplicacin ejecuta en un servidor un usuario puede acceder a la
herramienta mediante cualquier navegador que se encuentre ejecutndose en cualquier sistema
operativo).
Utiliza bases de datos existentes. No genera modelos de datos.
Est orientado al programador.
Las restricciones sobre el modelo de datos condicionan considerablemente su utilidad.
Tesinas Generacin de cdigo fuente en aplicaciones Web.
15
Con respecto a Balmod se destaca que:
Posee una amplia variedad en soporte a bases de datos y a lenguajes de desarrollo de aplicaciones
web.
Es multiplataforma.
Est orientado al programador.
Facilidad y rapidez de uso.
3.4 Resumen
En este captulo se present Balmod describiendo su modelo de desarrollo y las tecnologas que utiliza.
Tambin se compar a Balmod con Backend Wizard y con Genexus destacando las caractersticas de
cada una de las herramientas presentadas.

Captulo 4 Diseo de Balmod
Tal como se mencion anteriormente, un ABM posee 3 funciones bsicas: altas, bajas y modifcaciones.
Las operaciones de altas, bajas y modifcaciones implican una serie de procedimientos comunes inde-
pendientemente del modelo de datos utilizado. Por ejemplo, para realizar una alta en una tabla siempre
deben realizarse como mnimo los siguientes pasos:
Solicitar los datos a cargar.
Validar los datos a cargar.
Cargar los datos en la tabla correspondiente.
Informar al usuario el resultado de la operacin.
Ese tipo de operaciones recurrentes posibilitan la generacin automtica de cdigo fuente y en base
a estas Balmod cumple con su propsito.
4.1 Esquema general de Balmod
En el captulo 4 de Code Generation in Action ([1]), Jack Herrington propone diferentes tcnicas para
generar cdigo fuente. Tomando como referencia terica esas tcnicas Balmod implementa la denominada
inline code expansion. La razn de su eleccin se basa justamente en la similitud de las operaciones
recurrentes mencionadas anteriormente; durante el desarrollo de un ABM se cuenta principalmente con
dos elementos: el modelo de datos y la lgica funcional. El resultado fnal se logra adaptando la lgica
funcional al modelo de datos y ese es justamente el propsito de la tcnica inline code expansion.
4.2 Tcnica de generacin in-line code expansion
Esta tcnica consiste en tomar una porcin de cdigo fuente base y adaptarla a requerimientos espe-
cfcos. El cdigo fuente base soluciona un problema especfco en un entorno general identifcando en
su interior aquellos componentes que varan en cada caso particular mediante palabras clave o marcas
especiales en el texto; este podra ser considerado un pseudocdigo. El generador de cdigo debe ana-
lizar cada porcin de cdigo fuente base para luego modifcarla de acuerdo a necesidades especfcas
reemplazando las marcas especiales por porciones de texto que se correspondan con los componentes
especfcos del caso particular de aplicacin.
En el ejemplo expuesto en [1] se presenta una caso en el que se desea generar automticamente una
porcin de cdigo en C++ que retorne en pantalla el resultado de una consulta SQL especfca; esto implica
conectarse a la base de datos, preparar la sentencia SQL, ejecutar la consulta, formatear el resultado de
la consulta y mostrarlo en pantalla. Los subprocesos de conexin a la base de datos, ejecucin de una
consulta SQL, formateo de resultado de una consulta y presentacin en pantalla bsicamente realizan
las mismas operaciones en casos diferentes independientemente de la forma de la consulta SQL es por
eso que estos subprocesos pueden incluirse en el cdigo fuente base.
El cdigo fuente base en este caso es:
void main( int argc, char *argv[] )
{
struct {
char *frst;
char *last;
} *sql_output_1;
{
Tesinas Generacin de cdigo fuente en aplicaciones Web.
16
db_connection *db = get_connection();
sql_statement *sth = db->prepare( CONSULTASQL );
sth->execute();
sql_output_1 = malloc( sizeof( *sql_output_1 )*sth->count());
for( long index = 0; index < sth->count(); index++ )
{
// cdigo para mostrar datos
}
}
return;
}
Los requerimientos especfcos en este caso se corresponden con una consulta SQL:
SELECT frst, last FROM names
El resultado fnal es el siguiente:
void main( int argc, char *argv[] )
{
struct {
char *frst;
char *last;
} *sql_output_1;
{
db_connection *db = get_connection();
sql_statement *sth = db->prepare( SELECT frst, last FROM names );
sth->execute();
sql_output_1 = malloc( sizeof( *sql_output_1 )*sth->count());
for( long index = 0; index < sth->count(); index++ )
{
// cdigo para mostrar datos
}
}
return;
}
Ntese que la porcin del cdigo base que contena el texto CONSULTASQL en el cdigo generado
fue reemplazada por SELECT frst, last FROM names.
El modelo de Herrington emplea archivos de texto plano como elementos de entrada al proceso de
generacin de cdigo lo cual implica que deben ser interpretados mediante un parser; en Balmod tanto
el modelo de datos como las porciones de cdigo fuente base son representadas en clases para evitar el
uso de un parser, obtener valores especfcos de una forma ms simple y adems contar con las ventajas
proporcionadas por el paradigma de programacin orientada a objetos es por esa razn que se opt por
Java como lenguaje para su implementacin.
4.3 Modelo de datos y procesos
De acuerdo a la tcnica inline code expansion para la generacin del cdigo fuente son necesarios dos
componentes: el cdigo fuente base y los requerimientos especfcos. Como ya se mencion anteriormente,
en el desarrollo de un ABM el cdigo fuente base se corresponde con la lgica funcional y los requeri-
mientos especfcos se corresponden con el modelo de datos; estos dos componentes son representados
en Balmod mediante dos mdulos; un mdulo que permite reconocer e interpretar el modelo de datos
que utiliza una determinada base de datos denominado Lector de Metadatos y un mdulo denominado
Generador de Cdigo que basndose en el modelo de datos obtenido genera el cdigo fuente.
Lector de Metadatos
El lector de metadatos a partir de una conexin a una base de datos y de una serie de consultas SQL
genera una coleccin de objetos que representan metadatos de la base de datos en cuestin.
Tesinas Generacin de cdigo fuente en aplicaciones Web.
17
Figura 4.1 Entradas y salidas del Lector de Metadatos
El mecanismo es el siguiente:
Identifca las consultas SQL necesarias para el motor de base de datos en cuestin.
Se conecta a la base de datos.
Realiza las consultas correspondientes
Genera los objetos correspondientes con los resultados obtenidos
En la fgura 4.2 puede observarse en notacin UML reducida el diagrama de clases que representa
el modelo de datos; no se incluyen atributos y mtodos de cada clase para simplifcar el esquema. Los
objetos correspondientes al modelo de datos se corresponden con este diagrama.
Figura 4.2 Diagrama de clases del modelo de datos
Las clases involucradas son:
ModeloBDD: contiene la coleccin de tablas propias de la base de datos en cuestin.
MetadatosTabla: representa una tabla, contiene una coleccin de campos.
Campo: es una clase abstracta que representa el campo de una tabla; contiene atributos comunes a
los campos como el nombre y el tamao entre otros.
Tipos de datos: por cada tipo de datos existe una subclase que hereda de la clase Campo. Por ejemplo,
para el tipo de dato entero (habitualmente conocido como int o integer) existe una subclase de Campo
denominada CampoEntero que considera particularidades de este tipo de dato.
Clave: esta superclase considera restricciones de un campo.
ClavePrimaria y ClaveForanea: consideran restricciones de clave primaria y clave fornea respecti-
vamente; la relacin de composicin con un objeto de la clase Clave existe para contemplar casos de
campos que posean restricciones de clave primaria y fornea.
Cada objeto que representa un componente del modelo de datos posee un conjunto de parmetros
que pueden ser editados por el usuario permitiendo personalizar aspectos de la aplicacin a generarse.
Por ejemplo, la clase Campo posee un atributo denominado etiqueta mediante el cual el usuario puede
asignar la etiqueta de identifcacin de cada campo en la aplicacin generada.
Generador de Cdigo
El generador de cdigo toma como entradas el modelo de datos representado sobre objetos que
genera el lector de metadatos y una serie de componentes auxiliares (ver Apndice D) para producir los
archivos de cdigo fuente.
Tesinas Generacin de cdigo fuente en aplicaciones Web.
18
Figura 4.3 Entradas y salidas del Generador de Cdigo
Su funcionamiento consiste en generar por cada tabla del modelo de datos el grupo de archivos de
cdigo fuente necesario para realizar el ABM de esa tabla. Tambin se encarga de generar archivos de
cdigo fuente de uso general como por ejemplo el men principal de la aplicacin o la librera de conexin
a la base de datos.
En la fgura 4.4 puede observarse el diagrama de clases involucradas en el mdulo generador de
cdigo.
Figura 4.4 Diagrama de clases del Generador de Cdigo
Los componentes involucrados son:
ModeloBDD: explicada anteriormente.
GeneradorArchivos: se encarga de crear archivos y directorios con el nombre y la ubicacin corres-
pondientes. Adems, introduce en los archivos el cdigo fuente proporcionado por algn objeto que
implemente la interfaz GeneradorCodigo.
GeneradorCodigo: establece la interfaz que debe implementar una clase para poder producir cdigo
fuente en Balmod. En la siguiente seccin se describe su funcionamiento.
Generadores: son clases que implementan la interfaz GeneradorCodigo proporcionando cdigo fuente
en un determinado lenguaje de programacin.
4.4 Ejemplos de funcionamiento
Funcionamiento general
Se utilizar un ejemplo para aclarar el funcionamiento general de Balmod. Un caso concreto puede
producirse en la elaboracin de un sistema de registro de ventas. Es requisito del sistema que para
registrar la venta de un artculo debe ingresarse un registro en la tabla VENTAS; la cual contiene los
siguientes campos:
artculo: campo de texto que registra el artculo vendido.
monto: campo numrico que refeja el monto de la venta.
fecha: campo que almacena la fecha en la que ocurri la venta.
El modelo de datos est compuesto solamente por la tabla VENTAS; recopilando informacin sobre
Tesinas Generacin de cdigo fuente en aplicaciones Web.
19
esta tabla estaremos en conocimiento de los requerimientos especfcos de la aplicacin. Una vez que
el Lector de Metadatos interpreta la informacin del modelo de datos obtiene el siguiente diagrama de
objetos:
Figura 4.5 Diagrama de objetos
El diagrama representa a la tabla VENTAS y a los tres campos que la conforman; cada campo es un
objeto perteneciente a una clase representante de un tipo de dato particular, en este caso existen instan-
cias de las clases CampoTexto, CampoNumero y CampoFecha.
Por otra parte tenemos conocimiento de la lgica funcional de un ABM; sta debe contemplar:
Formularios de carga de datos.
Validacin de los datos cargados y posterior registro segn corresponda.
Listados de datos cargados.
Mecanismos para baja y modifcacin de datos.
Los componentes de la lgica funcional de un ABM se corresponden con los mtodos contenidos en
la interfaz GeneradorCodigo. As, por ejemplo, en la elaboracin de un formulario para la carga de datos
se dispone de un mtodo que recibe como parmetro la tabla en cuestin y de acuerdo a la naturaleza
de cada uno de los campos de la tabla genera el cdigo correspondiente; si el campo es un nmero ge-
nera el cdigo necesario para permitir el ingreso de nmeros, si el campo es una fecha genera el cdigo
necesario para permitir el ingreso de una fecha y as sucesivamente. El pseudocdigo bsico del mtodo
mencionado es el siguiente:
funcion generarFormulario (MetadatosTabla mt)
por cada campo c existente en mt
imprimir (campo c)
fn loop
fn funcion
El mtodo imprimir(campo c) se ejecuta de acuerdo a la naturaleza del campo en cuestin. Cada tipo
de dato contiene una implementacin particular de este mtodo, no es igual el cdigo correspondiente
a un campo numrico que el correspondiente a un campo de fecha. La aplicacin determina en tiempo
de ejecucin - utilizando polimofrsmo - cual de todos los mtodos ejecutar de acuerdo al tipo de objeto
instanciado por el Lector de Metadatos.
Si se une la lgica funcional general de un ABM junto con los requerimientos especfcos particulares
de la aplicacin es posible determinar concretamente la lgica funcional para la aplicacin particular. La
misma en este caso sera:
Presentar un formulario para registrar ventas. El formulario debe permitir la carga de un artculo, el
precio y la fecha correspondientes.
Evaluar que la informacin ingresada por el usuario se encuentre en el formato correcto. Es decir, que
el campo artculo est completado con una cadena de caracteres, que el campo precio contenga un
nmero y que el campo fecha contenga una fecha vlida. Si los datos son correctos debe procederse
al registro de la venta, caso contrario deber indicrsele al usuario que dato debe corregir y como
hacerlo.
Presentar al usuario un listado de las ventas registradas.
Proveer las herramientas necesarias para que el usuario pueda eliminar o modifcar las ventas en las
que detecte algn error en la informacin registrada.
Tesinas Generacin de cdigo fuente en aplicaciones Web.
20
Generacin de cdigo
El mdulo de generacin de cdigo fuente en Balmod consiste en la implementacin de una interfase
en lenguaje Java denominada GeneradorCodigo; en esta interfase se incluyen los prototipos de una lista
de mtodos mediante los cuales es posible indicar la manera en la que un lenguaje en particular realiza
una operacin; todos los mtodos retornan una cadena de caracteres o un conjunto de cadenas de ca-
racteres y la gran mayora recibe como argumento uno o varios objetos que representan componentes
del modelo de datos como por ejemplo tablas, campos y claves primarias entre otros.
Balmod incluye una implementacin de la interfase GeneradorCodigo mediante la clase Generador-
CodigoPHP de la cual a continuacin se expone la implementacin de uno de los mtodos propios de
la interfase en el que se retorna un conjunto de cadenas de caracteres que contienen el cdigo PHP
necesario para conectarse a una base de datos.
public ArrayList conexionBaseDeDatos() {
ArrayList codigo = new ArrayList();
codigo.add(<?php);
codigo.add(// Conexin a la base);
codigo.add(include(\../includes/conexionODBC.php\););
codigo.add(// Objeto de la base de datos);
codigo.add($baseDeDatos = new baseODBC(););
codigo.add($link_id = $baseDeDatos->conectar() or die(\Se produjo el siguiente error al intentar
conectarse a la base de datos:\ . $baseDeDatos->sqlError()););
codigo.add(?>);
return codigo;
}
A continuacin se presenta otro ejemplo de implementacin de un mtodo de la interfase Genera-
dorCodigo en el que se genera el cdigo PHP para imprimir en formato HTML una lista de seleccin de
valores correspondientes a una clave fornea compuesta por un campo (ClaveForaneaSimple); ntese
que en este caso el mtodo recibe como argumento un objeto que representa una clave fornea.
public ArrayList imprimirSelectClaveForaneaCombo(ClaveForaneaSimple cf) {
ArrayList codigo = new ArrayList();
String[] campos_a_mostrar = cf.getParametrosEditables().ArregloDeColumnas();
codigo.add(<TR> + this.etiquetaCampo(cf.campo) + <TD>);
codigo.add(<SELECT name=\ + cf.campo.nombreEtiquetaHTML() + \>);
codigo.add(<?php);
codigo.add(//rellenado del SELECT);
codigo.add($resultado = $baseDeDatos->comandoSQL(\select +
cf.getColumnaForanea() + , +
MetodosAuxiliares.unirStrings(campos_a_mostrar, , ) + from +
cf.getNombreTablaForanea() + \) or die(\</select>Se produjo el siguiente error al intentar
realizar una consulta a la base de datos:\. $baseDeDatos->sqlError()););
codigo.add(while ($linea = $baseDeDatos->generarLinea($resultado)));
codigo.add(\techo \<option value=$linea[ + cf.getColumnaForanea() +
]>$linea[ + MetodosAuxiliares.unirStrings(campos_a_mostrar, ] - $linea[) +
]</option>\;);
codigo.add(\t$baseDeDatos->liberarRecordset($resultado));
codigo.add(?>);
codigo.add(</SELECT>);
codigo.add(</TD></TR>);
return codigo;
}
La interfase GeneradorCodigo est compuesta por 50 mtodos y fue diseada para soportar la
implementacin de generadores de cdigo en lenguajes de desarrollo de aplicaciones web por lo que
anlogamente a la implementacin del generador de cdigo PHP pueden implementarse generadores
para otros lenguajes como por ejemplo JSP o ASP.
Tesinas Generacin de cdigo fuente en aplicaciones Web.
21
4.5 Resumen
El presente captulo describi como Balmod cumple con su objetivo presentando la tcnica inline
code expansion y detallando el funcionamiento del Lector de Metadatos y del Generador de Cdigo;
sus dos principales componentes.

Captulo 5 Ejemplo de uso
En este captulo se presenta un ejemplo de uso de Balmod para desarrollar un ABM sobre un modelo
de datos sobre el que ya se encuentra desarrollado otro ABM de manera tradicional. Una vez fnalizado
el ejemplo sern comparados los resultados obtenidos desarrollando el ABM mediante la generacin de
cdigo manual y mediante la generacin de cdigo automtica utilizando Balmod.
5.1 Caso de estudio
La aplicacin desarrollada manualmente consiste en un ABM de componentes de hardware que permite
administrar un inventario proporcionando informacin acerca del estado, ubicacin y caractersticas de
cada componente. Esta aplicacin es un caso real desarrollado para el Departamento de Sistemas de la
Universidad de Belgrano en el ao 2003. En la fgura 5.1 se presenta una porcin del modelo relacional
utilizado; para simplifcar la presentacin de la fgura solamente se incluyen seis de los catorce compo-
nentes propios del modelo original.
Figura 5.1 Modelo Relacional
Confguracin
Una vez defnido el modelo de datos es necesario vincularlo a un origen de datos ODBC; la operato-
ria de este proceso puede variar dependiendo del sistema operativo utilizado pero en todos los vnculos
Tesinas Generacin de cdigo fuente en aplicaciones Web.
22
ODBC debe indicarse un nombre para la conexin ODBC, un usuario y una contrasea. Con esos tres
parmetros es sufciente para crear un vnculo ODBC, pero ese vnculo representa una conexin a una
instancia de un motor de bases de datos y no a una base de datos especfca almacenada en ese motor.
Para un correcto funcionamiento de Balmod es necesario adems indicar la base de datos que inicialmente
ser utilizada por el vnculo ODBC.
Lectura de metadatos
Al disponer de un vnculo ODBC ya se cuenta con la principal fuente de datos para utilizar Balmod.
En la fgura 5.2 puede observarse la primera pantalla que se presenta al iniciar la ejecucin de la aplica-
cin; en ella debe indicarse el archivo XML que contiene informacin de acceso al catlogo de la base de
datos utilizada (en el Apndice C se describe este tipo de archivos) y los datos del enlace ODBC. En el
presente ejemplo se utiliza un modelo de datos implementado en SQL Server con un componente ODBC
denominado inventario.

Figura 5.2 Conexin a base de datos
Especifcacin
El siguiente paso consiste en seleccionar las tablas del modelo de datos para las que se desea generar
el cdigo fuente; la fgura 5.3 describe este paso.

Tesinas Generacin de cdigo fuente en aplicaciones Web.
23
Figura 5.3 - Seleccin de tablas
Luego puede observarse la estructura de cada tabla seleccionada en el paso anterior tal como puede
apreciarse en la fgura 5.4 en la que se presenta la composicin de la tabla dispositivos. En esta pantalla
tambin es posible defnir el texto (etiqueta) mediante el cual se identifcar a la tabla en cuestin en los
ttulos e identifcadores del cdigo generado y por cada campo de la tabla puede indicarse si el mismo
ser incluido en los listados de presentacin de los datos cargados en el cdigo generado.

Figura 5.4 - Detalle de tablas
Tesinas Generacin de cdigo fuente en aplicaciones Web.
24
Tambin es posible visualizar y confgurar informacin especfca de cada campo. En la fgura 5.5 se ob-
serva el detalle del campo idubicacion de la tabla dispositivos; en este caso es posible indicar la etiqueta de
identifcacin del campo (como en todos los campos) y al tratarse de un campo que forma parte de una clave
fornea tambin pueden indicarse formas de seleccin de los valores almacenados en las tablas referencia-
das por la clave fornea durante una operacin de alta o modifcacin. De acuerdo a la confguracin indicada
en la fgura 5.5 la etiqueta para el campo idubicacion de la tabla dispositivos ser ubicacin de dispositivos y
la seleccin de los valores almacenados en tablas referenciadas por claves forneas se realizar mediante
listas desplegables que por cada opcin disponible indicarn el sector y la ubicacin de la opcin en cuestin.

Figura 5.5 - Detalle de campo
Generacin de cdigo
Finalizada la confguracin de la presentacin y el funcionamiento de las tablas y campos solamente
restan indicar unos pocos parmetros antes de generar el cdigo fuente. Como puede observarse en la
fgura 5.6 los parmetros que deben indicarse son los siguientes:
Parmetros ODBC (ODBC, usuario, password): son parmetros similares a los de la primera pantalla
pero en este caso se especifcan aquellos que sern utilizados para conectarse a la base de datos
desde la aplicacin web generada.
Directorio destino: es el directorio en el que se ubicarn los archivos generados.
Archivos de cdigo fuente: es el directorio en el que se encuentran archivos auxiliares (estos archivos
se describen en el Apndice D).
Disposicin de marcos (frames): es la disposicin en pantalla de los marcos HTML presentados por el
cdigo generado. Es posible colocar el marco con el men general en el extremo superior de la pantalla
o en el extremo izquierdo de esta. En la fgura 5.7 se presenta el cuadro de dilogo desplegado por
esta opcin.
Tesinas Generacin de cdigo fuente en aplicaciones Web.
25

Figura 5.6 - Generacin de cdigo
Figura 5.7 - Disposicin de marcos
Posteriormente se generan los archivos con cdigo fuente mediante el botn generar archivos; Balmod
como mnimo genera cuatro archivos por cada tabla del modelo de datos seleccionada, un archivo admi-
nistra altas, otro administra modifcaciones, un tercero administra bajas y presenta listados y fnalmente
el cuarto contiene los marcos HTML incluyendo a los tres archivos anteriores; de acuerdo a parmetros
Tesinas Generacin de cdigo fuente en aplicaciones Web.
26
especfcos de cada tabla podran generarse ms archivos, como el caso en el que se opta por defnir
valores de claves forneas mediante un buscador. Tambin se generan archivos de uso global como el
archivo que contiene el men de opciones o el archivo que contiene informacin de conexin a la base
de datos. En la fgura 5.8 puede observarse la administracin de la tabla dispositivos durante la ejecucin
de la aplicacin generada en el navegador Mozilla Firefox utilizando Microsoft Internet Information Server
como servidor web.

Figura 5.8 - Ejemplo de ABM
5.2 Anlisis del cdigo generado con Balmod
En la reproduccin del ABM de administracin de inventario se generaron automticamente 138
archivos con cdigo fuente que en total tienen un tamao de 342 Kbytes (aproximadamente 350.000
caracteres) en 15 minutos; el desarrollo del proyecto original mediante programacin manual demand
aproximadamente 150 horas.
Existen factores que pueden incrementar el tiempo de desarrollo de un ABM con Balmod como por
ejemplo la defnicin de aspectos estticos diferentes a los utilizados por defecto pero las operaciones
ntegramente ligadas a la lgica funcional de la aplicacin decididamente son menos costosas y ms
rpidas de implementar utilizando Balmod en lugar de programarlas manualmente y este tipo de opera-
ciones son recurrentes en cualquier ABM.
La cantidad de archivos generados es directamente proporcional a la cantidad de entidades que se
administrarn mediante el ABM dado que se genera un directorio con al menos cuatro archivos por cada
entidad. El directorio lleva el nombre de la entidad correspondiente. Los archivos generados en cada uno
de estos directorios son:
alta_[nombre de la entidad].php: contiene el formulario para dar de alta registros de la entidad corres-
pondiente; este formulario se encuentra vinculado a las funciones de validacin de los campos y si los
datos ingresados son correctos realiza el registro de datos mediante el archivo listado_[nombre de la
entidad].php.
modifcacion_[nombre de la entidad].php: contiene el formulario para modifcar registros de la entidad
correspondiente; este formulario se encuentra vinculado a las funciones de validacin de los campos y
si los datos ingresados son correctos realiza la modifcacin de datos mediante el archivo listado_[nom-
bre de la entidad].php.
listado_[nombre de la entidad].php: presenta un listado con todos los registros correspondientes
Tesinas Generacin de cdigo fuente en aplicaciones Web.
27
cargados. En este archivo, adems, se incluye la funcionalidad para dar de alta registros o realizar
modifcaciones de acuerdo a la informacin recibida de los dos archivos mencionados anteriormente.
Tambin almacena las instrucciones necesarias para dar de baja registros.
index.html: este archivo es un frameset en lenguaje HTML que contiene los tres archivos mencionados
anteriormente.
Por cada ABM generado, adems, se producen una serie de directorios cuya cantidad no vara de
acuerdo a la cantidad de entidades utilizadas que contienen informacin general para toda la aplicacin.
Estos directorios son:
JS: contiene funciones en lenguaje javascript; principalmente son funciones de validacin.
CSS: contiene hojas de estilo para determinar el aspecto visual de la aplicacin.
IMG: contiene las imgenes utilizadas en la aplicacin.
includes: contiene libreras de uso comn en los diferentes componentes de la aplicacin como por
ejemplo las libreras con las que la aplicacin interacta con el motor de base de datos.
Finalmente, tambin son generados 3 archivos independientemente de la cantidad de entidades del
modelo de datos y generales para toda la aplicacin:
index.html: Contiene la pgina web inicial de la aplicacin.
Encabezado.html: Contiene el men general de la aplicacin.
Reporte.log: contiene informacin acerca de los archivos generados automticamente.
De acuerdo a la estructura de archivos generados el usuario puede realizar modifcaciones que afecten
a toda la aplicacin o solamente a una parte de esta. Si desea modifcar la administracin de una entidad
en particular deber modifcar los archivos almacenados en el directorio correspondiente a la entidad
en cuestin. Si desea realizar un cambio general puede hacerlo modifcando aquellos archivos que no
se encuentran dentro de un directorio propio de una entidad; es decir, aquellos archivos que contienen
informacin general para toda la aplicacin.
5.3 Resumen
En este captulo se present un ejemplo de uso de Balmod en el que se describen uno a uno los pasos
necesarios para generar un ABM automticamente.

Captulo 6 Trabajos futuros y conclusiones
En este captulo se mencionan posibilidades acerca de futuros trabajos a realizar tomando como punto
de partida la versin actual de Balmod y se presentan conclusiones fnales.
6.1 Trabajos futuros
Balmod fue cuidadosamente diseado para adaptarse fcilmente futuros cambios; su diseo se ajusta
al uso de patrones de diseo orientado a objetos. Esto se debe a que desde su concepcin se propuso
desarrollar una herramienta dinmica que tenga la capacidad de poder adaptarse con el paso del tiempo
a la mayor cantidad de necesidades que pudieran surgir de los diferentes usuarios.
La primera propuesta a trabajos futuros consiste en realizar un estudio estadstico en el que se con-
templen cuales son las funcionalidades comnmente requeridas a sistemas ABM que no sean satisfechas
por Balmod. Una vez clasifcadas esas necesidades se tiene un punto de partida para contemplar futuros
cambios en la herramienta.
Basndose en la propuesta anterior pueden surgir cambios que seguramente impactarn en alguno
de los dos principales mdulos de Balmod: el lector de metadatos y el generador de cdigo.
Actualmente lector de metadatos reconoce cinco formatos de campos (en el Apndice C se los
menciona y describe); un futuro cambio podra consistir en ampliar la cantidad de formatos de campos
reconocidos por Balmod.
Con respecto al generador cdigo surge una serie de numerosas posibilidades entre las que se des-
tacan:
Implementacin de generacin de cdigo en otros lenguajes de desarrollo de aplicaciones web: ac-
tualmente Balmod genera cdigo en lenguaje PHP pero soporta la generacin de cdigo fuente en
otros lenguajes similares como ASP y JSP.
Diseo e implementacin de generacin de cdigo en cualquier lenguaje de programacin: reutilizando
el lector de metadatos utilizado en Balmod existe la posibilidad de generar cdigo en cualquier lenguaje
de programacin.
Tesinas Generacin de cdigo fuente en aplicaciones Web.
28
Diseo e implementacin de mdulos generadores de consultas a la base de datos: Balmod genera
cdigo fuente para aplicaciones ABMs pero no genera cdigo que pueda utilizarse para realizar consul-
tas especfcas sobre el modelo de datos en cuestin; esta sera una funcionalidad de gran utilidad.
6.2 Conclusiones
De acuerdo a lo expuesto en los captulos anteriores, se concluye en que Balmod es una herramienta
que facilita considerablemente el desarrollo de aplicaciones web que utilizan bases de datos mediante
la reduccin de tiempo y esfuerzo de produccin, lo que se traduce en decremento de costos. No cuenta
con la totalidad de las posibilidades brindadas por otras herramientas de vanguardia similares (como por
ejemplo Genexus) pero una oferta de posibilidades ms reducida implica en este caso mayor facilidad de
uso. Al tratarse de una herramienta que defne y acota claramente cual es su fn para el usuario resulta
ser una herramienta de uso simple y rpido. El paso del tiempo y futuras evoluciones de Balmod determi-
narn si se sacrifca o no practicidad y facilidad de uso a favor de una mayor oferta de posibilidades que
contemplen situaciones o funciones ms especfcas u orientadas a mbitos diferentes a la generacin
de ABMs.

Apndice A Ejemplo de una aplicacin web
En una aplicacin web la mayor parte de la lgica de negocio se encuentra implementada en el ser-
vidor web; ste interacta con un motor de bases de datos para generar informacin y presentarla en el
cliente web.
Se tomar como ejemplo una aplicacin web que se encargue de insertar registros en una base de
datos. Las funciones que debe cumplir la aplicacin son:
Solicitar datos al usuario.
Validar los datos ingresados por el usuario.
Registrar en la base de datos los datos ingresados por el usuario.
Informar al usuario el resultado de la operacin.
Solicitud de datos al usuario
Para esta funcin se utiliza un archivo HTML; en este caso se lo denominar form.html y su contenido
es el siguiente:
<HTML>
<HEAD>
<TITLE> Alta de registros </TITLE>
</HEAD>
<BODY>
<FORM METHOD=POST ACTION=alta.php NAME=formulario>
<CENTER>Ingrese el nombre que desea registrar: <INPUT TYPE=text NAME=nombre><BR>
<INPUT TYPE=submit value=grabar></CENTER>
</FORM>
</BODY>
</HTML>
El aspecto visual del archivo es el siguiente:
Figura F.1 Aspecto visual de form.html
En la operacin de la aplicacin se le presenta al usuario el formulario para ingresar datos y al hacer
clic sobre el botn grabar se procede a registrar el nombre ingresado; la funcin de registro es realizada
por el cdigo contenido en el archivo alta.php tal como se indica en el parmetro ACTION de la etiqueta
FORM.
Tesinas Generacin de cdigo fuente en aplicaciones Web.
29
La apariencia de la pgina HTML puede especifcarse mediante un archivo CSS; en este caso se utiliza
estilos.css que contiene lo siguiente:
BODY
{
color: red;
}
El cdigo indica que todo el texto que se encuentre dentro de la etiqueta BODY debe ser de color rojo.
Con la siguiente instruccin dentro del cdigo HTML es posible incluir el archivo CSS dentro del ar-
chivo HTML:
<link href=estilos.css rel=stylesheet type=text/css>
Validacin de datos ingresados por el usuario
En la mayora de los casos es deseable validar la informacin ingresada por el usuario para asegurar
que esta cuenta con la forma adecuada. En este caso no se proceder al registro de la informacin si el
usuario no completa con ningn nombre el casillero correspondiente
Tericamente este tipo de funcionalidades debera ejecutarse en el servidor web pero en la prctica
por razones de performance es preferible que la ejecucin se realice en el cliente para disminuir el pro-
cesamiento en el servidor web; recordemos que un servidor web puede estar respondiendo a solicitudes
de mltiples usuarios simultneamente.
Para validar los datos ingresados se utilizar cdigo Javascript que en este caso se almacena en el
archivo validar.js que contiene lo siguiente:
function validar()
{
if (document.formulario.nombre.value==)
{
alert(Debe ingresar un nombre);
return false;
}
return true;
}
En el archivo form.html deben realizarse alguno ajustes para incluir la funcionalidad proporcionada por
el archivo javascript; su contenido pasa a ser el siguiente (se resalta el cdigo ingresado):
<HTML>
<HEAD>
<TITLE> Alta de registros </TITLE>
</HEAD>
<SCRIPT LANGUAGE=JavaScript src=validar.js></SCRIPT>
<BODY>
<FORM METHOD=POST ACTION=alta.php NAME=formulario onsubmit=return validar()>
<CENTER>Ingrese el nombre que desea registrar: <INPUT TYPE=text NAME=nombre><BR>
<INPUT TYPE=submit value=grabar></CENTER>
</FORM>
</BODY>
</HTML>
Si el usuario no completa el casillero adecuadamente la aplicacin no enva informacin al servidor
web y se advierte al usuario con la leyenda Debe ingresar un nombre.
Registro en la base de datos de la informacin ingresada
En el caso en el que el usuario complete correctamente el casillero con el nombre a registrar se proce-
der a la grabacin del nombre en la base de datos (en este caso un motor de bases de datos MySQL);
esta operacin es realizada por el cdigo fuente PHP almacenado en el archivo alta.php que debe ubicarse
en el servidor web y contiene lo siguiente:
<?php
var $conexion;
$conexion = mysql_connect(host,usuario,password);
mysql_query(insert into nombres values($_POST[nombre]), $ conexion);
mysql_close($conexion);
?>
Tesinas Generacin de cdigo fuente en aplicaciones Web.
30
Lo que hace el cdigo es conectarse a la base de datos; realizar la consulta SQL para registrar el
nombre y cerrar la conexin abierta anteriormente.
Informacin del resultado de la operacin
Finalmente, es deseable que se le informe al usuario del resultado de la operacin realizada; para ello
es necesario incluir cdigo HTML en el archivo que contiene cdigo PHP de la siguiente manera:
<?php
var $conexion;
$conexion = mysql_connect(host,usuario,password);
mysql_query(insert into nombres values($_POST[nombre]), $conexion) or die(<H1>Se produjo
un error.</H1>);
mysql_close($conexion);
?>
<HTML>
<BODY>
<H1>La operacin fnaliz exitosamente</H1>
</BODY>
<HTML>
El servidor web en ningn momento le enva al cliente cdigo fuente que no sea HTML; de esta manera
en el caso anterior el cliente puede recibir:
<HTML>
<BODY>
<H1>La operacin fnaliz exitosamente</H1>
</BODY>
<HTML>
O bien puede recibir:
<HTML>
<BODY>
<H1>Se produjo un error.</H1>
</BODY>
</HTML>

Apndice B Confguracin de Balmod
Previo a la ejecucin de la aplicacin es necesario confgurar una serie de parmetros, algunos son
de vital importancia para el correcto funcionamiento de Balmod.
La confguracin general se realiza mediante un archivo en formato XML llamado confguracin.xml; la
defnicin del documento XML se encuentra en el archivo confguracin.dtd. Ambos archivos se encuentran
almacenados en el directorio principal de la aplicacin.
A continuacin se describen cada uno de los parmetros contenidos en el archivo de confguracin:
Pathdestino: ubicacin por defecto en la que se crear el directorio con los archivos de cdigo fuente
generado (puede modifcarse durante la ejecucin del programa).
Proyecto: nombre del directorio en el que se ubicarn todos los archivos generados.
Fuentes: ubicacin de archivos que deben incluirse dentro de la aplicacin web generada (en el Apn-
dice D se describe la naturaleza de estos archivos).
MotoresBDD: ubicacin donde se encuentran los archivos con informacin de lectura de los metadatos
de las bases de datos (en el Apndice C se describen estos archivos)
DTDs: ubicacin donde se encuentran archivos con defnicin de tipos de datos para documentos XML
(DTD); en este directorio se encuentra el archivo InterfaceBDD.dtd (ver Apndice C).
ODBC: nombre por defecto del objeto ODBC (puede modifcarse durante la ejecucin del progra-
ma).
Usuario: nombre por defecto del usuario con permiso de acceso a la base de datos (puede modifcarse
durante la ejecucin del programa)
Password: contrasea por defecto utilizada para acceder a la base de datos con el usuario indicado
en el parmetro anterior (puede modifcarse durante la ejecucin del programa).
Tesinas Generacin de cdigo fuente en aplicaciones Web.
31
Ejemplo de la informacin que debe contener un archivo de confguracin de Balmod.
<?xml version=1.0?>
<!DOCTYPE confguracion SYSTEM confguracion.dtd>
<confguracion>
<pathdestino>C:\inetpub\wwwroot\</pathdestino>
<proyecto>generado</proyecto>
<fuentes>d:\archivos autoABM\Archivos fuente</fuentes>
<motoresBDD>D:\archivos autoABM\motores</motoresBDD>
<DTDs>D:\archivos autoABM\DTDs</DTDs>
<ODBC>sis</ODBC>
<usuario>sa</usuario>
<password>123456</password>
</confguracion>

Apndice C Conectividad de Balmod con motores de bases de datos
Tanto Balmod como el cdigo que genera efectan todas las conexiones a bases de datos median-
te componentes ODBC lo que garantiza que cualquier motor de bases de datos que cumpla con ese
estndar de acceso funcione sin inconvenientes. Las consultas SQL realizadas por el cdigo generado
por Balmod utilizan el estndar ANSI SQL lo que garantiza que sean interpretadas por cualquier motor
de bases de datos que respete ese estndar. Tanto el estndar ODBC como el estndar ANSI SQL son
implementados por todos los motores de bases de datos que dominan el mercado; por otra parte, la ma-
yora de los lenguajes de programacin (y en particular PHP, ASP y JSP) soportan conectividad mediante
componentes ODBC.
Para que Balmod interprete correctamente los diagramas de datos almacenados en cada base de
datos es necesario indicarle mediante un archivo escrito en lenguaje XML la manera de acceder a la infor-
macin que contiene la estructura de la base de datos a ser utilizada; tradicionalmente esta informacin
se encuentra en lo que se denomina catlogo de la base de datos. Por otra parte tambin es necesario
indicarle en el mismo archivo XML la identifcacin que utiliza el motor de base de datos en cuestin para
cada tipo de dato correspondiente a un campo de una tabla.
Para conocer la estructura de la base de datos son necesarias las siguientes consultas (el orden de
los datos devueltos por cada consulta debe respetarse):
Tablas: por cada tabla debe retornar un registro que indique nombre e identifcador de cada una de
las tablas de la base de datos.
Campos: dada una tabla (dentro de la consulta debe indicarse la tabla mediante la constante ##TA-
BLA##, al momento de procesarse la consulta la constante es reemplazada por el valor correspondiente)
por cada campo que contenga debe retornar un registro que indique nombre, identifcacin, longitud,
admisin de nulos y propiedad de autonumeracin del mismo.
claves_primarias: dada una tabla debe retornar por cada campo perteneciente a la clave primaria un
registro que contenga el identifcador correspondiente al campo en cuestin.
claves_forneas: dada una tabla debe retornar por cada campo perteneciente a una clave fornea
un registro indicando nombre del campo local, identifcador del campo local, identifcador de la tabla
fornea, identifcador de la columna fornea, nombre de la tabla fornea y nombre de la columna
fornea.
columnas_tabla_clave_foranea_foranea: dada una tabla retorna por cada campo forneo a cada una
de los campos forneos de la tabla dada un registro con el nombre del campo.
foraneas_inversas: dada una tabla por cada campo que se relaciona como campo forneo de la tabla
dada retorna un registro que contiene nombre del campo referenciado, identifcador del campo refe-
renciado, identifcador de la tabla referenciadora, identifcador de la columna referenciadora, nombre
de la tabla referenciadora y nombre de la columna referenciadora.
Balmod trabaja con seis tipos de datos diferentes; si en el modelo de datos se utilizara un tipo de datos
no contemplado por Balmod el mismo ser ignorado. Para indicar la identifcacin que utiliza el motor de
base de datos en cuestin para cada tipo de dato se utilizan las instrucciones:
entero: nmeros enteros
racional: nmeros racionales
Tesinas Generacin de cdigo fuente en aplicaciones Web.
32
cadenacaracteres: cadenas de caracteres de longitud fja.
Cadenacaracteresvariable: cadenas de caracteres de longitud variable.
Fecha: campos de fecha
Booleano: campos booleano (si/no, verdadero/falso, etc.).
No todos los motores de bases de datos permiten el acceso a su catlogo mediante consultas SQL;
un ejemplo son las versiones antiguas del motor de base de datos MySQL (la versin 5.0 de reciente lan-
zamiento si permite el acceso al catlogo mediante consultas SQL). No obstante con Balmod es posible
ingresar el modelo de datos creando tablas que simulen el catlogo para posteriormente cargarlas con
los datos deseados y posteriormente realizar las consultas SQL sobre esas tablas.
A continuacin se presenta un ejemplo con la informacin que debe contener un archivo de confgu-
racin para utilizar el motor de base de datos MS SQL Server.
<?xml version=1.0?>
<!DOCTYPE InterfaceBDD SYSTEM ../DTDs/interfaceBDD.dtd>
<InterfaceBDD motor=SQLServer>
<consultas>
<tablas>select name as tabla, id as id from sysobjects where xtype=u and
name!=dtproperties order by name</tablas>
<campos>select c.name,c.colid,t.xtype,c.length,c.isnullable,c.colstat from syscolumns c,
systypes t where t.xtype=c.xtype and c.id=##TABLA## order by colid</campos>
<claves_primarias>select ik.colid, ik.colid from sysobjects o join sysindexes i on i.id=o.
parent_obj and i.name=o.name join sysindexkeys ik on ik.id=o.parent_obj and ik.indid=i.indid where
o.xtype=PK and o.parent_obj=##TABLA##</claves_primarias>
<claves_foraneas>select c.name as columna, c.colid, o.id as idtablaforanea, cf.colid as
idcolumnaforanea, o.name as tablaforanea, cf.name as columnaforanea from sysforeignkeys f join sysco-
lumns c on c.id=f.fkeyid and f.fkey=c.colid join sysobjects o on o.id=f.rkeyid join syscolumns cf on cf.id=f.
rkeyid and f.rkey=cf.colid where f.fkeyid=##TABLA##</claves_foraneas>
<columnas_tabla_clave_foranea>select cf.name, cr.name, o.name from sysobjects
o,syscolumns cf, syscolumns cr, sysforeignkeys f where f.fkeyid=cf.id and f.fkey=cf.colid and f.fkeyid=cr.
id and f.fkey=cr.colid and o.id=f.rkeyid and fkeyid=##FORANEAS##</columnas_tabla_clave_foranea>
<foraneas_inversas>select c.name as columna, c.colid, o.id as idtablareferenciadora,
cf.colid as idcolumnareferenciadora, o.name as tablareferenciadora, cf.name as columnareferenciadora
from sysforeignkeys f join syscolumns c on c.id=f.rkeyid and f.rkey=c.colid join sysobjects o on o.id=f.fkeyid
join syscolumns cf on cf.id=f.fkeyid and f.fkey=cf.colid where f.rkeyid=##TABLA##</foraneas_inversas>
</consultas>
<tipos_campos>
<entero>56</entero>
<racional>62</racional>
<cadenacaracteres>167</cadenacaracteres>
<cadenacaracteresvariable>175</cadenacaracteresvariable>
<fecha>61</fecha>
<booleano>104</booleano>
</tipos_campos>
</InterfaceBDD>

Tesinas Generacin de cdigo fuente en aplicaciones Web.
33
Apndice D Componentes Auxiliares
El cdigo fuente producido por Balmod no es generado en su totalidad; existen componentes que son
necesarios y reutilizables prcticamente en cualquier proyecto; por ejemplo, las funciones de validacin en
lenguaje Javascript pueden reutilizarse sin sufrir alteraciones, la validacin de un nmero entero solamente
contemplar que el usuario ingrese mediante su teclado uno o varios dgitos y no cualquier otro carcter;
esa validacin no debera cambiar su funcionalidad en otros sistemas. A este tipo de componentes se los
denomina componentes auxiliares.
Los componentes auxiliares son archivos que contienen determinada informacin que en el momento
en el que Balmod genera el cdigo fuente son copiados dentro de directorios propios del proyecto en
construccin.
Existen tres tipos de componentes auxiliares:
Imgenes: son archivos que contienen imgenes grfcas
Hojas de estilo: archivos que contienen informacin de presentacin en formato CSS
Funciones Javascript: archivos que contienen funciones Javascript
Las imgenes deben incluirse dentro de un directorio denominado IMG, las hojas de estilo dentro de
uno denominado CSS y las funciones Javascript dentro de uno denominado JS. Los tres directorios deben
tener la misma ubicacin. Balmod implementa los tres tipos de componentes pero el usuario si lo desea
puede modifcar la informacin de stos para personalizar su aplicacin.

Glosario:
Aplicacin Stand Alone (auto soportada): Es una aplicacin que a excepcin de software base- no
depende de otras aplicaciones o componentes para funcionar.
Aplicacin web: Es aquella que los usuarios usan desde un servidor web a travs de internet o de una
Intranet. Las aplicaciones web son populares debido a la ubicuidad del navegador (browser) como un
cliente. La habilidad para actualizar y mantener aplicaciones web sin distribuir e instalar software en
miles de potenciales clientes es otra razn de su popularidad.
ASP (Active Server Pages): es un producto de Microsoft lanzado al mercado en 1996; funciona so-
lamente bajo plataformas Windows. Actualmente forma parte de la plataforma de desarrollo .NET
mediante su versin ASP.NET 2.0.
Base de Datos Relacional: es un modelo de base de datos en la que se especifcan relaciones entre
registros de diferentes tablas. Actualmente es el modelo ms utilizado para modelar problemas reales
y administrar datos dinmicamente; fue propuesto por Edgar Frank Codd en 1970.
C++: es un lenguaje de programacin diseado a mediados de los aos ochenta por Bjarne Stroustrup
como extensin del lengueje de programacin C.
Catlogo de base de datos: Es un repositorio de informacin en el que se especifcan metadatos de
una base de datos, es decir informacin especfca acerca de la naturaleza de los datos contenidos
en la base de datos.
Cdigo fuente: es un conjunto de lneas de caracteres que conforman un bloque de texto que genera
un programa mediante un compilador o intrprete para ser ejecutado por una computadora.
CSS (Cascade Style Sheet Hojas de Estilo en cascada): es un lenguaje formal usado para defnir
la presentacin de un documento estructurado escrito en HTML o XML (y por extensin en XHTML).
El W3C (World Wide Web Consortium) es el encargado de formular la especifcacin de las hojas de
estilo que servir de estndar para los agentes de usuario o navegadores.
GPL (General Public License): es una licencia orientada principalmente a los trminos de distribucin,
modifcacin y uso de software. Su propsito es declarar que el software cubierto por esta licencia es
software libre.
HTML (HyperText Markup Language Lenguaje de Marcas de HiperTexto): es un lenguaje diseado
para estructurar textos y presentarlos en forma de hipertexto, que es el formato estndar de las pginas
web. Gracias a Internet y a los navegadores como Explorer, Mozilla, Firefox o Netscape, el HTML se ha
convertido en uno de los formatos ms populares que existen para la construccin de documentos.
Javascript: es un lenguaje interpretado orientado a las pginas web, con una sintaxis semejante a la
del lenguaje Java. Fue creado por Brendan Eich en la empresa Netscape Communications. Se utiliza
en pginas web HTML para realizar tareas y operaciones en el marco de la aplicacin cliente.
JDBC (Java Database Connectivity): Es una herramienta mediante la cual es posible realizar opera-
Tesinas Generacin de cdigo fuente en aplicaciones Web.
34
ciones sobre una base de datos en el lenguaje de programacin Java.
JRE (Java Runtime Environment): es bsicamente la mquina virtual de Java sin las herramientas de
desarrollo mediante la cual es posible ejecutar aplicaciones Java.
JSP (Java Server Pages): es un lenguaje creado por Sun Microsystems a fnes de 1999 como adap-
tacin para simplifcar el uso de la tecnologa de Servlets creada en 1995; existe una equivalencia
entre un servlet y un script JSP pero los scripts JSP son mucho ms simples de desarrollar. Tal cual
establece la flosofa de la tecnologa Java el lenguaje es multiplataforma; actualmente JSP forma
parte de la plataforma de desarrollo J2EE (Java 2 Enterprise Edition) la cual se encuentra disponible
en versiones comerciales y en versiones de cdigo libre.
JVM (Java Virtual Machine): La mquina virtual de Java es un programa ejecutable en una plataforma
especfca capaz de interpretar y ejecutar instrucciones expresadas en cdigo generado por un com-
pilador del lenguaje Java.
Marco HTML (Frame): el uso de marcos es una tcnica propia del lenguaje HTML mediante la cual es
posible incluir dentro de una pgina HTML otras pginas HTML.
Parser: es un analizador sintctico. Un analizador sintctico es un programa que reconoce si una o
varias cadenas de caracteres forman parte de un determinado lenguaje.
PHP (Personal Home Page): fue creado en 1995 por Rasmus Lerdorf quien al corto plazo de haber
creado el lenguaje decidi liberar el cdigo fuente para que cualquiera pudiese utilizarlo, reparar errores
y mejorar el cdigo; de esta manera PHP se convierte en una herramienta de fuente abierta capaz de
operar en diferentes plataformas incluyendo Linux/Unx, Microsoft Windows, Novell NetWare, OS/2,
AS/400 y Solaris entre otros; actualmente se encuentra en desarrollo la versin 5.0 de esta herramien-
ta.
Servlet: aplicacin escrita en lenguaje Java que se ejecuta en un servidor dentro de una arquitectura
cliente-servidor.
Tercera Forma Normal: es una propiedad que puede o no cumplir un modelo de datos relacional. El
cumplimiento de esta forma normal garantiza un ptimo mantenimiento de datos, integridad de la
informacin y evita la redundancia de datos almacenados en una base de datos.
XML (eXtended Markup Language Lenguaje de Marcado Extensible): Es un lenguaje sintcticamente
similar a HTML aunque una de las principales funciones con las que nace sera sucederlo, separando
la estructura del contenido y permitiendo el desarrollo de vocabularios modulares, compatibles con
cierta unidad y simplicidad del lenguaje, tiene otras aplicaciones entre las que destaca su uso como
estndar para el intercambio de datos entre diversas aplicaciones o software con lenguajes privados
como en el caso del SOAP.

Bibliografa
[1] - Code Generation in Action Jack Herrington Manning Publications - 2003
[2] - The desgn Patterns - James W Cooper - Addison-Wesley 1998
[3] - Design Patterns: Elements of Reusable Object-Oriented Software Erich Gamma , Richard Helm,
Ralph Johnson, John Vlissides - Addison-Wesley Professional Computing Series - 1994
[4] - Documento comercial de Genexus Genexus: Visin General
[5] - www.genexus.com
[6] - www.backend-wizard.com
[7] - www.dofactory.com
[8] - www.php.net
[9] - java.sun.com
[10] - www.abiglime.com/webmaster/articles/asp/122297.htm
[11] - fenix.dcaa.unam.mx/servidores/docs/bd/ANSI%20SQL.pdf
[12] - www.wikipedia.org
[13] - www.webopedia.com
[14] - www.codegeneration.net

Tesinas Generacin de cdigo fuente en aplicaciones Web.
35
Tesinas Generacin de cdigo fuente en aplicaciones Web.
36

Das könnte Ihnen auch gefallen