Está en la página 1de 133

ESCUELA SUPERIOR DE INGENIERA

INGENIERA TCNICA EN INFORMTICA DE GESTIN

SISTEMA DE GESTIN DE UN CENTRO DE SOPORTE INFORMTICO AL USUARIO

Alberto Gil Daz


Cdiz, Abril de 2012

ESCUELA SUPERIOR DE INGENIERA


INGENIERA TCNICA EN INFORMTICA DE GESTIN

SISTEMA DE GESTIN DE UN CENTRO DE SOPORTE INFORMTICO AL USUARIO

Departamento: Lenguajes y Sistemas Informticos Directores del Proyecto: Jos Miguel Mota Macas Manuel Palomo Duarte Autor del Proyecto: Alberto Gil Daz Cdiz, Abril de 2012

Fdo: Alberto Gil Daz

Licencia
Este documento ha sido liberado bajo Licencia GPL versin 3 (GNU Free Documentation License). Se incluyen los trminos de la licencia en ingls al final del mismo. Copyright 2012 Alberto Gil Daz Este programa es software libre: usted puede redistribuirlo y / o modificar bajo los trminos de la GNU General Public License publicada por la Free Software Foundation, bien de la versin 3 de la Licencia, o (A su eleccin) cualquier versin posterior.

Agradecimientos A mi familia

Pg. 6

Resumen
El Sistema de Gestin de un Centro de Soporte Informtico al Usuario o Soporte Tcnico facilita el trabajo a los tcnicos informticos encargados del mantenimiento, gestin y control, del rea de soporte, sistemas o tecnolgicas, de una pequea organizacin. Mediante la gestin de usuarios (empleados), incidencias, hardware, software, servicios, proveedores, cuentas de correo electrnico y empresas, el personal tcnico encargado, podr mantener controlada e inventariada una organizacin. Soporte Tcnico posee accesos rpidos a programas tiles para su uso, como son Console [1], consola mejorada para entornos Windows y ultraVNC [2], acceso remoto a equipos.

Palabras claves: Soporte Tcnico, Mantenimiento, Incidencias.

Pg. 7

ndice General

I Prolegmeno

15

Captulo 1.- Introduccin 16 1.1. Motivacin..........................................................................................................................16 1.2. Objetivo del proyecto..........................................................................................................16 1.3. Organizacin del documento..............................................................................................17 Captulo 2.- Soporte Tcnico 18 2.1. Historia................................................................................................................................18 2.2. Actualidad...........................................................................................................................19 2.3. Objetivos de Soporte Tcnico ............................................................................................20 2.4. Logotipo..............................................................................................................................20 Captulo 3.- Calendario 21 3.1. Introduccin........................................................................................................................21 3.2. Diagrama de Gantt..............................................................................................................22 Captulo 4.- Estado del Arte 24 4.1. Software Libre ...................................................................................................................24 4.1.1. GLPI..........................................................................................................................24 4.1.2. OCS...........................................................................................................................25 II Desarrollo Captulo 5.- Metodologa de Desarrollo Captulo 6.- Anlisis del Sistema 26 27 29

Pg. 8

6.1.

Anlisis de Requisitos.........................................................................................................29 6.1.1. Tcnicas de recogida de informacin .......................................................................29 6.1.2. Anlisis de Viabilidad...............................................................................................30 6.1.3. Objetivos ..................................................................................................................31 6.1.4. Requisitos funcionales...............................................................................................31 6.2. Modelo de casos de uso......................................................................................................32 6.2.1. Diagrama de Caso de Uso.........................................................................................33 6.2.2. Especificacin de los Casos de Uso..........................................................................33 6.3. Modelo Conceptual de Datos..............................................................................................37 6.3.1. Diagrama Conceptual de Datos..................................................................................37 6.4. Modelo de Comportamiento del Sistema............................................................................39 6.4.1. Diagrama de Secuencias del Sistema y Contrato de las Operaciones.......................39 Captulo 7.- Diseo del Sistema 46 7.1. Arquitectura del Sistema Software.....................................................................................47 7.2. Diseo de la capa de presentacin......................................................................................47 7.3. Diseo de la capa de dominio.............................................................................................49 7.4. Modelo de Diseo...............................................................................................................49 7.4.1. Diagrama de Interaccin Gestin Men Principal....................................................49 7.4.2. Diagrama de Interaccin CU: Gestin Servicio........................................................50 7.4.3. Diagrama de Interaccin CU: Gestin N-Ware........................................................51 7.4.4. Diagrama de Interaccin CU: Gestin Incidencias...................................................51 7.4.5. Diagrama de Interaccin CU: Gestin Empleados....................................................52 7.4.6. Diagrama de Interaccin CU: Gestin Empresas......................................................52 7.4.7. Nuevas clases y relaciones........................................................................................53 7.4.8. Colaboraciones entre Objetos....................................................................................53 7.4.9. Especificacin de las operaciones de diseo.............................................................54 7.4.10. Diseo de la capa de gestin de datos.....................................................................58 7.5. Bases de Datos....................................................................................................................59 7.5.1 Descripcin del problema...........................................................................................59 7.5.2. Recogida de datos......................................................................................................59 7.5.3. Restricciones semnticas...........................................................................................64 7.5.4. Consultas ms frecuentes..........................................................................................64 7.5.4.1. Especificacin....................................................................................................64 7.5.5. Diseo Conceptual....................................................................................................65 7.5.5.1. Descripcin de los tipos de entidades................................................................65 7.5.5.2. Descripcin de los tipos de atributos.................................................................65 7.5.6. Diseo Lgico...........................................................................................................72 7.5.6.1. Modelo Relacional.............................................................................................72 7.5.7. Diseo Fsico.............................................................................................................73
Pg. 9

7.5.7.1. ndices................................................................................................................73 7.5.8. Clusulas de Base de Datos.......................................................................................74 Captulo 8.- Implementacin 77 8.1. Codificacin........................................................................................................................77 8.1.1. Gua de Estilo............................................................................................................77 8.1.1.1. Introduccin.......................................................................................................77 8.1.1.2. Estructuras de control........................................................................................77 8.1.1.3. Llamadas a funciones........................................................................................78 8.1.1.4. Declaracin de Funciones..................................................................................78 8.1.1.5. Ejemplos de Implementacin............................................................................78 8.1.1.6. Implementacin de Formularios........................................................................81 8.1.1.7. Bibliotecas de cdigo abierto utilizados............................................................84 8.1.1.8. Conexin con la Base de Datos.........................................................................85 8.2. Recursos Utilizados.............................................................................................................86 8.2.1. Iconos........................................................................................................................86 8.2.2. Fuentes.......................................................................................................................86 8.2.3. Imgenes....................................................................................................................86 8.2.4. Utilidades ..................................................................................................................87 8.3. Estadsticas Lneas de Cdigo Fuente.................................................................................87 8.3.1. Introduccin...............................................................................................................87 8.3.2. Informe......................................................................................................................87 Captulo 9.- Pruebas y Usabilidad 89 9.1. Pruebas ...............................................................................................................................89 9.1.1. Test usabilidad...............................................................................................................90 9.1.2. Pruebas caja negra.........................................................................................................90 9.1.3. Estudio de resultados.....................................................................................................91 9.2. Usabilidad ..........................................................................................................................91 9.2.1. Opiniones de Jakob Nielsen......................................................................................92 9.2.2. Elementos visuales....................................................................................................92 Captulo 10.- Requisitos del Sistema III Eplogo 94 95

Captulo 11.- Manual de Instalacin 96 11.1. Creacin del Instalador.....................................................................................................96 11.2. Instalacin.........................................................................................................................97 11.3. Desinstalacin...................................................................................................................99

Pg. 10

Captulo 12.- Manual de Usuario

100

Captulo 13.- Conclusiones 104 13.1. Cumplimiento de Objetivos ...........................................................................................104 14.2. Opinin Personal.............................................................................................................111 14.3. Mejoras ...........................................................................................................................112 Captulo 14.- Software Utilizado Captulo 15.- Referencias Bibliogrficas Captulo 16.- Informacin sobre Licencia 113 120 122

Pg. 11

ndice de Figuras
Figura 2.1. Logotipo de Soporte Tcnico (ST) (pg 20) Figura 3.1. Das de Tareas. (pg. 22) Figura 3.2. Diagrama de Gantt (pg. 23) Figura 4.1. Logotipo de GLPI (pg. 24) Figura 4.2. Logotipo de OCS (pg. 25) Figura 5.1. Modelo de ciclo de vida incremental (pg. 27) Figura 6.1. Diagrama de Casos de Uso (pg. 33) Figura 6.2. Diagrama Conceptual de Datos (pg. 37) Figura 6.3. Diagrama de Secuencias del Sistema Gestin Servicios (pg. 39) Figura 6.4. Diagrama de Secuencias del Sistema Gestin N-Ware (pg. 40) Figura 6.5. Diagrama de Secuencias del Sistema Gestin Incidencia (pg. 42) Figura 6.6. Diagrama de Secuencias del Sistema Gestin Empleados (pg. 43) Figura 6.7. Diagrama de Secuencias del Sistema Gestin Empresa (pg. 44) Figura 7.1. Boceto pgina principal (pg 47) Figura 7.2. Boceto pginas de gestin (pg. 47) Figura 7.3. Estructura de las pginas de gestin (pg. 48) Figura 7.4. Boceto de gestin de correos electrnicos (pg. 48) Figura 7.5. Boceto de gestin de empleados (pg. 48) Figura 7.6. Diagrama de Interaccin Gestin Men Principal (pg. 49) Figura 7.7. Diagrama de Interaccin CU Gestin Servicio (pg. 50) Figura 7.8. Diagrama de Interaccin CU Gestin N-Ware (pg. 51) Figura 7.9. Diagrama de Interaccin CU Gestin Incidencias (pg. 51) Figura 7.10. Diagrama de Interaccin CU Gestin Empleados (pg. 52) Figura 7.11. Diagrama de Interaccin CU Gestin Empresas (pg. 52) Figura 7.12. Hoja de Calculo de empleados, IP, contraseas y telfonos (pg. 59) Figura 7.13. Listado de Telfonos Internos (pg. 60) Figura 7.14. Listado de aplicaciones relacionados con la seguridad (pg. 60) Figura 7.15. Listado de aplicaciones relacionadas con incidencias (pg. 6) Figura 7.16. Listado de carpetas de controladores (pg. 61) Figura 7.17. Listado de aplicaciones para nuevos equipos (pg. 61) Figura 7.18. Hoja de calculo de tner y cartuchos (pg. 61) Figura 7.19. Listado de fxes (pg. 62) Figura 7.20. Listado con informacin de servidores (pg. 62) Figura 7.21. Documento de texto con los correos electrnicos (pg. 62)
Pg. 12

Figura 7.22. Plantilla informe de ordenador (pg. 63) Figura 7.23. Plantilla sobre tareas (pg. 63) Figura 7.24. Modelo Relacional Soporte Tcnico (pg. 72) Figura 8.1. Qt Designer Gestin de Incidencias (pg. 83) Figura 8.2. Estadstica anual (pg. 84) Figura 8.3. Estadsticas (pg. 84) Figura 8.4. Logotipo de Open Icon Library (pg. 86) Figura 8.5. Logotipo de Open Font Library (pg. 86) Figura 8.6. Logotipo de Open Clip Art Library (pg. 86) Figura 8.7. Logotipo de UltraVNC (pg. 87) Figura 8.8. Logotipo de Console (pg. 87) Figura 8.9. Resumen grfico (pg. 88) Figura 9.1. Ejemplo ToolTip (pg. 91) Figura 11.1. Configurador de Inno Setup (pg. 96) Figura 11.2. Icono Instalador (pg. 97) Figura 11.3. Configurador de Inno Setup (pg. 97) Figura 11.4. Seleccin de iconos (pg. 98) Figura 11.5. Proceso de instalacin (pg. 98) Figura 11.6. Ventana de desinstalacin (pg. 99) Figura 11.7. Finalizacin de la desinstalacin (pg. 99) Figura 12.1. Acceso directo de Soporte Tcnico (pg. 100) Figura 12.2. Control de Acceso (pg. 100) Figura 12.3. Ventana Principal (pg. 101) Figura 12.4. Ventana ejemplo de unidad de gestin (pg. 102) Figura 13.1. Gestin de Incidencias (pg. 104) Figura 13.2. Gestin de Empleados (pg. 105) Figura 13.3. Gestin de Cuentas de correo electrnico (pg. 105) Figura 13.4. Gestin de Servicios (pg. 105) Figura 13.5. Gestin de Proveedores (pg. 106) Figura 13.6. Gestin de Hardware (pg. 106) Figura 13.7. Gestin de Software (pg. 106) Figura 13.8. Icono de UltraVNC (pg. 107) Figura 13.9. Configuracin de UltraVNC (pg. 107) Figura 13.10, Tarjetas Empleados (pg. 108) Figura 13.11. Tarjetas Proveedores (pg. 108) Figura 13.12. Grfica incidencias de una fecha (pg. 109) Figura 13.13. Grfica incidencias anuales (pg. 109) Figura 13.14. Ventana Recursos (pg. 110) Figura 13.15. Gestin de Empresas (pg. 110) Figura 13.16. Gestin de Empresas (pg. 111) Figura 13.17. Ejemplo de cdigo de barras (pg. 112) Figura 13.18. Ejemplo de cdigo QR (pg. 112)

Pg. 13

ndice de Tablas
Tabla 3.1. Lista de Tareas. (pg. 22) Tabla 7.1. Consultas ms frecuentes (pg. 65) Tabla 7.2. Atributos y Claves primarias (pg. 72) Tabla 7.3. ndices primarios (pg. 74) Tabla 8.1. Ejemplo contrasea encriptada (pg. 84) Tabla 8.2. Tabla resumen de lneas de cdigo (pg. 88) Tabla 8.3. Tabla resumen de carpetas (pg. 88) Tabla 9.1. Tabla de iconos (pg. 93)

Pg. 14

Parte I

Prolegmeno

Pg. 15

Captulo 1

Introduccin
1.1. Motivacin

Realic la practicas de empresa en una que pertenece a un sector no tecnolgico, donde tuve que realizar distintos tipos de trabajos: inventariar el material informtico existente, as como, gestionar las incidencias y toda la informacin referente a los proveedores y cuentas de correos de los empleados. Busqu soluciones prcticas ya desarrolladas pero stas estn preparadas para grandes empresas, donde los empleados estn bien formados y tienen un nivel alto en conocimientos tecnolgicos e informticos, algo que no coincida con la realidad donde yo realizaba las prcticas de empresa. Ante esta situacin cre oportuno desarrollar una aplicacin en la que pudiera recoger todas las necesidades de gestin informtica que esta organizacin mediana necesita.

1.2.

Objetivo del proyecto

El objetivo principal es facilitar la gestin de los responsables de Soporte Tcnico o Servicio Tcnico de asociaciones y pyme, facilitando el acceso a la informacin y a los diferentes equipos de forma rpida, apoyndose en proyectos, ya existentes, como herramientas de cdigo abierto (Open Source).

