escuela tÉcnica superior de ingenierÍa …€¦ · mejora el as pecto visual del tablero de...

77
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 32055334-G Dirigido por VALEIRAS REINA, GERARDO Departamento Matemática Aplicada I Sevilla, Diciembre de 2010

Upload: duongdang

Post on 29-Sep-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

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 32055334-G

Dirigido por

VALEIRAS REINA, GERARDO

Departamento

Matemática Aplicada I

Sevilla, Diciembre de 2010

Dedico este proyecto a Nuria, mi pareja, quien ha estado siempre ahí para apoyarme, ayudarme y darme ánimos.

Sin ti, esto no hubiese sido posible.

“El derecho a comunicarse es un derecho humano básico, y el medio por el

cual todos los demás derechos se llevan a cabo”.

Asociación Americana de Igualdad, Oportunidad e Inclusión para Personas con Discapacidad (TASH)

ÍNDICE GENERAL

1. 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?....................................................................................................4

2. ANÁLISIS DE ANTECENDENTES…………………...………………………………….5

2.1. Tecnología informática en comunicación aumentativa….…………………………...…5

2.2. Aportación realizada…………………………………………………………………...10

3. ANÁLISIS TEMPORAL Y DE COSTES DE DESARROLLO……………..…………12

3.1. Planificación temporal………………………………………………………………....12

3.2. Evaluación de costes…………………………………………………………………...13

4. ANÁLISIS DE REQUISITOS…………………………………………………...…….....15

4.1. Requisitos funcionales…………………………………………………………………15

4.2. Casos de uso………………………………………………………………….…...…...17

4.3. Requisitos no funcionales……………………………………………………………....19

5. 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.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”………………………………………………………..……33

6. 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.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………….…….56

7. 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”……………………………...….68

8. CONCLUSIONES…………………………………………………………………...…….69

9. BIBLIOGRAFÍA……………………………………………………………………..……70

- 1 -

1 INTRODUCCIÓN

1.1 Definición de objetivos

A 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.….

- 2 -

1.2 Justificación

El lenguaje oral es una de las formas básicas para comunicarnos con el entorno y modificarlo en función de nuestras necesidades y deseos.

Si una persona no puede comunicar, no podrá tomar decisiones que afecten a su vida, lo que originará dependencia y aislamiento.

Nuestra sociedad está acostumbrada a ver a una persona en silla de ruedas, llevando un audífono o utilizando gafas, pero quizá no es tan habitual ver a alguien usando un dispositivo de comunicación.

Pues bien, cuando una persona tiene dificultades para comunicarse, utiliza un sistema alternativo 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.,

- 3 -

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 oral cuando éste no es comprensible o está ausente.

Ambos sistemas, aumentativos y alternativos, permiten que personas con dificultades de comunicació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 y oportunidades.

1.2.2 Representación del lenguaje mediante sistemas pictográficos

En este proyecto se usará el sistema pictográfico elaborado por Roxana Mayer-Johnson en 1981, basado principalmente en símbolos pictográficos (dibujos sencillos e icónicos) que representan la realidad. Se complementan con algunos ideogramas y con el abecedario, los números y algunas palabras carentes de símbolo. Cada pictograma lleva escrita encima la palabra, aunque en algunos conceptos abstractos tan solo aparecen las palabras.

Roxana Mayer recomienda asignar un fondo o reborde de color, en función de la categoría gramatical de cada pictograma. Con el objeto de unificar estas consignas y facilitar el uso de signos de diferentes sistemas en el mismo panel de trabajo de un usuario, estos colores son:

- 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 de numerosos 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 mediante dibujos, fotos e imágenes.

- 4 -

1.2.3 Tablero de comunicación

Es un soporte en el que están organizados aquellos elementos que utilizamos para comunicarnos: 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 hacerlo personalmente, el interlocutor realizará un barrido manual por el tablero. Es decir, señalará las casillas para que podamos confirmarle cuáles forman el mensaje.

Para una mejor comprensión, es muy importante incorporar el sistema de comunicación al entorno de la persona, sobre todo en edades tempranas. Para ello, colocaremos los pictogramas en lugares y estancias en los que se desenvuelvan normalmente, para que resulte má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 su enseñ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 para el 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ón tendremos en cuenta:

Las capacidades motrices del usuario.

Ordenar los pictogramas en columnas de categorías semánticas para facilitar la estructuración de la frase.

