Interfaz gráfica para el sistema de comunicación no vocal SPC

2,326 views

Published on

Documentación del Proyecto fin de carrera basada en una aplicación de escritorio para la creación de trableros de comunicación a través de pictogramas.

  • Be the first to comment

  • Be the first to like this

Interfaz gráfica para el sistema de comunicación no vocal SPC

  1. 1. ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA INGENIERÍA TÉCNICA INFORMÁTICA DE GESTIÓN INTERFAZ GRÁFICO PARA EL SISTEMA DE COMUNICACIÓN NO VOCAL SPC Realizado por GAGO POYATOS, JUAN MANUEL Departamento Matemática Aplicada I Sevilla, Diciembre de 2010
  2. 2. Dedico este proyecto a Nuria, mi pareja, quien ha estadosiempre ahí para apoyarme, ayudarme y darme ánimos. Sin ti, esto no hubiese sido posible.
  3. 3. “El derecho a comunicarse es un derecho humano básico, y el medio por elcual todos los demás derechos se llevan a cabo”. Asociación Americana de Igualdad, Oportunidad e Inclusión para Personascon Discapacidad (TASH)
  4. 4. ÍNDICE GENERAL1. INTRODUCCIÓN………………………………………………………………………….1 1.1. Definición de objetivos………………………………………………….…….....………1 1.2. Justificación…………………………………………………………….………………..2 1.2.1. La Comunicación Aumentativa y Alternativa…………………….……….………2 1.2.2. Representación del lenguaje mediante sistemas pictográficos…….…….……..….3 1.2.3. Tablero de comunicación…………………………………....…….………………4 1.2.4. ¿A quiénes van dirigidos?........................................................................................4 1.2.5. ¿Cómo funcionan?....................................................................................................42. ANÁLISIS DE ANTECENDENTES…………………...………………………………….5 2.1. Tecnología informática en comunicación aumentativa….…………………………...…5 2.2. Aportación realizada…………………………………………………………………...103. ANÁLISIS TEMPORAL Y DE COSTES DE DESARROLLO……………..…………12 3.1. Planificación temporal………………………………………………………………....12 3.2. Evaluación de costes…………………………………………………………………...134. ANÁLISIS DE REQUISITOS…………………………………………………...…….....15 4.1. Requisitos funcionales…………………………………………………………………15 4.2. Casos de uso………………………………………………………………….…...…...17 4.3. Requisitos no funcionales……………………………………………………………....195. DISEÑO…………………………………………………………………...……………….21 5.1. Diseño arquitectónico………………………………………………………….……....21 5.2. Patrones de diseño…………………………………………………………….……….22 5.3. Diseño de datos……………………………………………………………….………..23 5.3.1. Diagrama Entidad-Relación del sistema……………………………...………....24 5.3.2. Entidades del modelo de datos………………………………………..…………25 5.3.3. Modelo físico……………………………………………...…………….……….27 5.4. Interfaz del usuario final……………………………………………………….………27 5.4.1. Interfaz “Aplicación principal”………………………………...………………..28
  5. 5. 5.4.2. Interfaz “Documento de pictogramas”……………………………………….….29 5.4.3. Interfaz “Base de datos”…………………………………………...…………….30 5.4.4. Interfaz “Búsqueda por coincidencias”………………………………………….31 5.4.5. Interfaz “Búsqueda por etiquetas”……………………………………….………32 5.4.6. Interfaz “Acerca de”………………………………………………………..……336. IMPLEMENTACIÓN……………………………………………………………..……...34 6.1. Entorno de programación y lenguaje de programación……………………….…….....34 6.2. ORM: Entity Framework 4.0………………………………………………...………...34 6.2.1. ¿Qué es el Entity Framework?..............................................................................34 6.2.2. Rol de Entity Framework en una arquitectura n-capas………………………….35 6.2.3. Creando el modelo de entidades-relación…………………...…………………..35 6.3. Base de datos………………………………………………………...……….………..38 6.3.1. MySQL……………………………………………………...…...…….………...38 6.3.2. MySQL Connector con .NET v6.3.0……………………………...……………..39 6.3.3. Conexión con la base de datos…………………………………………..………40 6.4. Implementación de la capa de “Acceso de datos”……………………….……………42 6.4.1. Clase PictogramaDAL…………………………………………..……………….42 6.4.1.1. Insertar un pictograma…………………………………….….……….42 6.4.1.2. Obtener todos los pictogramas……………………………...…………42 6.4.1.3. Obtener pictogramas coincidentes…………………………...………..43 6.4.1.4. Obtener pictogramas por etiquetas…………………………………….43 6.4.2. Clase CodigoColorDAL……………………………………………………....…45 6.4.2.1. Obtener el color de un pictograma……………………...……………..45 6.4.3. Clase CategoriaDAL……………………………………………….……………46 6.4.3.1. Obtener todas las categorías existentes………………………………..46 6.4.4. Clase SubcategoriaDAL…………………………………………...…..………...46 6.4.4.1. Obtener subcategorías de cada categoría……………………….……..46 6.5. Implementación de la capa de “Lógica de negocio”…………………………………..47 6.6. Entidades de negocio…………………………………………..………………..……..47
  6. 6. 6.7. Implementación de la capa de “Presentación”……………………………………..…...51 6.7.1. Usabilidad de una interfaz hombre-máquina…………………………………....51 6.7.2. Algoritmos más relevantes de la capa de presentación…………………..……...51 6.7.2.1. Método buscar pictogramas de la ventana principal……….………….51 6.7.2.2. Insertar pictograma en el panel mediante drag&drop………….…..….53 6.7.2.3. Control BackgroundWorker para cargar la base de datos………….…54 6.7.2.4. Buscar pictogramas por etiquetas…………………………..…………55 6.7.2.5. Mover pictogramas por el documento de pictogramas………….…….567. PRUEBAS…………………………………………………………………………….……57 7.1. Ejemplo práctico 1: Buscar un pictograma en la ventana principal……………...……57 7.2. Ejemplo práctico 2: Insertar pictogramas en el documento mediante drag&drop….....58 7.3. Ejemplo práctico 3: Insertar un pictograma en la base de datos………………………..59 7.4. Ejemplo práctico 4: Eliminar un pictograma de la base de datos………..……….……60 7.5. Ejemplo práctico 5: Búsqueda dinámica de pictogramas…………………….….…….62 7.6. Ejemplo práctico 6: Búsqueda de pictogramas por etiquetas…………….………..…..63 7.7. Ejemplo práctico 7: Crear tableros de comunicación…………………….……………66 7.7.1. Tablero de comunicación: “El Ratoncito Pérez”……………………..…………66 7.7.2. Tablero de comunicación: “¿Qué quieres de primer plato para comer?”….…...68 7.7.3. Tablero de comunicación: “Un horario diario”……………………………...….688. CONCLUSIONES…………………………………………………………………...…….699. BIBLIOGRAFÍA……………………………………………………………………..……70
  7. 7. 1 INTRODUCCIÓN1.1 Definición de objetivosA continuación se enumeran los objetivos del proyecto: Implementación de una aplicación de escritorio para la creación y edición de tableros de comunicación de una manera rápida y sencilla. La aplicación dispondrá de las siguientes herramientas: • Buscador superior dinámico en la barra de herramientas superior. • Barra lateral de acceso rápido para interactuar con los pictogramas. • Formulario para la búsqueda dinámica de pictogramas. • Formulario para la búsqueda de pictogramas por etiquetas (tags). • Formulario para interaccionar con la base de datos dando la posibilidad al usuario de: o insertar pictogramas propios pudiendo ser la imagen en distintos formatos. o Eliminar cualquier pictograma de la base de datos. • Área de documento de pictogramas en el cual se insertarán los pictogramas para formar el tablero de comunicación. • Área de propiedades para la modificación de pictogramas y del documento. • Posibilidad de crear varios documentos de pictogramas a la vez. • Barra de estado de la aplicación que generará información sobre el estado de la aplicación. La aplicación va dirigida a padres, madres, tutor, psicólogos, psicopedagogos que trabajen o mantengan relación con personas con alguna deficiencia en el área del lenguaje, como por ejemplo, niños autistas o con el síndrome de Asperger. La aplicación debe ser usable y accesible pero sobre todo intuitiva, para que pueda ser usada por cualquier persona que no posea amplios conocimientos informáticos. La aplicación debe tener una amplia colección de pictogramas en su base de datos para poder interactuar con ellos. La aplicación deberá ofrecer la posibilidad de modificar las distintas propiedades de los pictogramas, como por ejemplo; ancho y alto, borde, mostrar nombre del pictograma, etc.… Además se podrá modificar las propiedades del documento de pictogramas como por ejemplo; ancho y alto, márgenes, color de fondo, título, etc.…. -1-
  8. 8. 1.2 Justificación El lenguaje oral es una de las formas básicas para comunicarnos con el entorno ymodificarlo en función de nuestras necesidades y deseos. Si una persona no puede comunicar, no podrá tomar decisiones que afecten a su vida, loque originará dependencia y aislamiento. Nuestra sociedad está acostumbrada a ver a una persona en silla de ruedas, llevando unaudífono o utilizando gafas, pero quizá no es tan habitual ver a alguien usando un dispositivo decomunicación. Pues bien, cuando una persona tiene dificultades para comunicarse, utiliza un sistemaalternativo o aumentativo de comunicación. Existen múltiples dispositivos, sistemas y recursos que favorecen la interacción comunicativa cuando existen dificultades para que pueda llevarse a cabo la comunicación. 1.2.1 La Comunicación Aumentativa y Alternativa • Comunicación aumentativa significa comunicación de apoyo o de ayuda. La palabra <aumentativa> subraya el hecho de que la enseñanza de las formas alternativas de comunicación tiene un doble objetivos, a saber: promover y apoyar el habla, y garantizar una forma de comunicación alternativa si la persona no aprende a hablar. En resumen, los sistemas aumentativos de comunicación, complementan el lenguaje oral cuando, por sí solo, no es suficiente para entablar una comunicación efectiva con el entorno. • Llamamos comunicación alternativa a cualquier forma de comunicación distinta del habla y empleada por una persona en contextos de comunicación cara a cara. El uso de signos manuales y gráficos, el sistema Morse, la escritura, etc., -2-
  9. 9. son formas alternativas de comunicación para una persona que carece de la habilidad de hablar. En resumen, los sistemas alternativos de comunicación, sustituyen al lenguaje oralcuando éste no es comprensible o está ausente. Ambos sistemas, aumentativos y alternativos, permiten que personas con dificultades decomunicación puedan relacionarse e interactuar con los demás, manifestando sus opiniones,sentimientos y la toma de decisiones personales para afrontar y controlar su propia vida, En definitiva poder participar en la sociedad en igualdad de derechos yoportunidades. 1.2.2 Representación del lenguaje mediante sistemas pictográficos En este proyecto se usará el sistema pictográfico elaborado por Roxana Mayer-Johnsonen 1981, basado principalmente en símbolos pictográficos (dibujos sencillos e icónicos) querepresentan la realidad. Se complementan con algunos ideogramas y con el abecedario, losnúmeros y algunas palabras carentes de símbolo. Cada pictograma lleva escrita encima lapalabra, aunque en algunos conceptos abstractos tan solo aparecen las palabras. Roxana Mayer recomienda asignar un fondo o reborde de color, en función de lacategoría gramatical de cada pictograma. Con el objeto de unificar estas consignas y facilitar eluso de signos de diferentes sistemas en el mismo panel de trabajo de un usuario, estos coloresson: - Fórmulas sociales (mensajes con contenido social): rosa o morado - Verbos: verde - Personas o sustantivos referidos a personas: amarillo - Nombres o sustantivos en general: naranja - Descriptivos (adjetivos): azul - Todo lo demás: blanco Las ventajas de usar este código de colores son: • Ayudan a recordar dónde está el símbolo en el tablero de comunicación, agilizando así su búsqueda. • Favorece el desarrollo de la organización sintáctica de enunciados sencillos. • Mejora el aspecto visual del tablero de comunicación. A nivel sintáctico, no tiene una sintaxis propia, se adecua a cada idioma. Al carecer denumerosos nexos, adverbios y partículas hace que la construcción de frases suela ser simple. En definitiva, un sistema pictográfico es la representación del lenguaje mediantedibujos, fotos e imágenes. -3-
  10. 10. 1.2.3 Tablero de comunicación Es un soporte en el que están organizados aquellos elementos que utilizamos paracomunicarnos: pictogramas, letras, sílabas, etc. En un tablero de comunicación podemos usar varias páginas. Si podemos indicar,señalaremos las casillas para componer el mensaje. Si el usuario tiene dificultades para hacerlopersonalmente, el interlocutor realizará un barrido manual por el tablero. Es decir, señalará lascasillas para que podamos confirmarle cuáles forman el mensaje. Para una mejor comprensión, es muy importante incorporar el sistema de comunicaciónal entorno de la persona, sobre todo en edades tempranas. Para ello, colocaremos lospictogramas en lugares y estancias en los que se desenvuelvan normalmente, para que resultemás fácil su aprendizaje y así poder integrarlos en su día a día. 1.2.4 ¿A quiénes van dirigidos? Los tableros de comunicación son herramientas de comunicación para: • Personas con parálisis cerebral sin posibilidad de habla inteligible • Personas con déficit motor grave • Personas con déficit motor asociado a sordera, afasia, autismo, retraso mental • Personas en general con problemas de comunicación. 1.2.5 ¿Cómo funciona? El método recomienda una serie de consideraciones generales para facilitar suenseñanza. La primera consistiría en el trazado de un plan en el que se establezca el vocabulario,los objetivos, orden de presentación… Una vez confeccionados el plan, se recomienda seguir cuatro etapas: - Comenzar por la enseñanza de aquellos signos que sean altamente significativos parael usuario y que vayan a ser de uso frecuente en su vida cotidiana. - Colocar los símbolos aprendidos en el soporte de comunicación. En su colocacióntendremos en cuenta: • Las capacidades motrices del usuario. • Ordenar los pictogramas en columnas de categorías semánticas para facilitar laestructuración de la frase. - Incorporar los símbolos aprendidos a la comunicación cotidiana. - Enseñar a encadenar palabras (frases simples). -4-
  11. 11. 2 ANÁLISIS DE ANTECEDENTES 2.1 Tecnología informática en comunicación aumentativa Los ordenadores desde los inicios han presentado grandes atractivos. Comomáquinas programables y configurables, permiten idear “software” de comunicación apartir de las prestaciones que consideremos más adecuadas. Es obvio que el uso de tableros físicos presenta numerosas limitaciones cuandola limitación motriz implica el uso de sistemas de señalización indirecta (barrido,sistema codificado, etc.). Su uso es complicado, o poco fiable. El comunicador softwareha supuesto un avance a estas limitaciones y han permitido introducir el mensaje en voz(grabada o sintética), lo que ha supuesto una notable mejoría. A continuación se describen algunas de las aportaciones más relevantes de latecnología informática: - Escribir con Símbolos: Escribir con Símbolos es una herramienta decomunicación, lenguaje y lectoescritura que utiliza símbolos, voz y actividades paraayudar a una persona a leer y escribir. -5-
  12. 12. - CAR: Se trata de un espacio Web en el que, además de diversa informaciónacerca de los sistemas de comunicación aumentativa y alternativa más usados y de latecnología de ayuda para su desarrollo, nos ofrece una amplia base de datos (2500pictogramas, ideogramas, alfabeto y números). - Plaphoons: Programa que, aunque ideado en un principio como comunicador,puede además prestar otras funcionalidades tales como el aprendizaje de lalectoescritura o el desarrollo del lenguaje oral mediante el uso de pictogramas. Diseñadopara usuarios con discapacidad motora que no pueden comunicar mediante la voz ypresentan un control limitado de su motricidad. -6-
  13. 13. - Peapo: Aplicación ideada para la estructuración ambiental mediante elordenador, usando como base una galería pictográfica propia, aunque soporta cualquierade los sistemas pictográficos existentes. La aplicación consta de veinte celdas por cadauno de los días de la semana para la elaboración de horarios, agendas o secuencias deacción. - Speaking Dinamically: Procesador de textos y signos gráficos, con vozsintetizada o digitalizada. Permite programar un sistema de comunicación de pantallasdinámicas de selección, combinando los signos gráficos y el texto escrito. Se puedeutilizar mediante conmutadores, el ratón o con pantallas táctiles. De la misma formapueden introducirse modificadores gramaticales, de manera que pueden realizarseconjugaciones verbales combinando las casillas de “persona”, tiempo verbal y el verboa conjugar. -7-
  14. 14. - Comunicate Webwide: Es un servicio de suscripción mediante el cual seofrece al usuario la posibilidad de acceder a todos los contenidos de la Web, por mediode la traducción de los mismos al sistema de símbolos Rebus. Igualmente permiteañadir las Web preferidas en la sección de favoritos incorporando un icono significativoelegido por el usuario. - Comunicate INPRINT2: Se trata de un procesador de símbolos que incluyelos símbolos Rebus en color y blanco y negro. Pueden incorporarse otras galerías desímbolos de usuario. El programa permite realizar todo tipo de textos informativos:folletos, revistas, libros y cuentos ya q se dispone de numerosas plantillas yherramientas específicas, tales como fondos, personajes, burbujas, marcos, bocadillosde conversación versátiles, así como el conversor de textos-iconos. -8-
  15. 15. - Boardmaker: Programa para la confección de tableros, agendas, plantillas,etc. Contiene una base de datos con unos 8000 símbolos SPC. El programa facilita laconfección y elaboración de tableros para comunicadores de alta y baja tecnología,permite generar una base de datos con iconos personalizados, ajuste del tamaño de losiconos, posibilidad de uso en varios idiomas y de diferentes tipos de letra. Los iconosexistentes pueden ser consultados tanto semánticamente como temáticamente. - Make-A-Schedule: Programa para trabajar el sistema de comunicación porintercambio de imágenes (PECS). Se trata de una aplicación “on-line” que dispone de800 pictogramas en blanco y negro y en color, tanto para guardar en nuestro equipocomo para imprimir o realizar actividades de coloreado de los mismos. Permite larealización de horarios, historias sociales y recordatorios. -9-
  16. 16. - Sicla: Software para la comunicación oral mediante la traducción de símbolosy/o texto a voz, dispone, además, de agenda personal de teléfonos y direcciones. 2.2 Aportación realizada Como se ha descrito en el punto anterior, podemos observar que existe variedada la hora de poder elegir un software para trabajar con pictogramas, calendarios, rutinas,etc. Después de investigar sobre el tema y de buscar información sobre cómo setrabaja con personas con algún tipo de trastorno TEA, consigo una cita con Patricia,psicopedagoga de un centro de niños autistas en Jerez y que en la actualidad trabajancon varios niños con autismo. Después de explicarme cómo trabajan y viven el día a día con estos niños tanespeciales les comento sobre mi proyecto fin de carrera y aceptan a ayudarme sobre laorientación que podría tomar la aplicación. Para la realización de pictogramas y los tableros de comunicación me informanque trabajan con el software “Boardmaker” (citado en el punto anterior) y me enumeranvarios problemas que se encuentran al trabajar con él. Entre estos problemas están: • La mayoría de las aplicaciones orientadas a la creación de tableros de comunicación mediantes la utilización de pictogramas son aplicaciones de pago y sus licencias son muy caras (329.000$). • Aplicación compleja. • Bajo nivel de abstracción en las tareas. • Los menús suelen ser complejos y saturados de opciones con lo que puede dificultar la comprensión de su uso intuitivo. - 10 -
  17. 17. • Edición paso a paso de los pictogramas; forma, colores, tamaño, imagen, etc., por lo que se hace una tarea pesada a la hora de elaborar tableros de comunicación que posean varios pictogramas. - 11 -
  18. 18. 3 ANÁLISIS TEMPORAL Y DE COSTES DE DESARROLLO Para que un proyecto sea exitoso, es importante cumplir los plazos acordados conantelación y no sobrepasar los costes estimados. Para ello una buena planificación temporal y decostes es de suma importancia. 3.1 Planificación temporal La planificación temporal es una actividad que el gestor realiza distribuyendo elesfuerzo a lo largo de la duración del proyecto, asignando el esfuerzo a las tareas específicas dela ingeniería del software. Considerando que el proyecto académico consta de 9 créditos ECTS y cada crédito son25 horas lectivas, hacen un total de 225 horas de trabajo dedicado al proyecto. TAREA TIEMPO DEDICADO (h) Investigación sobre el tema 12 Introducción 1 Planificación temporal y evaluación 1 de costes Elicitación de requisitos 10 Análisis de requisitos 15 Diseño 30 Codificación 250 Pruebas de ejecución 7 Corrección de errores 2 Manual de usuario 2 Conclusiones 1 Bibliografía 1 TOTAL 332 - 12 -
  19. 19. 3.2 Evaluación de costes Para la evaluación de costes, se tendrán en cuenta los siguientes puntos: a- Costes de personal, corresponderá al total de horas dedicadas al proyecto. b- Coste de hardware, contemplará el precio del equipo usado durante la realización dela aplicación. c- Coste de software, valor del conjunto de programas informáticos utilizados. a- Coste de personal: teniendo en cuenta que el salario medio anual de un ingenierotécnico en España es de 15.868,44 €, y que al año se trabaja una media de 50 semanas con 5días laborables y 8 horas cada jornada, se obtiene que la hora de un trabajador vale 7,93 €. Con este valor aproximado, y dado que el número de horas estimadas que se handedicado a este proyecto es de 332, se deduce un total de 2.632,76 €. b- Coste de hardware: en este apartado se incluye el precio de un ordenador portátil,1.100€ con un coste de amortización de 5 años, y sabiendo que la duración del proyecto ha sidode 5 meses, se obtiene un total de: (1.100 / (5 x 12 meses)) x 5 meses = 91,67 € c- Coste de software: durante la realización del proyecto se ha utilizado el siguientesoftware: Software Precio (€) MS Visual Studio 2010 800,00 MS Office 129,99 MySQL 5.0 0,00 PDF Creator 0,00 Edraw Max Professional 79,40 Total 1009,39 A este valor se le aplica el mismo coste de amortización que para el apartado delhardware: (1009,39 / (5 x 12)) x 5 meses = 84,12 € - 13 -
  20. 20. Presupuesto: Concepto Precio (€) Personal 2.632,76 Hardware 91,67 Software 84,12 Total 2.808,55 - 14 -
  21. 21. 4 ANÁLISIS DE REQUISITOS Uno de los primeros procesos que se realizan en un proyecto de construcción desoftware es la especificación de requisitos. Los objetivos de este proceso son identificar, validary documentar los requisitos de software; es decir, determinar las características que deberántener el sistema o las restricciones que deberá cumplir para que sea aceptado por el cliente y losfuturos usuarios del sistema de software. El producto final de este proceso es el documento de especificación de requisitos desoftware y en éste se señala, con el detalle adecuado, lo que el usuario necesita del sistemasoftware. Es por ello, que el documento de requisitos de software se considera como un contratoentre el cliente y el equipo de desarrollo. 4.1 Requisitos funcionales Un requisito funcional define el comportamiento interno del software: cálculos, detallestécnicos, manipulación de datos y otras funcionalidades específicas que muestran cómo loscasos de uso serán llevados a la práctica. Como se define en la ingeniería de requisitos, los requisitos funcionales establecen loscomportamientos del sistema. • Gestión de pictogramas del sistema • REQF1: Inserción de pictogramas nuevos: El usuario podrá insertar nuevos pictogramas pudiendo elegir a qué tipo pertenece según su color, categoría y subcategoría. Además podrá ingresar su definición y las etiquetas correspondientes. • REQF2: Eliminación de pictogramas: El usuario podrá eliminar cualquier pictograma cuando ya no le interese tenerlo almacenado en la base de datos. • Gestión de búsqueda de pictogramas • REQF3: Búsqueda por nombre: El usuario podrá hacer una búsqueda directa de cualquier pictograma. • REQF4: Búsqueda por coincidencias: El usuario podrá hacer una búsqueda dinámica según el texto introducido en la caja de búsqueda apareciendo los pictogramas coincidentes. • REQF5: Búsqueda por etiquetas: El usuario podrá hacer una búsqueda por tema, es decir; podrá realizar una búsqueda según una etiqueta - 15 -
  22. 22. introducida dando como resultados todos los pictogramas que estén englobados en esa etiqueta (tag).• Gestión de la interfaz de la aplicación • REQF6: Habilitar/deshabilitar paneles: El usuario tendrá la opción de mostrar u ocultar diferentes paneles de opciones entre ellos el panel de opciones superior, panel lateral, barra de herramientas y la barra de estado.• Gestión de propiedades del documento de pictogramas • REQF7: El usuario dispondrá de un menú para manejar las propiedades del documento de pictogramas tales como el ancho y alto del documento, color de fondo, título del documento y los márgenes.• Gestión de propiedades de los pictogramas del documento • REQF8: El usuario dispondrá de un menú para manejar las propiedades de los pictogramas insertados en el documento de pictogramas tales como mostrar del borde, tamaño del borde, mostrar nombre de los pictogramas insertados, etc.• Gestión de propiedades del pictograma seleccionado • REQF9: El usuario podrá interactuar con las propiedades de un pictograma seleccionado dando la posibilidad de cambiar propiedades como el nombre, ancho y alto y el tamaño con el que se deben insertar los pictogramas.• Gestión de los tableros de comunicación terminados • REQF10: Salvar tableros de comunicación como imagen: Se podrán guardar los tableros de comunicación como una imagen en los formatos jpg, png, bmp, tiff y gif. • REQF11: Salvar tableros de comunicación como PDF: También se podrán guardar los tableros de comunicación en formato PDF.• Gestión de operaciones sobre el tablero de comunicación • REQF12: Insertar pictogramas: El usuario podrá insertar pictogramas a través de un botón o mediante un drag&drop (arrastrar y soltar) en el documento de pictogramas. • REQF13: Eliminar un pictograma: El usuario podrá eliminar un pictograma seleccionado mediante un botón ‘Borrar’ o mediante las teclas SUPR o DEL. - 16 -
  23. 23. • REQF14: Limpiar un documento completo: El usuario podrá limpiar completamente un documento de pictogramas mediante un botón ‘Limpiar’. 4.2 Casos de uso Para determinar la funcionalidad de un sistema a desarrollar, UML señala el uso de doselementos: el actor y el caso de uso. El actor representa una entidad externa que interactúa con el sistema. Las entidadesexternas podrían ser personas u otros sistemas. Es importante resaltar que los actores sonabstracciones de papeles o roles y no necesariamente tienen una correspondencia directa conpersonas. A diferencia del actor, el caso de uso hace referencia al sistema a construir, detallandosu comportamiento, el cual se traduce en resultados que pueden ser observados por el actor. Loscasos de uso describen las cosas que los actores quieren que el sistema haga, por lo que un casode uso debería ser una tarea completa desde la perspectiva del actor. Los actores y los casos de uso forman un modelo al que se le denomina “modelo decasos de uso”. Dicho modelo muestra el comportamiento del sistema desde la perspectiva delusuario y servirá como producto de entrada para el análisis y diseño del sistema. Caso de uso 1 - 17 -
  24. 24. Caso de uso 2Caso de uso 3Caso de uso 4 - 18 -
  25. 25. Caso de uso 5 4.3 Requisitos no funcionales Un requisito no funcional es, en la ingeniería de sistemas y la ingeniería de software,un requisito que especifica criterios que pueden usarse para juzgar la operación de un sistema enlugar de sus comportamientos específicos. Por tanto, se refieren a todos los requisitos que nidescriben información a guardar, ni funciones a realizar. Según la definición anterior la aplicación deberá cumplir los siguientes requisitos: - REQNF1: Compatibilidad a la hora de insertar imágenes en la base de datos, deberásoportar varios formatos. - REQNF2: Extensible, la aplicación deberá ser fácilmente extensible pudiendo agregarnuevas funcionalidades en un futuro. - REQNF3: Eficaz, la aplicación deberá realizar su cometido de una manera eficaz. - REQNF4: Usable, aspecto importante a cumplir, además del grado de usabilidad queposea la aplicación dependerán además las siguientes propiedades: - REQNF5: Facilidad de aprendizaje, el usuario deberá aprender a interaccionar de unamanera fácil y efectiva con la aplicación. - REQNF6: Facilidad de uso, el usuario deberá utilizar las herramientas con facilidad,en pocos pasos o de una forma natural sin importar la qué formación posea. - REQNF7: Flexibilidad, el usuario deberá intercambiar información con el sistema deuna manera óptima. - REQNF8: Tiempo de respuesta, viene determinado por la capacidad del procesadordonde se ejecuta la aplicación. - 19 -
  26. 26. - REQNF9: Manejo de errores, la aplicación maneja de forma automática los erroresque se puedan producir mostrando un mensaje indicando el tipo de error. - REQNF10: Integridad referencial en la base de datos para asegurarse que los registrosde tablas relacionadas sean válidos cuando se borren o se inserten nuevos pictogramas. - 20 -
  27. 27. 5 DISEÑO El diseño de la aplicación se ha especificado en UML (Unified Modeling Language).UML es un lenguaje de modelado que permite la construcción de distintos modelos. Un modeloes una representación en algún medio que captura los aspectos importantes del sistemamodelado desde un determinado punto de vista. Los propósitos de los modelos son: • Pensar sobre un diseño de un sistema • Capturar decisiones de diseño de un sistema • Explorar posibles soluciones a un problema económicamente • Generar productos de trabajo útiles • Documentar Todos los diagramas que definen el diseño de la aplicación se han realizado con elprograma Edraw Max Professional v5.2 5.1 Diseño arquitectónico La arquitectura de la aplicación que se ha utilizado para dividir las secciones principaleses la llamada arquitectura de tres capas. Con esta arquitectura están diferenciadas las partesde la aplicación que se especifican a continuación: o Capa de presentación o de usuario (UL): Las interfaces de usuario se implementan utilizando formularios de Windows Forms y controles a través de los cuales la aplicación ofrezca toda la funcionalidad de procesamiento de datos. Esto le proporciona al usuario un alto nivel de control sobre la interfaz y el control total sobre el funcionamiento de la aplicación. o Capa lógica o de negocio (BLL): Esta capa se encarga de implementar la lógica de negocio de la aplicación. Se denomina capa de negocio (e incluso de lógica de negocio) pues es aquí donde se establecen todas las reglas que deben cumplirse. Esta capa se comunica con la capa de presentación, para recibir las solicitudes y presentar los resultados, y con las capa de datos, para solicitar al gestor de base de datos para almacenar o recuperar datos de él. o Capa de acceso a datos (DAL): Está formada por un gestor de bases de datos que realiza todo el almacenamiento de datos, recibe solicitudes de almacenamiento o recuperación de información desde la capa de negocio. En este proyecto se ha utilizado concretamente el gestor de base de datos MySQL y como lenguaje de consulta LINQ to Entities. • Entidades de negocio: Serán los objetos encargados de intercambiar información entre las capa de acceso a datos y la de la lógica de negocio. Un objeto de negocio se construye a partir de una clase que únicamente contiene propiedades, que se corresponderán en la mayoría de los casos con los campos que conforman cada tabla. Su misión - 21 -
  28. 28. principal es servir de contenedor destinado exclusivamente a la transferencia de información. En el proyecto se utilizarán las entidades Pictograma, CodigoColor, Categoría y Subcategoría. A continuación se muestra la arquitectura de la aplicación: 5.2 Patrones de diseño En este punto se van a definir los patrones de diseño que implementa la aplicación. Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunesen el desarrollo del software y otros ámbitos como el diseño de interfaces. Con ello se pretende: - Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos ysolucionados ya anteriormente. - Estandarizar el modo en que se realiza el diseño. - Formalizar un vocabulario común entre diseñadores. Para el diseño de esta aplicación se han hecho uso de los siguientes patrones: Patrón orientado a capas Descompone una aplicación en un conjunto de capas independientes y ordenadasjerárquicamente según el nivel de abstracción que tenga cada una de ellas. Cada nivel o capa usalos servicios del nivel inmediatamente inferior y ofrece servicios a la capa inmediatamentesuperior. - 22 -
  29. 29. Se muestra a continuación la organización de las capas de este proyecto: 5.3 Diseño de datos En algunos enfoques se consideran a los almacenamientos de datos como la esencia delos sistemas de información. Esto hace que el diseño de datos tenga una gran influencia en lacalidad del software. Independientemente de las técnicas de diseño usada, los datos bien diseñados puedenconducir a una mejor estructura de programa, a una modularidad efectiva y a una complejidadprocedimental reducida. Los objetivos generales del diseño de la organización de almacenamiento son: - Disponibilidad de datos. - Accesibilidad. - Integridad de datos. - Almacenamiento eficiente. - Actualización y recuperación eficiente. - Recuperación dirigida de la información. - 23 -
  30. 30. 5.3.1 Diagrama Entidad-Relación del sistema El modelo entidad-relación es una técnica para el modelado de datos utilizandodiagramas entidad relación. No es la única pero sí la más utilizada. Brevemente consiste en lossiguientes pasos: 1. Se parte de una descripción textual del problema a automatizar (los requisitos). 2. Se hace una lista de los sustantivos y verbos que aparecen. 3. Los sustantivos son posibles entidades o atributos. 4. Los verbos son posibles relaciones. 5. Analizando las frases se determina la cardinalidad de las relaciones y otros detalles. 6. Se elabora el diagrama entidad-relación. 7. Se completa el modelo con listas de atributos y una descripción de otras restriccionesque no se pueden reflejar en el diagrama. A continuación se muestra el diagrama de la aplicación: - 24 -
  31. 31. 5.3.2 Entidades del modelo de datos Las entidades que se utilizarán en el modelo serán las siguientes: PICTOGRAMA Atributo Tipo Nulo? Descripción Predet. PK FKidPictograma INT(5) No Identificador del pictograma Autoinc. X pictograma VARCHAR(75) No Nombre del pictogramaidCodigoColor INT(1) No Identificador del codigoColor X idCategoría INT(2) No Identificador de la categoría XidSubcategoría INT(3) No Identificador de la subcategoría X extensión VARCHAR(5) No Extensión de la imagen definición VARCHAR(500) Sí Definición del pictograma Null tags VARCHAR(200) Sí Etiquetas del pictograma Null CODIGOCOLOR Atributo Tipo Nulo? Descripción Predet. PK FKidCodigoColor INT(1) No Identificador de CodigoColor Autoinc. X Descripción de este tipo de descripción VARCHAR(140) No pictograma color INT(25) No Color CATEGORÍA Atributo Tipo Nulo? Descripción Predet. PK FK idCategoría INT(2) No Identificador de la categoría Autoinc. X categoría VARCHAR(45) No Nombre de la categoría - 25 -
  32. 32. SUBCATEGORÍA Atributo Tipo Nulo? Descripción Predet. PK FKidSubcategoría INT(3) No Identificador de la subcategoría Autoinc. X Identificador de la categoría del idCategoría INT(2) No X pictograma subcategoría VARCHAR(45) No Nombre de la subcategoría 5.2.3 Relaciones del modelo de datos Tiene1 Entidades Cardinalidad Descripción CodigoColor 1:1 Un pictograma tan solo puede tener Pictograma 1:N un color Tiene2 Entidades Cardinalidad Descripción Pictograma 1:N Un pictograma tan solo pertenece a una categoría. Y una o varias categorías Categoría 1:1 pueden pertenecer a varios pictogramas. Tiene3 Entidades Cardinalidad Descripción Categoría 1:1 Una categoría puede tener varias subcategorías. Y una o varias subcategoría Subcategoría 1:N pertenece a una sola categoría - 26 -
  33. 33. 5.3.3 Modelo físico A continuación se muestra el modelo que genera automáticamente MySQL Workbencha partir de la base de datos diseñada en MySQL Administrator. 5.4 Interfaz del usuario final En esta sección se mostrará la interfaz de usuario final donde se expone cómo aplicartoda la funcionalidad que se desea desarrollar. En esta aplicación de escritorio existen seis tipos de formularios: Aplicación principal,Form Documento de pictogramas, Form Base de datos, Form Buscar pictograma, Form Buscarpictograma por tags y la típica ventana “Acerca de”. - 27 -
  34. 34. 5.4.1 Interfaz “Aplicación principal” A continuación se muestra la ventana principal de la aplicación. Desde ella se manejantodas las operaciones principales y a través de ella se llegan a los demás formularios. Principalmente se muestra un menú con las opciones ‘Archivo’, ‘Ver’ y ‘Ayuda’. Justodebajo de este menú se encuentra una barra de herramientas con los iconos para crear un nuevodocumento de pictogramas, un botón para guardar los documentos y un botón de ayuda. Cabedestacar que en esta barra se encuentra una caja de búsqueda rápida de pictogramas, es decir, enella se introduce el nombre de un pictograma que queramos introducir en un documento depictogramas. Una característica de esta caja de búsqueda es que a medida que vayamosescribiendo los caracteres que componen el pictograma, se irán mostrando dinámicamente todoslos pictogramas que coinciden con el texto introducido. Se puede ver un menú lateral izquierdo cuya finalidad es la de mostrar un pictogramarápidamente. Una vez se seleccione un pictograma, se tendrán disponible los botones de‘Insertar en documento’, ‘Borrar pictograma’ y ‘Limpiar documento’. Para crear un nuevo documento de pictogramas y empezar a trabajar con él basta conhacer click en el botón ‘Nuevo documento’. Para interactuar con la base de datos disponible debemos hacer click sobre el botón‘Base de datos’. - 28 -
  35. 35. 5.4.2 Interfaz “Documento de pictogramas” Al trabajar con un formulario MDI (Multiple Document Interface), todos losformularios de tipo ‘Documento de pictogramas’ estarán contenidos en la ventana principal. Se pueden crear tantos documentos de pictogramas como se quieran. Una vez hayamoscreado un tablero de comunicación podremos guardarlo en formato imagen o en formato PDF.Si por el contrario intentamos cerrar un documento de pictogramas sin haberlo guardado, laaplicación nos ofrecerá la opción de guardarlo antes de cerrar o cerrar el documento sin guardar. Un detalle a tener en cuenta es que una vez hayamos abierto un nuevo documento depictogramas, el panel de opciones superior se habilitará para así poder trabajar con laspropiedades de los pictogramas y del documento. Cuando se cierre el último documento abierto,el panel de opciones superior se volverá a deshabilitar. Además de esto, el menú principalañadirá las opciones ‘Pictograma’ y ‘Documento’. Por defecto, se introducirán los pictogramas con un lado de 3cm y se mostrarán losbordes de los pictogramas con un grosor de 4px. El tamaño del documento será la de un folio(A4). - 29 -
  36. 36. 5.4.3 Interfaz “Base de datos” En esta ventana podremos interactuar con la base de datos de la aplicación. Como sepuede observar, esta ventana se divide en cuatro secciones: ‘Pictogramas’, ‘Datos’,‘Pictograma’ y ‘Operaciones’.  Sección ‘Pictogramas’: una vez abierta la ventana se empezarán a cargar todos los pictogramas en la lista. Por defecto se seleccionará el primer pictograma ordenado alfabéticamente, por el contrario si en la ventana principal hubiera seleccionado algún pictograma se seleccionará éste. La ventana nos da la posibilidad de seleccionar cualquier pictograma y ver sus características.  Sección ‘Datos’: en esta sección se cargarán las características del pictograma seleccionado de la lista y se mostrará el nombre, categoría a la que pertenece, la subcategoría, la definición si es que la tuviera y una lista de tags o etiquetas para facilitar su búsqueda.  Sección ‘Pictograma’: en este recuadro se mostrará el pictograma seleccionado.  Sección ‘Operaciones’: aquí se podrá elegir entre insertar un ‘Nuevo pictograma’ o ‘Eliminar’ un pictograma de la base de datos. Al hacer click sobre el botón ‘Insertar nuevo’ se habilitarán los cuadros de texto de la sección ‘Datos’ para poder introducir las características del nuevo pictograma. Además habrá que elegir la imagen del pictograma. La imagen puede tener los formatos bmp, jpg, tiff, gif y png. Se puede cancelar la operación en cualquier momento. - 30 -
  37. 37. Si por el contrario, lo que se quiere es borrar un pictograma, tan sólo hay que seleccionar el pictograma de la lista y hacer click en el botón correspondiente. Una vez borrado el pictograma no se puede deshacer la operación 5.4.4 Interfaz “Búsqueda por coincidencias” En esta ventana podremos hacer una búsqueda parecida a la búsqueda que ofrece laventana principal con la particularidad de que podremos ir viendo los pictogramas quecoinciden con la búsqueda. Según vayamos tecleando los caracteres que componen el nombredel pictograma irán apareciendo en ‘Resultados’ los pictogramas. A la vez que se hace la búsqueda se muestra en la barra de estado el porcentaje debúsqueda realizado junto con la barra de progreso. Una vez terminada la búsqueda, tanto si es una búsqueda concreta como si es másgeneral, podremos seleccionar el pictograma que queramos insertar en el documento,pudiéndolo hacer o bien haciendo click en el botón ‘Insertar’ o bien mediante la operación dearrastrar y soltar (drag&drop). Esto se mostrará en un ejemplo más adelante. Podemos filtrar el resultado de pictogramas mediante la opción ‘Filtrar’ según lacategoría de los pictogramas: verbos, personas y pronombres personales, términos sociales,nombres, etc. - 31 -
  38. 38. 5.4.5 Interfaz “Búsqueda por etiquetas” Esta ventana puede llegar a ser la más interesante. Utilizaremos esta búsqueda si lo quequeremos es crear un tablero de comunicación con pictogramas que se engloben en un tema enconcreto. Por ejemplo, si queremos un tablero con pictogramas sobre expresiones del tiempodeberemos introducir en el cuadro de búsqueda las palabras claves ‘expresión’ y ‘tiempo’. Estaspalabras claves darán como resultado pictogramas del tipo ‘está lloviendo’, ‘hace sol’ o ‘nieva’. Con esta búsqueda podremos confeccionar un tablero de comunicación con pictogramasrelacionados entre sí de una manera rápida. Al igual que en la búsqueda por coincidencias, podemos insertar los pictogramas en eldocumento de la misma manera, mediante el botón ‘Insertar’ o realizando un drag&drop. - 32 -
  39. 39. 5.4.6 Interfaz “Acerca de” Se trata de la típica ventana “Acerca de” con información sobre la aplicación. Se puedever en la siguiente figura: Como apunte decir que la empresa “Star System Software” es ficticia. - 33 -
  40. 40. 6 IMPLEMENTACIÓN 6.1 Entorno de programación y lenguaje de programación Un entorno de desarrollo integrado o IDE (acrónimo en inglés de integrateddevelopment environment), es un programa informático compuesto por un conjunto deherramientas de programación. Un IDE es un entorno de programación que ha sido empaquetado como un programa deaplicación, es decir, consiste en un editor de código, un compilador, un depurador y unconstructor de interfaz gráfica (GUI). Los IDEs pueden ser aplicaciones por sí solas o puedenser parte de aplicaciones existentes. Es posible que un mismo IDE pueda funcionar con varios lenguajes de programación. Para este proyecto se ha optado por usar el IDE Visual Studio 2010 de Microsoft debidoa la cantidad de herramientas que integra y por la facilidad de uso. Además por la posibilidad decrear interfaces de usuario de una manera más rápida, ágil y visual. Como lenguaje de programación se ha utilizado C# (C Sharp). C# es un lenguaje deprogramación orientado a objetos desarrollado y estandarizado por Microsoft como parte de suplataforma .NET. Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de laplataforma.NET, similar al de Java aunque incluye mejoras derivadas de otros lenguajes. 6.2 ORM: Entity Framework 4.0 Para el acceso a datos se ha utilizado la nueva versión del ORM (Object-RelationalMapping) Entity Framework 4.0. 6.2.1 ¿Qué es el Entity Framework? EF es un conjunto de tecnologías que brindan soporte para desarrollar aplicacionesorientadas a datos. En otras palabras, sin el EF se deben crear dos modelos, uno para los objetosy otro para la base de datos y entender ambos. Esto se da porque la forma de acceder yadministrar los datos desde un modelo de objetos es diferente respecto a la forma en que se hacedesde una base de datos. Este y otros muchos problemas vienen a ser solucionados por el EF. EF es un ORM que permite manejar la traducción de datos entre dos modelos que sonmuy diferentes, el modelo de objetos de una aplicación y el modelo de la base de datos. - 34 -
  41. 41. Un ORM lo que hace es llevar a cabo esta transformación de datos que normalmente sehace a mano cuando interactuamos con la base de datos; es decir, todo lo que normalmentehacíamos desde los métodos de la capa de acceso a datos o para llevar a cabo operacionesCRUD (crear, obtener, actualizar y borrar). Los ORM además abstraen la funcionalidadrequerida para interactuar con un repositorio de datos, por ejemplo el abrir y cerrar la conexión,el manejo de relaciones, etc. 6.2.2 Rol del EF en una arquitectura n-capas Como se puede observar, el EF viene a jugar el rol que tradicionalmente ocupabanuestra capa de acceso a datos en la arquitectura tradicional n-capas. Es decir, la librería quenormalmente creábamos para acceder y abstraer el acceso al o a los repositorios de datos, ya noes necesaria dado que el EF nos da toda la funcionalidad requerida para poder interactuar conlos datos. 6.2.3 Creando el modelo de entidad-relación Para crear el modelo hacemos click con el botón derecho en el proyecto que creemospara la capa de acceso a datos y seleccionamos “Nuevo elemento…”. En mi caso el proyecto sellama SPC.DataAccessLayer y como se puede ver en la imagen ya está creado. - 35 -
  42. 42. En la nueva ventana que aparece debemos elegir el elemento “ADO .NET Entity DataModel” y le asignamos el nombre al modelo. En este caso ‘SPCModel.edmx’. A continuación se nos mostrará el asistente de creación del modelo Seleccionamos “Generar desde la base de datos”. Esto quiere decir que el asistentecreará el modelo desde una base de datos que ya esté creado. Hacemos click en “Siguiente”. En el siguiente paso guiado debemos elegir la conexión de datos. Si ya hemos creadouna conexión la seleccionamos, de lo contrario debemos crearla haciendo click en el botón“Nuevo conexión…”. Este paso se encuentra detallado en la sección 6.3.3 Conexión con labase de datos. - 36 -
  43. 43. Para que la cadena de conexión se guarde en un fichero App.Config hay que seleccionarla casilla correspondiente y asignarle un nombre. En este proyecto es‘SistemaPictograficoComunicacionEntities’. Click en ‘Siguiente’. En el último paso del asistente debemos seleccionar las tablas que vamos a utilizar en elmodelo. Si tuviéramos ‘Vistas’ o ‘Procedimientos almacenados’ también debemos incluirlos. - 37 -
  44. 44. Por último hacemos click en el botón ‘Finalizar’ y el Entity Framework nos generaautomáticamente el modelo. 6.3 Base de datos Respecto a la base de datos, ésta ha sido diseñada con MySQL cuya versión con la quese ha trabajado ha sido la versión esencial-5.1.11. 6.3.1 MySQL Gestor de base de datos sencillo de usar y rápido. También es uno de los motores debase de datos más usados en internet, la principal razón de esto es que es gratis paraaplicaciones no comerciales. Las características principales de MySQL son: • Es un gestor de base de datos. Una base de datos es un conjunto de datos y un gestor de base de datos es una aplicación capaz de manejar este conjunto de datos de manera eficiente y cómoda. • Es una base de datos relacional. Una base de datos relacional es un conjunto de datos que están almacenados en tablas entre las cuales se establecen unas relaciones para manejar los datos de una forma eficiente y segura. Para usar y gestionar una base de datos relacional se usa el lenguaje estándar de programación SQL. - 38 -
  45. 45. • Es Open Source. El código fuente de MySQL se puede descargar y está accesible a cualquiera, por otra parte, usa licencia GPL para aplicaciones no comerciales. • Es una base de datos muy rápida, segura y fácil de usar. Gracias a la colaboración de muchos usuarios, la base de datos se ha ido mejorando optimizándose en velocidad. Por eso es uno de los gestores de base de datos más usados en Internet. Por todas estas razones, he decidido usar MySQL para manejar la base de datos de laaplicación. 6.3.2 MySQL Connector con .NET v6.3.0 Para poder trabajar con MySQL desde Visual Studio 2010 se necesita un conector.Dicho conector hará que estas dos herramientas se puedan comunicar. Para ello lo podemosdescargar desde la página de MySQL en el linkhttp://dev.mysql.com/downloads/connector/net/5.2.html . Una vez descargado el archivo lo instalamos, al terminar la instalación ya podremostrabajar con bases de datos MySQL en Visual Studio.NET. Para trabajar con MySQL en nuestro proyecto debemos agregar una referencia aMySQL. Para ello vamos al panel derecho “Explorador de soluciones” y damos click derechoen la carpeta “Referencias” y damos click en “Añadir referencia”. Nos mostrará otra ventana, aquí hacemos click en la pestana “Examinar” y vamos a lasiguiente dirección C:Program FilesMySQLMySQL Connector Net 6.3.0Assemblies, en esa - 39 -
  46. 46. dirección seleccionamos la dll “MySql.Data.dll” y hacemos click en Aceptar. Ahora ya se puedetrabajar con las clases que nos proporciona MySQL. 6.3.3 Conexión con la base datos Para crear una conexión y trabajar con ella hay que seguir los siguientes pasos: En el “Explorador de servidores” hacemos click en “Conectar con base de datos” y nosaparecerá la siguiente ventana. Si en “Origen de datos” no nos aparece MySQL Database, debemos hacer click en“Cambiar” Después de la instalación del conector (mostrado en la sección 6.3.2 MySQL Connectorcon .NET v6.3.0) nos debe mostrar la opción para elegir “MySQL Database”. Seleccionamos yhacemos click en Aceptar. - 40 -
  47. 47. A continuación, debemos completar la conexión agregando el “Server name”, “Username” y el “Password”. Además, tenemos que elegir la base de datos con la que vayamos atrabajar, en este caso, “SistemaPictograficoComunicacion”. Para probar que la conexión escorrecta basta con hacer click en el botón “Probar conexión”, si es así se nos informará con elmensaje “La conexión de prueba se realizó correctamente”. Por último, hacemos click en ‘Aceptar’ y habremos creado una conexión a la base dedatos. - 41 -
  48. 48. 6.4 Implementación de la capa de “Acceso a datos” En este apartado se mostrarán los algoritmos más relevantes de la capa de “Acceso adatos”. Como bien se ha mencionado antes el lenguaje de acceso a datos utilizado para realizarconsultas es SQL To Entities. En todos los métodos se usa un contexto de corta duración mediante una sentenciausing para que no suponga un abuso de recursos. 6.4.1 Clase PictogramaDAL 6.4.1.1 Insertar un pictograma Este método insertar un objeto Pictograma en la base de datos. Para insertar una fila en una base de datos, se agregan los objetos correspondientes alconjunto de entidades especificado del contexto de objetos y después se envían los cambios a labase de datos. En este método se pasa como parámetro un objeto Pictograma por referencia y loinsertamos en la tabla Pictograma mediante AddObject que el contexto facilita. Los cambios que se efectúen en los objetos que forman la base de datos orientada aobjetos virtual, imagen del modelo de datos de una base de datos relacional, no se aplican a estaúltima hasta que se llame explícitamente al método SaveChanges( ) de ObjectContext. Por loque para guardar los cambios llamamos a continuación al método SaveChanges ( ). 6.4.1.2 Obtener todos los pictogramas Este método devuelve una lista de pictogramas de todos los pictogramas existentes ennuestra base de datos. - 42 -
  49. 49. Para ello se crea una consulta LINQ To Entities y el resultado se pasa a la lista depictogramas. 6.4.1.3 Obtener pictogramas coincidentes Este método se utiliza en la ventana “Buscar pictogramas por coincidencias” y suutilidad es devolver los pictogramas que coinciden con la caja de búsqueda según vayamosescribiendo los caracteres. Este método es muy similar al anterior. La diferencia es que recibe como parámetro unstring s que es utilizado en el método StartsWith( ) que devuelve los pictogramas quecomiencen por dicha cadena. 6.4.1.4 Obtener pictogramas por etiquetas Este método puede ser el más interesante. Se utiliza en la ventana “Buscar pictogramaspor tags”. En este método se ha implementado un algoritmo que recorre todos los pictogramaspara comprobar uno a uno las etiquetas que lo definen. - 43 -
  50. 50. Detalladamente: 1. pictograms: aquí se guardan los pictogramas que cumplen las etiquetas. _pictogramas: se utiliza para obtener los pictogramas existentes en la base de datos. tags: guarda los tags de cada pictograma. b: variable booleana encargada de verificar que el pictograma cumple todos lostags. 2. Se realiza la consulta para obtener todos los pictogramas de la base de datos y se guarda el resultado en la variable _pictograms. 3. En este foreach se recorre la lista de pictograma de _pictograms. 4. Se comprueba que el campo tags del pictograma no sea null ni contenga espacios en blanco. Si la instrucción if devuelve true la ejecución del algoritmo continúa por el paso 5, por el contrario si devuelve false se sale del foreach mediante la instrucción break. - 44 -
  51. 51. 5. Se almacena en tags todas las etiquetas del pictograma obteniéndolas mediante el método Split si estuvieran separadas por algún carácter separador. La variable booleana b se inicializa a true. 6. Se recorre el array de string s que recibe el método como parámetro mientras que b sea true. 7. Por cada string de s se recorre todos los tags del pictograma actual. 8. Se comprueba que el tag del pictograma sea igual pasado por parámetro al método. Si es así y el anterior también lo era se ejecuta la instrucción b = b | true y salimos del foreach sino ejecutamos b = b & false y seguimos buscando hasta que se termine de recorrer los tags del pictograma. 9. En este paso se comprueba el valor de b. Si es igual a true significa que el pictograma actual cumple todas las etiquetas pasadas por parámetro al método, por lo que se añade a la lista pictograms. 10. Por último, se devuelven los pictogramas que cumplen todas las etiquetas. 6.4.2 Clase CodigoColorDAL En esta clase se definen los métodos relacionados con la obtención de los colores de lospictogramas. Según el tipo de pictograma, estos serán dibujados con un color de borde distinto,por ejemplo, los pictogramas que signifiquen un verbo irán de color verde. 6.4.2.1 Obtener el color de un pictograma Este método recibe como parámetro el identificador del código-color a evaluar.Mediante el identificador se realiza una consulta a la base de datos para obtener el color quepertenece a dicho identificador. Se devuelve el objeto CodigoColor que pertenece a dicho identificar. - 45 -
  52. 52. 6.4.3 Clase CategoriaDAL En esta clase se implementan los métodos relacionados con las posibles categorías enlos que se pueden clasificar los pictogramas. 6.4.3.1 Obtener todas las categorías existentes Este método devuelve una lista de todas las categorías existentes en la base de datos. Tan solo realiza una consulta de tipo SQL To Entities contra la base de datos y elresultado se devuelve como una lista de categorías. 6.4.4 Clase SubcategoríaDAL En esta clase se tratan los métodos relacionados con las subcategorías que pueden tomarcada pictograma según la categoría a la que estén vinculados. 6.4.4.1 Obtener subcategorías de cada categoría Este método recibe como parámetro el string de la categoría de la que queremos obtenersus subcategorías. - 46 -
  53. 53. 6.5 Implementación de la capa de “Lógica de negocio” Al igual que en la capa de Acceso a Datos (DAL), aquí vamos a tener las clasesPictogramaBL, CategoriaBL, SubcategoriaBL y CodigoColorBL. Debido a que la capa deinterfaz de usuario no debe acceder directamente a DAL, la capa de lógica de negocio (BLL)será un intermediario, y después de las validaciones y comprobaciones, la capa BLL decidirá sidebe preguntar a la capa DAL para obtener información o para devolver el control a la capa depresentación si las validaciones fallaron. Una vez más, hay que añadir una referencia en elproyecto a System.Data.Entities. 6.6 Entidades de negocio Una de las nuevas características que se han desarrollado en Entity Framework 4.0, es laposibilidad de usar entidades Self-Tracking. Las entidades Self-Tracking son las clases que notienen dependencia de Entity Framework, pero que incluyen mecanismos que gestionan loscambios en sus propiedades. Estas entidades nos permiten enviarlas a un cliente, realizar cambios sobre ellas yrecibirlas conociendo qué cambios se han realizado, sin necesidad de consultar el contexto. Conestos cambios y con algunas nuevas funcionalidades de Entity Framework 4.0 se obtiene unmejor rendimiento cuando persistimos las entidades en el contexto. Cada clase de nuestro modelo implementa la interfaz IObjectWithChangeTracker,que tiene los métodos necesarios para gestionar los cambios (Unchanged, Modified, Added oDeleted), y no sólo gestiona los cambios, sino que también mantiene los valores originales. Para generar las entidades Self-Tracking debemos hacer click con el botón derechosobre el modelo (fichero edmx) y seleccionar “Agregar elemento de generación de código…”como muestra la siguiente figura. - 47 -
  54. 54. En esta ventana seleccionamos la opción de “Generador de entidades de seguimientopropio ADO .NET”. - 48 -
  55. 55. ¿Qué se consigue con esto? Pues si revisamos el “Explorador de soluciones”, se puedeobservar que se han creado dos nuevos elementos, SPCModel.Context.tt y SPCModel.Types.tt.Estos dos nuevos ficheros son plantillas de texto T4 que se utilizan para generar código. Estasplantillas generan las clases necesarias para Self-Tracking, tanto para el Contexto como paranuestras entidades del modelo. Ahora ya se dispone de generadores de código necesario para nuestro Self-TrackingContext y para las Entidades Self-Tracking. Estos dos ficheros se generan en la capa de accesoa datos, pero ¿es recomendable dejar las entidades en el mismo proyecto que el contexto? Si loque se quiere desarrollar es una aplicación n-capas, la respuesta es no, y como este proyecto sebasa en una arquitectura n-capas, lo ideal sería separar la plantilla SPCModel.Types.tt en otroproyecto para que pueda ser utilizado en cualquier capa de nuestra aplicación. Debería quedar de la siguiente manera: Al separar las entidades (SPCModel.Types.tt), se deben hacer ciertos cambios en lasplantillas para que la generación y las referencias sean las correctas. 1. Se añade en el proyecto SPC.DataAccessLayer la referencia al proyecto SPC.EntitiesLayer. 2. Las entidades Self-Tracking se generan con la capacidad de que pueden ser serializadas, por lo que se necesita añadir la referencia a System.Runtime.Serialization al proyecto SPC.EntitiesLayer. - 49 -
  56. 56. 3. Se modifica la plantilla SPCModel.Types.tt para que genere el modelo a partir del fichero edmx. Cambiar la ruta de la variable string inputFile = @”SPCModel.edmx” a @”..SPC.DataAccessLayerSPCModel.edmx”. 4. Por último, hay que modificar la plantilla SPCModel.Context.tt para que incluya los using necesarios para que utilice las entidades que están en el namespace SPC.EntitiesLayer. Con estos cambios, se consigue distribuir las entidades, incluyendo la plantilla degeneración de código, en otro proyecto (dll) para su reutilización en cualquiera de las capas. Alincluir la plantilla, mantenemos su funcionalidad que nos permitiría modificar el modelo EntityFramework (fichero edmx) y que los cambios se reflejen en las entidades Self-Tracking. Una vez realizado todos los pasos el “Explorador de soluciones” debe verse de lasiguiente manera: - 50 -
  57. 57. 6.7 Implementación de la capa de “Presentación” Como ya se ha mencionado anteriormente, la capa de presentación es la parte que ve elusuario, las pantallas que se le muestra para que interaccione con la aplicación, comunicándolela información y recolectando la información suministrada por el usuario en un mínimo deproceso (realizando validaciones para comprobar que no hay errores de formato). Esta capa secomunica únicamente con la capa de negocio llevando y trayendo los datos o registrosnecesarios, es la interfaz gráfica del programa y debe ser lo más amena posible para una mejorcomunicación con el usuario. 6.7.1 Usabilidad de una interfaz hombre-máquina Definimos Usabilidad de un sistema o herramienta como una medida de su utilidad,facilidad de uso, facilidad de aprendizaje y apreciación para una tarea, un usuario y un contextodado. Los principales beneficios de una buena usabilidad son: • Reducción de costes de aprendizaje. • Disminución de los costes de asistencia y ayuda al usuario. • Disminución en la tasa de errores cometidos por el usuario. • Optimización de los costes de diseño, rediseño y mantenimiento. • Aumento de la tasa de conversión de visitantes a clientes de un sitio web. • Aumento de la satisfacción y comodidad del usuario. • Mejora la imagen y el prestigio. • Mejora la calidad de vida de los usuarios, ya que reduce su estrés, incrementa la satisfacción y la productividad. 6.7.2 Algoritmos más relevantes de la capa de presentación A continuación se muestran los algoritmos más relevantes presentes en la codificaciónde las interfaces de usuario. 6.7.2.1 Método buscar pictogramas de la ventana principal La funcionalidad de este algoritmo perteneciente a la clase FormPadre es buscar en labase de datos el pictograma escrito en la caja de búsqueda además de buscar la imagencorrespondiente en la carpeta “Pictogramas”. - 51 -
  58. 58. Este evento se produce cada vez que se presiona una tecla, pero solo entra en él cuandola tecla es INTRO. Básicamente lo que hace es que busca el nombre del pictograma introducidoen la base de datos. Si existe, es decir, si es distinto de null, obtiene la extensión de la imagen yla ruta. Si por algún motivo se produce algún error se muestra el mensaje correspondientemediante una ventana. - 52 -
  59. 59. 6.7.2.2 Insertar pictograma en el panel mediante drag&drop Este evento se encuentra en la clase FormDocumentoPictogramas y se dispara cuandoarrastramos un pictograma sobre el documento de pictogramas. Es una alternativa a hacer clicksobre el botón “Insertar en documento”. - 53 -
  60. 60. En las primeras líneas se determina las coordenadas relativas del panel donde soltamosel pictograma. A continuación se produce un copiado de las propiedades del pictograma como porejemplo el nombre, la imagen o el color de fondo. Seguidamente se le asigna todos los manejadores de eventos que le corresponda, entreellos, MouseMove, MouseDown, MouseUp, MouseClick, etc., para luego añadirlo al panel queforma el documento de pictogramas. Por último, se activa el pictograma añadido y se habilitan los botones correspondientes. 6.7.2.3 Control BackgroudWorker para cargar la base de datos Cuando abrimos la ventana “Base de datos” se empiezan a cargar en la lista depictogramas todos los pictogramas existentes en la base de datos. Para que la ventana no sequede “colgada” mientras se ejecuta esta operación se utiliza el control backgroundWorker. El control BackgroundWorker permite operaciones costosas o duraderas en un hilodiferente al de la interfaz, de manera que la aplicación sigue respondiendo al usuario mientraseste trabajo se procesa en segundo plano. Usando este control, la gestión de hilos está encapsulada en el control de manera que elprogramador no tiene que lidiar con hilos (threads), invoques o delegados (delegates). Las principales características de este control son:  El evento DoWork: Se dispara como el evento que se ejecutará de manera asíncrona. Generalmente en este evento se implemente el código de ejecución costoso o duradero.  El evento ProgressChanged: Se dispara cada vez que ha habido un progreso en la actividad por medio del método ReportProgress.  El método ReportProgress: Su utilidad es indicar el cambio en el avance de la tarea, recibo como parámetro un entero que indica el porcentaje de avance.  El evento RunWorkerCompleted: Como su nombre indica, este evento se dispara automáticamente cuando la tarea DoWork finaliza.  El método RunWorkerAsync: Su función es invocar la llamada asíncrona, invoca al evento DoWork. A continuación se expone el evento DoWork que se dispara después de ejecutar la líneade código backgroundWorker.RunWorkerAsync(pictogramas); en el evento Load de dichaventana. - 54 -
  61. 61. 6.7.2.4 Buscar pictogramas por etiquetas En esta ventana se produce una búsqueda por etiquetas cuando presionamos el botón“Buscar”. El evento que se dispara al hacer click en dicho botón es el evento Click del control. - 55 -
  62. 62. En primer lugar se “limpian” los controles que contengan información de una búsquedaanterior. A continuación, se comprueba mediante la instrucción de decisión if si el textointroducido es null o está formado por espacios en blanco. Si no es así, divide todas las etiquetasque estén separadas por cualquier carácter mediante el método Split y se llama al método de lacapa de lógica de negocio getPictogramasTags pasándole como argumento el array de cadenass guardando el resultado en la lista de pictogramas pictogramas. Si dicha lista de pictogramas no está vacía entonces se produce una llamada asíncrona almétodo RunWorkerAsync pasándole como parámetro la lista de pictogramas para así ir lospictogramas que cumplen las etiquetas mientras se completa la barra de progreso. 6.7.2.5 Mover pictogramas por el documento de pictogramas Este algoritmo se encuentra en la clase FormDocumentoPictogramas. Dicho algoritmose ejecuta cuando movemos con el mouse el pictograma seleccionado por el documentodisparando así el evento MouseMove. La finalidad de este algoritmo es que el pictograma nosobresalga del documento de pictogramas cuando lo movamos por él quedando éste en segundoplano no pudiéndose recuperar. Como se puede observar, en primer lugar se comprueba que se esté moviendo elpictograma haciendo click izquierdo sobre el pictograma. Una vez comprobado esto, se verificaque los bordes del pictograma no sobrepasen de los márgenes del documento mediante las dosinstrucciones de control if. Si el valor de los márgenes es igual a cero significará que comomáximo el pictograma se puede desplazar hasta el borde del documento de pictogramas. - 56 -
  63. 63. 7 PRUEBAS Para probar el correcto funcionamiento de la aplicación se realizaron varias pruebas. Acontinuación se irán exponiendo los ejemplos prácticos más relevantes. 7.1 Ejemplo práctico 1: Buscar un pictograma en la ventana principal En este primer ejemplo práctico se va a comprobar que el buscador de la ventanaprincipal efectúa su cometido correctamente. Para ello se va a introducir un pictograma en lacaja de búsqueda, como por ejemplo el pictograma “colegio”. Se puede observar que la caja de búsqueda ofrece pictogramas según los caracteresescritos. Una vez seleccionado el pictograma, debe aparecen en el recuadro asignado para ello. - 57 -
  64. 64. Por último, podemos ver que el pictograma seleccionado aparece con el borde del colorcorrespondiente según categoría del SPC. 7.2 Ejemplo práctico 2: Insertar pictogramas en el documento mediantedrag&drop En este ejemplo se probará el funcionamiento del algoritmo explicado en el apartado6.7.2.2 Insertar pictograma en el panel mediante drag&drop. Se tratará de arrastrar y soltar elpictograma sobre el documento de pictogramas. Pero antes debemos tener abierto un documentode pictogramas, para ello hacemos click sobre el botón “Nuevo Documento” del panel izquierdo. Una vez hecho esto, hacemos click sobre el pictograma y arrastramos sobre eldocumento. Al soltar el pictograma sobre el documento, éste debe haberse colocado en él. - 58 -
  65. 65. También se podría haber insertado el pictograma en el documento haciendo click sobreel botón “Insertar en Documento”. 7.3 Ejemplo práctico 3: Insertar un pictograma en la base de datos Para insertar un pictograma nuevo en la base de datos, tan solo hay que hacer clicksobre el botón “Insertar nuevo”. Esto hará que se habiliten los controles necesarios paraintroducir los datos del nuevo pictograma. A la vez se deshabilita la lista de pictogramas de laizquierda. Como ejemplo se va a introducir una foto jpg del personaje de “Padre de familia”Stewie. - 59 -
  66. 66. Una vez introducido los datos hacemos click en “Aplicar” para guardar el nuevopictograma en la base de datos. Hay que tener en cuenta que todos los datos son obligatorios aexcepción de “Definición” y “Tags”. Si todo es correcto, la aplicación debe mostrar el siguientemensaje. 7.4 Ejemplo práctico 4: Eliminar un pictograma de la base de datos. En este ejemplo práctico eliminaremos de la base de datos el pictograma insertado en elapartado anterior. Para ello seleccionamos de la lista de pictogramas el pictograma y hacemos click en elbotón “Eliminar”. - 60 -
  67. 67. Se lanzará una ventana con un mensaje preguntándonos si estamos seguros de eliminarel pictograma. Hacemos click en “Sí”. Una vez eliminado el pictograma, se mostrará el pictograma anterior al eliminado. Nota: Para eliminar cualquier pictograma de la base de datos primero tenemos quecerrar todos los documentos de pictogramas que tengamos abierto. Esto se debe a que nopodemos eliminar un pictograma de la base de datos y a la vez tenerlo insertado en eldocumento ya que existe una referencia entre el pictograma insertado y el de la base de datos. - 61 -
  68. 68. 7.5 Ejemplo práctico 5: Búsqueda dinámica de pictogramas En este apartado se va a verificar que en la ventana de “Buscar pictograma” se vanmostrando los pictogramas coincidentes con el texto introducido. En este caso se iránintroduciendo los caracteres ‘a’, ‘ab’, ‘abu’ y ‘abue’. En cada presión del nuevo carácterintroducido debe reiniciarse la búsqueda y mostrar los nuevos resultados. “a” “ab” - 62 -
  69. 69. “abu” Como se puede observar, en cada inserción de un carácter nuevo la búsqueda se reiniciamostrando un nuevo resultado acorde a la cadena de texto introducida en ese instante. Una vez completada la búsqueda, podemos seleccionar el pictograma deseado einsertarlo haciendo click en el botón “Insertar” o haciendo un drag&drop al documento depictogramas. 7.6 Ejemplo práctico 6: Búsqueda de pictogramas por etiquetas Este ejemplo práctico, tal como indica su título, nos mostrará cómo realizar unabúsqueda por etiquetas. Aquí se pone de manifiesto los apartados 6.4.1.4 Obtener pictogramas por etiquetas y6.7.2.4 Buscar pictogramas por etiquetas. Como ejemplo, se va a realizar tres pruebas. 1. Etiqueta: negro. - 63 -
  70. 70. Vemos que tan sólo muestra nueve pictogramas que cumplen la etiqueta negro. 2. Etiquetas: exclamación y tiempo . En esta ocasión se muestran los pictogramas que cumplen ambas etiquetas. Aunqueaparezcan pictogramas repetidos hay que saber que no significan lo mismo, como por ejemplo“hay viento”, “sopla el viento” y “hace aire”. - 64 -
  71. 71. 3. Etiquetas: número, moneda y dos. Esta vez se muestran solo dos pictogramas que cumplen las tres etiquetas. Si lasetiquetas fueran “número” y “moneda” el resultado sería: Nota: para que la búsqueda sea efectiva, todos los pictogramas deben escribirse sinfaltas de ortografía y con las tildes correspondientes. - 65 -
  72. 72. 7.7 Ejemplo práctico 7: Crear tablero de comunicación Por último se va a demostrar el funcionamiento de la aplicación creando tres tableros decomunicación. Los tableros que se van a implementar son: (1) Un cuento (2) Un tablero de comunicación sobre una pregunta (3) Un horario diario Como se puede observar, se pueden crear tableros de comunicación sobre distintatemática. 7.7.1 Tablero de comunicación: “El Ratoncito Pérez” El primer tablero de comunicación a crear será el cuento de “El Ratoncito Pérez”. En este caso debemos ir buscando uno a uno los pictogramas que conforman dichotablero. Para ello podemos usar el buscador de la ventana principal o el buscador dinámico depictogramas. En cuento infantil venía a decir algo así: “Un niño o una niña, se le cae un diente. Elniño se va a dormir y coloca el diente debajo de la almohada. Mientras el niño está durmiendoviene el Ratoncito Pérez y le pone dinero a cambio del diente. Cuando el niño se levanta alamanecer, se sorprende al ver que en vez del diente hay dinero. El niño está contento”. Una vez analizado el texto nos ponemos a buscar los pictogramas que pueden hacerreferencia al niño o a la niña, el diente, la almohada, dinero, Ratoncito Pérez, etc. Una vez insertados en el documento de pictogramas, podemos añadirle el título delcuento y si quisiéramos podríamos hacer visible el nombre (encima o debajo) de cadapictograma para hacer el tablero más fácil de entender. - 66 -
  73. 73. Nota: Para cambiar el nombre de un pictograma podemos hacerlo seleccionando elpictograma deseado, por ejemplo “ratón”, y reescribimos el nombre, “Ratoncito Pérez”, en lacaja de texto de la sección Pictograma seleccionado del menú superior de opciones. Unasegunda forma de hacerlo es presionado la tecla ENTER una vez hayamos seleccionado elpictograma apareciendo una pequeña ventana habilitada para dicho fin. - 67 -
  74. 74. 7.7.2 Tablero de comunicación: “¿Qué quieres de primer plato para comer?” Para elaborar el segundo tablero de comunicación, vamos a utilizar el buscador poretiquetas. ¿Por qué no buscar uno a uno los pictogramas?, pues porque los pictogramas estaránrelacionados mediante las etiquetas o tags “primer plato”, “verdura”, “alimento”, “verde”, etc. De esta forma nos ahorramos el tener que buscar uno a uno todos los pictogramas. Unavez insertado los pictogramas en la posición deseada, podemos añadir un color de fondo aldocumento para hacerlo más amigable y visual. 7.7.3 Tablero de comunicación: “Un horario diario”. El tercer y último ejemplo de tablero de comunicación va a tratar sobre un horario de undía cualquiera en clase. Por ejemplo el día a tratar será lunes e iremos disponiendo lospictogramas según las horas complementándolo con las actividades correspondientes. Es importante la disposición, orden y colocación de los pictogramas en el tablero paraque la persona que los vaya a utilizar lo haga de una manera rápida, cómoda y sencilla. - 68 -
  75. 75. 8 CONCLUSIONES Las conclusiones han sido positivas. He aprendido bastante en temas relacionados conla Ingeniería del Software además de aprender a trabajar con tecnologías como EntityFramework 4.0, Visual Studio 2010 y el lenguaje de programación C#. Ha sido un trabajo largo y difícil porque en un principio el proyecto es tan solo una ideaque tenía en mi mente y que no sabría si podría materializar debido a la falta de experiencia,recurso o capacidades. En general, se han cumplido las expectativas aunque hay muchos puntosen los que se puede mejorar este proyecto ya que abarcar todos los posibles fallos es difícil y ala vez, por cuestiones de tiempo, complicado. Este proyecto no ha tratado solo de ponerse a programar sino que he necesitado untiempo de investigación y aprendizaje de temas relacionados con la Comunicación Alternativa yAumentativa y de cómo es el trabajo relacionado con personas con algún tipo de trastorno en lacomunicación. - 69 -
  76. 76. 9 BIBLIOGRAFÍA Libros - C# Cómo programar, Harvey M. Deitel y Paul J. Deitel de Pearson Prentice Hall. - C# 3.0 Guía de referencia, Jay Hilyard y Stephen Teilbet de Anaya O´Reilly. - Visual C# 2010 Paso a paso, John Sharp de Anaya Multimedia. - Enciclopedia de Microsoft Visual C#, Fco. Javier Ceballos de Ra-Ma. Tutoriales - Guía de Arquitectura N-Capas orientada al Dominio con .NET 4.0 - Entity Framework learning guide, Zeeshan Hirani. Comunicación Aumentativa y Alternativa - “Comunicación Aumentativa y Alternativa, Guía de referencia” de Dolores AbrilAbadín, Clara I. Delgado Santos y Ángela Vigara Cerrato. - Capítulo VIII de “Tecnologías de ayuda y comunicación aumentativa y alternativa enpersonas con trastornos del espectro autista”. Francisco Tortosa Nicolás y Manuel Gómez Villa. - “Índice temático de los símbolos pictográficos para la comunicación (no vocal)”.Equipo específico de deficiencia auditiva, Ministerio de Educación y Ciencia. - “Los trastornos generales del desarrollo. Una aproximación desde la práctica”.Volumen 1 – “Los trastornos del espectro autista”. Consejería de Educación, Junta deAndalucía. - “Los trastornos generales del desarrollo. Una aproximación desde la práctica”.Volumen 3 – “Prácticas educativas y recursos didácticas”. Consejería de Educación, Junta deAndalucía. Internet - ARASAAC - Portal Aragonés de la Comunicación Aumentativa y Alternativa - Video tutorial: ADO .NET Entity Framework en pocos pasos - MSDN: Crear, agregar, modificar y eliminar objetos (Entity Framework) - Blog: El Entity Framework en una Arquitectura n-capas - Foro MSDN C# - 70 -

×