Pg. 16

1.3.

Organizacin del documento

Esta documento esta dividido tres en secciones que cubren los diferentes aspectos sobre el Soporte Tcnico. La Primera, prolegmeno, donde recojo los fundamentos, objetivos y estructuracin temporal de mi proyecto. La segunda, desarrollo, en la que expongo el ciclo de vida de mi software. La siguiente, y ltima, manual de instalacin y usuario, software empleado para la realizacin del presente proyecto, as como la bibliografa y por ltimo una descripcin de la licencia.

Pg. 17

Captulo 2

Soporte Tcnico
2.1. Historia

Desde la creacin de los primeras innovaciones tecnolgicas, los investigadores e ingenieros que posean un conocimiento mas avanzada o simplemente creaban las bases de los actuales dispositivos, documentaban sus creaciones y enseaban a otros sus descubrimientos. La creacin de los primeros ordenadores analgicos, ordenadores electrnicos, de circuitos integrados o la futura superconductividad de los materiales, todas, tienen necesitan una investigacin, documentacin y divulgacin, a la comunidad cientfica, para su desarrollo y creacin. Una vez puesto en manos de empresas, stas realizan aplicaciones (Hardware y Software), de las que dan servicio de soporte a los usuarios finales. Esta medida va en consonancia con estrategias de mercado, como medida de valor aadido ante otras organizaciones de un mismo sector, creando as, al tcnico especializado para la resolucin de problemas sobre esas y otras posibles aplicaciones. Existen diferentes formas de referirse a centros de soporte, por ejemplo, call center, help desk, soporte informtico, servicio tcnico, apoyo tcnico, mesa de ayuda, centro de contacto,.. entre otras.

Pg. 18

2.2.

Actualidad

La realidad actual es que pocas empresas disponen de soporte tcnico o un departamento dedicado slo y exclusivamente a ayudar o guiar a sus empleados, en aspectos informticos o tecnolgicos. Las pymes compuestas de 5 o ms personas, optan por subcontratar servicios y gestiones, evitando as emplear a personal propio. Aquella subcontratacin supone en muchos casos un mayor coste econmico. Es preferible desde el punto de vista de la eficacia y de la economa, disponer de un tcnico informtico a su servicio. El origen de aquella situacin se puede deber a razones de desconocimiento, de la falta de un estudio de necesidades, de la no adaptacin a las nuevas tcnicas y medios, a la ausencia de visin de futuro y tal vez al prestigio social segn sea la empresa contratada. Las empresas que se aventuran a incluir a un tcnico, o varios, dedicado a dar soporte al resto de empleados, ven crecer su productividad, a la par de controlar todos los aspectos del trabajo dentro de la empresa, al existir un alto grado de informatizacin en la mayora de los procesos productivos. El tcnico de soporte, adems de disear, desarrollar y programar, se encarga de reparar y controlar el funcionamiento de un amplia gama de dispositivos tecnolgicos, por ejemplo, impresoras, ordenadores, dispositivos mviles, fotocopiadoras, fax, destructoras de papel, calculadoras, telfono,... y todo aquel dispositivo utilizado por los empleados dentro de la organizacin. Aqu conviene destacar las actitudes de un tcnico de soporte: Estudio de la situacin actual. Proponer mejoras.

Cualidades Personales: Abierto a resolver nuevos problemas. Seguimiento de problemas. Previsor de problemas y peticiones futuras. Trato correcto con empleados de acuerdo a su nivel de conocimientos informticos. Explicacin de la resolucin o incluso desarrollar una gua para solucionarlo y entregarla a las personal involucradas, por si ocurre el mismo problema en el futuro tener documentada la solucin anterior tomada.

Pg. 19

2.3.

Objetivos de Soporte Tcnico

Mi aplicacin la he nombrado como Soporte Tcnico (ST) , ya que representa la funcin principal a desarrollar por el tcnico que use esta aplicacin. Varios son los objetivos que quiero lograr para facilitar la gestin del servicios de soporte. Relacin de objetivos a alcanzar: Gestionar incidencias, empleados, servicios de proveedores, cuentas de correo electrnico. Facilitar el inventariado del hardware y software. Facilitar el acceso remoto a equipos de una misma red. Facilitar la informacin de contacto de empleados y proveedores. Mostrado de estadsticas de las incidencias producidas en un periodo de tiempo. Estandarizar el uso de los dispositivos. Acceder a software, guas y manuales de forma rpida. Gestionar informacin sobre las empresas o sedes, donde trabajan los empleados.

2.4.

Logotipo

Mi logotipo posee dos elementos muy usados a la hora de realizar el mantenimiento de equipos informticos, las herramientas mas utilizadas son: una unidad de almacenamiento USB, que contiene aplicaciones y utilidades para resolver una gran cantidad de problemas, y un pequeo destornillador, para poder abrir y desmontar en el lugar donde se ha producido la incidencia aquel dispositivo que haya fallado.

Figura 2.1. Logotipo de Soporte Tcnico (ST)

Pg. 20

Captulo 3

Calendario
3.1. Introduccin

La distribucin temporal, seguida en lneas generales, es la descrita a continuacin: Anlisis: En esta fase llevaremos a cabo la recogida de todos los requisitos de aplicacin. Al seguir un modelo lineal deberemos realizar una buena recogida de datos para que quede una aplicacin consistente y cumpliendo los objetivos deseados para ella. Una vez recogidos realizaremos los casos de usos y diagramas correspondientes. Diseo: En esta fase comenzaremos realizando el diseo de las interfaces grficas. Una vez realizadas realizaremos un estudio de usabilidad sobre ellas para que sea de fcil uso para cualquier tipo de usuario. Implementacin: Primero realizaremos un estudio de las aplicaciones ms adecuadas para el desarrollo de la aplicacin as como el lenguaje de programacin y la plataforma. Y en segundo lugar la codificacin de la aplicacin mediante la herramienta QT. Pruebas: Las pruebas que realizaremos sern las siguientes: Test usabilidad, consiste en la observacin sistemtica de usuarios llevando a cabo tareas reales. Pruebas caja negra, consiste en el estudio de mdulos, desde el punto de vista de las entradas que recibe y las salidas o respuestas que produce, sin tener en cuenta su funcionamiento interno. Estudio y resolucin de los resultados de las pruebas.

Pg. 21

3.2.

Diagrama de Gantt

El diagrama de Gantt es una herramienta visual que permite modelar la planificacin de las tareas necesarias para la realizacin de un proyecto. Debido a la relativa facilidad de lectura de los diagramas de Gantt, esta herramienta es muy utilizada por directores de proyecto en todos los sectores. El diagrama de Gantt es una herramienta para el director del proyecto que le permite realizar una representacin grfica del progreso del proyecto, pero tambin es un buen medio de comunicacin entre las diversas personas involucradas en un mismo proyecto. Proyecto: Soporte Tcnico Inicio: 8 de Agosto de 2011 Fin: 6 de Abril de 2012
Tabla 3.1. Lista de Tareas.

Figura 3.1. Das de Tareas

Pg. 22

Figura 3.2. Diagrama de Gantt

Pg. 23

Captulo 4

Estado del Arte


En este apartado muestro, de forma simplificada, algunas aplicaciones y utilidades empleadas para el estudio y mejora de mi programa, Soporte Tcnico, disponibles en el mercado.

4.1.
4.1.1.

Software Libre
GLPI

Figura 4.1. Logotipo de GLPI

GLPI es el Gestor de Recursos de Informacin, con un Interfaz de Administracin. Se puede utilizar para construir una base de datos con un inventario de una empresa (ordenadores, software, impresoras ...). Tiene funciones para facilitar la vida diaria de los administradores, posee un seguimiento de notificaciones mediante correo electrnico y mtodos para construir una base de datos con informacin bsica sobre la topologa de red. De la aplicacin GLPI me he basado en la cantidad de informacin que es posible almacenar sobre un componente hardware, estudiando sus campos y aadiendo otros, he creado una base de datos completa para almacenar toda la informacin sobre estos componentes hardware.

Pg. 24

4.1.2.

OCS

Figura 4.2. Logotipo de OCS

OCS Inventory NG [4] es una herramienta que facilita el seguimiento de la configuracin y del software instalado en los ordenadores de una red local, as como la instalacin remota de aplicaciones desde un servidor web. Esta aplicacin sirve para hacer inventarios de software y hardware en red, posee una aplicacin cliente y otro servidor desde donde se recogen los informes de la red Generacin de inventario de software es una solucin de gestin tcnica para TI. OCS Inventory NG trata de hacer el inventario automatizado de hardware ms eficiente. OCS Inventary proporciona mucha cantidad de informacin al tcnico que lo utiliza, en muchos casos demasiada informacin para hacer pequeas comprobaciones. De esta aplicacin me he basado en la utilizacin de las direcciones IP (Internet Protocol) de los equipos informticos para acceder a ellos de forma remota.

Pg. 25

Parte II

Desarrollo

Pg. 26

Captulo 5

Metodologa de Desarrollo
La metodologa que he considerado ms adecuada para el desarrollo del software es la metodologa en cascada, tambin conocida como lineal secuencial o modelo clsico (Figura 5.1). El modelo en cascada propone un enfoque sistemtico y secuencial del desarrollo del software que comienza con el anlisis de requisitos del sistema y contina con el anlisis del software, diseo, codificacin, pruebas y mantenimiento.

Figura 5.1. Modelo de ciclo de vida en cascada

Es un enfoque metodolgico que ordena rigurosamente las etapas del ciclo de vida del software, de forma que el inicio de cada etapa debe esperar a la finalizacin de la inmediatamente anterior. El motivo principal para la decisin de este modelo, es el conocimiento de los requisitos funcionales en la primera etapa, de forma detallada y personal.

Pg. 27

Caractersticas: Es el modelo ms antiguo y ms utilizado en la ingeniera del software, sigue siendo el paradigma ms seguido y, por tanto, est ampliamente contrastado. Para pasar de una fase a la siguiente es necesario conseguir todos los objetivos de la fase previa. Para ello, se realiza una revisin al final de cada fase, permitiendo volver al principio de la fase y modificar los errores encontrados. Ayuda a detectar errores en las primeras etapas a bajo costo. Ayuda a prevenir que se sobrepasen las fechas de entrega y los costes esperados. Es fcil aprender a utilizarlo y comprender su funcionamiento. Al final de cada fase el personal tcnico y los usuarios pueden revisar el progreso del proyecto.

Inconvenientes Puede resultar complicado regresar a etapas anteriores (ya acabadas) para realizar correcciones. Es difcil que el cliente exponga explcitamente todos los requisitos. El modelo lineal secuencial lo requiere y tiene dificultades para acomodar la incertidumbre que existe al comienzo de muchos proyectos. La naturaleza lineal del ciclo de vida clsico lleva a estados de bloqueo en el que algunos miembros del equipo del proyecto deben esperar a otros para completar tareas dependientes. Se tarda mucho tiempo en pasar por todo el ciclo.

Pg. 28

Captulo 6

Anlisis del Sistema


6.1.
6.1.1.

Anlisis de Requisitos
Tcnicas de recogida de informacin

Las tcnicas de recogida de informacin son un medio para mejorar la comunicacin entre los usuarios y los desarrollares. Se utilizan para obtener la informacin necesaria para realizar el Anlisis de Viabilidad y el Documento de Especificacin de Requisitos. Entrevista, dilogo con personas que usen algn software existente en el mercado, sobre la misma temtica que el que se quiere desarrollar, permite una comunicacin natural, fases: preparacin, realizacin y anlisis. Prototipado, consiste en la creacin de un modelo del sistema que permite a los usuarios evaluar mejor las necesidades, analizando si el prototipo tiene las caractersticas deseadas, adaptacin a las necesidades de los desarrolladores sera muestra de los avances del software atendiendo fuertemente a su usabilidad y critica por parte del usuario. Observacin, analizar in situ, el funcionamiento de una empresa, como inventariar o controlan los componentes de un puesto de trabajo, permitiendo analizar mejor los detalles del proceso, estudio de documentacin. Analizar documentos que describan el funcionamiento del software, recopilacin de informacin, procedimientos, manuales, ayudas de software similar disponible en las paginas web de los desarrollares de aplicaciones para soporte tcnico.

En el desarrollo de este software me he basado mucho en la experiencia personal, adquirida durante trabajos y prcticas de empresa.

Pg. 29

6.1.2.

Anlisis de Viabilidad

Como indica R. Pressman [29] todos los proyectos son realizables con recursos ilimitados y tiempo infinito!. En la prctica, los proyectos de desarrollo de software se caracterizan por la escasez de recursos y la dificultad para cumplir los plazos establecidos. Por lo tanto, antes de comenzar un desarrollo debe evaluarse su viabilidad y, preferentemente, analizar los riesgos que conlleva. El estudio de viabilidad aborda los siguientes aspectos: Econmico. El beneficio econmico que obtendr una organizacin o empresa utilizando Soporte Tcnico, ser proporcional al nivel de organizacin que tenga del rea de soporte tcnico. A mayor descontrol, mayores gastos de mantenimiento y reparacin, a menor descontrol, menores sern las averas y necesidades tcnicas. Tcnico. Al tener unos requerimientos tcnicos bajos, el proyecto es realizable. La tecnologa usada es C++, ampliamente difundida y documentada. Legal. Propiedad intelectual: Toda los recursos utilizados deber respetar las clusulas de la Free Software Foundation [30] o parte de ellas. Este documento ha sido liberado bajo Licencia GPL versin 3 (GNU Free Documentation License). Se incluyen los trminos de la licencia en ingls al final del mismo.

Operativa. Ser posible implantar Soporte Tcnico en el cualquier organizacin o empresa, al requerir bajos conocimientos tcnicos para su uso.

Otros. Al ser una aplicacin novedosa no necesita adaptacin de datos externos.

Pg. 30

6.1.3.

Objetivos

A continuacin se enumeran y detallan los objetivos detectados en la toma de requerimientos que el aplicativo debe contemplar. Objetivo 1.- Gestin de Empleados El sistema deber gestionar los empleados existentes en la empresa, permitiendo al usuario del sistema administrar, realizar cambios en el conjunto de los empleados, aadir nuevos o modificar empleados. Objetivo 2.- Control de seguridad El Sistema deber encriptar todas las contraseas almacenadas en la base de datos, para evitar acceso directos a sta. Objetivo 3.- Gestin Software y Hardware El Sistema debe permitir la gestin la informacin referente al software y hardware, as como saber las unidades existentes de cada componente. Objetivo 4.- Gestin de Servicios y Proveedores El Sistema deber gestionar y cuidar los datos de las organizaciones proveedores y servicios , personas de contacto y facilidad para encontrar la informacin. Objetivo 5.- Gestin de Incidencias El Sistema deber permitir gestionar las incidencias producidas, as como un fcil acceso a ellos., as como poder llevar un listado de tareas por fechas, para facilitar el trabajo del tcnico. Objetivo 6.- Gestin de Empresas y Sedes El Sistema deber permitir gestionar la informacin referente a las empresas que gestiona y sus sedes.