- Incorporar los símbolos aprendidos a la comunicación cotidiana.

- Enseñar a encadenar palabras (frases simples).

- 5 -

2 ANÁLISIS DE ANTECEDENTES

2.1 Tecnología informática en comunicación aumentativa

Los ordenadores desde los inicios han presentado grandes atractivos. Como máquinas programables y configurables, permiten idear “software” de comunicación a

partir de las prestaciones que consideremos más adecuadas.

Es obvio que el uso de tableros físicos presenta numerosas limitaciones cuando la 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 software ha 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 la tecnología informática:

- Escribir con Símbolos: Escribir con Símbolos es una herramienta de comunicación, lenguaje y lectoescritura que utiliza símbolos, voz y actividades para ayudar a una persona a leer y escribir.

- 6 -

- CAR: Se trata de un espacio Web en el que, además de diversa información acerca de los sistemas de comunicación aumentativa y alternativa más usados y de la tecnología de ayuda para su desarrollo, nos ofrece una amplia base de datos (2500 pictogramas, 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 la lectoescritura o el desarrollo del lenguaje oral mediante el uso de pictogramas. Diseñado para usuarios con discapacidad motora que no pueden comunicar mediante la voz y presentan un control limitado de su motricidad.

- 7 -

- Peapo: Aplicación ideada para la estructuración ambiental mediante el ordenador, usando como base una galería pictográfica propia, aunque soporta cualquiera de los sistemas pictográficos existentes. La aplicación consta de veinte celdas por cada uno de los días de la semana para la elaboración de horarios, agendas o secuencias de acción.

- Speaking Dinamically: Procesador de textos y signos gráficos, con voz sintetizada o digitalizada. Permite programar un sistema de comunicación de pantallas dinámicas de selección, combinando los signos gráficos y el texto escrito. Se puede utilizar mediante conmutadores, el ratón o con pantallas táctiles. De la misma forma pueden introducirse modificadores gramaticales, de manera que pueden realizarse conjugaciones verbales combinando las casillas de “persona”, tiempo verbal y el verbo

a conjugar.

- 8 -

- Comunicate Webwide: Es un servicio de suscripción mediante el cual se ofrece al usuario la posibilidad de acceder a todos los contenidos de la Web, por medio de la traducción de los mismos al sistema de símbolos Rebus. Igualmente permite añadir las Web preferidas en la sección de favoritos incorporando un icono significativo elegido por el usuario.

- Comunicate INPRINT2: Se trata de un procesador de símbolos que incluye los símbolos Rebus en color y blanco y negro. Pueden incorporarse otras galerías de símbolos de usuario. El programa permite realizar todo tipo de textos informativos: folletos, revistas, libros y cuentos ya q se dispone de numerosas plantillas y herramientas específicas, tales como fondos, personajes, burbujas, marcos, bocadillos de conversación versátiles, así como el conversor de textos-iconos.

- 9 -

- 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 la confecció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 los iconos, posibilidad de uso en varios idiomas y de diferentes tipos de letra. Los iconos existentes pueden ser consultados tanto semánticamente como temáticamente.

- Make-A-Schedule: Programa para trabajar el sistema de comunicación por intercambio de imágenes (PECS). Se trata de una aplicación “on-line” que dispone de

800 pictogramas en blanco y negro y en color, tanto para guardar en nuestro equipo como para imprimir o realizar actividades de coloreado de los mismos. Permite la realización de horarios, historias sociales y recordatorios.

- 10 -

- Sicla: Software para la comunicación oral mediante la traducción de símbolos y/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 variedad a 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 se trabaja 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 trabajan con varios niños con autismo.

Después de explicarme cómo trabajan y viven el día a día con estos niños tan especiales les comento sobre mi proyecto fin de carrera y aceptan a ayudarme sobre la orientación que podría tomar la aplicación.

Para la realización de pictogramas y los tableros de comunicación me informan que trabajan con el software “Boardmaker” (citado en el punto anterior) y me enumeran

varios 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.

- 11 -

• 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.

- 12 -

3 ANÁLISIS TEMPORAL Y DE COSTES DE DESARROLLO

Para que un proyecto sea exitoso, es importante cumplir los plazos acordados con antelación y no sobrepasar los costes estimados. Para ello una buena planificación temporal y de costes es de suma importancia.

3.1 Planificación temporal

La planificación temporal es una actividad que el gestor realiza distribuyendo el esfuerzo a lo largo de la duración del proyecto, asignando el esfuerzo a las tareas específicas de la ingeniería del software.

Considerando que el proyecto académico consta de 9 créditos ECTS y cada crédito son 25 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 de costes

1

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

- 13 -

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 de la 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 ingeniero técnico en España es de 15.868,44 €, y que al año se trabaja una media de 50 semanas con 5

dí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 han dedicado 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 sido

de 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 siguiente software:

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 del hardware:

(1009,39 / (5 x 12)) x 5 meses = 84,12 €

- 14 -

Presupuesto:

Concepto Precio (€)

Personal 2.632,76

Hardware 91,67

Software 84,12

Total 2.808,55

- 15 -

4 ANÁLISIS DE REQUISITOS

Uno de los primeros procesos que se realizan en un proyecto de construcción de software es la especificación de requisitos. Los objetivos de este proceso son identificar, validar y documentar los requisitos de software; es decir, determinar las características que deberán tener el sistema o las restricciones que deberá cumplir para que sea aceptado por el cliente y los futuros usuarios del sistema de software.

El producto final de este proceso es el documento de especificación de requisitos de software y en éste se señala, con el detalle adecuado, lo que el usuario necesita del sistema software. Es por ello, que el documento de requisitos de software se considera como un contrato entre el cliente y el equipo de desarrollo.

4.1 Requisitos funcionales

Un requisito funcional define el comportamiento interno del software: cálculos, detalles técnicos, manipulación de datos y otras funcionalidades específicas que muestran cómo los casos de uso serán llevados a la práctica.

Como se define en la ingeniería de requisitos, los requisitos funcionales establecen los comportamientos 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

- 16 -

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.

- 17 -

• 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 dos elementos: el actor y el caso de uso.

El actor representa una entidad externa que interactúa con el sistema. Las entidades externas podrían ser personas u otros sistemas. Es importante resaltar que los actores son abstracciones de papeles o roles y no necesariamente tienen una correspondencia directa con personas.

A diferencia del actor, el caso de uso hace referencia al sistema a construir, detallando su comportamiento, el cual se traduce en resultados que pueden ser observados por el actor. Los casos de uso describen las cosas que los actores quieren que el sistema haga, por lo que un caso de 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 de

casos de uso”. Dicho modelo muestra el comportamiento del sistema desde la perspectiva del

usuario y servirá como producto de entrada para el análisis y diseño del sistema.

Caso de uso 1

- 18 -

Caso de uso 2

Caso de uso 3

Caso de uso 4

- 19 -

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 en lugar de sus comportamientos específicos. Por tanto, se refieren a todos los requisitos que ni describen 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 agregar nuevas 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 que posea la aplicación dependerán además las siguientes propiedades:

- REQNF5: Facilidad de aprendizaje, el usuario deberá aprender a interaccionar de una manera 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 de una manera óptima.

- REQNF8: Tiempo de respuesta, viene determinado por la capacidad del procesador donde se ejecuta la aplicación.

- 20 -

- REQNF9: Manejo de errores, la aplicación maneja de forma automática los errores que se puedan producir mostrando un mensaje indicando el tipo de error.

- REQNF10: Integridad referencial en la base de datos para asegurarse que los registros de tablas relacionadas sean válidos cuando se borren o se inserten nuevos pictogramas.

- 21 -

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 modelo es una representación en algún medio que captura los aspectos importantes del sistema modelado 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 el programa 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 principales es la llamada arquitectura de tres capas. Con esta arquitectura están diferenciadas las partes de 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

- 22 -

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 comunes en 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 y solucionados 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 ordenadas jerárquicamente según el nivel de abstracción que tenga cada una de ellas. Cada nivel o capa usa los servicios del nivel inmediatamente inferior y ofrece servicios a la capa inmediatamente superior.

- 23 -

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 de los sistemas de información. Esto hace que el diseño de datos tenga una gran influencia en la calidad del software.

Independientemente de las técnicas de diseño usada, los datos bien diseñados pueden conducir a una mejor estructura de programa, a una modularidad efectiva y a una complejidad procedimental 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.

- 24 -

5.3.1 Diagrama Entidad-Relación del sistema

El modelo entidad-relación es una técnica para el modelado de datos utilizando diagramas entidad relación. No es la única pero sí la más utilizada. Brevemente consiste en los siguientes 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 restricciones que no se pueden reflejar en el diagrama.

A continuación se muestra el diagrama de la aplicación:

- 25 -

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 FK

idPictograma INT(5) No Identificador del pictograma Autoinc. X

pictograma VARCHAR(75) No Nombre del pictograma

idCodigoColor INT(1) No Identificador del codigoColor X

idCategoría INT(2) No Identificador de la categoría X

idSubcategorí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 FK

idCodigoColor INT(1) No Identificador de CodigoColor Autoinc. X

descripción VARCHAR(140) No Descripción de este tipo de

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

- 26 -

SUBCATEGORÍA

Atributo Tipo Nulo? Descripción Predet. PK FK

idSubcategoría INT(3) No Identificador de la subcategoría Autoinc. X

idCategoría INT(2) No Identificador de la categoría del

pictograma X

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 un color Pictograma 1:N

Tiene2

Entidades Cardinalidad Descripción

Pictograma 1:N Un pictograma tan solo pertenece a una categoría. Y una o varias categorías pueden pertenecer a varios pictogramas. Categoría 1:1

Tiene3

Entidades Cardinalidad Descripción

Categoría 1:1 Una categoría puede tener varias subcategorías. Y una o varias subcategoría pertenece a una sola categoría Subcategoría 1:N

- 27 -

5.3.3 Modelo físico

A continuación se muestra el modelo que genera automáticamente MySQL Workbench a 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 aplicar toda 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 Buscar pictograma por tags y la típica ventana “Acerca de”.

- 28 -

5.4.1 Interfaz “Aplicación principal”

A continuación se muestra la ventana principal de la aplicación. Desde ella se manejan todas 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‟. Justo

debajo de este menú se encuentra una barra de herramientas con los iconos para crear un nuevo documento de pictogramas, un botón para guardar los documentos y un botón de ayuda. Cabe destacar que en esta barra se encuentra una caja de búsqueda rápida de pictogramas, es decir, en ella se introduce el nombre de un pictograma que queramos introducir en un documento de pictogramas. Una característica de esta caja de búsqueda es que a medida que vayamos escribiendo los caracteres que componen el pictograma, se irán mostrando dinámicamente todos los pictogramas que coinciden con el texto introducido.

Se puede ver un menú lateral izquierdo cuya finalidad es la de mostrar un pictograma rá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 con hacer 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‟.

- 29 -

5.4.2 Interfaz “Documento de pictogramas”

Al trabajar con un formulario MDI (Multiple Document Interface), todos los formularios de tipo „Documento de pictogramas‟ estarán contenidos en la ventana principal.

Se pueden crear tantos documentos de pictogramas como se quieran. Una vez hayamos creado 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, la aplicació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 de pictogramas, el panel de opciones superior se habilitará para así poder trabajar con las propiedades 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ú principal añadirá las opciones „Pictograma‟ y „Documento‟.

Por defecto, se introducirán los pictogramas con un lado de 3cm y se mostrarán los bordes de los pictogramas con un grosor de 4px. El tamaño del documento será la de un folio (A4).

- 30 -

5.4.3 Interfaz “Base de datos”

En esta ventana podremos interactuar con la base de datos de la aplicación. Como se puede 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.

- 31 -

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 la ventana principal con la particularidad de que podremos ir viendo los pictogramas que coinciden con la búsqueda. Según vayamos tecleando los caracteres que componen el nombre del 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 de bú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ás general, 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 de arrastrar 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 la categoría de los pictogramas: verbos, personas y pronombres personales, términos sociales, nombres, etc.

- 32 -

5.4.5 Interfaz “Búsqueda por etiquetas”

Esta ventana puede llegar a ser la más interesante. Utilizaremos esta búsqueda si lo que queremos es crear un tablero de comunicación con pictogramas que se engloben en un tema en concreto. Por ejemplo, si queremos un tablero con pictogramas sobre expresiones del tiempo deberemos introducir en el cuadro de búsqueda las palabras claves „expresión‟ y „tiempo‟. Estas palabras 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 pictogramas relacionados entre sí de una manera rápida.

Al igual que en la búsqueda por coincidencias, podemos insertar los pictogramas en el documento de la misma manera, mediante el botón „Insertar‟ o realizando un drag&drop.

- 33 -

5.4.6 Interfaz “Acerca de”

Se trata de la típica ventana “Acerca de” con información sobre la aplicación. Se puede ver en la siguiente figura:

Como apunte decir que la empresa “Star System Software” es ficticia.

- 34 -

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 integrated development environment), es un programa informático compuesto por un conjunto de herramientas de programación.

