Beruflich Dokumente
Kultur Dokumente
U.L.P.G.C.
INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS
PROYECTO FIN DE CARRERA
Para sitas y sitos…
AGRADECIMIENTOS
Ha sido de inestimable ayuda para este proyecto las colaboraciones técnicas de mis amigos y
compañeros de profesión Emilio y Yeray. Asimismo han mostrado una gran predisposición y
cooperación la F.E.D.A.C. (Fundación para la Etnografía y el Desarrollo de la Artesanía
Canaria) y el Servicio de Patrimonio Histórico del Cabildo de Gran Canaria sin cuyo apoyo
no habría sido posible este proyecto.
ÍNDICE
PRÓLOGO..............................................................................................................................12
1. Objetivos del proyecto.........................................................................................................14
1.1. Objetivos del trabajo.....................................................................................................14
1.2. Objetivos académicos...................................................................................................14
2. Material y medios necesarios...............................................................................................15
2.1. Medios materiales.........................................................................................................15
2.2. Software........................................................................................................................15
3. Contenido de la memoria.....................................................................................................16
CONTEXTO JURÍDICO-ADMINISTRATIVO....................................................................18
4. Introducción.........................................................................................................................20
4.1. ¿Qué es patrimonio cultural?........................................................................................20
4.2. Medidas para la conservación.......................................................................................20
4.3. Medidas legislativas. Evolución histórica.....................................................................21
4.4. Ley 16/1985, de 25 de junio, del Patrimonio Histórico Español..................................23
4.4.1. Bienes que integran el patrimonio histórico español.............................................24
4.4.2. El Registro de Bienes de Interés Cultural..............................................................26
4.4.3. El Inventario General.............................................................................................27
4.5. Ley 4/1999, de 15 de marzo, de Patrimonio Histórico de Canarias (B.O.C. nº 36, de
24/03/99)...............................................................................................................................28
4.5.1. Objeto y finalidad...................................................................................................29
4.5.2. Constitución del patrimonio histórico de Canarias................................................29
4.5.3. Clasificación...........................................................................................................29
4.5.4. Competencias en la administración del patrimonio histórico................................30
4.5.5. Protección del Patrimonio Histórico de Canarias..................................................32
4.5.6. Registro Canario de Bienes de Interés Cultural.....................................................33
4.5.7. Inventario de Bienes Muebles................................................................................33
CONTEXTO TECNOLÓGICO..............................................................................................34
5. Ingeniería del software.........................................................................................................36
5.1. Modelo lineal secuencial...............................................................................................36
5.1.1. Análisis de los requisitos de usuario y del software...............................................37
5.1.2. Diseño....................................................................................................................37
5.1.3. Generación de código.............................................................................................37
5.1.4. Pruebas...................................................................................................................38
5.1.5. Mantenimiento.......................................................................................................38
5.2. Modelo de construcción de prototipos..........................................................................38
5.3. El modelo incremental..................................................................................................38
5.4. Ingeniería web...............................................................................................................39
APLICACIÓN WEB...............................................................................................................41
6. Sistema de Gestión del Patrimonio Cultural........................................................................43
6.1. Contexto jurídico-administrativo..................................................................................43
6.2. Contexto tecnológico....................................................................................................44
7. Antecedentes. Análisis del sistema actual............................................................................45
7.1. Inventario Insular Etnográfico......................................................................................45
7.2. Inventario Insular Arqueológico y Arquitectónico........................................................46
8. Objetivos..............................................................................................................................49
9. Planificación.........................................................................................................................51
9.1. Planificación temporal..................................................................................................51
10. Investigación......................................................................................................................53
10.1. Investigación del dominio del problema.....................................................................53
10.2. Investigación técnica...................................................................................................53
11. Análisis...............................................................................................................................55
11.1. Definición del problema..............................................................................................55
11.2. Análisis de requisitos de usuario.................................................................................55
11.3. Documento de requisitos de usuario...........................................................................55
11.4. Análisis de requisitos de software...............................................................................56
11.5. Documento de requisitos de software.........................................................................56
12. Diseño................................................................................................................................57
12.1. Estudio preliminar.......................................................................................................57
12.1.1. Tecnologías web...................................................................................................58
12.1.2. Framework para aplicaciones web......................................................................60
12.1.3. Arquitectura MVC................................................................................................61
12.1.4. STRUTS, phpMVC y sQeletor, frameworks.......................................................63
12.1.5. Motores de plantillas............................................................................................67
12.1.6. Motores de persistencia........................................................................................67
12.2. Diseño de la arquitectura.............................................................................................71
12.2.1. PC.........................................................................................................................74
12.2.2. Arquitectura distribuida........................................................................................88
12.2.3. phpMVC y sQeletor.............................................................................................95
12.2.4. PerenQen..............................................................................................................98
13. Justificación y evaluación de las herramientas utilizadas................................................103
14. Pruebas y resultados.........................................................................................................105
14.1. Páginas estáticas........................................................................................................107
14.2. Páginas dinámicas.....................................................................................................109
15. Documentación.................................................................................................................117
16. Implantación del sistema..................................................................................................119
16.1. Requisitos para la instalación....................................................................................119
16.2. Instalación.................................................................................................................119
16.3. Implantación..............................................................................................................121
16.4. Mantenimiento..........................................................................................................121
16.5. Costes de explotación................................................................................................121
17. Conclusiones....................................................................................................................123
18. Trabajo futuro...................................................................................................................125
19. Bibliografía y referencias.................................................................................................127
I. ANEXO. Modelo de datos de inventarios insulares del sistema actual..............................129
I.1. Ficha de bien etnográfico.............................................................................................129
I.2. Ficha de bien arqueológico..........................................................................................132
I.3. Ficha de bien arquitectónico........................................................................................135
II. ANEXO. Documento de especificaciones de la aplicación..............................................138
II.1. Conceptos...................................................................................................................138
II.2. Tipos de usuario (grupos o roles)...............................................................................138
II.3. Tipos de privilegios....................................................................................................138
II.4. Actividades.................................................................................................................138
II.4.1. PC_CONSULTOR_MINIMO.............................................................................139
II.4.2. PC_CONSULTOR...............................................................................................139
II.4.3. PC_EDITOR........................................................................................................139
II.4.4. PC_SUPERVISOR..............................................................................................139
II.4.5. PC_ADMINISTRADOR.....................................................................................139
III. ANEXO. Modelo del software.........................................................................................140
III.1. Diagramas de paquetes..............................................................................................140
III.2. Diagramas de clases del software.............................................................................141
III.2.1. PC.......................................................................................................................141
III.2.2. PerenQen............................................................................................................152
III.3. Diagramas se secuencia............................................................................................153
III.3.1. PC.......................................................................................................................153
III.3.2. phpMVC.............................................................................................................155
III.3.3. PerenQen............................................................................................................166
IV. ANEXO. Frameworks para aplicaciones web..................................................................168
IV.1. phpMVC....................................................................................................................168
IV.2. Phrame.......................................................................................................................168
IV.3. WACT........................................................................................................................168
IV.4. eocene........................................................................................................................169
IV.5. Ambibalence..............................................................................................................169
IV.6. Krysalis......................................................................................................................169
IV.7. Ismo...........................................................................................................................169
IV.8. BinaryCloud..............................................................................................................171
IV.9. Mojavi.......................................................................................................................171
IV.10. Horde.......................................................................................................................171
IV.11. PHITE......................................................................................................................171
IV.12. Blueshoes.................................................................................................................172
IV.13. Cake PHP................................................................................................................172
IV.14. phpwebtk.................................................................................................................172
IV.15. studs.........................................................................................................................172
V. ANEXO. Motores de persistencia para PHP.....................................................................173
V.1. Metastorage.................................................................................................................173
V.2. Propel..........................................................................................................................174
V.3. DA_Data_object.........................................................................................................176
V.4. POG............................................................................................................................177
V.5. Cake PHP....................................................................................................................178
PRÓLOGO
La esencia del hombre es la necesidad de crear. Esta es una de las interpretaciones de la cita
de Hölderlin. "El hombre es un apetito perpetuo de ser otro" (Octavio Paz), "de inventar
posibilidades en la realidad o incluso de crear realidades" (José Antonio Marina).
Dentro de este contexto se desarrolla el presente proyecto con la intención de crear una
plataforma de unión, no unificación, para la conservación del patrimonio cultural, que es la
huella de la actividad creadora del hombre, y por lo tanto de su esencia, a lo largo de la
historia.
Desarrollar una aplicación para la gestión de los inventarios de bienes inmuebles de carácter
etnográfico, arqueológico y arquitectónico que permita:
• Contener y gestionar los inventarios insulares de las siete islas del archipiélago
canario.
1.2.Objetivos académicos
Con el desarrollo de este proyecto fin de carrera el alumno cubrirá los siguientes objetivos de
formación:
2.1.Medios materiales
Fue necesario para el desarrollo de este proyecto un ordenador con las siguientes
características:
2.2.Software
En la segunda parte se explica el proceso de desarrollo del software desde el punto de vista
ingenieril, orientado al tipo de tecnología y de aplicación que se va a construir.
En la tercera y última parte se detallan todas las fases de desarrollo del producto, y se
describen pormenorizadamente las características del sistema. Esta parte está estructurada
intencionadamente en la secuencia en que se desarrolla la producción del software, para de
esta manera remarcar los pasos necesarios para la creación de una aplicación web.
PARTE I
CONTEXTO JURÍDICO-ADMINISTRATIVO
4. Introducción
Como vemos, de esta definición surge rápidamente una cuestión sobre cuál será el
criterio a usar para determinar el interés de un bien. A lo largo del siglo han ido aumentando el
número de objetos que se incluyen en este conjunto desde los más evidentes como edificios
monumentales o cuadros de gran valor hasta objetos de interés paleontológico u otros objetos
de uso común como muebles o herramientas de trabajo.
Medidas legislativas: la actual ley contempla una serie de sanciones contra las exportaciones
ilegales, daños a bienes, etc.
[1263] En el código de las 7 Partidas, código legislativo creado por Alfonso X para lograr la
unidad legislativa de sus reinos, se establece que no se deben hacer casas ni edificios cerca de
los muros de las villas y castillos, ni hacer casas ni torres ni otros edificios cerca de las
iglesias.
Artículo 46.2 "El Patrimonio Nacional es una unidad indivisible, cuyos bienes serán
inalienables e imprescribibles. Su régimen y administración serán objeto de una ley".
“El primer deber y preocupación ha de ser conservar, mantener y proteger esos bienes.
El segundo objetivo de la ley es el acrecentamiento.
El tercer objetivo de la ley es la transmisión a las generaciones futuras del Patrimonio
Histórico Español.”
Existen otras leyes regionales que afectan al patrimonio cultural como son la LPHC99. Para
el desarrollo de este proyecto se ha empleado básicamente la del 85 de ámbito nacional para
generar un sistema genérico válido para cualquier territorio nacional. No obstante, debido a la
localización de realización del proyecto y a que las principales fuentes para el análisis de
requisitos del sistema han sido de la Comunidad Autónoma Canaria, y más exactamente de
Gran Canaria, se ha añadido un apartado que hace referencia a la LPHC99, para explicar con
un poco más de detalle las peculiaridades de las gestión del patrimonio en Canarias.
De la LPH85 nos interesan principalmente dos cosas de cara a este proyecto. Por un lado el
tipo de bienes que integran el patrimonio histórico español y por otro lado las herramientas
administrativas utilizadas para su gestión.
4.4.1.1.Bienes inmuebles
De interés cultural: Ya sean declarados por ministerio de la Ley o declarados por real
Decreto de forma individualizada.
Clases: Monumento, Jardín histórico, conjunto histórico, sitio histórico (paraje natural) y
zona arqueológica.
4.4.1.2.Bienes muebles
De interés cultural: Declarados por ministerio de la Ley o declarado por Decreto de forma
individualizada.
La ley añade varios títulos más específicos para los siguientes tipos de bienes:
4.4.1.3.Patrimonio arqueológico
"Lo constituyen los bienes muebles e inmuebles, de carácter histórico susceptibles de ser
estudiados con metodología arqueológica, hayan sido o no extraídos y tanto si se encuentran
en la superficie o en el subsuelo, en el mar territorial o en la plataforma continental. Forma
parte, asimismo, de este patrimonio, los elementos geológicos y paleontológicos relacionados
con la historia del hombre y sus orígenes y antecedentes."
4.4.1.4.Patrimonio etnográfico
"Lo integran los bienes muebles e inmuebles y los conocimientos y actividades que son o han
sido expresión relevante de la cultura tradicional del pueblo español en sus aspectos
materiales, sociales o espirituales."
Bienes intangibles: "Se considera que tienen valor etnográfico y gozarán de protección
administrativa aquellos conocimientos o actividades que procedan de modelos o técnicas
tradicionales utilizados por una determinada comunidad. Cuando se trate de conocimientos o
actividades que se hallen en previsible peligro de desaparecer, la Administración competente
adoptará las medidas oportunas conducentes al estudio y documentación científicos de estos
bienes."
"Son museos las instituciones de carácter permanente que adquieren, conservan, investigan,
comunican y exhiben para fines de estudio, educación y contemplación conjuntos y
colecciones de valor histórico, artístico, científico y técnico o de cualquier otra naturaleza
cultural."
4.4.2.El Registro de Bienes de Interés Cultural
4.4.2.1.Objeto
El Registro General de Bienes de Interés Cultural tiene por objeto la anotación e inscripción
de los datos que afecten a la identificación y localización de los bienes integrantes del
Patrimonio Histórico Español declarados de interés cultural. A dicho registro se notificará,
además, la incoación de todo expediente que se inicie para declarar un bien de interés cultural.
Dicha notificación causará una anotación preventiva hasta que recaiga resolución definitiva en
el expediente. Cada bien que se inscriba tendrá un código de identificación.
4.4.2.2.Datos inscribibles
En la relación con cada bien declarado de interés cultural se deberá hacer constar en el
registro los siguientes extremos:
4.4.2.3.Privacidad
El registro es semipúblico. El artículo 22.1 del Real Decreto 111/1986, de 10 de enero, de
desarrollo parcial de la Ley 16/1985, de 25 de junio, del Patrimonio Histórico Español (en
adelante RDPHE86), dice al respecto: "será preciso el consentimiento expreso del titular
para la consulta pública de los datos contenidos en el Registro General sobre:
4.4.3.1.Objeto
"El Inventario General comprenderá los bienes muebles integrantes del Patrimonio
Histórico
Español, no declarados de interés cultural, pero que tengan una singular relevancia por su
notable valor histórico, artístico, científico, técnico o cultural. El precepto alude sólo a los
bienes muebles, por lo que los inmuebles no tienen acceso a este inventario. A él sólo
acceden aquellos bienes muebles del Patrimonio Histórico Español con ciertos valores
importantes, pero no lo suficiente para ser declarados bienes de interés cultural. Si son
declarados bienes de interés cultural acceden directamente al Registro de Bienes de Interés
Cultural; y si figurasen antes en El Inventario, causarán baja en éste al acceder al registro."
"Aquí ya es de detectar un diferente trato entre los bienes muebles y los inmuebles. Estos
últimos pueden ser declarados Bienes de Interés Cultural, pero no tienen acceso al
Inventario; este está reservado para los bienes muebles que, además, también pueden
adquirir la condición de Bien de Interés Cultural. No comprendemos la razón de que no
exista un Inventario de bienes inmuebles donde podrían acceder los que tuvieren valores
culturales pero no tan intensos como para ser declarados de interés cultural."
4.4.3.2.Datos inscribibles
"A cada bien que se inscriba se le asignará un código de identificación y en el Inventario
figurará:
• Un extracto de expediente de inclusión.
• La fecha de inclusión del bien en el Inventario General.
• Las transmisiones por actos inter vivos y mortis causa.
• Los traslados de los bienes.
• Los anticipos reintegrables que conceda la Administración para la conservación,
mantenimiento y custodia, a los propietarios, titulares de derechos reales o simples
poseedores."
4.4.3.3.Privacidad
"El inventario es semipúblico, ya que no se permitirá la consulta pública, sin el
consentimiento expreso del titular, de los datos relativos a:
• Situación jurídica.
• Localización.
• Valoración económica."
4.5.1.Objeto y finalidad
La LPHC99 "tiene por objeto regular el régimen jurídico de los bienes, actividades y demás
manifestaciones culturales que integran el patrimonio histórico de Canarias."
4.5.3.Clasificación
4.5.3.1.Bienes inmuebles
4.5.3.2.Bienes muebles
• Colección de Bienes Muebles: conjunto de bienes que sólo reúnen los valores
históricos para su declaración al ser considerados como una unidad.
• Bien Mueble: aquellos que de forma individual reúnen los valores históricos para su
declaración.
• "Declarar los bienes de interés cultural y llevar el registro de tales bienes, así como el
Inventario de Bienes Muebles."
4.5.4.4.Colaboración y coordinación
4.5.5.1.Disposición general
Lo bienes integrantes del patrimonio histórico canario se incluyen en alguno de los siguientes
instrumentos:
CONTEXTO TECNOLÓGICO
5. Ingeniería del software
El término Ingeniería se define en el diccionario de la Real Academia Española (www.rae.es)
como "1. f. Estudio y aplicación, por especialistas, de las diversas ramas de la tecnología.", y
la aplicación de la ingeniería al software es lo que conocemos como ingeniería del software.
La ingeniería del software comprende tres elementos: los métodos, las herramientas y un
proceso.
Lo métodos son las indicaciones de como construir técnicamente el software. Abarcan una
gran gama de tareas que incluyen análisis de requisitos, diseño, construcción de programas,
pruebas y mantenimiento. "Los métodos de la ingeniería del software dependen de un
conjunto de principios básicos que gobiernan cada área de la tecnología e incluyen
actividades de modelado y otras técnicas descriptivas."
Las herramientas son el soporte técnico (automático o semiautomático) para el desarrollo del
software. Existen herramientas explícitamente creadas para un entorno de ingeniería del
software. Son las llamadas herramientas CASE (Computer Aided Software Engineering,
ingeniería del software asistida por ordenador).
El proceso es un marco de trabajo de las tareas que se requieren para construir software de
alta calidad. "Define una secuencia en la que se aplican los métodos, las entregas que se
requieren, los controles que ayudan a asegurar la calidad y coordinar los cambios, y las
directrices que ayudan a los gestores a evaluar el progreso." Para el proceso de este proyecto
se optó por el modelo incremental de proceso de software. El modelo incremental está basado
en una suma del modelo secuencial o en cascada más el modelo de construcción de
prototipos.
Los requisitos se pueden clasificar de acuerdo con el modelo FURPS+ en los siguientes tipos:
• Funcional (Functional)
• Facilidad de uso (Usability)
• Fiabilidad (Reliability)
• Rendimiento (Performance)
• Soporte (Supportability)
• Implementación
• Interfaz
• Operaciones
• Empaquetamiento
• Legales
5.1.2.Diseño
El proceso de diseño se centra en crear una solución conceptual que satisfaga los requisitos.
Se generan un modelo conceptual del dominio del problema y un modelo de clases.
5.1.3.Generación de código
El diseño se traduce en una implementación concreta de la solución directamente operacional
en una máquina.
5.1.4.Pruebas
Cuando se finaliza el desarrollo del código se procede a la comprobación de su
funcionamiento.
5.1.5.Mantenimiento
Una vez terminado el software, este permanece en revisión de posibles errores, o es posible
que sean necesarias adaptaciones a nuevas circunstancias, que sean diferentes a las que había
al finalizar la implantación del producto.
Incremento 2
Incremento 3
Tiempo
Se ha elegido este modelo de desarrollo para el proyecto porque se adapta a las características
del mismo por los siguientes motivos:
• El proyecto pretende abarcar una primera fase o modulo del sistema global que
resultaría de una informatización de todos los procesos, actividades y entidades que
intervienen en la gestión del patrimonio histórico, según la Ley y la situación
establecida en la práctica. En concreto se centrará en la creación de una aplicación
para la gestión de los inventarios insulares que se describen en el apartado de Sistema
de gestión del Patrimonio Cultural.
5.4.Ingeniería web
Internet comenzó siendo un mero soporte de intercambio de información. A través de la red se
compartían documentos, imágenes, etc. Poco a poco fue aumentando el número de servicios
que ofrecía y el número de actividades y procesos que se desarrollaban en su ámbito.
Podríamos decir que en cuanto a las entidades corporativas ha habido un proceso incremental
de "virtualización" de las empresas. Se ha pasado de una situación en la cual Internet
constituía un almacén donde volcar la información a ser una herramienta de recolección de
datos, y finalmente a constituirse comoElelmodelo
soporteincremental
total de los sistemas de información de las
empresas.
Si vemos una empresa como un sistema de información podríamos decir que se trata de un
sistema que recibe una información, la procesa y genera una información como resultado.
Empresa/Sistema de información
APLICACIÓN WEB
6. Sistema de Gestión del Patrimonio Cultural
Este proyecto se centra en la creación de una herramienta informática para la gestión de los
inventarios insulares, concretamente para los bienes inmuebles de carácter etnográfico,
arqueológico y arquitectónico.
6.1.Contexto jurídico-administrativo
En este apartado se resumen los distintos instrumentos administrativos que contemplan las
leyes de patrimonio. A partir de este listado limitaremos el subconjunto de instrumentos que
se implementaron en este proyecto.
De ámbito nacional
Registro de Bienes de Interés Cultural Bienes de Interés Cultural
El Inventario General Bienes muebles con singular relevancia no declarados de
interés cultural
De ámbito autonómico (Canarias)
Registro Canario de Bienes Muebles Bienes de Interés Cultural
Inventario de Bienes Muebles Bienes muebles que ostenten especiales valores no
declarados de interés cultural
De ámbito insular
Inventarios insulares Bienes inmuebles Etnográficos
Arqueológicos
Arquitectónicos
(Este proyecto resuelve el problema
de la gestión de estos tres
inventarios)
Bienes muebles ...
Conocimientos y ...
actividades
tradicionales
De ámbito municipal
Catálogos arquitectónicos municipales
Cartas arqueológicas municipales
Cartas etnográficas municipales
Cartas paleontológicas municipales
6.2.Contexto tecnológico
Como se especifica en el título del proyecto, el sistema que se ha generado será implantado en
Internet en confrontación con la opción de generar una aplicación que se ejecute en modo
local. Es evidente el incremento en los últimos años del número de aplicaciones web pensadas
para funcionar en Internet, y son indudables sus ventajas en cuanto a accesibilidad universal.
Debido al carácter distribuido del sistema y a sus perspectivas de escalabilidad se optó por
diseñar un sistema web. Esta es la razón principal, no obstante se justificará esta opción en
otros apartados de forma más sistemática y técnica en base a los requerimientos, costes,
funcionalidades, etc.
En la actualidad el sistema de gestión de los inventarios esta soportado por bases de datos en
Access y en el caso del Inventario Insular de Inmuebles Etnográficos ha sido volcado a
Internet. Se estudiará con más detalles el sistema actual en el apartado de antecedentes.
7. Antecedentes. Análisis del sistema actual
El sistema actual que se ha analizado es el que mantiene el Cabildo de Gran Canaria en la
actualidad. Existen tres bases de datos locales implementadas en Microsoft Access, una para
cada tipo de patrimonio: etnográfico, arqueológico y arquitectónico.
• Existe un técnico responsable del mantenimiento de los datos de la carta. Este técnico
editor controla las fichas que se incluyen, las modificaciones, etc.
Se pueden realizar varias acciones en la base de datos local que está disponible en el punto de
información de la sede de la Fedac. Algunas de estas tareas son:
• Consulta a la tabla principal que contiene un listado de todos los bienes etnográficos.
• Consultas por campos.
• Consultas por tipologías y municipios.
• Consultas por zonas.
• Localización de las fichas en el mapa.
• Copias de seguridad.
• Impresión de informes.
• Etc.
• Utilizar un buscador que nos permite buscar por municipio, actividad y palabras clave.
• Acceder a una ficha directamente mediante su código.
• Ver un listado de los bienes consultados que incluye el número de la ficha, una imagen
reducida del bien, el nombre, toponimia, localidad y municipio.
• Ver los detalles de una ficha. Se accede a través del listado o mediante el acceso
directo a una ficha soportado por el buscador.
Para el análisis de este sistema se tuvo acceso al modelo de datos empleado por la base de
datos de la aplicación. Este modelo de datos se encuentra en uno de los anexos de la memoria.
Estas bases de datos son accesibles solo a personal administrativo. En este caso los principales
actores que intervienen son los siguientes:
• Un usuario editor por cada tipo de bien que se encarga del mantenimiento de los datos
de la base de datos.
• Un usuario administrador que puede modificar la estructura de las tablas de la base
de datos.
Para este proyecto solo se contemplará un subconjunto de acciones de las implementadas por
el sistema actual especificado en los objetivos y documentos de especificaciones. Se ha
incluido un anexo donde se encuentra el modelo detallado de datos usado por estas
aplicaciones.
8. Objetivos
En esta memoria del proyecto se hace referencia a tres sistemas de información: el sistema
actual, el nuevo sistema global y la aplicación web desarrollada en este proyecto.
Por un lado tenemos el sistema actual, que se usa para la gestión del patrimonio y que se
describió en apartados anteriores (antecedentes).
Por otro lado el nuevo sistema global sería el sistema que obtendríamos de un análisis de
todos los requisitos del sistema actual más otros requisitos derivados del análisis completo de
la gestión del patrimonio en general.
Por último está el sistema de gestión de inventarios insulares que es la parte del sistema
global en que se centra el proyecto, y que constituye el problema que pretendemos resolver.
En la siguiente tabla se muestra claramente cual es el objetivo del sistema que se creó en este
proyecto.
Sistema Objetivos
Por lo tanto el objetivo principal del proyecto es diseñar e implementar una aplicación web
para la gestión de los inventarios de bienes inmuebles de carácter etnográfico, arqueológico y
arquitectónico que permita:
• Contener y gestionar los inventarios insulares de las 7 islas del archipiélago canario.
• Consultar los inventarios por parte de cualquier usuario desde cualquier punto de
acceso a la web.
• Gestionar los inventarios (altas, bajas y modificaciones) desde cualquier punto de
acceso a la web.
9. Planificación
Una vez definidos los objetivos del proyecto es necesario establecer un plan de desarrollo
para minimizar el impacto de posibles imprevistos y garantizar la correcta ejecución del
mismo. El desarrollo del sistema estará enmarcado dentro de un proceso de ingeniería del
software. El modelo elegido ha sido una versión adaptada a este proyecto del modelo
incremental de Larman [LAR99].
9.1.Planificación temporal
Cada unas de la tareas a llevar a cabo durante el desarrollo requieren de una estimación
inicial temporal que nos ayudará en la organización y control del proceso. Estas estimaciones
nos servirán como medida de comprobación del estado de desarrollo del proyecto. Los
tiempos estimados fueron los siguientes:
También se amplió está información recogida con bibliografía sobre la gestión del patrimonio
cultural e información obtenida a través de Internet. En el apartado de antecedentes se puede
consultar un resumen de la información obtenida después de esta fase de investigación.
10.2.Investigación técnica
Al inicio del proyecto hubo una fase de investigación técnica más centralizada en los aspectos
informáticos del sistema actual y el sistema que se pretendía construir. Para esta labor se
acudió a los organismos que se encargan actualmente de la gestión de los inventarios (Fedac y
Servicio de Patrimonio Histórico de la Consejería de Cultura y Deportes). Se hicieron
entrevistas a los técnicos encargados de la gestión y se obtuvieron datos técnicos del modelo
actual del sistema, entre ellos el modelo actual de datos de las bases de datos que se adjunta
en el anexo I.
No solo se investigó el sistema actual, sino que fue necesario un periodo de adquisición de
conocimientos acerca de la programación de aplicaciones web, ya que para el plan de estudios
en el que se encuadra este proyecto no existía ninguna asignatura específica de esta materia.
• Identificar los conceptos que existen en el ámbito del problema que queremos
solucionar.
• Identificar relaciones entre los conceptos.
• Identificar actividades y procesos que realizan los actores.
Como resultado de esta fase se obtiene un modelo del dominio o modelo conceptual.
• El usuario consultor puede consultar los inventarios desde cualquier punto de Internet.
• El acceso a los inventarios debe ser sencillo e intuitivo.
• Será necesario que el usuario pueda cambiar de inventario tanto de tipo de bien como
la zona a la que pertenece, de una manera fácil y rápida.
• Los usuarios encargados de la gestión de los datos podrán gestionar los inventarios
desde cualquier punto de Internet.
• Es imprescindible que haya una seguridad y garantía de que los datos no son
modificados por usuarios que no sean los encargados de mantener los datos de los
inventarios.
• Es imprescindible que el usuario pueda realizar consultas a los inventarios que le
permitan encontrar la información precisa que busca acerca de los bienes.
• Un requisito menos importante pero útil sería que los usuarios del sistema puedan
personalizar su relación con este, definiendo la forma en la que el sistema se les
presenta.
• Un requisito adicional pero importante es que la interacción con el sistema sea
cómoda, sencilla, intuitiva y agradable.
• Identificar los objetos que van a estar presentes en el software que se va a desarrollar.
• Identificar las operaciones disponibles sobre estos objetos.
• El software que desarrollemos tiene que estar implementado en una tecnología que
permita implantarlo en Internet.
• Es necesario que se pueda instalar en distintas plataformas de servidores de Internet,
Windows y Linux como mínimo.
• Tiene que permitir acceder a distintas bases de datos de distintas zonas de forma
transparente al usuario.
• Debe garantizar la no manipulación de los inventarios por personas no autorizadas. Es
decir tiene que incorporar un sistema de validación de los usuarios.
12.Diseño
Es en esta fase en la se pasa de estudiar el problema a proponer una solución. La solución
propuesta constará de un diseño documentado de arquitectura de la aplicación, en la que
aparecerán las relaciones del sistema con el exterior y su estructura interna: su
descomposición en módulos y la relación entre estos y las clases que los componen. En
definitiva, se obtendrá un modelo detallado del software, de las clases que lo integran, su
comportamiento y la relación entre estas.
12.1.Estudio preliminar
En base a los requerimientos del sistema identificados en la fase de análisis se llega a la
conclusión evidente de que el software que necesitamos desarrollar es una aplicación web.
Una vez sepamos que tipo de aplicación vamos a generar es necesario un estudio preliminar
de las características de este tipo de aplicaciones.
Hemos dividido este estudio preliminar en varios apartados que van desde los aspectos más
genéricos de la programación de aplicaciones web hasta los más concretos.
12.1.1.Tecnologías web
Haremos un breve repaso de los lenguajes y herramientas más difundidas para la
programación de aplicaciones web.
• CSS: Las hojas de estilo en cascada (Cascade Style Sheets) son un lenguaje formal
para definir la presentación de un documento estructurado en HTML, XML y
XHTML.
• ASP: Acrónimo de Active Server Pages. En un lenguaje derivado del Visual Basic
creado por Microsoft para la ejecución de código en el lado del servidor web. Forma
parte del servidor web de Microsoft (Internet Information Server). Se podría
considerar la versión equivalente del PHP de Microsoft.
• ColdFusion: Se trata de un servidor de aplicaciones web y un lenguaje de
programación del mismo nombre desarrollado por la empresa Macromedia. Es un
lenguaje basado en tags y del lado del servidor al estilo de PHP o ASP.
• JSP: Java Server Page es la tecnología para desarrollar páginas web dinámicas en el
lado del servidor de Sun Microsystems. Esta tecnología permite empotrar código Java
en páginas web. Es el equivalente de PHP, ASP o ColdFusion pero con Java. Las
ventajas de esta tecnología son su independencia con respecto al sistema y su
integración con otras clases de Java.
• Applets y Servlets: Son dos APIs que proporciona la plataforma de desarrollo J2EE
(Java 2 Enterprise Edition) de Sun para la programación de aplicaciones web en el
lado del cliente y en el lado del servidor respectivamente. Son clases de software que
encapsulan un conjunto de acciones que se pueden llevar a cabo del lado del
navegador web (applets) o del lado del servidor web (servlets).
Para la realización de este proyecto se optó por el uso de PHP como lenguaje de
programación. Esta elección estuvo basada en criterios objetivos como pueden ser: su extensa
difusión en Internet, por su rapidez frente a otros lenguajes, por su portabilidad y
compatibilidad entre distintos sistemas, por la disponibilidad de servidores web que lo
soportan, por la gran cantidad de librerías y aplicaciones desarrolladas en PHP, por su profusa
documentación, extensa red de ayuda en web (foros y listas de correo), por la facilidad de
mantenimiento del código y por su coste cero.
Los frameworks se diferencian de las librerías en que estas últimas son un conjunto de clases
a las que recurre nuestra aplicación, mientras que en el caso de los framework, las clases
formarán parte del corazón del diseño de la aplicación.
12.1.3.Arquitectura MVC
Uno de los modelos más usados en el diseño de arquitecturas de software para aplicaciones
web es la arquitectura MVC.
CONTROLADOR VISTA
MODELO
CONTROLADOR VISTA
Arquitectura MVC
• El controlador está compuesto por la parte del software que se encarga de relacionar
las entradas externas al sistema con las acciones que es necesario ejecutar sobre el
modelo.
Este patrón fue descrito por primera vez en 1979 por Trygve Reenskaug en el diseño del
lenguaje de programación Smalltalk.
Modelo
Editar vértices matemático del Perspectiva estática
paisaje
Editar parámetros Malla de polígonos
12.1.4.1.J2EE
J2EE es una plataforma para el desarrollo y la implementación de aplicaciones corporativas
multinivel [AUM02]. Proporciona:
Para la implantación de una aplicación web bajo esta plataforma es necesario el uso de un
servidor de aplicaciones, el cual proporciona el contexto para la ejecución de los módulos.
Existen multitud de servidores de aplicaciones en el mercado.
J2EE está diseñado atendiendo al patrón de diseño de la arquitectura MVC. En este caso los
controladores son los servlets, y no son más que unas determinadas clases de java que
cumplen con una interfaz de diseño. La parte del modelo se implementa mediante EJB y/o
JavaBeans que son otra interfaz de clases. Y por último, la vista está implementada por JSP.
JSP son páginas HTML con fragmentos de código en Java. El funcionamiento de una
aplicación web con este tipo de arquitectura podría resumirse en los siguientes pasos:
Contenedor/ Contenedor
Servidor aplicaciones
Motor
Servlet EJB
Respuesta HTTP 4
Servidor web
12.1.4.2.STRUTS
STRUTS es un framework para aplicaciones web desarrollado por la Fundación de Apache
para J2EE. Se trata de un conjunto de clases que proporcionan una estructura escalable y fácil
de mantener para aplicaciones web complejas. Permite al diseñador del software centrarse en
la lógica de dominio, ya que resuelve una gran cantidad de problemas comunes a todas las
aplicaciones web, como son: la gestión de peticiones y respuestas http, el almacenamiento de
la información, etc.
12.1.4.3.phpMVC
PhpMVC es un framework para aplicaciones web. Consiste en un port de STRUTS, es decir,
es una traducción de STRUTS del lenguaje Java a PHP. Además de las clases de STRUTS,
phpMVC contiene otras clases que implementan parte de la plataforma de desarrollo J2EE,
que es el contexto de implantación de una aplicación que use STRUTS.
phpmvc-config.xml RequestBase
Clases de phpmvc-config.xml
ApplicationConfig
AppServerConfig RequestProcessor
AppServerContext Action
ResponseBase
HttpResponseBase Acciones
ActionDispatcher
12.1.4.4.sQeletor
sQeletor es un framework desarrollado por la empresa iQual Ingenieros S.L.L. basado en
phpMVC. Está constituido por un núcleo que es el phpMVC sobre el que se asientan varias
capas que añaden funcionalidad al framework.
• Además, sQeletor proporciona la integración con otras clases que permiten la gestión
de ficheros de configuración. Es muy común el uso de ficheros de configuración de
las aplicaciones que guardan información relativa a la instalación, opciones del
programa, etc. sQeletor incluye clases para la gestión de ficheros de configuración en
varios formatos incluido el XML.
12.1.5.Motores de plantillas
Un motor de plantillas es una librería de software que permite independizar los datos de una
página web de la forma en que se presentan. Su función principal es la de separar el trabajo de
los diseñadores del de los programadores. Los motores de plantillas básicamente se encargan
de la gestión de ficheros que contienen el código html de las páginas web. Estos ficheros se
llaman plantillas.
Existe una amplia variedad de motores de plantillas en el mercado para PHP entre ellos
Smarty, Fast Template, o Template Power. Uno de los más potentes y versátiles es Smarty, que
es el que utiliza sQeletor.
12.1.6.Motores de persistencia
Un motor de persistencia es una librería de software que se encarga del acceso a las bases de
datos relacionales en un programa orientado a objetos.
Uno de los paradigmas más usados en la programación es la programación orientada a
objetos, mientras que en los sistemas de gestión de bases de datos, el modelo más frecuente es
el de bases de datos relacionales. Por lo tanto tenemos que la integración de los dos suele ser
la forma más común de desarrollo. La principal función de un motor de persistencia consiste
en servir de traductor o intermediario entre estos dos niveles. Mientras que la lógica de la
aplicación maneja objetos, los sistemas de bases de datos relacionales utilizan registros. El
motor de persistencia se encarga de obtener los registros y convertirlos en objetos para su uso
en el programa, y a la inversa, de convertir los objetos en registros para su almacenaje
persistente en la base de datos.
Programa
orientado a Maneja objetos
objetos
Motor
de Traducción objetos/registros
Persistencia
Base
de Maneja registros
Datos
Motor de persistencia
La capa de persistencia de un programa contiene toda la lógica necesaria para leer, escribir y
borrar objetos desde y hacia un almacén de objetos permanente. Algunas de las características
que debería soportar un motor de persistencia son las siguientes:
• Escalabilidad: tiene que ser posible añadir nuevas clases o cambiar el mecanismo de
persistencia.
• Consultas SQL: soporte para ejecutar directamente consultas SQL sobre la bases de
datos. Aunque supone una violación del encapsulamiento del motor de persistencia, en
determinados casos puede ser necesario por motivos de rendimiento.
En definitiva, un motor de persistencia debe permitir centrarse a los diseñadores del software
en resolver el problema del dominio, y no en los mecanismos de almacenamiento de la
información.
En cuanto a los tipos de motores de persistencia, podríamos clasificarlos según tres modelos
básicos que son los más frecuentes:
12.2.Diseño de la arquitectura
En este apartado se ofrece una descripción de la arquitectura de la aplicación, para ello
usaremos un enfoque analítico del sistema, es decir, partiremos de una visión general y global
para ir descendiendo a los niveles más concretos y detallados.
En el nivel de los navegadores están las páginas en html que devuelve el servidor web junto
con una pequeña parte del código de la aplicación en JavaScript para la generación de los
menús dinámicos.
En el nivel de servidores de bases de datos estarán los sistemas de gestión de bases de datos.
La aplicación está preparada para trabajar con un conjunto heterogéneo de bases de datos y
contempla la posibilidad de añadir nuevos drivers para otros sistemas de bases de datos.
En el nivel del servidor web se encuentra el resto del código específico de la aplicación. Este
código podríamos dividirlo en varios paquetes de clases que realizan distintas funciones.
Estos paquetes son los que se muestran en el siguiente diagrama:
sQeletor PerenQen
PC
phpMVC
Ext_Libs iQ_Libs
• PC: es el corazón de la aplicación que contiene las clases específicas del dominio del
problema e incluye: el dominio, las clases de autentificación, las clases de páginas, los
formularios, las vistas y las acciones.
• PerenQen: motor de persistencia para PHP. Clases para el acceso a diversas bases de
datos.
12.2.1.PC
Es el núcleo de la aplicación, contiene las clases principales que aportan la solución al
problema concreto de la gestión de los inventarios. Son las clases específicas de esta
aplicación.
Las clases del paquete están divididas en dos grupos: las clases propias de la aplicación y las
que son extensiones del framework sQeletor. Se pueden dividir estas clases a su vez en varios
subpaquetes:
• Acciones (Actions): son clases que representan las acciones disponibles del dominio.
Constituyen la parte de controladores del modelo MVC. Cada acción contiene un
controlador para un caso de uso específico del sistema. Las acciones pueden agrupar
varias actividades con funciones comunes.
• Formularios (Forms): son las clases encargadas de recoger, validar y dar formato a
los datos de los formularios que se presentan al usuario del sistema. Incluyen
capacidades para mostrar los formularios html y para verificar los datos introducidos
por los usuarios.
• Página (Page): contiene la clase base que representa una página de la aplicación web.
Todas las páginas de la aplicación heredan de esta clase. Realiza tareas comunes a
todas las páginas como son la construcción de los menús, los formularios comunes,
etc. Se trata de la parte que implementa la vista en el modelo MVC.
• Páginas (Pages): contiene el conjunto de clases que representan las páginas de la
aplicación. Cada clase se encarga de construir una página web, usando la plantilla de
la misma con los datos aportados por el dominio.
• Vista (View): clase base que representa una vista del dominio, es decir, la información
de una entidad del dominio con solo sus atributos. Es la clase padre de todas las vistas
del dominio, y es la forma que tiene el dominio de responder a las acciones que se le
solicitan.
• Vistas (Views): son las clases que contienen cada una de las vistas que devuelve el
dominio.
A continuación se muestra un listado con las clases que componen el paquete PC con una
breve descripción de su cometido:
Acciones
Grupo o Clase Descripción
Mean
CambiarIdiomaAction.php Cambio de idioma en la aplicación.
CambiarNavegacionAction.php Cambiar la paginación de los registros de un listado.
CambiarPaginaNavegacionAction.php Cambiar la paginación de los registros de un listado.
CambiarTipoAction.php Cambiar tipo de bien activo.
CambiarZonaAction.php Cambiar región activa.
LogAction.php Funciones de log.
LoginAction.php Inicio de sesión.
LogoutAction.php Fin de sesión.
MostrarAyudaAction.php Mostrar páginas de ayuda.
NuevaSugerenciaAction.php Enviar sugerencias.
PageAction.php Grupo de acciones relacionadas con la visualización de las páginas.
UserValidator.php Acciones para la validación de usuarios.
Autenticación
Grupo o Clase Descripción
IWatchman.php Interfaz para clases de autenticación de usuarios.
WatchmanImpl.php Acciones relacionadas con la gestión de una ficha arqueológica.
Negocio
Grupo o Clase Descripción
BaseObject.php Clase base para todos los objetos del dominio.
Region.php Representa una zona con servidor de bases de datos para la aplicación.
User.php Representa un usuario de la aplicación.
IDomainService.php Interfaz de clase para el dominio.
DomainServiceImpl.php Clase que implementa la interfaz de dominio. Representa el dominio
del problema, es decir, encapsula el sistema. Es a través de esta clase
por donde se accede a las acciones sobre la aplicación.
Formularios
Grupo o Clase Descripción
Mean
LoginForm.php Formulario para el inicio de sesión del usuario.
NavegacionForm.php Formulario para la barra de navegación por los registros de un listado
(paginación).
SugerenciasForm.php Formulario para la recogida de sugerencias de la aplicación.
Página
Grupo o Clase Descripción
BasePage.php Clase base para todos las páginas web de la aplicación. Realiza
acciones comunes a todas las páginas, como la generación de menús.
Páginas
Grupo o Clase Descripción
Mean
AccesibilidadPage.php Página que muestra un texto de accesibilidad de la aplicación.
AdminPage.php Página de administración de la aplicación.
AgradecimientosPage.php Página que muestra un texto con los agradecimientos.
AyudaEmergentePage.php Página que muestra la ayuda emergente.
EnlacesPage.php Página de enlaces.
ImagenPage.php Página para mostrar una imagen.
InicioPage.php Página de inicio.
IntroPage.php Página de introducción.
LoginPage.php Página para el inicio de sesión del usuario.
MensajePage.php Página para mostrar mensajes.
PrincipalPage.php Página principal.
QueEsPage.php Página con un texto breve de explicación del proyecto.
Vista
Grupo o Clase Descripción
BaseView.php Vista padre de todas las vistas del dominio.
Vistas
Grupo o Clase Descripción
RegionView.php Guarda la información de una región.
UserView.php Guarda la información de un usuario.
Extensiones de sQeletor
Grupo o Clase Descripción
ExtendedBaseAction.php Acción base de la cual heredan el resto de acciones de la aplicación.
Contiene métodos para el manejo de ficheros de configuración de la
aplicación en XML.
ExtendedBaseRequest.php Hereda de sQeletor para independizar del framework y poder añadir
funcionalidad propia en un futuro.
Se pueden ver en el diagrama de clases las relaciones entre las distintas clases del paquete.
Por un lado tenemos las clases con funciones de control de las acciones, estas se corresponden
con la parte de controladores del modelo MVC. Estas clases son: los formularios que recogen
los datos suministrados por los usuarios y las acciones que el sistema permite ejecutar.
Por otro lado tenemos la lógica de dominio, que incluye las clases que representan las
entidades del dominio del problema.
En tercer lugar están las clases relacionadas con la presentación del resultado de las acciones
sobre el dominio. Estas clases pertenecen al grupo de las vistas del modelo MVC.
Y por último están los objetos de transferencia de datos. Este tipo de objetos se crean como
portadores de los datos del dominio. Se trata básicamente de las mismas clases del dominio
que son visibles desde fuera de este, y a las que se les sustraen sus métodos, quedando de esta
forma solamente sus atributos.
12.2.1.1.Ejemplo de funcionamiento
Para aclarar el funcionamiento de la aplicación veremos en este apartado como se procesa una
petición para un caso concreto. El caso seleccionado es la petición que muestra la página del
listado de los bienes etnográficos.
A continuación podemos ver los diagramas de secuencia de esta acción. El primero representa
los pasos que se dan para obtener los datos de la página que queremos mostrar y el segundo
representa la construcción de la página html.
URL: http://host/PC/Main.php?do=IEtnoShowAction&method=showTable
Main.php es el script principal de la aplicación, todas las peticiones se recogen en este script.
El usuario en ningún momento hace una petición a través de otro script PHP.
El valor para el parámetro do, en este caso IEtnoShowAction, le indica a la aplicación cual
es la acción que queremos realizar. En el fichero de configuración phpMVC-config.xml estará
especificado que clase es la encargada de gestionar esta acción. En este caso existe una clase
cuyo nombre es igual al de la acción.
Hay que distinguir entre la acción lógica, que representa una actuación del usuario sobre la
aplicación, y la clase acción que implementa dicha actuación. En ocasiones varias acciones
lógicas pueden ser agrupadas para ser gestionadas por una única clase acción. Esto permite
agrupar acciones que tienen cosas en común y evita hacer demasiado grande el fichero de
configuración del phpMVC. El parámetro method permite en estos casos indicar a la clase
que gestiona la acción que método se encarga se atender esa petición. Para el ejemplo, existe
una clase IEtnoShowAction que gestiona varias acciones, entre ellas, la de mostrar una tabla
(showTable) que es uno de sus métodos.
Tanto el nombre del parámetro ‘do’ como el de ‘method’ son configurables, no tienen porque
llamarse de esa forma.
En este primer diagrama se puede ver como se procesa la primera parte de la petición. En ella
se dan los siguientes pasos:
1. El RequestProcessor es la clase de phpMVC encargada de procesar la petición. Lo
primero que hace es crear la clase que implementa esta acción. En este caso la clase
IEtnoShowAction.
2. Se llama el método showTable de la clase IEtnoShowAction indicado en la url. Este
método es el encargado de actuar sobre el dominio para llevar a cabo la acción
solicitada por el usuario.
3. La clase IEtnoShowAction obtiene una referencia al DomainServiceImpl que es la
clase que representa el dominio.
4. Se crea una consulta, en donde se le especifica al motor de persistencia que objetos
queremos obtener de la base de datos.
5. Se le solicitan al dominio los registros indicados en la consulta.
6. El dominio solicita al motor de persistencia (PersistenceBrokerImpl) un intermediario
(broker), que es el encargado de gestionar la petición de registros de un a tabla.
7. El PersistenceBrokerImpl crea el intermediario para que lo use el dominio.
8. El dominio recibe in intermediario del motor de persistencia para hacer peticiones de
registros a una tabla.
9. El dominio solicita al intermediario los registros que especificó en la consulta
(PEQuery).
10. El intermediario consulta la base de datos y devuelve los registros que cumplen la
condición de la consulta.
11. Una vez el dominio ha obtenido los registros de la bases de datos se los da a la acción
que los solicitó.
12. La acción guarda los registros obtenidos en la petición, de donde los recogerán las
clases encargadas de crear la página html de respuesta.
Para el usuario final de la aplicación existe un único punto de acceso a los datos
correspondiente a la aplicación web. En cualquier momento se trabaja con una zona activa y
es posible alternar entre varias. Este fue el principal requisito que guió el diseño de la
aplicación, y varios son los puntos del diseño que soportan este requisito.
En primer lugar existe un fichero de configuración en el servidor web que contiene la lista de
bases de datos que hay disponibles. Se optó por utilizar un fichero en formato XML por su
extendido uso, flexibilidad y facilidad de gestión. Este fichero se llama DBServers-
config.xml. A continuación se muestra un ejemplo del contenido del fichero:
<!--
Fichero de configuración de los servidores de
bases de datos de la aplicación
Engines:
PE_DBENGINE_MYSQL
PE_DBENGINE_POSTGRESQL
PE_DBENGINE_MYSQL
PE_DBENGINE_ORACLE
PE_DBENGINE_ODBC
<DBServers-config>
</DBServers-config>
Cada elemento server especifica a la aplicación una base de datos disponible. Los atributos
son:
• zone: clave de la zona que representa la división geográfica o lógica de las bases de
datos. En el caso del ejemplo existe una zona por isla.
• type: clave del tipo de bien.
• host: nombre o dirección IP del host donde se encuentran hospedadas las bases de
datos.
• DBName: nombre de la base de datos.
• tablespace: espacio de tablas (agrupación lógica de tablas que usan algunos sistemas
de bases de datos) donde se encuentran las tablas de datos.
• usertablespace: espacio de tablas de las tablas que contienen información sobre los
roles de usuarios.
• DBEngine: tipo de motor de base de datos.
• protocol: protocolo de conexión a la base de datos.
• port: puerto de conexión a la base de datos.
Este fichero es analizado al inicio de cada sesión de usuario para comprobar si se han añadido
nuevas zonas. Una vez extraída toda la información que contiene, es la clase que representa el
dominio (DomainServiceImpl) la encargada de almacenar dicha información. Como se puede
observar en el diagrama la clase ExtendedBaseAction, que es la clase padre de todas las
acciones de la aplicación, se encarga de hacer el análisis sintáctico del fichero de
configuración de los servidores de bases de datos. Lo hace mediante el uso de la clase Config
de PEAR. Una vez analizado el fichero, se guarda la información en la clase WatchmanImpl,
en el atributo dbservers, que no es más que un vector con la información de las distintas
zonas. Los datos del usuario y región actuales son almacenados en dos instancias de las clases
User y Region respectivamente, a partir de estos dos objetos, el dominio obtiene los
parámetros necesarios para las conexiones a las bases de datos mediante el motor de
persistencia.
12.2.3.phpMVC y sQeletor
Aunque phpMVC y sQeletor constituyen dos paquetes diferenciados están íntimamente
ligados. sQeletor consiste en una ampliación de las características de phpMVC. Esta
ampliación se basa en una extensión de sus clases por un lado, y en una incorporación de
nuevas clases por otro. En el siguiente diagrama de clases podemos ver como se
interrelacionan las clases entre sí en el modelo de arquitectura MVC.
Se puede resumir el funcionamiento del modelo MVC en los siguientes pasos:
6. Los objetos que devuelve el dominio, y otros que se almacenan, son conocidos como
objetos de transferencia de datos, porque su única función es la de servir de soporte
para el trasporte de datos entre las distintas partes de la aplicación.
Una vez configurado e instalado el motor, solo es necesario solicitar un objeto de la clase
PersistenceBrokerImpl al servidor de intermediarios. Con este objeto se hacen las peticiones
de acceso a una tabla de la base de datos.
El motor soporta actualmente dos bases de datos: Oracle y PostgreSQL, y permite añadir
drivers para otro tipo de sistemas. En la siguiente tabla se muestra una lista de las clases que
lo configuran:
Vistas
Grupo o Clase Descripción
Connection.php Gestiona una conexión a una base de datos.
ConnectionsServer.php Clase responsable del control y gestión de las conexiones.
Criteria.php Contiene un criterio para una consulta.
CriteriaArray.php Contiene un conjunto de criterios.
Field.php Representa un campo de una tabla con su tipo y valor.
IConnectionsServer.php Interfaz para clases de servidores de conexiones.
IPersistenceBroker.php Interfaz para clases de intermediarios de persistencia.
IPersistenceBrokerServer.php Interfaz para clases de servidores de persistencia.
PBKey.php Llave a un intermediario de persistencia. Contiene información como
el tipo de base de datos, su ubicación, el usuario que accede, etc. En
definitiva, representa unívocamente un acceso a una base de datos.
PBTableMap.php Se encarga de la gestión del fichero de correspondencias (mapping)
entre la aplicación y la base de datos.
PEQuery.php Representa una consulta a la base de datos.
PersistenceBrokerImpl.php Es un intermediario de persistencia, la principal clase encargada de la
gestión de los accesos a la base de datos, de cara al usuario del motor
de persistencia.
PersistenceBrokerServerImpl.php Es el servidor de intermediarios de persistencia. Se encarga de
gestionar y entregar intermediarios de persistencia a la aplicación.
SQLCommon.php Driver abstracto del que heredan todos los drivers.
SQLOracle.php Driver para Oracle.
SQLPostgre.php Driver para PostgreSQL.
En el diagrama de clases de PerenQen podemos observar como se relacionan las clases del
motor. El dominio interactúa con el motor a través de las clases: PEQuery,
PersistenceBrokerServerImpl, y PBKey. Mediante PEQuery se especifica la consulta,
PersistenceBrokerServerImpl devuelve un PersistenceBrokerImpl que se usa como
intermediario para acceder a una tabla, y PBKey que representa una llave de acceso al motor,
y con la que se le indica este la base de datos a la que se quiere acceder.
Hay que añadir las ventajas de tratarse de un software de código abierto, gratutio y
multiplataforma.
Por contra se ha objetado que no llega al nivel de otros lenguajes como Java en cuanto
a soporte para la programación orientada a objetos, ni dispone de software para
aplicaciones de gran tamaño como frameworks, motores de persistencia, etc.
• phpMVC: aunque se trata de un framework poco conocido y que aún es una versión
beta, se eligió por tratarse de un port de STRUTS para PHP. STRUTS es un
framework ampliamente usado. Esta elección facilitaría el paso del personal empleado
en el desarrollo de aplicaciones web de uno a otro framework sin mucha dificultad.
Por otro lado se trata de uno de los framework en PHP con más perspectivas de futuro.
Además es uno de los frameworks de código abierto que están en un grado más
avanzado de desarrollo. Al final del documento hay una lista de los distintos
frameworks disponibles en el mercado con una breve reseña de sus características para
cada uno de ellos.
• PostgreSQL: es el sistema de bases de datos gratuito que ofrece una mayor potencia,
fiabilidad y prestaciones. Otro muy usado y también gratuito, que se consideró para la
elección pero fue desestimado es MySQL, sistema de gestión de bases de datos
normalmente utilizado para proyectos más pequeños o que no requieren de
capacidades tan avanzadas debido a que no soporta transacciones, roles, ni
subconsultas, herramientas fundamentales para este tipo de aplicación.
• PerenQen: se eligió este sistema porque cumplía con todas las características
necesarias y deseables. Entre otras, instalación sencilla, fácil configuración, bajos
tiempos de respuesta, soporte para dos sistemas de bases de datos, y la posibilidad de
añadir nuevos controladores. Además, facilitaba el desarrollo del proyecto por la baja
curva de aprendizaje, al ser el autor del proyecto un colaborador en el diseño e
implementación del motor. Por otro lado, no existe en el mercado una amplia variedad
de motores de persistencia para PHP. Se puede consultar una lista de los motores de
persistencia disponibles para PHP en uno de los anexos.
• Smarty: es un motor de plantillas muy potente, versátil y rápido. Contiene una amplia
gama de funciones y permite añadir plugins. No existen otros que estén en un nivel
superior de madurez.
Antes de proceder a analizar los resultados en conveniente determinar cuales son los
parámetros de rendimiento que hemos analizado. Estos indicadores de la eficacia del
programa son básicamente dos: por un lado el tiempo de respuesta de una petición de página y
por otro el consumo de recursos (memoria y CPU) del script en el servidor.
En cuanto al tiempo de respuesta podemos definirlo como el tiempo total que trascurre desde
que el cliente web solicita una página hasta que se tiene totalmente cargada en el navegador.
Para los análisis hemos dividido este tiempo de respuesta en varias partes críticas de la
ejecución del script de la aplicación:
Tiempo respuesta = Consulta BD + Asignar variables plantilla + Resolver plantilla + Echo + Error
Distinguimos a efectos de análisis de rendimiento varios tipos de páginas que se dan en una
aplicación:
• Páginas estáticas: son páginas sencillas de información que solo contienen texto html
e imágenes y cuya información es fija o se obtiene de algún fichero de texto. En estas
páginas no se realizan consultas a la bases de datos.
• Páginas dinámicas: cuyo contenido está construido a partir de alguna acción
compleja que puede incluir una o varias consultas a bases de datos.
Todos los datos que se recogen de las pruebas están tomados con la ejecución de la aplicación
en un entorno con las siguientes condiciones de hardware y software:
Hardware:
• Procesador: AMD Athlon 64
• Memoria: 2 GB de RAM
• Disco duro: Seagate 169 GB a 7200 r.p.m.
Software:
• Sistema operativo: Windows XP
• Servidor web: Apache 1.3.12
• Versión PHP: 4.3.9.
14.1.Páginas estáticas
Es responsabilidad del diseñador de software intentar utilizar estrategias que garanticen una
velocidad de ejecución de los scripts aceptable. Una de las estrategias usadas en este proyecto
es la caché de páginas que no tienen contenido dinámico. Mediante esta caché es posible
saltar la creación de la página la segunda vez que se llama y sucesivas, obteniéndola
directamente desde un fichero de texto en donde ha sido guardada después de ser solicitada
por primera vez. Esto evita el penalizar a las páginas estáticas con el tiempo requerido por el
motor de plantillas para generar las páginas dinámicas.
En la siguiente gráfica podemos ver los resultados para las páginas estáticas con y sin caché.
La mejora con el uso de la caché es muy significativa porque se ahorra el tiempo de montaje
de la página en el que se resuelve la plantilla.
0,450
0,400
0,350
Tiempo (sg)
0,300
0,250
0,200
0,150
0,100
Sin caché Con caché
A continuación vemos estos mismos datos desglosados según las distintas partes críticas del
tiempo de respuesta. De esta forma podemos saber a que parte del script está afectando
exactamente el uso de la caché de páginas. Como era de esperar el uso de la caché de páginas
evita tener que recurrir al motor de plantillas para construir la página, por lo tanto los tiempos
relacionados con las plantillas se han reducido hasta cero.
Páginas estáticas: asignar variables a la plantilla
0,200
0,150
Tiempo (sg)
0,100
0,050
0,000
Sin caché Con caché
0,200
0,150
Tiempo (sg)
0,100
0,050
0,000
Sin caché Con caché
0,200
0,150
Tiempo (sg)
0,100
0,050
0,000
Sin caché Con caché
Los datos de las gráficas fueron obtenidos de la página de la aplicación que muestra el listado
de bienes etnográficos. Esta página permite indicar al usuario el número de registros que
quiere mostrar a la vez (paginación).
En la siguiente gráfica podemos ver cuales son las partes del script que se ven más afectadas
por el incremento en el número de registros, o lo que es lo mismo, que partes del script son las
que contribuyen a que aumente el tiempo de respuesta cuando se incrementa el número de
registros.
5,097
5
4,845
4,724
4,630
4,540 4,475
4,380
4,285 4,237 4,288
4 3,979 3,970
3,691
2,597
2,706 2,638 2,672 2,733
2,467
2,295 2,360 2,311
2 2,055
1,963 1,884 1,939
1,652 1,655
1,414 1,476 1,426 1,456
1,174 1,111
1
0,764 0,819
0,692 0,705
0,585 0,550 0,549
0,437
0,316 0,319 0,360
0,170 0,192 0,237 0,243
0,092 0,098 0,096
0
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150
Resolver plantilla 0,316 0,585 0,764 1,111 1,426 1,456 1,655 1,939 2,924 2,311 2,672 2,733 2,951 3,154 3,388
Echo 0,092 0,098 0,096 0,170 0,192 0,237 0,243 0,437 0,319 0,360 0,550 0,819 0,692 0,549 0,705
Suma de parciales 1,174 1,476 1,652 2,055 2,360 2,467 2,638 3,127 3,979 3,445 3,970 4,288 4,380 4,475 4,845
T otal 1,414 1,963 1,884 2,295 2,597 2,706 2,879 3,365 4,285 3,691 4,237 4,540 4,630 4,724 5,097
La suma de parciales es la suma de todos los tiempos críticos en que hemos dividido el script
para calcular el tiempo de respuesta, y el total indica el tiempo total del script. La diferencia
entre ambos nos da una medida de la eficacia en la selección de las partes críticas, es decir,
nos indica si hemos dejado atrás alguna parte crítica o no. Como se puede ver en la gráfica la
diferencia entre ambos es constante por lo que no hemos dejado atrás ninguna parte crítica por
medir del script. La pequeña diferencia que hay entre el tiempo total y la suma de parciales
representa los tiempos de las acciones que se llevan a cabo siempre y que son constantes
como la gestión de la sesión, inicialización de la aplicación, etc.
De esta gráfica podemos deducir que el resolver la plantilla (motor de persistencia) y enviarla
al navegador (echo) son las partes que más aumentan, lo cual parece lógico, teniendo en
cuenta que la plantilla tendrá más registros y que la página tardará más en ser enviada debido
a su mayor tamaño.
5,097
5
4,845
4,724
4,630
4,540 4,475
4,380
4,285 4,237 4,288
4 3,979 3,970
3,691
3,365 3,445
3,127
3
2,879
Tiempo (sg)
2,706 2,638
2,597
2,467
2,295 2,360
2 2,055
1,963 1,884
1,652
1,414 1,476
1,174
1
0,634 0,645 0,658 0,625 0,595 0,633 0,600 0,600 0,597 0,638 0,598 0,598 0,599 0,631
0 ,598
0,132 0,148 0,134 0,149 0,147 0,141 0,140 0,151 0,139 0,136 0,150 0,138 0,138 0,141
0 ,154
0
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150
Consulta a la base de datos 0,634 0,645 0,658 0,625 0,595 0,633 0,600 0,600 0,597 0,638 0,598 0,598 0,599 0,631 0,598
Asignar variables a plantilla 0,132 0,148 0,134 0,149 0,147 0,141 0,140 0,151 0,139 0,136 0,150 0,138 0,138 0,141 0,154
Suma de parciales 1,174 1,476 1,652 2,055 2,360 2,467 2,638 3,127 3,979 3,445 3,970 4,288 4,380 4,475 4,845
T otal 1,414 1,963 1,884 2,295 2,597 2,706 2,879 3,365 4,285 3,691 4,237 4,540 4,630 4,724 5,097
Para peticiones con un gran número de registros el script se comporta igual que para los casos
que ya hemos visto, es decir, se mantiene una relación lineal entre el número de registros
solicitados y el tiempo de respuesta.
200
150
Tiempo (sg)
100
50
0
500 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000
Resolver plantilla 12,500 22,670 37,230 48,410 72,580 118,700 89,110 103,300 119,500 134,500 152,500 168,600
Echo 2,133 4,112 6,191 8,218 10,510 13,570 17,010 20,340 24,390 28,370 31,060 35,540
Suma de parciales 15,364 27,559 44,168 57,427 83,868 133,091 106,954 124,493 144,810 163,798 184,472 205,043
T otal 15,680 27,970 44,680 58,020 84,550 133,900 107,080 125,500 145,900 164,900 185,700 206,300
Partes del script que no dependen del número de registros
1,000
0,664 0,657
0,625 0,631 0,629 0,624 0,625 0,625 0,625
0,595 0,594 0,595
Tiempo (sg)
0,500
0,287 0,278
0,271
0,256
0,228
0,210
0,183 0,192
0,168
0,152 0,153
0,136
0,000
500 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000
Consulta a la base de datos 0,595 0,625 0,594 0,631 0,595 0,629 0,624 0,625 0,664 0,657 0,625 0,625
Asignar variables a plantilla 0,136 0,152 0,153 0,168 0,183 0,192 0,210 0,228 0,256 0,271 0,287 0,278
Suma de parciales 15,364 27,559 44,168 57,427 83,868 133,091 106,954 124,493 144,810 163,798 184,472 205,043
T otal 15,680 27,970 44,680 58,020 84,550 133,900 107,080 125,500 145,900 164,900 185,700 206,300
A partir de estas gráficas podemos obtener la conclusión de que los principales tiempos a
tener en cuenta para reducir el tiempo de respuesta de la aplicación son: el tiempo que tarda el
motor de plantillas en resolver la plantilla y el tiempo que se tarda en enviar al cliente. Y que
en este caso concreto el primero es de mayor coeficiente que el segundo, aunque
probablemente el segundo se vea muy significativamente aumentado en un entorno de
producción donde la conexión con el navegador no es directa.
Por lo tanto para mejorar estos tiempos caben varias acciones como son: probar con otro
motor de plantillas, reducir el tamaño de las páginas para que se envíen más rápidamente, y/o
reducir el tiempo que tarda el motor de plantillas en resolver un registro de la plantilla.
Una duda que puede aparecer a la vista de la gráfica es por qué se produce un pico entorno a
los 3000 registros. La razón es que las pruebas se hicieron con datos reales, por lo tanto el
tamaño de los registros varía. Entorno a los 3000 registros coincide que están los registros del
municipio de Las Palmas de Gran Canaria cuyo nombre es sensiblemente mayor al del resto
de los municipios, esto hace que los registros ocupen un poco más, lo que provoca que se
incrementen los tiempos.
Los tiempos calculados hasta ahora hacen referencia a una sola petición de página. En un
contexto de producción real en el que la aplicación esté dando servicios a múltiples usuarios,
lo normal es que se produzcan, o al menos pueden producirse, varias peticiones simultáneas.
/**
* Descripción corta.
*
* Descripción larga.
*
* @access public or private
* @author nombre <nombre@email>
* @param tipo nombre descripción
* @return tipo descripción
*/
function ejemploDocumentacion($nombre) { ; }
Existe una lista predefinida de tags pero se pueden añadir todos los que se deseen. Este tipo de
herramientas facilita mucho el mantenimiento del código por parte de los desarrolladores y la
integración de nuevos programadores en un proyecto.
16.Implantación del sistema
2. PHP 4.3.9 o superior e inferior a PHP 5 (la aplicación no está testeada para PHP 5
porque en el momento de la implementación del código solo existía una versión beta).
3. Modulo Oci8 de PHP para el acceso a bases de datos de Oracle si se va a usar el driver
de Oracle del motor de Persistencia. También es necesario que la variable
NLS_LANG de entorno del sistema operativo (Linux) esté establecida al idioma local
donde se instala la aplicación.
4. Conexión al servidor con una tasa de transferencia de cómo mínimo 512 Kb por parte
del cliente, y en cuanto al servidor debería disponer de una conexión de 2 Mb como
mínimo, dependiendo del número de usuarios conectados simultáneamente.
5. Servidor de bases de datos con PostgreSQL. Puede ser el mismo que el servidor web.
El motor de persistencia incluye también driver para Oracle.
6. Bases de datos creadas, para ello la aplicación contiene los scripts con las sentencias
SQL que generan las bases de datos.
16.2.Instalación
La instalación es tan sencilla como copiar la aplicación al directorio público del servidor web.
La aplicación autodetecta el sistema operativo y la ruta en donde se encuentra. El directorio
config contiene los ficheros de configuración de la aplicación. El único fichero que es
indispensable configurar es el DBServers-config.xml que contiene la lista de servidores de
bases de datos. Los ficheros de configuración de la aplicación son los siguientes:
• AppConfig.php: contiene las rutas de los distintos directorios que usa la aplicación.
• Domain-config.php: contiene información de configuración del dominio de la
aplicación.
• ExternalPaths.php: clase que se utiliza para la inclusión en PHP de las rutas de los
ficheros de la aplicación que son de desarrollo externo, como las librerías de código.
Estas pueden estar ubicadas en cualquier sitio (ruta).
• GlobalPaths.php: clase que se usa para la inclusión de las rutas de los ficheros de la
aplicación que son de desarrollo externo pero que se incluyen en el mismo directorio
principal de la aplicación. De esta forma se evita que el usuario tenga que obtener e
instalar estos módulos.
• ModulePaths.php: clase que se usa para la inclusión de las rutas de los ficheros
propios de la aplicación.
16.4.Mantenimiento
Se pueden diferenciar dos tipos de mantenimiento que demanda la aplicación: por un lado el
mantenimiento del software que consiste básicamente en la corrección de los errores que
puedan aparecer y la implantación de nuevas mejoras, y por otro lado, el mantenimiento del
servidor, que incluye contar con un servidor web activo las 24 horas y una conexión de banda
ancha.
16.5.Costes de explotación
Los costes de explotación se derivan del mantenimiento de la aplicación.
En cuanto a los costes en hardware dependerán del tipo de servidor web en que se instale. Se
puede optar por el alquiler de hosting de un servidor o montar uno propio. Ambas soluciones
tienen ventajas e inconvenientes. Si se opta por la opción de alquilar los servicios de hosting,
se puede obtener un precio razonable sin la necesidad de tener que llevar el mantenimiento del
host. Por otro lado, también se ahorra en el contrato de conexión para la banda ancha. Por el
contrario, se tiene limitada la cantidad de servicios de que se dispone, como por ejemplo, las
actualizaciones del lenguaje de programación, la incorporación de nuevos lenguajes, la
cantidad de sistemas de bases de datos que soportan, etc. Además, las actualizaciones de la
aplicación son más complicadas.
En cuanto a los costes de software, estos dependerán del número de ampliaciones que se
quieran llevar a cabo y del tipo de las mismas. Podría ser conveniente la contratación de un
servicio de mantenimiento de la aplicación, para realizar diversas tareas como copias de
seguridad de los datos, actualizaciones de las páginas, etc.
Concepto Coste
Hardware
Redes/comunicación
Software
Ampliaciones y mejoras.
R.R.H.H.
Personal para mantenimiento del servidor y aplicación. 200 - 1.500 Euros \ mes
mantenimiento.
17.Conclusiones
La principal motivación para abordar este proyecto fue la investigación en el ámbito de las
aplicaciones web, y más concretamente en el uso de frameworks que permitan desarrollar un
software de alta calidad. Se trata de un campo de la informática que se ha visto desbordado
por la necesidad de un crecimiento vertiginoso. Frecuentemente, este tipo de aplicaciones se
demandan a bajos costes de producción y en cortísimos tiempos de desarrollo, y son llevadas
a cabo por especialistas en diseño, o por personas que no tiene una visión global técnica de lo
que es la generación de software. Esta situación había producido hasta el momento un
detrimento en el uso de técnicas de ingeniería del software en favor de la implementación
directa lo cual desemboca en la creación de un software poco reutilizable y difícil de
mantener. Hoy en día esta cambiando el contexto, y cada vez más, vemos como el mercado
demanda aplicaciones más complejas que en principio estaban reservadas a unas pocas
aplicaciones de gestión, como por ejemplo las de gestión bancaria. Por lo tanto, existe un
amplio grupo de aplicaciones de tamaño medio que precisan de un coste medio de
producción, pero de unas prestaciones también medias en cuanto a su escalabilidad y
complejidad.
Este proyecto viene a confirmar que es posible la generación de aplicaciones web basadas en
métodos de ingeniería del software que produzcan aplicaciones robustas y fiables, capaces de
ser ampliadas, y que gestionen procesos complejos, y que a pesar de todo ello tengan unos
costes de producción razonables. Por esto es importante la elección por la que se optó en este
proyecto en cuanto a la selección de herramientas gratuitas, que no por ello menos fiables o
potentes.
Otra de las conclusiones a las que se llegó y que está relacionada muy íntimamente con la
primera, es que es posible el uso de una metodología de ingeniería del software para
aplicaciones web sin que ello vaya en un aumento en el coste del producto. Existe una especie
de regla no oficial, según la cual para proyectos pequeños o medianos los costes que puedan
derivarse del uso de una metodología de ingeniería del software no son proporcionales a los
beneficios que puedan derivarse de su uso, ya que en la mayoría de los casos se trata de
proyectos que no se ampliarán o que están limitados en presupuesto. Este tipo de metodología
exige un esfuerzo en primer momento mayor al que se requeriría en la implementación directa
(o con un análisis más breve) de la aplicación, y provoca un aumento en horas de
programación y en los tiempos de ejecución de los scripts. Pues bien, este proyecto demuestra
que es posible generar aplicaciones pequeñas o medianas completamente compatibles con el
uso de técnicas y métodos de ingeniería, con un pequeño incremento en el tiempo de
ejecución y programación (y por lo tanto de coste) admisible. Solamente hay que tener en
cuenta que se debe usar un enfoque ingenieril que no parta de un diseño de la solución desde
cero, sino mediante la integración de herramientas ya disponibles en el mercado. El 50% del
trabajo del ingeniero que se dedique al diseño de aplicaciones web hoy en día, no consiste en
aportar soluciones a sus análisis, sino más bien, en elegir las soluciones ya existentes e
integrarlas en una nueva aplicación.
Para finalizar se puede afirmar que la conclusión más relevante que se obtiene es que es
posible desarrollar aplicaciones web en PHP mediante frameworks de forma eficiente y
eficaz.
18.Trabajo futuro
El presente proyecto se puede ampliar en dos principales direcciones, a saber, por un lado en
la incorporación de mejoras de rendimiento a las capacidades que ya posee y, por otro lado, a
la ampliación de su funcionalidad.
En cuanto a las posibles mejoras podemos citar la creación de algún tipo de caché de dominio
que almacene los objetos obtenidos de la base de datos. De esta forma se podría disminuir el
tiempo de respuesta para las páginas que necesitan una consulta a la base de datos. En la
mayoría de los casos una consulta suele ser costosa, y a esto podemos añadir que el servidor
de la base de datos puede encontrarse en una máquina alejada físicamente del servidor web,
y/o con un ancho de banda de conexión bajo. El principal inconveniente para esta mejora es
la dificultad de garantizar que no se ofrezcan datos desfasados e incorrectos con respecto a los
originales, y que se produzcan todas las actualizaciones correctamente, y en definitiva, todos
los inconvenientes derivados de que sea la aplicación la encargada de gestionar los problemas
de concurrencia, el lugar de solamente el sistema de base de datos.
[WIK] Wikipedia
Enciclopedia libre
http://es.wikipedia.org/
[STRUTS] Struts
http://struts.apache.org/
[phpMVC] phpMVC
http://www.phpmvc.net/
[Ambler00] Scott W. Ambler
The Design of Robust Persistence Layer for Relational Databases
http://www.ambysoft.com/essays/persistenceLayer.html
[phpDoc] phpDocumentor
http://www.phpdoc.org/
OBS_GENERALES
Memo Observaciones
PERSONAS ASOCIADAS
Campo Tipo Etiqueta español
Propietario
NOMBRE_PROPIETARIO Texto Nombre
DNI_PROPIETARIO Texto D.N.I.
TELEFONO_PROPIETARIO Texto Teléfono
DIRECCION_PROPIETARIO Texto Dirección
Representante
NOMBRE_REPRESENTANTE Texto Nombre
DNI_REPRESENTANTE Texto D.N.I.
TELEFONO_REPRESENTANTE Texto Teléfono
DIRECCION_REPRESENTANTE Texto Dirección
Guardián
NOMBRE_GUARDIAN Texto Nombre
DNI_GUARDIAN Texto D.N.I.
TELEFONO_GUARDIAN Texto Teléfono
DIRECCION_GUARDIAN Texto Dirección
Usuario
NOMBRE_USUARIO Texto Nombre
DNI_USUARIO Texto D.N.I.
TELEFONO_USUARIO Texto Teléfono
DIRECCION_USUARIO Texto Dirección
I.2. Ficha de bien arqueológico
TABLA BIC_ARQUEOLOGICO
ESTRUCTURA
DATOS GENERALES
Datos principales
Campo Tipo Etiqueta español
COD_FICHA Numérico Código ficha
DENOMINACION Texto Denominación
Datos de la propiedad
PROPIEDAD Texto Propiedad
USO_ACTUAL Texto Uso actual
NOMBRE_PROPIETARIO Texto Nombre propietario
DIRECCION_PROPIETARIO Texto Dirección propietario
C_POSTAL_PROPIETARIO Texto Código postal propietario
LOCALIDAD_PROPIETARIO Texto Localidad propietario
TELEFONO_PROPIETARIO Texto Teléfono propietario
CLASIFICACION_SUELO Texto Clasificación del suelo
CALIFICACION_SUELO Texto Calificación del suelo
DECLARACION_BIC Sí/No Declaración B.I.C.
FECHA_INCOACION Fecha/Hora Fecha incoación
FECHA_DECLARACION Fecha/Hora Fecha declaración
NOMBRE_FOTO Texto Nombre foto
LOCALIZACIÓN
Campo Tipo Etiqueta español
ISLA Texto Isla
MUNICIPIO Texto Municipio
LOCALIDAD Texto Localidad
TOPONIMIAS Texto Toponimias
CARTOGRAFIA Texto Cartografía
ACCESO Memo Acceso
UTM_CUADRANTE Numérico UTM
X Numérico X
Y Numérico Y
ALTITUD Numérico Altitud
PENDIENTE Texto Pendiente
EXPOSICION Texto Exposición
PISO_BIOCLIMATICO Texto Piso bioclimático
SUSTRATO Texto Sustrato
UNIDAD_GEOMORFOLOGICA Texto Unidad geomorfológica
NOMBRE_MAPA Texto Nombre mapa
ESCALA Texto Escala
TIPOLOGÍA
Campo Tipo Etiqueta español
TTIPO Texto Tipología
TECONOMICO Texto Tipo económico
TFUNERARIO Texto Tipo funerario
THABITAT Texto Tipo hábitat
TCULTUAL Texto Tipo cultual
TARTE Texto Tipo arte
TOTROS Texto Tipo otros
Económico
Campo Tipo Etiqueta español
GRANERO Numérico Granero
GAMBUESA Numérico Gambuesa
CANTERA Numérico Cantera
SILO Numérico Silo
CONCHERO Numérico Conchero
TALLER Numérico Taller
OTROS_ECONOMICO Texto Otra tipología económica
OBS_ECONOMICO Texto Observaciones tipología económica
Funerario
Campo Tipo Etiqueta español
CUEVA_NATURAL_F Numérico Cueva natural
CUEVA_ARTIFICIAL_F Numérico Cueva artificial
SOLAPON Numérico Solapón
TUMULO Numérico Túmulo
CISTA Numérico Cista
OTROS_FUNERARIO Texto Otra tipología funeraria
OBS_FUNERARIO Texto Observaciones tipología funeraria
Hábitat
Campo Tipo Etiqueta español
CUEVA_NATURAL_H Numérico Cueva natural
CUEVA_ARTIFICIAL_H Numérico Cueva artificial
CASAS Numérico Casas
REFUGIO Numérico Refugio
OTROS_HABITAT Texto Otra tipología hábitat
OBS_HABITAT Texto Observaciones tipología hábitat
Cultual
Campo Tipo Etiqueta español
ALMOGAREN Numérico Almogarén
CAZOLETAS Numérico Cazoletas
CIR_PIEDRA Numérico Círculos de piedra
TORRETAS Numérico Torretas
OTROS_CULTUAL Texto Otra tipología cultual
OBS_CULTUAL Texto Observaciones tipología cultual
Manifestaciones rupestres
Campo Tipo Etiqueta español
Grabados
GEOMETRICOS Numérico Geométricos
ALFABETIFORMES Numérico Alfabetiformes
ZOOMORFOS Numérico Zoomorfos
ANTROPOMORFOS Numérico Antropomorfos
OTROS_GRABADOS Texto Otros grabados
Pinturas
ANTROPOMORFAS Numérico Antropomorfas
ZOCALOS Numérico Zócalos
GEOMETRICAS Numérico Pinturas geométricas
OTROS_PINTURAS Texto Otras pinturas
II.1.Conceptos
Las entidades que aparecen en el contexto de nuestro problema son:
• Inventario insular de inmuebles etnográficos.
• Inventario insular de yacimientos arqueológicos.
• Inventario insular de inmuebles arquitectónicos.
• Usuarios.
II.3.Tipos de privilegios
Son los tipos de acciones que se pueden desempeñar sobre objetos de las bases de datos por
parte de los usuarios.
• Alterar: Permiso para modificar la definición de una tabla (añadir campos, renombrar,
borrar, cambiar el tipo, etc.).
• Borrar: Permiso para borrar un registro de una tabla.
• Insertar: Permiso para añadir nuevos registros a una tabla.
• Consultar: Permiso para leer los datos de una tabla.
• Actualizar: Permiso para modificar el contenido de un registro de la tabla.
II.4.Actividades
Están ordenadas según el usuario que las desempeña.
II.4.1.PC_CONSULTOR_MINIMO
II.4.2.PC_CONSULTOR
II.4.3.PC_EDITOR
II.4.4.PC_SUPERVISOR
II.4.5.PC_ADMINISTRADOR
III.1.Diagramas de paquetes
sQeletor PerenQen
PC
phpMVC
Ext_Libs IQ_Libs
III.2.Diagramas de clases del software
III.2.1.PC
III.2.2.PerenQen
III.3.Diagramas se secuencia
III.3.1.PC
III.3.2.phpMVC
III.3.3.PerenQen
IV.ANEXO. Frameworks para aplicaciones web
Este apéndice contiene una lista de los frameworks más importantes que podemos encontrar
actualmente en el mercado con sus principales características. Se puede obtener una lista más
completa y actualizada en la dirección http://www.phpwact.org/php/mvc_frameworks
IV.1.phpMVC
• Web: http://www.phpmvc.net/
• Autor/Equipo: John Wildenauer.
• Estado: Versión 0.3 beta, con amplia documentación y en desarrollo la versión para
PHP5. Parece bastante activo.
• Licencia: LGPL.
• Ventajas: Se trata de un port de STRUTS de Java que es uno de los más usados para
esa plataforma.
• Desventajas: Parece que solo hay un desarrollador y es a nivel personal.
IV.2.Phrame
• Web: https://www.phrame.org/
• Autor/Equipo: Inicialmente apoyado por Software Development Department of
Texas Tech University.
• Estado: Versión 3.0.3. Con documentación un poco pobre. Parece bastante activo.
• Licencia: LGPL.
• Ventajas: Es un port de STRUTS.
• Desventajas: Parece en estado menos avanzado que phpMVC.
IV.3.WACT
• Web: http://www.phpwact.org/
• Autor/Equipo: Empresa Procata Inc.
• Estado: Versión 0.2 Alfa. Bastante documentación y ejemplos.
• Licencia: CC (Creative Commons).
• Ventajas: Parece bastante avanzado.
• Desventajas:
IV.4.eocene
• Web: http://www.eocene.net
• Autor/Equipo:
• Estado: Desaparecido.
• Licencia:
• Ventajas:
• Desventajas:
IV.5.Ambibalence
• Web: http://amb.sourceforge.net/
• Autor/Equipo: Loren Siebert.
• Estado: Versión 0.3. No parece muy activo.
• Licencia: Estilo Apache.
• Ventajas: Documentación pobre. No hay ejemplos.
• Desventajas: Parece una versión demasiado inicial.
IV.6.Krysalis
• Web: http://www.kompletecms.com/products/Krysalis/
• Autor/Equipo: Empresa InterAkt. Fundada en 2001 y con 30 empleados.
• Estado: Versión 2.4.1.
• Licencia: LGPL para los productos gratis.
• Ventajas: Desarrollado por una empresa. Soporte para varios sistemas de bases de
datos. Amplia documentación. Incluye un entorno de desarrollo.
• Desventajas: Hay tres versiones y las profesionales son de pago. No es un port de
algún estándar libre. Pertenece a una empresa privada que puede dejar de dar soporte
en cualquier momento.
IV.7.Ismo
• Web: http://sourceforge.net/projects/ismo/
• Autor/Equipo: 4 desarrolladores.
• Estado: Versión pre alfa 0.1.4. Parece inactivo, la última versión es de junio del 2004.
• Licencia: PHP.
• Ventajas:
• Desventajas:
IV.8.BinaryCloud
• Web: http://www.binarycloud.com/
• Autor/Equipo: No aparece en la web.
• Estado: Versión 3.0.0.
• Licencia: GNU FDL.
• Ventajas: Amplia documentación.
• Desventajas: No es un estándar, el diseño del software es propio.
IV.9.Mojavi
• Web: http://www.mojavi.org/
• Autor/Equipo: Sean Kerr.
• Estado: Versión 3.0. Última versión estable la 2.0.0. Parece activo.
• Licencia: LGPL.
• Ventajas:
• Desventajas: No parece respaldado por una empresa o conjunto de desarrolladores
grande.
IV.10.Horde
• Web: http://www.horde.org/horde/
• Autor/Equipo: 9 desarrolladores.
• Estado: Versión 3.0.6.
• Licencia: LGPL.
• Ventajas: Está muy desarrollado y hay una gran número de aplicaciones que lo
utilizan.
• Desventajas: No existe documentación de cómo usarlo solo directamente la API.
IV.11.PHITE
• Web: http://www.dreammask.com/PHITE.php?sitesig=PT
• Autor/Equipo: Cris Robson.
• Estado: Versión 0.92.
• Licencia: GPL.
• Ventajas: Está inspirado en ZOPE.
• Desventajas: Es un sencillo script para la creación rápida de webs que no sirve para
aplicaciones muy complejas.
IV.12.Blueshoes
• Web: http://www.blueshoes.org/
• Autor/Equipo:
• Estado: Versión 4.5.
• Licencia: Versión comercial y open source.
• Ventajas:
• Desventajas: Para propósitos comerciales es de pago.
IV.13.Cake PHP
• Web: http://cakephp.org/
• Autor/Equipo: 9 desarrolladores.
• Estado: Versión 0.10.0.
• Licencia:
• Ventajas: Compatible con PHP 4 y PHP 5. Amplia documentación. Está inspirado en
Ruby on Rails, que está actualmente en alza.
• Desventajas:
IV.14.phpwebtk
• Web: http://phpwebtk.sourceforge.net/
• Autor/Equipo: Brian Bisaillon y otro desarrollador.
• Estado: Versión 1.0.3 Alfa.
• Licencia: LGPL.
• Ventajas:
• Desventajas: No es un port de algún otro estándar reconocido.
IV.15.studs
• Web: http://mojavelinux.com/projects/studs/
• Autor/Equipo: Dan Allen.
• Estado: Vesrión 0.9.7.
• Licencia: Apache 2.0.
• Ventajas: PHP4 y PHP 5. Se trata de un port de STRUTS de Java. Amplia
documentación.
• Desventajas:
También se puede obtener una comparativa de los motores que existen actualmente en una de
las páginas de un tutorial de uno de ellos (Propel): http://propel.phpdb.org/docs/user_guide/.
V.1.Metastorage
Web: http://www.meta-language.net/metastorage.html
Metastorage es una aplicación que genera código automáticamente para una API orientada
a objetos, y tiene como finalidad la gestión del almacenamiento, recuperación y
manipulación de objetos persistentes.
Se trata de una librería que, a partir de la información de los objetos que queremos hacer
persistentes, nos compila una serie de clases para su manipulación, y nos crea los
esquemas para las bases de datos. Algunas de sus capacidades son:
Ventajas:
• Open source.
Desventajas:
V.2.Propel
Web: http://propel.phpdb.org/trac/
2. Al construir este modelo se crearán varias clases que se usarán para añadir,
actualizar, borrar y buscar datos en la tabla de libros (book). Propel generará
también un conjunto de subclases para personalizar su comportamiento sin
necesidad de hacer cambios a las clases creadas, las cuales serán regeneradas más
tarde cuando se cambie el modelo de objetos. Las clases generadas para el modelo
del ejemplo son:
BaseBookPeer es una clase con solo métodos estáticos (no es necesario crear
instancias) que se encarga de la manipulación de los datos en la tabla.
BookMap contiene el mapeo con la base de datos. En vez de tener que ejecutar lentas
consultas a la base de datos acerca de metadatos (por ejemplo saber que columnas son
clave primaria, claves externas, etc.), Propel compila una clase de mapeo que puede
devolver rápidamente información relevante acerca de la estructura de la tabla.
3. En el código podemos utilizar la clase Book como cualquier otra clase de PHP.
Propel será el encargado de gestionar el SQL y las llamadas a la base de datos. Un
ejemplo de uso que encontramos en el tutorial es el siguiente:
$books = BookPeer::doSelect($c);
foreach($books as $book) {
print "<br/>" . $book->getTitle();
}
Ventajas:
• Es un port de otro sistema utilizado de Java: Apache Torque.
• Parece el más avanzado y robusto de los proyectos, incluye una amplia
documentación.
• Implementa las relaciones entre las tablas con las claves externas.
• Genera clases para la personalización, no se usan sus clases directamente.
• Es mejor usar un software de desarrollo externo a desarrollar un software propio.
De esta manera se disponen de actualizaciones, nuevas capacidades, corrección de
bug, etcétera, a un coste cero. Si se usa un software propio es necesario
implementar cualquier nueva capacidad o necesidad.
Desventajas:
• Está hecho para PHP 5, el cual es muy reciente y no todos los servidores lo
soportan.
• Es necesario generar las clases, lo cual implica que ante cualquier cambio en una
clase tenemos que regenerar el código.
• Genera para cada tipo de objeto persistente cinco clases diferentes, lo cual redunda
en una gran cantidad de clases.
• Las clases del dominio heredan de las de persistencia.
• Hay un intermediario de persistencia para cada clase. En PerenQen, por el
contrario, solo hay una clase intermediario que gestiona el almacenamiento de
todas las clases, lo cual simplifica la generación de código, disminuye el número
de fallos producidos por no emplear la clase correcta, y facilita la personalización
de los intermediarios. En el caso de Propel al añadir un método a un intermediario
sería necesario añadirlo a todos los del resto de las clases persistentes.
En general parece una opción a tener en cuenta en desarrollos nuevos para PHP 5. Tendría
que hacerse un estudio más profundo para comprobar como afectaría su uso en el
rendimiento (si es rápido), en el desarrollo (si la generación de las clases en demasiado
engorrosa y debe hacerse a menudo), y en la flexibilidad para poder añadir nuevas
funcionalidades al motor como nuevos métodos a los intermediarios, nuevos drivers, etc.
V.3.DA_Data_object
Web: http://pear.php.net/manual/en/package.database.db-dataobject.php
Es una clase de PEAR cuyo propósito es:
Ventajas:
Desventajas:
• Acopla el dominio al motor de persistencia al hacer que las clases del dominio
hereden de las del motor de persistencia. Esto hace difícil cambiar a otro tipo de
motor de persistencia que no cumpla con una misma interfaz.
V.4.POG
Web: http://www.phpobjectgenerator.com/
POG (PHP Object Generator) es una página web que a partir de la especificación del
nombre, y de los atributos de una clase, genera el código necesario para gestionar el acceso a
la base de datos de esa clase.
Desventajas:
Es un framework para PHP que incluye facilidades para la gestión de las bases de datos.
Desventajas:
• Es demasiado reciente.
• No está documentado aún.