Professional Documents
Culture Documents
El autor
Universidad de La Rioja, Servicio de Publicaciones, 2012
publicaciones.unirioja.es
E-mail: publicaciones@unirioja.es
RESUMEN
Esta memoria recoge los aspectos ms relevantes del proyecto desarrollado
Migracin de infraestructura web a una nueva estructura basada en
frameworks. Estos aspectos son desde la planificacin del proyecto, la recogida
de requisitos, el diseo o los problemas surgidos a la hora de la implementacin.
El desarrollo de este proyecto surge de la necesidad de la empresa Digi
International Spain S.A. de portar la infraestructura actual que tenan a una
nueva basada en frameworks.
ndice General
1. Introduccin.................................................................................................................. 11
3. Anlisis .......................................................................................................................... 31
3.1. Descripcin de la aplicacin ................................................................................... 32
3.1.1 Zend Framework .............................................................................................. 33
3.1.2 Dojo Toolkit ...................................................................................................... 34
3.2. Anlisis de requisitos .............................................................................................. 35
3.2.1 Requisitos no funcionales ................................................................................ 35
3.2.2 Requisitos funcionales ..................................................................................... 37
3.2.2.1 Actores ..................................................................................................... 37
4. Diseo ........................................................................................................................... 47
4.1. Arquitectura de los frameworks ............................................................................ 48
4.1.1 Arquitectura de Zend Framework .................................................................... 48
4.1.2 Arquitectura de Dojo Toolkit ........................................................................... 52
4.2. Llamadas asncronas con Zend Framework y Dojo ................................................ 53
4.3. Estructura interfaz de usuario y sus componentes ................................................ 56
4.4. Mdulos ................................................................................................................. 59
4.5. Bases de datos........................................................................................................ 64
5. Implementacin ........................................................................................................... 69
5.1. Estructura del proyecto .......................................................................................... 70
5.1.1 Estructura de directorios ................................................................................. 70
5.1.2 Integracin Zend Framework - Dojo ................................................................ 71
5.1.3 Componentes del patrn MVC ........................................................................ 72
5.2. Componentes de Dojo Toolkit................................................................................ 75
5.3. Estructura principal ................................................................................................ 77
5.4. Men principal ....................................................................................................... 80
5.5. Mdulos ................................................................................................................. 82
5.5.1 Mapa de dispositivos ....................................................................................... 82
5.5.2 Servidor Linux................................................................................................... 87
5.5.3 Funciones genricas ......................................................................................... 88
5.6. Pruebas................................................................................................................... 90
7. Conclusiones ................................................................................................................. 97
8. Bibliografa.................................................................................................................... 99
ndice de imgenes
2.1. Arquitectura de la aplicacin ................................................................................. 19
2.2. Estructura de descomposicin del proyecto .......................................................... 20
2.3. Diagrama circular estimacin de horas .................................................................. 24
2.4. Calendario de trabajo ............................................................................................. 25
2.5. Diagrama de Gantt ................................................................................................. 26
3.1. Diagrama de Casos de Uso ..................................................................................... 38
3.2. Diagrama de Actividad (Identificarse) .................................................................... 41
4.1. Patrn MVC en Zend Frameworks ......................................................................... 49
4.2. Estructura de directorios ZF ................................................................................... 49
4.3. Controlador ZF........................................................................................................ 50
4.4. Componentes de Dojo Toolkit................................................................................ 53
4.5. Prototipo de la estructura ...................................................................................... 56
4.6. Prototipo AccordionContainer ............................................................................... 57
4.7. Prototipo TabContainer ......................................................................................... 57
4.8. Prototipo modulo Mapa de Dispositivos ............................................................... 60
4.9. Prototipo Build Server List...................................................................................... 62
4.10. Prototipo Release Tags ......................................................................................... 63
4.11. Tabla builds .......................................................................................................... 65
4.12. Tabla Client (Cliente) ............................................................................................ 65
4.13. Tabla Dut (Dispositivo) ......................................................................................... 66
4.14. Configuracin Base de Datos ............................................................................... 66
4.15. Zend_db_select .................................................................................................... 67
4.16. Mtodo fetchAll() ................................................................................................. 67
10
1 INTRODUCCIN
La presente memoria plasma el trabajo llevado a cabo en el desarrollo del
proyecto con nombre Migracin de infraestructura web a una nueva estructura
basada en frameworks.
Se trata de la migracin de una aplicacin web ya existente en la empresa que
propuso el proyecto. Es una aplicacin usada por los propios trabajadores,
llamada Web Interface for Automation of Test Plans. Necesita ser
restructurada basndose en dos frameworks.
No se va a desarrollar una aplicacin nueva, pero si se va a crear una estructura
desde cero y a partir de ese esqueleto se ir desarrollando la aplicacin siempre
basndose en la ya existente.
El aprendizaje de los dos frameworks y de su adaptacin a las necesidades de la
aplicacin son puntos importantes de este proyecto.
11
12
2 DOP: Documento de
Objetivos del Proyecto
Documento muy importante en cualquier proyecto. Se realiza al comienzo del
Proyecto y se especifican puntos como los antecedentes del proyecto, el alcance,
los riesgos, el plan de trabajo estimado, la estructura de descomposicin de
tareas,
13
2.1. Antecedentes
Digi International es una empresa internacional con sede en Minnetonka en el
estado de Minnesota (Estados Unidos). Se dedica a la fabricacin de productos y
tecnologas que facilitan la conexin de dispositivos a la red (LAN), empresa lder
en soluciones ConnectWare. Alguno de estos productos son servidores de
dispositivos integrados, servidores serie, dispositivos para administracin de
consola o mdulos embebidos. Todos estos productos se distribuyen
principalmente a los sectores hospitalario, financiero y mdico.
La nica oficina Espaola se encuentra en Logroo, en ella es en la que he
desarrollado mi proyecto. Consta de un equipo de Ingenieros Electrnicos los
cuales desarrollan los dispositivos propiamente dichos y por otro lado tambin
tienen un equipo de Ingenieros Informticos, ellos se encargan de desarrollar
software para testear esos dispositivos.
La oficina tiene una infraestructura web interna, para el uso exclusivo de los
trabajadores, esta infraestructura ofrece un control sobre los test realizados,
herramientas para programar test, control sobre las tareas efectuadas o las
tareas por efectuar, entre otras actividades. De ah surge el proyecto ya que el
sistema existente tenia una sobrecarga de trabajo en el lado del servidor, por ello
se pens migrar la infraestructura a una nueva basada en frameworks. A parte
de que esto dara solucin al problema, tambin se beneficiaria de todas las
mejoras o ventajas que aporta el uso de frameworks, por ejemplo: la
compatibilidad con todos los exploradores, el mantenimiento o un mejor y ms
rpido desarrollo.
14
2.2. Objetivos
Con este proyecto se pretenden alcanzar varios objetivos, que los describo a
continuacin:
Familiarizarse con hacer un proyecto, ya que a lo largo de la carrera se
estudia mucha teora sobre el desarrollo de un proyecto pero no se lleva
a la prctica con individualidad.
Adquirir conocimientos sobre los temas y herramientas que son
necesarios utilizar para la realizacin del proyecto y que no se han
estudiando en la universidad.
Aplicar los conocimientos adquiridos en el transcurso de la carrera.
Crear y desarrollar una nueva infraestructura basada en los frameworks
Dojo Toolkit y Zend Framework, para realizar la migracin del sistema
existente en la empresa.
Realizar la defensa del proyecto en fecha estimada.
Aprobar el proyecto para as poder terminar la carrera y seguir ampliando
conocimientos o poder empezar en el mundo laboral.
2.3. Descripcin
Este proyecto consiste en portar una infraestructura web actual en una nueva
infraestructura basada en frameworks. Para realizar esto es necesario conocer e
investigar como podemos adaptar nuestro sistema a algn Framework conocido
y preservar la lgica actual de usuario.
El sistema actual tiene caractersticas particulares que implican una sobre carga
de trabajo en el lado del servidor (como ya he explicado anteriormente), ya que
el sistema utiliza un servidor central. Por esta razn, la infraestructura debe estar
libre de procesos innecesarios, y usar el lado del cliente para realizar la mayora
del trabajo, minimizando la transferencia entre el servidor y el cliente.
15
2.4. Alcance
Al finalizar este proyecto lo que se tendr es lo siguiente:
La migracin de la antigua infraestructura web a una nueva basada en
frameworks.
Manual de instalacin de los dos frameworks.
Memoria del proyecto
Presentacin del proyecto
En cuanto al alcance de los mdulos de la aplicacin, desde un principio no se
acord la cantidad de mdulos que se iban a realizar. Lo ms importante es
conseguir realizar la estructura bsica, integrar los dos frameworks, y hacer una
separacin entre una parte pblica y otra parte privada.
16
17
Internet Explorer 8 y 9
Firefox (ultima versin)
Opera (ltima versin)
Chrome 8 o superior
18
2.6.2. Arquitectura
En este apartado se quiere explicar la arquitectura de la aplicacin web
(cliente/servidor), donde el framework Dojo va a encargarse de la parte del
cliente, la que vern los usuarios, y de la parte del servidor lo har Zend
Framework. Los datos necesarios se obtienen de una base de datos que se
encuentra en un servidor aparte.
19
2.7. Planificacin
20
Memoria: Elaboracin del documento que forma parte del Proyecto Fin de
Carrera y bsqueda de informacin para la realizacin de ste.
Estimacin: 70 horas.
Anlisis (Iniciacin)
En este paquete se incluyen todas las actividades que sirven para realizar una
descripcin ms detallada del proyecto y una especificacin ms precisa de los
requisitos.
21
Diseo
El paquete de Diseo contiene todas las actividades necesarias para la bsqueda
de soluciones que se ajusten a los requisitos planteados y analizados en el
paquete anterior (Anlisis).
Diseo de la estructura: Se har un anlisis detallado de la estructura que tiene
que tener el sistema aplicando todos los requisitos analizados con anterioridad.
Estimacin: 8 horas.
Diseo de los mdulos: Actividad que estudia cada uno de los mdulos que se
realicen en este proyecto. Y el estudio de las posibles soluciones para su
desarrollo.
Estimacin: 12 horas.
22
Implementacin
Actividades que englobar toda la implementacin de las distintas partes del
proyecto.
Implementacin mdulos de aprendizaje: se implementaran los mdulos de
aprendizaje acordados. Estos mdulos no formaran parte de la aplicacin final,
pero sern mdulos de formacin y referencia.
Estimacin: 32 horas.
23
24
2.7.4. Calendario
25
26
2.8. Riesgos
Es importante identificar los posibles riesgos de un proyecto (la posibilidad de
que se produzcan daos o perdidas) y aportar algn tipo de solucin o plan de
contingencia, as se conseguir cometer un menor numero de errores en el
desarrollo del proyecto.
Seguidamente se exponen los posibles riesgos:
Cancelacin del proyecto
Descripcin: al tratarse de un proyecto real, la empresa que lo
propone puede llegar a decidir en algn momento que no quiere
seguir adelante con l.
27
28
Errores de diseo
Descripcin: es probable que no se comprendan completamente
ciertos requerimientos que debe cumplir el sistema y esto origine un
diseo poco optimo.
29
30
3 ANLISIS
En este apartado se detallaran los requisitos y las especificaciones tanto
funcionales como no funcionales de cada parte de la aplicacin y se definirn los
casos de uso ms representativos.
31
32
33
34
-Calendario.
-Soporte para arrastrar y soltar.
Dojo maneja la comunicacin asncrona con el servidor, sta es una caracterstica
importante para la aplicacin web a realizar ya que necesitaremos realizar varias
comunicaciones asncronas entre el servidor y el cliente. Tradicionalmente, se
realizaba con el comando JavaScript XMLHttpRequest, de hecho es el objeto que
utiliza Dojo, pero el framework proporciona una capa de abstraccin, es decir,
abstraer al desarrollador del uso a bajo nivel de AJAX. Por lo que pueden usar
otros transportes y diferentes formatos de datos, como por ejemplo texto plano,
xml, JavaScript, JSON,
35
Seguridad
El acceso a ciertos mdulos de la aplicacin tiene que estar restringida a
los visitantes y solo podrn acceder usuarios registrados. Esto debe estar
controlado por la introduccin de un nombre de usuario y una
contrasea. Debe garantizarse que la informacin transmitida no pueda
ser capturada o interpretada.
Importancia: alta
Usabilidad
La aplicacin debe tener una interfaz sencilla para un uso intuitivo.
Debe definirse un estndar de interfaz tomando como referencia los
colores de la empresa, ya que con esto se tiene la probabilidad de que el
usurario este cmodamente trabajando con la aplicacin.
Los mensajes de error deben ser reportados por la propia aplicacin en la
medida de las posibilidades y no por el Sistema Operativo. Los mensajes
del sistema deben estar en el idioma apropiado, ingls.
Importancia: media
Portabilidad
La interfaz de la nueva aplicacin web se debe adaptar a varios
navegadores, ya citados anteriormente.
Por otro lado, la aplicacin tambin se tiene que adaptar a diferentes
plataformas. Se tendr que poder ejecutar en un ordenador de mesa, en
un porttil o incluso, en alguna ocasin, en algn dispositivo con pantalla
ms pequea. Tambin tendr que funcionar corriendo en distintos
sistemas operativos.
Importancia: alta
36
Escalabilidad
La aplicacin tiene que poder adaptarse a un incremento en el tamao de
los datos que maneja.
Importancia: alta
Reutilizacin
Algunas funcionalidades de ciertos mdulos son compartidas por otros
mdulos, en este sentido se especifica este requisito. Habr que crear
cdigo reutilizable o alguna biblioteca de clases que contenga funciones
reutilizables.
Importancia: media
3.2.2.1. Actores
Visitante: cualquier usuario que acceda a la aplicacin y navegue por ella
sin identificarse. Puede ver las secciones pblicas de la pgina.
Usuario logueado: visitante que se ha identificado en la aplicacin.
Adems de poder ver todas las secciones pblicas, puede ver los datos y
las secciones privadas.
Administrador: usuario que se ha identificado y tiene los privilegios de
administrador. Puede ver tanto la parte pblica como la parte privada y
adems acceder al men de administrador.
37
38
39
40
41
empresa donde est instalado ese cliente) y disponibilidad (si esta disponible
o no). La informacin que se puede ver de cada dispositivo es: nombre del
dispositivo, nombre de su plataforma, identificador, modulo, descripcin,
sistema operativo soportado, informacin adicional sobre la plataforma y la
disponibilidad del dispositivo (si est disponible, no disponible u ocupado
realizando un test).
Actores: Visitante, Usuario identificado y Administrador.
Precondiciones: Ninguna.
Proceso: el usuario accede al mdulo Map of devices a travs del men.
Visualiza todos los dispositivos con su informacin y la informacin de los
clientes de los cuales penden los dispositivos.
El usuario puede elegir ver slo los clientes disponibles (opcin por defecto),
con sus dispositivos disponibles o ver todos los clientes cada uno con todos
sus dispositivos, tanto disponibles, como no disponibles, como ocupados.
Post-condiciones: mdulo con informacin sobre los dispositivos.
42
43
Pgina de login
En este mdulo se va a realizar un logeo bsico para ver el
funcionamiento de las herramientas de autenticacin que proporciona
Zend Framework.
Para la interfaz de usuario se usar un formulario, aprendido ya su
funcionamiento en el mdulo anteriormente realizado. En este formulario
habr dos campos usuario y contrasea. El campo usuario solo admitir
caracteres alfabticos y el campo contrasea exigir la introduccin de 6
caracteres como mnimo. Ambos campos son requeridos.
Al enviar los datos:
Si los datos han sido introducidos segn los requisitos
mencionados, se comprueban los datos (usuario y contrasea) en
una base de datos, se crear una base de datos ficticia solo para
este ejemplo.
-Si los datos son correctos se redirecciona a otra pgina,
esta pgina contendr un mensaje indicando que el usuario
correspondiente se ha logueado con xito y tendr la
opcin de desloguearse, volviendo as a la pagina de login.
-Si los datos son incorrectos se mostrar por pantalla un
mensaje de error indicando que el usuario o la contrasea
introducidos no son vlidos.
Si los datos no han sido introducidos correctamente se
visualizaran los mensajes de error correspondientes.
Combobox dependientes
En este proyecto de ejemplo se pretende plasmar el uso de llamadas
asncronas al servidor mediante la tcnica AJAX. Esta llamada asncrona,
desde el cliente no se va a realizar de la manera tradicional que podamos
conocer sino que se har a travs de los mecanismos que ofrece Dojo, y
los datos enviados al servidor sern tratados como convenga Zend
Framework.
En la pgina aparecern dos combobox, Pases y Ciudades.
El primero, pases, contendr un listado con varios pases, por defecto no
estar seleccionado ninguno, para ver los pases disponibles habr que
desplegar el combobox.
44
45
46
4 DISEO
Captulo que trata de exponer las decisiones tomadas sobre el diseo de la
aplicacin, explicar toda la arquitectura del proyecto, detenindose sobre todo
en los frameworks. Tambin se mostrarn prototipos de las secciones ms
relevantes.
47
48
49
4.3. Controlador ZF
models: aqu irn todas las clases que creemos como modelos de
nuestra aplicacin.
views: carpeta encargada de guardar las vistas, las pginas con
HTML. Aqu es donde se genera la fachada de la interfaz de
usuario, lo que ve el usuario. Esta carpeta tiene dos subcarpetas:
-helpers: encargada de almacenar los view helpers, clases con
mtodos que se van a emplear en varios lugares, en varias vistas
50
51
52
53
Con el uso de AJAX vamos a conseguir que la parte del cliente se comunique
asncronamente con el servidor. En la parte del cliente se recogern los datos
necesarios y se enviaran al servidor, de esto se encarga Dojo. El servidor recibir
los datos, los tratar y los volver a mandar al cliente, de todo esto se encargar
Zend.
Aunque el formato ms habitual en AJAX para el envi de datos y su tratamiento
es el lenguaje XML, se ha decidido utilizar el formato JSON como alternativa. A
parte de ser un formato sencillo y ligero tambin resulta mucho ms sencillo
escribir un analizador semntico de JSON. En JavaScript, un texto JSON se puede
analizar fcilmente usando el procedimiento eval().
Un ejemplo simple de formato JSON sera el siguiente:
{nombre: Miguel, apellido: Pea}
Dojo ofrece unas funciones que permiten las interacciones de Ajax, estos
mtodos se encuentran en el componente Dojo Base y son dojo.xhrGet y
dojo.xhrPost. La primera funcin es para llevarla a cabo en una comunicacin
HTTP segn el mtodo Get, orientada a recoger informacin del servidor. La
otra funcin implementa una solicitud asncrona para HTTP POST, mas enfocada
en el envo de datos al servidor.
Ambas funciones incluyen varios campos, varias propiedades descritas a
continuacin:
content: campo que contiene un objeto JavaScript con pares de
valores clave/valor (nombre/cadena). Estos datos son los que se
van a mandar al servidor. Este parmetro es opcional.
url: url para dirigir la solicitud.
handleAs: designa el formato con el que manejar los datos
devueltos por el servidor (text, json,javascript, xml,). Es
conveniente asignar un formato que coincida con el devuelto
desde el servidor ya que sino puede dar error.
load: con esta propiedad se define una funcin que ser llamada
en una respuesta satisfactoria. Es opcional.
54
55
Para enviar algn dato PHP al cliente en formato JSON tambin se puede usar el
ayudante de accin, action helper, de la siguiente forma:
$this->_helper->json($dato)
56
57
58
4.4. Mdulos
El usuario puede acceder a los distintos mdulos de la aplicacin a travs del
men lateral, una vez seleccionado un mdulo ste aparecer en al parte central
de la pgina.
A continuacin se detallan los detalles de diseo de cada mdulo:
Mapa de dispositivos (Map of Decives)
En este mdulo existen dos objetos principales: los clientes y los
dispositivos. Cada cliente se va a crear con el widget titlePane que ofrece
Dojo.
El widget titlePane pertenece al componente principal dijit
(dijit.titlePane). Consiste en un panel que se puede abrir o colapsar, con
un ttulo en la parte superior. La visibilidad del contenido del panel se
activa pinchando sobre su ttulo. Por defecto al crear este widget aparece
desplegado, pero mediante una propiedad poder especificar que
aparezca colapsado.
En el titulo de cada componente de un cliente se muestra la informacin
ms relevante: el nombre del cliente, la ip, su identificador, los
dispositivos disponibles que tiene asociados y una pequea descripcin, a
parte tambin se puede visualizar una imagen del cliente diferenciando si
esta disponible o no.
En su contenido se alojan los dispositivos a su cargo, estos dispositivos
tambin se muestran a travs de un titlePane. En el titulo de los
dispositivos se muestra el nombre, la plataforma del dispositivo, su
identificador, y una imagen de l. En el contenido aparece el mdulo del
dispositivo, su estado y una descripcin.
Los clientes van a aparecen colapsados, es decir, en un primer vistazo el
usuario solo podr ver los clientes. Al desplegar cada cliente aparecen los
dispositivos, y estos ya aparecern expandidos.
Toda la informacin referente a cada cliente y cada dispositivo no
aparece en el mismo, por ello, se crear un objeto para mostrar toda la
59
60
Por defecto aparecern solo los clientes disponibles, conteniendo solo los
dispositivos disponibles. El usuario a travs de un checkbox podr desmarcar la
opcin de ver solo los clientes disponibles y as poder ver todos los clientes con
todos sus dispositivos correspondientes. En cualquier momento puede volver a
marcar esa casilla y as aparecern solo los clientes que estn disponibles en ese
momento.
Los clientes disponibles se representarn mediante un crculo verde en su
imagen y un crculo rojo en caso de no estar disponible. Con los dispositivos lo
mismo, verde si estn disponibles, rojo si no lo estn y amarillo si estn ocupados
realizando un test.
61
62
Las tablas que se van a usar pertenecen al componente principal dojox, donde se
alojan los elementos un poco ms complejos de Dojo. Dentro de dojox, las dos
tablas cuelgan de los componentes denominados grid.
DataGrid (dojox.grid.DataGrid) se trata de una tabla, muy similar a una hoja de
clculo, que ofrece posibilidades al usuario como la de cambiar el tamao de las
columnas, u ordenar los datos por columnas.
63
64
65
Para poder usar los datos de las BD en el proyecto Zend Framework hace falta
declarar la BD y especificar sus parmetros, todo esto en el archivo de
configuracin config.ini situado en el directorio /application/configuration/.
66
Zend Framework ofrece el componente Zend_db, el cual provee de una API para
la creacin de sentencias SQL. Se pueden crear sentencias SQL de dos formas
principalmente. La primera es a travs de la creacin de un objeto select
mediante el mtodo select() del db adapter, desde el que luego se pueden ir
seteando individualmente cada parte de la sentencia (from, where, ). Un
ejemplo de esta forma de crear sentencias sera el siguiente:
4.15. Zend_db_select
La otra forma es a travs del mtodo fetchAll(). Se escribe una consulta SQL que
se pasa como parmetro del mtodo y ste devuelve un array con las filas
devueltas por la consulta. Si se quiere obtener toda la informacin de una tabla
(todas las filas) basta con ejecutar fetchAll(), sin ningn parmetro. Este mtodo
tambin ofrece la posibilidad de pasarle como parmetros las siguientes
variables: $where, $order, $count, $offset.
Ejemplo del mtodo fetchAll(), pasando como parmetro un String con la sentencia SQL:
67
68
5 IMPLEMENTACIN
En este captulo se explican las principales caractersticas de la creacin,
propiamente dicha, del proyecto. Las decisiones importantes tomadas en cuanto
a cuestiones de implementacin. Tambin se hace referencia a los problemas
surgidos y cul o cules han sido las soluciones.
69
70
71
Problemas
La informacin encontrada en pginas de internet era algo contradictoria sobre
los pasos a seguir para que Zend Framework entendiese Dojo y sus
componentes. Por ello al principio del desarrollo del proyecto hubo varios
problemas con la integracin. No se consegua obtener el cdigo necesario para
el entendimiento ni donde colocarlo.
Modelo
El modelo de la aplicacin va a residir en la carpeta /application/models, en esta
carpeta se guardan todos los modelos (clases) necesarios. La implementacin de
los modelos escogida ha sido mezcla de los dos tipos distintos que se pueden
realizar (explicados en el punto 4.1.1 Arquitectura de Zend Framework). Por un
lado se crea un archivo .php por cada tabla a usar de la Base de Datos, cada
archivo se nombra con el de la tabla al que hace referencia. Por otro lado
tambin se crea un archivo por cada controlador establecido en la aplicacin,
pero no todos estos modelos sern necesarios.
Cada modelo es una clase que extiende de Zend_Db_Table_Abstract. En cada
clase se definen las funciones necesarias. En los modelos relacionados con las
tablas de la Base de Datos lo primero que hay que definir dentro de la clase es
una variable protegida con el nombre de la tabla de la que vamos a extraer
informacin y a continuacin las funciones.
72
Controlador
Los controladores de la aplicacin residen en la carpeta /application/controllers y
sirven para comunicar el modelo con la vista. Al crear el proyecto se crean los
controladores ErrorController.php e IndexController.php, el controlador Error es
donde se detallarn los posibles errores de la aplicacin. La aplicacin constar
de un controlador por cada parte o por cada mdulo de la aplicacin, para toda
la estructura general se emplear el controlador por defecto (IndexController),
ah estar todo lo relacionado con la cabecera, el men, y luego un controlador
distinto por cada mdulo uno para el mdulo Mapa de Dispositivos
(MapofDevicesController.php) y otro para el mdulo Servidor Linux
(BuildserverController.php). La parte de autenticacin se encuentra dentro de la
estructura general pero se considera lo suficientemente compleja como para
crear un controlador de ella (AuthController.php).
73
En cada controlador se pueden definir dos clases de mtodos, aunque todos los
mtodos se denominan acciones (como ya se explico en el punto 4.1.1.
Arquitectura de Zend Framework). Los definidos como funciones Ajax no tendr
ninguna vista asociada, sin embargo los dems si que la tendrn, una vista por
cada accin del controlador.
Vista
Las vistas se encuentran en el directorio /application/views/scripts, son archivos
.phtml, ya que ah se mezcla cdigo php, html y javascript o referencias a
archivos javascript. Las vistas no se generan porque s, si no que existir una vista
por cada accin de cada controlador. Para cada controlador se crea una carpeta
en el directorio de las vistas y dentro de cada una de esas carpetas estarn los
archivos .phtml, uno por cada accin. El nombre de las vista es el mismo que el
nombre de la accin a la que hacen referencia.
Un ejemplo de vista sera el siguiente:
74
75
76
Para hacer referencia a uno de los temas de Dojo basta con especificarlo en las
vistas. Escribiendo el nombre del tema en la propiedad class de la etiqueta
<body> del HTML:
<body class="tundra">
77
78
5.8. Layout.phtml
79
80
Problemas
Algunos de los problemas surgidos a la hora de implementar el men han sido:
Surgieron problemas a la hora de definir la llamada Ajax en parte del
controlador, en un principio no saba donde especificarla. Se intent
especificar en la misma accin de la vista del men, pero esto provocaba
errores.
SOLUCIN: crear una funcin especfica para la llamada Ajax, esto dentro
del mismo controlador donde estaba la accin asociada a la vista del
men.
Problema con las hojas de estilo. El men se mostraba con el aspecto de
una estructura de directorios, ya que solo estaba utilizando los temas
(themes) de Dojo. Lo que haca falta era darle un aspecto de men. Pero
al intentar modificar nuestras propias hojas de estilo se producan
conflictos con las hojas de estilo de Dojo. Tambin se producan errores al
cambiar directamente las propias hojas de estilo de Dojo.
SOLUCIN: copiar el cdigo de las hojas de estilo de Dojo en nuestras
propias hojas de estilo y desde ah modificar los datos necesarios. Esta
solucin adoptada fue una solucin parcial. Ms adelante se explicar la
81
5.5. Mdulos
82
controlar que clientes se visualizan (solo los disponibles o todos). Todo lo dems
se realiza en un archivo .js que se incluye en la vista a travs del siguiente cdigo:
Partes de cdigo
En la siguiente imagen se muestra el cdigo de una funcin del Modelo de la
tabla Dut, tabla de dispositivos. La funcin devuelve el nmero de dispositivos
disponibles de un cliente con una id determinada como parmetro.
83
84
Problemas
Hacer clic en los clientes. Al hacer clic en un cliente (en un
dijit.TitlePane), ste se despliega y muestra en su contenedor todos sus
dispositivos asociados. Estos dispositivos se cargan al desplegar el cliente
y se borran cada vez que se colapsa. Las funciones de crear y borrar los
dispositivos, se definan en el evento onClick del titlePane cliente. El
problema surga cuando el cliente estaba desplegado, mostrando sus
dispositivos y el usuario clicaba en uno de ellos, a parte de pinchar en un
dispositivo tambin estaba clicando en el objeto cliente, por lo tanto se
volvan a crear los dispositivos del cliente y saltaba un error. Se estaba
intentando crear un componente (un dispositivo) con una id que ya
exista.
SOLUCIN: La solucin era asociar el evento onClick slo a la parte del
ttulo del cliente, no asociarlo a todo el objeto. Tras muchas pruebas y
85
86
Problemas
Problemas con la visualizacin de las tablas. Despus de haber creado la
tabla de Dojo dojox.grid.GridData con todas las propiedades necesarias y
agregando unos datos de prueba, a la hora de visualizarla no pareca una
tabla, el nombre de las columnas estaba desordenado, las celdas no
constaban de ningn tipo de separacin, En definitiva, la tabla se vea
mal.
SOLUCIN: para este componente, en concreto, hace falta aadir las
hojas de estilo del componente Grid en la vista del mdulo. No vale solo
con hacer referencia al tema en la etiqueta <body>, como para los dems
componentes. Los dos archivos aadidos fueron los siguientes:
../dojox/grid/resource/Grid.css
../dojox/grid/resource/tundraGrid.css
87
88
Dentro de esta funcin, aparte de detallar la llama Ajax con dojo.xhrPost (como
ya se explic en el punto 4.2. Llamadas asncronas con Zend Framework y Dojo)
tambin se crea un sistema opcional para aadir una imagen para mostrar
mientras se esta realizando la llamada Ajax. No todas las llamadas Ajax tienen
que llevar asociada una imagen de loading.
Otras de las funciones incluidas en este archivo son funciones para crear widgets
de Dojo, por ejemplo el widget titlePane se crea varias veces en el mdulo Mapa
de dispositivos. Ah recurriremos a la funcin genrica para crear un titlePane.
89
5.6. Pruebas
La realizacin de pruebas sobre una aplicacin es algo importante. Proporcionan
una seguridad de que lo desarrollado hasta el momento va por buen camino. Es
una forma de comprobacin del cdigo implementado. Cuantas ms pruebas se
realicen menos probabilidad de fallos.
Durante la implementacin de la aplicacin se han ido haciendo abundantes
pruebas, estas pruebas se podran denominar micro-pruebas. No se han
realizado pruebas sobre conjuntos grandes de cdigo, sino que se han ido
realizando con cada funcionalidad implementada, o pequea parte desarrollada.
Las pruebas realizadas constantemente, a lo largo de todo el desarrollo de la
aplicacin, han sido las de comprobacin del funcionamiento en distintos
entornos, distintos navegadores. Tanto para comprobar la distribucin de los
componentes, su aspecto visual y su comportamiento.
90
6 GESTIN DEL
PROYECTO
En este apartado se va a tratar la gestin real del proyecto. En el apartado 1 DOP:
Documento de Objetivos del Proyecto se trat la futura gestin del proyecto, se
hicieron aproximaciones y estimaciones del tiempo y distribucin de actividades,
pero en este captulo se estudian los tiempos reales, la comparacin entre lo
estimado y lo real.
91
92
93
Actividades
Horas estimadas
Horas reales
142 horas
30 horas
12 horas
20 horas
70 horas
10 horas
224 horas
98 horas
12 horas
24 horas
80 horas
10 horas
Anlisis
Anlisis de Requisitos
Anlisis del sistema
Estudio mdulos de aprendizaje
Diseo
Diseo de la estructura
Diseo de los mdulos
Revisin del diseo
Implementacin
Implementacin mdulos de aprendizaje
Implementacin de la estructura
Implementacin de los mdulos
Revisin de la implementacin
Anlisis de Resultados e integracin
Ejecucin de pruebas
Integracin
Entrega y aprobacin de documentacin
20 horas
4 horas
10 horas
6 horas
30 horas
8 horas
12 horas
10 horas
268 horas
32 horas
48 horas
180 horas
8 horas
13 horas
8 horas
4 horas
1 horas
24 horas
4 horas
10 horas
10 horas
28 horas
10 horas
10 horas
8 horas
458 horas
94 horas
80 horas
274 horas
10 horas
16 horas
11 horas
4 horas
1 horas
94
El total de horas estimadas fueron 473 h. y el total de horas reales son 750 h. por
lo que el desfase del proyecto ha sido de 277 horas. El desfase se ha producido
sobre todo en la etapa de Direccin del Proyecto y la de Implementacin, debido
a la poca experiencia en la realizacin de estimaciones en proyectos y debido a
los problemas surgidos.
A continuacin se muestra un diagrama de barras para expresar grficamente la
comparativa de los tiempos estimados con los tiempos reales:
95
96
7 CONCLUSIONES
Este es uno de los ltimos captulos de la memoria, debido a que en este
apartado se plasman las ideas finales, tanto de la aplicacin desarrollada en s
como tambin las conclusiones personales.
97
98
8 BIBLIOGRAFA
En este apartado se van a detallar las distintas fuentes de informacin utilizadas
a lo largo de todo el proyecto.
99
Una de las fuentes utilizadas han sido los libros, tanto en formato digital como en
formato fsico:
Begining Zend Framework Armando Padilla
ZendEnterprise PHP John Coggeshall, Morgan Tocker
ZendFramework in Action Rob Allen, Nick Lo
Dojo the definitive guide Matthew A.Russell
Pro PHP Patterns, Frameworks, Testing and More - Kevin McArthur
Programacin en JavaScript Jose Manuel Alarcn
Adding Ajax Shelley Powers
PHP 6 Francisco Charte Ojeda
Mucha otra informacin se ha obtenido de diferentes paginas web que se
detallan a continuacin:
Pginas oficiales:
http://www.dojotoolkit.org: web oficial de Dojo Toolkit para
descargar el framework y obtener toda la informacin sobre
l.
http://www.framework.zend.com: web oficial de Zend
Framework, desde donde se descarg el framework, y sitio
para obtener informacin.
Otras pginas web:
http://
http://angelorum.blogspot.com.es/2010/09/zendframework-1-instalacion.html: blog donde se pueden
encontrar varios artculos sobre ZF, como instalarlo,
explicacin de sus componentes, trabajar con Ajax,
http://zfdes.com/index.php/Portada: documentacin sobre
Zend Framework en espaol.
http://www.roseindia.net/dojo: tutorial sobre Dojo.
100
101