Un IDE es un entorno de programación que ha sido empaquetado como un programa de aplicación, es decir, consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI). Los IDEs pueden ser aplicaciones por sí solas o pueden ser 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 debido a la cantidad de herramientas que integra y por la facilidad de uso. Además por la posibilidad de crear 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 de programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET. Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma.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-Relational Mapping) Entity Framework 4.0.

6.2.1 ¿Qué es el Entity Framework?

EF es un conjunto de tecnologías que brindan soporte para desarrollar aplicaciones orientadas a datos. En otras palabras, sin el EF se deben crear dos modelos, uno para los objetos y otro para la base de datos y entender ambos. Esto se da porque la forma de acceder y administrar los datos desde un modelo de objetos es diferente respecto a la forma en que se hace desde 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 son muy diferentes, el modelo de objetos de una aplicación y el modelo de la base de datos.

- 35 -

Un ORM lo que hace es llevar a cabo esta transformación de datos que normalmente se hace a mano cuando interactuamos con la base de datos; es decir, todo lo que normalmente hacíamos desde los métodos de la capa de acceso a datos o para llevar a cabo operaciones CRUD (crear, obtener, actualizar y borrar). Los ORM además abstraen la funcionalidad requerida 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 ocupaba nuestra capa de acceso a datos en la arquitectura tradicional n-capas. Es decir, la librería que normalmente creábamos para acceder y abstraer el acceso al o a los repositorios de datos, ya no es necesaria dado que el EF nos da toda la funcionalidad requerida para poder interactuar con los 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 creemos para la capa de acceso a datos y seleccionamos “Nuevo elemento…”. En mi caso el proyecto se llama SPC.DataAccessLayer y como se puede ver en la imagen ya está creado.

