Class ResultsPanel - Repositorio de la Universidad de Oviedo

Anuncio
UNIVERSIDAD DE OVIEDO
ESCUELA INGENIERÍA INFORMÁTICA
TRABAJO FIN DE MÁSTER
“Sistema de monitorización y programación de Backups”
Director: Dr. Agustı́n Cernuda Del Rı́o
Autor: Faustino Alonso Posada
2
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
Agradecimientos
A Ecocomputer S.L., en especial a Myrtha y Agustı́n, por su colaboración e interés en el
devenir del proyecto.
Y al Dr. Agustı́n Cernuda Del Rı́o, director de este trabajo fin de máster.
Resumen
El proyecto aquı́ presentado consiste en una infraestructura que permita la monitorización por parte de una empresa, de copias de seguridad realizadas por sus clientes. El
proyecto ha sido realizado para la empresa Ecocomputer S.L. la cual ofrece a sus clientes
servicios de hosting y mantenimiento de sus instalaciones entre otros servicios. Se pretende con este proyecto, controlar que las copias de seguridad de los clientes se realizan de
manera adecuada.
La infraestructura desarrollada consiste en una plataforma Web que ofrece resultados sobre las copias realizadas por los clientes. Esta plataforma se alimenta de los datos
emitidos por aplicaciones de escritorio instaladas en los ordenadores y/o servidores de los
clientes. Resumiendo la funcionalidad básica de cada parte, podemos dividir el proyecto
en 3 módulos:
Aplicación Cliente: Aplicación de escritorio que permitirá programar Backups de
bases de datos SQL Server o de directorios de los equipos de los clientes, realizará las
copias y almacenará un histórico de resultados.
Plataforma Web: Permitirá a los usuarios registrados (Personal de la empresa y
clientes autorizados) observar los backups realizados y los resultados de los mismos.
Servicio Web: Será necesario para comunicar los módulos anteriores. La aplicación
cliente enviará mediante éste los resultados a la base de datos de la plataforma Web.
De tal manera que el cliente tendrá en su equipo instalado el primer módulo y en este
software deberá programar las copias de seguridad que desea realizar de su equipo.
La aplicación Web tendrá una función informativa, mostrando los resultados de los
backups realizados. Ésta deberá integrarse con una plataforma de la empresa y hacer uso
de su sistema de gestión de usuarios.
El servicio Web será únicamente el canal de comunicación de las aplicaciones de los
clientes con la base de datos utilizada por la plataforma Web.
El proyecto se ha visto alterado en cuanto a alcance, debido a modificaciones importantes en los requisitos en una fase avanzada del mismo. El cliente consideró necesarias
funcionalidades no contempladas al inicio del proyecto y fue necesario realizar un nuevo
diseño para contemplarlas.
La tecnologı́a utilizada para todo el proyecto, ha sido a petición de la empresa libre de
licencias y autorizada para su comercialización. Además, el proyecto ha sido principalmente
desarrollado en lenguaje Java y para los sistemas de bases de datos se ha hecho uso de
SQL Server en el caso de la plataforma y el servicio Web y SQLite para las aplicaciones
de escritorio cliente.
Para la realización de pruebas se han utilizado herramientas como JUnit, para el control
de pruebas unitarias; y otras como: TAW, HERA, aDesigner . . . para apoyar las pruebas
de usabilidad y accesibilidad realizadas con seis sujetos. Éstas se han visto acompañadas
de pruebas manuales para la evaluación del sistema.
Palabras clave
Backup,FTP, programador de tareas, SQL Server
Abstract
The developed project is an infrastructure that enables monitoring of backups made
by customers. The project was carried out to EcoComputer limited liability company
which offers clients hosting, maintenance and other services. This project aims to control
customers do their backups properly.
The created infrastructure is a web platform for displaying the results on copies made
by customers. This platform is updated by desktop applications installed on computers
and / or servers of customers. Summarizing the basic functionality of each part, we can
divide the project into 3 modules:
Client Application: Desktop application that let you schedule backups of SQL Server
databases or directories, make copies and store a history of results.
Web Platform: Allow registered users (employees of the company and authorized
customers) to display backups made ??and the results thereof.
Web Service: It will be necessary to communicate the other modules. The client
application sends by this web service, information to the Web platform database.
So the customer will have in his computer installed the first module, and on this
software must program the backup that want to perform.
The Web application will have an informative function, showing the results of backups
made. This should be integrated with an enterprise platform and make use of that user
management system.
The Web service will only make a communication channel for customers to connect to
the database used by the Web platform.
The project scope has been modified by significant changes in the requirements, in an
advanced stage of development. The customer requested features that were not planned
at the beginning of the project and it became necessary to make a new design.
The technology used to develop the project, has been free of licenses and authorized
for marketing. In addition, the project has been developed in Java and have used database
systems: SQL Server and SQLite.
For testing I used tools like JUnit and TAW, HERA, aDesigner ... to contrast the
usability and accessibility tests conducted with six people. In addition, manual tests have
been performed to evaluate the system.
Keywords
Backup,FTP, Scheduler, SQL Server
Índice general
1. Introducción
19
1.1. Motivación y justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.2. Estudio de la situación previa al proyecto . . . . . . . . . . . . . . . . . . . 20
1.3. Objetivos del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2. Aspectos teóricos
2.1. Backup (copia de seguridad) . . .
2.1.1. Descripción . . . . . . . .
2.1.2. Aplicación en el proyecto
2.2. Quartz Scheduler . . . . . . . . .
2.2.1. Descripción . . . . . . . .
2.2.2. Aplicación en el proyecto
2.3. Lenguaje unificado de modelado
2.3.1. Descripción . . . . . . . .
2.3.2. Aplicación en el proyecto
2.4. Métrica versión 3 . . . . . . . . .
2.4.1. Descripción . . . . . . . .
2.4.2. Aplicación en el proyecto
2.5. Struts2 . . . . . . . . . . . . . . .
2.5.1. Descripción . . . . . . . .
2.5.2. Aplicación en el proyecto
2.6. SQL Server 2005 . . . . . . . . .
2.6.1. Descripción . . . . . . . .
2.6.2. Aplicación en el proyecto
2.7. Apache Tomcat . . . . . . . . . .
2.7.1. Descripción . . . . . . . .
2.7.2. Aplicación en el proyecto
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3. Planificación del proyecto y resumen de
3.1. Planificación . . . . . . . . . . . . . . .
3.1.1. Planificación inicial del proyecto
3.1.2. Planificación final del proyecto .
3.1.3. Justificación de las diferencias . .
3.2. Resumen del presupuesto . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
23
23
23
23
24
24
24
25
25
25
25
25
25
26
26
26
27
27
27
27
27
27
presupuestos
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
29
29
30
31
32
33
.
.
.
.
.
.
.
35
35
35
35
35
39
39
42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4. Análisis
4.1. Definición del sistema . . . . . . . . . . . . . . . . . .
4.1.1. Determinación del alcance del sistema . . . . .
4.2. Requisitos del sistema . . . . . . . . . . . . . . . . . .
4.2.1. Obtención de los requisitos del sistema . . . . .
4.2.2. Identificación de actores del sistema . . . . . .
4.2.3. Especificación de casos de uso . . . . . . . . . .
4.3. Identificación de los subsistemas en la fase de análisis .
13
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ÍNDICE GENERAL
ÍNDICE GENERAL
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
42
43
44
44
45
51
51
54
55
55
56
57
5. Diseño del Sistema
5.1. Arquitectura del sistema . . . . . . . . . . . . . . . . . . . . .
5.1.1. Diagramas de paquetes . . . . . . . . . . . . . . . . . .
5.1.2. Diagrama de componentes . . . . . . . . . . . . . . . . .
5.1.3. Diagrama de despliegue . . . . . . . . . . . . . . . . . .
5.2. Diseño de clases . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.1. Diagrama de clases . . . . . . . . . . . . . . . . . . . . .
5.3. Diagramas de interacción y estados . . . . . . . . . . . . . . . .
5.3.1. Aplicación de escritorio para entornos Windows . . . . .
5.3.2. Aplicación Web . . . . . . . . . . . . . . . . . . . . . . .
5.4. Diagrama de secuencia . . . . . . . . . . . . . . . . . . . . . . .
5.5. Diseño de la base de datos . . . . . . . . . . . . . . . . . . . . .
5.5.1. Descripción de los sistemas de gestión de bases de datos
5.5.2. Integración de lo sistemas de gestión de bases de datos .
5.5.3. Diagrama entidad-relación . . . . . . . . . . . . . . . . .
5.6. Diseño de la interfaz . . . . . . . . . . . . . . . . . . . . . . . .
5.6.1. Aplicación de escritorio para Windows . . . . . . . . . .
5.6.2. Aplicación Web . . . . . . . . . . . . . . . . . . . . . . .
5.7. Especificación técnica del plan de pruebas . . . . . . . . . . . .
5.7.1. Pruebas unitarias . . . . . . . . . . . . . . . . . . . . . .
5.7.2. Pruebas de integración y del sistema . . . . . . . . . . .
5.7.3. Pruebas de usabilidad y accesibilidad . . . . . . . . . .
5.8. Decisiones del proyectante . . . . . . . . . . . . . . . . . . . . .
5.8.1. Seguridad en las contraseñas . . . . . . . . . . . . . . .
5.8.2. Código sencillo de mantener . . . . . . . . . . . . . . . .
5.8.3. Base de datos sin eliminaciones . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
59
59
59
61
61
63
63
68
68
69
69
71
71
71
72
73
73
75
76
76
76
76
77
77
78
78
.
.
.
.
.
.
.
.
.
.
.
.
.
81
81
81
81
82
82
82
83
83
85
85
85
85
85
4.4.
4.5.
4.6.
4.7.
4.3.1. Descripción de los subsistemas . . . . . . . . .
4.3.2. Descripción de los interfaces entre subsistemas
Diagrama de clases preliminar del análisis . . . . . . .
4.4.1. Diagrama de clases . . . . . . . . . . . . . . . .
4.4.2. Descripción de las clases . . . . . . . . . . . . .
Análisis de casos de uso y escenarios . . . . . . . . . .
4.5.1. Aplicación cliente para Windows . . . . . . . .
4.5.2. Aplicación Web . . . . . . . . . . . . . . . . . .
Análisis de interfaces de usuario . . . . . . . . . . . . .
4.6.1. Aplicación cliente para Windows . . . . . . . .
4.6.2. Aplicación Web . . . . . . . . . . . . . . . . . .
Especificación del plan de pruebas . . . . . . . . . . .
6. Implementación del sistema
6.1. Estándares y normas seguidos . . . . . . . . . . . . .
6.1.1. XTML 1.1 . . . . . . . . . . . . . . . . . . . .
6.1.2. CSS 3 . . . . . . . . . . . . . . . . . . . . . .
6.1.3. Estándares de programación . . . . . . . . . .
6.1.4. Modelo-vista-controlador . . . . . . . . . . .
6.1.5. Patrón de diseño DAO . . . . . . . . . . . . .
6.2. Lenguajes de programación . . . . . . . . . . . . . .
6.2.1. Java . . . . . . . . . . . . . . . . . . . . . . .
6.3. Herramientas y programas usados para el desarrollo
6.3.1. Eclipse . . . . . . . . . . . . . . . . . . . . . .
6.3.2. SQL Server Management Studio Express . . .
6.3.3. Enterprise Architect . . . . . . . . . . . . . .
6.3.4. Dia . . . . . . . . . . . . . . . . . . . . . . . .
14
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
ÍNDICE GENERAL
6.3.5. Microsoft Office Project
6.3.6. TeXworks . . . . . . . .
6.4. Creación del sistema . . . . . .
6.4.1. Problemas encontrados
6.4.2. Descripción detallada de
ÍNDICE GENERAL
. .
. .
. .
. .
las
. . . .
. . . .
. . . .
. . . .
clases
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
86
86
87
87
89
7. Desarrollo de las pruebas
7.1. Pruebas unitarias . . . . . . . . . . . . . .
7.1.1. Pruebas del programador de tareas
7.2. Pruebas del sistema . . . . . . . . . . . .
7.3. Pruebas de usabilidad y accesibilidad . . .
7.3.1. Pruebas de usabilidad . . . . . . .
7.3.2. Pruebas de accesibilidad . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
91
91
91
94
95
95
97
8. Manuales del sistema
8.1. Manual de instalación . . . . . . . . . . . . . . . . .
8.1.1. Instalación del cliente . . . . . . . . . . . . .
8.1.2. Instalación de la aplicación y el servicio Web
8.2. Manual de ejecución . . . . . . . . . . . . . . . . . .
8.2.1. Arrancar el servidor Web . . . . . . . . . . .
8.2.2. Arrancar la aplicación de escritorio . . . . . .
8.3. Manual de usuario . . . . . . . . . . . . . . . . . . .
8.3.1. Aplicación de escritorio cliente . . . . . . . .
8.3.2. Aplicación Web . . . . . . . . . . . . . . . . .
8.4. Manual del programador . . . . . . . . . . . . . . .
8.4.1. Aplicación de escritorio para Windows . . . .
8.4.2. Aplicación Web . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
109
. 109
. 109
. 110
. 111
. 111
. 111
. 112
. 112
. 116
. 118
. 118
. 118
9. Conclusiones y ampliaciones
9.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . .
9.2. Ampliaciones . . . . . . . . . . . . . . . . . . . . . .
9.2.1. Cliente para sistemas GNU/Linux . . . . . .
9.2.2. Aplicación para dispositivos móviles . . . . .
9.2.3. Aplicación Web con mayor funcionalidad . .
9.2.4. Realización de backups de máquinas virtuales
9.2.5. Permitir copias incrementales o diferenciales .
9.2.6. Mejoras de usabilidad del producto . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
125
. 125
. 125
. 126
. 129
. 129
. 130
. 131
. 132
10.Apéndices
10.1. Primer análisis del proyecto . . . . . . . . . . . . . . .
10.1.1. Determinación del alcance del sistema . . . . .
10.1.2. Requisitos funcionales . . . . . . . . . . . . . .
10.2. Instalación de Microsoft SQLServer 2005 y creación de
10.2.1. Servidor de base de datos . . . . . . . . . . . .
10.2.2. Sistema de gestión de base de datos . . . . . .
10.2.3. Base de datos . . . . . . . . . . . . . . . . . . .
10.3. Contenido Entregado en el CD-ROM . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
la base de
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . .
. . . .
. . . .
datos
. . . .
. . . .
. . . .
. . . .
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
121
121
122
122
122
122
122
123
123
15
ÍNDICE GENERAL
16
ÍNDICE GENERAL
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
Índice de figuras
2.1. Funcionamiento general de struts2 . . . . . . . . . . . . . . . . . . . . . . . 26
3.1. Planificación inicial del proyecto. . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2. Planificación final del proyecto. . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.
4.2.
4.3.
4.4.
4.5.
4.6.
4.7.
4.8.
4.9.
Diagrama de casos de uso de la aplicación cliente en Windows .
Diagrama de casos de uso de la aplicación Web . . . . . . . . .
Diagrama relación entre los sistemas implicados en el proyecto.
Diagrama de clases de análisis, aplicación de escritorio . . . . .
Diagrama de clases de análisis, aplicación Web . . . . . . . . .
Autenticación en el sistema . . . . . . . . . . . . . . . . . . . .
Creación de una programación de Backup . . . . . . . . . . . .
Resultados de los Backups . . . . . . . . . . . . . . . . . . . . .
Tareas creadas en el sistema . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
41
42
43
44
44
55
55
56
56
5.1. Diagrama de paquetes de la aplicación de escritorio para Windows . .
5.2. Diagrama de paquetes de la aplicación Web . . . . . . . . . . . . . . .
5.3. Diagrama de componentes del proyecto . . . . . . . . . . . . . . . . . .
5.4. Diagrama de despliegue del proyecto . . . . . . . . . . . . . . . . . . .
5.5. Diagrama de clases entities . . . . . . . . . . . . . . . . . . . . . . . .
5.6. Diagrama de clases del paquete Exec . . . . . . . . . . . . . . . . . . .
5.7. Diagrama de clases del paquete Util . . . . . . . . . . . . . . . . . . .
5.8. Diagrama de clases de la aplicación Web . . . . . . . . . . . . . . . . .
5.9. Diagrama de clases del servicio Web . . . . . . . . . . . . . . . . . . .
5.10. Diagrama de estados de creación del primer backup . . . . . . . . . . .
5.11. Diagrama de estados de la aplicación Web . . . . . . . . . . . . . . . .
5.12. Diagrama de secuencia en la creación de un Backup . . . . . . . . . .
5.13. Diagrama Entidad-Relación de la base de datos de la aplicación cliente
5.14. Tablas empleadas por la aplicación Web . . . . . . . . . . . . . . . . .
5.15. Diseño del panel de autenticación . . . . . . . . . . . . . . . . . . . . .
5.16. Diseño del panel de resultados . . . . . . . . . . . . . . . . . . . . . . .
5.17. Diseño del panel de Log y de Configuración . . . . . . . . . . . . . . .
5.18. Diseño del panel de Log y de Configuración . . . . . . . . . . . . . . .
5.19. Diseño de la aplicación Web. Resultado de Backups . . . . . . . . . . .
5.20. Diseño de la aplicación Web. Resultado de Tareas . . . . . . . . . . . .
5.21. Diseño de la pantalla de conexiones con contraseñas visibles . . . . . .
5.22. Diseño de la base de datos en el primer análisis del proyecto . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
59
60
61
62
63
64
65
66
67
68
69
70
72
73
73
74
74
74
75
75
77
78
7.1. Captura del resultado de JUnit al pasar las pruebas del formateador de
CRON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2. Captura del resultado de JUnit al pasar las pruebas del compresor de directorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.3. Captura del resultado de JUnit al pasar las pruebas para una copia local . .
7.4. Captura del resultado de JUnit a las pruebas de copia de una base de datos
17
91
92
93
93
ÍNDICE DE FIGURAS
7.5. Captura
7.6. Captura
7.7. Captura
7.8. Captura
7.9. Captura
7.10. Captura
de
de
de
de
de
de
la
la
la
la
la
la
ÍNDICE DE FIGURAS
aplicación Web visualizada por distintos navegadores (1) .
aplicación Web visualizada por distintos navegadores (2) .
aplicación Web visualizada por un dispositivo móvil . . .
herramienta aDesigner, para el estudio de la accesibilidad
herramienta TAW, para el estudio de la accesibilidad . . .
herramienta HERA, para el estudio de la accesibilidad . .
8.1. Configuración de las variables de entorno del sistema . .
8.2. Comprobación de la correcta configuración de Java . . .
8.3. Captura de pantalla de registro de usuario . . . . . . . .
8.4. Captura del panel de autenticación . . . . . . . . . . . .
8.5. Captura del panel de resultados . . . . . . . . . . . . . .
8.6. Captura del panel de tareas . . . . . . . . . . . . . . . .
8.7. Captura del panel de creación de un backup programado
8.8. Captura del panel de conexiones . . . . . . . . . . . . .
8.9. Captura del panel de Log . . . . . . . . . . . . . . . . .
8.10. Captura del panel de configuración . . . . . . . . . . . .
8.11. Captura del sistema de autenticación Web . . . . . . . .
8.12. Captura de la aplicación Web en la pantalla de tareas .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
97
97
98
98
100
107
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
109
110
112
112
113
113
114
115
115
116
117
117
10.1. Instalación de Microsoft SQL Server, primer paso . . . . . . . . . . . . . . . 129
10.2. Instalación de Microsoft SQL Server, segundo paso . . . . . . . . . . . . . . 130
10.3. Instalación del gestor de base de datos . . . . . . . . . . . . . . . . . . . . . 130
18
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
Capı́tulo 1
Introducción
En la actualidad la información tiene en muchas ocasiones más poder que el dinero, es
por ello que las empresas sienten la necesidad de mantener sus datos seguros y replicados
para evitar desastres. En ocasiones contar con un sistema de creación y mantenimiento de las copias de seguridad no es una tarea trivial. Por ello empresas desarrolladoras
de soluciones informáticas se ofrecen a aportar herramientas para facilitar el manejo y
almacenamiento de datos a sus clientes.
Este proyecto consiste en una de dichas herramientas. Se pretende abstraer al usuario
o cliente de la tarea de acordarse de realizar copias de seguridad de manera periódica, la
comprobación de dichas copias y el posterior almacenamiento en un lugar relativamente
seguro de las mismas. De esta forma, se puede delegar en dicha herramienta la creación
de sistemas de backup y el posterior guardado en servidores independientes de la empresa cliente, si éste lo considera oportuno. Manteniendo a la empresa para la cual se ha
desarrollado el proyecto al cargo de controlar la integridad de dichos datos.
1.1.
Motivación y justificación
Este proyecto surge de la necesidad de mejorar una infraestructura y polı́tica de actuación existente. Ha sido realizado para la empresa Ecocomputer S.L. la cual ofrece a sus
clientes un servicio de control sobre las copias de seguridad de los datos de los mismos. El
proyecto surge de la necesidad de mejorar la polı́tica seguida por la empresa para realizar dicho servicio. Pretendiendo automatizar el proceso y permitiendo, de igual modo, un
acercamiento de los clientes a la información manejada en el proceso.
Para entender la necesidad del proyecto, es necesario comprender la situación anterior
a su utilización. El proceso seguido se podrı́a resumir de la siguiente forma. Por un lado,
los clientes cuentan con diferentes herramientas para la realización de copias de seguridad,
en algunos casos éstas se realizan de manera autónoma y en otros casos un empleado es
el encargado de realizarlas de manera periódica. Estas herramientas generan unos ficheros
de Log donde se recoge la información de la copia y los resultados de la misma. El servicio
que ofrece Ecocomputer S.L. consiste en el posterior visualizado de dichos ficheros y la
notificación de incidencias a los clientes en caso de ser detectadas en los mismos.
El proceso requiere la participación de personal de ambas partes y el consumo de varias
horas de trabajo para realizar un escaneo de los ficheros de resultados emitidos para la
localización de incidencias y las razones por las que éstas fueron provocadas.
Se pretende con este proyecto, actualizar todo el proceso para integrar más a los
usuarios y ofrecer un mejor servicio minimizando el trabajo requerido por el personal de
la empresa solicitante.
En primer lugar se desea automatizar todo el proceso de realización de backups para
que el cliente simplemente deba perder tiempo decidiendo cuándo y qué desea copiar.
Para ello se presenta un intuitivo programador gráfico similar al programador de tareas
del sistema operativo. Permitiendo en el mismo configurar la subida de las copias a un
19
ESTUDIO DE LA SITUACIÓN PREVIA AL PROYECTO
INTRODUCCIÓN
servidor FTP de manera automatizada.
Por otra parte, se pretende formatear la información recogida en los ficheros de Log
para que un usuario sin conocimientos informáticos pueda mantenerse informado del estado
de sus copias y obtener información estadı́stica y gráfica de las últimas realizadas. De
igual forma, la empresa que proporciona el servicio no deberá consultar largos ficheros de
información y podrá consultar rápidamente la información relevante en el mismo portal.
Se busca ası́ un doble propósito, por un lado simplificar la información al cliente para
lograr su participación y por otro simplificar las tareas de control para el personal de
Ecocomputer.
1.2.
Estudio de la situación previa al proyecto
Al tratarse de un proyecto para una empresa real, se considera de mayor relevancia
estudiar la organización de la misma y sus necesidades reales que el estudio de software o
tecnologı́as que puedan asemejarse al proyecto tratado. Es por ello, que en este apartado
se realizará una visión del cliente del proyecto.
Ecocomputer S.L. es una empresa de servicios informáticos con sede en Avilés (Asturias) con un amplio abanico de soluciones a disposición de sus clientes. Cuenta con dos
centros de trabajo, en Asturias (con más de 500 metros cuadrados, data center, sala de
formación, laboratorio electrónico) y en León. Su zona geográfica habitual cubre Asturias,
Castilla y León y Cantabria.
En su plantilla cuenta con 16 empleados que le han permitido desarrollar proyectos
muy variados, en algunos casos con una fuerte componente tecnológica y de innovación.
Está fuertemente enfocada a la PYME, aunque también trabaja el sector de la administración y la gran cuenta.
Entre los servicios que ofrece destacan el desarrollo de aplicaciones y portales web
a medida, hospedaje, registro y alojamiento de dominios para cliente, ası́ como la implantación de sistemas de gestión empresarial. No obstante, también ofrece soluciones de
mantenimiento para equipos de los clientes, dentro de este ámbito de negocio es donde se
integrará el proyecto tratado.
La situación actual de la empresa en ciertos aspectos de su gestión interna está fundamentada en métodos y mecanismos un tanto anticuados hoy en dı́a. Tratando de buscar
una mejora que permita un menor desempeño de sus empleados, una mejor gestión de
múltiples clientes y ofrecer soluciones más actuales y completas; surge el proyecto realizado.
Este proyecto será utilizado tanto por los empleados de Ecocomputer S.L. como por sus
propios clientes. Fundamentalmente será diseñado pensando en los clientes de la empresa,
quienes harán uso del mismo para mantener su información replicada y evitar pérdidas
de datos, pero servirá además para que Ecocomputer realice una revisión periódica de las
copias realizadas y despreocupe al usuario de dicha tarea.
20
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
INTRODUCCIÓN
1.3.
OBJETIVOS DEL PROYECTO
Objetivos del proyecto
El proyecto tiene un objetivo claramente definido: aportar una solución automatizada
y que requiera menor interacción que la solución implantada hasta el momento. Para
conseguir ese propósito los objetivos que se deben cumplir serán los siguientes:
Aplicación cliente intuitiva y fácilmente manejable: Se pretende ofrecer una
interfaz amigable que un usuario no especializado utilice de manera cómoda. De
nada sirve realizar una aplicación muy completa si su interfaz requiere un perı́odo
de aprendizaje elevado y los clientes rechazan su utilización.
Visualizado de información de manera gráfica: Se desea formatear la información recogida en los ficheros de Log para facilitar su comprensión y acelerar la
lectura de los mismos. Se pretende ofrecer de manera visual y clara el resultado del
backup pero sin descuidar u omitir detalles que permitan una mejor comprensión de
las anomalı́as posibles.
Programación altamente personalizable: El sistema ofrecido debe poder ser
configurable para adaptarse a los requerimientos de los clientes. Se debe permitir un
gran nivel de detalle para que los usuarios puedan programar sus copias de seguridad
según sus necesidades.
Garantizar la fiabilidad y seguridad del proceso: Se debe mantener la seguridad de todo el proceso requiriendo autenticación de los usuarios y permitiendo
únicamente las acciones para las cuales se tengan permisos. Además, se debe garantizar la fiabilidad asegurando el correcto funcionamiento y la integridad de los datos
copiados.
Soporte para copias de directorios y bases de datos SQL Server: Debe
permitirse la realización de copias de seguridad de ficheros, directorios completos
y bases de datos SQL Server. Permitiéndose en todos los casos su subida a los
servidores FTP, el automatizado del proceso y creándose los registros necesarios
para su correcta evaluación posterior.
Correcta integración con los servicios prestados por la empresa: Se debe
garantizar en todo momento la correcta integración del proyecto desarrollado con
las aplicaciones y la infraestructura actual. De igual manera, las aplicaciones cliente,
deben respetar y funcionar de manera conjunta con los procesos y herramientas que
los clientes disponen.
Uso de herramientas libres de restricciones o licencias: El proyecto podrá hacer uso de bibliotecas o herramientas disponibles, siempre y cuando no se precise la
contratación de una licencia y sean legales para su distribución comercial. De igual
manera deberán elegirse los elementos gráficos y demás material a utilizar. No se
puede olvidar que el proyecto es una aplicación empresarial y por lo tanto más restrictivo que si únicamente tuviera fines académicos.
Proyecto fácilmente mantenible: Se debe tener en cuenta que el proyecto va
a ser utilizado por multitud de clientes y por ello durante la vida del mismo, es
más que razonable pensar que serán necesario actualizaciones y retoques para dotar
de nuevas funcionalidades, adaptarlo a nuevos requisitos de clientes... Por ello, se
considera de importancia realizar un producto fácilmente mantenible y escalable o
modificable a las nuevas necesidades que puedan aparecer.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
21
OBJETIVOS DEL PROYECTO
22
INTRODUCCIÓN
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
Capı́tulo 2
Aspectos teóricos
Dado que se trata de un proyecto académico, se considera esta sección importante
para detallar algunos aspectos teóricos y demostrar algunos conocimientos adquiridos con
la realización del mismo.
2.1.
2.1.1.
Backup (copia de seguridad)
Descripción
Un backup o copia de seguridad, dentro del ámbito de las tecnologı́as de la información
e informática, es una copia de los datos originales que se realiza con el fin de disponer de
un medio de recuperarlos en caso de su pérdida. Cuando se trabaja con información de
importancia, es prácticamente una obligación realizar copias de la misma para evitar su
pérdida ante situaciones adversas.
Por otra parte, dichas copias deben ser realizadas de manera periódica y rigurosa. Es
por ello que se busca la automatización del proceso. Otro aspecto a tener en cuenta es que
las copias de respaldo realizadas deben almacenarse en una ubicación fı́sica y lógica diferente a los datos originales, de nada vale tener replicados los datos en el mismo dispositivo
de almacenamiento si dicho sistema deja de funcionar como debiera.
Dada la importancia de las copias de seguridad los sistemas cuentan con mecanismos
para almacenar la situación actual de una base de datos, por citar un ejemplo, permitiendo
una restauración de la misma con la copia realizada.
Resumiendo, para que una copia de seguridad sea adecuada debe permitir retomar el
punto exacto de un sistema al momento en que fue realizada, debe estar actualizada y
debe ser almacenada en un lugar seguro y alejada de los datos de origen.
2.1.2.
Aplicación en el proyecto
Para poder entender la documentación de este proyecto, se debe tener en cuenta que
en el ámbito del mismo, se utiliza el término ((Backup))para hacer referencia a una programación concreta de copias de seguridad. De esta forma un backup será la programación
de varias copias que deben realizarse en el mismo momento.
La razón por la que se ha utilizado esta terminologı́a en el proyecto ha sido para mantener un mejor entendimiento con el cliente (en este caso el gerente de Ecocomputer) quien
entendı́a como backup lo anteriormente mencionado. De esta forma las copias de seguridad
concretas serán llamadas ((tareas))o ((jobs))y pertenecerán a los backups o programaciones.
Por otra parte, se desea detallar que el proyecto facilita la realización de copias de
respaldo de la manera recomendada. Las copias pueden ser programadas y se realizarán
de manera autónoma y periódica, se generaran archivos que permitan una restauración
completa y además se facilita el almacenamiento de las copias en distintas ubicaciones
permitiéndose la subida a servidores FTP.
23
QUARTZ SCHEDULER
2.2.
ASPECTOS TEÓRICOS
Quartz Scheduler
2.2.1.
Descripción
Quartz Scheduler1 es un proyecto que facilita una interfaz que permite el uso de tareas
programadas dentro de un programa.
Centrándonos en Java, engloba unas bibliotecas que permiten la ejecución de clases
como hilos independientes y además lanzan los mismos según una programación dada. Se
explicará más adelante en este mismo documento el funcionamiento del programador, el
cual interpreta una sintaxis similar al administrador de procesos de UNIX ((CRON)).
Se ha elegido este proyecto para la implementación del cliente para Windows dada
la facilidad de uso, la libertad en la licencia, la rigurosidad de la documentación y las
opiniones encontradas sobre usuarios satisfechos con el mismo. Dado que nadie en la
empresa habı́a afrontado nunca un proyecto que requiriera tal funcionalidad, no se han
tenido en cuenta preferencias de los empleados de la misma.
2.2.2.
Aplicación en el proyecto
La funcionalidad más importante de la aplicación de escritorio para entornos Windows,
es la de permitir una programación de copias de seguridad en el tiempo que permita su
realización de manera autónoma y transparente para el usuario.
Se requiere dotar al sistema de un nivel de personalización elevado, pudiendo detallarse
una programación diaria, semanal o mensual; una hora concreta a la que realizar las copias,
unos intervalos de tiempo entre copias,etc. Dado que hay tantas posibles combinaciones,
se consideraba necesario encontrar un formato capaz de definirlas. Este problema fue
solucionado al leer la documentación de Quartz y conocer su funcionamiento con formato
CRON.
Formato CRON
Este formato permite mediante una secuencia de dı́gitos delimitar cuándo debe lanzarse
una tarea. La secuencia se divide en siete campos: segundos,minutos, horas, dı́a del mes,
mes, dı́a de la semana y año. La potencia de este formato no radica únicamente en que se
utilicen dı́gitos en cada campo, ya que de esta forma solo podrı́amos delimitar una fecha
concreta. Se permite dejar campos con valores ((comodı́n))para abarcar un conjunto de
fechas, horas, etc o bien utilizar limitadores temporales que permiten seleccionar perı́odos
de tiempo abstractos (por ejemplo cada tres sábados).
Con este formato se consigue expresar cualquier programación de una tarea. Y dado
que el proyecto de Quartz reconoce dicho formato, se considera muy práctico convertir los
valores introducidos por el usuario y permitir ası́ la comunicación con las bibliotecas.
Algunos ejemplos para este formato podrı́an ser:
El dı́a 7 de agosto de 2013 a las 12:57 horas: 00 57 12 7 8 * 2013
Todos los dı́as a las 12:00 horas: 00 00 12 * * * *
Cada dos horas los lunes: * * */2 * * MON *
1
24
La página web oficial del proyecto es: http://quartz-scheduler.org.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
ASPECTOS TEÓRICOS
2.3.
2.3.1.
LENGUAJE UNIFICADO DE MODELADO
Lenguaje unificado de modelado
Descripción
También conocido por sus siglas en inglés ((UML)), es el lenguaje para modelar software
más conocido y empleado. Se trata de un lenguaje gráfico para visualizar, definir, detallar,
construir y documentar gran parte de los aspectos de un sistema informático. UML cuenta
con varios tipos de diagramas, que muestran y especifican diferentes aspectos de lo que se
quiere representar.
Fue desarrollado por Grady Booch, Ivar Jacobson y Jim Rumbaugh en la década de los
90, y adoptado por la Object Management Group en 1997. No fue aceptado como estándar
ISO hasta el año 2000. Tras una serie de revisiones, la versión actual de la especificación
UML, la 2.5, fue lanzada en octubre de 2012.
Principalmente se utiliza UML para realizar diagramas de clases que detallar la estructura de un programa realizado con un lenguaje orientado a objetos, como es Java, de
manera que se delimiten las clases implicadas, ası́ como las relaciones entre estas.
2.3.2.
Aplicación en el proyecto
El lenguaje UML ha sido empleado durante las fases de análisis y diseño de este proyecto, con el fin de definir y documentar todos los aspectos de la arquitectura completa de
la aplicación y llegar a un mejor entendimiento de las necesidades de la empresa detallando
sobre diagramas la visión de las partes.
Este documento contiene en las secciones correspondientes a Análisis y Diseño, diagramas UML para mejorar la comprensión de la arquitectura y la programación realizada en
el proyecto.
Para la realización de los diagramas, se ha utilizado la herramienta Enterprise Architect
en su versión 6, software propietario desarrollado por Sparx Systems.
2.4.
2.4.1.
Métrica versión 3
Descripción
Métrica2 es una metodologı́a de planificación, desarrollo y mantenimiento de sistemas
de información, promovida por el Ministerio de Administraciones Públicas del Gobierno
de España para la sistematización de actividades del ciclo de vida de los proyectos software
en el ámbito de las administraciones públicas.
Está basada en el modelo de desarrollo ISO/EIC 12207 (Information Technology ?
Software Life Cycle Processes) y en la norma ISO/EIC 15504 SPICE (Software Process
Improvement And Assurance Standards Capability Determination).
La aplicación de Métrica Versión 3 permite alcanzar unos objetivos claros, como la
correcta definición de sistemas de información, la dotación de un producto software satisfactorio, la mejora de la productividad de los departamentos de sistemas y tecnologı́as de
la información y las comunicaciones, la facilitación de la comunicación entre los diferentes
participantes en la producción del software y la consecución de la operación, mantenimiento y uso del producto software.
2.4.2.
Aplicación en el proyecto
La versión 3 de la metodologı́a Métrica será la empleada, al menos parcialmente, en
la estructura de la presente documentación, organizando por capı́tulos y secciones determinados según aconseja la metodologı́a. Como se dice, no se cumple exactamente para
adecuar el presente documento a las exigencias de un trabajo fin de máster universitario.
2
http://administracionelectronica.gob.es/? nfpb=true& pageLabel=P800292251293651550991&lang
Pae=es&detalleLista=PAE 000000432
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
25
ASPECTOS TEÓRICOS
STRUTS2
Pese a tratarse de un proyecto no dirigido a una administración pública, que son los
organismos objetivo de Métrica, su aplicación se considera un manual de buenas prácticas.
2.5.
2.5.1.
Struts2
Descripción
Struts 2 es un framework para el desarrollo de aplicaciones web, propiedad de Apache,
el cual hace que la implementación de las mismas sea más sencillo, más rápido, y con
menos complicaciones. Su carácter de ((software libre))y su compatibilidad con todas las
plataformas en las que Java Entreprise está disponible lo convierten en una herramienta
altamente disponible.
Struts 2 encaja dentro de la capa de presentación implementando el controlador del
patrón de diseño MVC (Modelo Vista Controlador), y que podemos configurar de varias
maneras; además proporciona algunos componentes para la capa de vista.
Figura 2.1: Funcionamiento general de struts2
El uso de un framework robusto permite dotar a la aplicación de cierta seguridad
aprovechando los mecanismos que éste tiene integrados.
2.5.2.
Aplicación en el proyecto
Se ha utilizado el framework Struts2 para realizar la aplicación Web. El uso de éste
estuvo condicionado a intereses personales (experiencia previa con el mismo), ası́ como
intereses del cliente ya que los módulos con los que integrará este proyecto han sido realizados con el mismo framework.
Por otra parte, dado que el proyecto va a ser mantenido por empleados de la empresa
que no tienen experiencia en Java, se ha realizado el proyecto haciendo uso de bibliotecas
y frameworks que resulten conocidos por los mismos para facilitar su trabajo.
26
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
ASPECTOS TEÓRICOS
2.6.
2.6.1.
SQL SERVER 2005
SQL Server 2005
Descripción
SQL Server 2005 es un sistema de gestión de bases de datos basado en el modelo
relacional, utilizando el lenguaje T-SQL para realizar las consultas pertinentes. Entre sus
caracterı́sticas cabe destacar el soporte de transacciones, de procedimientos almacenados,
la posibilidad de trabajar desde un entorno gráfico, realizar las consultas en modo clienteservidor, concurrencia de usuarios y la posibilidad de administrar información de otros
servidores de base de datos.
Como principal desventaja de este sistema de gestión de bases de datos lanzado en 1989
por Microsoft, nos encontramos que su instalación solo es posible bajo sistemas operativos
Windows.
2.6.2.
Aplicación en el proyecto
Debido a que es el sistema de gestión de base de datos impuesto por el cliente, se
utilizará Microsoft SQL Server como base de datos, para el módulo Web. En ella se almacenará toda la información existente en la aplicación, ası́ como otros datos que no serán
utilizados por este proyecto, pero que son empleados por el resto de aplicaciones de la
empresa.
La versión del sistema ha sido igualmente impuesto por la empresa cliente, dado que
el servidor de despliegue del proyecto, cuenta con aplicaciones en producción funcionando
con dicha versión y no se tiene prevista una actualización.
2.7.
2.7.1.
Apache Tomcat
Descripción
Apache Tomcat consiste en un servidor HTTP para diferentes plataformas (como
UNIX, Windows . . . ) que implementa el protocolo HTTP/1.1 e introduce el concepto de
((sitio virtual)). Funciona como un contenedor de servlets e implementa las especificaciones
de las JavaServer Pages en su última versión.
Es empleado principalmente para enviar páginas web estáticas o dinámicas en la web
a los clientes que las soliciten, ejecutando en el servidor las operaciones necesarias para su
correcto funcionamiento. Permite ser instalado de manera local, sin acceso externo a la red,
con el fin de probar las aplicaciones antes de ser expuestas en un entorno de explotación
real.
Tomcat es mantenido por la Apache Software Foundation y voluntarios independientes.
Se trata de software libre gratuito, y los usuarios pueden acceder a su código fuente y
binarios en su totalidad, ya que se encuentra bajo una licencia Apache Software License.
Fue lanzado al mercado en 1999.
2.7.2.
Aplicación en el proyecto
Se trataba de una imposición del cliente la utilización de Apache Tomcat para desplegar
tanto la aplicación Web como el servicio Web intercomunicador de módulos. Dado que iba
a desplegarse en dicho servidor, para las pruebas y desarrollo se ha utilizado el mismo para
evitar problemas de configuración al intercambiar la aplicación una vez desarrollada.
Pese a estar disponible una versión robusta más actualizada, la empresa trabaja con
la versión 6 del mismo y es por ello que se ha utilizado esta.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
27
APACHE TOMCAT
28
ASPECTOS TEÓRICOS
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
Capı́tulo 3
Planificación del proyecto y
resumen de presupuestos
3.1.
Planificación
Es importante destacar que, como en una gran parte de los proyectos software, la
planificación inicial de este proyecto no se corresponde enteramente con la realidad. La
labor de planificar un proyecto es compleja y requiere de cierta experiencia, hay que
tener en cuenta muchos factores que pueden modificar la planificación y contar con un
importante plan de riesgos.
A la hora de afrontar este proyecto, no se contaba con ninguna experiencia del mundo
laboral y por ello se han cometido errores de principiante. Para comprender mejor algunas de las razones de la mala planificación conviene destacar que la empresa contaba con
una jerarquı́a no muy adecuada para estos casos. Los gerentes de la empresa actuaban
de clientes del proyecto, pero éstos no mantenı́an reuniones con el desarrollador del proyecto, habı́a unas terceras personas intermediarias que hacı́an llegar las solicitudes. Esto
provocó malos entendidos entre las partes y posteriores cambios de planificación.
Por otra parte, durante el proyecto algunas personas de la empresa tuvieron vacaciones,
lo que no solo impidió realizar reuniones y ralentizó el proyecto, sino que además las
personas encargadas de tratar las dudas no compartı́an opiniones y se llegó a conclusiones
erróneas que posteriormente fueron rectificadas.
Es conveniente destacar además, que el tiempo del proyecto se encontraba fijado desde
el inicio y que puesto que habı́a requisitos de poca importancia para la empresa, se han
mitigado los retrasos, realizando modificaciones en los requisitos. De esta forma el proyecto
ha sido posible en el tiempo previsto con las funcionalidades que deseaba la empresa.
Por citar algún cambio importante, en una primera planificación se contaba con realizar
todo el sistema de gestión de usuarios de la aplicación, pero posteriormente se integró con
otros proyectos de la empresa aprovechando la infraestructura montada y su gestión de
usuarios.
Por todo esto se incluye en el presente apartado dos planificaciones: la inicial y la
real, para que puedan ser contrastadas directamente. Se presentan mediante un diagrama
de Gantt realizado con la herramienta ((Microsoft Project)), considerándose una forma
representativa y de fácil lectura.
29
PLANIFICACIÓN
30
3.1.1.
Planificación inicial del proyecto
En esta primera planificación se contaba con tareas que finalmente no han sido necesarias por cambios en los requisitos del cliente. Por ejemplo, se
contaba con otro módulo para entornos GNU/Linux que finalmente no ha sido implementado.
Por último, destacar que pese a que la planificación se ha realizado tomando como unidad temporal un dı́a, esto no se considera una jornada laboral
completa, ya que hay tareas como reuniones o aspectos de diseño que al tener que ser discutidos con la empresa requieren desplazamientos y por lo tanto,
pese a ser poco tiempo la realidad es que se ha utilizado un dı́a para llevar a cabo la tarea.
PLANIFICACIÓN DEL PROYECTO Y RESUMEN DE PRESUPUESTOS
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
Figura 3.1: Planificación inicial del proyecto.
PLANIFICACIÓN DEL PROYECTO Y RESUMEN DE PRESUPUESTOS
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
3.1.2.
Planificación final del proyecto
Figura 3.2: Planificación final del proyecto.
PLANIFICACIÓN
31
La razón de que se haya destinado tan poco tiempo a las fases iniciales del proyecto (análisis y diseño) es que algunas de las tareas necesarias para
encarar el mismo habı́an sido realizadas con anterioridad por miembros de la empresa. Al empezar el proyecto se contaba ya con una especificación de
requisitos, un análisis de actores involucrados, decisiones tomadas sobre tecnologı́as a utilizar . . . Si bien, se realizaron cambios sobre lo anterior, no requiso
tanto esfuerzo como si se hubiera realizado desde cero.
PLANIFICACIÓN
3.1.3.
PLANIFICACIÓN DEL PROYECTO Y RESUMEN DE PRESUPUESTOS
Justificación de las diferencias
Pese a comentarse anteriormente en este apartado algunas de las razones que motivaron
las diferencias con la planificación inicial, se pretende entrar algo más en detalle en esta
sección.
Curva de aprendizaje más pronunciada: Pese a tener experiencia en las tecnologı́as utilizadas, se ha encontrado dificultad para lograr el resultado deseado. En
el caso de la aplicación de escritorio, se habı́a trabajado previamente con frameworks para la realización de componentes e interfaces gráficas, sin embargo, no se
habı́an realizado diseños con tablas ni componentes más complejos. Por otra parte,
resultó compleja la parte del programador de backups, ya que nunca antes se habı́a
trabajado con algo similar.
Cambios de requisitos: Al iniciar el proyecto, la empresa tenı́a unos requisitos ya
marcados con los que se empezó a trabajar. Sin embargo, dichos requisitos fueron
cambiando durante la vida del proyecto. Algunos cambios fueron provocados por el
desarrollo de proyectos de manera paralela que finalmente fueron integrados con el
aquı́ tratado, mientras que otros surgieron de ideas aportadas por diferente personal
que no se encontraba en la toma de requisitos inicial.
Modificación del alcance del proyecto: Relacionado con lo anterior, nos encontramos con modificaciones de alcance. Mientras se estaba realizando el proyecto
que nos ocupa, se realizaban otros con funcionalidades distintas pero destinados a
los mismos clientes, por ello se decidió una vez avanzados los mismos, realizar una
integración. Este cambio provocó que la gestión de usuarios fuera centralizada para
todos los proyectos.
Los retrasos sufridos se vieron reflejados de manera drástica en la planificación real,
pese a que la cantidad de horas no varı́e demasiado, fue necesario eliminar funcionalidad
considerada secundaria para dar cabida a los cambios y retrasos surgidos.
De este modo se desechó:
Cliente para entornos GNU/Linux: Se deseaba en un principio realizar un cliente para entornos GNU/Linux pero se desechó al no ser necesario dada la clientela de
la empresa. Por otra parte, se consideró que no tenı́a demasiado sentido al realizarse
únicamente copia de directorios debido a que el sistema de bases de datos elegido
(Microsoft SQLServer 2005) es exclusividad del sistema operativo Windows.
Módulo de gestión de usuarios: Tal como se ha comentado, se decidió integrar
varios proyectos y por ello, utilizar un único módulo de gestión de usuarios. Se
evitó ası́ el desarrollo de dicho módulo pero fueron necesarias tareas de integración
con el mismo.
Visualizador de resultados en dispositivos móviles: Pese a no ser un requisito
inicial, durante el proyecto surgió la idea de realizar una ampliación orientada a
los dispositivos móviles. Debido a la falta de tiempo se desestimó, puesto que los
navegadores web de los dispositivos móviles modernos no difieren mucho de los de
escritorio, y la aplicación podrı́a ser utilizada con cierta normalidad.
32
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
PLANIFICACIÓN DEL PROYECTO Y RESUMEN DE PRESUPUESTOS
3.2.
RESUMEN DEL PRESUPUESTO
Resumen del presupuesto
Debido a que el proyecto se ha realizado con y para una empresa de desarrollo informático, se ha creı́do conveniente realizar el presupuesto de la manera más aproximada
posible a los estándares de dicha empresa.
Considérese que la empresa no realiza distinciones entre las diferentes fases del trabajo
realizado, si no que el precio por hora es el mismo para todos. Igualmente, en dicho precio
se consideran todos los gastos directos e indirectos que el empleado ocasiona durante sus
horas de trabajo (sueldo, seguro médico, agua, luz, mantenimiento, uso de los equipos y
licencias de software . . . ).
El número de horas es el estimado para la elaboración del proyecto. Este valor ha sido
estimado igualmente por la empresa, ya que como se ha comentado anteriormente, fue el
personal de la misma quien realizó el estudio de viabilidad del proyecto.
Concepto
Desarrollo de la Aplicación
Horas
515
P. Hora
39,00 €
Subtotal
IVA(21 %)
TOTAL
TOTAL
20085,00 €
20085,00 €
4217,85 €
24302.85 €
Cuadro 3.1: Tabla de presupuesto del proyecto
Para el cálculo de horas, Ecocomputer S.L. realizó la siguiente estimación temporal.
Como se ha dicho anteriormente, se han realizado numerosas modificaciones en los requisitos y alcance del proyecto y la siguiente estimación no coincide con la realidad. No
obstante, dado que el plazo del proyecto venı́a fijado desde el inicio para cumplir los plazos
de la Universidad, el presupuesto es acertado para el producto final, ya que pese a cambiar
las labores realizadas, el número de horas ha sido equivalente. La segunda tabla muestra
una aproximación de horas más realista una vez aplicados los cambios en el proyecto.
Tarea
Modelado de la base de datos
Tareas de diseño
Aplicación cliente para la gestión de backups en Windows
Aplicación cliente para la gestión de backups en GNU/Linux
Servicio Web para complementar las herramientas de backup
Aplicación Web para la monitorización de backups
Realización de pruebas
Análisis y reuniones en Ecocomputer S.L.
Documentación técnica y manuales de usuario
Horas
10h
5h
200h
60h
30h
110h
30h
30h
40h
Cuadro 3.2: Desglose de horas para el cálculo del presupuesto. Versión inicial
Los principales cambios entre las tablas, se deben a la modificación de los requisitos
del sistema. Por un lado, fueron necesarios retoques en el diseño de la base de datos,
aumentando el tiempo destinado a dicha tarea. De igual forma, las tareas de diseño se
vieron aumentadas al ser necesario realizar una revisión y un segundo diseño para recoger
los cambios.
Las modificaciones en los requisitos fueron aplicables a la herramienta cliente para plataformas Windows, por lo que el desarrollo de esta también sufrió retrasos. Sin embargo,
como se ha comentado anteriormente, estos retrasos fueron compensados con la simplificación de otras tareas de menor importancia y la eliminación de ciertas funcionalidades.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
33
RESUMEN DEL PRESUPUESTO
PLANIFICACIÓN DEL PROYECTO Y RESUMEN DE PRESUPUESTOS
Tarea
Modelado de la base de datos
Tareas de diseño
Aplicación cliente para la gestión de backups en Windows
Servicio Web para complementar las herramientas de backup
Aplicación Web para la monitorización de backups
Realización de pruebas
Análisis y reuniones en Ecocomputer S.L.
Documentación técnica y manuales de usuario
Horas
15h
15h
290h
30h
50h
30h
40h
45h
Cuadro 3.3: Desglose de horas para el cálculo del presupuesto. Versión final
34
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
Capı́tulo 4
Análisis
Tal como se ha comentado anteriormente, el proyecto ha sufrido importantes cambios
durante su desarrollo. Dado que dichos cambios afectaron al alcance del mismo y a los
requisitos, se presenta en este apartado el análisis final, pero se ha querido incluir el primer
análisis en la documentación a modo de apéndice.
4.1.
4.1.1.
Definición del sistema
Determinación del alcance del sistema
El proyecto que nos ocupa debe cubrir unas necesidades concretas del cliente. Se pretende desarrollar una infraestructura completa que permita realizar copias de seguridad,
programar las mismas y llevar un seguimiento de las ya realizadas desde cualquier dispositivo con conexión a Internet.
Para conseguir lo requerido se debe realizar un módulos cliente para entornos Windows,
un servicio Web que permita la actualización de los datos almacenados en un servidor y
por último, una aplicación Web de visualización de resultados.
Para el caso de la aplicación de escritorio de entornos Windows, debe permitirse la
realización de backups de bases de datos Microsoft SQL Server 2005, ası́ como la copia de
directorios o ficheros concretos. Debe presentarse además un panel de programación que
permita automatizar las copias.
La aplicación Web deberá ser un monitor de resultados de los backups realizados hasta
el momento. Deberá estar actualizado y protegido mediante clave de acceso. El sistema de
gestión de usuarios será heredado de otras aplicaciones de la empresa, y deberá integrarse
con el proyecto realizado.
Por último, para conseguir el correcto funcionamiento de la infraestructura y evitar
el acceso directo al sistema de base de datos de la aplicación Web, se deberá realizar un
servicio Web que permita actualizar la información sobre los backups realizados por los
usuarios.
4.2.
4.2.1.
Requisitos del sistema
Obtención de los requisitos del sistema
Aplicación cliente
Se requiere una aplicación de escritorio desarrollada en Java que permita programar la
ejecución de copias de seguridad de directorios del equipo en el que se encuentre instalada
y en ejecución, ası́ como de backups de sistemas de bases de datos Microsoft SQL Server.
Se busca una herramienta de sencillo manejo, que realice las funciones de programador
de copias de seguridad, ejecutor de las mismas, envı́o a servidores FTP de los resultados
35
ANÁLISIS
REQUISITOS DEL SISTEMA
(en caso de ser solicitado por el usuario) y actualización de un histórico con los resultados
obtenidos en la realización de las mismas.
Dicha aplicación debe estar protegida del personal no autorizado y por ello se requerirá usuario y contraseña para interactuar con la misma. Dicha información debe ser
solicitada al usuario en la primera ejecución del software y será almacenada debidamente
en la base de datos local.
Código
R1.1
Nombre requisito
Insertar usuario
R1.2
Autenticación
R2.1
Copias de directorios y de
ficheros
R2.2
Copias de bases de datos
Microsoft SQL Server
R3.1
Subida a servidores FTP
R4.1
Programación detallada y
sencilla
R5.1
Conexión con el servicio
Web
R6.1
Ejecución de backups de
manera independiente del
usuario
Descripción del requisito
La primera ejecución de la aplicación debe requerir un registro por parte del usuario, la información será utilizada posteriormente para autenticar
al mismo en el sistema y permitir su interacción.
La herramienta debe requerir la autenticación del
usuario y no permitir la interacción de usuario
anónimos.
La aplicación debe estar dotada de la funcionalidad suficiente que permita realizar copias de seguridad de ficheros y directorios completos del sistema en el que se encuentra en ejecución.
La herramienta debe permitir la realización de copias de seguridad de sistemas de bases de datos
Microsoft SQL Server que se encuentren desplegados en el equipo cliente en el que se encuentra
la aplicación en ejecución.
Se debe permitir que las copias de seguridad sean
enviadas a un servidor FTP detallado por el usuario, ası́ como mantener un registro de los resultados del envı́o.
La herramienta debe proporcionar una interfaz
que permita la programación de backups en el
tiempo. Debe ser altamente personalizable llegando a un nivel de detalle similar al programador de
tareas de Microsoft Windows.
Los datos registrados por la aplicación sobre las
copias de seguridad realizadas, anomalı́as en su
ejecución y envı́o de resultados a servidores FTP,
deben ser recibidas por el servicio Web y almacenadas en la base de datos que consultará la aplicación Web.
Una vez programados las copias de seguridad, llegado el momento de su ejecución no debe ser necesaria la interacción con el usuario, debe realizarse
de manera transparente para el mismo y automatizando el proceso.
Cuadro 4.1: Tabla de requisitos de la aplicación de escritorio cliente
En la tabla superior se recogen los requisitos funcionales de la aplicación de escritorio cliente, a continuación se detallan algunos requisitos añadidos que debe cumplir el
sistema:
36
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
ANÁLISIS
REQUISITOS DEL SISTEMA
1. Requisitos de usuario: El usuario debe recordar la información de autenticación
introducida en el primer registro de la aplicación. También debe ser consciente de la
necesidad de la realización de copias de seguridad y realizar una programación de
las mismas eficaz.
2. Requisitos tecnológicos: El programa debe integrarse con las herramientas en
ejecución de los clientes. Dado que va a ser instalada en diferentes equipos y con
diferentes configuraciones, no debe ser restrictiva ni hacer uso de recursos que no
puedan ser compartidos. Por ejemplo no deberá hacer uso de puertos del sistema
que puedan ser empleados por otras aplicaciones.
3. Requisitos de usabilidad: La interfaz debe ser amigable y sencilla de utilizar.
Al no estar destinada a personal relacionado con el mundo de la informática, se
deben evitar mecanismos de configuración que requieran conocimientos o destrezas
tecnológicas.
4. Requisitos de seguridad: Las contraseñas almacenadas en la base de datos deberán ser tratadas para evitar su lectura inmediata. La contraseña introducida en el
registro será debidamente cifrada siguiendo un algoritmo irreversible, mientras que
las contraseñas que permiten la conexión a servidores FTP o a los sistemas de bases
de datos Microsoft SQL Server se encontrarán codificadas permitiéndose su recuperación pero evitando su lectura mediante consultas a la base de datos utilizada por
la herramienta.
5. Requisitos de tiempo de respuesta: La aplicación debe ser capaz de responder
a las necesidades programadas por el usuario. Dado que pueden programarse copias
de seguridad a nivel de segundos, es importante garantizar la ejecución en tiempo de
dichos procesos para cumplir la programación solicitada. Es por ello que la aplicación
lanzará diferentes hilos encargados de llevar a cabo procesos independientes. La
herramienta será instalada principalmente en servidores con niveles de procesamiento
elevados y grandes espacios de memoria, por lo que el uso de hilos no condicionará el
rendimiento de la máquina en exceso.
Portal Web
Para no repetir lo mismo que en las secciones previas sobre los cambios producidos en
los requisitos, en esta sección se omitirán las opiniones iniciales centrándose la misma en
el análisis del producto final.
Se requiere una aplicación Web sencilla y visual, que permita conocer el estado de los
backups realizados hasta el momento por cada cliente. Será un sistema de lectura de datos,
una monitorización de las copias realizadas y el resultado de las mismas.
Se recogen a continuación, los requisitos que debe cumplir este sistema:
Código
R1.1
Nombre del requisito
Visualización
actualizada de los resultados de
backups
R1.2
Visualización actualizada
de los resultados de las
tareas
Descripción del requisito
Debe mostrarse de manera sencilla y actualizada, la información relativa a los resultados de los
backups realizados. En caso de error en alguno de
ellos debe especificarse la razón del fallo.
Al igual que se muestran los resultados resumidos
de los backups, se debe permitir un desglose en
tareas para saber cuales fueron realizadas correctamente y cuales no.
continúa en la próxima página
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
37
ANÁLISIS
REQUISITOS DEL SISTEMA
Código
R2.1
Nombre del requisito
Integración con la plataforma Web de la empresa
Descripción del requisito
La aplicación Web debe integrarse con la plataforma de la empresa. Se debe mantener el sistema
de gestión de usuarios, permitiendo a un usuario
autenticado en la misma trabajar con normalidad
en la aplicación Web que nos ocupa.
Cuadro 4.2: Tabla de requisitos de la aplicación Web
Como requisitos no funcionales podrı́amos detallar los siguientes:
1. Look and feel: Se debe respetar la apariencia de la plataforma Web de Ecocomputer. Pese a deber acatar los bocetos realizados por el diseñador gráfico de la empresa,
se contaba con relativa libertad. Sin embargo, dado que se va a integrar el proyecto con una plataforma ya creada con otros proyectos, se debe mantener un estilo
conjunto para evitar dar sensación de divisiones.
2. Accesible a todos los navegadores Web: Siempre que se realiza un proyecto
Web se debe tener muy presente el numeroso abanico de navegadores y dispositivos
con acceso a Internet que pueden llegar a visitar el sitio. Se pretende realizar una
aplicación cumpliendo los estándares, de tal manera que se pueda visualizar en la
mayor parte de sistemas.
Web Service
El servicio Web será un sistema sencillo y su única finalidad será comunicar las aplicaciones de los clientes con la base de datos del servidor de la empresa. Se debe garantizar
la seguridad de la comunicación, para evitar que cualquiera pueda introducir datos en el
sistema conectándose al servicio.
El servicio debe comprobar los credenciales del usuario que se conecta al mismo, para
comprobar si pueden almacenarse los datos que transporta. Por otra parte, se debe notificar
del éxito o el fracaso en la actualización.
38
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
ANÁLISIS
4.2.2.
REQUISITOS DEL SISTEMA
Identificación de actores del sistema
Aplicación cliente
Esta aplicación consiste en una herramienta de programación de backups, esta tarea
suele estar destinada a un único individuo dentro de una empresa. Además, los requisitos
exigen la autenticación del usuario a la hora de programar nuevos backups o consultar
información de los mismos.
Es por ello que solo un actor primario interactuará con este subsistema. Podemos
denotarlo como administrador, ya que en muchas ocasiones suele ser el administrador
del sistema el encargado de realizar las copias que considere necesarias. La aplicación
podrá tener más de un usuario registrado, pero el rol que desempeñen dichos usuarios
será el mismo en todos los casos.
Como actor secundario, se encontrará el servicio web encargado de modificar la base
de datos del servidor, para mantener actualizada la información del portal web. La herramienta se conectará al mismo para enviar información nueva periódicamente y mantener,
de esta forma la plataforma web actualizada.
Portal Web
En este módulo, se distinguen dos usuarios primarios claramente estipulados. En primer
lugar un cliente de la empresa y de la aplicación, que se conectará a la misma para conocer
el resultado de sus backups. Por otra parte, tendremos un administrador de la empresa
que podrá visualizar la información de todos los clientes y ası́ poder asesorar sobre posibles
anomalı́as o procedimientos incorrectos.
Se debe tener en cuenta además, como actor secundario del sistema, el servicio Web
encargado de mantener actualizada la base de datos de la cual se nutre la aplicación.
Servicio Web
El servicio Web tendrá como actores los dos módulos que comunica. Pese a trabajar
con usuarios, la gestión de los mismos la realizan las otras partes. El servicio únicamente
recibe la información de los clientes de escritorio y se la comunica a la base de datos del
servidor.
4.2.3.
Especificación de casos de uso
Aplicación cliente
La aplicación de escritorio tendrá los siguientes casos de uso:
Código
C1.1
C1.2
C2.1
C2.2
C2.3
Caso de uso
Registro del usuario en el sistema, al iniciar la aplicación por primera vez,
deben solicitarse datos de acceso como usuario y contraseña.
Autenticación del usuario para acceder al sistema con sus datos introducidos en el registro.
Creación de una tarea. El usuario puede crear una tarea consistente en un
origen y un destino de la copia. Esta tarea podrá ser lanzada manualmente
una vez creada, o bien, añadida a una nueva programación de backup.
Editar una tarea creada. El usuario podrá modificar tareas previamente
creadas.
Eliminar una tarea. El usuario podrá eliminar tareas previamente creadas,
siempre que éstas no pertenezcan a una programación de backup.
continúa en la próxima página
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
39
REQUISITOS DEL SISTEMA
Código
C2.4
C3.1
C3.2
C3.3
C4.1
C4.2
C5.1
C5.2
C5.3
C5.4
C5.5
C5.6
C5.7
C5.8
C6.1
ANÁLISIS
Caso de uso
Lanzar una tarea. El usuario podrá lanzar la ejecución de una tarea manualmente, ésta se realizará una única vez en el momento de ser lanzada.
Programación de un backup para su realización automatizada y autónoma. El usuario establece cuando desea que se realicen los backups para
que se lancen de manera transparente al mismo llegado el momento de
su ejecución.
Consultar los backups programados. Acceder a la aplicación para listar
los backups programados y conocer detalles de alguno de ellos.
Eliminar un backup programado. Finalizar la programación de un backup
para evitar su ejecución futura.
Consultar el registro de Log de la aplicación. Consultar los últimos registros de Log de la aplicación, ordenados por fecha, haciendo uso del
visualizador gráfico integrado.
Consultar los resultados de los backups realizados. Visualizar la información relativa a los backups ya realizados para conocer sus resultados
satisfactorios o erróneos.
Agregar información de conexión con una base de datos. Introducir la
información de conexión con la base de datos, para posteriormente realizar
copias de la misma simplemente referenciándola.
Agregar información de conexión con un servidor FTP. Introducir la información de conexión con un servidor FTP, para posteriormente subir
las copias al mismo simplemente referenciándolo.
Probar la conexión con un servidor FTP. Realizar una prueba de conexión
para saber si se encuentran disponibles los servidores FTP introducidos
al sistema.
Editar la información de una conexión FTP. Modificar los valores introducidos para una conexión.
Eliminar la información de una conexión FTP. Eliminar los valores introducidos para una conexión.
Probar la conexión con un sistema de base de datos. Realizar una prueba de conexión para saber si se encuentra disponible una base de datos
introducida en el sistema.
Editar la información de una conexión con un sistema de base de datos.
Modificar los valores introducidos para una conexión.
Eliminar la información de una conexión con un sistema de base de datos.
Eliminar los valores introducidos para una conexión.
Actualizar la información del servidor. Conectar con el servicio Web para
mantener la información del servidor actualizada.
Cuadro 4.3: Tabla de casos de uso de la aplicación de escritorio cliente
40
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
ANÁLISIS
REQUISITOS DEL SISTEMA
Figura 4.1: Diagrama de casos de uso de la aplicación cliente en Windows
Aplicación Web
La aplicación de Web tendrá los siguientes casos de uso:
Código
C1.1
C1.2
C2.1
C2.2
Caso de uso
Ver información de todos los backups realizados por los clientes. Un usuario con el rol de administrador podrá visualizar los resultados de los backups realizados por todos los clientes del sistema.
Ver información detallada de un backup de un cliente. Un usuario con
el rol de administrador podrá visualizar los resultados de las tareas pertenecientes a un backup realizado, para conocer en detalle cuales fueron
realizadas correctamente y cuales no.
Ver información de los backups propios realizados. Un usuario autenticado
en el sistema deberá poder visualizar la información relativa a los backups
realizados en todos sus equipos.
Ver información detallada de un backup propio realizado. Un usuario
autenticado en el sistema deberá poder visualizar la información detallada
sobre las tareas de un backup realizado, con la finalidad de discernir
que procesos se realizaron correctamente y cuales no. Detallando el error
producido en este último caso.
Cuadro 4.4: Tabla de casos de uso de la aplicación de Web
Se han eliminado los casos de uso relativos al registro, autenticación, generación de
permisos para un usuario . . . debido a que la gestión de usuarios se encuentra realizada y
simplemente va a ser integrada con el proyecto que nos ocupa. En los casos de uso iniciales
se encontraban numerosas tareas relativas a dicho módulo, ya que en un principio se iba
a realizar una gestión de usuario individual para el proyecto que nos ocupa.
Dado que un administrador puede ser además un cliente del sistema, los casos de uso
de los clientes son compartidos por el usuario con permisos.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
41
IDENTIFICACIÓN DE LOS SUBSISTEMAS EN LA FASE DE ANÁLISIS
ANÁLISIS
Figura 4.2: Diagrama de casos de uso de la aplicación Web
4.3.
Identificación de los subsistemas en la fase de análisis
El proyecto que nos ocupa tiene tres subsistemas claramente definidos desde los requisitos del propio cliente. Tal como se ha venido comentando en las secciones anteriores,
contará de una aplicación cliente que debe ejecutarse en todos los equipos que quieran
hacer uso de la infraestructura, un servicio web desplegado en los servidores de la empresa
ofertadora (Ecocomputer S.L.) y una aplicación web para la visualización el resultado de
los backups realizados, que se encontrará igualmente desplegada en los servidores de la
empresa proveedora del servicio.
En la fase de diseño se detallará cada subsistema descomponiéndolo en diferentes módulos con finalidades claras. Ası́, en el cliente de escritorio, por ejemplo será necesario establecer un módulo encargado de la autenticación de los usuarios, otro del registro de nuevos
clientes . . .
4.3.1.
Descripción de los subsistemas
Aplicación cliente
La aplicación cliente corresponde a una herramienta de escritorio, que permitirá programar copias de seguridad en el tiempo. Por ello, contará con un panel de configuración
en el que el usuario detalle los elementos que deben ser copiados (ya sean copias de bases
de datos SQL Server o directorios del propio sistema), la información necesaria para subirlos a un servidor FTP, en caso de considerarse necesario, o el directorio donde deben
ser almacenadas las copias; ası́ como, la indicación temporal que indique cuándo deben
realizarse las mismas.
Por otra parte dicho subsistema contará con un módulo de persistencia implementado
sobre una base de datos SQLite (a petición del cliente) que almacenará las programaciones
creadas. Por último, la aplicación debe realizar las copias llegado el momento, comprimiendo los directorios para ser enviados a los servidores FTP indicados, o bien, almacenando
una réplica en el directorio oportuno.
Todas las operaciones deben quedar registradas en un Log, ası́ como actualizar un
historial de resultados de los backups realizados.
Web Service
Se tratará de un servicio web encargado de almacenar la información que le llega de
las aplicaciones de escritorio instaladas en los sistemas de los clientes. Su funcionalidad
será sencilla pero será necesario garantizar la seguridad en las comunicaciones para evitar
almacenar datos incorrectos o aceptar conexiones de sistemas no autorizados.
42
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
ANÁLISIS
IDENTIFICACIÓN DE LOS SUBSISTEMAS EN LA FASE DE ANÁLISIS
Portal Web
Deberá realizarse una aplicación Web de consulta que permita visualizar el historial de
los backups realizados, ası́ como información de las tareas que los componen. Se deberá integrar dicha aplicación, en una plataforma desarrollada por la empresa, que presenta un
módulo de gestión de usuarios de utilidad para el proyecto. Por otra parte, se deberá comprobar si el usuario autenticado tiene permisos de administrador, en cuyo caso debe poder
visualizar la información relativa a todos los backups de los clientes.
4.3.2.
Descripción de los interfaces entre subsistemas
Las comunicaciones entre los módulos se realizan mediante el servicio Web. Se tenı́a
libertad para implementar un servicio REST o SOAP, pero se ha decidido realizar uno de
los últimos, debido a la sencillez de uso utilizando herramientas de generación de código
como las que proporciona Eclipse.
De esta forma, las aplicaciones cliente se conectan al servicio SOAP, mediante el WSDL
publicado. Ası́, se le envı́a al mismo información relativa al usuario que se conecta y los
historiales de los backups realizados que no han sido sincronizados hasta ese momento.
El servicio se conectará a la base de datos local de la empresa, que será la consultada
por la aplicación Web. De esta forma la información se encuentra actualizada en la Web.
Figura 4.3: Diagrama relación entre los sistemas implicados en el proyecto.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
43
DIAGRAMA DE CLASES PRELIMINAR DEL ANÁLISIS
4.4.
ANÁLISIS
Diagrama de clases preliminar del análisis
Tal como se ha comentado anteriormente, se han producido importantes cambios durante el desarrollo del proyecto. Por esta razón, las clases identificadas en esta fase del
proyecto y las relaciones entre las mismas, no se corresponden al resultado final. El principal cambio, radica en la aplicación de escritorio, en la cual se consideraba al iniciar el
proyecto que las tareas pertenecı́an a una programación de backup y no tenı́an sentido de
manera aislada. Posteriormente, cambios en los requisitos, obligaron a realizar modificaciones en la arquitectura y eliminar el requerimiento de que cada tarea perteneciera a un
backup y únicamente a uno.
4.4.1.
Diagrama de clases
Aplicación cliente de escritorio para Windows
Figura 4.4: Diagrama de clases de análisis, aplicación de escritorio
Aplicación Web
Figura 4.5: Diagrama de clases de análisis, aplicación Web
44
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
ANÁLISIS
DIAGRAMA DE CLASES PRELIMINAR DEL ANÁLISIS
Servicio Web
Debido a la simpleza del servicio Web no se considera necesario realizar un diagrama de
clases para esta fase. Simplemente será necesario tener una clase Serializable que contenga
los datos que son transmitidos con las aplicaciones, y un gestor de base de datos para
almacenar los mismos.
4.4.2.
Descripción de las clases
Aplicación cliente para Windows
Backup
Descripción
Esta clase representará una programación de copias de seguridad.
Responsabilidades
Será una clase del modelo sin funcionalidad propia.
Atributos propuestos
Nombre del Backup: Nombre del backup para ser representado.
Momento de Ejecución: Se almacenará en formato CRON la programación
del backup. De esta forma se determinará cuándo debe ser lanzado.
Lista de tareas: Se contará con una lista de tareas para realizar, cuando se
ejecute el backup se realizarán las copias estipuladas en dicha lista.
Métodos propuestos
Getters y setters: Puesto que se trata de una clase del modelo, no presentará lógica y únicamente tendrá selectores y modificadores del estado del
objeto.
Tarea
Descripción
Esta clase representará copia de seguridad concreta, marcando un origen y un destino
para la misma.
Responsabilidades
Será una clase del modelo sin funcionalidad propia.
Atributos propuestos
Nombre de tarea: Nombre de la tarea para ser representada.
Origen: Origen de la copia, puede ser una base de datos, un directorio o un
fichero.
Destino: Destino de la copia, puede ser un servidor FTP o un directorio local.
Nombre destino: Nombre con el que se quiere almacenar la copia.
continúa en la próxima página
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
45
ANÁLISIS
DIAGRAMA DE CLASES PRELIMINAR DEL ANÁLISIS
Tarea
Métodos propuestos
Getters y setters: Puesto que se trata de una clase del modelo, no presentará lógica y únicamente tendrá selectores y modificadores del estado del
objeto.
Conexión FTP
Descripción
Esta clase representará una conexión FTP.
Responsabilidades
Será una clase del modelo sin funcionalidad propia.
Atributos propuestos
Nombre de la conexión: Nombre de la conexión para ser representada.
Dirección: Dirección del servidor FTP.
Usuario: Nombre de usuario con permisos en el servidor FTP.
Contraseña: Contraseña del usuario anterior.
Métodos propuestos
Getters y setters: Puesto que se trata de una clase del modelo, no presentará lógica y únicamente tendrá selectores y modificadores del estado del
objeto.
Conexión base de datos
Descripción
Esta clase representará una conexión con una Base de Datos.
Responsabilidades
Será una clase del modelo sin funcionalidad propia.
Atributos propuestos
Nombre de la conexión: Nombre de la conexión para ser representada.
Dirección: Dirección de la base de datos.
Usuario: Nombre de usuario con permisos en la base de datos.
Contraseña: Contraseña del usuario anterior.
Nombre de la base de datos: Nombre de la base de datos a copiar.
continúa en la próxima página
46
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
ANÁLISIS
DIAGRAMA DE CLASES PRELIMINAR DEL ANÁLISIS
Conexión base de datos
Métodos propuestos
Getters y setters: Puesto que se trata de una clase del modelo, no presentará lógica y únicamente tendrá selectores y modificadores del estado del
objeto.
Historial de Backups
Descripción
Esta clase representará los resultados de un backups realizado.
Responsabilidades
Será una clase del modelo sin funcionalidad propia.
Atributos propuestos
Backup: Backup al que hace referencia el histórico.
Resultado: Resultado del mismo.
Resultado de la copia: Resultado en la realización de la copia.
Resultado del envı́o: Resultado en la realización del envı́o.
Métodos propuestos
Getters y setters: Puesto que se trata de una clase del modelo, no presentará lógica y únicamente tendrá selectores y modificadores del estado del
objeto.
Historial de tareas
Descripción
Esta clase representará los resultados de una tarea realizada.
Responsabilidades
Será una clase del modelo sin funcionalidad propia.
Atributos propuestos
Tarea: Tarea a la que hace referencia el histórico.
Resultado: Resultado de la misma.
Resultado de la copia: Resultado en la realización de la copia.
Resultado del envı́o: Resultado en la realización del envı́o.
continúa en la próxima página
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
47
DIAGRAMA DE CLASES PRELIMINAR DEL ANÁLISIS
ANÁLISIS
Historial de tareas
Métodos propuestos
Getters y setters: Puesto que se trata de una clase del modelo, no presentará lógica y únicamente tendrá selectores y modificadores.
Manager FTP
Descripción
Esta clase realizará las subidas de copias a servidores FTP.
Responsabilidades
Será la clase encargada de la lógica de negocio para subir un fichero a un servidor
FTP.
Atributos propuestos
Conexión FTP: Conexión FTP a la que se debe subir el fichero.
Origen: Fichero que debe ser subido.
Métodos propuestos
Establecer conexión: Crea una conexión al servidor FTP.
Subir un fichero: Sube el fichero indicado al servidor FTP.
Getters y setters: Métodos selectores y modificadores.
Manager de comprensión
Descripción
Esta clase se encargará de comprimir los directorios que se vayan a copiar.
Responsabilidades
Al realizar una copia de un directorio, en caso de querer subir el resultado a un
servidor FTP, éste debe ser comprimido; esta clase se encargará de llevar a cabo
dicha función.
Atributos propuestos
Origen: Fichero que debe ser comprimido.
Destino: Directorio donde debe ser guardado el resultado de la comprensión.
Métodos propuestos
Comprimir directorio: Comprime el directorio seleccionado.
Getters y setters: Métodos selectores y modificadores.
48
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
ANÁLISIS
DIAGRAMA DE CLASES PRELIMINAR DEL ANÁLISIS
Manager de copia de directorios
Descripción
Esta clase se encargará de realizar las copias de directorios o ficheros.
Responsabilidades
La resposabilidad de esta clase es la de crear copias de directorios y todo su contenido, ası́ como de ficheros.
Atributos propuestos
Origen: Fichero o directorio que debe ser copiado.
Destino: Directorio donde debe realizarse la copia.
Métodos propuestos
Copiar directorio: Copia el directorio seleccionado en el destino.
Getters y setters: Métodos selectores y modificadores.
Manager de copia de base de datos
Descripción
Esta clase se encargará de realizar las copias de sistemas de base de datos Microsoft
SQL Server.
Responsabilidades
La responsabilidad de esta clase es la de conectarse a un sistema de base de datos
y ordenar un backup a disco de la base seleccionada.
Atributos propuestos
Conexión con la base de datos: Conexión con la base de datos a copiar.
Destino: Directorio donde debe realizarse la copia.
Métodos propuestos
Realizar copia: Realiza un backup de la base de datos en el destino.
Getters y setters: Métodos selectores y modificadores.
Clase programadora
Descripción
Esta clase realizará la integración con el módulo Quartz Scheduler comentado anteriormente en este documento.
Responsabilidades
La responsabilidad de esta clase es la de interactuar con la biblioteca encargada de
lanzar los hilos de la aplicación llegado el momento.
Atributos propuestos
Programador: Objeto Scheduler de la biblioteca de Quartz.
continúa en la próxima página
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
49
DIAGRAMA DE CLASES PRELIMINAR DEL ANÁLISIS
ANÁLISIS
Clase programadora
Métodos propuestos
Agregar backup al programador: Añade a la pila de ejecución un backup.
Eliminar un backup del programador: Elimina un backup de la pila de
ejecución.
Clase log
Descripción
Clase encargada de la gestión de un fichero de LOG.
Responsabilidades
La responsabilidad de esta clase es la de mantener un registro de actividades de la
aplicación.
Atributos propuestos
LOG: Ubicación del registro de LOG.
Métodos propuestos
Escribir entrada de log: Inserta en el LOG una nueva acción o suceso.
ejecución.
Las clases relativas a la interfaz gráfica no se han tenido en cuenta en esta fase del
análisis pues se estaba a la espera de conocer los bocetos del diseñador gráfico de la empresa
para poder maquetar la aplicación y conocer los paneles, diálogos, ventanas . . .
Aplicación Web
Para el caso de la aplicación Web se va a realizar un proyecto en capas utilizando el
framework Struts2. Además, se utilizará el patrón de diseño conocido como DAO para
implementar la persistencia.
No se detallan las clases debido a que se considera la estructura básica de un proyecto con dicho framework que implemente el patrón mencionado. Simplemente se crearán
Actions para el correcto funcionamiento de Struts2, las clases del modelo, las clases DAO
para las relaciones con base de datos y los managers encargados de la lógica intermedia.
50
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
ANÁLISIS
4.5.
ANÁLISIS DE CASOS DE USO Y ESCENARIOS
Análisis de casos de uso y escenarios
En esta sección se describirán los casos de uso identificados anteriormente de forma
detallada, a través de sus escenarios. Los escenarios describen las interacciones entre los
usuarios y el sistema e incluyen información acerca de los objetivos, expectativas, motivaciones, acciones y reacciones que se llevan a cabo.
4.5.1.
Aplicación cliente para Windows
C1.1 Registro de usuario
Precondiciones
Este caso de uso solo se produce al iniciar por primera vez la
aplicación.
Poscondiciones
El usuario quedará registrado y no podrán registrarse más
usuarios.
Descripción
Se debe mostrar al usuario un formulario de registro que debe
cumplimentar con nombre de usuario y contraseña.
Notas
Se pretendı́a incluir restricciones de seguridad en la contraseña
pero la decisión de la empresa fue prescindir de ellas.
C1.2 Autenticación de usuario
Precondiciones
Para poder autenticarse en el sistema no debe haber ninguna
sesión abierta en el mismo.
Poscondiciones
El usuario quedará autenticado y podrá hacer uso de la herramienta.
Descripción
Para poder hacer uso de las herramientas de la aplicación, se
debe iniciar sesión con el nombre de usuario y la contraseña
introducidas en el registro.
Excepciones
En caso de no ser correcta la autenticación, el usuario no
podrá utilizar la aplicación. Sin embargo, la opción de inicio
de sesión siempre estará disponible.
C2.1 Creación de una tarea
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema.
Poscondiciones
Una nueva tarea será añadida al sistema y se encontrará disponible.
Descripción
Un usuario autenticado, podrá crear una tarea con la finalidad de lanzarla o bien, de añadirla en algún momento a una
programación de backup.
C2.2 Edición de una tarea
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema y el sistema debe contener una tarea que no pertenezca a
una programación backup para que ésta, pueda ser modificada.
Poscondiciones
La tarea inicial se verá modificada.
Excepciones
Si la tarea pertenece a una programación de backup, el usuario
será notificado de la imposibilidad de modificación.
Descripción
Un usuario autenticado, podrá editar la información de una
tarea, cambiando nombre de la misma, origen y destino.
C2.3 Eliminar una tarea
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema y el sistema debe contener una tarea que no pertenezca a
una programación backup para que ésta, pueda ser eliminada.
continúa en la próxima página
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
51
ANÁLISIS DE CASOS DE USO Y ESCENARIOS
ANÁLISIS
C2.3 Eliminar una tarea
Poscondiciones
La tarea será eliminada.
Excepciones
Si la tarea pertenece a una programación de backup, el usuario
será notificado de la imposibilidad de eliminación.
Descripción
Un usuario autenticado, podrá eliminar una tarea existente.
C2.4 Lanzar una tarea
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema y el sistema debe contener una tarea que pueda ser lanzada.
Poscondiciones
La tarea será ejecutada.
Descripción
Un usuario autenticado, podrá ejecutar una tarea existente.
La copia se realizará en dicho momento pero únicamente se
repetirá en caso de que esté incluida en un backup
C3.1 Programación de un backup
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema y el sistema debe contener una tarea que pueda ser lanzada.
Poscondiciones
La tarea será ejecutada siempre que se cumplan las condiciones
programadas.
Descripción
Un usuario autenticado podrá crear una programación de backup añadiendo al menos una tarea previamente creada y seleccionando en un formulario cuándo desea que se ejecute.
C3.2 Consultar backups
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema y el sistema debe contener algún backup para ser mostrado, de lo contrario se mostrará una tabla sin datos.
Poscondiciones
Se mostrará una tabla con los backups que se encuentran activos.
Descripción
Un usuario podrá ver los backups que se encuentran activos.
C3.3 Eliminar un backup
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema y el sistema debe contener algún backup que pueda ser
eliminado.
Poscondiciones
El backup será eliminado y no se ejecutará más veces.
Descripción
Un usuario autenticado podrá eliminar un Backup, anulando
ası́ su programación e impidiendo que vuelva a lanzarse.
C4.1 Consulta del LOG
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema.
Poscondiciones
El LOG de la aplicación será visualizado por el usuario.
Descripción
Un usuario autenticado podrá consultar las actividades y los
sucesos producidos en la aplicación, realizando una consulta
del LOG del sistema.
C4.2 Consultar resultados de los backups realizados
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema y debe haber algún backup con resultados para mostrar,
de lo contrario, la tabla aparecerá sin información.
continúa en la próxima página
52
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
ANÁLISIS
ANÁLISIS DE CASOS DE USO Y ESCENARIOS
C4.2 Consultar resultados de los backups realizados
Poscondiciones
El usuario podrá visualizar una tabla con los resultados de los
backups realizados.
Descripción
Un usuario autenticado podrá consultar los resultados de los
backups realizados.
C5.1 y C5.2 Agregar información de una conexión
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema.
Poscondiciones
El sistema almacenará los datos de una conexión a una base
de datos o a un servidor FTP.
Descripción
Un usuario autenticado podrá añadir al sistema los datos de
una conexión para posteriormente referenciarla cuando quiera
realizar un backup.
C5.3 y C5.6 Probar una conexión
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema y éste debe contar con información de conexiones que
puedan ser probadas.
Poscondiciones
El sistema informará de la disponibilidad de la base de datos
o el servidor FTP.
Descripción
Un usuario autenticado podrá comprobar la disponibilidad de
una conexión a un sistema de base de datos o a un servidor
FTP.
C5.4 y C5.7 Editar una conexión
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema y éste debe contar con información de conexiones que
puedan ser modificadas.
Poscondiciones
El sistema guardará los cambios realizados en la información
de conexión de la base de datos o el servidor FTP.
Descripción
Un usuario autenticado podrá editar la información de una
conexión a un sistema de base de datos o a un servidor FTP.
C5.5 y C5.8 Eliminar una conexión
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema y éste debe contar con información de conexiones que
puedan ser eliminadas.
Poscondiciones
El sistema eliminará los datos de la conexión seleccionada.
Descripción
Un usuario autenticado podrá eliminar la información de una
conexión a un sistema de base de datos o a un servidor FTP.
C6.1 Actualizar información del servicio Web
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema.
Poscondiciones
El sistema modificará la información de conexión con el servicio
Web.
Descripción
Un usuario autenticado podrá modificar la información de conexión del servicio Web.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
53
ANÁLISIS DE CASOS DE USO Y ESCENARIOS
4.5.2.
ANÁLISIS
Aplicación Web
C1.1 Ver información de todos los backups de los clientes
Actor
Usuario con rol de Administrador
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema con una cuenta con el rol de Administrador.
Poscondiciones
El sistema mostrará la información de todos los backups de
todos los clientes
Descripción
Un usuario autenticado con una cuenta de Administrador
podrá visualizar la información de todos los clientes.
C1.2 Ver información detallada de los backups de los clientes
Actor
Usuario con rol de Administrador
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema con una cuenta con el rol de Administrador.
Poscondiciones
El sistema mostrará la información de las tareas de los backups
de los clientes
Descripción
Un usuario autenticado con una cuenta de Administrador
podrá visualizar la información de las tareas de los backups
los clientes.
C2.1 Ver información de todos los backups del cliente
Actor
Usuario con rol de Cliente
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema con una cuenta con el rol de Cliente.
Poscondiciones
El sistema mostrará la información de todos los backups del
cliente
Descripción
Un usuario autenticado con una cuenta de Cliente, podrá visualizar los resultados de sus backups
C2.2 Ver información detallada de los backups del cliente
Actor
Usuario con rol de Cliente
Precondiciones
El usuario ha debido iniciar sesión satisfactoriamente en el sistema con una cuenta con el rol de Cliente.
Poscondiciones
El sistema mostrará la información de las tareas de los backups
del cliente.
Descripción
Un usuario autenticado con una cuenta de Cliente podrá visualizar la información de las tareas de los backups del cliente.
54
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
ANÁLISIS
4.6.
ANÁLISIS DE INTERFACES DE USUARIO
Análisis de interfaces de usuario
Las interfaces de usuario de este proyecto han sido impuestas por el diseñador gráfico de
Ecocomputer S.L. Sin embargo, se ha dado libertad para realizar pequeñas modificaciones
que permitieran un sistema más usable y accesible. Tal como se comentará más adelante,
se han tenido en cuenta las limitaciones de algunos usuarios para la realización de los
interfaces.
Puesto que se cuenta con los diseños realizados por la empresa, no han sido necesarios
los bocetos o mockups tı́picos de las fases de análisis.
4.6.1.
Aplicación cliente para Windows
A continuación se presentan las imágenes realizadas por el diseñador gráfico y que se
han intentado plasmar con los mı́nimos cambios posibles en la aplicación realizada.
Figura 4.6: Autenticación en el sistema
Figura 4.7: Creación de una programación de Backup
Debe tenerse en cuenta que las imágenes que acompañan esta sección, fueron el resultado del análisis posterior al cambio de requisitos y de alcance del proyecto.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
55
ANÁLISIS DE INTERFACES DE USUARIO
ANÁLISIS
Figura 4.8: Resultados de los Backups
Figura 4.9: Tareas creadas en el sistema
Pese a no realizarse un boceto de todas las ventanas que finalmente tiene la aplicación
y faltar los diálogos, se tiene una idea general del look and feel global, lo que permite
realizar el resto de componentes de la interfaz gráfica siguiendo el modelo.
4.6.2.
Aplicación Web
La aplicación Web deberá integrarse en una plataforma de la empresa y por lo tanto
presentará una apariencia similar al resto de aplicaciones desplegadas en la misma. No se
ha realizado un análisis previo en este aspecto, al considerar tarea del diseñador gráfico la
labor, y no requerir demasiado esfuerzo al contar con aplicaciones que deben ser tomadas
como modelo de diseño.
Por otra parte, el diseño Web presenta mayor facilidad a la hora de modificar una
interfaz gráfica, al contar con hojas de estilo claramente diferenciadas del código. Por
esta razón, se dedicó mayores esfuerzos al cliente de escritorio, pues la interfaz de usuario
implica la programación de componentes.
56
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
ANÁLISIS
4.7.
ESPECIFICACIÓN DEL PLAN DE PRUEBAS
Especificación del plan de pruebas
Dadas las caracterı́sticas del proyecto y su utilización en un entorno real, las pruebas
cobran aún más importancia. Por otra parte, se tiene la ventaja de que se cuenta con
un equipo de probadores y facilita la localización de errores o anomalı́as. El proyecto
será utilizado por el personal de la empresa Ecocomputer S.L. antes de ser lanzado a
producción. En esta fase del proyecto, se realizarán pruebas con información real y en
entornos reales, lo que sin duda, mejorará los resultados de las pruebas realizadas.
En este apartado se analizarán por encima las pruebas que se realizarán al proyecto,
y que serán detalladas más adelante en esta documentación.
Pruebas unitarias: Se realizarán pruebas unitarias utilizando el framework JUnit1 ,
de la lógica fundamental de la aplicación de escritorio. Se comprobará de esta forma
el correcto funcionamiento de los métodos con más funcionalidad, tales como los
formateadores de CRON, los encargados de realizar las copias, las conexiones . . .
Pruebas del integración: Estas pruebas serán realizadas el colaboración con la
empresa. Se probará que todo funciona como deberı́a una vez desplegado en los
sistemas de producción y que la integración es correcta.
Pruebas de sistema: Se realizarán pruebas del sistema una vez desarrollados todos los módulos. Se pretende garantizar con éstas, que todos los módulos trabajan
correctamente integrados y el proyecto funciona como es de esperar.
Pruebas de usabilidad: Para este tipo de pruebas, nuevamente se cuenta con la
colaboración de Ecocomputer S.L. Serán los propios usuarios finales quienes realicen
las pruebas y comenten sus dificultades o posibles cambios que consideren necesarios
para una mejor usabilidad del sistema.
Por último, cabe destacar que se creará un entorno lo más similar posible al de despliegue final, para realizar las pruebas durante el desarrollo. Se utilizarán las mismas versiones
del gestor de base de datos, el servidor de aplicaciones, máquina virtual de Java . . . Con
esto, se pretende evitar problemas una vez desarrollado con alguna incompatibilidad.
Además, no parecı́a lo más adecuado, pese a contar con el permiso de la empresa,
para utilizar el servidor de despliegue y la base de datos final como herramientas para el
desarrollo y probado.
1
Más información sobre JUnit en: http://junit.org/
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
57
ESPECIFICACIÓN DEL PLAN DE PRUEBAS
58
ANÁLISIS
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
Capı́tulo 5
Diseño del Sistema
5.1.
Arquitectura del sistema
5.1.1.
Diagramas de paquetes
Aplicación cliente de escritorio para entornos Windows
Figura 5.1: Diagrama de paquetes de la aplicación de escritorio para Windows
En el diagrama superior se puede ver la estructura de paquetes que tendrá la aplicación
cliente para entornos Windows. A continuación se detalla cada paquete
Visual: Este paquete contendrá todas las clases encargadas de la parte visual de la
aplicación. Dentro del patrón arquitectónico Modelo-Vista-Controlador, este paquete
harı́a referencia a la Vista. Dado que se trata de una aplicación con una gran interfaz
gráfica, se han creado dos subpaquetes para los paneles y los cuadros de diálogo de
la aplicación.
Entities: Si el paquete anterior contenı́a las clases de la Vista, en este caso se trata
del Modelo. Este paquete contendrá las clases del modelo de dominio de la aplicación.
Por ello, dentro de este paquete encontraremos clases sin lógica como Backup, Tarea,
Historial de backup . . .
Web Service: Este paquete contendrá las clases autogeneradas por el entorno para
la conexión con un servicio Web SOAP.
Util: Se utilizará un paquete útil para la implementación de elementos concretos que
no dependen ni de la lógica de negocio ni de temas más concretos como la persistencia
59
ARQUITECTURA DEL SISTEMA
DISEÑO DEL SISTEMA
o la interfaz gráfica. Ası́, dentro de este paquete se encontrará el subpaquete para
la gestión del sistema de LOG y otro subpaquete para la gestión de hilos de la
aplicación.
Logic: Este paquete contiene la lógica de negocio propia de la aplicación. Tendrá dos
subpaquetes interiores para separar las clases ejecutoras de funcionalidades y los
managers encargados de conectar con otros paquetes o realizar grupos de funcionalidades enlazadas.
Persistence: Las clases encargadas de las relaciones con la base de datos SQLite
con la que funciona la aplicación, se encontrarán en este paquete. Serán clases que
hagan uso de JDBC y cuya única funcionalidad será cargar datos de la base de datos
o almacenar los mismos.
Tests: Por último, pero no menos importante, se encuentra el paquete para la realización de pruebas unitarias del código. Como ya se ha mencionado anteriormente,
se hará uso del framework especifico para esta labor, JUnit.
Aplicación Web
Figura 5.2: Diagrama de paquetes de la aplicación Web
En el diagrama superior se puede ver la estructura de paquetes que tendrá la aplicación
Web. Se puede comprobar que hay una división clara entre las clases con lógica y que
contienen la implementación y las clases que actúan de interfaces creando la estructura
del proyecto.
A continuación se detalla cada paquete:
Presentation: Contiene las clases ((Action))que colaboran directamente con las
JSP para recoger datos o mostrarlos. Mediante la implementación de la interfaz
((ModelDriven))de struts, los datos se transportan en objetos del modelo, de ahı́ que
necesite colaborar con dicho paquete ((organization.model)).
Para llamar a la siguiente capa de la arquitectura es necesario utilizar los interfaces de
objetos contenidos en el paquete ((organization.business)). Dichas interfaces declaran
las signaturas de los métodos que necesitan las Action para llevar a cabo las tareas
ordenadas por el usuario.
Persistence: Agrupa a los Data Access Object (DAO), que son las clases que suministran el acceso y comunicación al sistema de persistencia, en este caso una base
de datos. Implementan los métodos de creación, obtención, actualización y borrado
60
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
DISEÑO DEL SISTEMA
ARQUITECTURA DEL SISTEMA
de datos necesarios para la ejecución de las tareas solicitadas en la capa de lógica de
la aplicación.
Dichas operaciones las realiza utilizando los objetos del paquete ((organization.model)).
Los DAO implementan interfaces del paquete ((organization.persistence))que dictan
los métodos que deben incorporar, y es por eso que existe una relación en el diagrama
de paquetes.
Business: Este paquete contiene la lógica de negocio y actúa de intermediario entre
el paquete de presentación con los Actions de Struts2 y el paquete de presentación
con los objetos DAO.
Model: Este paquete contiene las clases planas que forman el modelo de dominio
del sistema. En este caso serán únicamente, historial de backups e historial de tareas.
5.1.2.
Diagrama de componentes
Figura 5.3: Diagrama de componentes del proyecto
Este diagrama de componentes, que tiene como objetivo mostrar las dependencias e
interconexiones entre componentes lógicos de un sistema, refleja la arquitectura general
planteada.
Se puede apreciar en el diagrama, como se conectan los diferentes módulos del proyecto
y los tipos de protocolos o tecnologı́as empleadas. De esta forma, mediante la tecnologı́a
SOAP se conecta la aplicación de escritorio con el servicio Web y éste con la base de datos
mediante los drivers de conexión propios de SQL Server. Esta misma interfaz de conexión,
es utilizada por la aplicación Web gestora de Backups, a la cual se puede acceder, como
es habitual, mediante un navegador Web utilizando el protocolo HTTP.
El servicio Web y la aplicación Web no se encuentran comunicadas, ya que únicamente
comparten la base de datos y no intercambian información directamente.
5.1.3.
Diagrama de despliegue
En el siguiente diagrama se presenta la estructura de despliegue del proyecto. Se puede
diferenciar una división en tres equipos fı́sicos.
Por un lado se encontrarán los ordenadores de los clientes con sistema operativo Microsoft Windows. Para poder disfrutar de todo el proyecto, estos equipos deberán contar
con un navegador Web, conexión a Internet, la máquina virtual de Java y el JAR de la
aplicación, ası́ como, una base de datos SQLite que es utilizada por la aplicación como
sistema de persistencia.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
61
ARQUITECTURA DEL SISTEMA
DISEÑO DEL SISTEMA
Por otra parte, se encuentran dos servidores de la empresa Ecocomputer S.L. La decisión de utilizar el mismo servidor fı́sico para desplegar el servicio Web y la aplicación
Web ha sido interna a la misma, pudiendo ser portado alguno de ellos a un emplazamiento
distinto en un futuro si se considerara necesario. Además del servidor de despliegue con
un software como Tomcat v6 que actúa de servidor de aplicaciones, se cuenta con otro
servidor para el gestor de base de datos SQL Server 2005.
Figura 5.4: Diagrama de despliegue del proyecto
No se detallan las direcciones o nombres DNS de las máquinas, ya que se considera de
poca importancia para entender la arquitectura y no parece adecuado revelar información
de la empresa.
62
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
DISEÑO DEL SISTEMA
5.2.
DISEÑO DE CLASES
Diseño de clases
En esta sección se representan las clases que formarán el proyecto.
5.2.1.
Diagrama de clases
Aplicación cliente de escritorio para Windows
Paquete visual
Este paquete, como ya se comentado anteriormente, contiene las clases encargadas de
la interfaz gráfica. Dado que son clases llenas de componentes de Swing1 y que únicamente
presentan métodos para la inicialización y manejo de los mismos, no se considera necesario
realizar un diagrama de clases de las mismas.
Este paquete contendrá por una parte una clase encargada de representar la ventana de
la aplicación, ya que únicamente habrá una ventana y se modificarán los paneles interiores
según convenga. Estos paneles se encontrarán en un subpaquete, dada la multitud de clases
que se generarán. Por otra parte, los cuadros de diálogo necesarios para notificaciones o
pedir información extra al usuario, para realizar una operación, se encontrarán en otro
subpaquete.
Paquete Entities
Este paquete contiene las clases del modelo. Se trata de clases planas, sin funcionalidad.
En el diagrama inferior, se muestran las clases ausentes de métodos, ya que únicamente
contienen selectores y modificadores y se considera aumentar inútilmente la información
del diagrama, dificultando su lectura.
Figura 5.5: Diagrama de clases entities
En el diagrama superior, se pueden ver las clases del modelo, acompañadas de clases
igualmente planas, que se requieren para dotar de alguna funcionalidad a la aplicación.
Ası́, aparecen clases como LogLine, para representar una entrada en el LOG del sistema.
Configuration, por su parte contiene la información relativa a la comunicación con el
servicio Web.
1
Más información sobre Swing en: http://docs.oracle.com/javase/tutorial/uiswing/start/about.html
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
63
DISEÑO DEL SISTEMA
DISEÑO DE CLASES
Paquete logic
Este paquete contiene la lógica de negocio propia del sistema. Se encuentra dividido en dos subpaquetes para separar las clases ejecutoras de los manager que actúan de
intermediarios entre paquetes y cuya funcionalidad abarca más de una operación lógica.
Figura 5.6: Diagrama de clases del paquete Exec
A continuación se detallan las componen este paquete:
ExecutableJob: Esta clase representa una tarea ejecutable. Pese a tener en el
modelo las tareas con la información relativa al origen y destino de la copia, para
trabajar con el programador de hilos, es necesario utilizar una clase un poco diferente.
Esta clase, implementa la interfaz ((Job))de la biblioteca Quartz Scheduler comentada
con anterioridad en este documento.
BackupExecutor: Esta clase será la encargada de ejecutar un backup. Su funcionalidad básica será la de recorrer las tareas ejecutables y lanzarlas cuando se cumpla la
programación temporal marcada. Para ello, se cuenta con un objeto ((Scheduler))de
la biblioteca anteriormente comentada. Como funcionalidades que aporta este ejecutor de backups, cabe destacar la parada de un backup en ejecución (lo que supone
eliminar el mismo de la pila de ejecución del programador de hilos) y el inicio de un
nuevo backup (que supone incluir dicho objeto en la ejecución del scheduler).
ReloadBackups: Se cuenta con un tipo de tarea ejecutable adicional, con la finalidad de mantener un refresco periódico de backups. Esta tarea se encargará de
mantener en la pila de ejecución del programador de hilos aquellos backups que
deban seguir ejecutándose, eliminando de la misma los que deban ser retirados.
ReloadExecutor: Se ha explicado anteriormente la tarea encargada del refresco
del sistema, pero de nada servirı́a sin un ejecutor periódico de dicha tarea. Esta
funcionalidad se consigue con esta clase. Su única misión es lanzar el actualizador
anteriormente comentado periódicamente.
64
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
DISEÑO DEL SISTEMA
DISEÑO DE CLASES
Paquete util
Se presenta a continuación, el diagrama de clases del paquete Util. Este paquete contiene clases que no encajan dentro de la lógica de negocio de la aplicación, pero que son
necesarias para cumplir algunas funcionalidades.
Figura 5.7: Diagrama de clases del paquete Util
A continuación se detallan las componen este paquete:
MD5Converter: Dado que se va a trabajar con información sensible como es el
caso de contraseñas, se consideraba necesario contar con algún sistema de cifrado
de las mismas. Dada la facilidad de implementación y su robustez, se ha decidido
implementar el algoritmo de cifrado MD5. Esta clase convierte la cadena en texto
plano en la información cifrada.
Controllers: Siguiendo el patrón arquitectónico MVC (Modelo-Vista-Controlador),
se pretende eliminar la funcionalidad de las clases de visualizado y creación de interfaces. Por esta razón, se cuenta con clases controladoras para las operaciones que
requieren algo más que una llamada a una capa inferior.
Log: Esta clase presenta una interfaz muy sencilla pero igualmente necesaria. Simplemente contiene un método para incluir un nuevo registro en el LOG del sistema.
Se debe indicar el incidente a registrar y la causa del mismo.
Threads: Dado que se trata de una aplicación que realiza numerosas actividades en
segundo plano, manteniendo la interfaz de usuario operativa para seguir operando,
se considera de vital importancia la utilización de hilos. Por esta razón se cuenta con
un paquete de este propósito. La única funcionalidad que presentan estas clases es
la de encapsular llamadas a capas inferiores, mediante la ejecución de un nuevo hijo
del programa.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
65
DISEÑO DEL SISTEMA
DISEÑO DE CLASES
Paquete webService
Este paquete contiene las clases autogeneradas por el entorno de desarrollo Eclipse a la
hora de crear un cliente para un servicio Web SOAP realizado con Axis2. No se presenta
diagrama de clases de la fase de diseño porque no es necesario diseñar ni implementar las
mismas. Creando el servicio Web, Eclipse se encarga por nosotros de generar las clases
necesarias para realizar las llamadas al servicio.
Paquete persistence
Este paquete contiene las clases encargadas de, mediante el framework JDBC, conectarse al sistema de base de datos SQLite y garantizar la persistencia de los datos. Por
comodidad de uso, se creará una especie de patrón ((Fachada)). Se contará con una clase
((PersistenceManager))que será la interfaz visible desde el resto de la aplicación, ésta contendrá todas las operaciones de persistencia y delegará en las clases oportunas su tarea.
Por ejemplo, contará con un método para obtener un Backup de base de datos, pero delegará la creación de la consulta SQL a la clase ((BackupPersistence)). Con esto se consigue
aparente transparencia para la persistencia pero por otra parte se mantienen separadas
las consultas relativas a cada tabla.
Aplicación Web
Figura 5.8: Diagrama de clases de la aplicación Web
El diagrama anterior recoge el diseño de la aplicación Web del proyecto. Tal como se ha
comentado anteriormente, se utilizará el framework Struts2 y se implementará siguiendo un
modelo en capas apoyado sobre el patrón arquitectónico DAO para tratar la persistencia.
El funcionamiento, como el de cualquier proyecto con Struts2 esta fundamentado en
los ((Actions)).
66
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
DISEÑO DEL SISTEMA
DISEÑO DE CLASES
La funcionalidad de cada paquete se encuentra claramente diferenciada. Mientras que el
paquete de presentación, contiene los mencionados Actions de Struts2 que desencadenarán
en hojas JSP, el paquete de persistencia contendrá únicamente los objetos DAO para
recuperar objetos del modelo de base de datos.
Servicio Web
Figura 5.9: Diagrama de clases del servicio Web
En el diagrama superior se muestra el diseño del servicio Web. Se puede observar la
simpleza del mismo en el limitado número de clases. Se trata de un servicio que únicamente
válida la información de un usuario y en caso de ser correcta actualiza la información de
la base de datos.
Se cuenta con una clase gestora de persistencia, la clase propia del servicio que presenta
un único método como interfaz, y las clases de tipos de datos. Se han mantenido aisladas
las clases de entidades, ya que se trata de la información importante para el servicio.
El funcionamiento del servicio será el siguiente: un cliente se conectará al mismo enviando un objeto de tipo ((SerializableInformation)), que contendrá la información de autenticación. Por otra parte enviará dos listas con los datos a introducir o actualizar en
la base de datos, una para los historiales de los backups y otra para los históricos de las
tareas que los forman.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
67
DIAGRAMAS DE INTERACCIÓN Y ESTADOS
5.3.
DISEÑO DEL SISTEMA
Diagramas de interacción y estados
A continuación podremos encontrar una serie de diagramas en los que se pretende
explicar el funcionamiento interno de alguna de las acciones más importantes del proyecto a
lo largo de su ejecución por los diferentes pasos que la comprenden. Mediante los diagramas
de interacciones veremos el conjunto de pasos y métodos llamados desde que se inicia una
operación hasta que finaliza, además de los elementos implicados en ello. A través de los
diagramas de estados se pretende ilustrar qué fases atraviesan los objetos durante una u
otra operación. Se muestran los diagramas más representativos del proyecto, ya que algunas
operaciones triviales no aportan demasiada información para comprender la arquitectura.
5.3.1.
Aplicación de escritorio para entornos Windows
Se van a detallar los pasos necesarios desde que se ejecuta por primera vez la aplicación
hasta que se programa el primer backup. Se tomará como ejemplo un backup sobre una
base de datos y que suba la copia realizada a un servidor FTP, ya que requiere más pasos
y se considera más representativo.
Figura 5.10: Diagrama de estados de creación del primer backup
El diagrama pretende detallar los pasos a seguir para la creación de la primera programación de copias de seguridad.
Lo primero que debe realizar un usuario al iniciar la aplicación por primera vez en un
sistema, es registrar un usuario. De esta forma quedará autenticado y tendrá acceso a la
herramienta. Para poder crear un Backup, es necesario primero definir tareas, y estas a
su vez, en caso de contener referencias a conexiones requieren la creación previa de las
mismas.
Una vez que el backup es creado, el sistema lo añade a la lista de ejecución y llegado
el momento programado lo ejecuta de manera autónoma. En este diagrama se han prescindido de funcionalidades del sistema como la creación de registros de LOG, la creación
de históricos de resultados de las copias y la conexión con el servicio Web para actualizar
la información de la base de datos del servidor.
68
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
DISEÑO DEL SISTEMA
5.3.2.
DIAGRAMA DE SECUENCIA
Aplicación Web
Para el caso de la aplicación Web se detallará el proceso requerido para consultar los
resultados de un backup y las tareas del mismo. Se considera una tarea sencilla pero que
resume toda la funcionalidad de la aplicación.
Figura 5.11: Diagrama de estados de la aplicación Web
Se puede comprobar como para poder acceder a la información se debe pasar por un
sistema de autenticación. Una vez el sistema reconoce el cliente que está accediendo al
sistema le muestra la información relativa a los resultados de los backups realizados en sus
equipos. Será el usuario quien deba pedir más información de algún Backup en concreto
para conocer el resultado de las tareas del mismo.
5.4.
Diagrama de secuencia
Dada la sencillez de la aplicación Web, únicamente se detallará la herramienta de
escritorio con un diagrama de secuencia. Se explicará mediante el mismo los pasos llevados
a cabo por el sistema desde la creación de un backup hasta que el tiempo de vida del mismo
finaliza.
Se han omitido las clases llamadas que generan los nuevos registros de LOG, ası́ como la
creación de históricos durante las ejecuciones del Backup, para evitar generar un diagrama
con demasiada información y de difı́cil lectura.
Por otra parte, se ha partido de un usuario autenticado en el sistema. Se recuerda
que la aplicación no se encuentra accesible a usuarios anónimos y se debe completar un
formulario de usuario y contraseña para realizar cualquier actividad.
Por último, destacar que la ejecución de un Backup no es inmediata, ésta se activa al
cumplirse lo programado. Es decir, si un backup es programado para un futuro lejano, éste
será añadido a la pila de ejecución del programador de hilos, pero no llegará a ejecutarse
hasta llegado el momento concreto de su programación.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
69
DISEÑO DEL SISTEMA
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
DIAGRAMA DE SECUENCIA
70
Figura 5.12: Diagrama de secuencia en la creación de un Backup
DISEÑO DEL SISTEMA
5.5.
DISEÑO DE LA BASE DE DATOS
Diseño de la base de datos
Este proyecto hace uso de dos sistemas de bases de datos distintos. Por un lado la
aplicación cliente trabaja con SQLite, dada su sencillez y su correcto funcionamiento sin
requerir recursos o una instalación compleja. Por otra parte, la aplicación Web y el servicio
que la mantiene actualizada, hacen uso de Microsoft SQLServer 2005 para almacenar la
información
En este apartado únicamente se mencionará la información relativa al proyecto tratado.
Como se ha comentado anteriormente, la aplicación se integra en una plataforma con más
aplicaciones funcionando. Por esta razón, la base de datos contendrá tablas propias de
otros proyectos y que no guardan relación con el que nos ocupa. En este documento,
dichas tablas no serán tratadas pese a formar parte del sistema de base de datos utilizado.
5.5.1.
Descripción de los sistemas de gestión de bases de datos
SQLite
Tal como se define en su página oficial2 , SQL es una biblioteca software cuyo código es
libre y que dado que no requiere configuración y funciona de manera autónoma y ligera,
se ha convertido en un sistema muy utilizado en la actualidad.
Se considera ideal para el proyecto tratado, dado que no requiere instalación o configuración compleja y se puede entregar junto con el JAR a los clientes para que comiencen
a utilizar la aplicación al momento.
Microsoft SQL Server 2005
Microsoft SQL Server es un sistema para la gestión de bases de datos producido por
Microsoft basado en el modelo relacional. Los lenguajes para consultas soportados son
T-SQL y ANSI SQL.
Como principal desventaja frente a sus competidores, se encuentra la limitación de
funcionamiento a entornos con operativos de Microsoft. Sin embargo, en las versiones
Server de Windows, la integración es muy completa y su instalación no supone ningún
esfuerzo.
En este caso, el sistema venı́a impuesto por la empresa Ecocomputer S.L. Como se ha
comentado, la aplicación será integrada en una plataforma con más proyectos y se debe
aprovechar la infraestructura existente. Se cuenta con la versión 2005 de Microsoft SQL
Server en producción y es por ello que la aplicación debe funcionar con esta versión.
5.5.2.
Integración de lo sistemas de gestión de bases de datos
Se utilizará JDBC (Java Database Connectivity) para realizar la integración con ambos
sistemas de gestión. Se trata de una API que permite la ejecución de operaciones sobre
bases de datos desde Java, independientemente del sistema operativo donde se ejecute o
de la base de datos a la cual se accede, utilizando el dialecto SQL del modelo de base de
datos que se utilice.
Serán necesarios los drivers correspondientes a dichos sistemas de gestión, los cuales
pueden descargarse de las páginas oficiales de los productos y son completamente gratuitos
y libres para su uso.
Para el caso de SQL Server 2005, se realizará una conexión remota mediante su puerto
por defecto (1433). Sin embargo, SQLite debe encontrarse fı́sicamente en el equipo de la
aplicación que la utiliza.
2
Página oficial de SQLite: http://www.sqlite.org/
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
71
DISEÑO DE LA BASE DE DATOS
5.5.3.
DISEÑO DEL SISTEMA
Diagrama entidad-relación
Aplicación cliente de escritorio para Windows
En la imagen inferior se muestra el diagrama Entidad-Relación de la base de datos
que utiliza la aplicación cliente. Puesto que se utiliza un lenguaje orientado a objetos y
un sistema de base de datos relacional, se considera esta representación más idónea que
otros tipos de representación de modelado de una base de datos.
Figura 5.13: Diagrama Entidad-Relación de la base de datos de la aplicación cliente
como puede verse en el modelo, algunas tablas almacenan datos aislados como puede
ser el caso de la configuración, los datos de acceso del usuario o el LOG.
Por otra parte se encuentran los datos relacionados de la aplicación que suponen el
modelo de negocio. Este diseño es el resultado de varias reuniones con la empresa cliente
y varias modificaciones.
No se considera un buen modelo ya que se cuenta con valores nulos en muchos casos,
como por ejemplo en la tabla Backup (la que almacena la programación temporal sobre la
ejecución de las copias) se cuenta con dos campos: ((Ejecutar A))y ((Ejecutar Cada)), de los
cuales uno contendrá información y el otro será un valor nulo según el caso. Sin embargo,
es la solución acordada con la empresa y no habı́a libertad para su modificación.
Relacionado con esta base de datos y atendiendo a que el cliente no querı́a que el
proyecto eliminara datos antiguos de la base de datos, se recomienda la realización de un
Trigger o disparador, que elimine los registros del LOG más antiguos una vez alcanzado
un lı́mite admitido.
72
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
DISEÑO DEL SISTEMA
DISEÑO DE LA INTERFAZ
Aplicación Web
La aplicación Web hace uso de dos tablas propias, tal como se muestra en la imagen
inferior. Se debe tener en cuenta además la tabla de usuario que contiene el ((ID Cliente)),
incluido como clave ajena en ambas tablas.
Figura 5.14: Tablas empleadas por la aplicación Web
Podrı́a buscarse una solución que evitara duplicar en ambas tablas información como es
el caso del cliente, para ello deberı́an relacionarse ambas tablas. Se ha decidido la solución
presentada por comodidad en las consultas y para facilitar la información de nuevos datos
de manera simple. Es decir, si se desea introducir un nuevo historial de una tarea, no
es necesario buscar el historial de backup al que va ligado, simplemente se inserta la
información tal como llega en el servicio Web.
5.6.
5.6.1.
Diseño de la interfaz
Aplicación de escritorio para Windows
Figura 5.15: Diseño del panel de autenticación
La interfaz de usuario de la aplicación de escritorio ya se mostró en la fase de análisis.
En ese momento se trataba de imágenes diseñadas con entornos gráficos y se comentó que
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
73
DISEÑO DEL SISTEMA
DISEÑO DE LA INTERFAZ
podrı́a diferenciarse en algunos aspectos del resultado final de la aplicación. En esta fase
del proyecto se pretende diseñar la interfaz de usuario haciendo uso de los componentes
reales que se utilizarán. Este diseño será más realista y pese a imitar en todo lo posible
en anteriormente mostrado, presenta algunas diferencias.
Figura 5.16: Diseño del panel de resultados
Se ha intentado realizar una aplicación usable y accesible en la cual se vea claro el
punto en el que se encuentra el usuario. Se ha intentado realizar una aplicación visual, con
colorido, pero siempre intentando representar la información con formas o texto además de
con colores. Se puede apreciar que los resultados son coloreados según hayan sido realizados
con éxito o hayan fracasado. Sin embargo, también se acompaña la información con un
pequeño icono cambiante y denotador de la misma información. El icono cuenta además
con un texto de ayuda que puede ser visualizado pasando el ratón por encima.
Figura 5.17: Diseño del panel de Log y de Configuración
Figura 5.18: Diseño del panel de Log y de Configuración
74
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
DISEÑO DEL SISTEMA
5.6.2.
DISEÑO DE LA INTERFAZ
Aplicación Web
Figura 5.19: Diseño de la aplicación Web. Resultado de Backups
En las imágenes se pueden ver los diseños realizados por Ecocomputer S.L. para la
interfaz de usuario de la aplicación Web. Se ha mantenido el mismo diseño que las aplicaciones que se encuentran desplegadas por la empresa en tan comentada plataforma.
Al igual que los diseños de la aplicación de escritorio, se trata de imágenes para tener
como referencia pero no de diseños cerrados. Al realizar las hojas de estilo propias de la
aplicación Web, se intentará copiar el diseño aquı́ presentado en la mayor medida.
Por otra parte, también se han tenido en cuenta temas de usabilidad y accesibilidad
tal como será comentado en la sección de pruebas de esta documentación. Como adelanto,
comentar que se evita el uso de colores como única forma de representación de información,
contando con iconos de diferentes formas que apoyen la misma. Además, se han dotado
tales iconos de un texto alternativo que facilite su lectura por navegadores en modo texto
o lectores de pantalla.
Figura 5.20: Diseño de la aplicación Web. Resultado de Tareas
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
75
ESPECIFICACIÓN TÉCNICA DEL PLAN DE PRUEBAS
5.7.
5.7.1.
DISEÑO DEL SISTEMA
Especificación técnica del plan de pruebas
Pruebas unitarias
Tal como se ha comentado en el apartado de análisis de este documento, se realizarán
pruebas unitarias haciendo uso de la herramienta JUnit. Principalmente se probarán las
clases encargadas de la lógica compleja. Se realizarán pruebas para comprobar el correcto
funcionamiento del formateador de programaciones a CRON, las clases encargadas de
realización de copias, de establecer conexiones . . .
Pese a que el código será intensivamente probado por el cliente (Ecocomputer S.L.)
antes de ponerlo en producción y que comiencen a utilizarlo los clientes finales, estas
pruebas unitarias permiten la comprobación de cambios y localizar más fallos que un
probado convencional, simplemente haciendo uso de la herramienta.
5.7.2.
Pruebas de integración y del sistema
Mediante estas pruebas de integración se pretende comprobar que la combinación de
cada módulo individual en el total funciona como es esperado. Se realizarán las definidas
previamente en la fase de análisis. Habrá que tener en cuenta que las pruebas de visualización de interfaz son más directas y basadas en la experiencia del usuario: se comprobará su
buen funcionamiento y eficacia de manera directa, observando la interfaz y los posibles
cambios que en ella provoquen las operaciones de los demás módulos.
Por otra parte, dado que se utilizará durante el desarrollo del proyecto un entorno
réplica del sistema de producción, el estudio de la integración será inherente al progreso del
proyecto. Se utilizarán las mismas versiones que presentan los sistemas de la empresa para
evitar problemas de incompatibilidad al migrar el resultado a los servidores de producción.
5.7.3.
Pruebas de usabilidad y accesibilidad
Dada la naturaleza del proyecto, y la imposición por parte de Ecocomputer S.L. a
implementar unas interfaces de usuario fijadas, no se ha destinado demasiado esfuerzo a
garantizar la usabilidad y accesibilidad del proyecto. Sin embargo, se han tenido en cuenta
pequeñas recomendaciones o buenas prácticas que no suponen una modificación elevada
del diseño propuesto, y que mejoran estos aspectos.
El proyecto está pensado para ser utilizado por usuarios con conocimientos en informática, principalmente administradores de sistemas que suelen ser los encargados de
realizar las copias de seguridad en una empresa. Este perfil de usuarios, presenta un gran
manejo de las herramientas comunes de interacción con un sistema informático. Pero no
por ello se deben descuidar aspectos que faciliten la manipulación de la herramienta.
Para el caso de la aplicación de escritorio se ha intentado permitir la interacción en
todo momento haciendo uso únicamente de teclado. Por otra parte, se han trabajado
aspectos relacionados con el foco, permitiendo al usuario teclear directamente sobre el
primer campo del formulario sin necesitar desplazamientos o clicks de ratón.
Centrando el tema en las pruebas, el proyecto se ha desarollado con el apoyo de la
empresa cliente. Esto permite la recogida de información sobre posibles cambios o dificultades a la hora de utilizar la herramienta. Dado que se presentaron prototipos durante
todo el proyecto, se han ido localizando cosas a mejorar, de igual manera, durante todo el
proceso.
La aplicación Web, por otra parte, también cuenta con una estructura y un diseño
fijado como requisito. No obstante, se realizaran pruebas de accesibilidad siguiendo las
Pautas de Accesibilidad de Contenidos Web (WCAG) en su versión primera.
76
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
DISEÑO DEL SISTEMA
5.8.
DECISIONES DEL PROYECTANTE
Decisiones del proyectante
Se ha incluido esta sección en la documentación de este proyecto, para concretar algunas decisiones llevadas a cabo por el proyectante. Algunas de las decisiones tomadas
no se consideran la mejor solución posible pero era necesario llegar a un acuerdo con los
intereses de la empresa.
5.8.1.
Seguridad en las contraseñas
En los requisitos del proyecto se mencionaba que las contraseñas debı́an encontrarse en
texto plano para que en caso de olvido por el usuario, un administrador de Ecocomputer
pudiera visualizar la base de datos y conocerla.
Se considera un enorme fallo de seguridad mantener las contraseñas sin cifrar. Por ello
se intento pactar la utilización de algoritmos de cifrado ((irreversible)). De tal manera que
la comprobación de contraseñas se hiciera comparando los resultados después del cifrado.
Esta solución no es posible dado que se necesita almacenar contraseñas de conexión, las
cuales deben ser recuperables para establecer las mismas. Se intentó realizar un tipo de
cifrado reversible basado en una palabra clave, sin embargo, esta solución no fue aceptada
por Ecocomputer S.L.
La solución a la que se llegó después de negociaciones, fue la siguiente:
Cifrado MD5 de la contraseña del usuario. La contraseña del usuario de la
aplicación de escritorio será almacenada cifrada siguiendo el algoritmo MD5. En caso
de que el cliente olvide su contraseña un administrador deberá consultar la base de
datos y modificar introduciendo un nuevo valor MD5 generado o eliminar el usuario
para que la aplicación solicite un nuevo registro.
Codificación de las contraseñas reversibles. Dado que no se llegó a un acuerdo
de cifrado de las contraseñas reversibles, se ha decidido codificar las mismas para
evitar una lectura sencilla. La solución se considera inaceptable, pero los requisitos
del cliente se consideran más importantes que las opiniones personales.
Figura 5.21: Diseño de la pantalla de conexiones con contraseñas visibles
Otra muestra de la poca importancia que se le daba a la seguridad de las contraseñas
en este proyecto, podemos verlo en los diseños de la interfaz gráfica elaborados en la fase
de análisis. En la imagen que acompaña esta sección, puede verse como en el diseño del
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
77
DECISIONES DEL PROYECTANTE
DISEÑO DEL SISTEMA
panel de conexiones se muestra la contraseña de los usuarios. No se ha seguido este diseño
al considerarlo un fallo importante, y la empresa no ha puesto inconveniente en eliminar
dicha información visible.
5.8.2.
Código sencillo de mantener
Durante las fases de análisis y diseño se presentaron alternativas al finalmente implantado. Se barajó la posibilidad de utilizar frameworks de persistencia como ((Hibernate3 )).
Hablando con el personal de Ecocomputer S.L. que deberá mantener el proyecto, confesaban no tener experiencia trabajando con Java, ya que siempre habı́an implementado
tecnologı́as .Net. Reconocı́an que les presentarı́a un problema mantener un código en un
lenguaje con el que no están acostumbrados y mucho más si se utilizaban frameworks
especı́ficos que deberı́an aprender para entender la estructura del proyecto.
Intentando facilitar las tareas de mantenimiento del proyecto, se han intentado utilizar
las tecnologı́as más comunes y evitar el uso de frameworks que complicaran la comprensión
del código.
Para el caso de la aplicación Web, el caso fue distinto. La empresa ya contaba con
proyectos realizados con Struts2 y aprovechando algunas ventajas de Spring. Por esta
razón, y previa consulta, se decidió utilizar los frameworks mencionados.
5.8.3.
Base de datos sin eliminaciones
Otro aspecto de los requisitos iniciales del sistema que provocó intercambio de opiniones, fue el diseño de la base de datos. En la fase de análisis, Ecocomputer S.L. realizó un
diagrama de tablas en el que todas presentaban un campo ((eliminado)), modificando las
operaciones de eliminación de información, por actualizadores de ese campo con valor
booleano a verdadero.
Desde la perspectiva personal, se considera necesario mantener alguna información
importante de cara a posibles análisis o detección de errores. Pero la decisión de no borrar
ningún registro de la base de datos supone un aumento considerable del peso de la misma.
Por citar un ejemplo, cada operación realizada en la aplicación queda registrada en la
tabla de LOG, es importante conservar estos registros, pero de nada valen una vez pasado
el tiempo y si la aplicación es utilizada de manera frecuente podremos encontrarnos con
miles de registros en pocos dı́as.
Figura 5.22: Diseño de la base de datos en el primer análisis del proyecto
3
78
Sitio Web de Hibernate: http://www.hibernate.org/
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
DISEÑO DEL SISTEMA
DECISIONES DEL PROYECTANTE
Para evitar estos casos, se recomienda el uso de Triggers que se disparen al realizar
nuevas inserciones borrando las entradas más antiguas. De esta forma se consigue transparencia para la aplicación y se consigue mantener la información de importancia.
Se acordaron modificaciones en la base de datos, eliminando el campo mencionado de
algunas tablas y permitiendo el borrado de registros.
Otro aspecto que se modificó respecto al diseño de la empresa, fue la creación de tablas
para mantener los valores que puede presentar un campo. En el diagrama que acompaña
la sección se puede ver una tabla ((PeriodicidadBackup)), cuya funcionalidad es contener
los valores: diaria, semanal, mensual y anual.
En el diseño final se ha utilizado restricciones de valores para evitar la creación de tablas
del estilo mencionado. Se consigue el mismo efecto, mejorando las consultas y evitando la
carga de tablas añadidas.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
79
DECISIONES DEL PROYECTANTE
80
DISEÑO DEL SISTEMA
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
Capı́tulo 6
Implementación del sistema
6.1.
Estándares y normas seguidos
6.1.1.
XTML 1.1
Acrónimo en inglés de eXtensible Hypertext Markup Language, se trata del lenguaje
de marcado pensado para ser estándar en sustitución de HTML. Es solamente la versión
XML de HTML, que tiene la misma funcionalidad pero cumple con las especificaciones
de XML, más estrictas. Tiene como objeto la obtención de una web semántica, en la que
estén claramente separadas la información a mostrar de la forma de mostrarla.
Durante el desarrollo de la aplicación se intenta seguir lo máximo posible las normas
establecidas por este estándar. Sin embargo, dado que se utilizan componentes propios de
Struts2 que generan código HTML, es probable que no se consiga un marcado que cumpla
estrictamente con la norma.
6.1.2.
CSS 3
Acrónimo en inglés de Cascading Style Sheets, u ((hojas de estilo en cascada)), es
un lenguaje formal cuya función es la definir la presentación de un documento escrito
en HTML o XML. Dichas hojas se pueden aplicar mediante un documento CSS externo
llamado desde el archivo asociado, desde una hoja de estilo interna en el mismo documento,
o insertando las propiedades CSS directamente dentro de las etiquetas HTML, si bien la
opción recomendada por ser la más potente es la primera de ellas.
Aplicando hojas de estilo conseguimos las siguientes ventajas:
Control centralizado de la presentación de un sitio web, agilizando considerablemente
su actualización.
Posibilidad de que el usuario pueda especificar desde el navegador su propia hoja
de estilos para cubrir algunas posibles necesidades como, por ejemplo, aumentar el
tamaño del texto o cambiarlo de color.
Las páginas pueden disponer de diferentes hojas de estilo en función del dispositivo
que las lea. Ası́, la visualización de la web no será la misma desde un ordenador de
sobremesa que en un dispositivo móvil, por ejemplo.
Aumenta la legibilidad del código HTML por contener menos información, además
de reducir considerablemente el tamaño del documento.
En este proyecto se han heredado las hojas de estilo presentes en otras aplicaciones
de la plataforma Web donde será desplegada la aplicación. De esta forma se mantiene el
mismo aspecto y se consigue una mejor integración visual.
Por otra parte, se quiere destacar que el cumplimiento del estándar facilita el correcto
visualizado de la aplicación en diferentes navegadores Web y dispositivos.
81
ESTÁNDARES Y NORMAS SEGUIDOS
6.1.3.
IMPLEMENTACIÓN DEL SISTEMA
Estándares de programación
Pese a que no es necesario para la correcta ejecución del código fuente, sı́ que es muy
recomendable aplicar los estándares de cada lenguaje de programación utilizado. Seguir
las normas dictadas aporta principalmente mantenibilidad, entendimiento y legibilidad del
código. Esto permite que la aplicación sea más fácil de entender y mantener por el propio
autor original del código u otros programadores que deban hacerlo posteriormente.
Durante el desarrollo del proyecto se seguirán los estándares propios de cada lenguaje
(organización fı́sica y lógica de ficheros, correcta declaración de objetos, adecuada indentación y separación . . . ).
Se han tenido en cuenta buenas prácticas relacionadas con las tecnologı́as utilizadas.
La valoración de dichos consejos ayuda al desarrollo de un mejor código y más fácil de
mantener por personas ajenas a su desarrollo.
6.1.4.
Modelo-vista-controlador
Este patrón de arquitectura de software se encarga de separar la los datos de la aplicación, la lógica de negocio y la interfaz de usuario que representa la información y recoge
las interacciones del usuario. Aplicar este patrón supone aplicar las ideas de reutilización
de código y separación de conceptos, lo que facilita el desarrollo y posterior mantenimiento
de una aplicación software.
Tal como puede verse en los diagramas de paquetes de la fase de análisis, se ha seguido
este patrón arquitectónico en los módulos desarrollados.
6.1.5.
Patrón de diseño DAO
Un Data Access Object (Objeto de Acceso a Datos) es un componente de software que
suministra una interfaz común entre la aplicación y uno o más dispositivos de almacenamiento de datos, tales como una Base de datos o un archivo.
La utilización del patrón DAO, permite abstraer y encapsular los accesos a un repositorio de datos.
82
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
IMPLEMENTACIÓN DEL SISTEMA
6.2.
6.2.1.
LENGUAJES DE PROGRAMACIÓN
Lenguajes de programación
Java
Java1 es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems a principios de los años 90. El lenguaje en sı́ mismo toma mucha de su sintaxis
de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo
nivel, que suelen inducir a muchos errores, como la manipulación directo de punteros o
memoria.
Las aplicaciones Java están tı́picamente compiladas en un código intermedio, aunque
la compilación en código máquina nativo es posible. En el tiempo de ejecución, el bytecode
es normalmente interpretado o compilado a código nativo para la ejecución.
La implementación original y de referencia del compilador, la máquina virtual (JVM)
y las librerı́as de clases de Java fueron desarrolladas por Sun Microsystems en 1995. Desde
entonces, Sun ha controlado las especificaciones, el desarrollo y evolución del lenguaje a
través del Java Community Process, si bien otros han desarrollado también implementaciones alternativas de estas tecnologı́as de Sun, algunas incluso bajo licencias de software
libre.
Java es el lenguaje de programación utilizado en toda la lógica del proyecto que nos
atañe. Además de ello, se utilizan componentes adicionales para lograr los objetivos deseados.
Struts
Struts2 es una herramienta de soporte para el desarrollo de aplicaciones Web bajo el
patrón modelo-vista-controlador para Java. Su utilización permite reducir considerablemente el tiempo de desarrollo, separando automáticamente las capas de interfaz de usuario,
lógica de negocio y el acceso a datos. Esto lo realiza mediante Servlets, que se encargan de
realizar las operaciones desencadenadas por los Actions del usuario en la interfaz HTML.
Este software libre fue creado originalmente por Craig McClanahan y donado a la
Apache Foundation en el año 2000, pero no fue hasta 2005 cuando se convirtió en un
proyecto de alta importancia para Apache. La versión empleada en este proyecto es la 2.2.1
por cuestiones de compatibilidad con el resto de software desplegado en la plataforma que
se utilizará para el despliegue.
Spring Framework
Spring3 es un conjunto de herramientas para el desarrollo de aplicaciones en Java. Aunque Spring no impone ningún modelo de programación especı́fico, se ha popularizado entre
los programadores al ser considerado una alternativa al modelo de Enterprise JavaBeans.
Sus módulos proveen una gran variedad de servicios, técnicas y paradigmas, como un
contenedor de Inversión de Control, programación orientada a aspectos, acceso a datos,
gestor transaccional, modelo-vista-controlador, framework de acceso remoto, convención
sobre configuración, procesamiento por lotes, autenticación y autorización, administración
remota, mensajerı́a y herramientas de testado.
Se trata de un software libre desarrollado por Rod Johnson cuya primera versión fue
lanzada en 2004. En el desarrollo del proyecto se utilizará la versión 2.2.1 distribuida junto
con las librerı́as de Struts.
Las librerı́as de Spring se utilizarán principalmente para lograr la inyección directa de
dependencias.
1
Descarga de Java: http://www.java.com/es/download/
Sitio Web de Struts: http://struts.apache.org/
3
Sitio Web de Spring: http://www.springsource.org/spring-framework
2
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
83
LENGUAJES DE PROGRAMACIÓN
IMPLEMENTACIÓN DEL SISTEMA
Java Database Connectivity
Más conocido por sus siglas JDBC, se trata de una API que permite realizar de manera
sencilla operaciones sobre una base de datos empleando el lenguaje Java, independientemente del sistema operativo y base de datos a la que se quiera acceder. Una vez establecida
la conexión mediante los manejadores pertinentes, se puede realizar cualquier tipo de tarea
con la base de datos, siempre y cuando se tengan en la misma los permisos adecuados,
utilizando el conjunto de objetos e interfaces que pone a disposición del programador.
Su desarrollo depende de Sun Microsystems puesto que se integra en la Java Development Kit desde su versión 1.1 de febrero de 1997. Su actual versión, JDBC 4.1, está incluida
en la Java SE 7 de julio de 2011.
La utilización de las librerı́as de JDBC en el desarrollo del proyecto se produce en
todos los módulos del mismo, ya que al ser independiente del gestor de base de datos, se
puede utilizar para conexiones con Microsoft SQLServer y con SQLite de igual manera.
Swing
Swing es una biblioteca gráfica para Java, que incluye componentes o widgets para
crear interfaces gráficas de usuario. Una alternativa al uso de Swing, es AWT. Esta biblioteca estaba concebida como una API estandarizada que permitı́a utilizar los componentes
nativos de cada sistema operativo. Sin embargo, la limitación de vinculación entre la aplicación Java y el sistema operativo hace de otras bibliotecas no vinculadas, como Swing,
una mejor opción.
Quartz Scheduler
Como ya se ha comentado en anteriores secciones del proyecto, se utilizará la biblioteca
mencionada para implementar la programación de ejecución de hilos. Se trata de un proyecto de código abierto que presenta muy buenas crı́ticas entre sus usuarios y que requiere
poco tiempo de aprendizaje.
La principal ventaja que se encontró al proyecto es que permite un encapsulamiento
elevado de la funcionalidad. Haciendo uso de un formato como el admitido por CRON
en Unix, simplemente se requiere una clase que implemente una interfaz concreta de la
biblioteca y una programación temporal en el formato indicado.
Datatables
Datatables4 es una biblioteca JavaScript basada en JQuery, que permite añadir de
manera sencilla, controles a una tabla. Se utilizará para permitir el filtrado de registros de
la tabla, la limitación de filas por página, ası́ como permitir su ordenación por columnas.
4
84
Sitio Web de Datatables: https://datatables.net/
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
IMPLEMENTACIÓN DEL SISTEMA
6.3.
6.3.1.
HERRAMIENTAS Y PROGRAMAS USADOS PARA EL DESARROLLO
Herramientas y programas usados para el desarrollo
Eclipse
Eclipse es un entorno de desarrollo multiplataforma utilizado para la realización de
proyectos, que da soporte a una gran cantidad de lenguajes de programación, como son C,
C++, Fortran, Java, Perl, PHP, Python o Ruby, entre otros, gracias a las herramientas
de desarrollo que incorpora y la posibilidad de instalar plugins adicionales.
El entorno de desarrollo integrado emplea módulos que pueden ser activados y desactivados en función de las necesidades de cada usuario, lo que le confiere una ligereza
de ejecución considerable. Eclipse provee al programador de una serie de frameworks que
facilitan la labor del desarrollador, ası́ como un compilador y herramienta de depurado
Java.
Se trata de una aplicación de software libre mantenida por la Eclipse Foundation,
fundada en 2003, y su comunidad de usuarios, pese a que inicialmente fue producto de
un proyecto de IBM. Su última versión estable, la 4.2 que se conoce bajo el nombre de
((Juno)), es la empleada en el desarrollo de este proyecto.
Se ha elegido Eclipse frente a otras alternativas como Netbeans, por la experiencia
previa del entorno, asi como por la integración que presenta con frameworks utilizados.
6.3.2.
SQL Server Management Studio Express
La aplicación SQL Server Management Studio Express es una herramienta empleada
para configurar, manejar y administrar todos los componentes de una base de datos Microsoft SQL Server. Soporta tanto la entrada de datos por comandos como mediante las
interfaces gráficas proporcionadas.
Fue desarrollada por el propio equipo de Microsoft y lanzada conjuntamente con SQL
Server 2005. En este proyecto se utiliza la versión 9 ((Express)), gratuita, puesto que es la
última compatible con la versión del servidor de base de datos empleado.
6.3.3.
Enterprise Architect
La aplicación Enterprise Architect, desarrollada por Sparx Systems, es una completa
herramienta con la que crear todo tipo de diagramas UML. Utiliza la última especificación
de UML y dispone de gran cantidad de funcionalidades extra además de las posibilidades
de diseño que ofrece. Se trata de una herramienta comercial, aunque los alumnos de la
universidad contamos con licencia gratuita.
Incluye soporte para los diagramas de comportamiento, compuestos por casos de uso,
actividades, estado, interacción, secuencia y comunicación; además de diagramas estructurales como lo son los de paquetes, clases, objetos, composición, componentes y despliegue.
Entre otras caracterı́sticas, ofrece la creación automática de código fuente en más de diez
lenguajes diferentes partiendo de los diagramas, y viceversa; reportes en formato HTML y
RTF; manejo de requisitos; integración con entornos de desarrollo como Microsoft Visual
Studio o Eclipse . . .
Enterprise Architect ha sido usado en el desarrollo de este proyecto como herramienta
de modelaje de algunos diagramas, los cuales se pueden ver en las diferentes secciones de
esta documentación.
6.3.4.
Dia
Dia5 es una aplicación con la que crear diagramas, desarrollada como parte del proyecto
GNOME de sistemas Unix, aunque también existe una versión para Windows. Se trata de
un programa gratuito de código abierto distribuido bajo la Licencia Pública General de
GNU.
5
Sitio Web de Dia: https://projects.gnome.org/dia/
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
85
HERRAMIENTAS Y PROGRAMAS USADOS PARA EL DESARROLLO
IMPLEMENTACIÓN DEL SISTEMA
Con Dia se pueden modelar diferentes tipos de diagramas, entre los que se encuentran los de UML, de flujo o incluso de circuitos eléctricos. Gracias al paquete dia2code,
Dia también permite generar el esqueleto del código fuente a partir del diagrama UML
diseñado. La aplicación fue originalmente creada por Alexander Larsson hasta que James
Henstridge tomó su relevo como desarrollador jefe. Actualmente es mantenido por una
serie de desarrolladores independientes. Su última versión estable, la 0.97.1, data de enero
de 2010.
La herramienta ha sido utilizada para crear los diagramas entidad-relación de los sistemas de bases de datos, dichos diagramas pueden encontrarse en las secciones oportunas
de este documento.
6.3.5.
Microsoft Office Project
Project se trata de una aplicación desarrollada por Microsoft cuya función es la de
administrar proyectos para poder mantener un control sobre el trabajo, la evolución del
desarrollo, los plazos temporales y las finanzas, entre otros. Se trata de un software comercial que fue creado para DOS en 1984 a partir de las especificaciones de Alan M. Boyd
de Microsoft, aunque fue una empresa de Seattle quien lo desarrolló para que Microsoft
comprase los derechos en 1985.
Entre sus tareas se pueden destacar la posibilidad de organizar diferentes tareas, personal dedicado a cada una y el presupuesto previsto; la visualización y gestión del progreso,
solucionando problemas del proceso y prediciendo posibles escenarios; y el control de las
finanzas de los proyectos pudiendo elaborar presupuestos.
6.3.6.
TeXworks
TeXworks es un entorno de edición y trabajo con LATEX. Resulta muy cómodo ya
que permite la generación del PDF resultado y mantiene una integración referencial entre
ambos documentos.
Se ha decidido elaborar la documentación de este proyecto con esta herramienta y
este sistema de composición de textos, debido a que se considera más profesional para
documentos largos y con carácter cientı́fico.
86
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
IMPLEMENTACIÓN DEL SISTEMA
6.4.
Creación del sistema
6.4.1.
Problemas encontrados
CREACIÓN DEL SISTEMA
A continuación se enumeran algunos problemas encontrados durante el desarrollo del
proyecto.
Retrasos por cambios en los requisitos
El procedimiento seguido una vez se empezó la implementación, fue la de desarrollar
primero la aplicación de escritorio por tratarse del eje central del proyecto y el que más
complejidad presenta. Se empezó realizando un prototipo de la interfaz de usuario sin
funcionalidad para comprobar que se habı́an entendido las necesidades del cliente.
En este punto se produjo el siguiente problema. Como representantes de los intereses
de Ecocomputer S.L. y encargados del control del proyecto, se encontraban dos personas.
En las fechas en las que se organizó la reunión de avance para mostrar el prototipo de
interfaz, una de ellas se encontraba de vacaciones y por lo tanto solo se recogieron las
opiniones al respecto del otro miembro. La interfaz contaba contaba con la aceptación
de dicha persona y pese a realizar algunas pequeñas modificaciones se contó con ((luz
verde))para seguir desarrollando.
Pasado el tiempo y cuando ya se tenı́a un prototipo funcional, basado en la interfaz
de usuario anteriormente comentada, se procedió a concretar una nueva reunión con la
empresa para mostrar los avances. En esta ocasión, el que se encontraba ausente era el
miembro que habı́a acudido a la primera reunión. Las conclusiones obtenidas en este nuevo
punto del proyecto, fueron que los requisitos del proyecto no se encontraban claros. Al ver
la interfaz funcional, la otra persona encargada del proyecto, pensó que no era lo que se
necesitaba. Se acordaron multitud de cambios en la interfaz y en la funcionalidad de la
herramienta desarrollada. Tanto es ası́, que se vio modificado hasta el diseño de la base
de datos.
Todos estos cambios, al ser sugeridos únicamente por un encargado de la empresa, fueron anotados y se retrasó el proyecto hasta poder realizar una reunión conjunta con los dos
directores del proyecto. En esta reunión se acordaron algunos de los cambios anteriormente
propuestos y se llegó a la especificación de requisitos que finalmente se implantó.
Todas estas demoras y modificaciones no previstas en la planificación, fueron posibles
gracias a la simplificación de otros módulos del proyecto, eliminando funcionalidades que
finalmente no consideraban necesarias.
Indisponibilidad de los recursos proporcionados por el cliente
Una vez se comenzó el desarrollo de los módulos Web, se hizo necesario conocer el
entorno donde serı́an desplegados para su puesta en producción. Se pretendı́a obtener un
servidor de pruebas y desarrollo que fuera similar para evitar posibles incompatibilidades
en la migración del proyecto.
La empresa no pudo proporcionar un servidor de pruebas y desarrollo, y únicamente
facilitó un acceso al servidor de despliegue y producción y al sistema de gestión de bases
de datos que utilizan el resto de proyectos.
No se consideró recomendable la utilización de dichos recursos durante la realización
del proyecto, por lo que se tuvo que realizar una infraestructura espejo en un equipo
personal, con el que trabajar sin riesgo a poner en peligro la integridad de los equipos
o los datos de la empresa cliente. El tiempo dedicado a la instalación y configuración de
un servidor y un sistema de gestión de bases de datos similares a los presentados por la
empresa, provocó retrasos en la planificación del proyecto.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
87
CREACIÓN DEL SISTEMA
IMPLEMENTACIÓN DEL SISTEMA
Realización de proyectos integrados en paralelo
Como se ha comentado anteriormente en este documento, este proyecto iba a ser un
producto cerrado, sin embargo, los requisitos cambiaron debido a que se estaban desarrollando otros proyectos Web encaminados a los mismos clientes y podrı́a implementarse
una plataforma común.
La realización de dicha plataforma se produjo de manera paralela temporalmente al
proyecto que nos ocupa. Por esta razón se iban integrando módulos sin probar ni terminar. Dado que como se ha comentado, no se contaba con un servidor de pruebas ni
desarrollo, cuando se tenı́a una versión estable del proyecto se publicaba en los servidores
de producción para que lo analizaran en Ecocomputer S.L.
Los problemas encontrados, se basaban en la multitud de versiones y cambios en las
partes a integrar. Se contaba con un producto probado y funcional y a la hora de subirlo
al servidor de la empresa fallaba la integración, debido a que éste contaba con una nueva
versión no contemplada de la gestión de usuarios.
La solución llevada a cabo se basó en una comunicación constante con los desarrolladores de otros módulos. De esta forma se conocı́an los cambios y podı́an anticiparse las
medidas correctoras para garantizar la integración. Sin embargo, los retrasos en el proyecto
al no contar con una solución definitiva de los módulos a integrar fueron constantes.
Problemas de disponibilidad de la empresa
Durante el desarrollo del proyecto surgieron dudas y necesidades que debı́an ser resueltas por Ecocomputer S.L. Por esta razón se realizaron numerosas reuniones con finalidades
distintas.
La problemática que aquı́ se recoge, tiene que ver con la disponibilidad de la empresa
para organizar las mismas. Pese a mostrar un gran interés por el proyecto y presentar
todas las facilidades a su alcance, durante el proyecto personal encargado de la supervisión del mismo se vio ausentada debido a perı́odos de vacaciones u otros compromisos.
Estas ausencias provocaron retrasos en el proyecto al paralizar el desarrollo a la espera de
concretar requisitos.
Por otra parte, algunos problemas laborales, provocaron retrasos en diseños gráficos.
Hay que tener en cuenta que el diseñador además de elaborar los iconos del sistema,
realizó bocetos de cómo debı́a verse la interfaz de usuario y la estructura de los layouts.
Por esta razón, la demora en sus diseños produjo retrasos en el proyecto respecto a su
planificación.
Como solución, se decidió desarrollar con iconos propios y siguiendo una estructura
visual amigable, que permitiera continuar con el desarrollo y presentar prototipos funcionales. De esta forma, una vez realizados los diseños finales, los cambios se podrı́an aplicar
sobre un producto funcional completo.
Desconocimiento del entorno y las tecnologı́as
Algunas tecnologı́as empleadas en el proyecto, no se habı́an utilizado con anterioridad.
Este desconocimiento provocó retrasos para comprender y estudiar la tecnologı́a. Un ejemplo claro, dejando a un lado frameworks y bibliotecas utilizadas, fue el sistema de gestión
de base de datos impuesto por el cliente, Microsoft SQL Server 2005. Se presentaron dudas
respecto a los tipos de dato soportados y las diferencias entre éstos y los datos manejados
por el otro sistema utilizado en el proyecto, SQLite. Principalmente, el uso de fechas con
hora incluida, ya que en unos casos se representa mediante un tipo de dato y en otros con
otro, y debe ser recuperado desde JDBC en objetos Java distintos.
88
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
IMPLEMENTACIÓN DEL SISTEMA
6.4.2.
CREACIÓN DEL SISTEMA
Descripción detallada de las clases
Para describir cada clase se han utilizado comentarios JavaDoc. Dado que se ha generado un elevado número de páginas de información, se ha incluido al final de este documento.
Se ha utilizado un Doclet6 , para formatear la salida del javadoc a formato PDF y ası́,
poder incluir la información en este documento. La salida habitual de javadoc es HTML,
para conseguir la misma información en otros formatos, como en este caso, se deben utilizar
herramientas Java encargadas de especificar el contenido y el formato de la salida. Estas
herramientas son los llamados Doclets.
6
Información sobre Doclets: http://es.wikipedia.org/wiki/Doclets
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
89
CREACIÓN DEL SISTEMA
90
IMPLEMENTACIÓN DEL SISTEMA
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
Capı́tulo 7
Desarrollo de las pruebas
En esta sección se detallan las pruebas realizadas durante el proyecto. Se ha realizado
las pruebas planificadas y comentadas en este documento en la sección de diseño.
7.1.
Pruebas unitarias
Tal como se ha comentado anteriormente en este documento, se han realizado pruebas
unitarias del código, haciendo uso del framework JUnit 3. Las pruebas realizadas comprueban el correcto funcionamiento de los métodos con más lógica del proyecto. Estas pruebas
ayudaron al correcto desarrollo de las funcionalidades, ası́ como, a localizar fallos en su
funcionamiento.
7.1.1.
Pruebas del programador de tareas
Formateador de CRON
Se ha realizado una baterı́a de pruebas, para analizar el correcto funcionamiento de la
clase encargada de formatear la programación introducida por el usuario en el formulario
de la aplicación, y convertirla a una secuencia CRON.
Figura 7.1: Captura del resultado de JUnit al pasar las pruebas del formateador de CRON
Con la intención de realizar un probado completo del módulo, se han creado 18 casos distintos. Se pretende que cada caso de prueba, verifique el correcto formateado de
una programación distinta. El número de combinaciones posibles en la programación, es
demasiado elevado para probar todos los casos, pero conociendo los valores que pueden
91
PRUEBAS UNITARIAS
DESARROLLO DE LAS PRUEBAS
ocasionar más problemas a la hora de ser formateados, se puede crear un subconjunto de
pruebas bastante razonable.
Todos los casos de prueba presentan la misma estructura. Dado que el valor formateado se retorna como una cadena de texto, bastará con crear un nuevo backup con la
programación que se desea probar y ejecutar el generador del código CRON. Únicamente
se debe probar que la cadena resultado coincide con el valor esperado.
En caso de querer realizar pruebas similares, se presenta en la siguiente tabla los 18
casos realizados.
Prueba
Cada segundo, todos los dı́as desde las 10:20 hasta las 10:40h
Cada minuto, todos los dı́as desde las 10:20 hasta las 10:40h
Cada hora, todos los dı́as desde las 10:20 hasta las 12:20h
Todos los lunes a las 10:00h
Todos los martes a las 10:00h
Todos los miércoles a las 10:00h
Todos los jueves a las 10:00h
Todos los viernes a las 10:00h
Todos los sábados a las 10:00h
Todos los domingos a las 10:00h
Cada hora, los lunes desde las 10:00 hasta las 14:00h
Cada minuto, los martes desde las 10:00 hasta las 14:00h
Cada segundo, los miércoles desde las 10:00 hasta las 14:00h
El primer dı́a de cada mes a las 10h
El último dı́a de cada mes a las 10h
El primer dı́a de cada mes, cada hora desde las 10:00 hasta las 14:00h
El primer dı́a de cada mes, cada minuto desde las 10:00 hasta las 12:00h
El primer dı́a de cada mes, cada segundo desde las 10:00 hasta las 12:00h
Resultado esperado
0/01 20-40 10 1/1 * ? *
0 20-40/01 10 1/1 * ? *
0 20 10-12/01 1/1 * ? *
0 00 10 ? * MON *
0 00 10 ? * TUE *
0 00 10 ? * WED *
0 00 10 ? * THU *
0 00 10 ? * FRI *
0 00 10 ? * SAT *
0 00 10 ? * SUN *
0 00 10-14/01 ? * MON *
0 00/01 10-12 ? * TUE *
0/01 * 10-12 ? * WED *
0 00 10 1 1/1 ? *
0 00 10 L 1/1 ? *
0 00 10-14/01 1 1/1 ? *
0 00/01 10-12 1 1/1 ? *
0/01 * 10-12 1 1/1 ? *
Cuadro 7.1: Tabla de casos de prueba utilizados para testear el módulo
Compresor de directorios
Otra funcionalidad que se deseaba probar, es el módulo encargado de comprimir un
directorio a un fichero ZIP. Éste será utilizado para permitir la subida de copias de directorios a servidores FTP. La prueba contempla un único caso, dado que la prueba es
concreta de una funcionalidad.
El procedimiento de la prueba consiste en comprimir un directorio de pruebas, comprobar que no se produce ninguna excepción en el proceso, asegurar la existencia del fichero
comprimido recién creado y eliminar el mismo.
Figura 7.2: Captura del resultado de JUnit al pasar las pruebas del compresor de directorios
92
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
DESARROLLO DE LAS PRUEBAS
PRUEBAS UNITARIAS
Realizador de Backups en local de un fichero o directorio
Se realizarán copias automáticas de un directorio y de un fichero concreto de pruebas,
para asegurar que el módulo encargado de realizar las copias en local funciona como debe.
La prueba se basará en realizar la copia y asegurar la existencia del fichero o directorio
resultado. Adicionalmente se comprobará que el tamaño de origen y destino es el mismo.
Figura 7.3: Captura del resultado de JUnit al pasar las pruebas para una copia local
Por último, una vez realizada la prueba se eliminarán los ficheros resultado. De esta
forma se asegura que al volver a pasar la misma, se comprueba la generación de nuevos
resultados y no se validan los anteriormente creados.
Publicador de copias en un servidor FTP
Para probar este módulo, se ha creado una clase de pruebas propia. Sin embargo, no
se ha automatizado el proceso haciendo uso de JUnit como en los casos anteriores. Para
la realización de esta prueba es necesario comprobar los resultados.
La naturaleza de esta prueba se debe a que no se ha implementado un sistema que descargue ficheros de un servidor FTP, al no ser necesario para la funcionalidad del proyecto.
Se puede subir un fichero y comprobar que no se produjeron excepciones, sin embargo
no se puede asegurar que el fichero publicado sea correcto, debemos acceder al servidor y
descargarlo de manera manual para realizar la comprobación.
Realizador de copias de una base de datos
De manera similar a las pruebas realizadas para copias en local, se ha implementado
un sistema de pruebas para copias de base de datos. El método utilizado es similar, se
realiza la copia y se comprueba la existencia del fichero .bak resultado.
Por otra parte, se considera necesaria la intervención manual para cargar dicho fichero
y comprobar que podemos restaurar el sistema con la copia realizada.
Figura 7.4: Captura del resultado de JUnit a las pruebas de copia de una base de datos
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
93
PRUEBAS DEL SISTEMA
7.2.
DESARROLLO DE LAS PRUEBAS
Pruebas del sistema
A continuación se detallan pruebas de sistema para comprobar la correcta integración de los módulos. Se pretende realizar un guión a seguir que permita comprobar el
funcionamiento deseado de todas las capas y subsistemas que componen el proyecto.
Inicio de la aplicación por primera vez: Se debe comprobar que se activa un
panel de registro
Registrar un nuevo usuario en el sistema: Comprobar que una vez registrado, el
sistema presenta un usuario autenticado en la parte superior derecha de la ventana y
se tiene acceso a toda la funcionalidad de la misma. Cerrar la aplicación y comprobar
que al volver a lanzar la misma, no se presenta panel de registro.
Creación de una tarea: Crear una tarea con la herramienta y comprobar que al
finalizar la creación, aparece ésta disponible en la lista y puede ser editada, eliminada
y lanzada. Comprobar además, que al crear un nuevo backup, la tarea creada se
muestra disponible para ser añadida.
Cerrar sesión en el sistema: Comprobar que se modifica la información de usuario
autenticado en la parte superior derecha de la ventana y se muestra el panel de
autenticación al intentar hacer uso del menú vertical.
Creación de conexiones: Crear una conexión a una base de datos y a un servidor
FTP, en el panel destinado para ello. Comprobar que al añadir cada una de estas
conexiones, se muestran disponibles en la tabla correspondiente, siendo posible su
modificación, eliminación y comprobación de disponibilidad. Comprobar además,
que al crear una nueva tarea podemos referenciar las conexiones recién creadas.
Creación de un nuevo backup para un futuro próximo: Crear una programación de copia de seguridad para un futuro próximo y añadirle una tarea creada
anteriormente. Comprobar que al terminar la programación del mismo, éste aparece
en la tabla de backups disponibles en el sistema. Esperar al momento elegido en la
programación y comprobar que la copia ha sido realizada. Analizar la información
del panel de resultados para comprobar el registro del backup que nos ocupa. Acceder a la aplicación Web y comprobar que la misma información de resultados se
encuentra disponible en la misma.
Comprobación de persistencia de los datos: Una vez realizadas las pruebas
anteriores, probar a cerrar la aplicación. Lanzar de nuevo la herramienta y comprobar
que todos los datos introducidos se muestran accesibles de igual forma que si la
aplicación no hubiera sido cerrada.
Comprobación del correcto uso del fichero de Log: Una vez realizadas las
pruebas anteriores, comprobar el panel de Log. Asegurarse de que todas las operaciones realizadas aparecen reflejadas en dicho registro con la información oportuna.
Comprobación de respuesta a errores: Realizar un backup con tareas erróneas
(de un fichero inexistente, a un servidor FTP inaccesible, de una base de datos con un
usuario erróneo . . . ) Comprobar que el sistema muestra el fallo en el registro de Log
y en los resultados del backup una vez realizado. Asegurar que la aplicación no deja
de funcionar por encontrar fallos. Visualizar la información del fallo en la aplicación
Web y asegurarse de que el mensaje mostrado coincide con el error producido.
94
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
DESARROLLO DE LAS PRUEBAS
7.3.
PRUEBAS DE USABILIDAD Y ACCESIBILIDAD
Pruebas de usabilidad y accesibilidad
7.3.1.
Pruebas de usabilidad
Una vez desarrollado el sistema, se han realizado pruebas de usabilidad de todo el
proyecto. Para ello se ha contado con la colaboración de seis personas ajenas al desarrollo
del mismo. Se deseaba realizar las pruebas con futuros clientes reales de la aplicación,
sin embargo, problemas acontecidos en Ecocomputer S.L. imposibilitaron las mismas. Por
esta razón se han elegido seis personas de distintas edades y con unos conocimientos
informáticos distintos.
Por un lado contamos con dos probadores que podrı́an ser descritos como ((nativos
digitales )), dos personas de mediana edad que habitualmente no hacen uso de sistemas informáticos y dos ingenieros informáticos con conocimientos en administración de sistemas.
Estos últimos, se consideran los más próximo al perfil de los usuarios del proyecto.Se ha
decidido buscar parejas de probadores similares para realizar dos pruebas diferenciadas.
Al primer grupo se le entregará el manual de usuario del sistema (contenido en este
documento) y se le pasará una hoja de tareas a realizar con el proyecto. De esta forma
comprobamos que el tutorial creado es correcto y entendible, y por otra parte que la
aplicación utilizable por una persona que disponga del mismo.
El segundo grupo no contará con el manual de usuario. Por otra parte, se realizará una
demostración de uso antes de pedir que lleven a cabo las tareas propuestas.
Las tareas a realizar por los dos grupos serán las mismas para conseguir unos resultados
comparables. A continuación se enumeran las pruebas a realizar, para posteriormente
analizar los resultados obtenidos por los seis sujetos y obtener unas conclusiones sobre las
pruebas realizadas.
Tareas a realizar por los probadores del sistema
Registro de un usuario en la aplicación cliente: Se pide crear el usuario ((Paco)),
en la aplicación cliente, con la contraseña ((contraseña2013 ))y nombrando el equipo
como ((Pc de pruebas ))
Cerrar la aplicación y volver a abrirla, e iniciar sesión: Se pide cerrar la
aplicación y volver a abrirla. Una vez relanzada, se debe iniciar sesión en el sistema
con el usuario creado anteriormente.
Añadir una nueva conexión a un servidor FTP: Crear la conexión ((FTP de
pruebas)), al servidor ((156.35.95.193)), con el usuario: ((Paco)), y contraseña: ((Paco13)).
Probar la conexión creada y modificar su información en caso de ser
incorrecta: Se pide comprobar si la conexión creada anteriormente es correcta y
se puede establecer la comunicación con la misma. En caso de no ser ası́, se debe
modificar la información para que el nombre de usuario sea: ((Paco13)), y contraseña:
((PacoFTP13)). Comprobar la disponibilidad nuevamente.
Crear una nueva tarea: Se pide crear una tarea nueva que permita la copia
del directorio ((C:/DirPruebas)), al servidor FTP anteriormente comentado. Ejecutar la tarea y comprobar mediante el registro de Log si se ha realizado la copia
correctamente. Acceder al servidor FTP y comprobar que se ha subido el fichero
creado en la copia. Para acceder, abra con su navegador Web la siguiente dirección:
ftp://156.35.95.193 e introduzca los datos de usuario facilitados anteriormente.
Crear un nuevo backup: Se pide crear un nuevo backup que se ejecute todos los
dı́as, a las 10 de la mañana y se repita cada media hora hasta las 5 de la tarde.
Esta programación debe realizarse hasta el primer dı́a del año próximo. El backup
debe lanzar la tarea anteriormente creada, ası́ como realizar una copia del mismo
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
95
PRUEBAS DE USABILIDAD Y ACCESIBILIDAD
DESARROLLO DE LAS PRUEBAS
directorio al destino local: ((C:/Resultados/DirPruebas)). Cerrar la ventana si cerrar
la aplicación para permitir la ejecución del backup.
Consultar la información online: Acceder a la plataforma Web y consultar la
información relativa a los backups realizados. Acceder al desglose por tareas de la
programación anteriormente creada. (Los datos de acceso a la plataforma Web deben
ser entregados con la hoja de pruebas)
Modificar los datos de usuario de la aplicación de escritorio: Modificar los
datos de conexión con el servicio Web. Restaurar la ventana de la aplicación, anteriormente cerrada y modificar el usuario de conexión al servicio Web por el siguiente:
((Francisco)), contraseña: ((Francisco2013)). Se pide sincronizar con el servicio.
Conclusiones de las pruebas
Las pruebas realizadas han servido para asegurar que el sistema es sencillo de utilizar,
aunque se han encontrado algunos patrones de error repetidos en los sujetos de prueba.
Se recogen a continuación las dificultades presentadas y las conclusiones obtenidas con el
método seguido.
Tutorial correcto pero demostración necesaria: Se considera que el tutorial
creado es correcto, ya que permite que los usuarios trabajen con la aplicación. Sin
embargo el primer grupo de pruebas, presentó mayores dificultades que el grupo que
habı́a presenciado una demostración de uso del proyecto. Se recomienda por lo tanto,
que algún responsable de Ecocomputer S.L. realice una demostración o un pequeño
cursillo con los clientes finales del producto.
Dificultad para comprender que la aplicación sigue ejecutándose pese a
no estar visible: Algunos sujetos de prueba, los que menor experiencia presentan
con ordenadores y sistemas informáticos, muestran algunas dificultades para comprender que pese a cerrar la ventana principal de la aplicación, ésta se mantiene en
ejecución y se puede volver a mostrar la ventana, haciendo uso del botón situado en
la barra de notificaciones del sistema operativo. Se considera necesario recalcar en
la demostración o cursillo, que no debe lanzarse una nueva aplicación, cuando una
se encuentra en ejecución.
Intentos fallidos en la creación de un backup debido a que no se encuentra
añadida la tarea previamente: Un error cometido por varios sujetos de prueba,
consistı́a en la intención de crear un backup antes de añadir la tarea al sistema. Se
considera de utilidad, añadir en el panel de programación de un backup, un botón que
despliegue un diálogo de creación de tareas, de manera análoga a como se permite
el añadido de conexiones a la hora de crear una nueva tarea. Sin embargo, se han
respetado las interfaces pedidas por Ecocomputer S.L.
Creación incorrecta de una copia en local, debido a la falta de un nombre de fichero destino: Otro error repetido por algunos sujetos de prueba, fue
la creación de copias en local sin establecer un nombre para el fichero o directorio
resultado. Un correcto uso de la herramienta implica la selección de un directorio
para la copia haciendo uso del selector, pero además, una modificación de la ruta
establecida para añadir el nombre con el que se desea almacenar la copia. Se deberı́a
establecer un campo adicional para el nombre de la copia, que permitiera una mejor
percepción de la necesidad del mismo. Nuevamente, no se ha realizado para respetar
las interfaces diseñadas por Ecocomputer S.L.
96
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
DESARROLLO DE LAS PRUEBAS
7.3.2.
PRUEBAS DE USABILIDAD Y ACCESIBILIDAD
Pruebas de accesibilidad
Visión con diferentes navegadores gráficos
Dado que se presenta una aplicación Web, y que para acceder a la misma se debe hacer
uso de un navegador, será necesario garantizar que la información se encuentra accesible
para los navegadores más comunes.
Figura 7.5: Captura de la aplicación Web visualizada por distintos navegadores (1)
Se han utilizado los siguientes navegadores para realizar dicha prueba:
Internet Explorer: Navegador de Microsoft en su versión 9.0.17
Firefox: Navegador desarrollado por Mozilla en su versión 22.0
Opera: Navegador de Opera Software en su versión 12.16
Safari: Navegador desarrollado por Apple en su versión 5.0.4
Figura 7.6: Captura de la aplicación Web visualizada por distintos navegadores (2)
En las imágenes que acompañan se puede comprobar que la visualización es correcta
en todos los navegadores mencionados.
Se ha realizado una prueba adicional, consistente en probar la visualización desde un
dispositivo móvil. Para ello se ha empleado un iPhone 4, con el navegador Safari. Se puede
comprobar que la aplicación puede ser utilizada desde este tipo de dispositivos pese a que
no se ajusta al tamaño de la pantalla como serı́a de desear.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
97
PRUEBAS DE USABILIDAD Y ACCESIBILIDAD
DESARROLLO DE LAS PRUEBAS
Figura 7.7: Captura de la aplicación Web visualizada por un dispositivo móvil
Utilización de aDesigner
Se ha utilizado la herramienta para el estudio de la accesibilidad, aDesigner, propiedad
de IBM. En ella se pudo apreciar la visualización de la página por personas con problemas
de visión y distinción de colores.
En la captura que acompaña este texto, se puede comprobar el resultado de la aplicación utilizada. Se visualiza como hay problemas en el tamaño de las fuentes y en el
contraste entre algunos colores y otros. Se puede utilizar la aplicación sin necesidad de
distinguir correctamente los colores, ya que se presenta información adicional para conocer
el resultado del backup.
Figura 7.8: Captura de la herramienta aDesigner, para el estudio de la accesibilidad
Por otra parte, aDesigner, permite recorrer la página con un navegador para personas
invidentes. La herramienta recorre la página leyendo el texto de la misma. Dado que el
uso de estas herramientas requiere cierto entrenamiento, se considera muy dificultosa la
interacción con la aplicación por este tipo de usuarios. Sin embargo, se considera bien
diseñada para ser leı́da por estas herramientas.
Los aspectos mejorables serán comentados a Ecocomputer S.L. por si admiten cambios
de la interfaz de usuario en futuras versiones para mejorar los aspectos accesibles.
98
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
DESARROLLO DE LAS PRUEBAS
PRUEBAS DE USABILIDAD Y ACCESIBILIDAD
Accesibilidad de la aplicación de escritorio
La herramienta de escritorio también debe cumplir unos mı́nimos de accesibilidad. Por
esta razón se han tenido en cuenta los siguientes aspectos para mejorar la interacción con
la aplicación.
Evitar presentar información únicamente mediante colores: Se emplean colores para representar el estado de los backups. Sin embargo, estos colores de fondo
son acompañados por iconos representativos del mismo estado. De esta forma si una
persona no puede distinguir los colores elegidos para la representación, podrá obtener
la misma información visualizando los iconos.
Imágenes con texto alternativo: Se utilizan iconos para representar funcionalidades o información. Por esta razón, es importante un uso correcto de textos alternativos. De esta forma si no se entiende una imagen, pasando el ratón por encima,
se podrá obtener un texto explicativo.
Aplicación accesible mediante teclado: Se ha desarrollado la herramienta teniendo en cuenta que ésta fuera utilizable haciendo únicamente uso de un teclado. De
esta forma, personas con incapacidad para utilizar el ratón, podrá usar la aplicación
sin mayores inconvenientes.
Evitar el uso de información sonora: Se ha evitado el uso de información sonora
para permitir la utilización de la aplicación por usuarios con problemas auditivos o
sistemas sin dispositivos de audio.
Cumplimiento de estándares
Se ha intentado cumplir los estándares recomendados por el W3C. Sin embargo, como
se ha comentado, se utilizan componentes de Struts2. Éstos obligan a una sintaxis concreta que en ocasiones, choca con lo estipulado en los estándares. Por citar un ejemplo
concreto, el formulario de Struts2 permite la inyección de valores directamente al Action
correspondiente, sin embargo para aprovecharse de esta funcionalidad, es necesario establecer como id del campo del formulario el atributo correspondiente. La obligatoriedad de
utilizar un identificador especı́fico requiere la repetición de éstos, lo cual no está permitido
en el estándar.
Sin embargo, se han corregido los errores que ha sido posible para cumplir lo recomendado por el estándar.
Se ha comprobado si las hojas de estilo o CSS, validaban el estándar del W3C, sin
embargo, el resultado fue negativo. No se han realizado las modificaciones oportunas para
conseguir su validación, puesto que la hoja de estilo principal se ha heredado de la plataforma Web de Ecocomputer S.L. y se considera que las modificaciones sobre la misma
deberı́a realizarlas su creador.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
99
PRUEBAS DE USABILIDAD Y ACCESIBILIDAD
DESARROLLO DE LAS PRUEBAS
WCAG 1.0
Se ha utilizado la herramienta TAW, para analizar la accesibilidad del sitio Web.
Además dado que muchos aspectos no pueden ser probados de manera automática, se han
realizado las pruebas manuales con ayuda del cuestionario que se presenta a continuación.
Figura 7.9: Captura de la herramienta TAW, para el estudio de la accesibilidad
Checklist del WCAG 1.0
Puntos de verificación prioridad 1
En general. . .
Sı́
Proporcione un texto equivalente para todo elemento no textual (Por ejemplo, a través de “alt”, “longdesc” o en el contenido del elemento). Esto incluye: imágenes, representaciones
gráficas del texto, mapas de imagen, animaciones (Por ejemplo, GIFs animados), “applets” y objetos programados, “ascii
art”, marcos, scripts, imágenes usadas como viñetas en las listas, espaciadores, botones gráficos, sonidos (ejecutados con o
sin interacción del usuario), archivos exclusivamente auditivos,
banda sonora del vı́deo y vı́deos.
Asegúrese de que toda la información transmitida a través de
los colores también esté disponible sin color, por ejemplo mediante el contexto o por marcadores.
N/A
X
X
Identifique claramente los cambios en el idioma del texto del
documento y en cualquier texto equivalente (por ejemplo, leyendas).
Organice el documento de forma que pueda ser leı́do sin hoja
de estilo. Por ejemplo, cuando un documento HTML es interpretado sin asociarlo a una hoja de estilo, tiene que ser posible
leerlo.
Asegúrese de que los equivalentes de un contenido dinámico
son actualizados cuando cambia el contenido dinámico.
No
X
X
X
continúa en la próxima página
100
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
DESARROLLO DE LAS PRUEBAS
PRUEBAS DE USABILIDAD Y ACCESIBILIDAD
Puntos de verificación prioridad 1
Hasta que las aplicaciones de usuario permitan controlarlo, evite provocar destellos en la pantalla.
Utilice el lenguaje apropiado más claro y simple para el contenido de un sitio.
Y si utiliza imágenes y mapas de imagen. . .
Proporcione vı́nculos redundantes en formato texto para cada
zona activa de un mapa de imagen del servidor.
X
X
Sı́
No
X
Proporcione mapas de imagen controlados por el cliente en
lugar de por el servidor, excepto donde las zonas sensibles no
puedan ser definidas con una forma geométrica.
Y si utiliza tablas. . .
En las tablas de datos, identifique los encabezamientos de fila
y columna.
X
Sı́
No
N/A
X
Para las tablas de datos que tienen dos o más niveles lógicos
de encabezamientos de fila o columna, utilice marcadores para
asociar las celdas de encabezamiento y las celdas de datos.
Y si utiliza marcos (“frames”). . .
N/A
X
Sı́
No
N/A
Titule cada marco para facilitar su identificación y navegación.
X
Y si utiliza “applets” y “scripts”. . .
Sı́
Asegure que las páginas sigan siendo utilizables cuando se desconecten o no se soporten los scripts, applets u otros objetos
programados. Si esto no es posible, proporcione información
equivalente en una página alternativa accesible.
Y si utiliza multimedia. . .
No
N/A
X
Sı́
No
Hasta que las aplicaciones de usuario puedan leer en voz alta
automáticamente el texto equivalente de la banda visual, proporcione una descripción auditiva de la información importante
de la banda visual de una presentación multimedia.
Para toda presentación multimedia dependiente del tiempo
(por ejemplo, una pelı́cula o animación) sincronice alternativas equivalentes (por ejemplo, subtı́tulos o descripciones de la
banda visual) con la presentación.
continúa
la próxima
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino
Alonsoen
Posada
N/A
X
X
página
101
PRUEBAS DE USABILIDAD Y ACCESIBILIDAD
DESARROLLO DE LAS PRUEBAS
Puntos de verificación prioridad 1
Y si todo lo demás falla. . .
Si, después de los mayores esfuerzos, no puede crear una página
accesible, proporcione un vı́nculo a una página alternativa que
use tecnologı́as W3C, sea accesible, tenga información (o funcionalidad) equivalente y sea actualizada tan a menudo como
la página (original) inaccesible.
102
Sı́
No
N/A
X
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
DESARROLLO DE LAS PRUEBAS
PRUEBAS DE USABILIDAD Y ACCESIBILIDAD
Puntos de verificación prioridad 2
En general. . .
Sı́
No
Asegúrese de que las combinaciones de los colores de fondo
y primer plano tengan el suficiente contraste para que sean
percibidas por personas con deficiencias de percepción de color
o en pantallas en blanco y negro (Prioridad 2 para las imágenes.
Prioridad 3 para los textos).
Cuando exista un marcador apropiado, use marcadores en vez
de imágenes para transmitir la información.
X
X
Cree documentos que estén validados por las gramáticas formales publicadas.
Utilice hojas de estilo para controlar la maquetación y la presentación.
X
X
Utilice unidades relativas en lugar de absolutas al especificar
los valores en los atributos de los marcadores de lenguaje y en
los valores de las propiedades de las hojas de estilo.
Utilice elementos de encabezado para transmitir la estructura
lógica y utilı́celos de acuerdo con la especificación.
N/A
X
X
Marque correctamente las listas y los ı́tems de las listas.
X
Marque las citas. No utilice el marcador de citas para efectos
de formato tales como sangrı́as.
Asegúrese de que los contenidos dinámicos son accesibles o
proporcione una página o presentación alternativa.
Hasta que las aplicaciones de usuario permitan controlarlo, evite el parpadeo del contenido (por ejemplo, cambio de presentación en periodos regulares, ası́ como el encendido y apagado).
Hasta que las aplicaciones de usuario proporcionen la posibilidad de detener las actualizaciones, no cree páginas que se
actualicen automáticamente de forma periódica.
X
X
X
X
continúa en la próxima página
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
103
PRUEBAS DE USABILIDAD Y ACCESIBILIDAD
DESARROLLO DE LAS PRUEBAS
Puntos de verificación prioridad 2
Hasta que las aplicaciones de usuario proporcionen la posibilidad de detener el redireccionamiento automático, no utilice
marcadores para redirigir las páginas automáticamente. En su
lugar, configure el servidor para que ejecute esta posibilidad.
Hasta que las aplicaciones de usuario permitan desconectar la
apertura de nuevas ventanas, no provoque apariciones repentinas de nuevas ventanas y no cambie la ventana actual sin
informar al usuario.
Utilice tecnologı́as W3C cuando estén disponibles y sean apropiadas para la tarea y use las últimas versiones que sean soportadas.
X
X
X
Evite caracterı́sticas desaconsejadas por las tecnologı́as W3C.
X
Divida los bloques largos de información en grupos más manejables cuando sea natural y apropiado.
X
Identifique claramente el objetivo de cada vı́nculo.
X
Proporcione metadatos para añadir información semántica a
las páginas y sitios.
X
Proporcione información sobre la maquetación general de un
sitio (por ejemplo, mapa del sitio o tabla de contenidos).
X
Utilice los mecanismos de navegación de forma coherente.
X
Y si utiliza tablas. . .
No utilice tablas para maquetar, a menos que la tabla tenga
sentido cuando se alinee. Por otro lado, si la tabla no tiene
sentido, proporcione una alternativa equivalente (la cual debe
ser una versión alineada).
Si se utiliza una tabla para maquetar, no utilice marcadores
estructurales para realizar un efecto visual de formato.
Y si utiliza marcos (“frames”). . .
Sı́
No
X
X
Sı́
No
Describa el propósito de los marcos y cómo éstos se relacionan
entre sı́, si no resulta obvio solamente con el tı́tulo del marco.
Y si utiliza formularios. . .
104
N/A
N/A
X
Sı́
No
N/A
continúa
enFaustino
la próxima
página
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática
- Oviedo.
Alonso
Posada
DESARROLLO DE LAS PRUEBAS
PRUEBAS DE USABILIDAD Y ACCESIBILIDAD
Puntos de verificación prioridad 2
Hasta que las aplicaciones de usuario soporten explı́citamente
la asociación entre control de formulario y etiqueta, para todos
los controles de formularios con etiquetas asociadas implı́citamente, asegúrese de que la etiqueta está colocada adecuadamente.
Asocie explı́citamente las etiquetas con sus controles.
X
X
Y si utiliza “applets” y “scripts”. . .
Sı́
No
Para los scripts y applets, asegúrese de que los manejadores de
eventos sean independientes del dispositivo de entrada.
N/A
X
Hasta que las aplicaciones de usuario permitan congelar el movimiento de los contenidos, evite los movimientos en las páginas.
X
Haga los elementos de programación, tales como scripts y applets, directamente accesibles o compatibles con las ayudas
técnicas [Prioridad 1 si la funcionalidad es importante y no
se presenta en otro lugar; de otra manera, Prioridad 2].
Asegúrese de que cualquier elemento que tiene su propia interfaz pueda manejarse de forma independiente del dispositivo.
X
X
Para los “scripts”, especifique manejadores de evento lógicos
mejor que manejadores de eventos dependientes de dispositivos.
X
Puntos de verificación prioridad 3
En general. . .
Sı́
No
Especifique la expansión de cada abreviatura o acrónimo cuando aparezcan por primera vez en el documento.
N/A
X
Identifique el idioma principal de un documento.
X
Cree un orden lógico para navegar con el tabulador a través de
vı́nculos, controles de formulario y objetos.
X
Proporcione atajos de teclado para los vı́nculos más importantes (incluidos los de los mapas de imagen de cliente), los
controles de formulario y los grupos de controles de formulario.
continúa en la próxima página
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
105
PRUEBAS DE USABILIDAD Y ACCESIBILIDAD
DESARROLLO DE LAS PRUEBAS
Puntos de verificación prioridad 3
Hasta que las aplicaciones de usuario (incluidas las ayudas
técnicas) interpreten claramente los vı́nculos contiguos, incluya caracteres imprimibles (rodeados de espacios), que no sirvan
como vı́nculo, entre los vı́nculos contiguos.
Proporcione la información de modo que los usuarios puedan
recibir los documentos según sus preferencias (por ejemplo,
idioma, tipo de contenido, etc.).
Proporcione barras de navegación para destacar y dar acceso
al mecanismo de navegación.
Agrupe los vı́nculos relacionados, identifique el grupo (para las
aplicaciones de usuario) y, hasta que las aplicaciones de usuario
lo hagan, proporcione una manera de evitar el grupo.
Si proporciona funciones de búsqueda, permita diferentes tipos
de búsquedas para diversos niveles de habilidad y preferencias.
Localice la información destacada al principio de los encabezamientos, párrafos, listas, etc.
X
X
X
X
X
X
Proporcione información sobre las colecciones de documentos
(por ejemplo, los documentos que comprendan múltiples páginas).
X
Proporcione un medio para saltar sobre un ASCII art de varias
lı́neas.
Complemente el texto con presentaciones gráficas o auditivas
cuando ello facilite la comprensión de la página.
Cree un estilo de presentación que sea coherente para todas las
páginas.
Y si utiliza imágenes o mapas de imagen. . .
X
X
X
Sı́
No
Hasta que las aplicaciones de usuario interpreten el texto equivalente para los vı́nculos de los mapas de imagen de cliente,
proporcione vı́nculos de texto redundantes para cada zona activa del mapa de imagen de cliente.
Y si utiliza tablas. . .
N/A
X
Sı́
No
N/A
Proporcione resúmenes de las tablas.
X
Proporcione abreviaturas para las etiquetas de encabezamiento.
X
continúa en la próxima página
106
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
DESARROLLO DE LAS PRUEBAS
PRUEBAS DE USABILIDAD Y ACCESIBILIDAD
Puntos de verificación prioridad 3
Hasta que las aplicaciones de usuario (incluidas las ayudas
técnicas) interpreten correctamente los textos contiguos, proporcione un texto lineal alternativo (en la página actual o en
alguna otra) para todas las tablas que maquetan texto en paralelo, en columnas de palabras.
X
Y si utiliza formularios. . .
Sı́
No
Hasta que las aplicaciones de usuario manejen correctamente los controles vacı́os, incluya caracteres por defecto en los
cuadros de edición y áreas de texto.
N/A
X
Conclusiones
El uso de la herramienta detectó algunos errores fácilmente corregibles, por citar algún
ejemplo, no se habı́an tenido en cuenta los textos alternativos de las imágenes al considerar
que el atributo de tı́tulo podı́a ofrecer el mismo servicio. Como se comenta, estos errores
que implican cambios menores en el código han sido corregidos.
Las soluciones que implican modificaciones en las hojas de estilo proporcionadas por
Ecocomputer S.L. no han sido tenidos en cuenta, dado que no se tiene libertad para
modificar tales ficheros.
Figura 7.10: Captura de la herramienta HERA, para el estudio de la accesibilidad
Los resultados tras utilizar la herramienta HERA para el estudio de la accesibilidad
atendiendo a las WCAG 1.0, pueden verse en la imagen superior.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
107
PRUEBAS DE USABILIDAD Y ACCESIBILIDAD
108
DESARROLLO DE LAS PRUEBAS
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
Capı́tulo 8
Manuales del sistema
8.1.
Manual de instalación
8.1.1.
Instalación del cliente
La instalación de la herramienta de escritorio es sencilla. Únicamente se debe tener
configurado Java, para poder lanzar correctamente el JAR entregado. Al lanzar el .bat es
posible que se abra una terminal de Windows, que indique que no reconoce el comando
((javaw)), en este caso se debe realizar lo siguiente:
Se debe descargar Java de su sitio Web oficial (http://www.java.com/es/download/).
Es recomendable utilizar la última versión disponible, ya que cada actualización corrige errores encontrados y realiza mejoras de rendimiento. No se detallan los pasos
de la instalación porque pueden variar en función de la versión, sin embargo la instalación es trivial y únicamente debe preocupar la ubicación de los ficheros extraı́dos.
Una vez descargado e instalado Java, se deben configurar las variables de entorno del
sistema. Para ello accedemos a ((equipo))o ((Mi PC)), según la versión de Windows del
sistema, y con el botón secundario del ratón accedemos a la opción de ((propiedades)).
En esta nueva ventana se debe acceder a las opciones avanzadas y en el diálogo
mostrado, buscar un botón denominado ((variables de entorno)).
Figura 8.1: Configuración de las variables de entorno del sistema
109
MANUAL DE INSTALACIÓN
MANUALES DEL SISTEMA
En esta ventana se deben configurar dos variables de entorno:
JAVA HOME: Es la variable de entorno que informa al sistema operativo sobre la
ruta donde se encuentra instalado Java. En caso de no encontrarse, se debe crear. El
valor de la variable deberá ser la ruta donde se ha descargado anteriormente Java,
hasta el directorio del JDK.
PATH: Es una variable de entorno del sistema que informa al sistema operativo
sobre la ruta de distintos directorios esenciales para el funcionamiento del ordenador. Esta variable debe existir, por lo que únicamente debemos modificar su valor
para añadir una nueva ruta. Se debe mantener el valor que presente y concatenar
utilizando un punto y coma como separador, la siguiente ruta: (( %JAVA HOME %
bin)). Se trata de un equivalente a la ruta utilizada en la variable JAVA HOME,
accediendo al directorio bin.
Se puede comprobar la correcta configuración de Java, abriendo una nueva terminal y
ejecutando un comando propio del mismo.
Figura 8.2: Comprobación de la correcta configuración de Java
Para la prueba anterior, se ejecutó simplemente la orden ((javac ))y se comprobó que
reconoce el comando, y ofrece la ayuda para indicar como debe ser utilizado. En caso de
no estar correctamente configurado, se mostrará un mensaje indicando que no conoce la
orden escrita.
8.1.2.
Instalación de la aplicación y el servicio Web
El proyecto se ha desplegado en los servidores de Ecocomputer S.L. y configurado para
su puesta en producción. Sin embargo, si se deseara montar un sistema de respaldo o
cambiar la aplicación de servidor, puede ser de ayuda la siguiente guı́a de instalación.
Tanto el servicio Web como la aplicación de monitorización se entregan en formato
WAR, para ser desplegadas en un servidor de aplicaciones. Sin embargo, debe tenerse en
cuenta la integración con módulos ajenos al proyecto y que deben desplegarse en el mismo
servidor.
Se recomienda el uso de Apache Tomcat v.6, ya que es el servidor utilizado tanto en
las pruebas como en producción, a petición del cliente, y se desconocer incompatibilidades
con otros sistemas o distintas versiones.
Por último, es necesario indicar que se debe montar también el sistema de gestión
de base de datos, Microsoft SQL Server 2005, que es utilizado por estas aplicaciones. El
proceso de instalación, al considerarse demasiado extenso, se ha incluido como apéndice
en este mismo documento. Será necesario además modificar el sistema de conexión para
que apunte a la nueva dirección de la base de datos, sin embargo, esta tarea es relativa al
módulo de gestión de conexiones que queda fuera de este proyecto.
110
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
MANUALES DEL SISTEMA
8.2.
Manual de ejecución
8.2.1.
Arrancar el servidor Web
MANUAL DE EJECUCIÓN
El proceso de arranque del servidor web es tan sencillo como ejecutar el archivo de
lotes ((bin\startup.bat))del directorio de Tomcat, siempre y cuando el equipo tenga Java
instalado.
Una vez arranque el servidor Tomcat, si se encuentran correctamente ubicados los
WAR correspondientes al servicio Web y a la aplicación Web, se encontrarán disponibles
para ser utilizados.
8.2.2.
Arrancar la aplicación de escritorio
Se entrega la aplicación en un JAR. Este formato es un ejecutable de Java. Para lanzar
la aplicación simplemente es necesario ejecutar el siguiente comando en una terminal de
Windows:
javaw -jar EcoBackup.jar .\clientDataBase.sqlite
Para facilitar la tarea y evitar que los usuarios deban recordar el comando, se hace
entrega de un fichero .bat que puede ser ejecutado sin necesidad de utilizar comandos de
Java.
Es importante destacar, que la base de datos debe encontrarse en el mismo directorio
que el JAR y que el .bat, de no ser ası́, debe modificarse la ruta en este último.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
111
MANUALES DEL SISTEMA
MANUAL DE USUARIO
8.3.
Manual de usuario
8.3.1.
Aplicación de escritorio cliente
Primeros pasos:
La primera vez que se lance la aplicación en un equipo nuevo, se mostrará un panel
de registro donde el usuario deberá introducir el nombre y la contraseña con la que desea
tener acceso a la aplicación. Además, se solicitará un nombre de equipo con el que hacer
referencia al sistema en el que se ejecuta la herramienta.
Figura 8.3: Captura de pantalla de registro de usuario
Una vez introducidos los valores, la aplicación no permitirá cambiarlos (se deberı́a
borrar la información de la base de datos directamente).
Ya registrado en el sistema, el usuario podrá hacer uso del menú vertical de la parte
izquierda y acceder a las distintas funcionalidades de la aplicación.
Debe notarse que además de la ventana mostrada, ha aparecido un icono en el área
de notificaciones que nos indica que la aplicación esta en uso. Cabe destacar, que cerrar
la ventana de la aplicación no acabará con la ejecución del software, ya que éste se seguirá ejecutando hasta que se ordene su cierre en el menú presentado al presionar sobre
el icono antes mencionado.
El icono nos presenta un pequeño menú que además de permitir finalizar la ejecución
del programa, nos sirve para ver los registros del fichero de Log (ordenados temporalmente)
o para restaurar la ventana de interacción si el usuario la ha cerrado con anterioridad o
ésta se encuentra oculta o minimizada.
No es recomendable cerrar completamente la aplicación, puesto que es necesario que
ésta se encuentre en ejecución en el momento en que deba realizarse un backup.
Figura 8.4: Captura del panel de autenticación
Siempre que el programa se inicie con un usuario ya registrado, se presentará la ventana
principal y se realizarán las tareas de inicialización, ası́ como, las copias ya programadas
112
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
MANUALES DEL SISTEMA
MANUAL DE USUARIO
que correspondan. Sin embargo, no se podrá interactuar con la aplicación para crear nuevos
programas, realizar una copia instantánea o ver la información de las ya programadas;
sin antes introducir el nombre de usuario y la contraseña en el panel de autenticación
mostrado.
Explicación de los paneles:
La herramienta cuenta únicamente con una ventana, por ello divide su funcionalidad en
distintos paneles accesibles desde el menú vertical izquierdo. A continuación se detallará el
objetivo de cada panel y las funcionalidades que permite.
Resultados
El primer botón del menú nos dirige al panel de resultados. En esta sección se pueden ver los resultados de los backups realizados hasta la fecha. Se mostrará una tabla
con el nombre y la información de los mismos, notificándose mediante el color de fondo
(verde: todo correcto; azul: backup no terminado; rojo: error en alguna tarea) y el icono
correspondiente la situación del backup.
Para tener más información sobre un backup concreto, bastará con hacer clic sobre la
fila que lo representa. En ese momento se mostrará una tabla en la zona inferior con la
información relativa a las tareas de las que se compone el mismo.
Figura 8.5: Captura del panel de resultados
Tareas
El segundo botón del menú nos permite acceder a la sección de tareas. En este panel
podemos consultar las tareas que se encuentran registradas en la aplicación.
Figura 8.6: Captura del panel de tareas
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
113
MANUAL DE USUARIO
MANUALES DEL SISTEMA
Al abrir este panel, se mostrará una tabla con las tareas existentes. Acompañando
la información de la tarea se encuentran 3 botones. El primero de ellos, permite realizar
modificaciones sobre la tarea, el segundo eliminar la misma y el tercero ejecutarla. Es
posible realizar una copia inmediata, haciendo uso de esta último botón.
Para crear nuevas tareas se encuentra disponible el botón superior con aspecto de
sı́mbolo matemático de suma. Al pulsarlo, aparecerá un cuadro de diálogo que permite
seleccionar el tipo de copia que se desea añadir y el origen y el destino de la misma.
Backups programados
En este panel, aparecerá una tabla con los backups que se encuentran activos. Esta
tabla contendrá las opciones de modificación y eliminación de manera similar a lo visto en
el panel de tareas. Sin embargo, la importancia del mismo radica en la funcionalidad de
añadir un nuevo Backup al sistema. Para ello, análogamente con las tareas, haremos uso
del botón situado en la parte superior derecha del panel.
Figura 8.7: Captura del panel de creación de un backup programado
Al seleccionar la creación de un nuevo backup, se hará visible el panel que se muestra en
la imagen superior. Este panel presenta un formulario que debe completarse para crear una
nueva programación. En la parte inferior del mismo, aparecerá la lista de tareas creadas
en el sistema. Para incluir estas a la programación, bastará con marcar el checkbox de las
que se deseen.
Una vez completada la programación, se debe guardar utilizando el botón de la esquina
superior derecha con apariencia de disco de 3 y medio. Si se desea cancelar la creación, se
puede utilizar el botón con forma de flecha situado en la zona superior. En este caso el
backup quedarı́a anulado.
Conexiones
Este panel muestra las conexiones que se han registrado en la aplicación. Dado que
se pueden realizar backups de sistemas de bases de datos y publicar resultados en un
servidor FTP, se ha decidido crear conexiones para que sea mas sencillo trabajar con los
datos de las mismas. Ası́, se podrán establecer los datos de acceso a una base de datos
y luego programar backups de la misma sin necesidad de repetir dicha información y
estableciendo únicamente una referencia.
El panel que nos ocupa permite visualizar las conexiones que se encuentran registradas.
Se mostrará dividido en dos secciones. Por un lado las conexiones con bases de datos
Microsoft SQL Server, y por otro, la información relativa a servidores FTP.
La información de cada conexión se mostrará en una tabla, siguiendo con el modelo
utilizado en otros paneles. Nuevamente, la información se verá acompañada de botones
para la modificación de una conexión y la eliminación de la misma del sistema. Además,
en este caso aparece un nuevo botón cuya funcionalidad es la de probar la conexión.
114
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
MANUALES DEL SISTEMA
MANUAL DE USUARIO
Será posible realizar una conexión de prueba para comprobar que se encuentra accesible
y los datos son correctos.
Por otra parte, de manera análoga a los otros paneles, se utilizarán los botones superiores con el sı́mbolo de suma para añadir nuevas conexiones.
Figura 8.8: Captura del panel de conexiones
En la imagen que acompaña se puede ver el panel mencionado con información relativa
a algunas conexiones.
Log
La sección de Log permite visualizar los eventos que han tenido lugar en la aplicación.
Se registrarán las actuaciones realizadas por el usuario, ası́ como, los eventos lanzados por
el sistema. Para tener más información de un evento concreto, basta con pulsar sobre el
mismo y se mostrará en detalle la explicación de la incidencia.
Figura 8.9: Captura del panel de Log
Configuración
El último botón del menú vertical, corresponde al panel de configuración. En el mismo
se puede editar la información de sincronización con el servicio Web. En principio no
será necesario realizar modificaciones en este aspecto, pero si la empresa necesita modificar
la dirección de despliegue del servicio Web, deberá notificar el cambio y que los usuarios
actualicen el valor. Además, se permite editar la información de usuario que debe ser la
misma que en la aplicación Web.
En caso de realizar una modificación en la cuenta de usuario en la aplicación Web,
deberá ser modificada la información en el panel que nos ocupa.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
115
MANUALES DEL SISTEMA
MANUAL DE USUARIO
Figura 8.10: Captura del panel de configuración
Creación de un backup complejo
A continuación se explican los pasos a seguir para crear un backup desde cero. Se
realizará a modo de ejemplo una copia programada de una base de datos a un servidor
FTP. Se considera más complejo en cuanto a número de pasos a realizar, que una copia
de un directorio del sistema. Se recuerda que para poder interactuar con la herramienta
es necesario autenticarse en la misma en el panel comentado anteriormente.
El primer paso para realizar el backup deseado, será añadir las conexiones al sistema.
Para ello accederemos al panel ((Conexiones)), y mediante los botones de suma añadiremos
la información relativa a la conexión con la base de datos que se desea copiar, y al servidor
FTP donde se desea almacenar la copia.
El siguiente paso será crear una tarea en el panel correspondiente. Nuevamente hacemos
uso del menú vertical y del botón suma para añadir la tarea al sistema. En este caso
bastará con referenciar las conexiones creadas en el paso anterior y establecer un nombre
para la tarea y otro para la copia. (El segundo debe presentar la extensión .bak en este
caso)
Una vez creada la tarea, bastará con acceder al panel de backups y nuevamente con el
botón de suma añadir una nueva programación. Se debe rellenar la información relativa al
momento en que se desea que sea lanzada la tarea y por último, seleccionar la tarea recién
creada en la tabla inferior del panel, dejando marcado su checkbox.
Al guardar la programación de backup, la herramienta mostrará nuevamente el panel
con las copias de seguridad activas, entre las cuales debe mostrarse la que acabamos de
crear. Otra verificación posible, es consultar el Log del sistema en el panel correspondiente,
en el cual debe verse un registro de todos pasos realizados.
8.3.2.
Aplicación Web
La aplicación Web no presenta demasiada funcionalidad y es por ellos trivial de utilizar.
Únicamente será necesario acceder a la dirección donde se encuentre desplegada, haciendo
uso de un navegador Web. En este tutorial no se presenta la dirección, puesto que por ahora
simplemente se conoce la dirección IP del servidor y no tiene un nombre DNS asociado.
Será misión de Ecocomputer S.L. dar a conocer la dirección a sus clientes.
Una vez que accedemos a la aplicación Web, se solicita información de autenticación
del usuario.
Una vez introducidos los datos correctos, accederemos a la parte privada de la Web. En
esta sección se mostrará un menú superior donde debemos acceder a la parte de ((Backups)).
Al entrar se mostrará mediante una tabla la información relativa a los resultados de los
backups.
Si el usuario pulsa sobre el botón ((Ver Jobs))de alguna fila de la tabla, accederá a la
116
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
MANUALES DEL SISTEMA
MANUAL DE USUARIO
Figura 8.11: Captura del sistema de autenticación Web
Figura 8.12: Captura de la aplicación Web en la pantalla de tareas
información detallada sobre las tareas de ese backup programado.
Los colores que se han utilizado para denotar el resultado de los backups y las tareas,
son los mismos que en la aplicación de escritorio. Azul para los trabajos no finalizados,
rojo para los que han terminado con errores y verde para los que han acabado satisfactoriamente.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
117
MANUAL DEL PROGRAMADOR
8.4.
Manual del programador
8.4.1.
Aplicación de escritorio para Windows
MANUALES DEL SISTEMA
Se ha intentado realizar la aplicación de la manera más clara y mantenible posible, presentando un código comentado y estructurado que permita su comprensión. Sin embargo,
se considera importante dejar constancia de algunos aspectos que puedan facilitar la labor
de un desarrollador que pretenda realizar ampliaciones o modificaciones. A continuación
se detallan algunos aspectos de interés:
El ejecutor de tareas que presenta la biblioteca utilizada para programar hilos (Quarz
Scheduler), no permite seleccionar un objeto con estado. Este software esta pensado
para lanzar una clase plana. Por esta razón se ha encontrado una solución compleja
pero eficaz. El método ((start ))del programador admite un flujo de datos que interpreta como nombre de la tarea concreta a ser ejecutada. En ese flujo de datos se
encapsulará el objeto backup concreto que deseamos ejecutar. De esta forma en la
clase ejecutada podemos obtener el estado del objeto analizando el nombre de la
tarea.
La información requerida por la aplicación Web y que debe enviarse mediante el
servicio, no es la misma que la que maneja la aplicación de escritorio. Pese a almacenarse información de resultados de backups y tareas de éstos en ambas bases de
datos, las tablas no son iguales.
Por un lado se deben tener en cuenta que los tipos de datos utilizados por SQL
Server no son idénticos a los empleados por SQLite. Por otra parte, las tablas del
servidor deben contener más campos, que permitan identificar de que cliente y que
sistema provienen los datos de resultados. Es importante no confundir los tipos de
objetos empleados para el servicio Web y para la aplicación local.
8.4.2.
Aplicación Web
En este manual se describen cualquier aspecto que pueda ayudar a otros programadores
a ampliar, modificar o entender aspectos de la construcción de nuestra aplicación. No se
explica la arquitectura general de una aplicación Struts2 o el funcionamiento de Spring,
si no aquellos aspectos particulares del proyecto que pueden provocar confusión.
Tal como se ha comentado en este documento, el proyecto integra con una plataforma
Web y aprovecha de ésta la gestión de usuarios. Por esta razón se deben tener en cuenta
los siguientes aspectos:
El módulo integrado se encarga de colocar al usuario en sesión, los Action del
proyecto pueden recuperar la información del usuario implementando la interfaz
((SessionAware)), y utilizando el método session.get(“usuario”).
La clase Usuario y asociadas (Perfil, Cliente . . . ) se encuentran en la biblioteca Java
((ecoclases.jar)), incluida dentro del directorio de librerı́as de Apache Tomcat.
La biblioteca también contiene lo necesario para gestionar el Log o registro de la
aplicación. Para ello basta con declarar la variable
Logger log = new Logger(this.getClass().getName(), session);
Escribir entradas del registro se hace mediante los métodos log.info(), log.error() y
log.warning(), recibiendo como parámetro un String con el mensaje a escribir en la
base de datos.
118
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
MANUALES DEL SISTEMA
MANUAL DEL PROGRAMADOR
El módulo también gestiona la comunicación con la base de datos, realizada mediante
un pool de conexiones para gestionar mejor los recursos y reducir tiempos de espera
innecesarios. La conexión con la base de datos se establece declarando
Connection con = ConnectionManager.getConnection();
Dejando a un lado esta integración con software ajeno, se presentan algunas recomendaciones para la realización de ampliaciones o modificaciones en el código desarrollado:
En caso de ser necesaria la creación de nuevos elementos del modelo, se recomienda
seguir la misma jerarquı́a de clases e interfaces empleada (ManagerService, DataService, DAOs . . . ). Y para aprovechar las ventajas de Spring, se debe declarar la
inyección de dependencias necesarias en el fichero ((applicationContext.xml)).
Las JavaServer Pages se componen mediante el uso de ((tiles)), unas bibliotecas Java
que se encargan de crear la interfaz como si de un árbol se tratase, compartiendo
atributos de padres a hijos para ahorrar código. No es imprescindible su utilización,
sin embargo es recomendada al presentarse páginas con una estructura fija y con
elementos compartidos. De esta forma, por ejemplo, se evita duplicar el código para
la creación del menú principal o de las cabeceras de la página.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
119
MANUAL DEL PROGRAMADOR
120
MANUALES DEL SISTEMA
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
Capı́tulo 9
Conclusiones y ampliaciones
9.1.
Conclusiones
Una vez realizado el proyecto, es conveniente analizar los resultados obtenidos y compararlos con los esperados en la fase de análisis.
El proyecto se ajusta a las necesidades del cliente, quien se muestra satisfecho con
el producto final. Las herramientas desarrolladas serán puestas en producción cuando
Ecocomputer S.L. lo considere oportuno, ya que a su entender facilita su labor a la hora
de analizar las copias de seguridad de sus clientes, además de simplificar la realización de
las mismas de manera automatizada.
Los retrasos respecto a la planificación inicial se consideran razonables atendiendo a
los cambios producidos en los requisitos del cliente. En un proyecto real y que suponga
una inversión económica, los requisitos deberán ser firmados en las primeras etapas del
proyecto por ambas partes. Por otro lado, se considera que se habrı́an conseguido subsanar
algunos malentendidos, si se hubieran realizado reuniones conjuntas con los gerentes de la
empresa. Como se ha comentado con anterioridad, la organización de la empresa colocaba
a dos miembros intermediarios entre la comunicación de los gerentes y el desarrollador del
proyecto.
A tı́tulo personal, y teniendo en cuenta que se trata de un proyecto con finalidad
académica, se considera una experiencia muy aportadora. La enorme oportunidad de realizar un proyecto para una empresa real, presentó problemas que no se hubieran producido
en un proyecto universitario convencional, pero gracias a ello, se cuenta con experiencia
en situaciones tı́picas durante la vida de un proyecto informático.
El proyecto ha servido para conocer algunas tecnologı́as y profundizar conocimientos
aprendidos durante la etapa académica, pero además, para obtener una visión real de la
profesión. Se ha obtenido experiencia solventando problemas del trabajo colaborativo con
personal de distintos sectores, en la implantación de una metodologı́a de trabajo orientada
a la realización de reuniones periódicas de seguimiento . . .
Por otra parte, aunque en algunos aspectos Ecocomputer S.L. tenı́a claros los requisitos, en otros se contaba con libertad para negociar una solución adecuada. En estas
circunstancias, se debı́a realizar un estudio breve de las alternartivas para poder defender una opinión en la reunión posterior. De esta forma se considera que se han mejorado
aptitudes relacionadas con la negociación, pues tal como se comenta en este documento,
algunas propuestas fueron aceptadas por los clientes al considerarse aportaciones positivas.
121
CONCLUSIONES Y AMPLIACIONES
AMPLIACIONES
9.2.
Ampliaciones
Como se ha comentado en las primeras secciones de este documento, el alcance del
mismo se vio modificado por diversas circunstancias acontecidas. En un primer estudio
se contemplaba la posibilidad de realizar dos módulos adicionales. Estos dos subproyectos podrı́an realizarse a modo de ampliación. A continuación se detallan éstos y otras
propuestas.
9.2.1.
Cliente para sistemas GNU/Linux
Se puede desarrollar una herramienta que conecte con el servicio Web y permita realizar
copias de seguridad de estos sistemas. No serı́a necesario realizar un programador de tareas,
ya que podrı́a limitarse la funcionalidad a un script capaz de realizar una copia y conectar
con el servicio Web, y que éste fuera ejecutado por el gestor de tareas CRON. No tiene
sentido realizar copias de sistemas de bases de datos SQL Server, ya que es exclusivo de
sistemas con sistema operativo de Microsoft.
En la toma de requisitos inicial del proyecto, se contemplaba el desarrollo de este
módulo, sin embargo, Ecocomputer S.L. no cuenta en la actualidad con clientes que trabajen con este tipo de sistemas, por lo que al presentarse retrasos, se eliminó sin mayores
inconvenientes.
9.2.2.
Aplicación para dispositivos móviles
Como se ha comprobado en las pruebas de usabilidad, la aplicación Web no se adapta
a las pantallas de dispositivos móviles. Por esta razón se propone como ampliación, el
desarrollo de una aplicación para Android y otra para dispositivos iOS. En los requisitos
iniciales, se habı́a contemplado el desarrollo de la versión para móviles con el sistema
operativo de Google, sin embargo nuevamente debido a los retrasos, se eliminó del proyecto.
Una alternativa al desarrollo de estas aplicaciones, puede ser el desarrollo de una web
adaptable a diferentes tamaños de pantalla, o que detecte cuando es visualizada por un
sistema móvil y presentarla con una hoja de estilo más adecuada.
9.2.3.
Aplicación Web con mayor funcionalidad
Una vez finalizado el proyecto, se considera que la aplicación Web podrı́a tener mayor
funcionalidad. Se podrı́a utilizar la información de la que dispone para generar gráficos y
estadı́sticas que ayuden a una comprensión de los mismos. Dado que las copias se realizan
de manera completa, se podrı́a realizar un estudio de incremento entre copias iguales para
conocer el progreso o aumento de datos copiados.
Por otra parte, se podrı́a integrar con el servidor FTP que Ecocomputer S.L. disponga
para cada cliente, de tal forma que pueda obtener la copia realizada desde la propia
aplicación Web de consulta.
9.2.4.
Realización de backups de máquinas virtuales
La virtualización de sistemas, es utilizada por Ecocomputer S.L. y por sus clientes,
por esta razón se considera una ampliación posible al proyecto, el desarrollo de un nuevo
módulo capaz de realizar copias de sistemas virtualizados. Éste deberı́a integrarse con el
servicio Web para presentar los datos en la plataforma destinada para ello.
El módulo no requerirı́a mayor esfuerzo que el estudio de la creación de copias de
seguridad con las herramientas de virtualización empleadas. Para el caso de Virtual Box,
una aplicación comúnmente utilizada, bastarı́a con realizar una capa de middleware que
permitiera lanzar la funcionalidad de backup de seguridad que ésta presenta.
122
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
CONCLUSIONES Y AMPLIACIONES
9.2.5.
AMPLIACIONES
Permitir copias incrementales o diferenciales
El proyecto permite realizar copias de seguridad completas, sin embargo, puede ser
interesante ampliar el mismo para añadir como funcionalidades, las copias incrementales
o diferenciales. De esta forma se evita manejar grandes cantidades de datos y se obtienen
copias más ligeras.
Se trata de copias menos seguras, al ser necesario mantener la base también almacenada
para poder restaurar un sistema. Sin embargo, según el caso concreto puede ser más útil
este tipo de backups.
9.2.6.
Mejoras de usabilidad del producto
Como se ha visto en las pruebas de usabilidad realizadas, la aplicación de escritorio
presenta algunas dificultades de utilización para algunos usuarios. Serı́a interesante realizar más pruebas y con un grupo mayor de usuarios para concretar que aspectos serı́a
interesante modificar. En este documento se recogen algunas propuestas, pero dado que
las pruebas han sido realizadas con una muestra reducida de sujetos y que las interfaces
de usuario se consideran impuestas por el cliente, no se han realizado cambios al respecto.
Podrı́a realizarse a modo de ampliación, una nueva versión del proyecto con los errores
encontrados subsanados.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
123
AMPLIACIONES
124
CONCLUSIONES Y AMPLIACIONES
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
Capı́tulo 10
Apéndices
10.1.
Primer análisis del proyecto
10.1.1.
Determinación del alcance del sistema
El proyecto que nos ocupa debe cubrir unas necesidades concretas del cliente. Se pretende desarrollar una infraestructura completa que permita realizar copias de seguridad,
programar las mismas y llevar un seguimiento de las ya realizadas desde cualquier dispositivo con conexión a Internet.
Para conseguir lo requerido se deben realizar dos módulos cliente (uno para entornos
Windows y otro para GNU/Linux), un servicio Web que permita la actualización de los
datos almacenados en un servidor y por último, una aplicación Web de visualización de
resultados.
Para el caso de la aplicación de escritorio de entornos Windows, debe permitirse la
realización de backups de bases de datos Microsoft SQL Server 2005, ası́ como la copia de
directorios o ficheros concretos. Debe presentarse además un panel de programación que
permita automatizar las copias.
El módulo para sistemas GNU/Linux, sin embargo, solo deberá permitir realizar copias
de directorios y ficheros concretos, ya que no es posible la instalación de Microsoft SQL
Server en estos sistemas. No será necesario implementar un programador de copias, ya
que al tratarse de un script con propósito concreto puede delegarse la automatización en
CRON.
La aplicación Web deberá ser un monitor de resultados de los backups realizados
hasta el momento. Deberá estar actualizado y protegido mediante clave de acceso. Se
deberá realizar un sistema de gestión de usuarios que permita otorgar permisos a diferentes
cuentas y limite el acceso al contenido no autorizado.
Por último, para conseguir el correcto funcionamiento de la infraestructura y evitar
el acceso directo al sistema de base de datos de la aplicación Web, se deberá realizar un
servicio Web que permita actualizar la información sobre los backups realizados por los
usuarios.
125
APÉNDICES
PRIMER ANÁLISIS DEL PROYECTO
10.1.2.
Requisitos funcionales
Aplicación cliente para sistemas Windows
Código
R1.1
Nombre del requisito
Insertar Usuario
R1.2
Autenticación
R2.1
Copias de directorios y de
ficheros
R2.2
Copias de bases de datos
Microsoft SQL Server
R3.1
Subida a servidores FTP
R4.1
Programación detallada y
sencilla
R5.1
Conexión con el servicio
Web
R6.1
Ejecución de backups de
manera independiente del
usuario
Descripción del requisito
La primera ejecución de la aplicación debe requerir un registro por parte del usuario, la información será utilizada posteriormente para autenticar
al mismo en el sistema y permitir su interacción.
La herramienta debe requerir la autenticación del
usuario y no permitir la interacción de usuario
anónimos.
La aplicación debe estar dotada de la funcionalidad suficiente que permita realizar copias de seguridad de ficheros y directorios completos del sistema en el que se encuentra en ejecución.
La herramienta debe permitir la realización de copias de seguridad de sistemas de bases de datos
Microsoft SQL Server que se encuentren desplegados en el equipo cliente en el que se encuentra
la aplicación en ejecución.
Se debe permitir que las copias de seguridad sean
enviadas a un servidor FTP detallado por el usuario, ası́ como mantener un registro de los resultados del envı́o.
La herramienta debe proporcionar una interfaz
que permita la programación de backups en el
tiempo. Debe ser altamente personalizable llegando a un nivel de detalle similar al programador de
tareas de Microsoft Windows.
Los datos registrados por la aplicación sobre las
copias de seguridad realizadas, anomalı́as en su
ejecución y envı́o de resultados a servidores FTP,
deben ser recibidas por el servicio Web y almacenadas en la base de datos que consultará la aplicación Web.
Una vez programados las copias de seguridad, llegado el momento de su ejecución no debe ser necesaria la interacción con el usuario, debe realizarse
de manera transparente para el mismo y automatizando el proceso.
Cuadro 10.1: Tabla de requisitos de la aplicación de escritorio cliente para Windows
126
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
APÉNDICES
PRIMER ANÁLISIS DEL PROYECTO
Aplicación cliente para sistemas GNU/Linux
Código
R1.1
Nombre del requisito
Script de permisos limitados
R2.1
Realización de copias de ficheros
R2.2
Realización de copias de directorios
R3.1
Subida a servidores FTP
R4.1
Conexión con el servicio
Web
R5.1
Ejecución de backups de
manera independiente del
usuario
Descripción del requisito
Se debe realizar una limitación de permisos para evitar que cualquier usuario del sistema pueda
lanzar el script.
La herramienta debe permitir seleccionar un fichero para realizar una copia del mismo. En caso
de no contarse con permisos para acceder al fichero seleccionado se debe permitir la autenticación
como otro usuario con permisos.
La herramienta debe permitir seleccionar un directorio para realizar una copia del mismo. En
caso de no contarse con permisos para acceder al
directorio seleccionado se debe permitir la autenticación como otro usuario con permisos.
Se debe permitir que las copias de seguridad sean
enviadas a un servidor FTP detallado por el usuario, ası́ como mantener un registro de los resultados del envı́o.
Los datos registrados por la aplicación sobre las
copias de seguridad realizadas, anomalı́as en su
ejecución y envı́o de resultados a servidores FTP,
deben ser recibidas por el servicio Web y almacenadas en la base de datos que consultará la aplicación Web.
El script realizado debe ser apto para ser ejecutado por el programador de tareas de Unix.
Cuadro 10.2: Tabla de requisitos de la aplicación de escritorio cliente para sistemas
GNU/Linux
Aplicación Web
Código
R1.1
Nombre del requisito
Información privada protegida bajo autenticación
R1.2
Registro de nuevos usuarios
R1.3
Modificación de permisos
de los usuarios
Descripción del requisito
La aplicación Web debe tener un sistema de gestión de usuarios, que permita la autenticación de
los mismos para permitir el acceso a su información.
La aplicación Web debe tener un sistema de gestión de usuarios, que permita el registro de nuevos
usuarios del sistema.
La aplicación Web debe tener un sistema de gestión de usuarios, que permita la modificación de
permisos entre éstos. Contando además, con un
rol administrador con permisos para realizar todas las operaciones.
continúa en la próxima página
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
127
APÉNDICES
PRIMER ANÁLISIS DEL PROYECTO
Código
R2.1
Nombre del requisito
Visualización
actualizada de los resultados de
backups
R2.2
Visualización actualizada
de los resultados de las
tareas
Descripción del requisito
Debe mostrarse de manera sencilla y actualizada, la información relativa a los resultados de los
backups realizados. En caso de error en alguno de
ellos debe especificarse la razón del fallo.
Al igual que se muestran los resultados resumidos
de los backups, se debe permitir un desglose en
tareas para saber cuales fueron realizadas correctamente y cuales no.
Cuadro 10.3: Tabla de requisitos de la aplicación Web
Servicio Web
El servicio Web será un sistema sencillo y su única finalidad será comunicar las aplicaciones de los clientes con la base de datos del servidor de la empresa. Se debe garantizar
la seguridad de la comunicación, para evitar que cualquiera pueda introducir datos en el
sistema conectándose al servicio.
El servicio debe comprobar los credenciales del usuario que se conecta al mismo, para
comprobar si pueden almacenarse los datos que transporta. Por otra parte, se debe notificar
del éxito o el fracaso en la actualización.
128
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
APÉNDICES
INSTALACIÓN DE MICROSOFT SQLSERVER 2005 Y CREACIÓN DE LA BASE DE DATOS
10.2.
Instalación de Microsoft SQLServer 2005 y creación
de la base de datos
10.2.1.
Servidor de base de datos
En primer lugar será necesario instalar el servidor de base de datos Microsoft SQL
Server 2005. Para ello se necesita disponer de un equipo con Windows Server 2003 o
superior y cumplir con los siguientes requisitos mı́nimos:
Procesador Pentium III o superior a 600 MHz (recomendado superior a 1 GHz)
512 MB de memoria RAM (recomendado superior a 1 GB).
Al menos 2 GB de disco duro.
Antes de comenzar con el proceso de instalación se recomienda tener el sistema operativo totalmente actualizado, mediante el uso de Windows Update. Seguidamente ejecutamos
el instalador que comenzará el proceso.
Tras aceptar los habituales términos y condiciones de la licencia y pasar por las primeras pantallas de bienvenida, veremos cómo se ejecuta una comprobación de los requisitos
hardware y software del sistema. Si todo está en orden podremos pasar al siguiente paso
en el que se nos pedirán nuestros datos:
Figura 10.1: Instalación de Microsoft SQL Server, primer paso
Seguidamente deberemos seleccionar qué componentes queremos instalar. Para evitar
posibles problemas se aconseja marcar todo.
En el siguiente paso deberemos indicar el nombre de la instancia, que podrá ser el que
el usuario desee (en nuestro caso ha sido nombrado PortalEmpleado). Al dar a siguiente
deberemos elegir modo de autenticación mixto para que la identificación del usuario no
se limite únicamente al entorno Windows y sus usuarios. También deberemos escribir la
contraseña para el usuario por defecto a nuestra elección.
El último paso será comprobar que el Firewall del sistema no está bloqueando las
conexiones en el puerto de comunicación de la base de datos (por defecto el 1433).
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
129
INSTALACIÓN DE MICROSOFT SQLSERVER 2005 Y CREACIÓN DE LA BASE DE DATOS
APÉNDICES
Figura 10.2: Instalación de Microsoft SQL Server, segundo paso
10.2.2.
Sistema de gestión de base de datos
Una vez instalado el servidor de base de datos, se necesita una herramienta capaz de
gestionar el mismo. El sistema elegido en este proyecto es: Microsoft SQL Server Management Studio Express.
Tras ejecutar el instalador y aceptar las ya comunes primeras pantallas de aceptación
de condiciones y bienvenida, se nos pedirá nuevamente los mismos datos de usuario que
ya pusimos en la anterior instalación.
En el siguiente paso debemos elegir los componentes a instalar, que por defecto ya
está seleccionado el único disponible y necesario. Seguimos aceptando los pasos del instalador y comenzará el proceso:
Figura 10.3: Instalación del gestor de base de datos
Una vez instalado tanto el servidor de base de datos como su sistema de gestión se
recomienda de nuevo actualizar todo mediante Windows Update, puesto que es probable
que exista algún parche de seguridad o rendimiento para ambos paquetes.
130
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
APÉNDICES
10.2.3.
INSTALACIÓN DE MICROSOFT SQLSERVER 2005 Y CREACIÓN DE LA BASE DE DATOS
Base de datos
Ya con el servidor de base de datos y el SGBD en el equipo procedemos a instalar la
base de datos, sus tablas y datos mı́nimos para poder trabajar en la aplicación. Para ello
accedemos a Microsoft SQL Server Management Studio Express y nos pedirá los datos
de conexión a la instancia del servidor. Introduciendo los datos de conexión al servidor
creado anteriormente, accedemos a la herramienta y podremos empezar a crear la base de
datos.
No se detalla el proceso, al considerarlo repetitivo y trivial. La información sobre
las tablas que deben crearse y los campos de las mismas se encuentra recogida en este
documento. Es posible que sea necesario añadir tablas adicionales que sean utilizadas por
el módulo con el que se integra la aplicación desarrollada.
Por último, se deberán introducir datos de configuración en las tablas oportunas. Nuevamente estas tablas no son responsabilidad de este proyecto y deberá consultarse la
documentación del proyecto con el que este se integra.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
131
APÉNDICES
CONTENIDO ENTREGADO EN EL CD-ROM
10.3.
Contenido Entregado en el CD-ROM
Directorio
./ Directorio raı́z del CD
./Gestión de Backups
./instalacion
./documentacion
./documentacion/javadoc
./documentacion/uml
132
Contenido
Contiene un fichero léeme.txt explicando toda esta
estructura. Además, contiene la información relativa
al proyectante y director del proyecto.
Este directorio contiene los ficheros fuente de los tres
módulos realizados. Se presentan con una estructura
reconocible por el entorno de desarrollo Eclipse, para
poder ser importados.
En este directorio se entregan los dos WAR que permiten desplegar el servicio y la aplicación Web en un
servidor de aplicaciones. Además, se incluye el JAR
de la aplicación de escritorio, la base de datos y un
.bat para facilitar su ejecución.
Contiene toda la documentación asociada al proyecto.
Se presenta en los siguientes formatos: .TEX y .PDF
Este directorio contiene el javadoc generado en formato HTML, para comprender mejor las clases del
cliente de escritorio Windows.
Proyecto de Enterprise Architect con los diagramas
UML incluidos en esta documentación.
Máster en Ingenierı́a Web - Escuela de Ingenierı́a Informática - Oviedo. Faustino Alonso Posada
Bibliografı́a
[1] Oracle. Java Platform, Standard Edition 7. http://docs.oracle.com/javase/7/
docs/api/, 2013.
[2] W3C. Cascading Style Sheets home page . http://www.w3.org/Style/CSS/, 2013.
[3] W3C. HTML 4.01 Specification. http://www.w3.org/TR/html401/, 1999.
[4] Oracle. Transact-SQL Reference (Database Engine. http://msdn.microsoft.com/
en-us/library/bb510741.aspx, 2007.
[5] Microsoft MSDN. HTML 4.01 Specification. http://www.w3.org/TR/html401/, 1999.
[6] Terracotta. Quartz Scheduler. http://quartz-scheduler.org/, 2013.
[7] Terracotta. Quartz Scheduler, CronTrigger Tutorial. http://quartz-scheduler.org/
documentation/quartz-1.x/tutorials/crontrigger, 2013.
[8] Gamma, Erich y Beck, Kent JUnit. http://junit.org/, 2013.
[9] W3Schools JavaScript Tutorial. http://www.w3schools.com/js/, 2013.
[10] Hassan, Y. Guı́a de Evaluación Heurı́stica de Sitios Web. www.nosolousabilidad.
com/articulos/heuristica.htm, 2008.
[11] DataTables DataTables, jQuery Javascript library. https://datatables.net/, 2013.
[12] Apache Software Foundation. Apache Tiles http://tiles.apache.org/, 2013.
[13] DZone. Struts 2 Tutorials. http://www.dzone.com/tutorials/java/struts-2,
2012.
[14] Stack Overflow. http://stackoverflow.com/, 2013.
133
Documentación de las clases Java
Se ha querido incluir la documentación que presentan las clases a modo de comentarios
JavaDoc. Dado que se trata de un elevado número de páginas, se incluye al final del
documento y no en la sección destinada para esta finalidad en el capı́tulo 6. Por otra
parte, tampoco se incluyen las clases del proyecto Web ni del servicio, al considerar las
primeras demasiado sencillas entendiendo la estructura de Struts2, y en el segundo caso
al haber sido prácticamente en su totalidad, generadas con la herramienta de creación de
servicios Web de Eclipse.
El orden por el que se encuentra la información de cada paquete es el siguiente:
Paquete entities: Las clases contenidas en este paquete son: Backup, BackupJob,
BackupLog, Configuration, Ftp, JobLog, LogLine y SQLServerDatabase.
Paquete logic.exec: Las clases contenidas en este paquete son: BackupExecutor,
ExecutableJob, ReloadBackups y ReloadExecutor.
Paquete logic.managers: Las clases contenidas en este paquete son: CompressorManager, CronConverterManager,DirectoryBackupManager, FtpManager, LoadManager, SQLServerBackupManager y WebServiceConnectionManager.
Paquete util: Las clases contenidas en este paquete son: BackupsController, ConnectionsController, JobsController, MD5Converter y SqliteFactory.
Paquete util.log: Este paquete solo contiene la clase encargada del Log de la aplicación.
Paquete util.threads: Las clases contenidas en este paquete son: CheckFTPThread, CheckSQLThread, CopyExecutorThread, DirectoryBackupThread, FTPBackupThread, SchedulerBackupThread, UpdateBackupThread.
Paquete visual: Este paquete contiene las clases: MainWindow y MainUI.
Paquete visual.dialogs: Las clases contenidas en este paquete son: BackupJobsDialog, DatabaseDialog, InformationDialog, RegistrationDialog.
Paquete visual.panels: Las clases contenidas en este paquete son: AddBackupPanel, BackupsPanel, ConfigurationPanel, ConnectionsPanel, EditBackupPanel, JobsPanel, LoginPanel, LogPanel y ResultsPanel. Además, contiene algunas clases privadas encargadas de la maquetación o renderizado de las tablas utilizadas.
El paquete ((webservice))no ha sido incluido, al ser las clases generadas por el entorno
de desarrollo Eclipse, con su gestor de clientes para servicios Web. Por otra parte, el
paquete encargado de la persistencia tampoco ha sido incluido, ya que pese a contar
con multitud de métodos, todos presentan una estructura común y una funcionalidad
fácilmente reconocible analizando la consulta SQL. Se considera que dichos métodos no
necesitan documentación.
Package entities
Class Summary
Backup
Backup Class, entity that represents a scheduled Backup
BackupJob
Backup Class, entity that represents a task of a scheduled Backup
BackupLog
BackupLog Class, entity that represents a Backup result
Configuration
Configuration Class, configuration system data
Ftp
FTP Class, entity that represents a FTP connection
JobLog
JobLog Class, entity that represents a Job result
LogLine
Log line Class, entity that represents a LOG record
SQLServerDatabase
SQLServer Database Class, entity that represents a Database connection
entities
Class Backup
java.lang.Object
|
+--entities.Backup
< Fields > < Constructors > < Methods >
public class Backup
extends java.lang.Object
Backup Class, entity that represents a scheduled Backup
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Fields
FIRST_MONTH_DAY
public static final java.lang.String FIRST_MONTH_DAY
{@literal FIRST_MONTH_DAY} It represents first month day
FREQ_DAY
public static final java.lang.String FREQ_DAY
{@literal FREQ_DAY} It represents a daily frequency
FREQ_MONTH
public static final java.lang.String FREQ_MONTH
{@literal FREQ_MONTH} It represents a monthly frequency
FREQ_WEEK
public static final java.lang.String FREQ_WEEK
{@literal FREQ_WEEK} It represents a weekly frequency
LAST_MONTH_DAY
public static final java.lang.String LAST_MONTH_DAY
{@literal LAST_MONTH_DAY} It represents last month day
Constructors
Backup
public
Backup(java.lang.String title,
java.util.Date date,
java.lang.String frequency,
int periodicity,
java.lang.String executeAt,
java.lang.String executeEvery,
java.lang.String executeStart,
java.lang.String executeEnd,
java.util.Date startDate,
java.util.Date endDate,
java.lang.String weekDay,
java.lang.String monthDay)
Parameters:
title - String that get name to backup
date - Date Object that represents when backup was scheduled
frequency - String that represents how often backup have to repeat it
periodicity - Integer that represents how many times 'frequency' is repeat it
executeAt - String that represents moment when backup must be executed
executeEvery - String that represents how often backup must be executed
executeStart - String that represents moment when backup must be start
executeEnd - String that represents moment when backup must be end
startDate - Date Object that contains first backup day
endDate - Date Object that contains end backup day
weekDay - String that represents what day of week it must be executed
monthDay - String that represents what day of month it must be executed
Backup
public
Backup(java.lang.String title,
java.util.Date date,
java.lang.String frequency,
int periodicity,
java.lang.String executeAt,
java.lang.String executeEvery,
java.lang.String executeStart,
java.lang.String executeEnd,
java.util.Date startDate,
java.util.Date endDate,
java.lang.String weekDay,
java.lang.String monthDay,
java.util.List jobsList)
Parameters:
title - String that get name to backup
date - Date Object that represents when backup was scheduled
frequency - String that represents how often backup have to repeat it
periodicity - Integer that represents how many times 'frequency' is repeat it
executeAt - String that represents moment when backup must be executed
executeEvery - String that represents how often backup must be executed
executeStart - String that represents moment when backup must be start
executeEnd - String that represents moment when backup must be end
startDate - Date Object that contains first backup day
endDate - Date Object that contains end backup day
weekDay - String that represents what day of week it must be executed
monthDay - String that represents what day of month it must be executed
jobsList - BackupJob objects list about what must be executed
Methods
getDate
public java.util.Date getDate()
Returns:
Date Object that represents when backup was scheduled
getEndDate
public java.util.Date getEndDate()
Returns:
Date Object that contains last backup day
getExecuteAt
public java.lang.String getExecuteAt()
Returns:
String that represents moment when backup must be executed
getExecuteEnd
public java.lang.String getExecuteEnd()
Returns:
String that represents moment when backup must be end
getExecuteEvery
public java.lang.String getExecuteEvery()
Returns:
String that represents how often backup must be executed
getExecuteStart
public java.lang.String getExecuteStart()
Returns:
String that represents moment when backup must be start
getFrequency
public java.lang.String getFrequency()
Returns:
String that represents how often backup have to repeat it
getId
public int getId()
Returns:
unique database id
getJobsList
public java.util.List getJobsList()
Returns:
BackupJob objects list about what must be executed
getMonthDay
public java.lang.String getMonthDay()
Returns:
String that represents what month day it must be executed
getPeriodicity
public int getPeriodicity()
Returns:
Integer that represents how many times 'frequency' is repeat it
getStartDate
public java.util.Date getStartDate()
Returns:
Date Object that contains first backup day
getTitle
public java.lang.String getTitle()
Returns:
String that get name to backup
getWeekDay
public java.lang.String getWeekDay()
Returns:
String that represents what week day it must be executed
setId
public void setId(int id)
Parameters:
id - Unique database id
setJobsList
public void setJobsList(java.util.List jobsList)
Parameters:
jobsList - BackupJob objects list about what must be executed
toString
public java.lang.String toString()
Overrides:
toString in class java.lang.Object
entities
Class BackupJob
java.lang.Object
|
+--entities.BackupJob
< Fields > < Constructors > < Methods >
public class BackupJob
extends java.lang.Object
Backup Class, entity that represents a task of a scheduled Backup
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Fields
DIR_FTP
public static final int DIR_FTP
{@literal DIR_FTP} It represents a copy of local file or directory and send it to FTP Server
DIR_LOCAL
public static final int DIR_LOCAL
{@literal DIR_LOCAL} It represents a local copy of local file or directory
SQL_FTP
public static final int SQL_FTP
{@literal SQL_FTP} It represents a copy of Microsoft SQL Server Database and send it to FTP
Server
SQL_LOCAL
public static final int SQL_LOCAL
{@literal SQL_LOCAL} It represents a local copy of Microsoft SQL Server Database
Constructors
BackupJob
public
BackupJob(java.lang.String name,
int databaseId,
java.lang.String databaseConnectionName,
java.lang.String sqlHostOrigin,
java.lang.String sqlUserOrigin,
java.lang.String sqlPassOrigin,
int sqlPortOrigin,
java.lang.String nameDateBaseOrigin,
int ftpId,
java.lang.String ftpTitleDestination,
java.lang.String ftpHostDestination,
java.lang.String ftpUserDestination,
java.lang.String ftpPassDestination,
java.lang.String ftpFileDestination)
Parameters:
sqlHostOrigin - SQL Server Database address
sqlUserOrigin - SQL Server Database user
sqlPassOrigin - SQL Server Database password of that user
sqlPortOrigin - SQL Server Database port
nameDateBaseOrigin - SQL Server Database name
ftpHostDestination - Destination FTP Server address
ftpUserDestination - Destination FTP Server user
ftpPassDestination - Destination FTP Sever password of that user
ftpFileDestination - Destination FTP Server file name
BackupJob
public
BackupJob(java.lang.String name,
int databaseId,
java.lang.String databaseConnectionName,
java.lang.String sqlHostOrigin,
java.lang.String sqlUserOrigin,
java.lang.String sqlPassOrigin,
int sqlPortOrigin,
java.lang.String nameDateBaseOrigin,
java.lang.String directoryDestination)
Parameters:
sqlHostOrigin - SQL Server Database address
sqlUserOrigin - SQL Server Database user
sqlPassOrigin - SQL Server Database password of that user
sqlPortOrigin - SQL Server Database port
nameDateBaseOrigin - SQL Server Database name
directoryDestination - Destination directory, when do you want to copy result file?
BackupJob
public
BackupJob(java.lang.String
java.lang.String
int ftpId,
java.lang.String
java.lang.String
java.lang.String
java.lang.String
java.lang.String
name,
directoryOrigin,
ftpTitleDestination,
ftpHostDestination,
ftpUserDestination,
ftpPassDestination,
ftpFileDestination)
Parameters:
directoryOrigin - Origin directory, what do you want to save?
ftpHostDestination - Destination FTP Server address
ftpUserDestination - Destination FTP Server user
ftpPassDestination - Destination FTP Sever password of that user
ftpFileDestination - Destination FTP Server file name
BackupJob
public
BackupJob(java.lang.String name,
java.lang.String directoryOrigin,
java.lang.String directoryDestination)
Parameters:
directoryOrigin - Origin directory, what do you want to save?
directoryDestination - Destination directory, when do you want to copy result file?
Methods
equals
public boolean equals(java.lang.Object obj)
Overrides:
equals in class java.lang.Object
getCronFormat
public java.lang.String getCronFormat()
Returns:
Scheduled Backup time in CRON format
getDatabaseConnectionName
public java.lang.String getDatabaseConnectionName()
getDatabaseId
public int getDatabaseId()
getDestinationType
public java.lang.String getDestinationType()
getDirectoryDestination
public java.lang.String getDirectoryDestination()
Returns:
Destination directory, when do you want to save result file?
getDirectoryOrigin
public java.lang.String getDirectoryOrigin()
Returns:
Origin directory, what do you want to save?
getFtpFileDestination
public java.lang.String getFtpFileDestination()
Returns:
FTP Server destination file name
getFtpHostDestination
public java.lang.String getFtpHostDestination()
Returns:
FTP Server address
getFtpId
public int getFtpId()
getFtpPassDestination
public java.lang.String getFtpPassDestination()
Returns:
FTP Server password
getFtpTitleDestination
public java.lang.String getFtpTitleDestination()
getFtpUserDestination
public java.lang.String getFtpUserDestination()
Returns:
FTP Server user
getJobId
public int getJobId()
Returns:
Unique database job identification
getName
public java.lang.String getName()
getNameDateBaseOrigin
public java.lang.String getNameDateBaseOrigin()
Returns:
SQL Server Database name
getOriginType
public java.lang.String getOriginType()
getSqlHostOrigin
public java.lang.String getSqlHostOrigin()
Returns:
SQL Server Database address
getSqlPassOrigin
public java.lang.String getSqlPassOrigin()
Returns:
SQL Server Database password of user
getSqlPortOrigin
public int getSqlPortOrigin()
Returns:
SQL Server Database port
getSqlUserOrigin
public java.lang.String getSqlUserOrigin()
Returns:
SQL Server Database user
getType
public int getType()
Returns:
backup job type{'DIR_LOCAL','DIR_FTP','SQL_LOCAL','SQL_FTP'}
hashCode
public int hashCode()
Overrides:
hashCode in class java.lang.Object
setCronFormat
public void setCronFormat(java.lang.String cronFormat)
Parameters:
cronFormat - Scheduled Backup time in CRON format
setDatabaseConnectionName
public void setDatabaseConnectionName(java.lang.String databaseConnectionName)
setDatabaseId
public void setDatabaseId(int databaseId)
setFtpId
public void setFtpId(int ftpId)
setFtpTitleDestination
public void setFtpTitleDestination(java.lang.String ftpTitleDestination)
setJobId
public void setJobId(int jobId)
Parameters:
jobId - Unique database job identification
setName
public void setName(java.lang.String name)
toString
public java.lang.String toString()
Overrides:
toString in class java.lang.Object
entities
Class BackupLog
java.lang.Object
|
+--entities.BackupLog
< Constructors > < Methods >
public class BackupLog
extends java.lang.Object
BackupLog Class, entity that represents a Backup result
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
BackupLog
public
BackupLog(int idBackup,
java.util.Date startDate,
java.util.Date endDate,
int backupResult,
java.lang.String copyResult,
java.lang.String sendingResult)
Parameters:
idBackup - Backup identification
startDate - start backup date
endDate - end backup date
backupResult - backup result
copyResult - copy result
sendingResult - sending result
Methods
getBackupResult
public int getBackupResult()
Returns:
backup result value
getCopyResult
public java.lang.String getCopyResult()
Returns:
copy result value
getEndDate
public java.util.Date getEndDate()
Returns:
end date
getIdBackup
public int getIdBackup()
Returns:
backup id
getSendingResult
public java.lang.String getSendingResult()
Returns:
sending result value
getStartDate
public java.util.Date getStartDate()
Returns:
start date
setBackupResult
public void setBackupResult(int backupResult)
Parameters:
backupResult -
setCopyResult
public void setCopyResult(java.lang.String copyResult)
Parameters:
copyResult -
setEndDate
public void setEndDate(java.util.Date endDate)
Parameters:
endDate -
setIdBackup
public void setIdBackup(int idBackup)
Parameters:
idBackup -
setSendingResult
public void setSendingResult(java.lang.String sendingResult)
Parameters:
sendingResult -
setStartDate
public void setStartDate(java.util.Date startDate)
Parameters:
startDate -
entities
Class Configuration
java.lang.Object
|
+--entities.Configuration
< Constructors > < Methods >
public class Configuration
extends java.lang.Object
Configuration Class, configuration system data
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
Configuration
public
Configuration()
Methods
getEndPointAddress
public java.lang.String getEndPointAddress()
Returns:
EndPoint Address
getHost
public java.lang.String getHost()
Returns:
host
getPassword
public java.lang.String getPassword()
Returns:
password
getSynchronization
public java.util.Date getSynchronization()
Returns:
last synchronization date
getUser
public java.lang.String getUser()
Returns:
user
setEndPointAddress
public void setEndPointAddress(java.lang.String endPointAddress)
Parameters:
endPointAddress -
setHost
public void setHost(java.lang.String host)
Parameters:
host -
setPassword
public void setPassword(java.lang.String password)
Parameters:
password -
setSynchronization
public void setSynchronization(java.util.Date synchronization)
Parameters:
synchronization - date
setUser
public void setUser(java.lang.String user)
Parameters:
user -
entities
Class Ftp
java.lang.Object
|
+--entities.Ftp
< Constructors > < Methods >
public class Ftp
extends java.lang.Object
FTP Class, entity that represents a FTP connection
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
Ftp
public
Ftp(int id,
java.lang.String
java.lang.String
java.lang.String
java.lang.String
title,
host,
user,
pass)
Parameters:
id - FTP identification
title - connection name
host - connection address
user - FTP user name
pass - user password
Ftp
public
Ftp(java.lang.String
java.lang.String
java.lang.String
java.lang.String
title,
host,
user,
pass)
Parameters:
title - connection name
host - connection address
user - FTP user name
pass - user password
Methods
getHost
public java.lang.String getHost()
Returns:
host connection address
getId
public int getId()
Returns:
FTP identification
getPass
public java.lang.String getPass()
Returns:
password FTP user password
getTitle
public java.lang.String getTitle()
Returns:
connection name
getUser
public java.lang.String getUser()
Returns:
user FTP user name
setHost
public void setHost(java.lang.String host)
Parameters:
host - connection address
setPass
public void setPass(java.lang.String pass)
Parameters:
password - FTP user password
setTitle
public void setTitle(java.lang.String title)
Parameters:
title - connection name
setUser
public void setUser(java.lang.String user)
Parameters:
user - FTP user name
toString
public java.lang.String toString()
Overrides:
toString in class java.lang.Object
entities
Class JobLog
java.lang.Object
|
+--entities.JobLog
< Constructors > < Methods >
public class JobLog
extends java.lang.Object
JobLog Class, entity that represents a Job result
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
JobLog
public
JobLog(BackupJob job,
int backupId,
java.util.Date startDate,
java.util.Date endDate,
int result,
java.lang.String copyResult,
java.lang.String sendingResult,
int size)
Parameters:
job - Backupjob
backupId - Backup identification
startDate - start job date
endDate - end job date
result - job result
copyResult - copy result
sendingResult - sending result
size - copy file size
Methods
getBackupId
public int getBackupId()
Returns:
backup id
getCopyResult
public java.lang.String getCopyResult()
Returns:
copy result
getEndDate
public java.util.Date getEndDate()
Returns:
end date
getJob
public BackupJob getJob()
Returns:
job
getResult
public int getResult()
Returns:
job result
getSendingResult
public java.lang.String getSendingResult()
Returns:
sending result
getSize
public int getSize()
Returns:
copy size
getStartDate
public java.util.Date getStartDate()
Returns:
start date
setBackupId
public void setBackupId(int backupId)
Parameters:
backupId - Backup identification
setCopyResult
public void setCopyResult(java.lang.String copyResult)
Parameters:
copy - result
setEndDate
public void setEndDate(java.util.Date endDate)
Parameters:
endDate -
setJob
public void setJob(BackupJob job)
Parameters:
job - Backupjob
setResult
public void setResult(int result)
Parameters:
job - result
setSendingResult
public void setSendingResult(java.lang.String sendingResult)
Parameters:
sending - Result
setSize
public void setSize(int size)
Parameters:
copy - size
setStartDate
public void setStartDate(java.util.Date startDate)
Parameters:
startDate -
entities
Class LogLine
java.lang.Object
|
+--entities.LogLine
< Constructors > < Methods >
public class LogLine
extends java.lang.Object
Log line Class, entity that represents a LOG record
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-OVIEDO)
Constructors
LogLine
public
LogLine(java.lang.String event,
java.lang.String incident,
java.util.Date date)
Parameters:
event - , what happens?
incident - , what it produced?
date - , when it happens?
Methods
getDate
public java.util.Date getDate()
Returns:
when it happens?
getEvent
public java.lang.String getEvent()
Returns:
what happens?
getIncident
public java.lang.String getIncident()
Returns:
what it produced?
setDate
public void setDate(java.util.Date date)
Parameters:
date - when it happens?
setEvent
public void setEvent(java.lang.String event)
Parameters:
event - what happens?
setIncident
public void setIncident(java.lang.String incident)
Parameters:
incident - what it produced?
toString
public java.lang.String toString()
Overrides:
toString in class java.lang.Object
entities
Class SQLServerDatabase
java.lang.Object
|
+--entities.SQLServerDatabase
< Constructors > < Methods >
public class SQLServerDatabase
extends java.lang.Object
SQLServer Database Class, entity that represents a Database connection
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
SQLServerDatabase
public
SQLServerDatabase(int id,
java.lang.String
java.lang.String
int port,
java.lang.String
java.lang.String
java.lang.String
Parameters:
id - database connection identification
title - connection name
host - database address
port - database port
name - database name
user - database user name
pass - database user password
Methods
getHost
public java.lang.String getHost()
Returns:
host database connection address
getId
public int getId()
Returns:
database connection identification
getName
public java.lang.String getName()
Returns:
database connection name
title,
host,
name,
user,
pass)
getPass
public java.lang.String getPass()
Returns:
password database user password
getPort
public int getPort()
Returns:
port database connection port
getTitle
public java.lang.String getTitle()
Returns:
connection name
getUser
public java.lang.String getUser()
Returns:
user database user name
setHost
public void setHost(java.lang.String host)
Parameters:
host - database connection address
setId
public void setId(int id)
Parameters:
id - database connection identification
setName
public void setName(java.lang.String name)
Parameters:
database - connection name
setPass
public void setPass(java.lang.String pass)
Parameters:
password - database user password
setPort
public void setPort(int port)
Parameters:
port - database connection port
setTitle
public void setTitle(java.lang.String title)
Parameters:
connection - database user name
setUser
public void setUser(java.lang.String user)
Parameters:
user - database user name
Package logic.exec
Class Summary
BackupExecutor
Jobs Executor Class, it is backup scheduler, who execute backup jobs.
ExecutableJob
Executable job Class represents a backup task.
ReloadBackups
Reload Backups Class, it is an automatic thread to load new backups and finish old of them.
ReloadExecutor
Reload Executor Class, it is the ReloadBackups executor.
logic.exec
Class BackupExecutor
java.lang.Object
|
+--logic.exec.BackupExecutor
< Fields > < Constructors > < Methods >
public class BackupExecutor
extends java.lang.Object
Jobs Executor Class, it is backup scheduler, who execute backup jobs.
Version:
1.0 02/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Fields
scheduler
public static org.quartz.Scheduler scheduler
Constructors
BackupExecutor
public
BackupExecutor(entities.Backup backup)
Parameters:
backup -
Methods
execute
public void execute()
Start all BackupJobs that still stopped and are in time.
stop
public void stop()
Stop all BackupJobs
stopJobsFromBackup
public static void stopJobsFromBackup(entities.Backup backup,
java.lang.String reason)
Stop all BackupJobs from a Backup
Parameters:
backup reason - why do you stop all of them?
logic.exec
Class ExecutableJob
java.lang.Object
|
+--logic.exec.ExecutableJob
< Constructors > < Methods >
public class ExecutableJob
extends java.lang.Object
Executable job Class represents a backup task. What must be do it.
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
ExecutableJob
public
ExecutableJob()
ExecutableJob
public
ExecutableJob(int type,
java.lang.String directoryOrigin,
java.lang.String sqlHostOrigin,
java.lang.String sqlUserOrigin,
java.lang.String sqlPassOrigin,
int sqlPortOrigin,
java.lang.String nameDataBaseOrigin,
java.lang.String directoryDestination,
java.lang.String ftpHostDestination,
java.lang.String ftpUserDestination,
java.lang.String ftpPassDestination,
java.lang.String ftpFileDestination)
Methods
execute
public void execute(JobExecutionContext arg0)
executeJob
public void executeJob(int jobId)
getBackupId
public int getBackupId()
getDirectoryDestination
public java.lang.String getDirectoryDestination()
getDirectoryOrigin
public java.lang.String getDirectoryOrigin()
getFtpFileDestination
public java.lang.String getFtpFileDestination()
getFtpHostDestination
public java.lang.String getFtpHostDestination()
getFtpPassDestination
public java.lang.String getFtpPassDestination()
getFtpUserDestination
public java.lang.String getFtpUserDestination()
getNameDataBaseOrigin
public java.lang.String getNameDataBaseOrigin()
getSqlHostOrigin
public java.lang.String getSqlHostOrigin()
getSqlPassOrigin
public java.lang.String getSqlPassOrigin()
getSqlPortOrigin
public int getSqlPortOrigin()
getSqlUserOrigin
public java.lang.String getSqlUserOrigin()
getType
public int getType()
setBackupId
public void setBackupId(int backupId)
toString
public java.lang.String toString()
Overrides:
toString in class java.lang.Object
logic.exec
Class ReloadBackups
java.lang.Object
|
+--logic.exec.ReloadBackups
< Constructors > < Methods >
public class ReloadBackups
extends java.lang.Object
Reload Backups Class, it is an automatic thread to load new backups and finish old of them.
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
ReloadBackups
public
ReloadBackups()
Methods
execute
public void execute(JobExecutionContext arg0)
logic.exec
Class ReloadExecutor
java.lang.Object
|
+--logic.exec.ReloadExecutor
< Constructors > < Methods >
public class ReloadExecutor
extends java.lang.Object
Reload Executor Class, it is the ReloadBackups executor.
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
ReloadExecutor
public
ReloadExecutor()
Methods
execute
public void execute()
Execute ReloadBackups thread every minute
stop
public void stop()
Stop ReloadBackup thread
Package logic.managers
Class Summary
CompressorManager
CompressorManager Class, It is used to convert directory in a ZIP file.
CronConverterManager
CRON Converter Manager Class, it is a CRON format converter.
DirectoryBackupManager
Directory Backup Manager Class, it makes files or directories copies.
FtpManager
FTP Manager Class, it upload files to FTP server.
LoadManager
Load Manager Class, it load Backup information from database.
SQLServerBackupManager
SQL Server Backup Manager Class, It makes a database backup.
WebServiceConnectionManager
Web Service Connection Manager Class.
logic.managers
Class CompressorManager
java.lang.Object
|
+--logic.managers.CompressorManager
< Constructors > < Methods >
public class CompressorManager
extends java.lang.Object
CompressorManager Class, It is used to convert directory in a ZIP file.
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
CompressorManager
public
CompressorManager()
Methods
createZipFile
public static void createZipFile(java.lang.String in,
java.lang.String out)
throws java.io.IOException
Parameters:
in - Path to origin directory
out - Path to destination ZIP file
Throws:
java.io.IOException - If something in Input-output stream was wrong
logic.managers
Class CronConverterManager
java.lang.Object
|
+--logic.managers.CronConverterManager
< Constructors > < Methods >
public class CronConverterManager
extends java.lang.Object
CRON Converter Manager Class, it is a CRON format converter. It transform to CRON format time
information from a scheduled backup
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
CronConverterManager
public
CronConverterManager()
Methods
scheduleBackup
public java.lang.String scheduleBackup(entities.Backup backup)
Parameters:
backup - Scheduled Backup
Returns:
CRON time format information from a scheduled backup
logic.managers
Class DirectoryBackupManager
java.lang.Object
|
+--logic.managers.DirectoryBackupManager
< Constructors > < Methods >
public class DirectoryBackupManager
extends java.lang.Object
Directory Backup Manager Class, it makes files or directories copies.
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
DirectoryBackupManager
public
DirectoryBackupManager()
Methods
makeBackup
public static boolean makeBackup(java.io.File origin,
java.io.File destination)
Parameters:
origin - file or directory, what do you want to save?
destination - file or directory, where do you want to save it?
logic.managers
Class FtpManager
java.lang.Object
|
+--logic.managers.FtpManager
< Fields > < Constructors > < Methods >
public class FtpManager
extends java.lang.Object
FTP Manager Class, it upload files to FTP server.
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Fields
TEMPORAL
public static final java.lang.String TEMPORAL
{@literal TEMPORAL}
Constructors
FtpManager
public
FtpManager()
FtpManager
public
FtpManager(int jobId,
int backupId)
Parameters:
jobId - backup job identification, who need to upload files?
Methods
uploadDatabaseByFTP
public void uploadDatabaseByFTP(java.lang.String
java.lang.String
java.lang.String
java.lang.String
java.lang.String
hostName,
userName,
password,
databasePath,
fileName)
uploadFileByFTP
public void uploadFileByFTP(java.lang.String
java.lang.String
java.lang.String
java.lang.String
java.lang.String
Parameters:
hostName - FTP Server Address
userName - FTP Server user
password - FTP Server user password
filePath - Origin file path
fileName - FTP Server file name
logic.managers
Class LoadManager
java.lang.Object
|
+--logic.managers.LoadManager
< Constructors > < Methods >
public class LoadManager
extends java.lang.Object
hostName,
userName,
password,
filePath,
fileName)
Load Manager Class, it load Backup information from database.
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
LoadManager
public
LoadManager()
Methods
getBackupsList
public java.util.List getBackupsList()
Returns:
Backups List with all database information
scheduleBackup
public void scheduleBackup(entities.Backup backup)
Scheduler a backup
Parameters:
backup - that have to be scheduler
scheduler
public void scheduler()
Scheduler all load backups
logic.managers
Class SQLServerBackupManager
java.lang.Object
|
+--logic.managers.SQLServerBackupManager
< Fields > < Constructors > < Methods >
public class SQLServerBackupManager
extends java.lang.Object
SQL Server Backup Manager Class, It makes a database backup.
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Fields
TEMPORAL
public static java.lang.String TEMPORAL
{@literal TEMPORAL}
Constructors
SQLServerBackupManager
public
SQLServerBackupManager()
SQLServerBackupManager
public
SQLServerBackupManager(int jobId,
int backupId)
Parameters:
jobId - backup job identification, who need to upload files?
Methods
dbConnect
public void dbConnect(java.lang.String
int port,
java.lang.String
java.lang.String
java.lang.String
java.lang.String
db_connect_string,
userid,
password,
temporalFile,
dBname)
Parameters:
db_connect_string - SQL Server database connection
userid - SQL Server database user
password - SQL Server database password
temporalFile - Temporal File path
dBname - SQL Server database name
dbConnectToFTP
public void dbConnectToFTP(java.lang.String
int port,
java.lang.String
java.lang.String
java.lang.String
java.lang.String
db_connect_string,
userid,
password,
temporalFile,
dBname)
logic.managers
Class WebServiceConnectionManager
java.lang.Object
|
+--logic.managers.WebServiceConnectionManager
< Constructors > < Methods >
public class WebServiceConnectionManager
extends java.lang.Object
Web Service Connection Manager Class.
Version:
1.0 03/06/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
WebServiceConnectionManager
public
WebServiceConnectionManager()
Methods
uploadWebService
public boolean uploadWebService()
Updating server database with new data
Returns:
result
Package util
Class Summary
BackupsController
Backup controller
ConnectionsController
Connections Controller
JobsController
Jobs Controller
MD5Converter
Converter to MD5 (Encrypt password)
SqliteFactory
SQLite Factory to obtain SQLite Database path
util
Class BackupsController
java.lang.Object
|
+--util.BackupsController
< Constructors > < Methods >
public class BackupsController
extends java.lang.Object
Backup controller
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
BackupsController
public
BackupsController()
Methods
delete
public static void delete(int backupId)
Delete backup
Parameters:
backupId -
util
Class ConnectionsController
java.lang.Object
|
+--util.ConnectionsController
< Constructors > < Methods >
public class ConnectionsController
extends java.lang.Object
Connections Controller
Version:
2.0 03/06/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
ConnectionsController
public
ConnectionsController()
Methods
checkFTP
public static void checkFTP(int ftpId)
Check FTP connection
Parameters:
ftpId - identification
checkSQL
public static void checkSQL(int id)
Check SQL Server database connection
Parameters:
id - identification
deleteFTP
public static void deleteFTP(int ftp)
Delete a FTP connection
Parameters:
ftp - identification
deleteSQL
public static void deleteSQL(int id)
Delete SQL Server database connection
Parameters:
id - identification
editFTP
public static void editFTP(int ftp,
java.lang.String title,
java.lang.String host,
java.lang.String user)
Parameters:
ftp - FTP identification
title - connection name
host - FTP address
user - FTP user name
editSQL
public static void editSQL(int id,
java.lang.String
java.lang.String
int port,
java.lang.String
java.lang.String
Parameters:
id - database identification
host - database address
title - connection name
port - database port
name - database name
user - database user name
util
Class JobsController
java.lang.Object
|
+--util.JobsController
< Constructors > < Methods >
public class JobsController
extends java.lang.Object
Jobs Controller
Version:
1.0 09/05/2013
Author:
host,
title,
name,
user)
Faustino Alonso Posada (EII-Oviedo)
Constructors
JobsController
public
JobsController()
Methods
deleteJob
public static void deleteJob(int jobId)
Delete job
Parameters:
jobId - job identification
editJob
public static void editJob(int jobId,
java.lang.String
java.lang.String
java.lang.String
int fpdId,
int databaseId,
java.lang.String
java.lang.String
Parameters:
jobId - job identification
jobName - job name
originType - origin type
destinationType - destination type
fpdId - FTP identification
databaseId - database identification
originDir - origin directory
destinationDir - destination directory
jobName,
originType,
destinationType,
originDir,
destinationDir)
runJob
public static void runJob(int jobId)
Run job
Parameters:
jobId - job identification
util
Class MD5Converter
java.lang.Object
|
+--util.MD5Converter
< Constructors > < Methods >
public class MD5Converter
extends java.lang.Object
Converter to MD5 (Encrypt password)
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
MD5Converter
public
MD5Converter()
Methods
convert
public static java.lang.String convert(java.lang.String clear)
Encrypt password to MD5 format
Parameters:
clear - plain text password
Returns:
md5 formated password
util
Class SqliteFactory
java.lang.Object
|
+--util.SqliteFactory
< Constructors > < Methods >
public class SqliteFactory
extends java.lang.Object
SQLite Factory to obtain SQLite Database path
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
SqliteFactory
public
SqliteFactory()
Methods
getSqlitePath
public static java.lang.String getSqlitePath()
Get SQLite path
Returns:
Database path
Package util.log
Class Summary
Log
Class to control LOG records
util.log
Class Log
java.lang.Object
|
+--util.log.Log
< Constructors > < Methods >
public class Log
extends java.lang.Object
Class to control LOG records
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
Log
public
Log()
Methods
writeLog
public static void writeLog(java.lang.String message,
java.lang.String reason)
Write a new LOG record
Parameters:
message - what happens?
reason - why it happens?
Package util.threads
Class Summary
CheckFTPThread
Check FTP Thread, it is used to check FTP connections
CheckSQLThread
Check SQL Thread, it is used to check database connections
CopyExecutorThread
Copy Executor Thread, it is used to make a copy
DirectoryBackupThread
Directory Backup Thread, it is used to throw new directory copy
FTPBackupThread
FTP Backup Thread, it is used to throw new FTP send
SchedulerBackupThread
Scheduler Backup Thread, it is used to throw new scheduler backup
UpdateBackupThread
Update Backup Thread, it is used to throw edited backup
util.threads
Class CheckFTPThread
java.lang.Object
|
+--java.lang.Thread
|
+--util.threads.CheckFTPThread
All Implemented Interfaces:
java.lang.Runnable
< Constructors > < Methods >
public class CheckFTPThread
extends java.lang.Thread
Check FTP Thread, it is used to check FTP connections
Version:
2.0 11/06/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
CheckFTPThread
public
CheckFTPThread(entities.Ftp ftp)
Parameters:
ftp - FTP connection
Methods
run
public void run()
Overrides:
run in class java.lang.Thread
util.threads
Class CheckSQLThread
java.lang.Object
|
+--java.lang.Thread
|
+--util.threads.CheckSQLThread
All Implemented Interfaces:
java.lang.Runnable
< Constructors > < Methods >
public class CheckSQLThread
extends java.lang.Thread
Check SQL Thread, it is used to check database connections
Version:
2.0 11/06/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
CheckSQLThread
public
CheckSQLThread(entities.SQLServerDatabase database)
Parameters:
database - SQL Server database
Methods
run
public void run()
Overrides:
run in class java.lang.Thread
util.threads
Class CopyExecutorThread
java.lang.Object
|
+--java.lang.Thread
|
+--util.threads.CopyExecutorThread
All Implemented Interfaces:
java.lang.Runnable
< Constructors > < Methods >
public class CopyExecutorThread
extends java.lang.Thread
Copy Executor Thread, it is used to make a copy
Version:
2.0 11/05/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
CopyExecutorThread
public
CopyExecutorThread(logic.exec.ExecutableJob job,
int jobId)
Parameters:
job - ExecutableJob
jobId - job identification
Methods
run
public void run()
Overrides:
run in class java.lang.Thread
util.threads
Class DirectoryBackupThread
java.lang.Object
|
+--java.lang.Thread
|
+--util.threads.DirectoryBackupThread
All Implemented Interfaces:
java.lang.Runnable
< Constructors > < Methods >
public class DirectoryBackupThread
extends java.lang.Thread
Directory Backup Thread, it is used to throw new directory copy
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
DirectoryBackupThread
public
DirectoryBackupThread(int jobId,
java.lang.String origin,
java.lang.String destination,
int backupId)
Parameters:
jobId - BackupJob Identification
origin - what do you want to save? (path)
destination - where do you want to save? (path)
DirectoryBackupThread
public
DirectoryBackupThread(java.lang.String origin,
java.lang.String destination)
Parameters:
origin - what do you want to save? (path)
destination - where do you want to save? (path)
Methods
run
public void run()
Overrides:
run in class java.lang.Thread
util.threads
Class FTPBackupThread
java.lang.Object
|
+--java.lang.Thread
|
+--util.threads.FTPBackupThread
All Implemented Interfaces:
java.lang.Runnable
< Constructors > < Methods >
public class FTPBackupThread
extends java.lang.Thread
FTP Backup Thread, it is used to throw new FTP send
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
FTPBackupThread
public
FTPBackupThread(java.lang.String
java.lang.String
java.lang.String
java.lang.String
java.lang.String
host,
name,
pass,
origin,
destination)
Parameters:
host - FTP Server address
name - FTP Server user name
pass - FTP Server user password
origin - what do you want to save?
destination - FTP Server file name
Methods
run
public void run()
Overrides:
run in class java.lang.Thread
util.threads
Class SchedulerBackupThread
java.lang.Object
|
+--java.lang.Thread
|
+--util.threads.SchedulerBackupThread
All Implemented Interfaces:
java.lang.Runnable
< Constructors > < Methods >
public class SchedulerBackupThread
extends java.lang.Thread
Scheduler Backup Thread, it is used to throw new scheduler backup
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
SchedulerBackupThread
public
SchedulerBackupThread(entities.Backup backup)
Methods
run
public void run()
Overrides:
run in class java.lang.Thread
util.threads
Class UpdateBackupThread
java.lang.Object
|
+--java.lang.Thread
|
+--util.threads.UpdateBackupThread
All Implemented Interfaces:
java.lang.Runnable
< Constructors > < Methods >
public class UpdateBackupThread
extends java.lang.Thread
Update Backup Thread, it is used to throw edited backup
Version:
2.0 11/05/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
UpdateBackupThread
public
UpdateBackupThread(int backupId,
entities.Backup backup)
Methods
run
public void run()
Overrides:
run in class java.lang.Thread
Package visual
Class Summary
MainUI
Main User Interface: main application class
MainWindow
Main Window, user interface window
visual
Class MainUI
java.lang.Object
|
+--visual.MainUI
< Constructors > < Methods >
public class MainUI
extends java.lang.Object
Main User Interface: main application class
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
MainUI
public
MainUI()
Methods
main
public static void main(java.lang.String[] args)
main application method
Parameters:
args -
visual
Class MainWindow
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--java.awt.Window
|
+--java.awt.Frame
|
+--javax.swing.JFrame
|
+--visual.MainWindow
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.RootPaneContainer,
javax.swing.TransferHandler.HasGetTransferHandler, javax.swing.WindowConstants
< Fields > < Constructors > < Methods >
public class MainWindow
extends javax.swing.JFrame
Main Window, user interface window
Version:
1.7 03/06/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Fields
CONFIGURATION
public static final int CONFIGURATION
CONNECTIONS
public static final int CONNECTIONS
JOBS
public static final int JOBS
LIST_BACKUPS
public static final int LIST_BACKUPS
LOG
public static final int LOG
LOGIN
public static final int LOGIN
RESULTS
public static final int RESULTS
authenticated
public static boolean authenticated
Constructors
MainWindow
public
MainWindow()
Methods
getInstance
public static MainWindow getInstance()
loginUser
public void loginUser(java.lang.String user)
paintMainPane
public static void paintMainPane(int panelName)
setAuthenticated
public static void setAuthenticated(boolean authenticated)
Package visual.panels
Class Summary
AddBackupPanel
Add new Backup panel
AddBackupPanel.JobsEditor
AddBackupPanel.JobsRender
BackupsPanel
Backups panel
BackupsPanel.BackupsTableEditor
BackupsPanel.BackupsTableRender
ConfigurationPanel
Configuration Panel
ConnectionsPanel
Connections Panel
ConnectionsPanel.FTPEditor
ConnectionsPanel.FTPRender
ConnectionsPanel.SQLEditor
ConnectionsPanel.SQLRender
EditBackupPanel
Edit backup panel
EditBackupPanel.JobsEditor
EditBackupPanel.JobsRender
JobsPanel
Jobs panel
JobsPanel.JobsEditor
JobsPanel.JobsRender
LogPanel
Log panel
LoginPanel
Login panel
ResultsPanel
Results panel
ResultsPanel.JobsTableEditor
ResultsPanel.JobsTableRender
ResultsPanel.ResultsTableEditor
ResultsPanel.ResultsTableModel
ResultsPanel.ResultsTableRender
visual.panels
Class AddBackupPanel
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JPanel
|
+--visual.panels.AddBackupPanel
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.TransferHandler.HasGetTransferHandler
< Constructors > < Methods >
public class AddBackupPanel
extends javax.swing.JPanel
Add new Backup panel
Version:
1.0 02/05/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
AddBackupPanel
public
AddBackupPanel(BackupsPanel resultsPanel)
This is the default constructor
Parameters:
resultsPanel -
Methods
getJobsList
public java.util.ArrayList getJobsList()
setJobsList
public void setJobsList(java.util.ArrayList jobsList)
visual.panels
Class AddBackupPanel.JobsEditor
java.lang.Object
|
+--javax.swing.AbstractCellEditor
|
+--visual.panels.AddBackupPanel.JobsEditor
All Implemented Interfaces:
java.awt.event.ActionListener, java.io.Serializable, javax.swing.CellEditor,
javax.swing.table.TableCellEditor
< Fields > < Constructors > < Methods >
public class AddBackupPanel.JobsEditor
extends javax.swing.AbstractCellEditor
implements java.awt.event.ActionListener, javax.swing.table.TableCellEditor
Fields
EDIT
protected static final java.lang.String EDIT
Constructors
AddBackupPanel.JobsEditor
public
AddBackupPanel.JobsEditor(javax.swing.JTable jTable1)
Methods
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent e)
getCellEditorValue
public java.lang.Object getCellEditorValue()
getTableCellEditorComponent
public java.awt.Component getTableCellEditorComponent(javax.swing.JTable
table,
java.lang.Object value,
boolean isSelected,
int row,
int column)
visual.panels
Class AddBackupPanel.JobsRender
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JLabel
|
+--visual.panels.AddBackupPanel.JobsRender
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.SwingConstants,
javax.swing.TransferHandler.HasGetTransferHandler, javax.swing.table.TableCellRenderer
< Constructors > < Methods >
public class AddBackupPanel.JobsRender
extends javax.swing.JLabel
implements javax.swing.table.TableCellRenderer
Constructors
AddBackupPanel.JobsRender
public
AddBackupPanel.JobsRender(boolean isBordered)
Methods
getTableCellRendererComponent
public java.awt.Component getTableCellRendererComponent(javax.swing.JTable
table,
java.lang.Object
color,
boolean isSelected,
boolean hasFocus,
int row,
int column)
visual.panels
Class BackupsPanel
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JPanel
|
+--visual.panels.BackupsPanel
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.TransferHandler.HasGetTransferHandler
< Constructors > < Methods >
public class BackupsPanel
extends javax.swing.JPanel
Backups panel
Version:
2.0 23/05/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
BackupsPanel
public
BackupsPanel()
This is the default constructor
Methods
returnPanel
public void returnPanel()
visual.panels
Class BackupsPanel.BackupsTableEditor
java.lang.Object
|
+--javax.swing.AbstractCellEditor
|
+--visual.panels.BackupsPanel.BackupsTableEditor
All Implemented Interfaces:
java.awt.event.ActionListener, java.io.Serializable, javax.swing.CellEditor,
javax.swing.table.TableCellEditor
< Fields > < Constructors > < Methods >
public class BackupsPanel.BackupsTableEditor
extends javax.swing.AbstractCellEditor
implements java.awt.event.ActionListener, javax.swing.table.TableCellEditor
Fields
EDIT
protected static final java.lang.String EDIT
Constructors
BackupsPanel.BackupsTableEditor
public
BackupsPanel.BackupsTableEditor(javax.swing.JTable jTable1)
Methods
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent e)
getCellEditorValue
public java.lang.Object getCellEditorValue()
getTableCellEditorComponent
public java.awt.Component getTableCellEditorComponent(javax.swing.JTable
table,
java.lang.Object value,
boolean isSelected,
int row,
int column)
visual.panels
Class BackupsPanel.BackupsTableRender
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JLabel
|
+--visual.panels.BackupsPanel.BackupsTableRender
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.SwingConstants,
javax.swing.TransferHandler.HasGetTransferHandler, javax.swing.table.TableCellRenderer
< Constructors > < Methods >
public class BackupsPanel.BackupsTableRender
extends javax.swing.JLabel
implements javax.swing.table.TableCellRenderer
Constructors
BackupsPanel.BackupsTableRender
public
BackupsPanel.BackupsTableRender(boolean isBordered)
Methods
getTableCellRendererComponent
public java.awt.Component getTableCellRendererComponent(javax.swing.JTable
table,
java.lang.Object
color,
boolean isSelected,
boolean hasFocus,
int row,
int column)
visual.panels
Class ConfigurationPanel
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JPanel
|
+--visual.panels.ConfigurationPanel
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.TransferHandler.HasGetTransferHandler
< Constructors >
public class ConfigurationPanel
extends javax.swing.JPanel
Configuration Panel
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
ConfigurationPanel
public
ConfigurationPanel()
This is the default constructor
visual.panels
Class ConnectionsPanel
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JPanel
|
+--visual.panels.ConnectionsPanel
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.TransferHandler.HasGetTransferHandler
< Constructors >
public class ConnectionsPanel
extends javax.swing.JPanel
Connections Panel
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
ConnectionsPanel
public
ConnectionsPanel(visual.MainWindow instance)
This is the default constructor
Parameters:
instance -
visual.panels
Class ConnectionsPanel.FTPEditor
java.lang.Object
|
+--javax.swing.AbstractCellEditor
|
+--visual.panels.ConnectionsPanel.FTPEditor
All Implemented Interfaces:
java.awt.event.ActionListener, java.io.Serializable, javax.swing.CellEditor,
javax.swing.table.TableCellEditor
< Fields > < Constructors > < Methods >
public class ConnectionsPanel.FTPEditor
extends javax.swing.AbstractCellEditor
implements java.awt.event.ActionListener, javax.swing.table.TableCellEditor
Fields
EDIT
protected static final java.lang.String EDIT
Constructors
ConnectionsPanel.FTPEditor
public
ConnectionsPanel.FTPEditor(javax.swing.JTable jTable1)
Methods
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent e)
getCellEditorValue
public java.lang.Object getCellEditorValue()
getTableCellEditorComponent
public java.awt.Component getTableCellEditorComponent(javax.swing.JTable
table,
java.lang.Object value,
boolean isSelected,
int row,
int column)
visual.panels
Class ConnectionsPanel.FTPRender
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JLabel
|
+--visual.panels.ConnectionsPanel.FTPRender
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.SwingConstants,
javax.swing.TransferHandler.HasGetTransferHandler, javax.swing.table.TableCellRenderer
< Constructors > < Methods >
public class ConnectionsPanel.FTPRender
extends javax.swing.JLabel
implements javax.swing.table.TableCellRenderer
Constructors
ConnectionsPanel.FTPRender
public
ConnectionsPanel.FTPRender(boolean isBordered)
Methods
getTableCellRendererComponent
public java.awt.Component getTableCellRendererComponent(javax.swing.JTable
table,
java.lang.Object
color,
boolean isSelected,
boolean hasFocus,
int row,
int column)
visual.panels
Class ConnectionsPanel.SQLEditor
java.lang.Object
|
+--javax.swing.AbstractCellEditor
|
+--visual.panels.ConnectionsPanel.SQLEditor
All Implemented Interfaces:
java.awt.event.ActionListener, java.io.Serializable, javax.swing.CellEditor,
javax.swing.table.TableCellEditor
< Fields > < Constructors > < Methods >
public class ConnectionsPanel.SQLEditor
extends javax.swing.AbstractCellEditor
implements java.awt.event.ActionListener, javax.swing.table.TableCellEditor
Fields
EDIT
protected static final java.lang.String EDIT
Constructors
ConnectionsPanel.SQLEditor
public
ConnectionsPanel.SQLEditor(javax.swing.JTable jTable1)
Methods
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent e)
getCellEditorValue
public java.lang.Object getCellEditorValue()
getTableCellEditorComponent
public java.awt.Component getTableCellEditorComponent(javax.swing.JTable
table,
java.lang.Object value,
boolean isSelected,
int row,
int column)
visual.panels
Class ConnectionsPanel.SQLRender
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JLabel
|
+--visual.panels.ConnectionsPanel.SQLRender
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.SwingConstants,
javax.swing.TransferHandler.HasGetTransferHandler, javax.swing.table.TableCellRenderer
< Constructors > < Methods >
public class ConnectionsPanel.SQLRender
extends javax.swing.JLabel
implements javax.swing.table.TableCellRenderer
Constructors
ConnectionsPanel.SQLRender
public
ConnectionsPanel.SQLRender(boolean isBordered)
Methods
getTableCellRendererComponent
public java.awt.Component getTableCellRendererComponent(javax.swing.JTable
table,
java.lang.Object
color,
boolean isSelected,
boolean hasFocus,
int row,
int column)
visual.panels
Class EditBackupPanel
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JPanel
|
+--visual.panels.EditBackupPanel
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.TransferHandler.HasGetTransferHandler
< Constructors > < Methods >
public class EditBackupPanel
extends javax.swing.JPanel
Edit backup panel
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
EditBackupPanel
public
EditBackupPanel(BackupsPanel resultsPanel,
entities.Backup backup)
This is the default constructor
Parameters:
resultsPanel backup -
Methods
getJobsList
public java.util.ArrayList getJobsList()
setJobsList
public void setJobsList(java.util.ArrayList jobsList)
visual.panels
Class EditBackupPanel.JobsEditor
java.lang.Object
|
+--javax.swing.AbstractCellEditor
|
+--visual.panels.EditBackupPanel.JobsEditor
All Implemented Interfaces:
java.awt.event.ActionListener, java.io.Serializable, javax.swing.CellEditor,
javax.swing.table.TableCellEditor
< Fields > < Constructors > < Methods >
public class EditBackupPanel.JobsEditor
extends javax.swing.AbstractCellEditor
implements java.awt.event.ActionListener, javax.swing.table.TableCellEditor
Fields
EDIT
protected static final java.lang.String EDIT
Constructors
EditBackupPanel.JobsEditor
public
EditBackupPanel.JobsEditor(javax.swing.JTable jTable1)
Methods
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent e)
getCellEditorValue
public java.lang.Object getCellEditorValue()
getTableCellEditorComponent
public java.awt.Component getTableCellEditorComponent(javax.swing.JTable
table,
java.lang.Object value,
boolean isSelected,
int row,
int column)
visual.panels
Class EditBackupPanel.JobsRender
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JLabel
|
+--visual.panels.EditBackupPanel.JobsRender
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.SwingConstants,
javax.swing.TransferHandler.HasGetTransferHandler, javax.swing.table.TableCellRenderer
< Constructors > < Methods >
public class EditBackupPanel.JobsRender
extends javax.swing.JLabel
implements javax.swing.table.TableCellRenderer
Constructors
EditBackupPanel.JobsRender
public
EditBackupPanel.JobsRender(boolean isBordered)
Methods
getTableCellRendererComponent
public java.awt.Component getTableCellRendererComponent(javax.swing.JTable
table,
java.lang.Object
color,
boolean isSelected,
boolean hasFocus,
int row,
int column)
visual.panels
Class JobsPanel
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JPanel
|
+--visual.panels.JobsPanel
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.TransferHandler.HasGetTransferHandler
< Constructors >
public class JobsPanel
extends javax.swing.JPanel
Jobs panel
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
JobsPanel
public
JobsPanel()
visual.panels
Class JobsPanel.JobsEditor
java.lang.Object
|
+--javax.swing.AbstractCellEditor
|
+--visual.panels.JobsPanel.JobsEditor
All Implemented Interfaces:
java.awt.event.ActionListener, java.io.Serializable, javax.swing.CellEditor,
javax.swing.table.TableCellEditor
< Fields > < Constructors > < Methods >
public class JobsPanel.JobsEditor
extends javax.swing.AbstractCellEditor
implements java.awt.event.ActionListener, javax.swing.table.TableCellEditor
Fields
EDIT
protected static final java.lang.String EDIT
Constructors
JobsPanel.JobsEditor
public
JobsPanel.JobsEditor(javax.swing.JTable jTable1)
Methods
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent e)
getCellEditorValue
public java.lang.Object getCellEditorValue()
getTableCellEditorComponent
public java.awt.Component getTableCellEditorComponent(javax.swing.JTable
table,
java.lang.Object value,
boolean isSelected,
int row,
int column)
visual.panels
Class JobsPanel.JobsRender
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JLabel
|
+--visual.panels.JobsPanel.JobsRender
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.SwingConstants,
javax.swing.TransferHandler.HasGetTransferHandler, javax.swing.table.TableCellRenderer
< Constructors > < Methods >
public class JobsPanel.JobsRender
extends javax.swing.JLabel
implements javax.swing.table.TableCellRenderer
Constructors
JobsPanel.JobsRender
public
JobsPanel.JobsRender(boolean isBordered)
Methods
getTableCellRendererComponent
public java.awt.Component getTableCellRendererComponent(javax.swing.JTable
table,
java.lang.Object
color,
boolean isSelected,
boolean hasFocus,
int row,
int column)
visual.panels
Class LogPanel
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JPanel
|
+--visual.panels.LogPanel
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.TransferHandler.HasGetTransferHandler
< Constructors >
public class LogPanel
extends javax.swing.JPanel
Log panel
Version:
1.0 15/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
LogPanel
public
LogPanel()
visual.panels
Class LoginPanel
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JPanel
|
+--visual.panels.LoginPanel
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.TransferHandler.HasGetTransferHandler
< Constructors > < Methods >
public class LoginPanel
extends javax.swing.JPanel
Login panel
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
LoginPanel
public
LoginPanel(visual.MainWindow main)
This is the default constructor
Methods
getUserTextField
public javax.swing.JTextField getUserTextField()
This method initializes userTextField
Returns:
javax.swing.JTextField
visual.panels
Class ResultsPanel
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JPanel
|
+--visual.panels.ResultsPanel
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.TransferHandler.HasGetTransferHandler
< Constructors > < Methods >
public class ResultsPanel
extends javax.swing.JPanel
Results panel
Version:
1.0 03/04/2013
Author:
Faustino Alonso Posada (EII-Oviedo)
Constructors
ResultsPanel
public
ResultsPanel()
Methods
formateDate
public java.lang.String formateDate(java.util.Date date)
visual.panels
Class ResultsPanel.JobsTableEditor
java.lang.Object
|
+--javax.swing.AbstractCellEditor
|
+--visual.panels.ResultsPanel.JobsTableEditor
All Implemented Interfaces:
java.awt.event.ActionListener, java.io.Serializable, javax.swing.CellEditor,
javax.swing.table.TableCellEditor
< Fields > < Constructors > < Methods >
public class ResultsPanel.JobsTableEditor
extends javax.swing.AbstractCellEditor
implements java.awt.event.ActionListener, javax.swing.table.TableCellEditor
Fields
EDIT
protected static final java.lang.String EDIT
Constructors
ResultsPanel.JobsTableEditor
public
ResultsPanel.JobsTableEditor(javax.swing.JTable jTable1)
Methods
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent e)
getCellEditorValue
public java.lang.Object getCellEditorValue()
getTableCellEditorComponent
public java.awt.Component getTableCellEditorComponent(javax.swing.JTable
table,
java.lang.Object value,
boolean isSelected,
int row,
int column)
visual.panels
Class ResultsPanel.JobsTableRender
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JLabel
|
+--visual.panels.ResultsPanel.JobsTableRender
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.SwingConstants,
javax.swing.TransferHandler.HasGetTransferHandler, javax.swing.table.TableCellRenderer
< Constructors > < Methods >
public class ResultsPanel.JobsTableRender
extends javax.swing.JLabel
implements javax.swing.table.TableCellRenderer
Constructors
ResultsPanel.JobsTableRender
public
ResultsPanel.JobsTableRender(boolean isBordered)
Methods
getTableCellRendererComponent
public java.awt.Component getTableCellRendererComponent(javax.swing.JTable
table,
java.lang.Object
value,
boolean isSelected,
boolean hasFocus,
int row,
int column)
visual.panels
Class ResultsPanel.ResultsTableEditor
java.lang.Object
|
+--javax.swing.AbstractCellEditor
|
+--visual.panels.ResultsPanel.ResultsTableEditor
All Implemented Interfaces:
java.awt.event.ActionListener, java.io.Serializable, javax.swing.CellEditor,
javax.swing.table.TableCellEditor
< Fields > < Constructors > < Methods >
public class ResultsPanel.ResultsTableEditor
extends javax.swing.AbstractCellEditor
implements java.awt.event.ActionListener, javax.swing.table.TableCellEditor
Fields
EDIT
protected static final java.lang.String EDIT
Constructors
ResultsPanel.ResultsTableEditor
public
ResultsPanel.ResultsTableEditor(javax.swing.JTable jTable1)
Methods
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent e)
getCellEditorValue
public java.lang.Object getCellEditorValue()
getTableCellEditorComponent
public java.awt.Component getTableCellEditorComponent(javax.swing.JTable
table,
java.lang.Object value,
boolean isSelected,
int row,
int column)
visual.panels
Class ResultsPanel.ResultsTableModel
java.lang.Object
|
+--javax.swing.table.AbstractTableModel
|
+--javax.swing.table.DefaultTableModel
|
+--visual.panels.ResultsPanel.ResultsTableModel
All Implemented Interfaces:
java.io.Serializable, javax.swing.table.TableModel
< Constructors > < Methods >
public class ResultsPanel.ResultsTableModel
extends javax.swing.table.DefaultTableModel
Constructors
ResultsPanel.ResultsTableModel
public
ResultsPanel.ResultsTableModel(java.lang.Object[][] data,
java.lang.String[] columnNames)
Methods
isCellEditable
public boolean isCellEditable(int row,
int column)
Overrides:
isCellEditable in class javax.swing.table.DefaultTableModel
visual.panels
Class ResultsPanel.ResultsTableRender
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JLabel
|
+--visual.panels.ResultsPanel.ResultsTableRender
All Implemented Interfaces:
java.awt.MenuContainer, java.awt.image.ImageObserver, java.io.Serializable,
javax.accessibility.Accessible, javax.swing.SwingConstants,
javax.swing.TransferHandler.HasGetTransferHandler, javax.swing.table.TableCellRenderer
< Constructors > < Methods >
public class ResultsPanel.ResultsTableRender
extends javax.swing.JLabel
implements javax.swing.table.TableCellRenderer
Constructors
ResultsPanel.ResultsTableRender
public
ResultsPanel.ResultsTableRender(boolean isBordered)
Methods
getTableCellRendererComponent
public java.awt.Component getTableCellRendererComponent(javax.swing.JTable
table,
java.lang.Object
value,
boolean isSelected,
boolean hasFocus,
int row,
int column)
Descargar