Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GENARO:
Diseo y construccin de una plataforma para
implementar una Lnea de Productos de Software
PRESENTA
EL ING. RUBN MURGA TAPIA
DIRECTORES DE TESIS:
DR. ROLANDO MENCHACA MNDEZ
DR. LUIS EDUARDO LEYVA DEL FOYO
MXICO, D.F.
DICIEMBRE 2013
RESUMEN
La lnea de productos de software (LPS) es un paradigma de ingeniera de software que
integra reas como la ingeniera de requerimientos, la ingeniera de dominio y la
ingeniera de aplicacin para intentar resolver el problema de la construccin masiva y
eficiente de software. Su propsito es emular las lneas de produccin industriales que
son capaces de generar, de manera eficiente, grandes volmenes de productos de alta
calidad.
Dicho paradigma se basa en el principio de familia de producto en el cul se hace
nfasis en el reso de componentes de software para resolver problemas similares, as
como en el concepto de la programacin generativa, que es un estilo de programacin
basado en la creacin automatizada de cdigo fuente por medio de plantillas genricas,
clases, prototipos, componentes y lenguajes de especificacin de alto nivel.
En esta tesis se presenta el diseo, construccin y validacin experimental de una
herramienta para el desarrollo semi-automatizado de sistemas de informacin que est
basada en los principios de la lnea de productos de software. Bajo el esquema
propuesto, una lnea de produccin de software para una familia de productos se
instanca por medio de la definicin de las componentes estticas, que son comunes a
todos los productos de la familia, y de las componentes dinmicas que varan entre los
diferentes miembros de la familia. La herramienta propuesta est compuesta por un
ambiente grfico que asiste en la administracin de diferentes componentes de
software; un lenguaje para especificacin de la parte variable, as como su respectivo
intrprete y; un conjunto de plantillas que definen la parte esttica de diferentes
sistemas.
La herramienta propuesta se ha probado de forma extensiva, y un nmero importante
de desarrollos obtenidos mediante ella estn actualmente en operacin tanto en el
sector pblico como en el privado.
Abstract
A Software Product Line (SPL) is a paradigm that incorporates different areas of
software engineering such as requirement engineering, domain engineering and
application engineering to solve the problem of the massive and efficient construction of
software products. Its main purpose is to emulate the way in which industrial product
lines are capable of producing large volumes of high quality products.
This paradigm is based on the product family principle which emphasizes the application
of software component reuse to solve similar problems, and the concept of generative
programming to automatically generate high quality source code.
In this thesis we present the design, construction and experimental validation of a
software tool that supports the process of automatized construction of information
systems. The tool is based on the principles of the Software Product Lines. Under the
proposed scheme, a software product line is instantiated by means of the definition of
the static components of the system which are those logical parts that are common to
all the members of the product family, and by the dynamic components that vary from
one member to another. The proposed tool is composed by a management graphical
user interface; a language, with its corresponding interpreter, for the specification of
the variable components of the products; and a set of templates that define the static
components of a series of information systems.
The proposed tool has been extensively tested and it has been used to develop an
important number of systems that are currently under operation in both the private
industry and the government.
AGRADECIMIENTOS
Agradezco a los Doctores Rolando Menchaca Mndez y Lus Eduardo del Foyo por haber
confiado en mi persona, por la paciencia y por la direccin de este trabajo. Al Dr. Marco
Antonio Moreno Ibarra y la Dra. Alma Delia Cuevas Rasgado por los consejos, el apoyo
y el nimo que me brindaron.
A mi esposa Eva y a mis hijos que me acompaaron en esta aventura que signific la
maestra y que, de forma incondicional, entendieron mis ausencias y mis malos
momentos. A mi padre, que a pesar de la distancia siempre estuvo atento para saber
cmo iba mi proceso.
Gracias a todos.
Contenido
CAPTULO I - INTRODUCCIN .............................................................................. 14
1. CONTEXTO ......................................................................................................... 15
2. PLANTEAMIENTO DEL PROBLEMA ........................................................................ 19
3. OBJETIVOS ......................................................................................................... 20
4. JUSTIFICACIN .................................................................................................. 21
5. ORGANIZACIN DEL DOCUMENTO ...................................................................... 22
CAPTULO II - ESTADO DEL ARTE......................................................................... 23
1. INTRODUCCIN.................................................................................................. 24
2. INGENIERA DE SOFTWARE ................................................................................ 25
2.1. Ciclo de Desarrollo de Software ..................................................................... 27
2.2. Procesos de Desarrollo de Software ............................................................... 28
2.3. Ingeniera de Requerimientos ........................................................................ 30
2.4. Lneas de Productos de Software ................................................................... 32
2.4.1. Lnea de Produccin ................................................................................ 33
2.4.2. Lnea de Productos de Software ............................................................... 34
2.4.3. Administracin de la Variabilidad .............................................................. 35
2.4.4. Plataforma de Software ........................................................................... 36
2.5. Ingeniera de Dominio ................................................................................... 38
2.6. Ingeniera de Aplicacin ................................................................................ 39
2.7. Programacin Generativa .............................................................................. 40
2.8. Lenguaje de Dominio Especfico ..................................................................... 41
2.9. Sistemas de Meta Programacin .................................................................... 43
3. TRABAJOS RELACIONADOS ................................................................................. 45
3.1. Trabajos de Investigacin Relacionados ......................................................... 45
3.1.1.
#= # .................................. 78
10
LISTADO DE FIGURAS
Figura 1. Historia del Reso. ........................................................................................................................................15
Figura 2. Actividades esenciales de lnea de producto. ...............................................................................................17
Figura 3. Evolucin de costos utilizando desarrollo artesanal y utilizando Lnea de Produccin de Software. ...........18
Figura 4. Pasos del mtodo..........................................................................................................................................22
Figura 5. Marco terico de Lneas de Productos de Software. ....................................................................................24
Figura 6. Reutilizacin de Software. ............................................................................................................................27
Figura 7. Ciclo de desarrollo de software. ...................................................................................................................27
Figura 8. Procesos de desarrollo de software. .............................................................................................................28
Figura 9. Representacin del desarrollo de programa usando decisiones abstractas. ............................................33
Figura 10. Lnea de produccin con personalizacin masiva. ......................................................................................34
Figura 11. Diseo de la plataforma de software. ........................................................................................................37
Figura 12. Relacin de los diferentes tipos de variabilidad..........................................................................................39
Figura 13. Meta-programacin. ..................................................................................................................................44
Figura 14. Generacin de cdigo basado en templates. ..............................................................................................47
Figura 15. Mtodo de generacin de sistemas. ...........................................................................................................53
Figura 16. La Herramienta. ..........................................................................................................................................54
Figura 17. Intrprete de LENCOS. ................................................................................................................................55
Figura 18. Los Insumos. ...............................................................................................................................................56
Figura 19. Modelo Vista Controlador. .........................................................................................................................58
Figura 20. Meta-Arquitectura. .....................................................................................................................................59
Figura 21. El Repositorio. .............................................................................................................................................60
Figura 22. La Ejecucin de LENCOS. .............................................................................................................................61
Figura 23. Tecnologas de implementacin. ................................................................................................................62
Figura 24. Modelo entidad-relacin del Front-End. .....................................................................................................63
Figura 25. Modelo entidad-relacin del Back-End. ......................................................................................................64
Figura 26. Diagrama de flujo de datos general. ..........................................................................................................67
Figura 27. Diagrama de estados de una nueva aplicacin. .........................................................................................68
Figura 28. La relacin general de entidades. ...............................................................................................................69
Figura 29. Algoritmo de carga automtica de definicin de datos. ............................................................................70
Figura 30. Algoritmo de automatizacin de documentacin. .....................................................................................71
Figura 31. Algoritmo de generacin de cdigo Back-End. ...........................................................................................72
Figura 32. Algoritmo de generacin de cdigo Front-End. ..........................................................................................73
Figura 33. Arreglo de contexto de valores. ..................................................................................................................75
Figura 34. Creacin y uso del arreglo de contextos. ....................................................................................................76
Figura 35. Instrucciones del lenguaje. .........................................................................................................................77
Figura 36. Funciones del lenguaje. ..............................................................................................................................77
Figura 37. Un ejemplo de un contexto de valores........................................................................................................78
Figura 38. Un ejemplo de un script en LENCOS. ...........................................................................................................79
Figura 39. BNF de asignacin. .....................................................................................................................................80
Figura 40. BNF del ciclo................................................................................................................................................81
Figura 41. Segmentacin interna en un ciclo. ..............................................................................................................82
Figura 42. BNF de condicin. .......................................................................................................................................83
Figura 43. Ejemplo de instruccin SIHAY. ....................................................................................................................84
Figura 44. Ejemplo de instruccin SIHAY condicional. .................................................................................................84
11
12
13
CAPTULO I
INTRODUCCIN
14
1. CONTEXTO
En este trabajo de tesis se aborda el paradigma de Lnea de Productos de Software,
cuyas bases son los procedimientos de reutilizacin del software. Como se muestra en
la Figura 1, el concepto comienza en 1960 con la prctica de estructurar la solucin de
problemas en subrutinas que podan ser utilizadas en la resolucin de otros problemas
similares.
Productos de Software, sino que tambin encontr que el hacerlo es a la vez una
decisin tcnica y de negocios. Para tener xito con las lneas de productos de
software, una organizacin debe alterar sus prcticas tcnicas, prcticas de gestin, la
estructura organizacional del personal y el enfoque de negocios.
Respecto a los beneficios, en [SEI 2013] encontramos que los beneficios ayudan a las
organizaciones a superar los problemas causados por la escasez de recursos.
Organizaciones de todo tipo y tamao han descubierto que cuando se aplica con
habilidad una estrategia de lnea de producto, puede producir muchos beneficios, y
finalmente, dar a las organizaciones una ventaja competitiva. Ejemplo de beneficios
organizacionales incluyen los siguientes.
Aumento de la productividad.
Aumento de la calidad de los productos.
Disminucin de costos.
Disminucin de las necesidades de mano de obra.
Disminucin del tiempo de comercializacin.
Aumento en la posibilidad de entrar en nuevos mercados.
18
Una situacin deseable sera contar de inicio con un ambiente pre-construido del
software, integrado con todos los componentes necesarios a utilizar; en este punto, se
deben considerar versiones de las bibliotecas, archivos complementarios de un
ambiente e incluso estndares de codificacin bien definidos.
Se carece de una plataforma que permita administrar lneas de produccin de software
para la creacin de aplicaciones informticas y que considere lo que se conoce hasta
ahora en cuanto a plataformas de lnea de produccin de software y adems la
posibilidad de configuracin de los activos principales en diferentes lenguajes de
programacin.
19
3. OBJETIVOS
Objetivo general
Disear, implementar y validar experimentalmente una herramienta de soporte para el
desarrollo semi-automatizado de sistemas de informacin que est basado en los
principios de la lnea de productos de software.
Objetivos especficos
1. Disear e implementar un entorno grfico para la administracin de lnea de
productos de software.
2. Disear e implementar las componentes variables de la arquitectura de software
usando un mtodo jerrquico de caractersticas (features).
3. Definir por medio de notacin BNF un lenguaje para la especificacin de los
componentes variables de las familias de productos.
4. Disear e implementar un intrprete para el lenguaje de dominio especfico
capaz de generar componentes en diferentes lenguajes de programacin.
5. Disear e implementar un generador automtico de documentacin de los
productos generados mediante la herramienta propuesta.
6. Disear e implementar un conjunto de plantillas de software que implementen
las componentes estticas de una familia de productos de software.
7. Desarrollar un caso de prueba en base a la herramienta propuesta.
20
4. JUSTIFICACIN
Se ha elegido este tema de tesis, para aportar alternativas de solucin a las
problemticas que se enfrenta la industria del software por la gran diversidad de
tecnologas y conocimientos para el desarrollo de sistemas. El inters principal es
abonar en una solucin tangible, demostrando mediante una herramienta el sentido
prctico de la investigacin. Como se escribe en [WAYT 1994], el gran desafo es
encontrar maneras de cortar los lazos que unen intrnsecamente programas a equipos
especficos y a otros programas. Los investigadores estn estudiando varios enfoques
prometedores, incluyendo un lenguaje comn que se podra utilizar para describir las
partes de software, los programas que reforman componentes para adaptarse a
cualquier entorno, y los componentes que tienen muchas de las caractersticas
opcionales que el usuario puede activar o desactivar.
El beneficio principal es aproximar la construccin de un software informtico de calidad
usando un generador de cdigo. Adicionalmente, tambin hay algunos beneficios
secundarios como podran ser el unificar los esfuerzos tcnicos de las personas que
integran los equipos, dar certidumbre en los tiempos de entrega del producto, asegurar
la calidad de un producto y finalmente, permitir una mejora constante del tipo de
aplicacin que se puede aproximar.
Al crear una herramienta para una lnea de producto de software, se tiene que
considerar una solucin que se adapte a los distintas familias de sistemas que se
desean aproximar. Primero que nada, se debe enfatizar que los productos a considerar,
son aqullos que pueden ser definidos en un mismo dominio, dicho lo anterior, es
evidente que no estn consideradas aqullas soluciones que resuelven problemticas
muy especializadas o cientficas.
El diseo de la herramienta va enfocado a la administracin de varios tipos de
productos que se quieran generar, as como tambin, a la integracin de plataformas
tecnolgicas (lenguajes y estilos de programacin). La herramienta cuenta con un
administrador de productos que se encarga de reunir las caractersticas relevantes de
cada producto y una infraestructura con alta adaptabilidad para cumplir con las
necesidades de cambios y nuevas tecnologas.
Una de las aportaciones principales de la herramienta, es su capacidad de produccin
en mltiples tecnologas de software. Para ello, se define un lenguaje de programacin
de dominio especfico que sirve para la transformacin de las caractersticas de los
productos en cdigo fuente, usando un generador de cdigo.
21
En la tesis tambin se propone un mtodo de desarrollo para ser llevada por el equipo
de trabajo y lograr con xito la generacin de un sistema. Tambin se propone una
organizacin que sera apropiada para los perfiles profesionales que participan en la
construccin. El mtodo es necesario, porque con l se obliga a cumplir con los insumos
requeridos por la herramienta, ver Figura 4.
22
CAPTULO II
ESTADO DEL ARTE
23
1. INTRODUCCIN
En este captulo se presenta un anlisis del estado del arte y los trabajos relacionados.
En el estado del arte se describe un marco de referencia terico que cuyo objetivo es
posicionar la problemtica y la solucin propuesta. Para ello se buscaron definiciones,
investigaciones y productos comerciales relacionados de algn modo con la solucin
propuesta. La presentacin est organizada de la parte ms general hasta la ms
particular.
Iniciamos considerando las definiciones de ingeniera de software, que es el marco
general al cual pertenece el desarrollo de sistemas informticos. El desarrollo de
sistemas es estudiado desde la ingeniera de dominio y desde la ingeniera de
aplicacin, la forma de abordarlo, depende de si se crean varias aplicaciones del mismo
dominio o si se crea solo una aplicacin. Tambin explicamos un poco la Ingeniera de
Requerimientos, debido a que sus paradigmas son ampliados para integrar un anlisis y
diseo que nos lleve a la creacin de productos de calidad, ver Figura 5.
Esta investigacin tiene por objetivo disear y probar una herramienta que semiautomatiza la construccin de aplicaciones informticas y que pertenecen a un dominio
comn. La automatizacin lograda, tiene las caractersticas de una lnea de produccin
de software, ya que la gran mayora de las aplicaciones tienen caractersticas comunes
y pertenecen a una misma familia.
Una vez que tenemos nuestro marco terico, entramos a detallar los paradigmas de
programacin generativa, lenguajes de dominio especfico y meta-programacin. Estos
tres paradigmas sern parte fundamental en el diseo e implementacin de nuestra
herramienta.
24
2. INGENIERA DE SOFTWARE
De acuerdo con la definicin proporcionada en [IEEE 1990, pp.67], la ingeniera de
software es la aplicacin de un enfoque sistemtico, disciplinado y cuantificable para
desarrollar, operar y mantener el software.
Segn la definicin del IEEE citada por [Lewis 1994], el "software es la suma total de
26
27
A decir de la definicin, el ciclo comprende todas las actividades que suceden desde
que identificamos la necesidad de contar con un software y se inicia su construccin. El
ciclo de vida tiene por objetivo, detectar que los errores se disminuyan o se encuentren
lo antes posible, para que el equipo de trabajo se concentre en la calidad del software,
en los plazos de implementacin y en los costos asociados.
28
INICIALIZACIN
Es la fase donde el software a ser desarrollado se codifica. Dependiendo del tamao del
proyecto. La programacin puede ser distribuida entre distintos programadores o
grupos de programadores. Cada uno se concentrar en la construccin y prueba de una
parte del software, a menudo un subsistema. Las pruebas, en general, tienen por
objetivo asegurar que todas las funciones estn correctamente implementadas dentro
del sistema.
INTEGRACIN
29
ESTABILIZACIN
Una vez que el sistema ha sido integrado, comienza esta etapa. Es donde es probado
para verificar que el sistema es consistente con la definicin de requerimientos y la
especificacin funcional. Por otro lado, la estabilizacin consiste en una serie de
actividades que aseguran que el software implementa correctamente una funcin
especfica. Al finalizar esta etapa, el sistema ya puede ser instalado en ambiente de
explotacin.
INSTALACIN
Es el proceso por el cual nuevos programas son transferidos a un computador con el fin
de ser configurados y preparados para ser ejecutados en el sistema informtico, para
cumplir la funcin para la cual fueron desarrollados.
MANTENIMIENTO Y SOPORTE
30
De acuerdo con [IEEE 1998, pp.9], los prototipos son tiles por las siguientes razones:
a. El cliente puede tener ms probabilidades de ver el prototipo y reaccionar a l
que leer el SRS y reaccionar a l. De este modo, el prototipo provee una rpida
retroalimentacin.
b. El prototipo muestra aspectos no previstos de la conducta de sistemas. As, se
producen no slo respuestas, sino tambin nuevas preguntas. Esto ayuda a
concluir un SRS.
c. Un SRS basado en un prototipo tiende a sufrir menos cambios durante el
desarrollo, lo que reduce el tiempo de desarrollo.
Los prototipos pueden ser utilizados como una tcnica dentro de una fase en un modelo
de desarrollo o como un modelo por si mismo. El caso del modelo espiral, considera el
prototipo como un mecanismo clave en el xito del modelo [BARRY 2001]. El modelo de
prototipo rpido, se basa fundamentalmente en prototipos.
mrgenes de ganancia para los inversionistas. Ambos efectos son indeseables. As que,
muchas empresas, sobre todo en la industria del automvil, comenzaron a presentar
plataformas comunes para los diferentes tipos de vehculos mediante la planificacin de
antemano, de qu partes se utilizan en diferentes tipos de coches [KLAUS GUNTER
FRANK, 2005, pp.4], ver Figura 10.
Los cambios profundos en las prcticas de ingeniera generalmente no se inician sin una
slida justificacin econmica. Una razn fundamental para la introduccin de la lnea
de productos de ingeniera es la reduccin de costos. Cuando los componentes
comunes se reutilizan en varios tipos diferentes de sistemas, esto implica una reduccin
de costos para cada sistema [KLAUS GUNTER FRANK, 2005, pp.9].
Las motivaciones para la ingeniera de productos son:
1. Reduccin de costos de desarrollo
2. Incremento en la calidad
3. Reduccin de tiempo para el mercado
35
de
y
un
de
Podemos encontrar otra definicin en [KLAUS GUNTER FRANK, 2005, pp.21] donde la
ingeniera de dominio se describe como el proceso de ingeniera de lnea de productos
de software en el cual son definidas y realizadas las partes comunes y variables de la
lnea de productos.
De aqu podemos resumir que un dominio es un rea de aplicacin de productos de
software, que estn centrados sobre una misma rea de conocimiento, que es factible
de producirlo en lnea y que puede dividirse en sub dominios comunes y variables, ver
Figura 12.
El manejo de la variabilidad es tratado en todo el ciclo de vida del software. Este inicia
con la definicin de alcance inicial, se presenta en toda la etapa de implementacin y
pruebas y finalmente hasta en la evolucin. Como tal, la variabilidad es relevante para
todos los productos a lo largo del desarrollo de software [FRANK KLAUS EELCO 2007,
pp.9].
38
La mayora de los enfoques modernos usan las features (caractersticas) como los
conceptos bsicos de representacin de la variabilidad. Sin embargo, existen varias
interpretaciones del trmino features. El punto ms importante es que las
caractersticas de los productos que los diferenca de otros productos son la esencia
para la representacin. La mayora de los enfoques modernos soportan la
caracterizacin de la variabilidad por medio de caractersticas que pueden representarse
en varias vistas [FRANK KLAUS EELCO 2007, pp.9].
39
Los objetivos clave de los procesos de ingeniera de aplicacin son los siguientes.
Lograr la reutilizacin tan alta como sea posible de los productos del dominio
cuando se defina y desarrolle una aplicacin de lnea de producto.
Explotar la parte comn y variable de la lnea de producto de software durante el
desarrollo de aplicaciones de lnea de producto.
Documentar la plataforma de software. Por ejemplo los requerimientos,
arquitectura, componentes y pruebas, y relacionarlos a la plataforma de dominio.
Asociar la variabilidad de acuerdo a las necesidades de la aplicacin de los
requerimientos sobre la arquitectura, a componentes, y casos de prueba.
Estimar el impacto de las diferencias entre requerimientos de aplicacin y
dominio sobre la arquitectura, componentes, y pruebas.
40
42
es slo una muestra de como usar cdigo para escribir ms cdigo, no la forma ms
eficiente de imprimir una lista de nmeros. En cualquier caso, un buen programador
puede escribir y ejecutar este meta-programa en apenas un par de minutos, y habr
generado exactamente 1000 lneas de cdigo en esa cantidad de tiempo.
44
3. TRABAJOS RELACIONADOS
3.1. Trabajos de Investigacin Relacionados
3.1.1. S.P.L.O.T. Software Product Lines Online Tools
Es un sistema de configuracin y razonamiento basado en web para las lneas de
productos de software. El sistema se beneficia de tcnicas. de razonamiento maduro
basado en la lgica como los solucionadores SAT (boolean SATisfiability problem) y
diagramas de decisin binarios, para proveer a las LPS de investigadores y
profesionales con servicios de configuracin interactivo y razonamiento eficiente.
Adems, el sistema proporciona un repositorio de modelos de entidad que contiene los
modelos reales y generados para fomentar el intercambio de conocimientos entre los
investigadores en el campo [MENDONCA BRANCO COWAN 2009].
S.P.L.O.T. es un sistema basado en la Web y desarrollado en Java 2 que utiliza un
motor de plantillas HTML para construir interfaces de usuario altamente interactivas
para configuracin y razonamiento basadas en Ajax. Considerando que el sistema est
basado en Internet, esto facilita el intercambio de conocimientos (por ejemplo, el
repositorio de modelo de caractersticas), sin necesidad de descargar las actualizaciones
del software [MENDONCA BRANCO COWAN 2009].
Link: http://www.splot-research.org/
45
46
Estas libreras son creadas como open source, y su implementacin slo intenta que
algn experto en las tecnologas Java automatice su trabajo. Lo anterior se debe a la
dificultad en torno al uso de las funciones de las clases y su limitacin en el producto
final.
Link: http://onjava.com/pub/a/onjava/2004/05/05/cg-vel1.html
Link: http://www.biglever.com/
Caractersticas citadas por: [KRUEGER CLEMENTS 2013]
48
CAPTULO III
DISEO DE LA PLATAFORMA DE SOFTWARE
49
1. INTRODUCCIN
En este captulo explicamos la propuesta de diseo que se implementa en una
plataforma de lnea de productos de software. La plataforma es una herramienta con un
diseo tipo RAD (Rapid Application Development) y su objetivo es generar aplicaciones
informticas utilizando el paradigmas de lnea de productos de software con tcnicas de
programacin generativa.
Comenzaremos describiendo el mtodo de generacin propuesto, para despus abordar
el diseo de la herramienta, haciendo especial nfasis en la configuracin de la
arquitectura y sintaxis de lenguajes, que resuelven las problemticas iniciales de la
investigacin.
Finalmente, se explican las partes medulares de la solucin, es decir, el diseo de la
variabilidad de la arquitectura y el lenguaje de dominio especfico.
2. ENFOQUE DE SOLUCIN
La herramienta propuesta debe considerar la produccin de ms de un sistema a la vez,
por lo tanto, una de las premisas es contemplar los requisitos necesarios para gestionar
varios proyectos. Como parte de nuestra herramienta de gestin, se incluye una capa
de persistencia de datos, y en este caso, los datos son caractersticas relevantes de
cada lnea de produccin.
Como parte del diseo, tambin se ha considerado la posibilidad de generar sistemas
usando diferentes arquitecturas y lenguajes de programacin. Cada una de las
arquitecturas, sus componentes y sintaxis, son incluidos, en un archivo de configuracin
reservado para la lnea de produccin.
El inters de integrar la configuracin de arquitectura, componentes y sintaxis de modo
independiente, tiene como objetivo aumentar la flexibilidad de la herramienta para
permitir modificar o agregar nuevas capacidades, de tal suerte que sea posible incluir
una nueva lnea de produccin con su arquitectura y componentes correspondientes.
Los componentes son un conjunto de programas y archivos que forman parte de la
arquitectura y que tienen un comportamiento u objetivo especfico.
La arquitectura de la lnea de produccin se configura sobre una solucin diseada para
soportar las distintas variantes. La administracin de la variabilidad se logra usando un
modelo de caractersticas (features) que permite considerar diferentes condiciones y
50
51
52
Actividad 1. Tiene que ver con la captura de la informacin que ha resultado del
anlisis y diseo de un sistema de software. sta es informacin general, la cual
despus es recolectada para la automatizacin de la documentacin.
Actividad 2. Es la generacin del cdigo Back-End. Aqu es necesario integrar el
modelo entidad-relacin del sistema, documentarlo y generar el cdigo seleccionando
alguna lnea de produccin.
Actividad 3. La edicin de cdigo es responsabilidad de los programadores de la lgica
de negocio. La edicin tiene que considerar seguir con los mismos estndares que se
aplican durante la generacin. Adems es importante exigir que el cdigo se documente
a semejanza de lo que se gener.
Actividad 4. La integracin del prototipo y los mtodos de negocio, requiere dos
insumos principalmente: el prototipo de la aplicacin y el cdigo Back-End. En esta
actividad, la herramienta analiza el cdigo del prototipo y del Back-End y los presenta al
usuario para su configuracin.
Actividad 5. La generacin de la aplicacin, esta es la ltima participacin de la
herramienta en la generacin de cdigo. La herramienta se encarga de recolectar toda
la informacin disponible, y con ayuda de la lnea de produccin, el cdigo del sistema.
53
4. DISEO DE LA HERRAMIENTA
El diseo de la herramienta es igual a un sistema de administracin de aplicaciones, la
cual debera estar construida en un lenguaje de programacin que incluya libreras para
conectarse a una base de datos, manejar archivos empaquetados .zip, utilizar
expresiones regulares y generar documentacin.
Finalmente, tenemos una herramienta especializada pero con caractersticas iguales que
cualquier aplicacin informtica, donde se contar con una interfaz de usuario para
administrar los insumos y unos procesos para generar los productos correspondientes,
ver Figura 16.
La informacin relativa a cada uno de los sistemas que entran a la lnea de produccin,
es registrada en una base de datos. Estos datos nos permiten aportar la informacin
necesaria para generar los productos sobre los mismos sistemas. La integracin de los
datos referentes a los detalles tcnicos de cada sistema, se logra a travs de la interfaz
del usuario. Esta captura nos permite concentrar la informacin relevante en un solo
contenedor, para que sea utilizada y manipulada a la hora de generar los productos.
54
La definicin de cada lnea de produccin tiene lugar en archivos con formato XML
disponibles como parte de la configuracin. La configuracin es tomada en cuenta por
la herramienta al momento de generar los productos de salida por cada sistema. La
configuracin de la arquitectura tambin comprende archivos que utilizan el lenguaje
intermedio para definir los componentes de software que se generan.
Los procesos de generacin de cdigo y automatizacin de documentacin consideran
la informacin relevante de cada sistema y la manipulan utilizando un proceso de
interpretacin del meta-lenguaje y la definicin en plantillas (templates) de
documentacin.
La generacin de cada componente se hace a travs de un intrprete que acepta como
insumos los componentes de la arquitectura y las caractersticas de los sistemas. Cada
componente de la arquitectura configurada, est segmentado en una parte fija y una
parte variable. La parte fija de un componente tiene la sintaxis del lenguaje
seleccionado, y la parte variable se encuentra escrita en el lenguaje intermedio llamado
LENCOS (ver Figura 17).
55
4.1. Insumos
Los insumos de la herramienta son de origen distinto, se tienen pantallas de captura de
datos, carga y procesamiento de archivos. Las pantallas de captura de datos son la
interfaz con el usuario para complementar toda la informacin requerida de los
sistemas. Esta informacin incluye el nombre de la aplicacin, responsables, entidades
de datos, descripciones, campos, etc. Los datos relativos a una aplicacin son utilizados
tanto para generar el cdigo como para documentar.
A modo de automatizar la carga de informacin, los archivos de insumos pueden ser
definiciones de base de datos en lenguaje de definicin de datos DDL. Estos archivos
son procesados por un procedimiento de la herramienta (y una configuracin de
expresiones regulares. Ver apndice B). Tambin es posible cargar archivos con
formato HTML para el prototipo e imgenes para la documentacin de pantallas.
La informacin de las entidades y sus campo tiene una relacin directa con la
generacin del cdigo Back-End, cuya responsabilidad es la manipulacin de la
persistencia de datos. En el caso de estudio que nosotros utilizamos, se genera una
clase por cada entidad de datos y una variable por cada campo, as mismo, por cada
variable se generan sus interfaces pblicas set y get. Adems de esto, se genera el
cdigo respectivo para el acceso a la capa de persistencia y el cdigo para la capa de
negocio.
El prototipo en HTML del punto 2 en la Figura 18, se trata de un script definido
previamente por los analistas y diseadores grficos, pero validado por los usuarios.
Cada archivo participa al momento de hacer la integracin entre el Front-End y su
respectivo cdigo Back-End. El proceso de integracin se encarga del mapeo de las
pantallas con las clases e interfaces de los mtodos de negocio del Back-End.
La documentacin de cada sistema del punto 3 en la Figura 18, es informacin relativa
a cada sistema que se desea aproximar, sus pantallas, sus reportes, sus fuentes de
datos, etc. Esta informacin es utilizada tanto en la generacin de cdigo, como en la
automatizacin de documentacin. El objetivo de una interfaz de usuario para la
captura desde la herramienta, es disminuir costos en la documentacin de cada
sistema, ya que se ha notado que esta actividad suele ser redundante.
Como vimos anteriormente, la persistencia de datos de la herramienta est dispuesta
en dos partes. Por un lado tenemos una base de datos normal, con sus respectivas
tablas donde se guarda la informacin necesaria para documentar los sistemas; y por el
otro lado, tenemos una biblioteca de configuracin, para ampliar las capacidades de la
herramienta en cuanto a las lneas de produccin (arquitecturas y estilos de
documentacin soportados).
4.2. Productos
El producto principal de la herramienta es cdigo fuente generado, que forma parte del
ciclo de desarrollo de software. Sin embargo, tenemos que considerar que persiste
informacin de cada sistema en la herramienta y que puede ser manipulada para lograr
nuevos productos. Hasta ahora, el diseo de la herramienta ha considerado ejemplificar
la automatizacin de documentacin para un diccionario de datos, un diseo funcional y
un diseo tcnico.
57
59
4.4. Meta-lenguaje
El Lenguaje intermedio que llamamos LENCOS (Lenguaje para la Conversin de
Servicios), fue diseado con el fin de ser lo suficiente flexible para generar cualquier
cdigo a partir de dos insumos. Un contexto de valores dispuestos en un servicio XML y
un script que resalta la sintaxis requerida en el cdigo resultante.
60
Considerando lo general que puede llegar a ser LENCOS, lo nico que resta decir, es
que si se requiere adaptar el lenguaje a otra herramienta, basta con hacer una
implementacin que forme al vuelo un servicio XML para posteriormente someterlo al
intrprete de LENCOS.
La siguiente Figura es un esquema general del lenguaje y su estructura de ejecucin:
En la Figura 22, despus de que cualquier aplicacin o mdulo arma el XML, ste pasa
a formar parte, de la alimentacin del intrprete de LENCOS. Adems, el intrprete se
alimenta del script con la programacin de la sintaxis que se quiere en el cdigo de
salida. Al ser ejecutado el script, se manipula la estructura entregada en el contexto de
valores, y se logra el resultado ejecutando cada lnea del script de LENCOS.
hacer uso de funciones o procedimientos particulares a cada producto. Para el este caso
particular se utiliz SQL Lite, ver Figura 23.
En la Figura 24 podemos darnos cuenta que nuestro modelo atiende el contexto de los
reportes y el contexto de las pantallas.
El contexto de los reportes se limita a documentar los campos que participan en el
informe, as como los arreglos de los mismos. Estos arreglos son las agrupaciones de
los campos, es decir, grupos de campos tienen por objetivo repetir los renglones al
momento de imprimir sus datos.
En el contexto de las pantallas se consideran los botones, campos, arreglos, eventos y
para los sistemas web, algunos eventos de navegacin.
La documentacin del Front-End tiene dos niveles de documentacin. El primer nivel es
de informacin general y el segundo es la informacin especfica de funcionalidad. Estos
dos niveles de informacin son cargados en momentos diferentes, el primer nivel de
informacin se ingresa desde el principio que se tiene conocimiento de cada pantalla y
el segundo nivel al momento de integrar el prototipo en formato HTML.
63
GEN021_PROYECTO_FUENTEDATO
CD_PROYECTO: CHAR(6)
CD_FUENTEDATO: CHAR(6)
TX_COMMENT: VARCHAR(255)
GEN025_PROYECTO_ENTIDADATO
CD_PROYECTO: CHAR(6)
CD_FUENTEDATO: CHAR(6)
NB_ENTIDADATO: VARCHAR(60)
GEN023_ENTIDADATO
CD_FUENTEDATO: CHAR(6)
NB_ENTIDADATO: VARCHAR(60)
GEN024_ENTIDADATO_CAMPO
CD_FUENTEDATO: CHAR(6)
NB_ENTIDADATO: VARCHAR(60)
NB_CAMPO: VARCHAR(60)
CD_ORDEN: SMALLINT
NU_LONGITUD: INTEGER
NU_DECIMALES: INTEGER
ST_PERMITE_NULOS: CHAR(2)
ST_ESLLAVE: CHAR(2)
ST_ESLLAVE_ALTERNA: CHAR(2)
ST_ESAUTOINCREMENTO: CHAR(2)
ST_ESSECUENCIA: CHAR(2)
CD_TPDATOFISICO: VARCHAR(20)
NB_VARIABLE: VARCHAR(30)
NB_SECUENCIA: VARCHAR(60)
TX_COMMENT: VARCHAR(255)
CD_TPENTIDADATO: CHAR(2)
NB_CLASE: VARCHAR(20)
TX_COMMENT: VARCHAR(255)
TX_CLASECOMMENT: VARCHAR(255)
GEN026_ENTIDADATO_PARAMETRO
CD_FUENTEDATO: CHAR(6)
NB_ENTIDADATO: VARCHAR(60)
NB_PARAMETRO: VARCHAR(20)
CD_ORDEN: SMALLINT
NU_LONGITUD: INTEGER
NU_DECIMALES: INTEGER
TX_COMMENT: VARCHAR(255)
64
66
67
68
69
CONFIG.
Capturar Script de
definicin de datos + ID
Sintaxis
Leer SINTAXIS
NO
Descomponer
Script
Presentar
resultados
Es correcto?
Escribir
TERMINAR
La interfaz del usuario para esta funcin se ha construido a modo de pantallas paso a
paso (wizard). El flujo de pantallas se puede observar en el Apndice D - seccin 3.
70
CONFIG
Seleccionar
formato
Leer formato e
identificar
variables
Solicitar
valores de
variables
BASE DE
DATOS
Armar
servicio XML
Escribir
documento
FIN
71
seccin 5.
INICIO
CONFIG
Seleccionar estilo
de codificacin
Leer el
contenido del
estilo de
programacin
BASE DE
DATOS
Seleccionar proyecto y
fuente de datos
Configurar
el cdigo
Arma el servicio
XML del Back-End
Interprete del
MetaLenguaje
Escribir cdigo
FIN
La interfaz del usuario est orientada a preparar todos los insumos necesarios para el
proceso de generacin de cdigo, al momento que se completan, se procede con el
armado automtico del servicio XML y con la ejecucin del intrprete. El intrprete
espera un servicio XML y el propio cdigo en el lenguaje de dominio especfico. El
esquema de valores inicial se arma rescatando y manipulando la informacin desde la
base de datos del proyecto, ver Figura 31.
72
CONFIG
Seleccionar
programas back-end
Programas
Back-End
Extraer
objetos e
interfaz
BASE DE
DATOS
Seleccionar proyecto
Sincronizar cada
pantalla
Seleccionar prototipo
html
Arma el servicio
XML del FrontEnd
Interprete del
MetaLenguaje
Extraer input y
labels
Escribir cdigo
Asociar con
informacin
de pantalla
FIN
74
Los contextos de valores no slo sirven para delimitar el mbito de valores con los
cuales trabaja una iteracin, tambin un contexto nos permite crear nuevas variables
que funcionan slo en el mbito en que fueron creadas, y una vez que la iteracin
termina, en automtico se elimina el contexto y por ende la variable.
Si la variable fue creada en un mbito anterior y se le busca en el mbito actual, el
intrprete de LENCOS buscar primero si existe esta variable, iniciando con el contexto
actual y si no se encuentra, se contina en orden con los contextos anteriores, ver
Figura 34.
76
Adems tambin tenemos las funciones para la manipulacin de valores de la Figura 36.
77
78
En la Figura 37 y 38, se pueden visualizar las dos entradas que recibe el intrprete de
LENCOS. Por un lado tenemos el contexto de valores, y por el otro un script en
LENCOS que ser el encargado de realizar operaciones con el contexto de valores para
lograr producir el cdigo en el lenguaje seleccionado.
Es importante aclarar que la generacin de cdigo tendr prcticamente todas las
caractersticas del script en LENCOS, es decir, la salida respetar los textos y espacios
que se tienen antes y despus de los delimitadores # instruccin #. El intrprete slo
va a procesar las instrucciones de su inters y el resto se mantendr intacto.
La ejecucin del LENCOS lleva un control estricto del segmento de cdigo que se est
ejecutando, un segmento se determina por un nmero de lnea inicial y un nmero de
lnea final. En el caso inicial de la ejecucin de un script, el segmento inicia en la lnea
79
Y en esta ocasin del mismo modo se identifica la propiedad <name>, pero tambin
las propiedades <funcion>, <par1> y <par2>, estos dos ltimos son opcionales.
Una vez que se han recuperado los valores, el intrprete de LENCOS procede en primer
lugar a resolver lo relacionado con el contexto de valores, y posteriormente se procesa
ese valor con la funcin que fue identificada.
81
El contexto de valores es un flujo de caracteres que contiene todas las propiedades que
son consideradas por el intrprete de LENCOS. En el caso particular de una instruccin
de ciclo, se crea un arreglo de contextos, dependiendo del nmero de ciclos anidados
que existan. Estos arreglos de contextos sern considerados por el intrprete de
LENCOS para recuperar los valores de las propiedades solicitadas. En el caso de que
tengamos n contextos en el arreglo, el primer contexto a ser considerado ser el
contexto n, y en caso de no encontrar el valor de la propiedad requerido, el intrprete
seguir buscando en el contexto n-1.
Las dos expresiones regulares asociadas a los ciclos son las siguientes:
#PARA CADA\s+(?<name>\w+)\s+EN\s+(?<coleccion>\w+|\w+\.\w+|\w+\.\w+\.\w+|\w+\.\w+\.\w+.\w+)\s*#
#PARA
CADA\s+(?<name>\w+)\s+EN\s+(?<coleccion>\S+)\s+DONDE\s+(?<variable>\S+)\s+(?<condicion>ESIG
UALA|ESDIFERENTEA)\s+(?<constante>\S+)\s*#
5.2.3. # SI ES IGUALA #
El condicionamiento en un script podra ser simple o compuesto, el condicionamiento
simple tiene la siguiente forma:
# SI ... ESIGUALA|ESDIFERENTEA|ESTAEN #
grupo de instrucciones
#FIN SI#
Y el compuesto:
# SI ... ESIGUALA|ESDIFERENTEA|ESTAEN #
grupo de instrucciones
#Y SI NO#
grupo de instrucciones
#FIN SI#
82
5.2.4. # SIHAY #
La instruccin es una condicin que determina si un conjunto de elementos est
formado por al menos un elemento. La instruccin tiene dos variantes, una que valida
la existencia de elementos dentro de un conjunto SIN CONDICIONES, y la segunda
variante que valida la existencia de elementos dentro de un conjunto, pero despus de
haber aplicado un condicionamiento a cada elemento. La instruccin simple es como
sigue.
#SIHAY EN #
grupo de instrucciones
#FIN SIHAY#
Esta instruccin se usa, cuando se quiere determinar si una propiedad que tiene un
arreglo de propiedades en contexto de valores, tiene al menos una propiedad de este
arreglo. En la siguiente Figura se muestra un ejemplo.
83
CONTEXTO
LENCOS
<clase>
<clavariables>
</clavariables>
</clase>
grupo de instrucciones
#FIN SIHAY#
Figura 43. Ejemplo de instruccin SIHAY.
#FIN SIHAY#
La instruccin SIHAY complementada con una condicin, permitir determinar si al
menos se encuentra un elemento de una coleccin de elementos pero inmediatamente
despus de considerar una condicin que es aplicada directamente a las propiedades de
cada elemento del arreglo. En la siguiente Figura se muestra un ejemplo.
CONTEXTO
LENCOS
<clase>
<clavariables>
<variable>
<nombre>scdinstitucion</nombre>
<tipo>String</tipo>
<llave>Si</llave>
</variable>
<variable>
<nombre>scdconcepto</nombre>
<tipo>String</tipo>
<llave>Si</llave>
</variable>
<variable>
<nombre>snbconcepto</nombre>
<tipo>String</tipo>
<llave>No</llave>
</variable>
</clavariables>
</clase>
grupo de instrucciones
#FIN SIHAY#
84
5.2.6. # USANDO #
La instruccin de contextualizacin, crea un nuevo contexto de valores considerando la
propiedad de un arreglo de propiedades y en una posicin en particular. Una vez
determinado este nuevo contexto, todas las instrucciones que se encuentren en el
cuerpo de la instruccin van a considerar este contexto de valores como el ltimo
contexto desde donde extraern sus valores.
La instruccin con condicin tiene la siguiente forma:
#USANDO EN POSICION #
#FIN USANDO#
La siguiente Figura muestra un ejemplo.
CONTEXTO
<clase>
<clavariables>
<variable>
<nombre>scdinstitucion</nombre>
<tipo>String</tipo>
<llave>Si</llave>
</variable>
<variable>
<nombre>scdconcepto</nombre>
<tipo>String</tipo>
<llave>Si</llave>
</variable>
<variable>
LENCOS
grupo de instrucciones
#FIN USANDO#
86
<nombre>snbconcepto</nombre>
<tipo>String</tipo>
<llave>No</llave>
</variable>
</clavariables>
</clase>
87
Informacin
Armar XML
1. Leer contexto
de valores
config
Leer script
2. Leer metalenguaje
FIN
Imprimir linea
no
Hay palabra
clave
si
Es un ciclo
no
5. Interpreta
lnea
si
3. Leer lneas de
cdigo y define
apuntador
4. Agregar nuevo
contexto de
valores
PROCESA INSTRUCCIN
INICIO
Leer lnea
Imprime valor
Evaluar expresin
regular
si
1.Recupera
valor
si
2.Asigna
valor
Imprime lnea
con valor
no
Asigna valor
Es
sintcticament
e correcta
si
no
Imprime
ERROR
no
3.Otro
proceso
FIN
Procesa
instruccin
FIN
89
90
EJEMPLO
Las instrucciones que generan llamadas recursivas del proceso de interpretacin son
# PARA CADA EN #, # SI ... ESIGUALA #, # SIHAY #, # USANDO #.
91
En el ejemplo de la Figura 52, tenemos que los primeros apuntadores son aqullos de
color azul, es entonces cuando el proceso de interpretacin se hace responsable de
ejecutar cada instruccin que se encuentra entre esta pareja de apuntadores. En el
momento en que identifica una instruccin que amerita la llamada recursiva del proceso
se marca como un apuntador inicial y se busca su respectivo apuntador final. Ya que se
tiene la pareja de apuntadores, entonces se procede a llamar el proceso de
interpretacin otra vez.
92
CAPTULO IV
CASO DE ESTUDIO
93
1. INTRODUCCIN
En este captulo vamos a demostrar el uso de la herramienta en un sistema de aula
virtual. La arquitectura de implementacin es CGI (Common Gateway Interface) y la
generacin de cdigo es en PHP. En este captulo vamos a considerar las entidades de
datos y la interfaz del usuario ms representativa del sistema ya que las dems
funciones tienen un tratamiento muy similar.
En la introduccin del caso de estudio se explica el ambiente general en el que se
desarrolla el sistema y los mdulos que lo integran, posteriormente se explican los
insumos de la herramienta, es decir, el modelo entidad-relacin y el prototipo.
De acuerdo a la propuesta del mtodo de generacin, las entidades de datos se
integran en un script con una sintaxis DDL (Data Definition Language). Sin embargo, en
el ejemplo, slo se va a considerar el script de una entidad para demostrar el proceso
de integracin y generacin del cdigo.
De acuerdo al mtodo, despus que se genera el cdigo Back-End, se inicia una etapa
de adaptacin del cdigo. La etapa de adaptacin, permite implementar la lgica de
negocio de forma artesanal apoyndose en el cdigo que se gener automticamente.
Esta etapa es independiente de la herramienta y no forma parte del alcance de la
explicacin.
Una vez que se logr tener una lgica de negocio estable, entonces se procede a la
integracin con el prototipo y la generacin de cdigo del Front-End. El proceso de
integracin, es un proceso operado desde la interfaz de la herramienta, donde se
relacionan las pantallas con los componentes de software. Finalizando la integracin se
procede a generar el cdigo.
Es importante destacar, que en este captulo se demuestran los procedimientos de
integracin y generacin de cdigo Front-End, considerando solamente una pgina
representativa de la nueva aplicacin. Incluso, el proceso de integracin solo tomar en
cuenta un mtodo, un campo y un evento.
Desde el primer momento que se tiene capturada la informacin del sistema, es posible
automatizar la documentacin, y a partir de entonces, se podr generar cada
documento en una versin actualizada y definitiva.
94
3. La configuracin del contenido para cada aula permitir organizar los recursos
y tareas de forma cronolgica para los alumnos.
4. El proceso cognoscitivo es la pantalla desde donde el alumno interactuar con
el aula virtual.
96
2. EL MTODO DE GENERACIN
De acuerdo al mtodo de construccin de la Figura 55, se tienen que disear por
anticipado el modelo entidad-relacin y el prototipo del caso de estudio. Los insumos
deben ser integrados en dos archivos scripts por separado; el script del modelo entidadrelacin, se integrara con formato de definicin de datos (DDL), y el prototipo de la
interfaz del usuario, debe incorporarse en un archivo HTML.
.
1
2
En este caso se utiliz Erwin 4.0 de la compaa Computer Associates International, Inc.
En este caso se utiliz un Editor de texto comun.
97
98
4. PROTOTIPO A CONSIDERAR
Este prototipo es una propuesta para probar la herramienta en el proceso de
integracin y generacin del cdigo Front-End. Dispone de muchas pantallas para la
operacin del sistema, Pero para probar la herramienta, slo vamos a detallar el
proceso sobre una pantalla en particular.
Este prototipo es resultado de un anlisis y diseo en las etapas previas a la
construccin. El diseo comprende las funciones especficas que el usuario requiere
para responder a sus necesidades. Es de esperarse, que cuando el prototipo llega a la
herramienta, tendra que tener la aprobacin del usuario.
La construccin del prototipo, suele ser responsabilidad de los expertos en diseo
grfico; aunque tambin puede ser producto de ingenieros de sistemas que
implementan plantillas pre-diseadas. En cualquiera de los casos, la herramienta espera
un script HTML por cada interfaz o pantalla del usuario.
En la herramienta, cada pgina se maneja de forma independiente, y cada una se debe
configurar en un proceso independiente en la etapa de integracin. Al concluir la
integracin de cada pantalla, La herramienta valida que todos los controles o etiquetas
se relacionen.
99
100
Esta pgina nos permite agregar un aula virtual en el sistema, las aulas virtuales se
asignan a un profesor y una asignatura; adems, tienen un cdigo de activacin para
que el alumno pueda integrarla como parte de su rea de trabajo, ver Figura 58.
Esta pgina nos permite realizar una consulta de las aulas virtuales registradas en el
sistema, adems nos permite integrar sus temas acadmicos y los recursos
institucionales (documentacin acadmica), ver Figura 59.
101
Esta pgina nos permite agregar los temas acadmicos que son tratados en cada aula
virtual. Los temas son los captulos o secciones de la organizacin del contenido
acadmico. Como ejemplo, estos temas pueden ser: meses, bimestres, mdulos,
captulos, etc. Ver Figura 60.
102
Esta pgina de la Figura 61, tiene la funcin de administrar el contenido de estudio para
un aula virtual en particular. Y est formada por lo siguiente:
1.
2.
3.
4.
5.
103
Esta pgina de la Figura 62, tiene la misma funcionalidad que la pgina de la Figura 61,
a excepcin de que para los alumnos no es posible agregar o modificar un evento.
Cabe sealar que la herramienta permite generar los componentes utilizando distintas
plantillas y que la generacin en este caso de estudio slo obedece a la interpretacin
particular de la lnea de produccin que se seleccion.
La proceso de generacin del cdigo Back-End, es el paso 2 Generacin de cdigo
Back-End de la Figura 55.
105
<clase>
<nbclase>Aula</nbclase>
<archclase></archclase>
<commclase>Clase que tiene la informacin relativa al aula virtual</commclase>
<nbentidadato></nbentidadato>
<llavecompuesta>No</llavecompuesta>
<clavariables>
<variable>
<nombre>scdinstitucion</nombre>
<tipo>String</tipo>
<valor></valor>
<llave>Si</llave>
<dbcampo>CD_INSTITUCION</dbcampo>
<dblongitud>0</dblongitud>
<dbdecimales>0</dbdecimales>
<formatear>No</formatear>
<validanull>No</validanull>
<parametro>pscd</parametro>
<comentario>Clave de la institucin a la que pertenece el portal</comentario>
</variable>
<variable>
<nombre>scdaula</nombre>
<tipo>String</tipo>
106
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
<valor></valor>
<llave>Si</llave>
<dbcampo>CD_AULA</dbcampo>
<dblongitud>0</dblongitud>
<dbdecimales>0</dbdecimales>
<formatear>No</formatear>
<validanull>No</validanull>
<parametro>pscd</parametro>
<comentario>Clave del aula virtual</comentario>
</variable>
/* EL TAG <variable> SE REPITE PARA CADA UNO DE LOS CAMPOS */
</clavariables>
<clametodos></clametodos>
</clase>
<beans>
<clase>
<nombre>Aula</nombre>
<selectone>Si</selectone>
<selectall>Si</selectall>
<selectcriterio>Si</selectcriterio>
<selectsome>Si</selectsome>
<update>Si</update>
<insert>Si</insert>
<delobj>Si</delobj>
<delkey>Si</delkey>
<tabla>
<nombre>VIR010_AULA</nombre>
<campos>
<campo>
<variable>scdinstitucion</variable>
<comentario>Clave de la institucin en el portal</comentario>
<nombre>CD_INSTITUCION</nombre>
<tipo>String</tipo>
<llave>Si</llave>
<autoincremento>No</autoincremento>
<esecuencia>No</esecuencia>
<nbsecuencia></nbsecuencia>
<dblong>3</dblong>
<dbdecimales>0</dbdecimales>
<propiedad>cdinstitucion</propiedad>
<metodoget>getcdinstitucion</metodoget>
<metodoset>setcdinstitucion</metodoset>
</campo>
<campo>
<variable>scdaula</variable>
107
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
7.4. Meta-Lenguaje
Los componentes de la lnea de produccin que se van a tratar en este caso de estudio,
son el bean y el componente de acceso a datos. El contenido del script en metalenguaje se puede ver en el siguiente ejemplo.
<?php
/**
* @name: #=clase.nbclase#
* @creation date: (#=general.fhcreacion#)
* Descripcin:
* #=clase.commclase#
* @author: #=general.nbprogramador#
* @company: #=proyecto.nbempresa#
**/
class #=clase.nbclase# {
#PARA CADA variable EN clase.clavariables#
#SI variable.tipo ESIGUALA String#
108
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
109
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
110
<?php
require_once("../comun/Criterio.php");
require_once("../util/Utilerias.php");
require_once("../util/DBConnect.php");
/**
* @name: #=proyecto.dbclase.nombre#
* Descripcion:
* #=proyecto.dbclase.comentario#
* @creation date: (#=general.fhcreacion#)
* @author #=general.nbprogramador#
* @conpany: #=proyecto.nbempresa#
*/
class #=proyecto.dbclase.nombre# {
var $resultado = null;
var $odatabase = null;
/**
* CONSTRUCTOR
*/
function #=proyecto.dbclase.nombre#() {
$this->odatabase = new DBConnect();
$this->odatabase->connect();
}
/**
* FUNCION: Para referenciar el objeto dbconnect
*/
function getdatabase() {
return $this->odatabase;
}
/////////////////////////////////////////////////////////////////////////
//
CODIGO SELECT
//////////////////////////////////////////////////////////////////////////
#PARA CADA clase EN beans#
#SI clase.selectone ESIGUALA Si #
/**
* PROCEDIMIENTO: Procedimiento para seleccionar un registro de la tabla:
111
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
* #=aminuscula(clase.tabla.nombre)#
#PARA CADA campo EN clase.tabla.campos DONDE campo.llave ESIGUALA Si #
* @param $p#=campo.variable# - #=campo.comentario#
#FIN PARA CADA#
* @return $resultado
*/
function get#=clase.nombre#(#_#
#PARA CADA campo EN clase.tabla.campos DONDE campo.llave ESIGUALA Si#
#SI campo.esultimo ESIGUALA Si#
$p#=campo.variable#) {
#Y SI NO#
$p#=campo.variable#, #_#
#FIN SI#
#FIN PARA CADA#
$sql = 'SELECT #_#
#PARA CADA campo EN clase.tabla.campos#
#=aminuscula(campo.nombre)##_#
#SI campo.esultimo ESIGUALA Si#
';
#Y SI NO#
, #_#
#FIN SI#
#FIN PARA CADA#
$sql.= ' FROM #=clase.tabla.nombre#';
$sql.= " WHERE #_#
#PARA CADA campo EN clase.tabla.campos DONDE campo.llave ESIGUALA Si#
#SI campo.esprimero ESIGUALA No#
$sql.= " AND #_#
#FIN SI#
#SI campo.tipo ESIGUALA String#
#=aminuscula(campo.nombre)#='".$p#=campo.variable#."'";
#Y SI NO#
#=aminuscula(campo.nombre)#=".$p#=campo.variable#."";
#FIN SI#
#FIN PARA CADA#
$resultado = $this->odatabase->select($sql);
return $resultado;
}
#FIN SI#
#SI clase.selectcriterio ESIGUALA Si#
/**
* PROCEDIMIENTO : consulta de algunos los registros de la tabla:
* #=aminuscula(clase.tabla.nombre)# en base a un criterio
112
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
113
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
114
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
115
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
116
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
117
<?php
/**
* @name: Aula
* @creation date: (30-Nov-2011)
* Descripcin:
* Clase que tiene la informacin relativa a cada aula virtual
* @author:
* @conpany:
**/
class Aula {
var $scdinstitucion = '';
var $scdaula = '';
/**
* CONSTRUCTOR
*/
function Aula() { }
/**
* PROPIEDAD: Clave de la institucin a la que pertenece el portal
* @return valor de la propiedad
*/
function getcdinstitucion() {
return $this->scdinstitucion;
}
/**
* PROPIEDAD: Clave de la institucin a la que pertenece el portal
* @param $val - nuevo valor
*/
function setcdinstitucion($val) {
118
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
$this->scdinstitucion = $val;
}
/**
* PROPIEDAD: Clave del aula virtual
* @return valor de la propiedad
*/
function getcdaula() {
return $this->scdaula;
}
/**
* PROPIEDAD: Clave del aula virtual
* @param $val - nuevo valor
*/
function setcdaula($val) {
$this->scdaula = $val;
}
/**
* PROCEDIMIENTO para determina si los objetos tienen la misma llave
* @param $obj - objeto
*/
function hasamekey($obj) {
if($this->getcdinstitucion()==$obj->getcdinstitucion())
if($this->getcdaula()==$obj->getcdaula())
return true;
return false;
}
} /* fin clase [Aula] */
?>
119
<general>
<nbcomponente>addAula</nbcomponente>
<extcgi>.php</extcgi>
<cdproyecto>000005</cdproyecto>
<nbproyecto>CENESVIR</nbproyecto>
<nbempresa>HANYGEN SOFTWARE S.A. DE C.V.</nbempresa>
<nbcliente>CENTRO DE LENGUAS EXTRANJERAS</nbcliente>
</general>
<pantalla>
<cdproyecto>000005</cdproyecto>
<cdpantalla>000001</cdpantalla>
<nbimagefile>C:\Users\RUBEN\Google Drive\tesis
final\prototipo\images\addaula.jpg</nbimagefile>
<txcomment>Comentario por default</txcomment>
<txobjetivo>Pantalla para dar de alta una nueva aula virtual</txobjetivo>
<cdanalista>000000</cdanalista>
<nbanalista></nbanalista>
<cdprogramador>000000</cdprogramador>
<nbprogramador></nbprogramador>
<cdcodigo>PN000000</cdcodigo>
<stsincronia>SY</stsincronia>
<nbhtmlforma>frmaula</nbhtmlforma>
<nbcomponente>addAula</nbcomponente>
<nbhtmlfile>C:\Users\RUBEN\Google Drive\tesis
final\prototipo\addAula.html</nbhtmlfile>
<arreglos></arreglos>
<campos>
120
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
<campo>
<cdproyecto>000005</cdproyecto>
<cdpantalla>000001</cdpantalla>
<txcomment>Clave para ingresar nueva aula</txcomment>
<cdcampo>000001</cdcampo>
<tpcampo>000001</tpcampo>
<tpinoutput>IN</tpinoutput>
<nudecimales>0</nudecimales>
<nulongitud>5</nulongitud>
<cdarreglo></cdarreglo>
<nbcampo>Clave</nbcampo>
El proceso de generacin de cdigo, manipula el cdigo HTML para integrarlo con las
interfaces de las clases, integra validaciones de captura y asocia cada campo con una
interfaz. El resultado se puede ver en el Ejemplo 6.
Ejemplo 6: Componente resultante FRONT-END.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
<?php
require_once("BIZAdmin.php");
require_once("Aula.php");
require_once("Asignatura.php");
/**
* Programa: addAula.php
* Descripcin:
* Comentario por default
* Autor:
**/
$odb = new DBConnect();
$odb->connect();
$conn = $odb->getconexion();
obusBIZAdmin = new BIZAdmin();
$mensaje = "";
iresultado = obusBIZAdmin->addAula(oadd);
?>
<html>
<body>
<form name="frmaula" method="post">
<script language="javascript">
var form = document.frmaula;
var expregular = /^\d+$/
var expregular1 = /^\d+\.\d+$/
var expregular2 = /^\.\d+$/
121
122
69.
70.
71.
72.
73.
74.
75.
<tr>
<td colspan="4"><b>DATOS DEL AULA VIRTUAL</b></td>
</tr>
<tr class="even">
<td width="5%"> </td>
<td>Clave: </td>
<td class="grey"><input type="text" name="txtclave" id="txtclave" value="" class="inputshort" disabled / maxlength5"> * automática </td>
76. </tr>
77. <tr class="even">
78. <td width="5%"> </td>
79. <td>Nombre: </td>
80. <td><input type="text" name="txtnombre" id="txtnombre" value="" class="input-big"
maxlength="60" /></td>
81. <td width="5%"> </td>
82. </tr>
83. <tr class="even">
84. <td width="5%"> </td>
85. <td>Profesor: </td>
86. <td>
87. <select name="cboinstructor" id="cboinstructor" class="small">
88. </select>
89. </td>
90. </tr>
91. <tr class="even">
92. <td width="5%"> </td>
93. <td>Asignatura: </td>
94. <td>
95. <select name="cboasignatura" id="cboasignatura" class="small">
96. </select>
97. </td>
98. </tr>
99. <tr class="even">
100. <td width="5%"> </td>
101. <td>Código de activación: </td>
102. <td><input type="text" name="txtcdactivacion" id="txtcdactivacion" value=" class="inputshort" maxlength="10" /></td>
103. </tr>
104. <tr class="even">
105. <td width="5%"> </td>
106. <td valign="top">Comentario: </td>
107. <td class="grey"><textarea name="txcomment" id="txcomment" class="input-big">
108. </textarea> max.256</td>
109. <td width="5%"> </td>
110. </tr>
123
111. </tbody>
112. </table>
113. <br />
114. <div align="center">
115. <input type="button" id="btnaddAula" name="btnaddAula" value=" Agregar "
class="hanybutton" onclick="javascript:agregar();" />
116. <input type="button" id="btnClose" name="btnClose" value=" Cerrar "
class="hanybutton" onclick="javascript:cerrar();" />
117. </div>
118. </form>
119. </body>
120. </html>
121. <?php
122. $odb->close_mysql();
123. ?>
124
CAPTULO V
CONCLUSIONES
125
Conclusiones
En la presente tesis se dise, implement y valid experimentalmente una herramienta
de soporte para el desarrollo semi-automatizado de sistemas de informacin. La
herramienta aproxima la construccin de una nueva aplicacin al generar una
implementacin intermedia, la cual deber ser refinada para obtener un sistema
totalmente funcional que cumpla con todos los requerimientos del usuario.
El objetivo de la herramienta propuesta es soportar el establecimiento de una fbrica de
software, que ayude a reducir los tiempos necesarios para el desarrollo de productos, y
reduzca la posibilidad de fallas por medio de la reutilizacin de cdigo altamente
probado. Adicionalmente, con cada componente de software, tambin se genera su
documentacin correspondiente, lo que permite que un programador que retome el
cdigo pueda entender mejor su implementacin.
La herramienta propuesta permite la incorporacin de distintas tecnologas
implementacin, y por ello, se cre un lenguaje de especificacin con
correspondiente intrprete que es capaz de generar cdigo en diferentes lenguajes
programacin. El lenguaje propuesto, fue presentado por medio de su especificacin
notacin de Backus-Naur.
de
su
de
en
127
2. APLICACIN EN PROYECTOS
Es importante mencionar que la herramienta se ha utilizado en distintos sectores de la
economa, pero siempre en el desarrollo de sistemas de gestin o informticos. Todos
los proyectos variaron en la importancia y en el nmero de personas que trabajaron
ellos; tambin se encontraron diferentes condiciones de premura, de capacidad del
equipo de trabajo, estndares institucionales y tecnologas permitidas. En general, estas
condiciones fueron superadas y la herramienta mostr su utilidad en los procesos de
aproximacin de sistemas.
Las tecnologas y estndares que se utilizaron dependan bsicamente de las
especificaciones solicitadas por cada cliente. En el mejor de los casos, se contaba con
una configuracin semejante dentro de la plataforma, por lo que se proceda a ajustarla
para crear una nueva lnea de produccin ad-hoc al cliente. En algunos otros casos, se
tena que configurar completamente la arquitectura, los lenguajes, los estndares y las
plantillas (templates) de la documentacin.
La herramienta permite la configuracin de diversas arquitecturas por medio de una
configuracin de la variabilidad; con lo que es posible generar aplicaciones en
frameworks como Execution Service, Struts, Spring y JSF. La diversidad de los
lenguajes de programacin para generar el cdigo de cada componente, se logra
utilizando el lenguaje de programacin de dominio especfico. El lenguaje permite
definir el cdigo fijo y el cdigo variable de cada componente para de este modo
generar componentes en lenguajes como Visual Basic, Java, PHP, etc. En el contenido
de cada componente, es posible encontrar cdigo para el manejo de dispositivos o
servicios externos, las particularidades requeridas tambin son logradas usando el
lenguaje de dominio especfico. Ver figura 64.
128
NAVISTAR MXICO
BBVA BANCOMER
129
ADMINISTRACIN DE F ONDOS
Sistema para administrar a los trabajadores de fondos de previsin social en
empresas que contratan a BBVA Bancomer. El sistema se construy en Java con el
patrn MVC y se ejecuta en el servidor Websphere con una base de datos DB2 y un
Mainframe IBM, participaron 18 personas.
ADQUIRA MOVISTAR
HSBC
SEP
INFONAVIT
HANYGEN SOFTWARE
131
MULTI-AGENDA WEB
Sistema para administrar actividades. El sistema se construy en PHP con un
modelo MVC y una base de datos MySQL.
FARMACIAS SIMILARES
3. TRABAJOS FUTUROS
Hasta ahora, la investigacin se ha centrado en disear una herramienta que permita
definir una lnea de produccin de software. Sin embargo, el rea de ingeniera de
software con sus tecnologas, seguir innovando en las diferentes vertientes de
metodologas, administracin, lenguajes, dispositivos electrnicos, etc. Cada avance en
las diversas reas de la ingeniera de software, permitir profundizar o ampliar el
paradigma de lnea de producto de software.
132
133
135
4. REFERENCIAS
[BARRY 2001]
Barry Boehm. 2001. The Spiral Model as a Tool for Evolutionary Acquisition. pp.5
[CLEMENTS
NORTHROP
2001]
[COLBURN
2008]
Alex Colburn, Jonathan Hsieh, Matthew Kehrt, Aaron Kimball. 2008. There is no
Software Engineering Crisis
[OSCAR SALVA
2010]
[ELIZABETH KEN
J EREMY 2011]
[HARSU 2002]
[HEYMANS
TRIGAUX 2003]
[HUNT 1999]
[IEEE 1990]
[IEEE 1998]
[KLAUS GUNTER
FRANK 2005]
Klaus Pohl, Gnter Bckle, Frank van der Linden. 2005. Software Product Line
Engineering - Foundations, Principles, and Techniques.
[FRANK KLAUS
EELCO 2007]
Frank van der Linden, Klaus Schmid, Eelco Rommes. 2007. Software Product Lines in
Action
[KRZYSZTOF
1998]
[KRUEGER
CLEMENTS
2013]
Charles W. Krueger, Paul Clements. 2013. Gears Product Line Engineering Tool and
Lifecycle Framework - Product Overview
[L EWIS 1994]
[MENDONCA
BRANCO COWAN
2009]
[NORTHROP
2002]
136
[OUALI KRAIEM
GHEZALA 2012]
Sami Ouali, Naoufel Kraiem, Henda Ben Ghezala. 2012. Intentional Software Product
Line
[PAIS 2012]
[PARNAS 1976]
[PRESSMAN
2001]
[SEI 2013]
[SENNETT 2008]
[SPLC 2013]
[WAYT 1994]
[WIKI 2013]
Wikipedia. 2013. Waterfall Model. Extrado el 21 de Agosto del 2013 desde la fuente.
http://en.wikipedia.org/wiki/Waterfall_model
[ZAVE 1997]
137
5. ACRNIMOS
BACK-END
Trmino del diseo de software que refiere a la parte que procesa los
requerimiento de la interfaz del usuario.
CGI
DDL
DOD
DSL
FRONT-END
GP
IDE
LENCOS
MVC
RAD
SOA
SPL
SQL
138
STAND ALONE
139
APNDICES
140
Apndice A .
<instrucciones> ::= [<instruccin> | <lnea-impresin>] {<instruccin> | <lnea-impresin>}
<instruccin> ::= # [<impresin-valor> | <instruccin-ciclo> | <instruccin-si-condicin> |
<instruccin-si-hay> | <instruccin-asignacin> | <instruccin-incremento> |
<instruccin-usando>] #
<impresin-valor> ::= = [<expresin>]
<instruccin-ciclo> ::= PARA CADA <identificador> EN <contexto-id> { DONDE
<identificador> [ESIGUALA | ESDIFERENTEA] <constante>} [<instrucciones>]
FIN PARA CADA
< instruccin-si-condicin> ::= SI <contexto-id> [ESIGUALA|ESDIFERENTEA|ESTAEN]
[<constante>| <identificador>] [<instrucciones>] FIN SI
< instruccin-si-hay> ::= SI HAY <identificador> EN <contexto-id> { DONDE
<identificador> [ESIGUALA | ESDIFERENTEA] <constante>} [<instrucciones>]
FIN SI HAY
< instruccin-asignacin> ::= ASIGNA <constante> AVARIABLE <contexto-id>
< instruccin-incremento> ::= INCREMENTA <constante> AVARIABLE <contexto-id>
< instruccin-usando> ::= USANDO <identificador> EN < contexto-id> POSICION
<nmero> [<instrucciones>] FIN USANDO
< expresin> ::= [<contexto-id> | <funcin> ( <contexto-id> { , < nmero> }
{ , < nmero> } ) ]
<contexto-id> ::= <contexto>{.<contexto>}.<identificador>
<contexto> ::= {<identificador>}
<constante> ::= [<letra> | <digito>] {<letra> | <digito>}
<funcin> ::= [<letra>] { <letra> | <digito> | "_" | "-" }
<identificador> ::= [<letra>] { <letra> | <digito> | "_" | "-" }
<letra> ::= <minscula> | <mayscula>
<nmero> ::= <digito> | <nmero> <digito>
<minscula> ::= "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" |"j" | "k" | "l" | "m" | "n" | "n"
| "o" | p" | "q" |"r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z"
<mayscula> ::= "A" | "B" | "C" | "D" | "E" | "f" | "G" | "H" | "I" |"J" | "K" | "L" | "M" | "N"
| "N" | "O" "P" | "Q" |"R" | "S" | "T" | "U" | "V" | "W" | "X" | "y" | "Z"
<digito> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
141
Apndice B.
142
<valor>(?<campo>\S+)</valor>
</expresion>
<expresion>
<clave>05</clave>
<nombre>campos</nombre>
<valor>(?<llave>\S+)</valor>
</expresion>
<expresion>
<clave>06</clave>
<nombre>nonull</nombre>
<valor>NOT NULL</valor>
</expresion>
<expresion>
<clave>07</clave>
<nombre>reference</nombre>
<valor>(ALTER)\s+(TABLE)\s+(?<tabla>\S+)\s+(ADD)\s*(FOREIGN)\s+(KEY)\s+\((?<pa
rams>([\w+,?\s*]+))\)\s+(REFERENCES)\s+(?<referencia>\w+)</valor>
</expresion>
</exp-regulares>
</estilo>
143
Apndice C.
144
<clave>04</clave>
<nombre>negocio</nombre>
<descripcion>Meta-cdigo de clase de negocio</descripcion>
<archivo>negocio.met</archivo>
<extension>.php</extension>
</codigo>
</model>
<librerias>
<libreria>
<clave>01</clave>
<nombre>dbconexion</nombre>
<descripcion>Clase para conexin a base de datos</descripcion>
<archivo>DBConnect.php</archivo>
<clase>DBConnect</clase>
<extension>.php</extension>
</libreria>
</librerias>
<comentarios>
<comentario>
<clave>01</clave>
<nombre>metodo</nombre>
<tipo>no_inicia_con</tipo>
<texto_inicio>@</texto_inicio>
</comentario>
<comentario>
<clave>02</clave>
<nombre>clase</nombre>
<tipo>no_inicia_con</tipo>
<texto_inicio>@</texto_inicio>
</comentario>
<comentario>
<clave>03</clave>
<nombre>pseudocodigo</nombre>
<tipo>inicia_con</tipo>
<texto_inicio>'\sPASO\sw+:</texto_inicio>
</comentario>
</comentarios>
<parametros>
<parametro>
<clave>01</clave>
<nombre>caracter_comentario_mismalinea</nombre>
<valor>//</valor>
</parametro>
<parametro>
<clave>02</clave>
145
<nombre>chars_aeliminar_encomentario</nombre>
<valor>*/</valor>
</parametro>
<parametro>
<clave>03</clave>
<nombre>extension_deprogramas</nombre>
<valor>.php</valor>
</parametro>
<parametro>
<clave>04</clave>
<nombre>apuntador_clase</nombre>
<valor>(class)\s(?<name>\w+)</valor>
</parametro>
<parametro>
<clave>05</clave>
<nombre>apuntador_comentario_clase</nombre>
<valor>(/\*\*)\s*</valor>
</parametro>
<parametro>
<clave>06</clave>
<nombre>apuntador_comentario_metodo</nombre>
<valor>(/\*\*)\s*</valor>
</parametro>
<parametro>
<clave>07</clave>
<nombre>apuntador_procedimiento</nombre>
<valor>(function)\s+(?<name>\w+)</valor>
</parametro>
<parametro>
<clave>08</clave>
<nombre>apuntador_declaracion_variable</nombre>
<valor>(var)\s+\$(?<nombre>\w+)</valor>
</parametro>
<parametro>
<clave>09</clave>
<nombre>directorio_beans</nombre>
<valor>/beans</valor>
</parametro>
<parametro>
<clave>10</clave>
<nombre>directorio_datos</nombre>
<valor>/datos</valor>
</parametro>
<parametro>
<clave>11</clave>
146
<nombre>directorio_negocio</nombre>
<valor>/negocio</valor>
</parametro>
<parametro>
<clave>12</clave>
<nombre>directorio_librerias</nombre>
<valor>/librerias</valor>
</parametro>
<parametro>
<clave>13</clave>
<nombre>ejemplo_declaracion</nombre>
<valor>
var $nombre = ""; // nombre de la persona
var $apellido = ""; // apellido de la persona
var $edad = 0;
// edad de la persona
var $sexo = "";
// sexo de la persona
</valor>
</parametro>
<parametro>
<clave>14</clave>
<nombre>expresion_metodo_pulico</nombre>
<valor>(function)\s+(?<name>\w+)</valor>
</parametro>
</parametros>
</code>
147
Apndice D.
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164