- 36 -

En la nueva ventana que aparece debemos elegir el elemento “ADO .NET Entity Data

Model” 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 asistente

creará 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 creado una 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 la base de datos.

- 37 -

Para que la cadena de conexión se guarde en un fichero App.Config hay que seleccionar la 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 el modelo. Si tuviéramos „Vistas‟ o „Procedimientos almacenados‟ también debemos incluirlos.

- 38 -

Por último hacemos click en el botón „Finalizar‟ y el Entity Framework nos genera

automá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 que se 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 de base de datos más usados en internet, la principal razón de esto es que es gratis para aplicaciones 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.

- 39 -

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 la aplicació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 podemos descargar desde la página de MySQL en el link http://dev.mysql.com/downloads/connector/net/5.2.html .

Una vez descargado el archivo lo instalamos, al terminar la instalación ya podremos trabajar con bases de datos MySQL en Visual Studio.NET.

Para trabajar con MySQL en nuestro proyecto debemos agregar una referencia a MySQL. Para ello vamos al panel derecho “Explorador de soluciones” y damos click derecho

en la carpeta “Referencias” y damos click en “Añadir referencia”.

Nos mostrará otra ventana, aquí hacemos click en la pestana “Examinar” y vamos a la siguiente dirección C:\Program Files\MySQL\MySQL Connector Net 6.3.0\Assemblies, en esa