6.1.4.

Requisitos funcionales

Gestin de Empleados El Tcnico es el encargado de registrar en el sistema a los empleados a gestionar, asignndole el software y hardware necesarios para poder desempear su trabajo, correos que usa, impresoras configuradas, sede en la que trabaja.... Objetivo asociado: Objetivo 1

Pg. 31

Gestin N-Ware El Tcnico es el encargado de gestionar el hardware que utilizan los empleados, controlado as el inventario existente. El Tcnico es el encargado de gestionar el software utilizado, as como, ficheros, guas, manuales, soluciones y estndares para la resolucin, configuracin o ampliacin de informacin de las incidencias, contraseas y usuarios las aplicaciones que as lo requieran. Para simplificar la documentacin, tratar al hardware y software denominndolo N-Ware, hasta llegar la punto donde sea necesario dividirlos para su implementacin, ya que su funcionamiento lgico es el mismo. Objetivos Asociados: Objetivo 2 y Objetivo 3 Gestin de Incidencias El Tcnico es el encargado de gestionar las incidencias producidas tanto de empleados, servicios de proveedores, hardware y software. Objetivo Asociado: Objetivo 5 Gestin de Servicios El Tcnico es el encargado de gestionar los servicios contratados con empresas externas. Objetivo Asociado: Objetivo 4 Gestin de Empresas El Tcnico es el encargado de gestionar las empresas y las sedes de una empresa, controlando sus empleados y los proveedores que le dan servicio. Objetivo Asociado: Objetivo 6

6.2.

Modelo de casos de uso

Un caso de uso especifica el comportamiento deseado del sistema, representan los requisitos funcionales del sistema, segn la definicin dada por C. Larman [5], un caso de uso es una coleccin de escenarios de xito y fracaso relacionado que describe a un actor que usa un sistema para conseguir un objetivo.

Pg. 32

6.2.1.

Diagrama de Caso de Uso

Figura 6.1. Diagrama de Casos de Uso

6.2.2.

Especificacin de los Casos de Uso

Caso de uso Validar Tcnico Descripcin: se valida usuario y contrasea de administrador tcnico. Actor: Tcnico. Resumen: El tcnico introduce nombre de administrador y contrasea para poder usar la aplicacin. Precondicin: Ninguna. Postcondicin: Se accede a la aplicacin. Escenario Principal: 1. El Tcnico introduce el nombre y contrasea. 2. El Sistema comprueba los datos. 3. El Tcnico accede a la aplicacin. Escenario Alternativo: 2a. Los datos introducido no son correctos. 1. El Sistema da la opcin de introducir nuevos valores.

Pg. 33

Caso de uso Gestin de Servicios Descripcin: se realiza la gestin de los servicios contratados. Actor: Tcnico. Resumen: El tcnico registra en el sistema los datos de un servicio y del proveedor prestador del servicio. Precondicin: Ninguna. Postcondicin: Se registra un nuevo servicio o se modifica uno existente. Escenario Principal: 1. El Tcnico introduce el nombre del servicio. 2. El Sistema registra el servicio. 3. El Tcnico consulta y modifica los valores del servicio. 4. El Sistema registra los cambios. Escenario Alternativo: 3a. El Servicio no tiene registrado ningn valor. 1. El Sistema da la opcin de introducir nuevos valores. Caso de uso Gestin de N-Ware Descripcin: se realiza la gestin de un componente hardware o software. Actor: Tcnico. Resumen: El tcnico registra en el sistema los datos de un componente. Precondicin: Debe existir una plantilla para cada tipo de componente. Postcondicin: Se registra un nuevo componente hardware o modifica un componente existente. Escenario Principal: 1. El Tcnico introduce el nmero de serie del componente. 2. El Sistema comprueba que es vlido.

Pg. 34

3. El Tcnico introduce los datos del componente. 4. El Sistema registra el componente. 5. El Tcnico consulta los datos del componente y los modifica.

Escenario Alternativo: 3a. El Programa no tiene registrado ningn valor. 1. El Sistema da la opcin de introducir nuevos valores.

Caso de uso Gestin de Incidencias Descripcin: se realiza la gestin de una incidencia. Actor: Tcnico. Resumen: El tcnico registra en el sistema los datos de una incidencia. Precondicin: Existencia del causante de la incidencia en el Sistema. Postcondicin: Se registra una nueva incidencia y se realizan diversas gestiones sobre l. Escenario Principal: 1. El Tcnico introduce los datos de una incidencia. 2. El Sistema registra la incidencia. 3. El Tcnico consulta y modifica los valores de la incidencia 4. El Sistema registra los cambios y la fecha y hora. Escenario Alternativo: 2a. La incidencia ya est registrado en el Sistema. 1. El Sistema muestra mensaje de error. 2. El Sistema pide al Tcnico que introduzca otro nombre.

Pg. 35

Caso de uso Gestin de Empleados Descripcin: se realiza la gestin de un empleado. Actor: Tcnico. Resumen: El tcnico registra en el sistema los datos fundamentales del empleado, as como las cuentas de correo que usa. Precondicin: Ninguna Postcondicin: Se registra un nuevo empleado y se realizan diversas gestiones sobre l. Escenario Principal: 1. El Tcnico introduce el nombre y apellidos del empleado. 2. El Sistema comprueba que no existe ese empleado. 3. El Tcnico introduce el resto de datos del empleado y fotografa personal. 4. El Sistema registra al empleado. 5. El Tcnico consulta los datos del empleado y los modifica. Escenario Alternativo: 2a. El empleado ya est registrado en el Sistema. 1. El Sistema muestra mensaje de error. 2. El Sistema pide al Tcnico que introduzca otro nombre y apellidos.

Caso de Uso de Gestin de Empresas Descripcin: se realiza la gestin de una empresa. Actor: Tcnico. Resumen: El tcnico registra en el sistema los datos de un empresa. Precondicin: Ninguna. Postcondicin: Se registra un nueva empresa y se realizan diversas gestiones sobre l.

Pg. 36

Escenario Principal: 1. El Tcnico introduce los datos de una empresa. 2. El Sistema registra la empresa. 3. El Tcnico consulta y modifica los valores de la empresa. 4. El Sistema registra los cambios. Escenario Alternativo: 3a. El Programa no tiene registrado ningn valor. 1. El Sistema da la opcin de introducir nuevos valores.

6.3.

Modelo Conceptual de Datos

Es la representacin de los conceptos (objetos) significativos en el dominio del problema: Modela los requisitos de datos de un sistema Describe las estructuras de datos de un sistema y las relaciones estticas que existen entre ellos.

6.3.1.

Diagrama Conceptual de Datos

Figura 6.2. Diagrama Conceptual de Datos

Pg. 37

Restricciones de Integridad: Clave Externa: (Incidencias, id), (Sede, id), (Empleado, id), (N-ware, id), (Servicio,id), (Incidencia,id). Una Incidencia puede ser generada por un empleado, un n-ware, un servicio o una combinacin de ellos.

Suposiciones: Al menos hay un empleado en una sede.

Aclaracin: El Funcionamiento de las sedes es idntico al de empresas.

Pg. 38

6.4.
6.4.1.

Modelo de Comportamiento del Sistema


Diagrama de Secuencias del Sistema y Contrato de las Operaciones

En esta seccin aparecern todos los contratos de las operaciones obtenidas a travs de los resultados anteriores.

Gestin Servicio

Figura 6.3. Diagrama de Secuencias del Sistema Gestin Servicios

Operacin: Introducir nombre_servicio (w_nombre)

Responsabilidades: Iniciar el registro de un servicio Referencias cruzadas: Caso de uso: Gestin Servicio Precondiciones: No existe un objeto de la clase Servicio con nombre=w_nombre Postcondiciones: Se cre una instancia S de Servicio.
Pg. 39

Se asign w_nombre a S.nombre.

Operacin: Introducir datos (w_id)

Responsabilidades: Registrar los datos del servicio. Referencias cruzadas: Caso de uso: Gestin servicio Precondiciones: Existe un servicio en curso S. Postcondiciones: Se asign w_id a S.id.

Gestin N-Ware

Figura 6.4. Diagrama de Secuencias del Sistema Gestin N-Ware

Operacin: Introducir nombre_componente (w_nombre)

Responsabilidades: Iniciar el registro de un componente Referencias cruzadas: Caso de uso: Gestin n-ware

Pg. 40

Precondiciones: No existe un objeto de la clase N-ware con numserie=w_numserie Postcondiciones: Se cre una instancia N de N-ware. Se asign w_numserie a N.numserie.

Operacin: Introducir datos (w_id)

Responsabilidades: Registrar los datos del componente. Referencias cruzadas: Caso de uso: Gestin componente Precondiciones: Existe un componente en curso N. Postcondiciones: Se asign w_id a N.id.

Pg. 41

Gestin Incidencia

Figura 6.5. Diagrama de Secuencias del Sistema Gestin Incidencia

Operacin: Introducir nombre_incidencia (w_nombre)

Responsabilidades: Iniciar el registro de una nueva incidencia. Referencias cruzadas: Caso de uso: Gestin Incidencia. Precondiciones: No existe un objeto de la clase Incidencia con nombre=w_nombre Postcondiciones: Se cre una instancia I de Incidencia. Se asign w_nombre a I.nombre.

Operacin: Consulta datos (w_id, w_fecha, w_hora)

Responsabilidades: Registrar los datos generales de la Incidencia. Referencias cruzadas: Caso de uso: Gestin Incidencia Precondiciones:
Pg. 42

Existe una Incidencia en curso I. Postcondiciones: Se asign w_id a I.id. Se asign w_fecha a I.fecha. Se asign w_hora a I.hora.

Gestin de Empleados

Figura 6.6. Diagrama de Secuencias del Sistema Gestin Empleados

Operacin: Introducir nombre_empleado (w_nombre,w_apellidos)

Responsabilidades: Iniciar el registro de un empleado Referencias cruzadas: Caso de uso: Gestin empleado Precondiciones: No existe un objeto de la clase Empleado con nombre=w_nombre y apellidos=w_apellidos Postcondiciones: Se cre una instancia Em de Empleado.

Pg. 43

Se asign w_nombre a Em.nombre y w_apellidos a Em.apellidos

Operacin: Introducir datos (w_id)

Responsabilidades: Registrar los datos del empleado. Referencias cruzadas: Caso de uso: Gestin Empleado Precondiciones: Existe un empleado en curso Em. Postcondiciones: Se asign w_id a U.id.

Gestin Empresa

Figura 6.7. Diagrama de Secuencias del Sistema Gestin Empresa

Pg. 44

Operacin: Introducir nombre_empresa (w_nombre)

Responsabilidades: Iniciar el registro de una empresa Referencias cruzadas: Caso de uso: Gestin Empresa Precondiciones: No existe un objeto de la clase Empresa con nombre=w_nombre Postcondiciones: Se cre una instancia E de Empresa. Se asign w_nombre a E.nombre.

Operacin: Introducir datos (w_id)

Responsabilidades: Registrar los datos de la empresa. Referencias cruzadas: Caso de uso: Gestin Empresa Precondiciones: Existe una empresa en curso E. Postcondiciones: Se asign w_id a E.id.

Pg. 45

Captulo 7

Diseo del Sistema


En este captulo definiremos el sistema de manera que lleguemos al suficiente detalle para que se pueda implementar. Para ello, abordar los siguientes apartados: 1. Arquitectura del sistema software. 2. Diseo de la capa de presentacin. 3. Diseo de la capa de dominio: Para toda la gestin necesaria en esta capa, necesitaremos cumplir subobjetivos de diseo, por ello me apoyo en los siguientes mecanismos de diseo para facilitar la construccin de esta capa: Diagrama de clases de diseo. Enumeracin de nuevas clases y relaciones. Diagramas de secuencia. Especificacin de las operaciones de diseo.

4. Diseo de la capa de gestin de datos.

Pg. 46

7.1.

Arquitectura del Sistema Software

Utilizaremos la arquitectura de tres capas o niveles en el que el objetivo primordial es la separacin de la lgica de negocios, de la lgica de diseo. La ventaja principal de este estilo es que el desarrollo se puede llevar a cabo en varios niveles y, en caso de que sobrevenga algn cambio, slo se ataca al nivel requerido. Modelo Vista Controlador (MVC) es un patrn de arquitectura de software que separa los datos de una aplicacin, la interfaz de usuario, y la lgica de negocio en tres componentes distintos. Modelo: Esta es la representacin especfica de la informacin con la cual el sistema opera. Vista: Este presenta el modelo en un formato adecuado para interactuar, usualmente la interfaz de usuario. Controlador: Este responde a eventos, usualmente acciones del usuario, e invoca peticiones al modelo.

7.2.

Diseo de la capa de presentacin

Es la que ve el usuario, por lo que tambin se la denomina "capa de usuario", presenta el sistema al usuario, le comunica la informacin y captura la informacin del usuario en un mnimo de proceso (realiza un filtrado previo para comprobar que no hay errores de formato). Tambin es conocida como interfaz grfica y debe tener la caracterstica de ser entendible y fcil de usar para el usuario. Esta capa se comunica nicamente con la capa de negocio. A continuacin muestro una serie de bocetos realizados antes de la implementacin, en ellas, muestro de forma general las opciones y posibilidades que quiero que tenga una vez finalizada el entorno de usuario.

Figura 7.1. Boceto pgina principal

Figura 7.2. Boceto pginas de gestin

Pg. 47

Figura 7.3. Estructura de las pginas de gestin

Figura 7.4. Boceto gestin de correos electrnicos

Figura 7.5. Boceto gestin de empleados

Pg. 48

7.3.

Diseo de la capa de dominio

Es donde residen los programas que se ejecutan, se reciben las peticiones del usuario y se envan las respuestas tras el proceso. Se denomina tambin capa de negocio porque es aqu donde se establecen todas las reglas que deben cumplirse. Esta capa se comunica con la capa de presentacin, para recibir las solicitudes y presentar los resultados, y con la capa de datos, para solicitar al gestor de base de datos almacenar o recuperar datos de l. La capa de dominio sabe cmo satisfacer las peticiones del usuario, pero ignora dnde se guardan los datos y cmo se presentan al usuario.

7.4.
7.4.1.

Modelo de Diseo
Diagrama de Interaccin Gestin Men Principal

Siguiendo el patrn Controlador voy a utilizar una clase de control para cada opcin de men principal.

Figura 7.6. Diagrama de Interaccin Gestin Men Principal

Para ejecutar la aplicacin, se crea un objeto de la clase Sistema Control y se ejecuta una operacin de esa clase que invoca a la operacin Mostrar P_menu de la clase Pantalla Men. La operacin Mostrar P_menu se encarga de mostrar la pantalla del men de la aplicacin, aunque en realidad lo
Pg. 49

