SlideShare una empresa de Scribd logo
1 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




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

                                      -1-
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.,


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

                                               -3-
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).


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




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




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




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




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




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



                                      - 10 -
•   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 -
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
                                                                            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 -
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 €




                                              - 13 -
Presupuesto:

               Concepto            Precio (€)

               Personal            2.632,76

               Hardware              91,67

               Software              84,12

                Total              2.808,55




                          - 14 -
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


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




                                             - 17 -
Caso de uso 2




Caso de uso 3




Caso de uso 4




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




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




                                            - 20 -
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

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




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




                                            - 23 -
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:




                                             - 24 -
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 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 -
SUBCATEGORÍA

  Atributo                  Tipo      Nulo?                    Descripción                 Predet.   PK     FK

idSubcategorí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 -
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”.




                                             - 27 -
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’.



                                             - 28 -
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).




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



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



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




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




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

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




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



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




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


                                           - 38 -
•   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 FilesMySQLMySQL Connector Net 6.3.0Assemblies, en esa

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




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




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




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




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




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




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




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




                                             - 47 -
En esta ventana seleccionamos la opción de “Generador de entidades de seguimiento
propio ADO .NET”.




                                         - 48 -
¿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.




                                             - 49 -
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 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:




                                             - 50 -
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”.




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




                                               - 52 -
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”.




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




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




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




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




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




                                             - 59 -
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”.




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




                                            - 61 -
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”

                                          - 62 -
“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.




                                            - 63 -
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”.




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




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




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




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




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




                                              - 69 -
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#


                                            - 70 -

Más contenido relacionado

Destacado (6)

Pensamiento y Sociedad
Pensamiento y SociedadPensamiento y Sociedad
Pensamiento y Sociedad
 
Habilidades para la comunicación oral
Habilidades para la comunicación oralHabilidades para la comunicación oral
Habilidades para la comunicación oral
 
2.1 habilidades innatas y habilidades aprendidas
2.1 habilidades innatas y habilidades aprendidas2.1 habilidades innatas y habilidades aprendidas
2.1 habilidades innatas y habilidades aprendidas
 
El sistema pictográfico de comunicación spc
El sistema pictográfico de comunicación  spcEl sistema pictográfico de comunicación  spc
El sistema pictográfico de comunicación spc
 
Comunicación Eficaz
Comunicación EficazComunicación Eficaz
Comunicación Eficaz
 
proceso de comunicación
proceso de comunicaciónproceso de comunicación
proceso de comunicación
 

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

Unidad III 2012
Unidad III 2012Unidad III 2012
Unidad III 2012
profcastro
 
Guia recoleccion de informacion
Guia recoleccion de informacion Guia recoleccion de informacion
Guia recoleccion de informacion
Camilo Daza
 

Similar a Interfaz gráfica para el sistema de comunicación no vocal SPC (20)

Los Pictogramas
Los PictogramasLos Pictogramas
Los Pictogramas
 
Examen grupal de vanne
Examen grupal de vanneExamen grupal de vanne
Examen grupal de vanne
 
Comunicacion visual y tecnologia de Grafios Juan Carlos Ainstein
Comunicacion visual y tecnologia de Grafios Juan Carlos AinsteinComunicacion visual y tecnologia de Grafios Juan Carlos Ainstein
Comunicacion visual y tecnologia de Grafios Juan Carlos Ainstein
 
Examen grupal
Examen grupalExamen grupal
Examen grupal
 
Nuebo trabajo-tics (1)
Nuebo trabajo-tics (1)Nuebo trabajo-tics (1)
Nuebo trabajo-tics (1)
 
Nuebo trabajo tics
Nuebo trabajo ticsNuebo trabajo tics
Nuebo trabajo tics
 
Guia minspeak
Guia minspeakGuia minspeak
Guia minspeak
 
Guia minspeak
Guia minspeakGuia minspeak
Guia minspeak
 
Unidad III
Unidad IIIUnidad III
Unidad III
 
Omar1
Omar1Omar1
Omar1
 
Omar1
Omar1Omar1
Omar1
 