- 40 -

dirección seleccionamos la dll “MySql.Data.dll” y hacemos click en Aceptar. Ahora ya se puede trabajar 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 nos

aparecerá 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 Connector con .NET v6.3.0) nos debe mostrar la opción para elegir “MySQL Database”. Seleccionamos y

hacemos click en Aceptar.

- 41 -

A continuación, debemos completar la conexión agregando el “Server name”, “User

name” y el “Password”. Además, tenemos que elegir la base de datos con la que vayamos a

trabajar, en este caso, “SistemaPictograficoComunicacion”. Para probar que la conexión es

correcta basta con hacer click en el botón “Probar conexión”, si es así se nos informará con el

mensaje “La conexión de prueba se realizó correctamente”.

Por último, hacemos click en „Aceptar‟ y habremos creado una conexión a la base de

datos.

- 42 -

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 a

datos”.

Como bien se ha mencionado antes el lenguaje de acceso a datos utilizado para realizar consultas es SQL To Entities.

En todos los métodos se usa un contexto de corta duración mediante una sentencia using 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 al conjunto de entidades especificado del contexto de objetos y después se envían los cambios a la base de datos.

En este método se pasa como parámetro un objeto Pictograma por referencia y lo insertamos 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 a objetos 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 lo que 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 en nuestra base de datos.

