Writer's Help
Abstract
L'objectiu del present projecte és la realització d'una aplicació que sigui capaç d'ajudar a l'escriptor en el procés de creació d'un llibre, simplificant els innombrables documents que poden arribar a crear. L'aplicació Writer’s Help s'ha realitzat mitjançant llenguatge Java en un entorn d'escriptori i per a un únic usuari. Com a base de dades s’ha utilitzat MySQL.
Full text
Enginyeria Tècnica en Informàtica de Gestió WRITER’S HELP Memòria ALBERTO GUERRERO CORRAL PONENT: CATALINA JUAN NADAL PRIMAVERA 2015
Dedicatoria A mi padre. Siempre serás mi estrella. A mi hijo. Siempre seré tu estrella.
Resum L'objectiu del present projecte és la realització d'una aplicació que sigui capaç d'ajudar a l'escriptor en el procés de creació d'un llibre, simplificant els innombrables documents que poden arribar a crear. L'aplicació Writer’s Help s'ha realitzat mitjançant llenguatge Java en un entorn d'escriptori i per a un únic usuari. Com a base de dades s’ha utilitzat MySQL. Resumen El objetivo del presente proyecto es la realización de una aplicación que sea capaz de ayudar al escritor en el proceso de creación de un libro, simplificando los innumerables documentos que pueden llegar a crear. La aplicación Writer’s Help se ha realizado mediante lenguaje Java en un entorno de escritorio y para un único. Como base de datos se ha utilizado MySQL. Abstract The objective of this project is the development of an application that is able to help the writer in the process of creating a book, simplifying the countless documents that may create . The Writer's Help application was performed using Java language in a desktop environment and a single user. As database has been used MySQL.
Índice Índice de Figuras ......................................................................................................................................... ix Índice de tablas ............................................................................................................................................ xi Glosario de términos .................................................................................................................................xiii 1. Objetivos .............................................................................................................................................. 1 1.1. Propósito ................................................................................................................................. 1 1.2. Finalidad ................................................................................................................................. 1 1.3. Objeto ..................................................................................................................................... 1 1.4. Alcance ................................................................................................................................... 1 2. Información sobre la realización del proyecto ..................................................................................... 3 2.1. Antes de iniciar el proyecto. ................................................................................................... 3 2.2. Definición del alcance del proyecto ........................................................................................ 4 2.2.1. Objetivos y funcionalidades ............................................................................................... 4 2.2.2. Características de los usuarios ............................................................................................ 5 2.2.3. Restricciones generales ...................................................................................................... 5 2.2.4. Resultados esperados.......................................................................................................... 6 2.2.5. Etapas ................................................................................................................................. 6 2.3. Definición de los casos de uso ................................................................................................ 6 3. Realización del proyecto. ................................................................................................................... 25 3.1. Recopilación de información. ............................................................................................... 25 3.1.1. Herramientas utilizadas .................................................................................................... 25 3.1.2. Diseño de la base de datos. ............................................................................................... 26 3.1.3. Modelo entidad relación. .................................................................................................. 27 3.1.4. Modelo del domino .......................................................................................................... 32 3.1.5. Capa aplicación. ............................................................................................................... 35 3.1.6. Capa persistencia. ............................................................................................................. 36 3.2. Realización de pruebas ......................................................................................................... 38 3.2.1. Pruebas del caso de uso Creación y modificación de un personaje .................................. 38 3.3. Documentación. .................................................................................................................... 45 4. Estudio económico............................................................................................................................. 47 4.1. Costes de recursos humanos ................................................................................................. 47 4.2. Amortización de equipos y software .................................................................................... 47 4.3. Implementación del prototipo ............................................................................................... 48 5. Conclusiones ...................................................................................................................................... 49
Índice de Figuras Fig. 1 Modelo de datos ............................................................................................................................... 28 Fig. 2 Modelo del dominio ......................................................................................................................... 32 Fig. 3 Capa presentación ............................................................................................................................ 33 Fig. 4 Capa aplicación ................................................................................................................................ 35 Fig. 5 Capa persistencia .............................................................................................................................. 36 Fig. 6 Método getPersonajesByLi .............................................................................................................. 37 Fig. 7 Captura del árbol vacío .................................................................................................................... 39 Fig. 8 Captura de pantalla Crear Personaje ................................................................................................ 40 Fig. 9 Captura de pantalla Crear Personaje (aviso) .................................................................................... 41 Fig. 10 Captura de pantalla Crear Personaje (rellena) ................................................................................ 41 Fig. 11 Captura de pantalla Crear Personaje (creado) ................................................................................ 42 Fig. 12 Captura del árbol lleno ................................................................................................................... 43 Fig. 13 Captura de pantalla Modificar Personaje (Localización) ............................................................... 44 Fig. 14 Captura de pantalla Modificar Personaje (Objeto) ......................................................................... 44 Fig. 15 Captura de pantalla Modificar Personaje (Modificado) ................................................................. 45
2 Writer’s Help
Información sobre la realización del proyecto 3 2. Información sobre la realización del proyecto A continuación, explicaré las diferentes fases que ha tenido WH, desde la fase inicial de planificación hasta la fase final de pruebas. 2.1. Antes de iniciar el proyecto. La idea del proyecto Writer’s Help surgió a raíz de mi propia experiencia al introducirme en el mundo de la literatura. Nunca tuve excesivos problemas al escribir relatos cortos. Solían ser sencillos ya que la clave radicaba en la brevedad de la historia, nunca más de 20 páginas, lo que obligaba a la utilización de pocos personajes y localizaciones para evitar que el lector se abrumara en tan pocas páginas. Los problemas aparecieron cuando traté de abordar mi primera novela. Fue entonces cuando descubrí la importancia de una buena planificación, de tener claro cuáles eran las motivaciones de un personaje determinado o como era exactamente ese edificio donde transcurría el capítulo. Era vital saber hacia dónde conducían cada una de las tramas, como recordar esa idea que había tenido para aquel capítulo. Esta “planificación” solían ser ficheros de texto guardados en la carpeta del libro correspondiente. Estos ficheros fueron multiplicándose y fue entonces, cuando empecé a olvidar detalles de personajes, tramas o localizaciones. Hablando con compañeros de afición, como Carlos Sisí (Los caminantes, La hora del mar), Juan de Dios Garduño (Y pese a todo…) y Alberto Caliani (El secreto de Boca verde, La conspiración del rey muerto) me confesaron que a ellos les ocurría lo mismo, que podían describir los ojos de un personaje como azules, para transformarlos capítulos más tarde como verdes. Cosas así ocurrían. Fue así como empezó a forjarse la idea que acabaría convirtiéndose en este PFC y en la aplicación Writer’s Help. Quería facilitar la vida a los escritores y por supuesto a mí mismo.
4 Writer’s Help Para ello empecé el estudio de aplicaciones similares en el mercado, descubriendo que no era especialmente amplio. La más famosa de todas era Scrivener, aunque la mayoría no dejaban de ser procesadores de texto con algunas características concretas. Quería algo diferente, no tanto un procesador en el que escribir la novela en sí, sino una aplicación que realmente facilitara la faena del escritor. Por experiencia sé que la mayoría de escritores están sumamente habituados a un procesador de texto. El que trabaja con Microsoft Office Word es complicado que se pase a Apache OpenOffice o WordPad y a la inversa pasa lo mismo. Por esa razón descarté incorporar un procesador de textos en la aplicación, cosa que además, en mi opinión, hubiera superado las expectativas de lo que se espera en un PFC. 2.2. Definición del alcance del proyecto El siguiente paso fue definir el alcance del proyecto. Qué se podría hacer la aplicación y con qué finalidad. Writer’s Help realizaría aquellas funciones que un escritor podría realizar en una simple hoja de papel o en un documento de texto. Apuntar ideas, elaborar subtramas, especificar las características de un personaje o las de ese objeto tan importante en su obra. 2.2.1. Objetivos y funcionalidades En resumen los objetivos y funcionalidades que debería cumplir la aplicación WH se podrían dividir en: • Creación: El usuario podrá crear diferentes libros, añadiendo a cada uno de ellos los capítulos y las escenas que lo constituyen. También podrá crear las diferentes fichas de las entidades que forman parte del libro (Personajes, Objetos, Localizaciones, Razas, Ideas y Subtramas). • Edición: El usuario podrá editar la información, con la finalidad de indicar las características y rasgos destacables, de cada una de estas fichas. • Eliminación: El usuario podrá eliminar cualquier ficha, así como escenas, capítulos o el propio libro.
Información sobre la realización del proyecto 5 • Importación: La aplicación debe permitir la importación entre libros de las fichas de Personajes, Objetos, Localizaciones y Razas. Así como de ideas y Subtramas que hayan quedado descartadas en otros libros. La importación no plantea importar tan bien las relaciones, ya que estás no tienen porque existir en el nuevo libro. Ejemplo: Queremos importar el personaje A del libro 1 al libro 2. El personaje A, en el libro 1 tiene una relación de archienemigo con el personaje B. En el libro 2 queremos que aparezca el personaje A y lo importamos, pero el personaje B no se importará automáticamente, ya que no tiene por que salir en el libro 2 De igual manera, en la importación del personaje A sí se importaran su raza y su localización, ya que esas sí que son características que tendrá el personaje este en el libro que este. 2.2.2. Características de los usuarios La aplicación no contempla la necesidad de realizar diferentes tipos de usuarios, ya que se trata de una aplicación dirigida a un único usuario con privilegios totales y sin entorno de red. Los usuarios de la aplicación están familiarizados con el uso de ordenadores y aplicaciones de tratamiento de textos. Es por ello que la aplicación debe recoger todas sus necesidades a la par que constar con un interfaz sencillo, intuitivo y muy estructurado. Como curiosidad, creo que la aplicación también podría estar destinada a creadores de cortos o pequeñas películas. Tal como está pensada la aplicación, me hace creer que esta posibilidad existe. 2.2.3. Restricciones generales No existen restricciones especificas, se puede ejecutar en cualquier equipo de sobremesa o portátil de gama media o baja. Para una optima visualización de la aplicación, se recomienda una resolución de pantalla de 1280 x 1024.
6 Writer’s Help 2.2.4. Resultados esperados Los resultados y productos que se obtendrán son: • Una aplicación de escritorio con la que visualizar de forma fácil la información guardada en cada una de la fichas. • Facilitar la gestión de dicha información. 2.2.5. Etapas El método de desarrollo del proyecto se basará en las siguientes etapas: • Definición de los casos de uso. • Modelo entidad relación de la base de datos. • La codificación de la aplicación Writer’s Help. • La realización de las pruebas de la aplicación. 2.3. Definición de los casos de uso En este apartado se especificaran los requisitos que debe satisfacer la aplicación para ser aceptable. Los requisitos se han especificado de manera que sea sencilla la comprobación de que la aplicación los cumple.
Información sobre la realización del proyecto 7 • Mantenimiento y gestión de los libros creados. RF001 Crear Libro Introducción Mediante una interfaz gráfica se le pedirán al usuario los datos necesarios para la creación de un nuevo libro. Estos datos, en su gran mayoría se podrán rellenar con posterioridad, a excepción del título de la obra y de su estado que son obligatorios. Entradas Todos los campos requieren valores alfanuméricos. Proceso La aplicación comprobará si los datos obligatorios están rellenos y se procederá a su grabación en base de datos. En caso contrario se mostrará una ventana de aviso en pantalla. Salida En el caso de que todo sea correcto la aplicación mostrará la pantalla Arbol2 del nuevo libro. RF002 Eliminar Libro Introducción Mediante la pantalla Modificación del libro, el usuario podrá eliminar un libro y todas las fichas que cuelguen de él. Entradas Proceso La aplicación pedirá confirmación al usuario antes de realizar la operación. En caso afirmativo, procederá. En caso negativo, no hará nada. Salida La aplicación lanzará el proceso de borrado del libro y volverá a la página Home de la aplicación.
8 Writer’s Help RF003 Modificar Libro Introducción Mediante una interfaz gráfica el usuario podrá modificar los datos de un libro. Estos datos, en su gran mayoría se podrán rellenar con posterioridad, a excepción del título de la obra y de su estado que son obligatorios. Entradas Todos los campos requieren valores alfanuméricos. Proceso La aplicación comprobará si los datos obligatorios están rellenos y se procederá a su grabación en base de datos. En caso contrario se mostrará una ventana de aviso en pantalla. Salida En el caso de que todo sea correcto la aplicación volverá a la pantalla Arbol2 del libro modificando el nodo raíz. • Mantenimiento y gestión de las fichas (Personajes, Objetos, Localizaciones y Razas). RF004 Crear Ficha (Personajes, Objetos, Localizaciones o Razas) Introducción Mediante una interfaz gráfica se le pedirán al usuario los datos necesarios para la creación de una nueva ficha. Estos datos, en su gran mayoría se podrán rellenar con posterioridad a excepción del nombre y de la categoría en el caso de tratarse de un personaje o el tipo si es un objeto, que son obligatorios. Entradas Todos los campos requieren valores alfanuméricos. Proceso La aplicación comprobará si los datos obligatorios están rellenos y se procederá a su grabación en base de datos. En caso contrario se mostrará una ventana de aviso en pantalla. Salida En el caso de que todo sea correcto la aplicación volverá a la pantalla Arbol2 del libro añadiendo el nuevo nodo a la rama correspondiente.
Información sobre la realización del proyecto 9 RF005 Eliminar Ficha (Personajes, Objetos, Localizaciones o Razas) Introducción Mediante la pantalla Modificación de la ficha elegida, el usuario podrá eliminarla, eliminando también las relaciones que esta pueda tener. Entradas Proceso La aplicación pedirá la confirmación al usuario antes de realizar la operación de eliminación. En caso afirmativo, procederá a la eliminación de la ficha junto con las relaciones que esta pueda tener. En caso negativo, no hará nada. Salida En el caso de que todo sea correcto la aplicación volverá a la pantalla Arbol2 del libro eliminando el nodo de la rama correspondiente. RF006 Modificar Ficha (Personajes, Objetos, Localizaciones o Razas) Introducción Mediante una interfaz gráfica se le mostraran al usuario los datos de la ficha seleccionada, pudiéndolos modificar. Estos datos, en su gran mayoría se podrán rellenar con posterioridad a excepción del nombre y de la categoría en el caso de tratarse de un personaje o el tipo si es un objeto, que son obligatorios. Entradas Todos los campos requieren valores alfanuméricos. Proceso La aplicación comprobará si los datos obligatorios están rellenos y se procederá a su grabación en base de datos. En caso contrario se mostrará una ventana de aviso en pantalla. Salida En el caso de que todo sea correcto la aplicación volverá a la pantalla Arbol2 del libro modificando el nodo de la rama correspondiente.
10 Writer’s Help • Importación de fichas entre libros. RF007 Importar Fichas Introducción Este requisito hace referencia a la posibilidad de importar fichas de personajes, objetos, localizaciones o razas de otro libro al actual. Este proceso se puede llevar a cabo en cualquier momento desde el nodo importar del árbol del libro. Entradas El usuario podrá escoger que fichas quiere importar al libro actual de entre todas las existentes en la base de datos. Proceso La aplicación procederá a incorporar dichas fichas al libro actual. El proceso no guardará las posibles relaciones que tenga la ficha a importar con otros objetos o personajes, por entenderse que estos no tienen porque existir en el nuevo libro. Cualquier modificación en alguna de ellas no implica la modificación de la ficha original, pues pasarán a ser independientes las unas de las otras. Salida En el caso de que todo sea correcto la aplicación volverá a la pantalla Arbol2 del libro añadiendo las nuevas fichas a sus correspondientes ramas del árbol. • Mantenimiento y gestión de ideas. RF008 Crear Idea Introducción Este requisito hace referencia a la posibilidad de crear una idea que pueda formar parte del libro. Mediante una interfaz gráfica se le pedirán al usuario los datos correspondientes a la idea. Estos datos, en su gran mayoría se podrán rellenar con posterioridad a excepción del nombre y de su estado que son obligatorios. La idea se podrá relacionar con las fichas Personaje, Objeto, Localización y Raza indicando así que tiene que ver con esas fichas. Entradas Todos los campos requieren valores alfanuméricos. Proceso La aplicación comprobará si los datos obligatorios están rellenos y se procederá a su grabación en base de datos. En caso contrario se mostrará una ventana de aviso en pantalla. Salida En el caso de que todo sea correcto se volverá a la pantalla Arbol2, añadiendo el nodo creado a la rama Ideas.
Información sobre la realización del proyecto 11 RF009 Eliminar Idea Introducción Mediante la pantalla Modificación de la idea, el usuario podrá eliminarla, eliminando las relaciones que esta pueda tener. Entradas Proceso La aplicación pedirá la confirmación al usuario antes de realizar la operación de eliminación. En caso afirmativo, procederá a la eliminación de la idea junto con las relaciones que esta pueda tener. En caso negativo, no hará nada. Salida En el caso de que todo sea correcto aparecerá la pantalla Árbol del libro, eliminando el nodo de la rama Ideas del árbol del libro. RF010 Modificar Idea Introducción Mediante una interfaz gráfica se le mostraran al usuario los datos de la idea seleccionada, pudiéndolos modificar. Estos datos, en su gran mayoría se podrán rellenar con posterioridad a excepción del nombre y de su estado, que son obligatorios Entradas Todos los campos requieren valores alfanuméricos. Proceso La aplicación comprobará si los datos obligatorios están rellenos y se procederá a su grabación en base de datos. En caso contrario se mostrará una ventana de aviso en pantalla. Salida En el caso de que todo sea correcto se mostrará la pantalla Arbol2 del libro, modificando el nodo correspondiente a la idea.
18 Writer’s Help • Asignación de fichas a ideas. RF024 Añadir fichas a Ideas Introducción Este requisito hace referencia a la posibilidad de indicar que una idea está relacionada con determinados personajes, objetos, localizaciones y razas mediante su selección en pantalla. Entradas Proceso La aplicación procederá a grabar las relaciones en el momento en que grabe la Idea en base de datos. Salida En el caso de que todo sea correcto aparecerá la pantalla Arbol2 del libro, modificando el nodo Idea. RF025 Eliminar fichas de Idea Introducción Este requisito hace referencia a la posibilidad de eliminar la relación de personajes, objetos, localizaciones o razas con una idea. Entradas Proceso La aplicación procederá a eliminar las relaciones en el momento en que grabe la idea en base de datos. Salida En el caso de que todo sea correcto volverá a la pantalla Arbol2 del libro, modificando el nodo Idea en la rama de Ideas. • Asignación de fichas a subtramas. RF026 Añadir fichas a Subtrama Introducción Este requisito hace referencia a la posibilidad de indicar que una Subtrama está relacionada con determinados personajes, objetos, localizaciones y razas mediante su selección en pantalla. Entradas Proceso La aplicación procederá a grabar las relaciones en el momento en que grabe la Subtrama en base de datos. Salida En el caso de que todo sea correcto volverá a la pantalla Arbol2 del libro, modificando el nodo subtrama.
Información sobre la realización del proyecto 19 RF027 Eliminar fichas de Subtrama Introducción Este requisito hace referencia a la posibilidad de eliminar la participación de personajes, objetos, localizaciones o razas en una Subtrama. Entradas Proceso La aplicación procederá a eliminar las relaciones en el momento en que grabe la Subtrama en base de datos. Salida En el caso de que todo sea correcto volverá a la pantalla Arbol2 del libro, modificando el nodo Subtrama en la rama de Subtramas. • Relación entre personajes. RF028 Añadir relación personaje - personaje Introducción Este requisito hace referencia a la posibilidad de indicar que un personaje tiene relación con otro. Deberá indicar que tipo de relación tienen. Esta relación se puede añadir a partir de la pantalla de Crear o Modificar Personaje. Entradas Todos los campos requieren valores alfanuméricos. Proceso La aplicación comprobará si los datos obligatorios están rellenos y se procederá a guardar los datos que se grabaran en base de datos en el momento en el que lo haga el personaje. En caso contrario se mostrará una ventana de aviso en pantalla. Salida En el caso de que todo sea correcto aparecerá la pantalla Crear o modificar personaje. Una vez grabado este, se modificará el nodo en el árbol.
20 Writer’s Help RF029 Eliminar relación personaje - personaje Introducción Este requisito hace referencia a la posibilidad de eliminar la relación de un personaje con otro. Esta relación se puede eliminar desde la pantalla de Crear o Modificar Personaje. Entradas Todos los campos requieren valores alfanuméricos. Proceso La aplicación procederá a guardar los datos, que se eliminaran de la base de datos en el momento en el que se grabe el personaje. Salida En el caso de que todo sea correcto aparecerá la pantalla Crear o modificar personaje. Una vez grabado este, se modificará el nodo en el árbol. RF030 Modificar relación personaje - personaje Introducción Este requisito hace referencia a la posibilidad de modificar una relación entre personajes ya existente. Deberá indicar que tipo de relación tienen. Esta relación se puede modificar a partir de la pantalla de Crear o Modificar Personaje. Entradas Todos los campos requieren valores alfanuméricos. Proceso La aplicación comprobará si los datos obligatorios están rellenos y se procederá a guardar los datos que se grabaran en base de datos en el momento en el que lo haga el personaje. En caso contrario se mostrará una ventana de aviso en pantalla. Salida En el caso de que todo sea correcto aparecerá la pantalla Crear o modificar personaje. Una vez grabado este, se modificará el nodo en el árbol.
Información sobre la realización del proyecto 21 • Relación entre personajes y objetos. RF031 Añadir relación personaje - objeto Introducción Este requisito hace referencia a la posibilidad de indicar que un personaje tiene relación con un objeto. Deberá indicar que tipo de relación es. Esta relación se puede añadir a partir de la pantalla de Crear o Modificar Personaje. Entradas Todos los campos requieren valores alfanuméricos. Proceso La aplicación comprobará si los datos obligatorios están rellenos y se procederá a guardar los datos que se grabaran en base de datos en el momento en el que lo haga el personaje. En caso contrario se mostrará una ventana de aviso en pantalla. Salida En el caso de que todo sea correcto aparecerá la pantalla Crear o modificar personaje. Una vez grabado este, se modificará el nodo en el árbol. RF032 Eliminar relación personaje - objeto Introducción Este requisito hace referencia a la posibilidad de eliminar la relación de un personaje con un objeto. Esta relación se puede eliminar desde la pantalla de Crear o Modificar Personaje. Entradas Todos los campos requieren valores alfanuméricos. Proceso La aplicación procederá a guardar los datos, que se eliminaran de la base de datos en el momento en el que se grabe el personaje. Salida En el caso de que todo sea correcto aparecerá la pantalla Crear o modificar personaje. Una vez grabado este, se modificará el nodo en el árbol.
22 Writer’s Help RF033 Modificar relación personaje - objeto Introducción Este requisito hace referencia a la posibilidad de modificar una relación entre un personaje y un objeto. Deberá indicar que tipo de relación tienen. Esta relación se puede modificar a partir de la pantalla de Crear o Modificar Personaje. Entradas Todos los campos requieren valores alfanuméricos. Proceso La aplicación comprobará si los datos obligatorios están rellenos y se procederá a guardar los datos que se grabaran en base de datos en el momento en el que lo haga el personaje. En caso contrario se mostrará una ventana de aviso en pantalla. Salida En el caso de que todo sea correcto aparecerá la pantalla Crear o modificar personaje. Una vez grabado este, se modificará el nodo en el árbol. • Mantenimiento de fotografías. RF034 Añadir imagen a ficha Introducción Este requisito hace referencia a la posibilidad de añadir imágenes o bocetos a las diferentes fichas (Personaje, Objeto, Localización, Raza). Estas imágenes se pueden añadir a partir de la pantalla de Crear o Modificar ficha. Entradas Las imágenes deben ser de un formato permitido: JPG, JPEG o GIF. Proceso La aplicación procederá a guardar las imágenes, que se grabaran en base de datos en el momento en el que lo haga el personaje. Salida En el caso de que todo sea correcto aparecerá la pantalla Arbol2 del libro, modificando el nodo.
Información sobre la realización del proyecto 23 RF035 Eliminar imagen de ficha Introducción Este requisito hace referencia a la posibilidad de eliminar imágenes o bocetos de las diferentes fichas (Personaje, Objeto, Localización, Raza). Estas imágenes se pueden eliminar desde la pantalla Crear o Modificar ficha. Entradas Proceso La aplicación procederá a eliminar las imágenes, que se eliminaran de la base de datos en el momento en el que lo se grabe el personaje. Salida En el caso de que todo sea correcto aparecerá la pantalla Arbol2 del libro, modificando el nodo.
24 Writer’s Help
Realización del proyecto 25 3. Realización del proyecto. En esta fase del proyecto se abordó la recopilación real de información que se necesitaría para desarrollar la aplicación. 3.1. Recopilación de información. Aunque la aplicación en principio no debe ser utilizada por usuarios reales, sí que se habló con usuarios potenciales. Como ya he comentado con anterioridad, se habló con escritores como Juan de Dios Garduño, Carlos Sisí y Alberto Caliani, que tuvieron la amabilidad de darme sus impresiones sobre lo que les gustaría tener en una aplicación de estas características. Gracias a la información resultante de estas conversaciones, elaboré los casos de uso mostrados en el capitulo anterior y la estructura de la base de datos. Otro claro ejemplo de la recopilación de información que se realizó fue la de incluir la característica Narrador en el Libro, que indica cómo está escrito el libro y que explico a continuación: • 3ª Persona (Narrador Omnisciente): El narrador omnisciente es aquel que todo lo sabe. Conoce los hechos y sabe lo que piensan y sienten los personajes. • 3ª Persona (Narrador Observador): Únicamente cuenta lo que observa. Cuenta la historia de modo parecido a como lo haría una cámara de cine. • 1ª Persona (Protagonista): A parte de narrador es también el protagonista. • 1ª Persona (Personaje Secundario): Es un personaje observador de los hechos. • 2ª Persona: El narrador cuenta la historia en 2ª persona, creando el efecto de estar contándosela a sí mismo. 3.1.1. Herramientas utilizadas Las herramientas que se han utilizado en la elaboración del PFC son: • Base de datos: La base de datos utilizada para el proyecto ha sido MySQL (http://www.mysql.com). Esta elección se ha debido principalmente, por tratarse de una base de datos relacional, teniendo también en cuanta su
26 Writer’s Help gratuidad. Con anterioridad no había trabajado con MySQL, con lo que además era un valor añadido. Se ha utilizado la herramienta MySQL Workbench 6.3 (https://www.mysql.com/products/workbench/) que engloba todo lo necesario para elaborar el diseño, la administración y la realización de las consultas. • Entorno de desarrollo: Se ha utilizado Eclipse (http://www.eclipse.org) para la codificación de la aplicación. Concretamente la versión Indigo. Para implementar la interfaz grafica de usuario se ha utilizado la biblioteca grafica Swing. • Como Java Runtime Environment se ha utilizado el 1.6. • Editor de textos: Para la elaboración de la documentación necesaria se ha utilizado Microsoft Office Word. • Para el soporte tanto en código como en textos, se ha utilizado Notepad++ (http://notepad-plus-plus.org). • Sistema operativo: La aplicación se ha desarrollado bajo Windows, principalmente bajo Windows 8.1 lo cual nos dio algún problema a la hora de instalar MySQL. Como características comunes a la elección de las herramientas de desarrollo se ha favorecido las que son de libre distribución. También he tenido en cuenta que tuviesen una amplia comunidad de usuarios y una buena integración entre ellas. Finalmente, señalar, que el no haber trabajado anteriormente con Swing ha hecho que perdiera más tiempo del deseado. 3.1.2. Diseño de la base de datos. A la hora de la elaboración de la base de datos, ya en sus primeros bocetos, había entidades que estaba claro que iban a aparecer: • Libro • Capítulo • Escena
Realización del proyecto 27 • Personaje • Idea • Subtrama Con posterioridad aparecieron nuevas, que enriquecían más aún la futura aplicación. • Objeto • Localización • Raza • Foto personaje • Foto objeto • Foto Localización • Foto raza Una vez iniciada la elaboración del modelo de base de datos, aparecieron nuevas tablas propias de las relaciones M:N. • Escena personaje • Escena objeto • Escena localización • Escena raza • Idea personaje • Idea objeto • Idea localización • Idea raza • Subtrama personaje • Subtrama objeto • Subtrama localización • Subtrama raza • Relación personajes • Relación personaje objeto 3.1.3. Modelo entidad relación. El modelo obtenido después de revisiones y correcciones fue el siguiente.
34 Writer’s Help También se ha intentado no caer en el problema de las múltiples ventanas, por lo que se desea mostrar en cada una de ellas la máxima información posible para que el usuario no esté abriendo una ventana tras otra. De igual forma, en las fichas se ha descartado la utilización de campos muy específicos, para evitar que el usuario se vea abrumado a la hora de rellenarlos. En este aspecto también juega el conocimiento de que cada escritor es distinto a otro y hay quien prefiere detallar al milímetro cualquier rasgo de un personaje y quien prefiere brindarle al lector su nombre y poco más, para que sea él quien lo cree en su mente. Por todos esto, en vez de mostrar un campo color de ojos y otro, color de pelo, se ha optado por uno llamado Descripción facial. En algunas fichas, como la de Ideas o Subtramas, aparecen unas listas mostrando todos los personajes, objetos, localizaciones y razas que se han creado en el libro. La finalidad de esto, es que el usuario pueda relacionarlos con la idea o la subtrama. Por ejemplo, el usuario está escribiendo un libro en el que se le ha ocurrido que tal vez podría incluir una fuerte discusión entre el personaje A y el B. Como no está seguro de si finalmente la incluirá en el libro la guarda como idea y en su ficha, aparte de desarrollarla, selecciona los personajes A y B. De esta manera la próxima vez que entre a ver esta ficha verá con rapidez que aquella es la idea en la que A y B discutían. La aplicación también incluye la posibilidad de añadir imágenes o bocetos en algunas fichas (Personajes, Objetos, Localizaciones, Razas) con el fin de que pueda usarlas a modo de inspiración. Al tratarse de una aplicación de escritorio, decidí dejar de lado el tema del acoplamiento entre esta capa y la capa Dominio. El motivo fue pensar que este “problema” era más propio de aplicaciones Web, las cuales suelen necesitar más actualizaciones de aspecto para no parecer anticuadas. Otro motivo fue evitar tantas consultas a la base de datos, ya que al tener los objetos directamente en el árbol, evitabas tener que consultar a la BBDD sobre que objeto estabas trabajando. Así pues, cuando vemos en la aplicación el Árbol o las listas, lo que estamos viendo es el propio objeto, no un String representativo de él.
Realización del proyecto 35 3.1.5. Capa aplicación. La capa aplicación es la encargada de la comunicación entre la capa presentación y la capa Dominio. En esta capa, el controlador recibe los datos necesarios para construir los objetos o los propios objetos, como también las peticiones a las que dará respuesta. También se incluye el fichero de conexión a base de datos, para que el controlador pase la conexión y sea él el encargado de decidir cuándo realizar el commit en las transacciones. Ejemplo de esto sería el momento de añadir fotos a un personaje ya creado. El controlador llama al método iRegistroPersonajes.addFoto(…) para añadirla, si todo va correcto, posteriormente llama a iRegistroPersonajes.updatePersonaje(…) que en el caso de que devuelva algún error será el propio controlador el encargado de realizar el rollback. Cabe destacar que en nuestro controlador tenemos siempre el libro sobre el que el usuario está trabajando lo que agiliza el rendimiento de la aplicación. Fig. 4 Capa aplicación
36 Writer’s Help 3.1.6. Capa persistencia. La capa persistencia es la encargada de atacar la base de datos. Sus clases reciben los objetos con los que tendrá que comunicarse con la BBDD, ya sea para grabar el objeto en la base de datos, como para utilizarlos para la realización de búsquedas. A continuación se muestra un ejemplo de método de la capa persistencia. Concretamente es el encargado de recuperar todos los personajes de un libro. Estos serán guardados en un ArrayList de Personajes. Fig. 5 Capa persistencia
Realización del proyecto 37 Fig. 6 Método getPersonajesByLi
38 Writer’s Help 3.2. Realización de pruebas No ha habido una fase especifica de pruebas, ya que la manera de trabajar ha sido la de centrarse en un caso de uso y desarrollarlo hasta que estuviese finalizado. Esto hacía que constantemente se realizaran pruebas sobre ese caso hasta haberlo finalizado. Una vez acabado, si se realizaba una prueba final para comprobar su correcto funcionamiento. Al finalizar la aplicación, sí se realizó una prueba exhaustiva de ella donde se comprobó: • La implementación de todos los casos de uso. • Su correcto funcionamiento. • Que la aplicación fuera coherente en el aspecto visual. Esta manera de trabajar hizo que aunque se avanzara con más lentitud a la hora de programar, se recuperara posteriormente el tiempo, ya que al acabar un caso de uso, prácticamente podías darlo por totalmente finalizado. Además, personalmente creo que anímicamente es mejor para el programador, pues va viendo resultados y evita enfrentarse a unas pruebas que pueden conllevar a descubrir que tienes un código lleno de errores. También el hecho de que muchos casos de uso sean parecidos, hace que al finalizar uno totalmente todo lo que has aprendido en él te sirva para avanzar con mayor velocidad en el siguiente. Con todo y con eso, vamos a mostrar en este documento la prueba realizada en la creación y modificación de un personaje. 3.2.1. Pruebas del caso de uso Creación y modificación de un personaje Como se puede ver en la Fig. 6, partimos de la base de un nuevo libro en el que no existe aún ningún elemento. Nuestro objetivo es crear un nuevo personaje y posteriormente modificarlo.
Realización del proyecto 39 Fig. 7 Captura del árbol vacío Lo primero que hacemos es abrir la pantalla Crear Personaje a partir de la carpeta Personajes (Debemos posicionarnos encima y clicar). A continuación aparecerá la pantalla de creación del personaje.
40 Writer’s Help Fig. 8 Captura de pantalla Crear Personaje En esta pantalla hay dos campos que son obligatorios. La categoría nos indica si el personaje es Principal o Secundario y aunque es obligatorio al tratarse de un JCombobox el usuario no podrá dejarlo en blanco. El campo nombre también es obligatorio. Si el usuario intenta grabar el personaje sin rellenarlo le aparecerá un aviso en pantalla.
Realización del proyecto 41 Fig. 9 Captura de pantalla Crear Personaje (aviso) Pero en cambio, si después de rellanar los datos convenientes, todo va bien, aparecerá otro aviso indicándole que el personaje se ha creado correctamente. Fig. 10 Captura de pantalla Crear Personaje (rellena)
42 Writer’s Help Fig. 11 Captura de pantalla Crear Personaje (creado) A continuación, el nuevo personaje creado aparecerá dentro de la subcarpeta Principales en la carpeta Personaje. Tal como se puede apreciar en la Fig.11.
Realización del proyecto 43 Fig. 12 Captura del árbol lleno A continuación podemos proceder a modificar el personaje, posicionándonos sobre él en el árbol y clicando. Se abrirá la pantalla Modificar Personaje sobre el que podremos realizar las operaciones oportunas. En este ejemplo vamos a crear antes una localización y un objeto, para relacionarlos con el personaje.
Conclusiones 50