que hace es invocar a otras operaciones de las clases de la parte de interfaz de usuario para mostrar la pantalla con el men de la aplicacin. Cuando se muestra la pantalla del men de opciones, se est a la espera de que se produzca algn evento. El evento que se produce en este caso es que el usuario seleccione una de las opciones del men opc. En funcin de la opcin del submen que el usuario seleccione, se crea un objeto de la clase de control que controla la accin asociada a la opcin seleccionada, caso de uso. Siguiendo el patrn Controlador voy a utilizar una clase de control para cada opcin de men principal

7.4.2.

Diagrama de Interaccin CU: Gestin Servicio

Figura 7.7. Diagrama de Interaccin CU Gestin Servicio

Pg. 50

7.4.3.

Diagrama de Interaccin CU: Gestin N-Ware

Figura 7.8. Diagrama de Interaccin CU Gestin N-Ware

7.4.4.

Diagrama de Interaccin CU: Gestin Incidencias

Figura 7.9. Diagrama de Interaccin CU Gestin Incidencias

Pg. 51

7.4.5.

Diagrama de Interaccin CU: Gestin Empleados

Figura 7.10. Diagrama de Interaccin CU Gestin Empleados

7.4.6.

Diagrama de Interaccin CU: Gestin Empresas

Figura 7.11. Diagrama de Interaccin CU Gestin Empresas

Pg. 52

7.4.7.

Nuevas clases y relaciones

A continuacin indico las clases de control y clases de la interfaz de usuario. PantallaMen. SistemaControl. Gestin Servicio. Gestin N-Ware. Gestin Incidencia. Gestin Empleado. Gestin Empresa. Pantalla GestinServicio. Pantalla GestinN-Ware. Pantalla GestinIncidencia. Pantalla GestinEmpleado. Pantalla GestinEmpresa. GestinServicio Control. GestinN-Ware Control. GestinIncidencia Control. GestinEmpleado Control. GestinEmpresa Control.

7.4.8.

Colaboraciones entre Objetos


Pantalla Men y Sistema Control. Sistema Control y Gestin Servicio.

Pg. 53

Sistema Control y Gestin N-Ware. Sistema Control y Gestin Incidencia. Sistema Control y Gestin Empleado. Sistema Control y Gestin Empresa. Pantalla GestinServicio y GestinServicio Control. GestinServicio Control y Servicio. Pantalla GestinN-Ware y GestinN-Ware Control. GestinN-Ware Control y N-Ware. Pantalla GestinIncidencia y GestinIncidencia Control. GestinIncidencia Control e Incidencia. Pantalla GestinEmpleado y GestinEmpleado Control. GestinEmpleado Control y Empleado. Pantalla GestinEmpresa y GestinEmpresa Control. GestinEmpresa Control y Empresa.

7.4.9.

Especificacin de las operaciones de diseo


Clase Sistema Control

Operacin que se ejecuta al hacer new.SistemaControl. Esta operacin invoca a la operacin Mostrar P-men de la clase Pantalla Men. Operacin Opcin seleccinada (opc). Invoca a la operacin Create () de la clase de control asociada a la opcin seleccionada. Clase Pantalla Men

Operacin Mostrar P-men. Esta operacin muestra la pantalla del men principal de la aplicacin.

Pg. 54

Clase GestinServicio Control

Operacin que se ejecuta al hacer new.GestinServicio Control Invoca a la operacin Mostrar P_GestinServicio

Operacin Introducir_nombre_servicio (w_nombre) Invoca a la operacin existe=Consultar(w_nombre) Invoca a la operacin Create(w_nombre) de la clase Servicio.

Operacin Introducir_datos (w_id) Invoca a la operacin ActualizarDatosServicio (w_id) del objeto S de Servicio.

Gestin Servicio Comprueba que no exista un servicio con

Operacin existe=Consultar(w_nombre): nombre=w_nombre.

Operacin Create(w_nombre): Crea un objeto S de la clase Servicio con nombre=w_nombre. Operacin ActualizarDatosServicio (w_id) Invoca a las operaciones de asignacin de valores a los atributos del objeto S de Servicio ActId (w_id) Clase GestinN-Ware Control

Operacin que se ejecuta al hacer new.GestinN-Ware Control Invoca a la operacin Mostrar P_GestinN-Ware

Operacin Introducir_numserie_n-ware (w_numserie) Invoca a la operacin existe=Consultar(w_numserie) Invoca a la operacin Create(w_numserie) de la clase N-Ware.

Operacin Introducir_datos (w_id) Invoca a la operacin ActualizarDatosN-Ware (w_id) del objeto N de N-Ware.

Pg. 55

Clase Gestin N-Ware Comprueba que no exista un n_ware con

Operacin existe=Consultar(w_numserie): numserie=w_numserie .

Operacin Create(w_numserie): Crea un objeto N de la clase N-Ware con numserie=w_numserie . Operacin ActualizarDatosN-Ware (w_id) Invoca a las operaciones de asignacin de valores a los atributos del objeto N de NWare ActId (w_id)

Clase GestinIncidencia Control

Operacin que se ejecuta al hacer new.GestinIncidencia Control Invoca a la operacin Mostrar P_GestinIncidencia

Operacin Introducir_nombre_incidencia (w_nombre) Invoca a la operacin existe=Consultar(w_nombre) Invoca a la operacin Create(w_nombre) de la clase Incidencia.

Operacin Introducir_datos (w_id, w_fecha, w_hora) Invoca a la operacin ActualizarDatosIncidencia (w_id, w_fecha, w_hora) del objeto I de Incidencia.

Clase Gestin Incidencia

Operacin existe=Consultar(w_nombre): Comprueba que no exista una incidencia con nombre=w_nombre. Operacin Create(w_nombre): Crea un objeto I de la clase Incidencia con nombre=w_nombre. Operacin ActualizarDatosIncidencia (w_id, w_fecha, w_hora) Invoca a las operaciones de asignacin de valores a los atributos del objeto Incidencia I ActId (w_id)
Pg. 56

ActFecha (w_fecha) ActHora (w_hora) Clase GestinEmpleado Control

Operacin que se ejecuta al hacer new.GestinEmpleado Control Invoca a la operacin Mostrar P_GestinEmpleado

Operacin Introducir_nombre_empleado (w_nombre, w_apellidos) Invoca a la operacin existe=Consultar(w_nombre) Invoca a la operacin Create(w_nombre, w_apelidos) de la clase Ususario.

Operacin Introducir_datos (w_id) Invoca a la operacin ActualizarDatosUsusario (w_id) del objeto Em de Empleado.

Clase Gestin Empleado

Operacin existe=Consultar(w_nombre,w_apellidos): Comprueba que no exista un empelado con nombre=w_nombre y apellidos=w_apellidos. Operacin Create(w_nombre, w_apellidos): Crea un objeto Em de la clase Empleado con nombre=w_nombre y apellidos=w_apellidos. Operacin ActualizarDatosEmpleado (w_id) Invoca a las operaciones de asignacin de valores a los atributos del objeto Em de Empleado ActId (w_id) Clase GestinEmpresa Control

Operacin que se ejecuta al hacer new.GestinEmpresa Control Invoca a la operacin Mostrar P_GestinEmpresa

Operacin Introducir_nombre_empresa (w_nombre) Invoca a la operacin existe=Consultar(w_nombre) Invoca a la operacin Create(w_nombre) de la clase Empresa.
Pg. 57

Operacin Introducir_datos (w_id) Invoca a la operacin ActualizarDatosEmpresa (w_id) del objeto E de Empresa.

Clase Gestin Empresa

Operacin existe=Consultar(w_nombre): Comprueba que no exista una empresa con nombre=w_nombre. Operacin Create(w_nombre): Crea un objeto E de la clase Empresa con nombre=w_nombre. Operacin ActualizarDatosEmpresa (w_id) Invoca a las operaciones de asignacin de valores a los atributos del objeto E de Empresa ActId (w_id)

7.4.10.

Diseo de la capa de gestin de datos

En esta capa es donde residen los datos y es la encargada de acceder a los mismos. Est formada por uno o ms gestores de bases de datos, en mi caso SQLite [6], que realizan todo el almacenamiento de datos, reciben solicitudes de almacenamiento o recuperacin de informacin desde la capa de negocio.

Pg. 58

7.5.

Bases de Datos

El contenido hace referencia a la creacin de un sistema de gestin para gestionar todos los aspectos del tcnico de soporte o rea de soporte tcnico dentro de una organizacin, para as controlar y poder tomar decisiones futuras mejorando del funcionamiento de dicha organizacin.

7.5.1

Descripcin del problema

Con Soporte Tcnico quiero almacenar y gestionar la informacin relacionada con los empleados y dispositivos de una organizacin o pequea empresa. A travs de mi experiencia personal, he dividido estas tareas en diferentes unidades de gestin. Para la obtencin de las diferentes funcionalidades me he basado en la variada documentacin, listados, hojas de clculo, etc... realizados durante mi periodo de prcticas de empresa.

7.5.2.

Recogida de datos

Toda la informacin de Soporte Tcnico debe ser introducida por el tcnico de sistemas o de soporte, sto implica un nivel medio en conocimientos informticos para la correcta descripcin de los diferentes problemas. A continuacin expongo algunas imgenes de mi trabajo diario para el desempeo del rea de sistemas sin la utilizacin de un software de gestin, relacionado con el soporte tcnico.

Figura 7.12. Hoja de Calculo de empleados, IP, contraseas y telfonos

Pg. 59

Mediante la Figura 7.12 gestionaba: Inventario de recursos utilizados. Control de IP. Gestin de informacin de empleados. Control de contraseas en software de gestin. Informacin de las diferentes sedes.

Figura 7.13. Listado de telfonos internos

Gestin de los nmeros de telfonos internos de la empresa. Figura 7.13.

Figura 7.14. Listado de aplicaciones relacionados con la seguridad

Software relacionado con la seguridad de los equipos informticos. Figura 7.14.

Figura 7.15. Listado de aplicaciones relacionadas con incidencias

Listado de diferentes aplicaciones relacionadas con la solucin a diferentes incidencia. Figura 7.15.
Pg. 60

Figura 7.16. Listado de carpetas de controladores

Carpeta con informacin de diferentes controladores necesarios para el funcionamiento de los equipos informticos. Figura 7.16.

Figura 7.17. Listado de aplicaciones para nuevos equipos

Listado de programas a instalar en un ordenador de nueva adquisicin o por el formateo de un equipo estropeado para que ste pueda ser utilizado por un nuevo empleado. Figura 7.17.

Figura 7.18. Hoja de calculo de tner y cartuchos

Gestin de la compra de tner y cartuchos para las impresoras y fotocopiadoras. Figura 7.18.

Pg. 61

Figura 7.19. Listado de fxes

Gestin de los fxes de la empresa y su situacin fsica. Figura 7.19.

Figura 7.20. Listado con informacin de servidores

Control de Servidores, informacin sobre stos. Figura 7.20.

Figura 7.21. Documento de texto con los correos electrnicos

Listado de cuentas de correos de los empleados y proveedores de la empresa. Figura 7.21.


Pg. 62

Figura 7.22. Plantilla informe de ordenador

Formulario para el control inicial de la situacin de un ordenador. Figura 7.22.

Figura 7.23. Listado de tareas

Listados de tareas llevadas acabo de forma diaria. Figura 7.23.

Pg. 63

Tras el estudio de varios documentos y de los aqu expuestos, es necesario una gestin integral, mejorando as la calidad y la eficiencia de trabajo del tcnico de sistema, encargado de gestionar y controlar esta informacin, mejorando as el funcionamiento general de la organizacin.

7.5.3.

Restricciones semnticas
Un empleado slo puede pertenecer a una empresa. Una incidencia puede pertenecer a un Servicio, un N-Ware, un Empleado , un Servicio o una combinacin de ellas.

7.5.4.

Consultas ms frecuentes

Las consultas frecuentes son aquellos accesos a la base de datos mas utilizados por el tcnico, usuario del software. Con un estudio de estas consultas podemos estructurar la base de datos fsicamente de forma ms eficiente, para as, obtener un tiempo de respuesta optimo. 1. Listado de incidencias por fecha. 2. Mostrar correos electrnicos. 3. Listado de hardware por empleado. 4. Obtener IP. 5. Listado de Servicios.

7.5.4.1.

Especificacin

Tipo de operacin en cada fichero.


Atributos sobre los que se aplica condiciones de seleccin para operaciones de eliminacin o de

modificacin. Atributos cuyos valores alterarn una operacin de modificacin.

Pg. 64

Tabla 7.1. Consultas ms frecuentes

Consulta 1 2 3 4 5

Operacin Consulta Consulta Consulta Consulta Consulta

Atributo Seleccin inci_id usua_id hard_id hard_id serv_ id

Atributo Operacin inci_fecha usua_mail hard_usua_id hard_ip serv_prov

7.5.5.
7.5.5.1.

Diseo Conceptual
Descripcin de los tipos de entidades

Servicios: Conjunto de Servicios que una organizacin necesita parar poder funcionar diariamente. N-Ware: Conjunto de Hardware y Software utilizados en la organizacin. Incidencias: Registro de los problemas que van surgiendo. Empleados: Informacin de los empleados a registrar en el sistema. Empresas: Empresas que el sistema gestiona. Sedes: Organizacin dependiente de Empresa.

7.5.5.2.

Descripcin de los tipos de atributos

SERVICIOS: serv_id: identificador nico de un servicio. serv_tematica: temtica de un determinado servicio. serv_contrato: ruta del contrato de un determinado servicio.

Pg. 65

serv_documento: ruta de un documento de un servicio. serv_descripcion: descripcin de un servicio. serv_comentario: comentarios de un servicio. serv_nombre: nombre de un determinado servicio. serv_coste: coste de un servicio. serv_fecha: fecha de inicio de un contrato de un servicio. serv_periodo: duracin en meses de un contrato de un servicio serv_ncontable: nmero contable. serv_estaborrado: valor de control booleano para no eliminar datos, en cuyo caso, peligrara la integridad del sistema. N-WARE: soft_id: identificador nico de un software. soft_nombre: nombre de un software. soft_fabricante: fabricante de un software. soft_web: pgina web de un software. soft_doc: ruta de un documento de un software. soft_version: versin de un software. soft_so: versin de un sistema operativo. soft_archivo: ruta de un archivo de un software. soft_comentarios: comentarios de un software. soft_estaborrado: valor de control booleano para no eliminar datos, en cuyo caso, peligrara la integridad del sistema. soft_descripcion: descripcin de un software. soft_nserie: nmero de serie de un software hard_id: identificador nico de un hardware.
Pg. 66