- 43 -

Para ello se crea una consulta LINQ To Entities y el resultado se pasa a la lista de pictogramas.

6.4.1.3 Obtener pictogramas coincidentes

Este método se utiliza en la ventana “Buscar pictogramas por coincidencias” y su utilidad es devolver los pictogramas que coinciden con la caja de búsqueda según vayamos escribiendo los caracteres.

Este método es muy similar al anterior. La diferencia es que recibe como parámetro un string s que es utilizado en el método StartsWith( ) que devuelve los pictogramas que comiencen 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 pictogramas

por tags”. En este método se ha implementado un algoritmo que recorre todos los pictogramas para comprobar uno a uno las etiquetas que lo definen.

- 44 -

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 los

tags. 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.

- 45 -

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 los pictogramas. 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 que pertenece a dicho identificador.

Se devuelve el objeto CodigoColor que pertenece a dicho identificar.

- 46 -

6.4.3 Clase CategoriaDAL

En esta clase se implementan los métodos relacionados con las posibles categorías en los 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 el resultado 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 tomar cada 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 obtener sus subcategorías.

- 47 -

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 clases PictogramaBL, CategoriaBL, SubcategoriaBL y CodigoColorBL. Debido a que la capa de interfaz 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á si debe preguntar a la capa DAL para obtener información o para devolver el control a la capa de presentación si las validaciones fallaron. Una vez más, hay que añadir una referencia en el proyecto 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 la posibilidad de usar entidades Self-Tracking. Las entidades Self-Tracking son las clases que no tienen dependencia de Entity Framework, pero que incluyen mecanismos que gestionan los cambios en sus propiedades.

Estas entidades nos permiten enviarlas a un cliente, realizar cambios sobre ellas y recibirlas conociendo qué cambios se han realizado, sin necesidad de consultar el contexto. Con estos cambios y con algunas nuevas funcionalidades de Entity Framework 4.0 se obtiene un mejor 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 o Deleted), 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 derecho sobre el modelo (fichero edmx) y seleccionar “Agregar elemento de generación de código…”

como muestra la siguiente figura.

- 48 -

En esta ventana seleccionamos la opción de “Generador de entidades de seguimiento

propio ADO .NET”.

- 49 -

¿Qué se consigue con esto? Pues si revisamos el “Explorador de soluciones”, se puede observar 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. Estas plantillas generan las clases necesarias para Self-Tracking, tanto para el Contexto como para nuestras entidades del modelo.

Ahora ya se dispone de generadores de código necesario para nuestro Self-Tracking Context y para las Entidades Self-Tracking. Estos dos ficheros se generan en la capa de acceso a datos, pero ¿es recomendable dejar las entidades en el mismo proyecto que el contexto? Si lo que se quiere desarrollar es una aplicación n-capas, la respuesta es no, y como este proyecto se basa en una arquitectura n-capas, lo ideal sería separar la plantilla SPCModel.Types.tt en otro proyecto 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 las plantillas 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.

