Académique Documents
Professionnel Documents
Culture Documents
Direccin de Postgrado
Facultad de Ingeniera -Programa de Magster en Ciencias de la Computacin
INDICE
1. INTRODUCCION.........................................................................................................................................2
2. MOTIVACION...............................................................................................................................................5
3. ESTADO DEL ARTE...................................................................................................................................8
4. PROPUESTA...............................................................................................................................................11
ANTECEDENTES................................................................................................................................................11
METALENGUAJE DE ESPECIFICACIN...............................................................................................................18
RESUMEN PROPUESTA.....................................................................................................................................19
HIPTESIS.........................................................................................................................................................21
OBJETIVOS.........................................................................................................................................................21
5. ESPECIFICACIN DE REQUISITOS DEL PROTOTIPO...........................................................23
INTRODUCCIN.................................................................................................................................................23
REQUISITOS FUNCIONALES..............................................................................................................................23
REQUISITOS NO FUNCIONALES........................................................................................................................24
6. DISEO DEL PROTOTIPO...................................................................................................................25
INTRODUCCIN.................................................................................................................................................25
MECNICA DE TRABAJO...................................................................................................................................25
DESCRIPCIN DEL DISEO..............................................................................................................................26
ESQUEMA FUNCIONAL......................................................................................................................................27
7. PRUEBA Y RESULTADOS.....................................................................................................................29
ANTECEDENTES................................................................................................................................................29
DETALLE DE LAS PRUEBAS..............................................................................................................................30
COMPARATIVO DE TIEMPOS.............................................................................................................................32
DISTRIBUCIN DE TIEMPOS EN ETAPAS..........................................................................................................33
8. CONCLUSIONES.......................................................................................................................................35
ANTECEDENTES................................................................................................................................................35
RESULTADOS Y CONCLUSIONES.......................................................................................................................35
9. REFERENCIAS...........................................................................................................................................38
1. INTRODUCCION
Componentes
Programa1
Componentes
Ensamble
Programa2
Componentes
agrega
el
anexo
que
contiene
la
Especificacin
detallada
del
layouts
de
pantalla,
funcionalidad
funcionamiento.
detallada
ejemplos
de
2. MOTIVACION
se
hace
necesario
contar
con
ellos,
poder
adaptarlos,
Mantenedores Compuestos:
Aplicaciones de insercin, modificacin y borrado
de registros en tablas relacionadas, tipo padre-hijo,
con pantallas ms complejas, del tipo encabezado
detalle; grillas multi-registro y pantallas con mltiples
pestaas.
Consultas con filtro:
Reportes:
10
inici
un
programa
corporativo
de
re-uso.
No
existe
mayor
11
12
conjunto de modelos (assets) con nuevos elementos, los que pasarn a formar
parte del activo de la empresa y del generador. Esta lnea de trabajo es mas
completa y contiene elementos bsicos en la generacin de cdigo y
herramientas afines [Czarnecki1999].
13
4. PROPUESTA
Antecedentes
El propsito de este trabajo es mostrar e implementar la tcnica de generacin a
partir del supuesto que indica que dentro del desarrollo de Sistemas de
Informacin Administrativos, existe un porcentaje de aplicaciones (38%) que se
repiten entre un sistema y otro, aplicaciones que se pueden modelar para
generalizarlas, de manera que sirvan de materia prima para la construccin de
aplicaciones completas similares para otros sistemas, siguiendo el patrn
definido en el modelo.
A la vez, este hecho implica que las aplicaciones similares que se identifiquen se
podrn replicar o clonar con una herramienta de software preparada para ello,
de manera que estas aplicaciones no constituyan carga significativa para los
programadores, por cuanto su construccin se realizar a partir de generacin
automtica, permitiendo concentrar el esfuerzo de programacin en las
aplicaciones del negocio y aplicaciones particulares que no poseen modelos
posibles de generar.
La propuesta se traduce en dos grandes lneas de trabajo. Primero un anlisis de
programas dentro de sistemas de informacin administrativa y descubrimiento
de
tipos
de
programa
estndares
modelables.
En
segundo
lugar,
la
mejoras,
aportes
especficos,
etc.,
construido
sin
un
esfuerzo
14
secciones variables por la tupla de valores que se est trabajando en cada caso
particular.
El hecho de utilizar modelos a partir de programas estndares acelera
enormemente la velocidad del proceso de desarrollo [Quintero2007], dejando la
creatividad de los programadores a aquellas porciones de software en los que se
deben implementar funciones especficas no estandarizables, lo que llamaremos
aportes.
Para abordar la propuesta, se analizaron distintas tcnicas y metodologas,
relacionadas con la bsqueda de una mejora en la programacin, llegando al
desarrollo conducido por modelos (MDD) [Castagnet2007], esto es, un mayor
nivel de abstraccin y generacin automatizada de cdigo fuente, a partir de
modelos genricos que a travs de un proceso se transforman en cdigo en un
lenguaje especfico. Dentro de ste tipo de iniciativa, se observan dos grandes
lneas de trabajo, una propuesta por la OMG en 2003 denominada Model Driven
Architecture (MDA) [OMG2003] que propone una arquitectura de desarrollo
basada en modelos y Software Factories de Microsoft [Greenfield2003], que
propone lneas de fabricacin y reutilizacin de cdigo para construir nuevas
instancias de solucin.
De ambas iniciativas, se seleccion Software Factories como la alternativa base
para este trabajo, tanto por tener similitud con el diseo de solucin que se
propone como por dar mas nfasis a aspectos que se utilizan en este trabajo,
como lo son la generacin en mltiples lenguajes, el reuso de lo que el propio
desarrollador va produciendo y el ensamblado automatizado, todo lo que se
utiliza con un nivel de simplicidad muy superior, observado en los resultados.
Software Factories postula la creacin de una metodologa ordenada y
coherente, que combina las siguientes ideas a modo de innovaciones crticas
[Greenfield2003]:
1. Reuso Sistemtico: la metodologa se basa en la reutilizacin de partes y
piezas de software, para la construccin de nuevas aplicaciones.
15
16
Ciudades
Campos
17
Muestra ciudades
existentes
Evento
Nuevo
Modifica
Evento
Evento
Graba Ciudad
Actualiza Ciudad
Elimina
Borra ciudad de tabla
Modif:
18
Modif:
Observando este paso, vemos que el cdigo fuente puede ser reutilizado,
manteniendo la estructura que es idntica y conservando la mayora del cdigo,
generalizando solamente aquello que difiere entre una tabla y otra, a saber, los
nombres de los campos y los campos clave y no clave.
Modificando adems la estructura, de manera de obtener una generalizacin de
sta, tenemos el siguiente diagrama que muestra ahora el mismo programa
mantenedor pero que permite ser el punto de partida para un programa
mantenedor que acte sobre otra tabla, tenga sta ms menos campos.
19
Muestra registros
existentes
Evento
Nuevo
Modifica
Evento
Evento
Graba registro
Actualiza registro
Elimina
Borra registro de tabla
otros insumos,
obtiene un programa fuente como salida del proceso, programa que es copia del
original, excepto en los aspectos que interesa diferenciar.
Dentro de los insumos particulares para una nueva instancia de programa, se
encuentran los que denominaremos aportes, los que se podrn incorporar en
puntos estratgicos de la aplicacin y que por tanto deben venir sealados en el
modelo parametrizado, de forma que el generador aplique estos aportes en el
20
momento y lugar adecuado, que permita enriquecer una instancia de modelo sin
alternar la estructura, incluyendo la funcionalidad requerida.
El programa generador debe ser capaz de tomar este modelo genrico e
interpretar cierta sintaxis que le permita incorporar nombre(s) de campo(s), de
tabla(s) y otros elementos, que permitan generar a partir del modelo pero para
la instancia respectiva, un programa diferente en forma pero no en estructura,
pues conserva la que tiene el modelo.
Esquemticamente:
Figura 4: Diagrama General de la Propuesta
Necesida
d
Aportes
Elegir Tipo
de
Programa
(modelo)
Generado
r
Programa
Generalizado
Objetos
Funciones
Program
a
Final
(clon)
un
input
de
aportes,
que
como
se
seala
anteriormente,
21
Metalenguaje de Especificacin
A fin de interpretar adecuadamente los modelos parametrizados asset que
son la materia prima del generador, fue necesario crear un metalenguaje de
especificacin, que permitiera incorporar mensajes para el generador dentro del
modelo, de forma que lograra convertir ste en un programa fuente de salida,
clon del original, con el mbito de datos que le corresponde de acuerdo a lo que
se requiere de l y que se especifica en la necesidad (ver figura 4). Se
construy este metalenguaje ya que no se encontr uno que permitiera realizar
la funcionalidad que se describe a continuacin.
En trminos generales, la tcnica propuesta reemplaza variables del modelo por
su valor de acuerdo al contexto. En ocasiones es necesario recorrer los campos
de la tabla sobre la que se est generando especficamente una aplicacin;
tambin es necesario poder incorporar una porcin de cdigo fuente u otra, a
partir de la evaluacin de una condicin que se hace verdadera o falsa; en otras
ocasiones; tambin se requiere identificar los puntos permitidos para aportes de
cdigo; por ltimo, en algunas ocasiones, se observa la necesidad de disponer
de herramientas muy particulares, que permiten generar parte de la sintaxis del
lenguaje generado.
Las sentencias de este metalenguaje se incorpora al programa ya probado, el
que
se
generalizar
convirtindose
en
un
modelo.
Las
sentencias
de
22
Resumen Propuesta
La informacin recogida de las empresas que ha apoyado este trabajo, indica
que a lo menos un 38% de las aplicaciones de un sistema de informacin
administrativo (SIA) son candidatas a ser generadas a partir de un modelo
clonable [CMPC2009].
En la Tabla 1 se muestran los tipos de aplicaciones de un SIA, separadas en los
mdulos tpicamente presentes. La columna C1 indica el % de ocurrencia de
cada tipo. La columna C2 indica la presencia, siendo los nmero 1 los mas
presentes y por tanto los mas repetibles y los nmero 4 los muy poco presentes
poco repetibles. El 38% se obtuvo considerando solo los tipos de programa 1 y
2, los que al ser parametrizables constituyen un asset que ser convertidos en
un programa nuevo, clon de este asset, til para todos los fines, probado, con
el sello e imagen corporativa y que podr actuar sobre otro mbito de datos o de
aspectos variables respecto al asset original.
1. Mantenedores:
a. Mantenedores Simples
b. Mantenedores Padre-Hijo y
c. Mantenedores Tabulares.
C1
C2
2%
2
5%
3%
C1
C2
10%
2. Maestros:
a. Maestros
b. Maestros
c. Maestros
d. Maestros
simples,
6%
Padre-Hijo,
4%
3
Tabulares
4%
2
de Tabla Principal, con lengetas
1%
15%
23
C1
5. Consultas:
a. Consultores Simples
b. Consultores Padre-Hijo
c. Consultores Tabulares.
1%
1
2%
2%
C2
4
2
5%
Tabla 1: Presencia de tipos de programas en los S.I.A.
Con esta informacin, se valida la necesidad de crear una aplicacin que permita
obtener este 38% de programacin con un esfuerzo menor incluso nulo, pues
en este porcentaje de sistema, el programador no aporta mayor valor, sino ms
bien constituye una carga de trabajo rutinaria pero presente en la mayora de los
sistemas de informacin.
El equipo de desarrollo, seguir el siguiente procedimiento para obtener un set
de modelos parametrizados, de forma de contar con ellos para la construccin
de los siguientes sistemas. En la medida que un nuevo sistema tenga un
programa que se constituya en candidato para ser modelo, por su generalidad,
entonces se enriquecer el set de programas asset, poblando an ms de
materia prima el generador:
1. Construir un programa de acuerdo a requerimientos
2. De los programas ya construidos y probados, funcionando, identificar
aquellos que estn en las categoras de presencia 1 y 2 de acuerdo a la
tabla 1 (los que tienen nmero 3 4 no son habitualmente programas de
gran frecuencia entre distintos sistemas [Arauco2009]).
3.
24
Hiptesis
A partir de la base (por demostrar) que indica que en muchos sistemas de
informacin existe cdigo fuente similar ( incluso idntico) entre distintos
programas, repetitivos en cada sistema, entonces se postula la hiptesis es
posible describir e implementar una tcnica que permita generar el
cdigo fuente de programas en forma automtica a partir de modelos
provenientes
de
programas
anteriormente
confeccionados
generalizados.
Como consecuencia de esta hiptesis, ser posible confeccionar cdigo fuente a
partir de modelos pre-escritos en un tiempo notoriamente inferior al que
actualmente se emplea en la confeccin del mismo cdigo sin el apoyo de
25
Objetivos
Los objetivos de este trabajo son:
1. Descripcin de un metalenguaje que permita generalizar los programas tipo
que sern luego los modelos para generar programas de esa familia.
2. Construir un prototipo de generador, que a partir de los modelos y
especificaciones genere un programa fuente.
3. Probar y comparar prototipo con un caso real de empresa de desarrollo.
La construccin de un prototipo apoyar la tesis respecto a que es posible
confeccionar cdigo fuente clonando programas ya hechos y que han sido
generalizados para que sirvan de modelo a otros programas de similar
estructura. La funcionalidad de una aplicacin de esta naturaleza puede exceder
todo tipo de especificacin, por lo que se construir una aplicacin que pruebe la
hiptesis, ms que pensar en la obtencin de un software completo con todas
las etapas de generacin y que est en condiciones de entrar en explotacin en
una empresa productiva.
Si bien se mostrarn aplicaciones construidas por el generador, no es cobertura
de este trabajo otorgar funcionalidad completa al prototipo, por lo que
constituir un trabajo por realizar la confeccin de dicho generador, que utilice la
misma tcnica aqu descrita y que permita generar aplicaciones, aportando
funcionalidad de apoyo a los programadores, como diseadores de pantallas,
reportes, herramientas de gestin de B. de Datos, etc.
26
Introduccin
El prototipo es una aplicacin que genera programas a partir de modelos
parametrizados. Se establece que estos programas sern generados dentro del
contexto de un Sistema, de manera que es necesario inscribir primeramente un
Sistema, dentro del que se registrarn Aplicaciones, que se obtendrn como
clones de programas generalizados denominados Modelos. La complejidad
mayor de esta aplicacin radica en que la entrada es un archivo con un cdigo
fuente generalizado (modelo) ms variables ambientales (Sistema, Aportes,
Objetos) y la salida del mismo es otro archivo con cdigo fuente particular para
las variables ambientales especificadas, o sea, una instancia ejecutable del
modelo de entrada.
El prototipo operar sobre 3 tablas maestras, ms elementos que sern tomados
desde archivos externos, a saber, los aportes y los objetos y funciones (ver
figura 4 en cap. 4).
Las tablas son Sistemas, Modelos y Aplicaciones. El detalle de este modelo se
encuentra en el anexo 2, an cuando para efectos didcticos se indica que la
tabla SISTEMAS posee registros de los sistemas con los que se trabaja,
otorgando variables ambientales elementales, tales como Nombre, Servidor,
Directorio de Programas, entre otros. De igual forma, la tabla MODELOS poseer
un registro con los programas generalizados o modelos, con referencia al (a los)
respectivo(s) archivo(s) que contienen los modelos en s mismos. Finalmente, la
tabla APLICACIONES contiene un registro de las aplicaciones, pertenecientes a
un sistema y que utilizan un modelo para ser generadas.
Requisitos Funcionales
El prototipo debe proveer 3 programas Mantenedores, uno para cada una de
estas 3 tablas, de manera que sea posible inscribir, modificar y eliminar
sistemas, modelos y aplicaciones. Las particularidades se encuentran en el
27
Requisitos no Funcionales
Se consideran los siguientes requisitos no funcionales:
28
29
Introduccin
A fin de cumplir con los objetivos indicados al final del captulo 4, se realiz un
catastro en 2 empresas productivas: Celulosa Arauco y Constitucin S.A.
[Arauco2009]
Forestal
Mininco
S.A.
[CMPC2009],
las
que
efectan
Mecnica de Trabajo
Un programa clonable, esto es, uno de los que est dentro del 38% de mayor
ocurrencia en los SIAs estudiados (ver tabla 1, cap. 4), posee la cualidad de ser
repetible para otro conjunto de datos y/o de variables ambientales. Si se
independiza de los datos originales y de las variables ambientales originales,
entonces el cdigo fuente y la estructura del mismo puede re-utilizarse en otro
sistema, para otro conjunto de datos y variables, obteniendo un clon que se
comporta de idntica forma al original, pero en su nuevo ambiente.
Este principio hace que, identificados los programas dentro de este tipo, stos
pasen por un proceso de parametrizacin, de manera que se conviertan en el
input del generador, denominados assets.
Por tanto, el generador, debe ser un programa que acepte como entrada este
cdigo fuente generalizado, ms el conjunto de datos y las variables
ambientales, procediendo luego a ejecutar la generacin (ver figura 4, captulo
4).
30
El primer desafo fue confirmar que un archivo con cdigo fuente ejecutable
poda ser input de otro programa (el generador) y luego ser output de este
programa, de manera que este output siguiera siendo un cdigo fuente
ejecutable. Se realizaron las pruebas y se confirm el hecho, con lo que se
elabor la siguiente arquitectura de solucin:
Programa
Fuente input
(ejecutable)
Generado
r
v1
Programa
Fuente output
(ejecutable)
Pasada esta primera y gran prueba, se confirm que era posible automatizar el
proceso que hasta ahora era manual e incompleto, por cuanto se realizaba de
manera muy artesanal, no sistemtica y solo por iniciativa de algunos
programadores.
31
Esquema Funcional
32
Programa
Generalizado
(MODELO)
Aportes
Generado
r
Variables
Ambientales
(SISTEMA)
Objetos
Funciones
Program
a
Final
(clon)
Figura 6: Diseo de Solucin
33
7. PRUEBA y RESULTADOS
Antecedentes
En el captulo 4, se identifican los tipos de programas que son candidatos a ser
tratados como plantillas para generar nuevos programas similares. Estos son:
Mantenedores Simples
Mantenedores Compuestos
Reportes
Mdulos de Parmetros
Aplicaciones Transaccionales
Carga de Registros
5%
10%
3. Diseo de Detalle
4. Programacin
20%
45%
5. Prueba de unidad
5%
6. Prueba de Integracin
5%
7. Implementacin
5%
8. Imagen Corporativa
5%
El porcentaje representa el esfuerzo (en relacin a las HH) que se hace en cada
etapa de programa, utilizando desarrollo tradicional.
34
Abastecimiento
Personas.
Los
resultados
que
se
incluyen
continuacin son los promedios de tiempo obtenidos, los que muestran una
desviacin mnima entre un sistema y otro, por lo que se considerarn
promedios de los 3 sistemas. Como ya
35
entre ambos, se tabul solo una de ellas, en este caso, PHP con motor de datos
Microsoft SQLServer 2008.
Las etapas de la prueba, tanto para el caso en que no se utiliza generador
(tradicional) como en el caso en que se utiliza esta herramienta fueron:
1. Anlisis de Requisitos
Idntica en ambos casos
2. Diseo General
Idntica en ambos casos
3. Diseo de Detalle
Cuando la aplicacin es de uno de los tipos de aplicaciones comunes a
otros sistemas (modelo parametrizado), este tiempo se disminuye
considerablemente con generador, pues no se realiza mayor diseo, pues
la estructura de la aplicacin ya est lista.
4. Programacin
Si la aplicacin es de uno de los tipos de aplicaciones comunes a otros
sistemas, este tiempo se limita solo a los aportes particularidades de
esta aplicacin respecto al estndar que se tiene (asset), lo que es
significativamente menor en el caso del generador.
5. Prueba de unidad
Si la aplicacin es de uno de los tipos de aplicaciones comunes a otros
sistemas, este tiempo se limita a la prueba de los aportes, pues el resto
ya est probado.
6. Prueba de Integracin
Idntica en ambos casos
7. Implementacin
Idntica en ambos casos
8. Imagen Corporativa
36
Para las pruebas se hizo el anlisis de requisitos, se crearon las bases de datos
respectivas y luego se construyeron las aplicaciones, en forma tradicional y con
el generador. Para la opcin generador, se confeccion previamente la
programacin de aportes especiales que permitieran cubrir los requerimientos,
ms all de la funcionalidad estndar que ofrecen las plantillas.
Es importante destacar que una vez construidas las bases de datos, generar
cdigo en forma automtica es trivial y las pruebas mostraron que era muy
eficaz generar con el modelo estndar para luego incorporar los aportes en los
puntos donde fuere necesario, de manera de conseguir la funcionalidad que se
indica en los requisitos, la que en la mayora de los casos consisti en
restricciones y/o validaciones adicionales a los datos.
Comparativo de Tiempos
Los tiempos empleados (en horas) para el desarrollo tradicional y el que usa
generador fueron:
Mantenedor
Simple
Nmero de Campos
Consulta
con Filtro
Reporte
Aplicacin
Transaccional
20
20
20
20
5%
1,0
1,2
0,8
1,0
1,0
1,2
0,8
1,0
2. Diseo General
10%
2,0
2,4
1,6
2,0
2,0
2,4
1,6
2,0
3. Diseo de Detalle
20%
4,0
4,8
3,2
4,0
4,0
4,8
3,2
4,0
4. Programacin
45%
9,0
10,8
7,2
9,0
9,0
10,8
7,2
9,0
5. Prueba de Unidad
5%
1,0
1,2
0,8
1,0
1,0
1,2
0,8
1,0
6 .Prueba de Integracin
5%
1,0
1,2
0,8
1,0
1,0
1,2
0,8
1,0
7. Implementacin
5%
1,0
1,2
0,8
1,0
1,0
1,2
0,8
1,0
8. Imagen Corporativa
5%
1,0
1,2
0,8
1,0
1,0
1,2
0,8
1,0
20
24
16
20
20
24
16
20
1. Anlisis de Requisitos
Mantenedor
Simple
Nmero de Campos
Consulta
con Filtro
Reporte
Aplicacin
Transaccional
20
20
20
20
1. Anlisis de Requisitos
14%
1,0
1,2
0,8
1,0
1,0
1,2
0,8
1,0
2. Diseo General
29%
2,0
2,4
1,6
2,0
2,0
2,4
1,6
2,0
3. Diseo de Detalle
14%
1,0
1,2
1,0
1,2
1,0
1,2
1,6
2,0
37
4. Programacin
13%
0,9
1,1
0,7
0,9
1,8
2,2
7,2
9,0
1%
0,1
0,1
0,2
0,2
0,1
0,1
0,4
0,5
6 .Prueba de Integracin
14%
1,0
1,2
0,8
1,0
1,0
1,2
0,8
1,0
7. Implementacin
14%
1,0
1,2
0,8
1,0
1,0
1,2
0,8
1,0
0%
0,0
0,0
0,0
0,0
0,0
0,0
0,0
0,0
13
17
5. Prueba de Unidad
8. Imagen Corporativa
38
Podemos observar que las horas hombre se concentran ahora en un buen diseo
de la aplicacin, para luego aprovechar las plantillas existentes, utilizando
tiempo solo en los aportes y mejoras puntuales y concentrarse en las pruebas y
entrega, pues las aplicaciones construidas con esta tcnica replican su forma, su
funcionalidad e imagen, no generando errores por cuanto la materia prima
(assets) no los contiene y la tcnica asegura un clon idntico al modelo.
Considerando tres sistemas de ejemplo facilitados para estos fines por Forestal
Mininco, con 12.960 HH en total, que tienen la distribucin de HH y %
anteriormente indicadas, es posible afirmar que se podra haber ahorrado un
52% sobre el 38% de las aplicaciones, esto corresponde a 2.560 HH.
Valorizando la HH en UF 0,3 esto es aprox. US$15, podemos afirmar que este
ahorro habra hecho
39
8. CONCLUSIONES
Antecedentes
La hiptesis planteada para este trabajo indica que es posible describir e
implementar una tcnica que permita generar el cdigo fuente de programas en
forma automtica a partir de modelos provenientes de programas anteriormente
confeccionados y generalizados. Esta hiptesis considera la tesis que indica que
en muchos sistemas de informacin administrativos existe cdigo fuente similar
( incluso idntico) entre distintos programas, repetitivos en cada sistema. A la
vez, para demostrar esta hiptesis, se consideraron los siguientes objetivos:
1. Descripcin de un metalenguaje que permita generalizar los programas tipo
que sern luego los modelos para generar programas de esa familia.
40
Resultados y Conclusiones
La bsqueda de programas repetitivos entre sistemas se consigui cabalmente,
logrando un ndice de 38% de los programas presentes en sistemas de
informacin administrativos (SIAs). Esto muestra que existe un importante
nmero de programas que se repiten entre SIAs diferentes. De la muestra
(12.960 HH en 3 SIAs), este porcentaje corresponde a:
Mantenedores Simples
Mantenedores Compuestos
Reportes
Mdulos de Parmetros
Aplicaciones Transaccionales
Carga de Registros
41
generador
la
interpretacin
de
este
metalenguaje,
obteniendo
una
42
43
9. REFERENCIAS
[Alonso2007]
[Arauco2009]
Entrevistas ARAUCO
Equipo de Desarrollo ARAUCO Aserraderos, 2009
[Basulto2001]
[Borland2004]
Entrevistas CMPC
Equipo de Desarrollo CMPC Forestal Mininco, 2009-2010
[Falcn2007]
[Gally2007]
44
[Gonda2007]
45
[Joss1994]
[Musat2009]
[OMG2003]
[Standish1994]
46
<linea input>
::=
<lenguaje final>::=
compilador respectivo.
<variable> ::=
<palabra clave>
tabla3 | server |
<especiales>
<sentencia>
<iteracin> ::=
<condicional>
<aportes> ::=
<parrafo> ::=
<palabra clave>
::=
sistema | appnombre | apptitulo | tabla1 | tabla2 |
dbname | usuario | clave | campo1 | <especiales>
::=
allcampo1 | coma | i | i-1 | nlf
::=
<iteracin> | <condicional> | <aportes>
para - tabla 1 | 2 | 3
<linea input> <linea input>
para-fin
::=
si -es_clave 1 | 2 | 3
<linea input> <linea input>
[ si-no]
[ <linea input> <linea input> ]
si-fin
include <parrafo>
X1 | X2 | ZZ para todo ZZ en modelo parametrizado
47
48
Palabras Clave
Aclaracin del significado y valores que toman las palabras clave.
Palabra
Clave
Observacin
sistema
Descripcin de la Aplicacin
tabla1
Tabla1
tabla2
Tabla2
tabla3
Tabla3
server
dbname
usuario
usuario
clave
password
campo1
Campo de la Tabla1
Tabla 1-1: Palabras Clave
Variables Especiales
Aclaracin del significado y valores que toman las variables especiales.
Especiales Observacin
Lista separada por coma de todos los campos de la
allcampo1
tabla 1
Coma dentro de un ciclo PARA, excepto para el
coma
ltimo elemento
i
i-1
nlf
49
50
Sentencia
Observacin
Condicin ELSE
si-fin
include XX
Sentencia de Parmetros
Se utiliza en tiempo de registro de la aplicacin, antes de la generacin. Es un
aviso para el mantenedor de aplicaciones, indicndole que debe solicitar al
usuario el nombre de una tabla para esta aplicacin. Ofrece el set de tablas
disponibles en la base de datos del sistema asociado. En tiempo de generacin
esta secuencia es obviada.
parametros
tabla1
parametros-fin
Este ejemplo muestra que este modelo requiere una tabla, la que ser usada
luego para la generacin del cdigo utilizando los campos y atributos de esa
tabla.
51
Sentencia de Iteracin
Corresponde al comando de iteracin para-tabla1, el que se interpreta como
recorrido de todos los campos de la tabla1. Finaliza con para-fin. Similar
comportamiento tiene para-tabla2 con los campos de la tabla2. dem para la
tabla3.
Se usa el smbolo (ASCII 230) por ser un smbolo no utilizado en lenguaje
alguno. Se coloca en la primera columna de una lnea en el modelo
parametrizado.
Constituye un comando que el generador deber interpretar como un ciclo FOR
sobre todos los campos de la tabla1 (2 3).
Ejemplo 1:
para-tabla1
Msgbox (campo1: + campo1)
para-fin
(codigo: + codigo)
(descripcion: + descripcion)
(provincia: + provincia)
(alcalde: + alcalde)
(habitantes: + habitantes)
Ejemplo 2:
para-tabla1
<td><H5>campo1</td></H5>
para-fin
52
Sentencia de Condicin
Dentro de un ciclo para, es necesario generar cierto cdigo si el campo en
cuestin cumple una condicin no, por ejemplo, si el campo es clave no.
Ejemplo 1:
para-tabla1
si-es_clave1
si-fin
para-fin
Ejemplo 2:
para-tabla1
si-es_clave1
si-no
Msgbox (campo1)
si-fin
para-fin
generar:
Msgbox
Msgbox
Msgbox
Msgbox
(descripcion)
(provincia)
(alcalde)
(habitantes)
Sentencia de Aportes
Permite indicarle al generador que el programador realizar un aporte en cdigo
fuente directo. Dentro del modelo parametrizado, existirn puntos dentro del
cdigo donde se indicar:
Linea1
include X1
Linea n
53
Otro Ejemplo:
<form name="formulario1" action="<?=$_script; ?>" method="post">
<table width="335" align="center">
para-tabla1
<tr><td>campo1:</td>
<td><input type="text" name="campo1" maxlength="20" /></td></tr>
para-fin
<tr><td ><input type="submit" value="Grabar" name="ac" /> </td>
<td><input type="reset" value="limpiar"/></td>
</table>
include X3
</form>
entonces el generador producir el cdigo fuente anterior y le intercalar el prrafo X3, as:
<form name="formulario1" action="<?=$_script; ?>" method="post">
<table width="335" align="center">
<tr><td>nombre:</td>
<td><input type="text" name="nombre" maxlength="20" /></td></tr>
<tr><td>apellido:</td>
<td><input type="text" name="apellido" maxlength="20" /></td></tr>
<tr><td>edad:</td>
<td><input type="text" name="edad" maxlength="20" /></td></tr>
<tr><td ><input type="submit" value="Grabar" name="ac" /> </td>
<td><input type="reset" value="limpiar"/></td>
</table>
<td><input type="text" value="Prueba de Insercin"/></td>
<td><input type="text" value="Mas Pruebas"/></td>
</form>
54
Modelo de Datos
Una aplicacin se genera a partir de un modelo y aportes. Esta aplicacin
considera variables ambientales tomadas del sistema en el que se encuentra
definida. Un sistema puede contener n aplicaciones. Una aplicacin se
confecciona a partir de un solo modelo, pero un modelo puede ser la base de
generacin para muchas aplicaciones. Los aportes se tomarn de un archivo
externo, de acuerdo a lo indicado en anexo 1, seccin de aportes, por lo que
no se requiere una estructura de datos para estos fines. Tanto los sistemas,
como los modelos y las aplicaciones se registrarn en tablas que se describen a
continuacin.
Sistemas
1
Aportes
Aplicaciones
Modelos
Tabla:
SISTEMAS
Uso: Registro de los Sistemas dentro de los que se generarn aplicaciones.
Proporciona variables ambientales necesarias para el generador, pues se
incluyen estas en la mayora de las aplicaciones.
Campos:
Nombre
Descripcion
DBServer
DBNom
User
Pass
Direct
sistema
Texto
Memo
Texto
55
Tabla:
MODELOS
Uso: Registro de los Modelos que constituyen los asset materia prima para el
proceso. Contienen referencias a los archivos plantilla que constituyen
los modelos parametrizados con los que se construyen las aplicaciones
clones.
Campos:
Nombre
Descripcion
Plantilla1
Plantilla2
Plantilla3
Texto
Memo
Texto
Texto
Texto
Tabla:
APLICACIONES
Uso: Registro de las Aplicaciones que se generarn. Se inscriben asociadas a
un sistema. Referencian al modelo a partir del que se generar la
aplicacin. Se almacena tambin ac los parmetros necesarios para la
generacin.
Campos:
Sistema
Texto
Sistema al que pertenece esta aplicacin
Nombre
Texto
Nombre de la Aplicacin
Modelo
Texto
Modelo que usar esta aplicacin
Descripcion Memo
Texto Libre
Datos1
Texto
Parmetros requeridos por la plantilla 1
Datos2
Texto
Parmetros requeridos por la plantilla 2
Datos3
Texto
Parmetros requeridos por la plantilla 3
Requerimientos Funcionales
La aplicacin se inicia con un men de opciones generales:
56
Opcin Sistemas
Corresponde a un mantenedor que opera sobre la tabla del mismo nombre. Al
ingresar a la pantalla, se muestra una grilla con todos los sistemas que ya
existan en la tabla. Para efectos ilustrativos, el sistema que ya contenga
aplicaciones inscritas se mostrar en color verde.
57
Para modificar los datos de un sistema existente, presionar doble clic sobre en
NOMBRE del sistema. Se abrir la misma pantalla que en el caso de uno nuevo,
pero donde ya se muestran los datos del sistema, permitiendo modificar stos,
con excepcin del nombre del sistema.
Opcin Modelos
Corresponde a un mantenedor que opera sobre la tabla del mismo nombre. Al
ingresar a la pantalla, se muestra una grilla con todos los modelos que ya
existan en la tabla. Para efectos ilustrativos, el modelo que est en uso por
alguna aplicacin se mostrar en color verde.
58
59
Para modificar los datos de una aplicacin existente, presionar doble clic sobre
en NOMBRE de la aplicacin y abre la misma pantalla que en el caso de una
nueva, pero donde ya se muestran los datos de la aplicacin, permitiendo
modificar stos, con excepcin del nombre de la aplicacin.
Tanto la pantalla para Aplicacin Nueva como la de Modificacin, que son muy
similares, tienen el campo Modelo como una combo-box, apuntado a la tabla
de Modelos. Seleccionado ste, el programa leer de la tabla Modelos la las
correspondiente(s) plantilla(s) que usa ese modelo. El programa abrir el(los)
archivo(s) asociado(s) a la(s) plantilla(s), verificando si sta(s) necesita(n)
parmetros especiales.
En el archivo de una plantilla, los parmetros vienen al principio, antecedidos
por una sentencia con un mensaje para el generador: parametros. Luego de
esta sentencia, vienen los parmetros requeridos por la plantilla. Para terminar
los parmetros, en la plantilla se agreg la sentencia parametros-fin, que
indica el fin de los requerimientos de parmetros especiales.
Ejemplo:
parametros
tabla1
parametros-fin
60
Generacin
Esta etapa es la principal del proceso. El programa a generar se ha inscrito
dentro de un sistema y se ha asociado a un modelo. La generacin consiste en la
clonacin de este modelo, utilizando los datos del sistema (base de datos,
directorio, etc.) y usando los parmetros del modelo (tabla1 por ejemplo) mas el
cuerpo mismo del modelo, el que es en si el programa de entrada, que posee
algunas sentencias que el generador interpreta y termina produciendo el texto
del programa final, copia de la entrada pero de acuerdo a los parmetros que se
especificaron.
Tomaremos como ejemplo un sistema denominado PERSONA.
61
El generador, para todos los efectos de generar una aplicacin dentro de este
sistema, tomar las tablas del sistema en un servidor local con la base de datos
PERSONA.
Los
programas
generados
los
dejar
en
el
directorio
\Mis
En este caso, para generar el Programa1, se utilizar el modelo Man Sim PHP
v3, que corresponde a un Mantenedor Simple en PHP, sobre la tabla datos de
la base PERSONA.
62
63