hard_usua_id: identificador nico de un empleado. hard_nombre: nombre del hardware. hard_modelo: modelo del hardware. hard_fabricante: fabricante del hardware. hard_nserie: nmero de serie del hardware. hard_codbarra: cdigo de barras del hardware. hard_almacenado: lugar de almacenamiento del hardware hard_comentario: comentario del hardware hard_empresa_id: identificador nico de empresa. hard_estado: estado en que se encuentra un hardware. hard_dpto: departamento en el que esta situado el hardware. hard_fechacompra: fecha de compra del hardware. hard_doc: ruta de un documento de un hardware. hard_web: pgina web de un hardware. hard_estaborrado: valor de control booleano para no eliminar datos, en cuyo caso, peligrara la integridad del sistema. hard_usuario: nombre de usuario para acceder a un hardware. hard_pass: contrasea para acceder a un hardware. hard_tlf: nmero de telfono de un hardware. hard_pulgadas: tamao en pulgadas de un hardware. hard_microfono: valor booleano que indica si un hardware contiene o no, micrfono. hard_DVI: valor booleano que indica si un hardware contiene o no, DVI. hard_HDMI: valor booleano que indica si un hardware contiene o no, HDMI. hard_altavoz: valor booleano que indica si un hardware contiene o no, altavoz.

Pg. 67

hard_serie: valor booleano que indica si un hardware contiene o no, puerto serie. hard_paralelo: valor booleano que indica si un hardware contiene o no, puerto paralelo. hard_USB: valor booleano que indica si un hardware contiene o no, USB. hard_ethernet: valor booleano que indica si un hardware contiene o no, puerto ethernet. hard_wifi: valor booleano que indica si un hardware contiene o no, tarjeta wifi. hard_tipo_impresora: nombre del tipo de impresora. hard_tipo_elecred: nombre del tipo de electrnica de red. hard_dominio: nombre del dominio de un hardware. hard_SO: nombre del sistema operativo del hardware. hard_SP: nmero de Service Pack de un hardware. hard_versionso: versin del sistema operativo de un hardware. hard_keyso: nmero de serie de un hardware. hard_RAM: capacidad de memoria del hardware. hard_ip: direccin IP del hardware. hard_MAC: identificador MAC de un hardware. hard_micro: capacidad del microprocesador de un hardware. hard_PIN: identificador PIN del hardware. hard_PUNK: identificador PUNK del hardware. hard_SIM: identificador SIM del hardware. hard_tipo_PC: nombre del tipo de PC del hardware. hard_PS2: valor booleano que indica si un hardware contiene o no, puerto PS/2. hard_ip2: direccin IP del hardware. hard_color: valor booleano que indica si un hardware contiene o no, color. hard_GB: capacidad en GB de un hardware.
Pg. 68

hard_tipo_cartucho: nombre del tipo de cartucho de un hardware. INCIDENCIAS: inci_id: identificador nico de una incidencia. inci_serv_id: identificador nico de un servicio. inci_usua_id: identificador nico de un empleado. inci_hard_id: identificador nico de software. inci_soft_id: identificador nico de hardware. inci_estado: nombre del estado en que se encuentra una incidencia. inci_fecha: da de creacin de la incidencia. inci_hora: hora de creacin de la incidencia. inci_titulo: titulo de la incidencia. inci_descripcion: descripcin de la incidencia. inci_tipo: nombre del tipo de incidencia. inci_origen: origen de la inciencia. inci_enlazar: identificador de otra incidencia con la que esta relacionada. inci_estaborrado: valor de control booleano para no eliminar datos, en cuyo caso, peligrara la integridad del sistema. inci_numincidencia: nmero de incidencia externa. inci_solucion: descripcin de la solucin dada a la inciencia. inci_doc1: ruta de un documento de un servicio. inci_doc2: ruta de un documento de un servicio. EMPLEADOS: usua_id: identificador nico de un empleado. usua_nombre: nombre del empleado.

Pg. 69

usua_apellidos: apellidos del empleado. usua_tlf: nmero de telfono del empleado. usua_tlfinterno: nmero de telfono interno del empleado. usua_movil: nmero de telfono mvil del empleado. usua_cargo: cargo del empleado. usua_dpto: nombre del departamento del empleado. usua_estaborrado: valor de control booleano para no eliminar datos, en cuyo caso, peligrara la integridad del sistema. usua_foto: ruta de una foto del empleado. EMPRESAS: empr_id: identificador nico de una empresa. empr_nombre: nombre de la empresa. empr_tlf1: nmero de telfono de la empresa. empr_tlf2: nmero de telfono de la empresa. empr_web: pgina web de la empresa. empr_email: correo electrnico de la empresa. empr_direccion: direccin fsica de la empresa. empr_CP: cdigo postal de la empresa. empr_ciudad: ciudad de la empresa. empr_provincia: provincia de la empresa. empr_logo: ruta del logotipo de la empresa. empr_fax: nmero de fax de la empresa. empr_estaborrado: valor de control booleano para no eliminar datos, en cuyo caso, peligrara la integridad del sistema. empr_CIF: Nmero de CIF de la empresa.
Pg. 70

SEDES: sede_id: identificador nico de una sede. sede_empr_id: identificador nico de empresa. sede_nombre: nombre de la sede. sede_tlf1: nmero de telfono de la sede. sede_tlf2: nmero de telfono de la sede. sede_web: pgina web de la sede. sede_email: correo electrnico de la sede. sede_direccion: direccin fsica de la sede. sede_CP: cdigo postal de la sede. sede_ciudad: ciudad de la sede. sede_provincia: provincia de la sede. sede_logo: ruta del logotipo de la sede. sede_fax: nmero de fax de la sede. sede_estaborrado: valor de control booleano para no eliminar datos, en cuyo caso, peligrara la integridad del sistema. sede_CIF: Nmero de CIF de la sede.

Pg. 71

De entre las claves candidatas, que he supuesto convenientes, he seleccionado la clave primaria de cada entidad: Tabla 7.2. Atributos y Claves primarias Clave Primaria SERVICIOS N-WARE INCIDENCIAS EMPLEADOS EMPRESAS SEDES serv_id soft_id, hard_id inci_id usua_id empr_id sede_id

7.5.6.
7.5.6.1.

Diseo Lgico
Modelo Relacional

Figura 7.24. Modelo Relacional Soporte Tcnico

Quedando la base de datos de la siguiente forma, ya normalizadas: EMPRESAS (empr_id, empr_nombre, empr_tlf1, empr_tlf2, empr_web, empr_email, empr_direccion, empr_CP, empr_ciudad,empr_provincia, empr_logo, empr_fax, empr_estaborrado, empr_CIF)
Pg. 72

SEDES (sede_id, sede_empr_id, sede_nombre, sede_tlf1, sede_tlf2, sede_web, sede_email, sede_direccion, sede_CP, sede_ciudad,sede_provincia, sede_logo, sede_fax, sede_estaborrado, sede_CIF) EMPLEADOS (usua_id, usua_nombre, usua_apellidos, usua_tlf, usua_tlfinterno, usua_movil, usua_cargo, usua_dpto, usua_estaborrado, usua_foto, usua_email) SERVICIOS (serv_id, serv_tematica, serv_contrato, serv_documento, serv_descripcion, serv_comentario, serv_nombre, serv_coste, serv_fecha, serv_periodo, serv_ncontable, serv_estaborrado) N-WARE (soft_id, soft_nombre, soft_fabricante, soft_web, soft_doc, soft_version, soft_so, soft_archivo, soft_comentarios, soft_estaborrado, soft_descripcion, soft_nserie, hard_id, hard_usua_id, hard_nombre, hard_modelo, hard_fabricante, hard_nserie, hard_codbarra, hard_almacenado, hard_comentario, hard_empresa_id, hard_estado, hard_dpto, hard_fechacompra, hard_doc, hard_web, hard_estaborrado, hard_usuario, hard_pass, hard_tlf, hard_pulgadas, hard_microfono, hard_DVI, hard_HDMI, hard_altavoz, hard_serie, hard_paralelo, hard_USB, hard_ethernet, hard_wifi, hard_tipo_impresora, hard_tipo_elecred, hard_dominio, hard_SO, hard_SP, hard_versionso, hard_keyso, hard_RAM, hard_ip, hard_MAC, hard_micro, hard_PIN, hard_PUNK, hard_SIM, hard_tipo_PC, hard_PS2, hard_ip2, hard_color, hard_GB, hard_tipo_cartucho) INICIDENCIAS (inci_id, inci_serv_id, inci_usua_id, inci_hard_id, inci_soft_id, inci_estado, inci_fecha, inci_hora, inci_titulo, inci_descripcion, inci_tipo, inci_origen, inci_enlazar, inci_estaborrado, inci_numincidencia, inci_solucion, inci_doc1, inci_doc2)

7.5.7.
7.5.7.1.

Diseo Fsico
ndices

Los ndices estn ordenados y son algo similar al ndice de palabras de un libro en donde cada palabra viene acompaada de una lista de nmeros de pgina en donde aparece la palabra. Para hacer una bsqueda se puede recurrir al ndice o bien hacer una bsqueda lineal a lo largo de todo el libro. Un ndice es un fichero ordenado cuyos registros tienen dos campos: el campo sobre el que se define el ndice denominado campo de indexacin (un campo de los registros del fichero de datos) y una direccin de bloque en disco. Los valores del ndice estn ordenados, de modo que se puede utilizar la bsqueda binaria. Hay varios tipos de ndices: ndices primarios, ndices de agrupamiento e ndices secundarios. ndices primarios

Pg. 73

Si un fichero est ordenado por un campo clave, el ndice que se define sobre este campo es un ndice primario. Sobre un fichero ordenado por clave slo puede definirse un ndice primario. Un ndice primario es un fichero ordenado cuyos registros son de longitud fija y tienen dos campos: el campo de ordenacin del fichero de datos (hay un valor nico de este campo para cada registro) y un puntero a un bloque del disco (una direccin de bloque). El campo de ordenacin se suele denominar clave. Hay una entrada (registro) en el ndice por cada bloque del fichero de datos. Cada entrada tiene el valor de la clave del ltimo registro del bloque y un puntero a dicho bloque. Los ndices primarios utilizados en la base de datos del software Soporte Tcnico, son los siguientes: Nota: Llegados a este punto N-Ware lo divido en dos tablas, Software y Hardware, para clarificar el diseo de las tablas, considerando as la implementacin ms adecuada.
Tabla 7.3. ndices primarios

Tabla SERVICIO SOFTWARE HARDWARE INCIDENCIAS EMPLEADOS EMPRESAS SEDES

Clave Primaria serv_id soft_id hard_id inci_id usua_id empr_id sede_id

Tambin existe la tabla configuracin, donde almaceno, entre otros datos de configuracin, los datos del administrador para su correcto acceso al programa.

7.5.8.

Clusulas de Base de Datos

Formato estndar para crear tablas:


CREATE TABLE [esquema.]nom_tabla [restriccion_tabla] (nom_columna tipo_dato [default expresion] [restriccin_columna | restriccion_tabla] [,nom_columna ])

Pg. 74

[[pctree entero | pctused entero | initrans entero | maxtrans entero | tablespace nom_tablespace | storage clusula] | cluster nom_agrupaineto (nom_columna [,nom_columna])] | enable clusula | disable clausula | | [AS subconsulta] esquema: es el nombre del esquema donde se va a crear la tabla. Si no se especifica nada, la tabla

se crear en nuestro esquema, por defecto.


nom_tabla: es el nombre que le vamos a dar a la tabla y ser nico dentro del esquema donde se

va a crear.
nom_columna: Es el nombre de cada columna, ser nico dentro de la misma tabla y sigue la

mismas reglas que los nombres de los objetos.


tipo_dato: es el tipo de dato que va a soportar la columna en cuestin restriccion_columna y restriccin_tabla: son las restricciones de columna y de tabla

impuestas.
pctfree: especifica el porcentaje de espacio libre en cada uno de los bloques de datos de la tabla

que se utilizan para las modificaciones de los registros.


pctused: indica el porcentaje mnimo de espacio para cada bloque de datos de la tabla initrans: especifica el nmero inicial de transacciones de entrada dentro de cada bloque de

datos de la tabla.
maxtrans: especifica el nmero mximo de transacciones concurrentes que pueden modificar

un bloque de datos de la tabla.


tablespace: indica en qu espacio lgico queremos que se almacene nuestro objeto o bien, no

se especifica nada y se crear en el tablespace por defecto que tengamos asignado.


storage: especifica las caractersticas de almacenamiento de la table. cluster: nombre del agrupamiento si la tabla forma parte de uno. enable: habilita una restriccin de integridad. Disable: deshabilita una restriccin de integridad. As subconsulta: Inserta los registros procedentes de la tabla resultante de la consulta.

Pg. 75

Ejemplo de tablas creada en Soporte Tcnico:


CREATE TABLE "servicios" ("serv_id" INTEGER PRIMARY KEY NOT NULL ,"serv_prov_id" INTEGER,"serv_tematica" VARCHAR,"serv_contrato" VARCHAR,"serv_documento" VARCHAR,"serv_descripcion" VARCHAR,"serv_comentario" VARCHAR,"serv_nombre" VARCHAR,"serv_coste" DOUBLE,"serv_fecha" DATETIME,"serv_periodo" INTEGER,"serv_ncontable" VARCHAR,"serv_alerta" BOOL DEFAULT (0) ,"serv_estaborrado" BOOL DEFAULT (0) ) CREATE TABLE "software" ("soft_id" INTEGER PRIMARY KEY NOT NULL ,"soft_prov_id" INTEGER,"soft_nombre" VARCHAR,"soft_fabricante" VARCHAR,"soft_web" VARCHAR,"soft_doc" VARCHAR,"soft_version" VARCHAR,"soft_so" VARCHAR,"soft_archivo" VARCHAR,"soft_comentarios" TEXT,"soft_estaborrado" BOOL DEFAULT (0) ,"soft_descripcion" TEXT,"soft_cat_id" INTEGER,"soft_hard_id" INTEGER, "soft_nserie" VARCHAR)Software CREATE TABLE "incidencias" ("inci_id" INTEGER PRIMARY KEY NOT NULL ,"inci_serv_id" INTEGER,"inci_usua_id" INTEGER,"inci_hard_id" INTEGER,"inci_soft_id" INTEGER,"inci_estado" VARCHAR,"inci_fecha" DATETIME DEFAULT (CURRENT_DATE) ,"inci_hora" DATETIME DEFAULT (CURRENT_TIME) ,"inci_titulo" VARCHAR,"inci_descripcion" TEXT,"inci_tipo" VARCHAR,"inci_origen" VARCHAR,"inci_enlazar" INTEGER,"inci_estaborrado" BOOL DEFAULT (0) ,"inci_numincidencia" VARCHAR,"inci_solucion" TEXT,"inci_doc1" VARCHAR,"inci_doc2" VARCHAR)

Pg. 76

Captulo 8

Implementacin
8.1. Codificacin