- 50 -

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.DataAccessLayer\SPCModel.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 de generación de código, en otro proyecto (dll) para su reutilización en cualquiera de las capas. Al incluir la plantilla, mantenemos su funcionalidad que nos permitiría modificar el modelo Entity Framework (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 la

siguiente manera:

- 51 -

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 el usuario, las pantallas que se le muestra para que interaccione con la aplicación, comunicándole la información y recolectando la información suministrada por el usuario en un mínimo de proceso (realizando validaciones para comprobar que no hay errores de formato). Esta capa se comunica únicamente con la capa de negocio llevando y trayendo los datos o registros necesarios, es la interfaz gráfica del programa y debe ser lo más amena posible para una mejor comunicació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 contexto dado.

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ón de 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 la base de datos el pictograma escrito en la caja de búsqueda además de buscar la imagen correspondiente en la carpeta “Pictogramas”.

- 52 -

Este evento se produce cada vez que se presiona una tecla, pero solo entra en él cuando la tecla es INTRO. Básicamente lo que hace es que busca el nombre del pictograma introducido en la base de datos. Si existe, es decir, si es distinto de null, obtiene la extensión de la imagen y la ruta.

Si por algún motivo se produce algún error se muestra el mensaje correspondiente mediante una ventana.

- 53 -

6.7.2.2 Insertar pictograma en el panel mediante drag&drop

Este evento se encuentra en la clase FormDocumentoPictogramas y se dispara cuando arrastramos un pictograma sobre el documento de pictogramas. Es una alternativa a hacer click sobre el botón “Insertar en documento”.

- 54 -

En las primeras líneas se determina las coordenadas relativas del panel donde soltamos el pictograma.

A continuación se produce un copiado de las propiedades del pictograma como por ejemplo el nombre, la imagen o el color de fondo.

Seguidamente se le asigna todos los manejadores de eventos que le corresponda, entre ellos, MouseMove, MouseDown, MouseUp, MouseClick, etc., para luego añadirlo al panel que forma 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 de pictogramas todos los pictogramas existentes en la base de datos. Para que la ventana no se quede “colgada” mientras se ejecuta esta operación se utiliza el control backgroundWorker.

El control BackgroundWorker permite operaciones costosas o duraderas en un hilo diferente al de la interfaz, de manera que la aplicación sigue respondiendo al usuario mientras este trabajo se procesa en segundo plano.

Usando este control, la gestión de hilos está encapsulada en el control de manera que el programador 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ínea de código backgroundWorker.RunWorkerAsync(pictogramas); en el evento Load de dicha ventana.

- 55 -

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.

- 56 -

En primer lugar se “limpian” los controles que contengan información de una búsqueda anterior.

A continuación, se comprueba mediante la instrucción de decisión if si el texto introducido es null o está formado por espacios en blanco. Si no es así, divide todas las etiquetas que estén separadas por cualquier carácter mediante el método Split y se llama al método de la capa de lógica de negocio getPictogramasTags pasándole como argumento el array de cadenas s 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 al método RunWorkerAsync pasándole como parámetro la lista de pictogramas para así ir los pictogramas 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 algoritmo se ejecuta cuando movemos con el mouse el pictograma seleccionado por el documento disparando así el evento MouseMove. La finalidad de este algoritmo es que el pictograma no sobresalga del documento de pictogramas cuando lo movamos por él quedando éste en segundo plano no pudiéndose recuperar.

Como se puede observar, en primer lugar se comprueba que se esté moviendo el pictograma haciendo click izquierdo sobre el pictograma. Una vez comprobado esto, se verifica que los bordes del pictograma no sobrepasen de los márgenes del documento mediante las dos instrucciones de control if. Si el valor de los márgenes es igual a cero significará que como máximo el pictograma se puede desplazar hasta el borde del documento de pictogramas.

- 57 -

7 PRUEBAS

Para probar el correcto funcionamiento de la aplicación se realizaron varias pruebas. A continuació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 ventana principal efectúa su cometido correctamente. Para ello se va a introducir un pictograma en la caja de búsqueda, como por ejemplo el pictograma “colegio”.

Se puede observar que la caja de búsqueda ofrece pictogramas según los caracteres escritos. Una vez seleccionado el pictograma, debe aparecen en el recuadro asignado para ello.

- 58 -

Por último, podemos ver que el pictograma seleccionado aparece con el borde del color correspondiente según categoría del SPC.

7.2 Ejemplo práctico 2: Insertar pictogramas en el documento mediante drag&drop

En este ejemplo se probará el funcionamiento del algoritmo explicado en el apartado 6.7.2.2 Insertar pictograma en el panel mediante drag&drop. Se tratará de arrastrar y soltar el pictograma sobre el documento de pictogramas. Pero antes debemos tener abierto un documento de 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 el documento.

Al soltar el pictograma sobre el documento, éste debe haberse colocado en él.

- 59 -

También se podría haber insertado el pictograma en el documento haciendo click sobre el 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 click sobre el botón “Insertar nuevo”. Esto hará que se habiliten los controles necesarios para introducir los datos del nuevo pictograma. A la vez se deshabilita la lista de pictogramas de la izquierda.

Como ejemplo se va a introducir una foto jpg del personaje de “Padre de familia”

Stewie.

- 60 -

Una vez introducido los datos hacemos click en “Aplicar” para guardar el nuevo

pictograma en la base de datos. Hay que tener en cuenta que todos los datos son obligatorios a excepción de “Definición” y “Tags”. Si todo es correcto, la aplicación debe mostrar el siguiente

mensaje.

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 el apartado anterior.

Para ello seleccionamos de la lista de pictogramas el pictograma y hacemos click en el botón “Eliminar”.

- 61 -

Se lanzará una ventana con un mensaje preguntándonos si estamos seguros de eliminar el 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 que cerrar todos los documentos de pictogramas que tengamos abierto. Esto se debe a que no podemos eliminar un pictograma de la base de datos y a la vez tenerlo insertado en el documento ya que existe una referencia entre el pictograma insertado y el de la base de datos.

- 62 -

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 van mostrando los pictogramas coincidentes con el texto introducido. En este caso se irán introduciendo los caracteres „a‟, „ab‟, „abu‟ y „abue‟. En cada presión del nuevo carácter introducido debe reiniciarse la búsqueda y mostrar los nuevos resultados.

“a”

“ab”

- 63 -

“abu”

Como se puede observar, en cada inserción de un carácter nuevo la búsqueda se reinicia mostrando un nuevo resultado acorde a la cadena de texto introducida en ese instante.

Una vez completada la búsqueda, podemos seleccionar el pictograma deseado e insertarlo haciendo click en el botón “Insertar” o haciendo un drag&drop al documento de

pictogramas.

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 una búsqueda por etiquetas.

Aquí se pone de manifiesto los apartados 6.4.1.4 Obtener pictogramas por etiquetas y 6.7.2.4 Buscar pictogramas por etiquetas.

Como ejemplo, se va a realizar tres pruebas.

1. Etiqueta: negro.

- 64 -

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. Aunque aparezcan pictogramas repetidos hay que saber que no significan lo mismo, como por ejemplo “hay viento”, “sopla el viento” y “hace aire”.

- 65 -

3. Etiquetas: número, moneda y dos.

Esta vez se muestran solo dos pictogramas que cumplen las tres etiquetas. Si las etiquetas fueran “número” y “moneda” el resultado sería:

Nota: para que la búsqueda sea efectiva, todos los pictogramas deben escribirse sin faltas de ortografía y con las tildes correspondientes.

- 66 -

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 de comunicació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 distinta temá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 dicho tablero. Para ello podemos usar el buscador de la ventana principal o el buscador dinámico de pictogramas.

En cuento infantil venía a decir algo así: “Un niño o una niña, se le cae un diente. El niño se va a dormir y coloca el diente debajo de la almohada. Mientras el niño está durmiendo viene el Ratoncito Pérez y le pone dinero a cambio del diente. Cuando el niño se levanta al amanecer, 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 hacer referencia 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 del cuento y si quisiéramos podríamos hacer visible el nombre (encima o debajo) de cada pictograma para hacer el tablero más fácil de entender.

- 67 -

Nota: Para cambiar el nombre de un pictograma podemos hacerlo seleccionando el pictograma deseado, por ejemplo “ratón”, y reescribimos el nombre, “Ratoncito Pérez”, en la caja de texto de la sección Pictograma seleccionado del menú superior de opciones. Una segunda forma de hacerlo es presionado la tecla ENTER una vez hayamos seleccionado el pictograma apareciendo una pequeña ventana habilitada para dicho fin.

- 68 -

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 por etiquetas. ¿Por qué no buscar uno a uno los pictogramas?, pues porque los pictogramas estarán relacionados 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. Una vez insertado los pictogramas en la posición deseada, podemos añadir un color de fondo al documento 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 un día cualquiera en clase. Por ejemplo el día a tratar será lunes e iremos disponiendo los pictogramas 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 para que la persona que los vaya a utilizar lo haga de una manera rápida, cómoda y sencilla.

- 69 -

8 CONCLUSIONES

Las conclusiones han sido positivas. He aprendido bastante en temas relacionados con la Ingeniería del Software además de aprender a trabajar con tecnologías como Entity Framework 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 idea que 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 puntos en los que se puede mejorar este proyecto ya que abarcar todos los posibles fallos es difícil y a la vez, por cuestiones de tiempo, complicado.

Este proyecto no ha tratado solo de ponerse a programar sino que he necesitado un tiempo de investigación y aprendizaje de temas relacionados con la Comunicación Alternativa y Aumentativa y de cómo es el trabajo relacionado con personas con algún tipo de trastorno en la comunicación.

- 70 -

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 Abril Abadín, Clara I. Delgado Santos y Ángela Vigara Cerrato.

- Capítulo VIII de “Tecnologías de ayuda y comunicación aumentativa y alternativa en

personas 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 de

Andalucí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 de Andalucí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#