Unidad III 2012
Unidad III 2012Unidad III 2012
Unidad III 2012
 
tutorial de informatica
tutorial  de informaticatutorial  de informatica
tutorial de informatica
 
Guia didactica v5.1
Guia didactica v5.1Guia didactica v5.1
Guia didactica v5.1
 
Andamios lizbeth salassalazar.
Andamios lizbeth salassalazar.Andamios lizbeth salassalazar.
Andamios lizbeth salassalazar.
 
Guia recoleccion de informacion
Guia recoleccion de informacion Guia recoleccion de informacion
Guia recoleccion de informacion
 
Fitxa avaluació
Fitxa avaluacióFitxa avaluació
Fitxa avaluació
 
Trabajo tic.
Trabajo tic.Trabajo tic.
Trabajo tic.
 
Unidad II
Unidad IIUnidad II
Unidad II
 
Tecnologia de Informacion y Comunicacion
Tecnologia de Informacion y ComunicacionTecnologia de Informacion y Comunicacion
Tecnologia de Informacion y Comunicacion
 

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

  • 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.
  • 3. 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.
  • 4. “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)
  • 5. Í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
  • 6. 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
  • 7. 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
  • 8. 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.…. -1-
  • 9. 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., -2-
  • 10. 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. -3-
  • 11. 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). -4-
  • 12. 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. -5-
  • 13. - 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. -6-
  • 14. - 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. -7-
  • 15. - 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. -8-
  • 16. - 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. -9-
  • 17. - 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. - 10 -
  • 18. 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 -
  • 19. 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 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 -
  • 20. 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 € - 13 -
  • 21. Presupuesto: Concepto Precio (€) Personal 2.632,76 Hardware 91,67 Software 84,12 Total 2.808,55 - 14 -
  • 22. 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 - 15 -
  • 23. 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 -
  • 24. 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 - 17 -
  • 25. Caso de uso 2 Caso de uso 3 Caso de uso 4 - 18 -
  • 26. 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. - 19 -
  • 27. - 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. - 20 -
  • 28. 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 - 21 -
  • 29. 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. - 22 -
  • 30. 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. - 23 -
  • 31. 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: - 24 -
  • 32. 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 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 -
  • 33. SUBCATEGORÍA Atributo Tipo Nulo? Descripción Predet. PK FK idSubcategorí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 -
  • 34. 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”. - 27 -
  • 35. 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’. - 28 -
  • 36. 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). - 29 -
  • 37. 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. - 30 -
  • 38. 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. - 31 -
  • 39. 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. - 32 -
  • 40. 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. - 33 -
  • 41. 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. - 34 -
  • 42. 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. - 35 -
  • 43. 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. - 36 -
  • 44. 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. - 37 -
  • 45. 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. - 38 -
  • 46. 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 FilesMySQLMySQL Connector Net 6.3.0Assemblies, en esa - 39 -
  • 47. 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. - 40 -
  • 48. 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. - 41 -
  • 49. 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. - 42 -
  • 50. 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. - 43 -
  • 51. 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. - 44 -
  • 52. 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. - 45 -
  • 53. 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. - 46 -
  • 54. 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. - 47 -
  • 55. En esta ventana seleccionamos la opción de “Generador de entidades de seguimiento propio ADO .NET”. - 48 -
  • 56. ¿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. - 49 -
  • 57. 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 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: - 50 -
  • 58. 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”. - 51 -
  • 59. 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. - 52 -
  • 60. 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”. - 53 -
  • 61. 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. - 54 -
  • 62. 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 -
  • 63. 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. - 56 -
  • 64. 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. - 57 -
  • 65. 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. - 58 -
  • 66. 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. - 59 -
  • 67. 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”. - 60 -
  • 68. 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. - 61 -
  • 69. 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” - 62 -
  • 70. “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. - 63 -
  • 71. 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”. - 64 -
  • 72. 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. - 65 -
  • 73. 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. - 66 -
  • 74. 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. - 67 -
  • 75. 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. - 68 -
  • 76. 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. - 69 -
  • 77. 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# - 70 -