En este apartado comentar los aspectos ms relevantes acerca de la implementacin en el lenguaje de programacin C++, utilizado para realizar el software Soporte Tcnico. El entorno visual de trabajo que he usado es Qt [7][8] para desarrollar interfaces grficas de usuario de forma sencilla, ya que al ser un proyecto de cdigo abierto, est muy documentado y con muchos ejemplos visuales desarrollados por la comunidad Qt [9] Al ser el cdigo muy extenso comentar los aspectos de especial relevancia.

8.1.1.
8.1.1.1.

Gua de Estilo
Introduccin

En este apartado describir las reglas de escritura del cdigo para que sea ms legible y para que los futuros desarrolladores puedan usarla.

8.1.1.2.

Estructuras de control

Estructura de control IF
if (Condicin){ (Bloque de sentencias);
Pg. 77

}else{ ( Bloque de sentencias); }

Estructura de control WHILE


while (Conicin){ (Bloque de sentencias); }

Estructura de control FOR


for ( Condicin de inicio ; expresin ; accin despus de cada iteracin ) { (Bloque de sentencias); }

8.1.1.3.

Llamadas a funciones

// Actualizar Lista de Tareas actualizar_lista_tareas(); // Muestra listado de hardware por pantalla mostrar_listado_hardware();

8.1.1.4.
void void bool void

Declaracin de Funciones
cargar_lista_incidencias_servicio(QString id); mostrar_servicio(QString id); control_enlazar(); guardar_doc(QString nom);

8.1.1.5.

Ejemplos de Implementacin

Para comenzar la implementacin lo primero que debemos hacer es revisar el fichero de configuracin que se crea en Qt, por defecto, con extensin .pro y aadir las variables necesarias. Fichero de configuracin

#------------------------------------------------# # Project created by QtCreator 2011-11-22T20:18:32 # #------------------------------------------------QT += core gui sql opengl network

Pg. 78

TRANSLATIONS = trans_en.ts \ trans_es.ts TARGET = SoporteTecnico TEMPLATE = app win32 { DESTDIR = debug/ UI_DIR = build/ OBJECTS_DIR = obj/ MOC_DIR = tmp/ } SOURCES += main.cpp\ principal.cpp \ form_proveedores.cpp \ funciones.cpp \ form_empleados.cpp \ form_empresas.cpp \ form_sedes.cpp \ form_acercade.cpp \ form_servicios.cpp \ form_hardware.cpp \ form_software.cpp \ form_licencia.cpp \ form_incidencias.cpp \ form_mails.cpp \ form_login.cpp \ form_configuracion.cpp \ nightcharts.cpp \ form_estadisticas.cpp \ simplecrypt.cpp \ form_recursos.cpp HEADERS += principal.h \ form_proveedores.h \ funciones.h \ form_empleados.h \ form_empresas.h \ form_sedes.h \ form_acercade.h \ form_servicios.h \ form_hardware.h \ form_software.h \ form_licencia.h \ form_incidencias.h \ form_mails.h \ form_login.h \ form_configuracion.h \ nightcharts.h \ form_estadisticas.h \ simplecrypt.h \ form_recursos.h FORMS += principal.ui \ form_proveedores.ui \ form_empleados.ui \

Pg. 79

form_empresas.ui \ form_sedes.ui \ form_acercade.ui \ form_servicios.ui \ form_hardware.ui \ form_software.ui \ form_licencia.ui \ form_incidencias.ui \ form_mails.ui \ form_login.ui \ form_configuracion.ui \ form_estadisticas.ui \ form_recursos.ui RESOURCES += \ Resources.qrc

Las partes ms importantes de este fichero son las siguientes: QT: en esta variable almacenar las libreras utilizadas, en mi caso voy a hacer uso del core de Qt, gui para el manejo de GUIs, sql para realizar conexiones y manejo de la Base de Datos.
QT += core gui sql opengl network

DESTDIR: directorio en el que el archivo ejecutable y binario se colocar.


DESTDIR = debug/

UI_DIR, OBJECTS_DIR, MOC_DIR: variables utilizadas para indicar a la aplicacin donde se almacenan los objetos de la compilacin y los ficheros obtenidos de los formularios.
UI_DIR = build/ OBJECTS_DIR = obj/ MOC_DIR = tmp/

SOURCES: variable en la que se colocan los cdigos fuentes de la aplicacin.


SOURCES += main.cpp\ principal.cpp \

HEADERS: variable en la que se declaran las clases.


HEADERS += principal.h \ form_proveedores.h \

FORMS: archivos de la interfaz de usuario.


FORMS += principal.ui \ form_proveedores.ui \

RESOURCES: recursos, imagnes e iconos, que incluyen en el ejecutable final


Pg. 80

RESOURCES += \ Resources.qrc

Funcin validar correo electrnico

//----------------------------------------------------------------------------// Validar E-MAIL //----------------------------------------------------------------------------bool valida_correo(QString email) { int atpos=email.indexOf("@"); int dotpos=email.lastIndexOf("."); if (atpos<1 || dotpos<atpos+2 || dotpos+2>=email.length()) { return false; } return true; }

8.1.1.6.

Implementacin de Formularios

Cuando se crea un formulario con la herramienta Qt Designer se genera una cabecera con informacin bsica para usar esa clase generada, posteriormente hay que completar esa clase para que pueda ser utilizada, mediante slots o funciones que se ejecutan cuando una determinada seal es enviada por el formulario. Un ejemplo de cabecera es el expuesto a continuacin:
#ifndef FORM_INCIDENCIAS_H #define FORM_INCIDENCIAS_H #include <QDialog> #include <QModelIndex> #include <QTableWidgetItem> //#include "principal.h" namespace Ui { class form_incidencias; } class form_incidencias : public QDialog//, public Principal { Q_OBJECT public: explicit form_incidencias(QWidget *parent = 0); ~form_incidencias(); void void void void cargar_lista_incidencias(); info_actualizada(); alerta_seleccion(); limpiar_campos_incidencia(); Pg. 81

void mostrar_inci(QString id); void void void void void void cargar_comboxs(); cargar_usuarios_combobox(); cargar_servicios_combobox(); cargar_hardware_combobox(); cargar_software_combobox(); cargar_enlazado_combobox();

bool control_enlazar(); void guardar_doc(QString nom); void cargar_lista_incidencias_servicio(QString id); void mostrar_servicio(QString id); void mostrar_total_serv(QString id); void cargar_lista_incidencias_software(QString id); void mostrar_software(QString id); void mostrar_total_soft(QString id); void cargar_lista_incidencias_hardware(QString id); void mostrar_hardware(QString id); void mostrar_total_hard(QString id); void cargar_lista_incidencias_usuario(QString id); void mostrar_usuario(QString id); void mostrar_total_usua(QString id); void obtener_tarea(QString id); void limpiar_campos_info(); private: Ui::form_incidencias *ui; protected: void showEvent (QShowEvent *event); //virtual void paintEvent(QPaintEvent *event); private slots: void on_listWidget_clicked(const QModelIndex &index); void on_btn_Nuevo_clicked(); void on_Inci_tablelistado_clicked(const QModelIndex &index); void on_btn_Borrar_clicked(); void on_btn_Guardar_clicked(); void on_tool_doc1_clicked(); void on_tool_doc2_clicked(); void on_serv_comboBox_inci_currentIndexChanged(const QString void on_serv_comboBox_soft_currentIndexChanged(const QString void on_hard_comboBox_inci_currentIndexChanged(const QString void on_usua_comboBox_inci_currentIndexChanged(const QString void void void void void void

&arg1); &arg1); &arg1); &arg1);

on_Inci_tableView_usua_doubleClicked(const QModelIndex &index); on_Inci_tableView_hard_doubleClicked(const QModelIndex &index); on_Inci_tableView_ser_doubleClicked(const QModelIndex &index); on_Inci_tableview_soft_doubleClicked(const QModelIndex &index); on_btn_doc1_clicked(); on_btn_doc2_clicked();

Pg. 82

void on_btn_borrar1_clicked(); void on_btn_borrar2_clicked(); }; #endif // FORM_INCIDENCIAS_H

La pantalla de Qt Designer en la Figura 8.1, podemos observar la gestin del Incidencias, podemos arrastras los elementos visuales deseados y asignarles las propiedades requeridas.

Figura 8.1. Qt Designer Gestin de Incidencias

En el archivo .cpp generado automticamente, se crean el constructor y el destructor:


#include "form_incidencias.h" #include "ui_form_incidencias.h" form_incidencias::form_incidencias(QWidget *parent) : Qdialog(parent), ui(new Ui::form_incidencias) { ui->setupUi(this); } form_incidencias::~form_incidencias() { delete ui; }

Posteriormente, el desarrollador va aadiendo los mtodos y libreras necesarias, en este ejemplo muestro algunos de los necesarios para Gestin de Incidencias:
#include #include #include #include "funciones.h" <QSqlTableModel> <QSqlRelationalTableModel> <QSqlRelationalDelegate>

//-------------------------------------------------// AL CARGAR FORMULARIO //-------------------------------------------------void form_incidencias::showEvent(QShowEvent *event) { ui->listWidget->setCurrentRow(0); cargar_lista_incidencias(); Pg. 83

cargar_comboxs();

//-----------------------------------------------// ALERTA SELECCIONAR INCIDENCIA //-----------------------------------------------void form_incidencias::alerta_seleccion(){ QMessageBox::warning(this,tr("Adventencia"), tr("Debe seleccionar una Incidencia para continuar"), QMessageBox::Ok); }

8.1.1.7.

Bibliotecas de cdigo abierto utilizados

Dado que Qt es una herramienta utilizada por multitud de desarrolladores existen recursos de cdigo abierto, bien documentados, con licencia abierta, para ser utilizado por el resto de la comunidad de desarrolladores. En Soporte Tcnico he hecho uso de la librera nightcharts.h [10], clase utilizada para el dibujo grficos de reas y barras verticales. Estos grficos los he utilizado para la representacin visual del nmero de estadsticas realizadas en una fecha dada (Figura 8.3), as como, para el resumen anual de las estadsticas totales (Figura 8.2).

Figura 8.2. Estadstica anual

Figura 8.3. Estadsticas por mes

Tambin he hecho uso de la librera simplecrypt.h [11] para poder encriptar y desencriptar las contraseas almacenadas en la base de datos. SimpleCrypt slo admite el cifrado simtrico, es decir, usar una misma clave para cifrar y descifrar.

Tabla 8.1. Ejemplo contrasea encriptada

Contrasea 123456

Valor en la Base de Datos AwIKHNdK3DslHAk=

Pg. 84

8.1.1.8.

Conexin con la Base de Datos

La conexin con la base de datos se hace de forma global y nicamente debe realizarse una vez, normalmente al inicio de la aplicacin. Cuando est conectada podremos consultarla durante todo el periodo de ejecucin la aplicacin. El siguiente cdigo es el que utilizo para establecer conexin:
//-------------------------------------------------------------// CONEXION BASE DE DATOS //-------------------------------------------------------------bool conexion_base_datos(){ QString dir_app = ERROR (dir_app); QApplication::applicationDirPath();

QSqlDatabase basedatos = QSqlDatabase::addDatabase("QSQLITE"); basedatos.setDatabaseName(QDir::toNativeSeparators(dir_app+"/ST_BBDD.sqlite "));

if (!basedatos.isValid()) { QMessageBox msgBox1; msgBox1.setWindowTitle("Error al Abrir la Base de Datos"); msgBox1.setInformativeText(QString( "MySql Server (Driver) ")); msgBox1.setText(QString("No se puede cargar el servidor de datos MySQL Server: %1").arg(basedatos.lastError().databaseText())); msgBox1.setDetailedText(basedatos.lastError().databaseText()); return false; } if (!basedatos.open()) { QMessageBox msgBox; msgBox.setWindowTitle("Error al Abrir la Base de Datos"); msgBox.setInformativeText(QString("MySql Server - Error %1") .arg(QString::number(basedatos.lastError().nu mber()))); msgBox.setText(QString("No se pudo cargar la base de datos: %1") .arg(basedatos.lastError().databaseText())); msgBox.exec(); return false; } return true;

Pg. 85

8.2.
8.2.1.

Recursos Utilizados
Iconos

Figura 8.4. Logotipo de Open Icon Library Open Icon library [12] contiene ms de 10.000 iconos nicos libres para su uso, sitio web o cualquier otro proyecto. La biblioteca es una fuente centralizada de iconos para cubrir cualquier necesidad, el objetivo es cubrir todas las aplicaciones comunes, sistemas operativos, tipos mime, dispositivos y banderas de los pases.

8.2.2.

Fuentes

Figura 8.5. Logotipo de Open Font Library La misin de Open Font Library [13] es promover las libertades y relaciones en el uso de tipografas. Todas las fuentes que aparecen en este sitio poseen libertad uso, estudio, compartir y modificacin.

8.2.3.

Imgenes

Figura 8.6. Logotipo de Open Clip Art Library El Open Clip Art Library (OCAL) [14] es una gran comunidad de colaboracin que crea, comparte y reedita imgenes prediseadas. Todas las imgenes prediseadas estn liberadas, son de dominio pblico y pueden ser utilizadas en cualquier proyecto de forma gratuita y sin restricciones.

Pg. 86

8.2.4.

Utilidades

Figura 8.7. Logotipo de UltraVNC UltraVNC [2] es un software potente, fcil de usar y gratuito puede mostrar la pantalla de otra ordenador (a travs de Internet o red) en la propia pantalla. El programa permite usar el ratn y teclado para controlar el otro ordenador de forma remota, esto significa, que es posible trabajar en un equipo remoto como si estuviera sentado frente a l, desde una ubicacin distinta.

Figura 8.8. Logotipo de Console Console [15] es una aplicacin de consola de para sistemas operativos Windows, sta mejora la ventana de consola que viene instalada ya en el sistema.

8.3.
8.3.1.

Estadsticas Lneas de Cdigo Fuente


Introduccin

Mediante las estadsticas e informes realizado de forma automtica obtenemos informacin sobre el cdigo desarrollado sobre mi proyecto, mediante estos informes es posible crearse una idea sobre el tiempo y el trabajo empleado en cualquier proyecto software. En programacin el nmero de lnea de cdigo (LOC), es un punto til a la hora hacerse una idea de la magnitud o complejidad de este. Para la realizacin de este informe he utilizado la herramienta locmetrics [16], aplicacin que facilita la realizacin de dichos informes.

8.3.2.

Informe

En la Figura 8.8 podemos ver de forma grfica la cantidad de cdigo fuente que tiene el proyecto, dividida por carpetas. Mediante la Tabla 8.2, podemos ver los valores numricos de las lneas de cdigo as como las diferentes lneas de cdigo que podemos encontrar en un archivo de cdigo fuente. La la Tabla 8.3 muestra el mismo resumen anterior, divido en este caso, en carpetas.

Pg. 87

Figura 8.9. Resumen grfico Tabla 8.2. Tabla resumen de lneas de cdigo
Tipo Archivos cdigo fuente Carpetas LOC BLOC SLOC-P SLOC-L C&SLOC CLOC CWORD HCLOC HCWORD Total 124 33 168178 6981 157726 28586 800 3471 11419 641 3717 Descripcin Archivos cdigo fuente Carpetas Lneas de Cdigo Lneas de Cdigo en Blanco Lneas fsicas de cdigo ejecutables Lneas lgicas de cdigo ejecutables Cdigo en lneas de cdigo comentadas Lneas de cdigo de comentario Texto comentado Lneas de comentarios de cabecera Palabras de comentarios de cabecera

Tabla 8.3. Tabla resumen de carpetas


Carpeta Total \SoporteTecnico \SoporteTecnico\build \SoporteTecnico\build \build \SoporteTecnico\build \debug \SoporteTecnico\build \tmp \SoporteTecnico\debug \SoporteTecnico\tmp SLOC SLOC Physical Logical 124 168178 157726 28586 124 168178 157726 28586 49 77470 72552 21543 Files LOC 16 1 16 2 16 13460 48565 1790 52153 1793 11277 48363 1442 51944 1445 10461 14 545 14 546 BLOC 6981 6981 4325 2055 23 190 24 190 C&SLOC CLOC 800 800 520 139 0 176 2 176 3471 3471 593 128 179 158 185 158 CWORD HCLOC HCWORD 11419 11419 3030 827 362 948 389 948 641 641 392 128 8 128 8 128 3717 3717 2051 672 35 672 35 672

Pg. 88

Captulo 9

Pruebas y Usabilidad
9.1. Pruebas

En este apartado describir las pruebas realizadas al software para verificar los el funcionamiento deseado del programa. Antes de realizar un plan de pruebas he verificado que se cumplen los requisitos iniciales del proyecto, una vez cumplidos estos objetivos he pasado a disear un plan de pruebas para aplicrselo al software. Los usuarios sobre los que se han realizado las diferentes pruebas son los siguientes: Usuario 1: Mujer, 26 aos, estudios universitarios en informtica, conocimientos en ofimtica altos, sin experiencia en gestin de informacin. Usuario 2: Hombre, 42 aos, estudios universitarios en ciencias econmicas, conocimientos en ofimtica altos, con experiencia en gestin de informacin. Usuario 3: Hombre, 68 aos, estudios universitarios en magisterio, conocimientos en ofimtica medios, con alta experiencia en gestin de informacin. Analic el uso de la aplicacin por parte de los usuarios en las siguientes circunstancias: Ordenador porttil con sistemas operativo Windows. Se les facilita la aplicacin ya iniciada, en la pantalla principal. Se les inform el objetivo de la aplicacin.

Pg. 89

9.1.1. Test usabilidad


Los usuarios comprobaron la usabilidad y entendibilidad de la aplicacin, comenzando por la pantalla principal, pasando por las ventanas de las diferentes gestiones y finalizando en la ventana de informacin del software. En estas pruebas se observ al usuario usando la aplicacin, as como se les apoy en la resolucin de dudas, reflejadas stas en el manual de usuario, en forma de explicaciones para el correcto uso de la aplicacin de futuros usuarios.

9.1.2. Pruebas caja negra


Estas pruebas las realic como programador durante la implementacin, dado que no se podan probar todas las posibles entradas de datos de todos los mdulos, intent llevar a cabo casos reales donde comprobar el comportamiento de algunos importantes para el funcionamiento general de la aplicacin. Las pruebas que he realizado son las siguientes: Introducir valores en la base de datos. Correcto almacenamiento de todos los valores en las diferentes tablas de la Base de Datos. Copiar y Abrir ficheros. Verificacin el correcto almacenamiento en las carpetas definidas previamente y su correcta visualizacin en el momento deseado. Mostrar datos e imgenes. Mostrado de los datos de forma correcta, as como las imgenes y grficas. Verificar valores repetidos. Comprobacin de la no repeticin de las claves primarias de cada tabla. Correcta visualizacin de escritorio remoto. Verificacin de la forma esperada del comando de apertura de escritorio remoto.

Pg. 90

9.1.3. Estudio de resultados


En el test de usabilidad, las preguntas sobre algunos botones de la aplicacin, denotaron que, aunque entendan el resultado si ejecutaban el botn, necesitaban un apoyo para asegurarse y evitar dudas, por lo que todos los botones de accin contiene un pequeo texto explicativo, denominado ToolTip, que aparece esperando unos segundos sobre el botn en cuestin.

Figura 9.1. Ejemplo ToolTip

9.2.

Usabilidad

Segn la Organizacin Internacional para la Estandarizacin (ISO), en una de sus definiciones de usabilidad, ISO/IEC 9126. [17] "La usabilidad se refiere a la capacidad de un software de ser comprendido, aprendido, usado y ser atractivo para el usuario, en condiciones especficas de uso" A partir de la conceptualizacin llevada a cabo por la Organizacin internacional sobre Estandarizacin (ISO), se infieren los principios bsicos en los que se basa la usabilidad: Facilidad de Aprendizaje: facilidad con la que nuevos usuarios desarrollan una interaccin efectiva con el sistema o producto. Est relacionada con la predicibilidad, sintetizacin, familiaridad, la generalizacin de los conocimientos previos y la consistencia. Facilidad de Uso: facilidad con la que el usuario hace uso de la herramienta, con menos pasos o ms naturales a su formacin especfica. Tiene que ver con la eficacia y eficiencia de la herramienta. Flexibilidad: relativa a la variedad de posibilidades con las que el usuario y el sistema pueden intercambiar informacin. Tambin abarca la posibilidad de dilogo, la multiplicidad de vas para realizar la tarea, similitud con tareas anteriores y la optimizacin entre el usuario y el sistema. Robustez: es el nivel de apoyo al usuario que facilita el cumplimiento de sus objetivos. Est relacionada con la capacidad de observacin del usuario, de recuperacin de informacin y de ajuste de la tarea al usuario.

Pg. 91

9.2.1.

Opiniones de Jakob Nielsen

Jakob Nielsen [18], considerado el padre de la Usabilidad, la defini como el atributo de calidad que mide lo fciles de usar que son las interfaces web, es decir, un sitio web usable es aqul en el que los usuarios pueden interactuar de la forma ms fcil, cmoda, segura e inteligentemente posible. No slo la tecnologa y el aspecto grfico son factores determinantes para hacer un sitio web llamativo. Es importante que cumpla con las siguientes caractersticas: Entendible. Novedoso. Comprensible. Inteligente. Atractivo. La finalidad, en este caso de un sitio web, es lograr que el usuario encuentre lo que busca en el menor tiempo posible. La Usabilidad de un sitio web est determinada por sus contenidos, entre ms cercanos estn al usuario, mejor es la navegacin por el mismo y ms acertada ser la experiencia al enfrentarse a la pantalla. Lgicamente es imposible crear un sitio web ciento por ciento perfecto y en ptimas condiciones, pues no se puede agradar al mismo tiempo a millones de usuarios, sin embargo, los diseadores y creadores deben tratar de mostrar todos los elementos de una manera clara y concisa, minimizando el nmero de clics y de scroll.

9.2.2.

Elementos visuales

Para facilitar a los usuarios el manejo del software he considerado muy importante que los iconos sean representativos segn la accin a realizar. Los iconos que he utilizado son de licencia abierta del proyecto Open Icon Library [12] La utilizacin de imgenes representativas de las acciones que se pueden realizar, adems el uso de mensajes cercanas a stas, aclaran su significado.

Pg. 92

Tabla 9.1. Tabla de iconos

Gestin de Empleados

Gestin de Software

Gestin de Incidencias

Gestin de Cuentas de Correo Electrnico Gestin de Servicios

Gestin de Proveedores

Recursos

Gestin de Sedes

Gestin de Empresas

Gestin de Hardware

Estadsticas

Consola

Pg. 93

Captulo 10

Requisitos del Sistema


Los requisitos hardware necesarios para poder ejecutar el software correctamente en un equipo son:: Procesador superior o igual a 1,0 GHz. Memoria RAM mayor o igual 512MB. Memoria tarjeta grfica mayor o igual a 64 MB.

Los requisitos software necesarios son: Sistema Operativo Windows 32 bits (XP o posterior). Lector de documentos PDF. Programa de acceso de control remoto UltraVNC [2]. Navegador Web.

Pg. 94

Parte III

Eplogo

Pg. 95

Captulo 11

Manual de Instalacin
11.1. Creacin del Instalador

Para la creacin del instalador de Soporte Tcnico he utilizado el programa Inno Setup [19], en la Figura 11.1, podemos ver el proceso de desarrollo.

Figura 11.1. Configurador de Inno Setup

Pg. 96

11.2.

Instalacin

En el siguiente manual se explicar, de forma detallada como podemos instalar el software Soporte Tcnico vlido para el sistemas operativos Windows XP o posterior. Para instalar Soporte Tcnico en primer lugar obtener el instalador en su ltima versin, disponible en la forja de rediris [31], debemos hacer doble clic en el ejecutable, Soporte Tecnico.exe (Figura 11.2) y seguir las instrucciones que aparecen en pantalla.

Figura 11.2. Icono Instalador

En el siguiente paso, en la Figura 11.3, puede ver una captura para guiarse, le pedir la ruta donde desea instalar el programa y una breve informacin de cuanta capacidad necesita en el disco duro para su instalacin.

Figura 11.3. Seleccin de ruta de instalacin

Pg. 97

A continuacin podr seleccionar los distintos accesos que desea instalar en su sistema operativo (Figura 11.4).

Figura 11.4. Seleccin de iconos

Una vez seleccionado el botn Instalar comenzar el proceso de instalacin (Figura 11.5).

Figura 11.5. Proceso de instalacin

Tras la finalizacin del proceso de instalacin podr utilizar la aplicacin Soporte Tcnico.

Pg. 98

11.3.

Desinstalacin

Para la desinstalar completa de Soporte Tcnico seguiremos los siguientes pasos para encontrar el desinstalador. Botn Inicio / Todos los programas /SoporteTecnico/ Uninstall SoporteTecnico, una vez ejecutado seguiremos los pasos para la completa desinstalacin del programa (Figura 11.6).

Figura 11.6. Ventana de desinstalacin

Finalizada la desinstalacin obtendremos un mensaje, que nos avisa de dicha finalizacin (Figura 11.7).

Figura 11.7. Finalizacin de la desinstalacin

Pg. 99

Captulo 12

Manual de Usuario
Una vez completada la instalacin, pasamos a probarla. Para ello, localizamos el acceso directo Soporte Tcnico (Figura 13.1) en el escritorio o en la ruta: Inicio / Todos los programas / SoporteTecnico / SoporteTecnico.

Figura 12.1. Acceso directo de Soporte Tcnico

La primera ventana que obtenemos es el control de acceso (Figura 12.2) del Tcnico a al aplicacin. Inicialmente se muestra los valores por defecto (admin / admin), una vez accedido al programa se podrn modificar en la opcin de men Preferencias \ Configuracin \ Acceso, tras actualizarlos no se mostrarn ms estos valores.

Figura 12.2. Control de Acceso

Pg. 100

Tras un acceso correcto a la aplicacin obtendremos la ventana principal (Figura 12.3)

Figura 12.3. Ventana principal

A.- Barra de Men Gestin, donde poder acceder a cada unidades de gestin y poder cerrar la aplicacin. Ventanas, donde poder mostrar u ocultar las subventanas de la ventana principal. Preferencias, donde poder cambiar algunos aspectos de la configuracin de ultraVNC y del control de acceso inicial. Acerca de..., donde poder obtener informacin sobre el proyecto Soporte Tcnico y su Licencia.

B.- Unidades de gestin Mediante los diferentes botones es posible entrar en las una de las unidades de gestin para gestionarlos. C.- Subventana Informaicn En esta ventana es posible tener acceso rpido a: Listado de Incidencias producidas en la fecha actual y el da anterior. Listado de Empleados. Listado de Software. Listado de Servicios.
Pg. 101

D.- Subventana Centro Listado de incidencias relacionadas con la seleccin realizada en la Subventana Informacin. Situado en la parte inferior, podemos obtener un listado de hardware a partir de la seccin Empleados de la Subventana Informacin, as mismo como desde la Subventana Hardware (F), en esa parte de la ventana podemos encontrar dos utilidades de red, UltraVNC, para control remoto, y la posibilidad de hacer ping al dispositivo hardware que posea IP. E.- Subventana Lista de Tareas Encontramos varias listas de tareas dividas en pestaas nombradas como: Hoy, Ayer, Pendientes y Todas, pudiendo generar incidencias a partir de ellas. F.- Subventana Hardware Listado de hardware, agrupados por categoras. G.- Barra con informacin Al pie de la ventana principal est situado informacin sobre: nmero de correos electrnicos, nmero total de incidencias, nmero de empleados, hora y fecha actual y acceso a pginas web relacionadas con el tiempo.

Cada unidades unidades de gestin, se compone de las partes mostradas en la Figura 12.4.

Figura 12.4. Ventana ejemplo de unidad de gestin

Pg. 102

A.- Botones de unidad de Gestin B.- Listado de datos a gestionar. C.- Informacin sobre los datos seleccionados. D.- botones de acciones sobre los datos seleccionados.

Pg. 103

Captulo 13

Conclusiones
13.1. Cumplimiento de Objetivos

Relacin de objetivos iniciales a alcanzar: Gestionar incidencias, empleados, servicios de proveedores, cuentas de correo electrnico.

Objetivo cumplido mediante la insercin de formularios de gestin. He logrado controlar todo lo relacionado con incidencias en la Figura 13.1, empleados en la Figura 13.2, servicios de proveedores en la Figura 13.4 y Figura 13.5, y cuentas de correo electrnico en la Figura 13.3.

Figura 13.1. Gestin de Incidencias

Pg. 104

Figura 13.2. Gestin de Empleados

Figura 13.3. Gestin de Cuentas de correo electrnico

Figura 13.4. Gestin de Servicios

Pg. 105

Figura 13.5. Gestin de Proveedores

Facilitar el inventariado del hardware y software.

Objetivo cumplido mediante la incorporacin de formularios de gestin de hardware en la Figura 13.6 y software en la Figura 13.7.

Figura 13.6. Gestin de Hardware

Figura 13.7. Gestin de Software

Pg. 106

Facilitar el acceso remoto a equipos de una misma red.

Objetivo cumplido mediante la utilizacin de la aplicacin UltraVNC [2], a travs de la Figura 13.9. es posible configurar diferentes aspectos de dicha aplicacin. El uso mediante su icono en la Figura 13.8, es posible de forma rpida situado en la pantalla principal de Soporte Tcnico.

Figura 13.8. Icono de UltraVNC

Figura 13.9. Configuracin de UltraVNC

Pg. 107

Facilitar la informacin de contacto de empleados y proveedores.

Mediante la incorporacin de tarjetas, generadas de forma automtica, es posible obtener de forma rpida informacin sobre los empleados y proveedores, podemos ver dos ejemplos en la Figura 13.10 y Figura 13.11.

Figura 13.10. Tarjetas Empleados

Figura 13.11. Tarjetas Proveedores

Pg. 108

Mostrado de estadsticas de las incidencias producidas en un periodo de tiempo.

A travs de la seccin Estadsticas es posible visualizar un resumen de las incidencias producidas en una fecha dada, un mes concreto o de forma anual. (Figura 13.12 y Figura 13.13)

Figura 13.12. Grfica incidencias de una fecha

Figura 13.13. Grfica incidencias anuales

Pg. 109

Acceder a software, guas y manuales de forma rpida.

En la Gestin de Software es posible almacenar informacin de guas, manuales, estndares o web de destacado inters, mediante el botn Recursos del men principal es posible acceder a esta informacin de forma rpida subdivida por categora. (Figura 13.14)

Figura 13.14. Ventana Recursos

Gestionar informacin sobre las empresas o sedes, donde trabajan los empleados.

Mediante la incorporacin de gestiones de empresa (Figura 13.15) y sedes (Figura 13.16) he conseguido controlar toda la informacin referentes a stos, si bien, esta informacin es meramente consultiva para el Tcnico, no implicando al resto del programa para el correcto funcionamiento del programa.

Figura 13.15. Gestin de Empresas

Pg. 110

Figura 13.16. Gestin de Sedes

14.2.

Opinin Personal

El principal problema que he tenido en el desarrollo del software Soporte Tcnico ha sido la estimacin de tiempo, ya que me ha sido muy difcil estimar el tiempo cuando no he realizado ningn proyecto anterior. Por otro lado, he tenido que aprender y probar herramientas desconocidas para m. El anlisis ha estado dentro de los tiempos previstos y no me han surgido demasiados problemas. En la implementacin he tenido ms problemas porque prob diferentes herramientas de desarrollo de aplicaciones, como wxWidgets [20] o Glade [21], hasta que me decant por la que me pareca menos compleja de utilizar y ms documentada. He utilizado el programa QT, biblioteca multiplataforma para el desarrollo de programas con interfaz de usuario, necesitando para ello, un periodo de aprendizaje ayudndome de manuales, videos, foros y pginas web. [9][22][23][24][25] Respecto al diseo de la interfaz, he aprendido lo difcil que resulta hacer una interfaz grfica de usuario, fcil de usar e intuitiva, en mi opinin es algo muy importante para el usuario final, ya que la aplicacin ms fcil de usar ser por la que se decante. En lo referente a las pruebas, al ser el proyecto de una sola persona me ha sido difcil encontrar fallos y as evaluar todo el funcionamiento de la aplicacin, por lo que opte por solicitar ayuda de usuarios externos al proyecto. En ltimo lugar comentar que estoy muy satisfecho con el resultado obtenido, aunque he encontrado algunas dificultades, estoy orgulloso del trabajo realizado.

Pg. 111

14.3.

Mejoras

A continuacin detallar posibles mejoras que no fueron diseadas como objetivos del proyecto pero que podran ser tiles en la vida de uso de Soporte Tcnico. Base de datos externa para utilizacin de varios operarios que tienen instalado Soporte Tcnico. Wake on LAN (WOL, a veces WoL) [26] es un estndar de redes de computadoras ehernet que permite encender remotamente computadoras apagadas. Chat / videoconferencia. Implantacin de un chat que permita conectar a los diferentes tcnicos de una misma red para poder tener una comunicacin escrita instantnea compartiendo as informacin, enlaces,.. facilitando as el trabajo en equipo. Creacin de aplicacin para mviles (iOS o Android) para la lectura de cdigo de barras (Figura 13.17) [27] cdigo QR (Figura 13.18) [28], donde poder obtener de forma rpida el historial de incidencias de un componente, sin necesidad de tener un ordenador cerca. Esta mejora esta relacionada con la anterior, ya que necesita acceso a la base de datos usado por los tcnicos.

Figura 13.17. Ejemplo de cdigo de barras

Figura 13.18. Ejemplo de cdigo QR

Pg. 112

Captulo 14

Software Utilizado
A continuacin muestro un listado de aplicaciones y una breve descripcin, de todos los programas utilizadas para la realizacin y desarrollo de mi proyecto, Soporte Tcnico.

Qt es una biblioteca multiplataforma, software libre y de cdigo abierto, usada para desarrollar aplicaciones con una interfaz grfica de usuario as como para el desarrollo de programas sin interfaz grfica como herramientas para lnea de comandos y consolas para servidores. Es producido por la divisin de software Qt de Nokia, que entr en vigor despus de la adquisicin por parte de Nokia de la empresa noruega Trolltech, el productor original de Qt, el 17 de junio de 2008. Funciona en todas las principales plataformas, y tiene un amplio apoyo. El API de la biblioteca cuenta con mtodos para acceder a bases de datos mediante SQL, as como uso de XML, gestin de hilos, soporte de red, una API multiplataforma unificada para la manipulacin de archivos y una multitud de otros para el manejo de ficheros, adems de estructuras de datos tradicionales. Distribuida bajo los trminos de GNU Lesser General Public License (y otras). Qt es utilizada en programas y aplicaciones como: Autodesk Maya, Google Earth, KDE, Adobe Photoshop Album, Agencia Espacial Europea, Volvo, Skype, Samsung, Nokia Mobile, Philips, Panasonic, Mathematica, http://qt.nokia.com/
Pg. 113

Nmake Utilidad de mantenimiento de programas de Microsoft (nmake.exe) es una herramienta que genera proyectos tomando como base los comandos contenidos en un archivo de descripcin.

Cygwin es una coleccin de herramientas que permite la utilizacin de libreras propias de Linux en entornos Windows, es una DLL (cygwin1.dll), que acta como una capa API de Linux proporcionando importantes funcionalidades.

ActivePerl es un intrprete del lenguaje PERL para Windows con el se obtiene la mayora de funciones del lenguaje, adems de funcionalidad propia de las especficas de la API Win32.

LibreOffice es una suite gratuita de productividad personal de cdigo abierto para Windows, Macintosh y Linux, que ofrece 6 aplicaciones ricas en funcionalidades para todas las necesidades de produccin de documentos y procesamiento de datos: Writer, Calc, Impress, Draw, Base y Math. http://es.libreoffice.org

Pg. 114

GIMP (GNU Image Manipulation Program) es un programa de edicin de imgenes digitales en forma de mapa de bits, tanto dibujos como fotografas. Es un programa libre y gratuito. Forma parte del proyecto GNU y est disponible bajo la Licencia pblica general de GNU. http://www.gimp.org.es/

Easy PHP es un programa muy interesante para las personas que quieren en el menor tiempo posible ponerse a trabajar con PHP sobre Windows, sin tener que vrselas con las dificultades de instalar y configurar todos los servidores y mdulos necesarios para trabajar con este lenguaje de creacin de pginas del lado del servidor. http://www.easyphp.org

F.lux, es una pequea aplicacin que hace que el color de la pantalla del ordenador se adaptan a la hora del da, clido por la noche y como la luz del sol durante el da. Cuando el sol se pone, hace que su equipo se vea como las luces interiores. Por la maana, hace que las cosas se ven como la luz del sol de nuevo. http://www.stereopsis.com/flux/

Pg. 115

Dia es una aplicacin para crear diagramas tcnicos. Posee una interfaz y caractersticas fciles de utilizar, exporta a varios tipos de formatos (EPS, SVG, CGM y PNG) y a XML. Dia es es muy usado para diagramas UML, mapas de red y diagramas de flujo. http://dia-installer.de

SQLite es un sistema de gestin de bases de datos relacional compatible con ACID, contenida en una relativamente pequea biblioteca en C. SQLite es un proyecto de dominio pblico creado por D. Richard Hipp. A diferencia de los sistemas de gestin de bases de datos cliente-servidor, el motor de SQLite no es un proceso independiente con el que el programa principal se comunica. En lugar de eso, la biblioteca SQLite se enlaza con el programa pasando a ser parte integral del mismo. El programa utiliza la funcionalidad de SQLite a travs de llamadas simples a subrutinas y funciones. Esto reduce la latencia en el acceso a la base de datos, debido a que las llamadas a funciones son ms eficientes que la comunicacin entre procesos. El conjunto de la base de datos (definiciones, tablas, ndices, y los propios datos), son guardados como un slo fichero estndar en la mquina host. Este diseo simple se logra bloqueando todo el fichero de base de datos al principio de cada transaccin.

SQLite Manager es un complemento del navegador Mozilla Firefox para la gestin de Bases de Datos SQLite https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/

Pg. 116

Qwt La biblioteca Qwt contiene componentes GUI y clases de utilidad que son sobre todo tiles para los programas con un perfil tcnico. Junto a un widget de diagrama en 2D que proporciona escalas, deslizadores, diales, compases, termmetros, ruedas y botones para controlar o visualizar los valores, matrices o rangos de tipo double. http://qwt.sourceforge.net/

Inkscape es un editor de grficos vectoriales de cdigo abierto, con capacidades similares a Illustrator, Freehand, CorelDraw o Xara X, usando el estndar de la W3C: el formato de archivo Scalable Vector Graphics (SVG). http://www.inkscape.org

IcoFX es un editor de iconos gratuito. Utilizado para creacin, extraccin y edicin de iconos, con este editor de icono he realizado el icono de Soporte Tcnico. http://icofx.ro/

GanttProject es una herramienta de escritorio multi-plataforma para la programacin y gestin de proyectos. Se ejecuta en Windows, Linux y Mac, es libre y su cdigo es opensource. http://www.ganttproject.biz/

Pg. 117

LocMetrics cuenta las lneas de cdigo (LOC), lneas de cdigo en blanco (BLOC), lneas de cdigo comentadas (CLOC), lneas comentadas con cdigo y comentarios (C&SLOC), lneas de cdigo lgicas (SLOC-L) y nmero de palabras en comentarios (CWORDS). Las lneas de cdigo fsicas ejecutables (SLOC-P) se calculan mediante el total de lineas de cdigo menos lineas en blancos y lneas comentadas. http://locmetrics.com/

TortoiseSVN es un programa fcil de usar SMC / software de control de cdigo fuente para Microsoft Windows y, posiblemente, el mejor, independiente Apache Subversion existente hoy da. Se implementa como una extensin del shell de Windows, lo que hace que se integre perfectamente en el explorador de Windows. Ya que no es una integracin de un IDE especfico que se puede utilizar con herramientas de desarrollo. http://tortoisesvn.net/

Greenshot es una herramienta de captura de pantalla, muy ligero: Crear capturas de pantalla completa o parcial con rapidez. Fcil de anotar, resaltar o ocultar partes de la captura de pantalla. Enviar la captura de pantalla en un archivo, portapapeles, impresora o como archivo adjunto de correo electrnico. Es fcil de entender y configurar, Greenshot es una herramienta eficaz para administradores de proyectos, desarrolladores de software, redactores tcnicos y cualquier otra creacin de capturas de pantalla.

http://getgreenshot.org/

Pg. 118

Wink es un software de creacin de presentacin, dirigido principalmente a la creacin de tutoriales sobre cmo utilizar un software. Usando Wink es posible realizar capturas de pantalla, agregar cajas de explicaciones, botones, ttulos, etc y generar un tutorial muy eficaz para los usuarios. http://www.debugmode.com/wink/

Inno Setup es un instalador gratuito para programas en entorno Windows. Presentado por primera vez en 1997, Inno Setup hoy en da es incluso superior a muchos instaladores comerciales con similares caractersticas. http://www.jrsoftware.org

Pg. 119

Captulo 15

Referencias Bibliogrficas
[1] http://sourceforge.net/projects/console/ [2] http://www.uvnc.com/ [3] http://www.glpi-project.org/ [4] http://www.ocsinventory-ng.org/ [5] Larman c., UML y Patrones. Una introduccin al anlisis y diseo orientado a objetos y al proceso unificado, 2 ed., [681.3.06UML/LAR/uml] Hall 2003 [6] http://www.sqlite.org/ [7] http://qt.nokia.com [8] Jasmin Blanchette, C++ GUI programming with Qt 4, Prentice Hall open source software development , [681.3.06C++/BLA/c++] [9] http://www.youtube.com/playlist?list=PL2D1942A4688E9D63 [10] http://qt-apps.org/content/show.php?content=132560 [11] http://qt-project.org/wiki/Simple_encryption [12] http://openiconlibrary.sourceforge.net/ [13] http://openfontlibrary.org/ [14] http://openclipart.org/ [15] http://sourceforge.net/projects/console/ [16] http://locmetrics.com/ [17] http://www.issco.unige.ch/en/research/projects/ewg96/node14.html [18] Nielsen, Jakob., Usabilidad: diseo de sitios Web / Jakob Nielsen; traduccin Santiago Fraguas., Madrid, Prentice Hall, 2000. [681.324/NIE/usa ] [19] http://www.jrsoftware.org [20] http://www.wxwidgets.org/ [21] http://glade.gnome.org/ [22] Daniel Molkentin, The book of Qt 4, the art of building Qt applications [23] http://www.zonaqt.com/ [24] http://www.qtforum.org/
Pg. 120

[25] http://www.qtcentre.org [26] http://es.wikipedia.org/wiki/Wake_on_LAN [27] http://es.wikipedia.org/wiki/C%C3%B3digo_de_barras [28] http://es.wikipedia.org/wiki/QR [29] Ingeniera del software : un enfoque prctico / Roger S. Pressman [681.3/PRE/ing] [30] http://www.fsf.org/ [31] http://forja.rediris.es/frs/?group_id=1060

Pg. 121

Captulo 16

Informacin sobre Licencia


GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007 Copyright 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.
Pg. 122

For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow.

TERMS AND CONDITIONS


0. Definitions. This License refers to version 3 of the GNU General Public License. Copyright also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. The Program refers to any copyrightable work licensed under this License. Each licensee is addressed as you. Licensees and recipients may be individuals or organizations. To modify a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a modified version of the earlier work or a work based on the earlier work.

Pg. 123

A covered work means either the unmodified Program or a work based on the Program. To propagate a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To convey a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays Appropriate Legal Notices to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.

1. Source Code. The source code for a work means the preferred form of the work for making modifications to it. Object code means any non-source form of a work. A Standard Interface means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The System Libraries of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A Major Component, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The Corresponding Source for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically

Pg. 124

designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work.

2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.

3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures.

Pg. 125

4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.

5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to keep intact all notices. c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an aggregate if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.

Pg. 126

6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A User Product is either (1) a consumer product, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, normally used refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually
Pg. 127

uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. Installation Information for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.

7. Additional Terms. Additional permissions are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.

Pg. 128

Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered further restrictions within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.

8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).
Pg. 129

However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.

9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.

10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An entity transaction is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.

Pg. 130

11. Patents. A contributor is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's contributor version. A contributor's essential patent claims are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, control includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a patent license is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To grant such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. Knowingly relying means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is discriminatory if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific

Pg. 131

products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.

12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.

13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.

14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License or any later version applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.
Pg. 132

Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.

15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS

Pg. 133