Índice · Estructura de la memoria ... en un sistema de soporte a la toma de decisiones o GDSS...

73

Transcript of Índice · Estructura de la memoria ... en un sistema de soporte a la toma de decisiones o GDSS...

1

Índice Índice _______________________________________________________________________ 1

1. Introducción: _______________________________________________________________ 4 1.1. Motivación ____________________________________________________________________ 5 1.2. Objetivo Principal______________________________________________________________ 6 1.3. Objetivos Específicos ___________________________________________________________ 7 1.4. Estructura de la memoria _______________________________________________________ 7

2. Trabajo relacionado _________________________________________________________ 8 2.1. Computadores en la educación ___________________________________________________ 8

2.1.1. Computadores en la sala de clases _______________________________________________________8 2.1.2. Dispositivos móviles como herramienta educacional ________________________________________8

2.2. Trabajo colaborativo ___________________________________________________________ 9 2.2.1. Colaboración y aprendizaje ___________________________________________________________10

2.3. Interfaces basadas en gestos con lápiz y trazos a mano alzada_________________________ 10 3. Requerimientos del sistema___________________________________________________ 12

3.1. Descripción del sistema de soporte a decisiones_____________________________________ 12 3.1.1. Modelo de toma de decisiones _________________________________________________________12

3.1.1.1. Modelo adaptado a handhelds _____________________________________________________14 3.1.2. Componentes educativas _____________________________________________________________16

3.2. Requerimientos computacionales del sistema ______________________________________ 16 3.2.1. Interfaz de usuario __________________________________________________________________16 3.2.2. Formato de los datos ________________________________________________________________17

3.2.2.1. Trazos manuscritos______________________________________________________________17 3.2.2.2. Texto ________________________________________________________________________17

3.2.3. Tiempos de espera __________________________________________________________________17 4. Solución implementada ______________________________________________________ 18

4.1. Detalles principales del sistema __________________________________________________ 18 4.1.1. Brainstorming _____________________________________________________________________18

4.1.1.1. Agregar ideas __________________________________________________________________18 4.1.1.2. Cambiar entre modos individual y grupal ____________________________________________20 4.1.1.3. Mover ideas ___________________________________________________________________21 4.1.1.4. Fusionar ideas__________________________________________________________________21 4.1.1.5. Editar ideas____________________________________________________________________22 4.1.1.6. Salida de la etapa _______________________________________________________________23

4.1.2. Groan ____________________________________________________________________________23 4.1.2.1. Agrupar ideas __________________________________________________________________23 4.1.2.2. Deshacer agrupar ideas___________________________________________________________24 4.1.2.3. Editar ideas____________________________________________________________________25 4.1.2.4. Comentar ideas_________________________________________________________________25 4.1.2.5. Salida de la etapa _______________________________________________________________27

4.1.3. Convergence/FODA ________________________________________________________________28 4.1.3.1. Votación mediante FODA ________________________________________________________28 4.1.3.2. Selección de las ideas finales ______________________________________________________29

4.1.4. FODA inmediato ___________________________________________________________________30 4.1.5. Navegando entre etapas ______________________________________________________________30

4.2. Funcionalidades educativas _____________________________________________________ 31

2

4.2.1. Feedback por mensajes ______________________________________________________________31 4.2.2. Indicadores________________________________________________________________________31

4.2.2.1. Cantidad de aportes _____________________________________________________________31 4.2.2.2. Satisfacción con el trabajo ________________________________________________________31

4.2.3. Log______________________________________________________________________________32 4.2.4. Aportes del profesor_________________________________________________________________32

4.2.4.1. Establecer los grupos de trabajo____________________________________________________32 4.2.4.2. Comentar dentro de un grupo______________________________________________________34

4.3. Escenario típico de uso del sistema _______________________________________________ 35 5. Implementación ____________________________________________________________ 37

5.1. Ambiente de programación _____________________________________________________ 37 5.2. Arquitectura de la plataforma___________________________________________________ 37

5.2.1. Postprocesables ____________________________________________________________________38 5.2.2. SmartDraw________________________________________________________________________39 5.2.3. Dibujables ________________________________________________________________________39 5.2.4. Modos ___________________________________________________________________________40 5.2.5. Gestos____________________________________________________________________________40 5.2.6. Participantes_______________________________________________________________________41 5.2.7. Contenedor de Dibujables ____________________________________________________________41 5.2.8. SmartNode ________________________________________________________________________41 5.2.9. Despliegue de la información _________________________________________________________41

5.3. Arquitectura del sistema de toma de decisiones_____________________________________ 42 5.4. Implementación de los modos principales _________________________________________ 44

5.4.1. Brainstorming _____________________________________________________________________44 5.4.1.1. Agregar ideas __________________________________________________________________44 5.4.1.2. Mover ideas ___________________________________________________________________44 5.4.1.3. Editar ideas____________________________________________________________________45 5.4.1.4. Fusionar ideas__________________________________________________________________45 5.4.1.5. Cambiar entre modos individual y grupal ____________________________________________45 5.4.1.6. Salida de la etapa _______________________________________________________________46

5.4.2. Groan ____________________________________________________________________________46 5.4.2.1. Agrupar ideas __________________________________________________________________47 5.4.2.2. Deshacer agrupar ideas___________________________________________________________47 5.4.2.3. Editar ideas____________________________________________________________________47 5.4.2.4. Comentar ideas_________________________________________________________________48 5.4.2.5. Salida de la etapa _______________________________________________________________48

5.4.3. Convergence/FODA ________________________________________________________________48 5.4.3.1. Votación mediante FODA ________________________________________________________48 5.4.3.2. Selección de las ideas finales ______________________________________________________49

5.4.4. FODA inmediato ___________________________________________________________________49 5.4.5. Navegando entre etapas ______________________________________________________________50

5.4.5.1. Compartición de contenedores de dibujables __________________________________________50 5.4.5.2. Actualización al salir del contenedor ________________________________________________50 5.4.5.3. Caso especial de los dibujables de convergencia _______________________________________50 5.4.5.4. Adición de nuevas ideas después de salir de la fase de brainstorming_______________________52

5.5. Funciones educativas __________________________________________________________ 52 5.5.1. Feedback por mensajes ______________________________________________________________52 5.5.2. Indicadores________________________________________________________________________52 5.5.3. Log______________________________________________________________________________53 5.5.4. Aportes del profesor_________________________________________________________________53

5.5.4.1. Comentar dentro de un grupo______________________________________________________53 5.6. Funciones genéricas ___________________________________________________________ 53

5.6.1. Scrolling__________________________________________________________________________54

3

5.6.1.1. Scroll automático _______________________________________________________________54 5.6.1.2. Scroll manual __________________________________________________________________54

5.6.2. Rotación__________________________________________________________________________55 5.6.3. Redimensión ______________________________________________________________________57 5.6.4. Selección por cruce _________________________________________________________________59 5.6.5. Selector de color y ancho de línea ______________________________________________________61

5.7. Funciones no utilizadas ________________________________________________________ 63 5.7.1. Modo Groan_______________________________________________________________________63

5.7.1.1. Asociación con modo FODA ______________________________________________________63 5.7.1.2. Movimiento/Agrupación de más de una celda _________________________________________64 5.7.1.3. Agregar filas/columnas __________________________________________________________64 5.7.1.4. Borrar filas/columnas ____________________________________________________________65 5.7.1.5. Escritura directa en una celda______________________________________________________65

5.7.2. Otras funciones ____________________________________________________________________65 5.7.2.1. Autoscroll en tiempo real _________________________________________________________65

6. Comentarios _______________________________________________________________ 66 6.1. Trabajo futuro________________________________________________________________ 66

6.1.1. Sincronización entre dispositivos handheld _______________________________________________66 6.1.2. Velocidad de transmisión_____________________________________________________________67 6.1.3. Pulido de la interfaz _________________________________________________________________67 6.1.4. Manejo de memoria _________________________________________________________________67 6.1.5. Evaluación de usabilidad _____________________________________________________________67 6.1.6. Mejora del log _____________________________________________________________________68

6.2. Conclusiones _________________________________________________________________ 68 7. Bibliografía _______________________________________________________________ 70

4

1. Introducción: En los últimos años, el mundo de los dispositivos handheld se ha expandido considerablemente. Las antiguas limitaciones de capacidad de memoria, velocidad de proceso, han sido mejoradas notablemente, aunque todavía se tienen algunas desventajas como ser la pantalla reducida o el tiempo de vida de la batería. De este modo, las handhelds de la actualidad son utilizadas en aplicaciones de software cada vez más complejas y aplicadas a diferentes ámbitos de acción (Educación [6], diseño colaborativo [13], simulaciones de sistemas complejos [14], entrenamiento en distintas áreas profesionales [15], etc.). Las aplicaciones basadas en handhelds utilizadas para dichos ámbitos usualmente requieren el despliegue de una gran cantidad de información en la pequeña pantalla. Por esto, usualmente se requieren interfaces de usuarios distintas a las utilizadas en PCs, como por ejemplo, interfaces basadas en gestos de lápiz sobre pantallas touch-screen [7], tablas con bloqueo de columnas más relevantes [2], detección de inclinación de lápiz como parte de la interfaz de usuario, división del contenido en áreas más manejables, o incluso presentación de la información por paginamiento [16]. El tema de este trabajo de título es el diseño e implementación de una aplicación de aprendizaje colaborativo para la enseñanza a la toma de decisiones orientada a alumnos universitarios, basada en un sistema de soporte a la toma de decisiones o GDSS implementado sobre handhelds conectadas inalámbricamente (un buen ejemplo se encuentra en [3]) con componentes educativos. Trabajos anteriores que inspiraron esta memoria se pueden ver en el ámbito de la educación, donde las investigaciones acerca del el uso de handhelds en salas de clase para apoyar el aprendizaje con aplicaciones colaborativas han mostrado diversos resultados positivos. Por ejemplo, según [6] hay beneficios motivacionales que tienen su incidencia en resultados positivos en el aprendizaje dados por el sólo uso de handhelds. En [12] se propone un sistema de identidad persistente que, combinado con su ejecución en el mundo real (permitido por las capacidades de la handheld, como cámaras fotográficas), aumenta la motivación del alumno y por tanto su interés por el aprendizaje. En [5] se muestran los beneficios sociales obtenidos por tecnologías móviles. Por ejemplo, se puede crear un grupo de discusión en un área pequeña y ver los comentarios de todos los del grupo en cada handheld (o filtrados por algún criterio). Otro uso puede ser compartir archivos, promoviendo que gente con intereses similares se conozca. La dimensión social de un sistema de aprendizaje colaborativo es importante, pues cada integrante del grupo debe relacionarse con los demás para llegar al consenso. En el ámbito del diseño colaborativo se ha visto que utilizar handhelds en el diseño de algún producto o solución tiende a producir resultados que están más de acuerdo con los requerimientos y que los integrantes individuales tienen una idea más homogénea respecto de cómo debería ser el producto final que están diseñando [17]. Considerando lo anterior, existen varias tareas y procesos que son necesarias de analizar y considerar al momento de implementar aplicaciones grupales. Por ejemplo a) el tener una versión unificada de un documento en el que todos los integrantes del grupo pueden aportar y ver los cambios instantáneamente (Collaborative writing) y asegurar que el resto de los integrantes

5

tengan una mejor idea acerca del contexto de los aportes, b) agrupar ideas similares como una sola para tener una visión global del tema puede mejorar el modelo mental de los involucrados y eliminar redundancia innecesaria, c) mantener el anonimato de los autores de las ideas, así reduciendo la aprensión al proponer ideas en frente del grupo [22], d) proponer ideas simultáneamente sin un orden específico [22], e) establecer la estructura a seguir del proceso para eliminar incertidumbre en cómo debiera ser el flujo del trabajo grupal [23]. También se puede apoyar la solución de problemas también para mejorar su rendimiento usando técnicas grupales [17]. Se ha mostrado que el tener un repositorio de información compartida hace que los estudiantes accedan a él para fundamentar sus posturas acerca de la solución [18]. La interacción estudiante-profesor puede agilizarse usando sistemas que permitan dar feedback en tiempo real a los alumnos de manera discreta y precisa. Esto le da al alumno una posibilidad de saber si lo está haciendo bien o si podría mejorar, sin que otros alumnos sepan esta información. Se estima que para que la aplicación de aprendizaje colaborativo sea exitosa, es necesario utilizar efectivamente las posibilidades que ofrecen los dispositivos handheld, tales como la interfaz basada en lápiz, y paradigmas diversos como los basados en mapas conceptuales, gestos, etc. ([19], [20], [21]). 1.1. Motivación Las aplicaciones colaborativas educativas basadas en sistemas de soporte a la toma de decisiones tradicionales del tipo cara a cara y que utilizan PCs usualmente requieren que los alumnos (El público objetivo de este trabajo de título) analicen grandes cantidades de información [23] en las diversas etapas de la toma de decisiones (generación de ideas – brainstorming, convergencia y toma de decisión final [17]). También se requiere que los mecanismos de mediación y soporte a los usuarios no sólo sean de entrega y recepción de información, sino también que sean capaces de a) promover la interacción social entre los integrantes de un grupo, b) coordinar los procesos y tareas de colaboración, c) incorporar reglas y roles determinados, d) proveer interfaces adecuadas para mostrar la información, e) proveer de mecanismos de awareness simples, f) proveer un set de funciones para realizar diversas acciones (borrar, copiar, etc.) sobre los datos, g) manejo de errores adecuado, etc. Por otro lado, los handhelds han demostrado ser buenas herramientas para dar soporte a diversas aplicaciones colaborativas del tipo cara a cara o en movimiento (educación, investigación, etc. [24]), incluso si en general no están orientados a manejar grandes volúmenes de información y su interfaz requiere un diseño diferente para mostrar la información y el equipo de trabajo al mismo tiempo. Por lo anterior, para mejorar el trabajo en grupo de los alumnos usando handhelds, se deben encontrar formas de desplegar y manipular tanto de forma individual como colaborativa, la misma cantidad de información (Principalmente texto manuscrito, tablas y dibujos). Al mismo tiempo se debe mantener el control de las interacciones grupales y tener en cuenta las características de estos dispositivos; esto es, pantallas reducidas e interfaces de entrada basadas en lápiz. Entonces, es necesario implementar mecanismos que permitan desarrollar la navegación

6

y la entrada de contenido de forma clara y expedita usando estas interfaces para soportar el aprendizaje de la toma de decisiones. Un ejemplo del uso que se le puede dar a estas aplicaciones es el siguiente: Se pide resolver un problema específico utilizando metodología de toma de decisiones. Para la etapa inicial, cada integrante del equipo propone sus ideas (brainstorming). Luego es necesario que todas las ideas sean agrupadas por similitud y presentadas, consensuadas y discutidas por todos los integrantes. Finalmente se hace una evaluación de cada alternativa para lo cual se puede utilizar una modalidad de votación y/o procesos iterativos de convergencia para la toma de una decisión. Específicamente, la aplicación hará lo siguiente: 1. Permitir que varios estudiantes analicen un contenido al mismo tiempo, viendo simultáneamente las acciones de todo el grupo en los handhelds del grupo. 2. Permitir al profesor comentar o evaluar el trabajo de los alumnos en tiempo real en las distintas etapas de la toma de decisión. 3. Mantener un registro de todos los cambios, comentarios o decisiones realizadas durante la sesión, aunque los cambios hayan sido deshechos. Un sistema de interacción viable para mantener todas las ideas son las tablas. 4. Agrupar ideas similares bajo una misma representación para ahorrar espacio en pantalla. Esto tiene que ser ejecutado por algún integrante “coordinador” del equipo, o ser sincronizado entre todas las handhelds. 5. Permitir votar para seleccionar la decisión final a tomar a partir de todas las propuestas. 6. Una vez terminada la selección, crear un reporte que resuma los aspectos importantes del proceso de toma de decisiones ejecutado. Las tablas podrían servir una vez más para este propósito. 7. Utilizar distintos mecanismos para desplegar la información a los integrantes del grupo. 1.2. Objetivo Principal Diseñar, implementar y validar una aplicación de aprendizaje colaborativo basada en GDSS cuyo objetivo es enseñar a alumnos universitarios a tomar decisiones mediante el uso de handhelds conectadas inalámbricamente. La aplicación debe mostrar toda la información relevante del proceso de toma de decisiones en sus distintas etapas (Mostrar todas las ideas propuestas durante el brainstorming, mostrar ideas agrupadas, resúmenes de las acciones ejecutadas y deshechas por los integrantes) además de proveer awareness de los participantes conectados y de la estructura del grupo (Por ejemplo, se debe ver claramente quién es el coordinador del grupo). Finalmente, la interacción con los usuarios (Principalmente estudiantes y profesores) a través de nuevas metáforas de interacción que serán desarrolladas para soportar el proceso de aprendizaje.

7

1.3. Objetivos Específicos

• Encontrar nuevas formas de interacción (Metáforas) para handhelds basadas en gestos de lápiz para ejecutar y manejar las tareas y procesos del sistema.

• Establecer formas de despliegue capaces de entregar gran cantidad de información usando la pantalla reducida de los dispositivos handheld. El tipo de información a desplegar es principalmente texto manuscrito, tablas, y dibujos en general, ingresados y manipulados a través de la interfaz de lápiz. Algunos de estos objetos pueden ser contenedores de otros dibujos, tablas, texto, etc.

• Utilizar las formas de interacción encontradas en la literatura para diseñar una aplicación con aspectos de aprendizaje colaborativo basado en GDSS y handhelds conectadas inalámbricamente, logrando que los alumnos tengan un rol activo en el proceso de enseñanza.

• Incorporar al GDSS componentes que permitan realizar un seguimiento del aprendizaje del proceso de toma de decisiones.

• Implementar el diseño y validar la implementación con los objetivos planteados 1.4. Estructura de la memoria El capítulo 2 contiene el trabajo relacionado respecto a tecnologías colaborativas sobre plataformas handheld. El capítulo 3 contiene los detalles de requerimientos. El capítulo 4 contiene la solución implementada. El capítulo 5 describe la arquitectura e implementación del sistema. El capítulo 6 contiene la discusión de los resultados y el trabajo futuro. Finalmente, el capítulo 7 contiene la bibliografía.

8

2. Trabajo relacionado 2.1. Computadores en la educación 2.1.1. Computadores en la sala de clases Existen varios trabajos que indican que la creación de una aplicación de aprendizaje colaborativo en el área de toma de decisiones es de interés. En [6] se realiza un estudio acerca de cómo la educación basada en la Web y otras aplicaciones educativas han sido desarrolladas utilizando estrategias que estimulan y retienen la concentración y motivación del estudiante. En [15] se muestra el uso de simulaciones computacionales con fines de entrenamiento para enfermería y medicina. En ellas, se utilizó un enfoque participativo, donde el estudiante se enfrentaba activamente al software. Reconocieron que el entrenamiento con simulaciones constituye un apoyo a las prácticas tradicionales de enseñanza en esta área y que sus ventajas deben ser consideradas en el diseño de los currículos. 2.1.2. Dispositivos móviles como herramienta educacional En [29] se plantea la utilidad que pueden tener los dispositivos móviles en la enseñanza de ciencias. Destaca su bajo costo y su poder en aumento. En su proyecto se expone el uso de la plataforma CARDS para el desarrollo de aplicaciones educacionales para dispositivos móviles. Realizan el estudio de dos aplicaciones creadas con esta plataforma: una para el intercambio de objetos y otra para el aprendizaje de metodologías de testeo de software. En [30] se realiza un análisis de tres herramientas sobre dispositivos móviles para cooperar en la sala de clases. Una aplicación es una herramienta para realizar anotaciones, la segunda replica un sistema de modelamiento sobre PDAs mientras que la tercera hace uso de lectores ópticos inalámbricos, además de los dispositivos móviles. En él, destaca los distintos modelos que las aplicaciones usa y concluye que, pese a la ubicuidad de los computadores de mano, el limitado tamaño de las pantallas restringe la efectividad del software. La iniciativa Palm Education Pioneers (PEP) fue fundada por Palm Inc. El fin de ella es la de llevar un estudio sistemático sobre el impacto y aplicaciones de las handhelds como herramienta educacional. Como parte de esta iniciativa, múltiples investigadores realizaron estudios relacionados con los dispositivos móviles en la sala de clases. En este marco podemos encontrar los trabajos de Roschelle, Tatar, Penuel y Vahey [31]. En [32] se realiza el trabajo medular de la iniciativa PEP, obteniendo los siguientes resultados: Los profesores de enseñanza básica que participaron en el proyecto dieron una respuesta abrumadoramente positiva acerca del uso de computadoras de mano en la sala de clases: Cerca del 90% de los profesores aseguró que ellas son una herramienta educacional eficiente, que tienen potencial para mejorar el aprendizaje y que seguirán utilizándolas en el futuro. Entre los beneficios obtenidos, los profesores destacaron el aumento de uso de tecnología, elevada motivación, colaboración y comunicación, así como los beneficios de una herramienta de aprendizaje portable y asequible. Por otra parte, se reconocieron como dificultades principales el

9

uso inadecuado, los problemas relacionados con el desconocimiento de la tecnología, los problemas de usabilidad (particularmente relacionados con los métodos de entrada), así como daño sufrido por los equipos. Roschelle concluye acerca de las dificultades encontradas en busca de aplicaciones educacionales móviles. Destaca el potencial de muchos de estos estudios, pero reconoce la falta de consistencia desde un enfoque tecnológico así como desde uno social. Indica que es necesario el ponerse de acuerdo respecto a qué considerar “aplicaciones de educación móvil” y cómo lograr los objetivos sociales y tecnológicos: Las descripciones utilizadas en la literatura son vagas y no explican en qué manera los estudiantes interactúan con los dispositivos, las “aplicaciones pedagógicas” utilizadas en las investigaciones se centran en la tecnología y no en los objetivos educacionales, y la factibilidad de un “impacto a gran escala” depende de la capacidad de los investigadores y desarrolladores de concebir una plataforma común que satisfaga los objetivos pedagógicos, evitando la tendencia de fragmentar el mercado con soluciones puntuales aisladas. 2.2. Trabajo colaborativo Nunamaker y Weatherall (1999), proponen un marco explicativo acerca de los beneficios de llevar a cabo reuniones de planificación estratégica mediante el uso de tecnologías de groupware. Davis, Zaner, Farnham, Marcjan y McCarthy (2002) muestran la influencia en la reducción de los efectos del status, y la ventaja del anonimato como influencia en una mayor generación de ideas, mediante el uso de tecnologías móviles. Kerr y Murthy (2004), en su estudio relativo a la efectividad de procesos mediados con tecnología computacional, muestran que los procesos divergentes son más efectivos cuando son mediados por computador, lo que implica una mejor generación de ideas. Además, muestran que los procesos convergentes son mejores desarrollados en ambientes cara-a-cara. Bannon (1997), indica que las implicaciones positivas de los GDSS son: • Permiten el trabajo en paralelo, lo que implica conseguir muchas más ideas en circulación y

capturarlas rápidamente. • Permiten la generación de aportes anónimos por parte de los miembros, lo que introduce una

igualdad de oportunidades de participación, eliminando diferenciales de poder como el status. • Permiten la realización de una serie de reuniones efectivas, gracias a los controles de procesos

soportados. • Permiten que los miembros del grupo puedan elegir entre varias técnicas y/o métodos para

llevar a cabo las distintas etapas del proceso. • Permiten la gestión y acceso a recursos de información re-utilizables, de modo que facilitan

las distintas etapas del proceso. • Soportan el desarrollo de una memoria organizacional, manteniendo almacenados los

registros, modificaciones y decisiones logradas por los miembros. • Generan productividad en calidad, costo y tiempo para alcanzar decisiones. En “Groupsystems” vemos un sistema comercial dedicado a las iniciativas de colaboración, inteligencia de grupo en función de toma de decisión, herramientas de colaboración cara a cara y a distancia. Se apoya en actividades comunes tales como Brainstorming, votación y análisis alternativos. Destaca la democracia y participación que promueve el sistema.

10

En “NotePals”, un sistema de soporte a la toma de notas compartidas en reuniones, las notas se toman en contexto, identificando además a su autor, tema y cronología de creación. Está orientado a automatizar la entrega de información entre compañeros, evitando pérdida de tiempo y mejorando la comunicación. Su utilidad se fundamenta en que las percepciones de cada participante son fácilmente compartidas. 2.2.1. Colaboración y aprendizaje [Cortez 2004 y 2005] muestran una iniciativa chilena para incorporar efectivamente tecnologías móviles en clases científicas para la enseñanza media. Esta experiencia guarda una gran similitud con el presente trabajo, puesto que su objetivo es el de mejorar el proceso de enseñanza incentivando la participación a través de una mayor motivación en clases. Para ello se generó un sistema MCSCL de apoyo a los profesores mediante dispositivos móviles interconectados inalámbricamente. Con este sistema, el profesor distribuye tareas previamente diseñadas entre los alumnos. Los alumnos, organizados en grupos, pueden resolver colaborativamente problemas basados en múltiples alternativas. Este sistema fue probado en clases de física para la educación media donde obtuvo excelentes resultados, tanto cuantitativos como cualitativos: se logró construir un ambiente de alta motivación, donde los alumnos fueron capaces de construir nuevos conocimientos basados en los originales. Por otra parte, el sistema obliga a los profesores a diseñar y cargar anticipadamente las actividades en los dispositivos de los alumnos. Además, estos problemas se limitan a preguntas de selección múltiple, donde los estudiantes se encuentran limitados a respuestas cerradas. 2.3. Interfaces basadas en gestos con lápiz y trazos a mano alzada El método más natural para interactuar con un handheld, el stylus, que imita el modelo mental de utilizar lápiz y papel, ha sido reconocido por varios autores como el más natural, ya que permite a los usuarios ingresar datos a mano alzada de manera fluida ([38], [39], [40]). Particularmente, el uso de gestos utilizando el lápiz es el más apropiado a la hora de manipular y controlar la información en las. Sin embargo, cabe destacar que la gran mayoría del software para handhelds que utiliza de interfaces basadas en este principio ha sido diseñado para computadores personales, equipados con teclado y mouse ([11], [7]). Estos widgets (botones, menús, ventanas, etc.) no son necesariamente los más apropiados para estos dispositivos. Los dispositivos móviles disponen de una pantalla pequeña, y este tipo de interfaz requiere de mucho espacio para ubicar estos elementos, ocupando un precioso espacio en el área de trabajo [30]. De acuerdo a [38], las aplicaciones de edición gráfica para los dispositivos móviles no requieren interfaces basadas en paletas y botones, y no necesitan contar con elementos como colores, tipografías o líneas. Ellos, en cambio, deberían basarse en el uso exclusivo de trazos naturales como interfaz de entrada, utilizando el sistema de dibujo libre a través del lápiz de los dispositivos móviles ([39], [7]). Pese a que este enfoque ha sido utilizado para diversas aplicaciones, ningún sistema ha sido desarrollado basándose únicamente en interfaces a través de lápices para administrar y utilizar toda la aplicación, tal como se realiza en computadores de escritorio mediante interfaces tradicionales basadas en mouse y teclado. A diferencia de diseños más acabados utilizando computadores de escritorio y software tradicional, la habilidad de dibujar bocetos informales en cualquier momento y lugar –incluso en

11

movimiento- permite a los usuarios descubrir oportunidades para mejoras sustanciales en etapas tempranas del proceso de diseño. Así, se mejora la eficiencia de la productividad. Mediante sketching, el usuario puede emplear símbolos visuales, describir relaciones espaciales [39], e intercambiar opiniones en un medio rápido y eficiente para compartir y discutir ideas complejas. Todo esto, sin embargo, requiere de un soporte para realizar y diagramar bocetos, permitiendo a los usuarios interactuar enfrentándose cara a cara a través de comunicación y explicación de los dibujos a mano alzada realizados simultáneamente. La habilidad de manipular presentaciones gráficas al mantener estos encuentros cara a cara es una manera natural de expresión, crucial para la creación y captura de ideas entre varias personas.

12

3. Requerimientos del sistema 3.1. Descripción del sistema de soporte a decisiones El sistema desarrollado está orientado a la toma de decisiones colaborativa basada en grupos pequeños, con componentes educativas que permitan a los usuarios aprender del proceso, en la forma de un sistema de simulaciones participativas. Los usuarios pasan por una serie de etapas del modelo de toma de decisiones. Cada etapa los acerca más hacia la convergencia de la decisión. Las etapas están divididas en tres: Brainstorming, Groan y Convergence. En Brainstorming se generan ideas por parte de los usuarios. Estas ideas pueden ser compartidas o personales. En Groan, estas ideas son discutidas y agrupadas por similitud. Una vez que se tiene un grupo de ideas distintas se procede a la etapa Convergence, donde las ideas resultantes son votadas y se concluye seleccionando una idea final. 3.1.1. Modelo de toma de decisiones El modelo de toma de decisiones está basado en el trabajo de Sam Kaner [25], donde describe un modelo de toma de decisiones colaborativas basado en varias etapas, las más importantes siendo Brainstorming, Groan y Convergence. Usualmente se asume que la toma de decisiones colaborativa se separa en dos procesos: Divergente y convergente. El proceso divergente genera ideas que son familiares a aquellos que las proponen. Existen problemas que se pueden resolver con estas ideas, pues su solución es obvia.

Tópico nuevo

Pensamiento divergente

Decisión

Opiniones familiares

Ideas

Lamentablemente casi ningún problema de peso se soluciona con ideas familiares y ya probadas. En estos casos se debe ir más allá y explorar ideas no familiares y que pueden parecer extrañas. Cada uno de los integrantes del grupo que está tomando la decisión enfrenta entonces el problema de tratar de asimilar y entender las ideas de los demás (Dichas ideas pueden generar malestar

13

(Controversiales) o incluso no estar completamente desarrolladas por el que las propone). Debido a los conflictos mencionados, en este punto el proceso comienza a separarse de la línea divergente, pero no a acercarse a la etapa convergente. Si no se toma en cuenta esta nueva etapa, la toma de decisiones puede disiparse en confusión.

Tópico nuevo

Pensamiento divergente

Opiniones familiares

La etapa de conflicto, en que se deben integrar las ideas de los demás con las propias, se denomina “zona Groan”, y debe ser tomada en cuenta en la facilitación de la toma de decisiones si se espera llegar a la convergencia, donde las ideas serán reducidas y se seleccionará la óptima.

Dicho esto, un sistema que facilite la toma de decisiones debe soportar esta nueva fase conflictiva.

14

Este modelo de toma de decisiones se refleja en el sistema desarrollado de la siguiente forma: La etapa de brainstorming representa el pensamiento divergente. En ella se generan muchas ideas individualmente o grupalmente. Una vez que todos están satisfechos con las ideas propuestas, éstas se comparten y se inicia la etapa Groan, donde las ideas son agrupadas por similitud (Porque es muy probable que para el mismo problema más de una persona haya propuesto ideas muy similares). Luego que se hayan agrupado las ideas se entra a la etapa final, convergence. En esta etapa las agrupaciones de ideas son votadas para obtener la idea final que se convertirá en la salida del proceso de toma de decisiones. 3.1.1.1. Modelo adaptado a handhelds A continuación se describe y justifica el modelo discutido anteriormente, orientado a su uso con handhelds.

La etapa de divergencia o brainstorming consiste en la generación de ideas a considerarse para alcanzar el objetivo e intención propuestos. En esta etapa los miembros deben emitir una cantidad arbitraria de ideas (Pueden ser pocas o muchas). La generación de ideas mediante mecanismos tecnológicos (Electronic Brainstorming) permite a lo miembros poder aportar (simultáneamente, en secuencia, etc.) sus ideas bajo distintas modalidades como ser grupales o individuales. La ventaja fundamental de utilizar herramientas computacionales consiste en que los miembros pueden realizar una contribución simultánea o paralela de sus ideas sobre un área de trabajo común, o bien una área de trabajo individual que luego fácilmente puede ser compartida con el resto. De esta manera, no existen tiempos de espera entre los miembros, ya que cada quien puede estar trabajando en sus propias ideas, o bien trabajando en forma conjunta. Otra clara ventaja cuando se tiene un área de trabajo compartido es la ventaja y complemento que ofrece la revisión de otras de ideas de otros miembros.

15

Otra ventaja del Electronic Brainstorming es que permite generar una mayor cantidad de aportes e ideas únicas y de más alta calidad que los grupos en brainstorming que no cuentan con soporte computacional. Por otra parte, el anonimato que se puede lograr mediante el uso de esta herramienta introduce ventajas y desventajas, que deben ser tomadas en cuenta. Las ventajas son la introducción de un efecto desinhibidor, el aumento de la participación, ayuda en la reducción de presiones y evaluaciones aprehensivas y reducción del efecto de comparaciones sociales como el status, entre otras. La desventaja está en que en cierta medida se estropea la interacción y participación de los integrantes del grupo por la llamada holgazanería social/grupal (Free riding) al dejar que los demás realicen la tarea de generar ideas. El modelo propuesto permite a los miembros de la reunión elegir de modo simple entre diferentes modalidades de operación en una sesión de Electronic Brainstorming. Dichas modalidades son: Individual Anónimo (InAn): Cada miembro anota sus ideas en el handheld en forma individual y anónimamente. Grupal Anónimo (GrAn): Cada miembro anota sus ideas en el handheld en forma grupal o compartida y anónimamente, es decir, los demás pueden ver cada anotación pero no saben quién la realizó. Estas modalidades pueden a su vez ser realizadas en subgrupos de trabajo (SG), o bien entre todos los integrantes de la reunión (T). Con dichas modalidades se busca acercarse a un balance entre las dos tipificaciones clásicas de los procesos divergentes, es decir, totalmente cara-a-cara, o bien, totalmente anónimo mientras las personas se encuentran en el mismo lugar. La etapa Groan puede ser definida como la creación de un contexto compartido donde los participantes aprenden de las perspectivas de los demás, sus ideas y soluciones. Este modelo considera tales aspectos complementándolos además con comparativas entre las ideas generadas, necesarias para constituir el primer filtro a ser aplicado a las ideas. Este filtro se hace necesario dado que la generación de ideas debería ser cuantiosa (Apelando a las características de un Electronic Brainstorming), lo que implica redundancia o elementos comunes en lo que los participantes han propuesto. Este primer filtro está orientado a determinar aquellas ideas que de una u otra forma son similares o comunes entre los participantes. Determinadas las ideas comunes y las ideas aisladas, se obtienen de estas las ideas relevantes, que reflejan cuáles son las ideas que mejor se acercan a dar una posible solución al tema tratado. Por otra parte, las ideas aisladas se mueven en dos ámbitos: a) Quienes las emitieron no alcanzaron un acabo entendimiento del tema en discusión. b) Quienes las emitieron tienen una percepción mucho más amplia del problema y sus ideas son brillantes o casi soluciones indiscutidas para el problema.

16

En la etapa Convergence se busca crear un espacio para la discusión, entablar puntos de vista, argumentaciones y defensas de las ideas señaladas, por medio de handhelds o verbalmente. Al discutir, argumentar y clarificar lo conversado, se determinan los primeros puntos de convergencia general en el proceso. De existir elementos no convergentes o totalmente aislados de lo ya conocido, es recomendable volver a argumentar y analizar tal elemento, con el objeto de determinar si efectivamente ese elemento corresponde a una posible solución en sí mismo, no siendo parte ni asemejarse a otro. El objetivo de esta discusión es conformar un número de ideas o iniciativas tales que encierren la mayor calidad de solución posible lo que constituye la convergencia en ideas. 3.1.2. Componentes educativas El sistema debe incluir componentes educativas que permitan a los usuarios acerca del proceso de toma de decisiones al mismo tiempo que toman la decisión. 3.2. Requerimientos computacionales del sistema 3.2.1. Interfaz de usuario La interfaz de usuario del sistema debe estar basada en una representación minimalista de la información que aprovecha el espacio disponible en la pantalla pequeña del dispositivo handheld. Varios conceptos deben ser tomados en cuenta, tales como la representación de la información en tablas o listas. El scrolling se evita en casos en que no haya que agregar información nueva (Modo groan, convergencia), pues es detrimental en el tiempo de lectura de los datos (Especialmente el scroll horizontal) [2]. El sistema debe soportar tres usuarios en el grupo de la toma de decisión mostrando la información claramente. Los datos se deben presentar en forma reducida [25] cuando haya muchos desplegados en la pantalla. La interfaz debe estar completamente contenida dentro de la pantalla del sistema, y ser suficientemente pequeña para concentrase en los datos y no en ella [26]. Además, la interfaz requiere pocos pasos (Uno si es posible) para ejecutar las tareas, a menos que se requiera especificar más datos de los presentes en la pantalla para ejecutarla [27]. La mayor cantidad posible de partes de la interfaz deben ser invisibles y sólo pueden ser accedidas usando gestos. De esta forma se aprovechan las capacidades de la plataforma handheld y no se requieren metáforas incompatibles de plataformas de escritorio. Un ejemplo es el scrolling. El scrolling implementado en el sistema debe permitir acceder a todo el contenido de la página [27] a diferentes velocidades, dependiendo de cómo haya sido ejecutado el gesto, siendo completamente invisible hasta que se activa.

17

3.2.2. Formato de los datos 3.2.2.1. Trazos manuscritos El sistema debe estar basado principalmente en trazos para representar las ideas. El problema de esta representación es que cada idea manuscrita suele estar compuesta de varios trazos. Se debió encontrar una manera de escribir dichos trazos y agruparlos como una sola idea. Este sistema además debe ser compatible con la posibilidad de que varios de los integrantes vieran o no lo que otros escribían. 3.2.2.2. Texto Además de trazos, se requiere un modo de entrada alternativo que permita utilizar las formas de entrada de texto que ya existen en el sistema operativo de los dispositivos handheld (Esto es, teclado, reconocimiento de trazos, etc.). Para utilizar el teclado, se le debe activar manualmente y luego escribir. Un preview de lo escrito debe verse antes de insertar el texto, y cuando se haya escrito lo deseado, se hace click en la pantalla donde se quiere que aparezca lo escrito. Una vez que el texto aparece en dicha posición, el teclado desaparece automáticamente. El sistema de entrada de texto por teclado es considerado una medida de “emergencia”. Es por esto que sólo aparece cuando se le invoca explícitamente. 3.2.3. Tiempos de espera En la plataforma utilizada, la transmisión de datos entre PDA’s toma un tiempo considerable. Durante este tiempo pueden ocurrir muchas cosas que pueden alterar la consistencia de los datos entre las PDA’s. En particular, el orden en que se envían los datos puede no ser el mismo en que se reciben en todas las PDA’s del grupo. Debido a que la plataforma usada para la implementación no garantiza el orden de llegada de los datos, se debe mitigar el efecto que esto tenga sobre el funcionamiento del sistema.

18

4. Solución implementada A continuación se explican las funciones disponibles de cada etapa descrita, incluyendo como ejecutarlas y qué efecto tendrán. 4.1. Detalles principales del sistema Todas las etapas del sistema cumplen los requerimientos de interfaz basada en gestos descritos en la sección 3.2.1. Partes de la solución que cumplan requerimientos más específicos están indicados en la sección correspondiente que la describe a continuación. 4.1.1. Brainstorming Brainstorming permite agregar ideas en forma grupal o individual, organizarlas o fusionarlas si es necesario. Las ideas agregadas en brainstorming siempre están en una posición horizontal predefinida, separadas del borde izquierdo de la pantalla por un margen necesario para desplegar a los otros participantes de la sesión actual, como se detallará más adelante (Figura 2).

A continuación se describen todas las funcionalidades del modo brainstorming. 4.1.1.1. Agregar ideas Para agregar una idea se debe escribir sus contenidos (Figura 3) en cualquier área de la pantalla y luego trazar una línea horizontal razonablemente recta bajo la idea escrita (Figura 4). Si la recta es reconocida como tal, todos los trazos y texto que componen la idea que estén sobre la recta son agrupados como una idea (Figura 5), lo que la agrupa en un nodo (Si no había trazos que agregar, el gesto no tiene ningún efecto). Este nodo tiene las dimensiones exactas necesarias para contener los trazos en su forma original. Cualquier espacio en blanco hacia arriba o abajo es eliminado. La

Figura 1 Estado inicial

Figura 2 Dos participantes se unen

a la sesión

19

idea se agregará al final de la lista de ideas. Esta característica cumple con los requerimientos de gestos mencionados en la sección 3.2.1.

A medida que se van agregando más ideas, éstas se van mostrando en una lista vertical que crece hacia abajo (Figura 6). También se puede utilizar el teclado o una mezcla entre escritura manuscrita y texto para introducir ideas (Figuras 7-10). Esto cumple con los requerimientos descritos en 3.2.2.1 y 3.2.2.2.

Figura 3 Escribiendo

Figura 4 Trazando la raya

separadora

Figura 5 Resultado de trazar la

raya separadora

Figura 6 Agregando segunda idea

Figura 7 Utilizando el teclado

Figura 8 Ingresando el texto

digitado

20

4.1.1.2. Cambiar entre modos individual y grupal Usualmente un usuario en la etapa de brainstorming sólo quiere ver sus propias ideas, pero es posible que alguien quiera ver las ideas de otros al mismo tiempo que agregan las suyas. Para lograr esto se seleccionan los participantes cuyas ideas se quieren ver en la lista izquierda de participantes presente en la pantalla junto con la lista de ideas. Los participantes que han pedido ver las ideas del usuario están marcados con un rectángulo (Figura 11). Si un participante seleccionado también había seleccionado al usuario, entonces las ideas de ambos se verán en una sola lista (Figura 12). Esto se aplica para uno o más participantes. La visualización de las ideas ajenas no afecta la forma de agregar ideas nuevas propias. Cada vez que uno de los participantes seleccionados agrega una idea, los cambios se verán reflejados en la pantalla propia. Esta característica cumple con los requerimientos genéricos del proceso de toma de decisiones mencionados en 3.1.

Figura 9 Mezclando texto con

dibujo

Figura 11 Participante “azul” pide ver

las ideas del usuario

Figura 12 Viendo las ideas del

usuario y “azul”

Figura 10 Ingresando la mezcla

como idea

21

4.1.1.3. Mover ideas Es posible que se hayan escrito dos ideas separadas que realmente debieran estar juntas pues están relacionadas o porque representan el mismo concepto y se desea fusionarlas en una sola idea. Para mover una idea se hace click sobre ella, lo que la selecciona (Figura 13). La idea seleccionada se muestra de un color diferente y se mueve arrastrando el lápiz sobre la pantalla. La idea seguirá el movimiento vertical del lápiz (Figura 14) y, una vez soltado, la idea se reajustará dentro de la lista de la mejor forma posible (Figura 15).

4.1.1.4. Fusionar ideas Si dos o más ideas representan el mismo concepto puede ser deseable que sean consideradas como una sola idea. Para lograr esto, se seleccionan todas las ideas que se desea fusionar haciendo click sobre ellas (Figura 16). Luego se presiona el botón “fusionar ideas”, lo que combina inteligentemente sus trazos en una sola idea y desecha los nodos sobrantes (Figura 17). Esta operación recalcula las dimensiones de la lista de ideas, debido al cambio masivo de la estructura de la lista de ideas.

Figura 13 Seleccionando una idea

Figura 14 Moviendo una idea hacia

arriba

Figura 15 Resultado de mover una

idea

22

4.1.1.5. Editar ideas Es posible que una idea haya quedado mal escrita o que al crearla la línea horizontal usada para delimitar sus trazos haya quedado accidentalmente más arriba que uno de los trazos, dejándola incompleta. En este caso se requiere entrar a la idea para modificarla. Para lograrlo se hace click sobre la idea, seleccionándola. Una vez seleccionada, se muestra el botón “entrar a idea” ( ). Al presionarlo se entra al nodo que representa la idea en un modo de edición básico que permite agregar, quitar, mover, redimensionar o rotar los trazos que la componen (Figura 18). Una vez completada la edición se hace click sobre el botón “volver a la página anterior” ( ), lo que devuelve el sistema al modo de agregar ideas. Cabe notar que si una idea no contiene trazos al salir del modo de edición, la idea es borrada, actualizando la lista de ideas.

Figura 16 Seleccionando dos ideas

para fusionarlas

Figura 17 Resultado de la fusión de

dos ideas

Figura 18 Entrando a los

contenidos de una idea

23

4.1.1.6. Salida de la etapa Una vez que se agregaron todas las ideas, se presiona el botón “groan”. Si el sistema detecta que no hay ideas para ir al modo groan, se despliega un mensaje indicándole esto al usuario que presionó el botón. Si hay ideas, el sistema entonces espera a que todos los integrantes del grupo de trabajo hayan presionado el mismo botón, mostrando en la esquina superior izquierda el número de participantes listos para la fase groan (Figura 19). Una vez que todos están listos para ir al modo groan, el sistema entra automáticamente en la siguiente etapa. Los datos presentes en el modo groan al finalizar el modo de brainstorming son todas las ideas de cada integrante, agrupadas en una columna por integrante (Figura 20).

4.1.2. Groan En Groan el usuario ve todas las ideas ingresadas por todos los integrantes del grupo de trabajo y le permite agrupar ideas que considere que son similares. 4.1.2.1. Agrupar ideas Las ideas generadas durante el brainstorming son desplegadas en el modo groan en forma de una tabla que ocupa toda la pantalla. Las celdas de esta tabla automáticamente escalan los contenidos para una visibilidad óptima. Una vez en el modo groan, es muy común que más de un integrante haya propuesto la misma idea, o al menos muy similar. En este caso se desearía que ambas ideas estuvieran agrupadas bajo una sola celda. Para lograr esto, se arrastra la celda a agrupar con otra hasta una posición similar a la de la celda de destino (Figura 21). Al levantar e lápiz, si las dos celdas (Origen y destino) quedan en una posición similar, los contenidos de la celda origen se traspasan a la celda destino (Figura 22). La celda origen queda vacía. Cabe notar que si las dos celdas no quedan en posiciones suficientemente similares, el gesto no tiene ningún efecto. En ambos casos la celda origen se mueve a su posición original una vez levantado el lápiz.

Figura 19 Esperando a que los otros dos

participantes estén listos para el modo groan

Figura 20 Modo groan

24

4.1.2.2. Deshacer agrupar ideas Es muy posible que, debido a un error al manejar el sistema o a un error de concepto se hayan agrupado dos ideas que no tenían que estar juntas. Si este es el caso, se puede deshacer la última agrupación. Para lograrlo, simplemente se debe arrastrar la celda destino hacia la posición de la celda origen para volver a separar sus contenidos. En caso de que no se recuerde cuál era la posición de la celda origen, el sistema resaltará su posición en color verde mientras se esté arrastrando la celda destino (Figura 23).

Cabe notar que existen dos casos en que se puede deshacer más de una agrupación seguida. El primer caso es cuando se ha hecho varias agrupaciones que no involucran a las mismas celdas origen/destino. La funcionalidad de deshacer es individual para cada celda. El segundo caso es cuando se “encadenan” agrupaciones. Encadenar agrupaciones significa ejecutar varias agrupaciones donde siempre la celda de origen de la agrupación n es la celda de destino de la

Figura 21 Agrupando dos celdas

Figura 22 Resultado de agrupación de celdas

(Tercera fila, tercera columna)

Figura 23 Deshaciendo agrupación

de celdas

25

agrupación n-1. En este caso simplemente se debe deshacer las agrupaciones en el orden inverso a como fueron hechas de la misma forma descrita anteriormente. 4.1.2.3. Editar ideas Si se desea modificar los contenidos de una idea, simplemente se debe “entrar” en su nodo. Para hacer esto sólo se debe hacer click sobre la idea. Al hacer esto se entra al modo de edición, donde se pueden hacer cambios las ideas contenidas, incluyendo agregar, quitar, mover, redimensionar o rotar los trazos que la componen (Figura 24). Cabe destacar que si se agrega uno o más trazos a una idea existente se pierde la habilidad de deshacer la última agrupación.

4.1.2.4. Comentar ideas Si se quiere comentar una idea dada por un participante, se entra a la idea para editarla. Luego de entrar se presiona el botón “comentar idea” (Figura 24), lo que llevará al usuario al modo de comentarios (Figura 25). En este modo el usuario ve a la izquierda una lista de todos los participantes de la sesión (El usuario creador de la idea a comentar está resaltado). El usuario debe escribir su comentario manuscrito (Figura 26) y luego hacer un trazo que comience en el área de escritura de comentario y termine en uno de los participantes listados a la izquierda. Si el trazo termina “subiendo” (Esto es, los últimos puntos del trazo están más arriba que los anteriores (Figura 27)), el comentario es positivo. Si no, el comentario es negativo (Figura 28).

Figura 24 Entrando a una celda. Botón de

comentarios visible

26

Abajo del área de escritura se pueden ver los comentarios que otros participantes han hecho acerca de las ideas del usuario. Los comentarios positivos tienen fondo verde, mientras que los negativos tienen fondo rojo (Figura 29). Si se presiona el lápiz sobre uno de los comentarios, se visualiza la idea sobre la que se hizo el comentario (Figura 30).

Figura 25 Entrando a modo de

comentarios (“verde7” es el autor de la idea

comentada)

Figura 26 Comentando a “verde7”

Figura 27 Agregando comentario

positivo a “verde7”

Figura 28 Agregando comentario

negativo a “verde7”

27

Finalmente, si se quiere sólo ver los comentarios que se le ha hecho al usuario, éste simplemente debe hacer click sobre el botón “comentarios” presente en el modo groan (Figura 20). Ya que de esta forma no se hizo un comentario de ninguna idea en particular, si se envía un comentario, el receptor no podrá ver a qué idea se aplica el comentario. Esta característica existe para satisfacer los requerimientos vistos en la sección 3.1.2. 4.1.2.5. Salida de la etapa Una vez que todas las ideas de todos los participantes han sido agrupadas y no haya redundancia, se puede pasar a la etapa final de convergencia, donde se elegirá la idea más adecuada. Para hacerlo, se hace click sobre el botón “convergencia”. El sistema entonces determina si existe alguna celda que no esté vacía. Si no había celdas con contenidos, se muestra un mensaje informándole al usuario de esta situación. Si sí existen celdas con contenidos, el sistema espera a que todos hayan presionado el mismo botón, mostrando cuántos participantes están listos para la etapa convergencia (Figura 31). Cuando todos los hayan hecho, el sistema seleccionará todas las celdas que contengan trazos (Lo que indica que es una de las ideas finales) y las agregará al modo de convergencia (Figura 32).

Figura 29 Comentarios recibidos

Figura 30 Viendo la idea propia a la

que está dirigido el comentario positivo

28

4.1.3. Convergence/FODA En el modo convergencia el usuario puede ver las ideas finales que han sido consideradas las candidatas para la toma de la decisión y votar por la idea óptima según él. 4.1.3.1. Votación mediante FODA Una vez en la etapa de convergencia, se requiere que los integrantes decidan cuál es la o las ideas que pasarán a ser parte de la decisión. Para lograr esto, se hace click sobre la idea para seleccionarla y luego se presiona el botón “análisis”, lo que permite a los integrantes ver un cuadro de análisis FODA (Figura 33). Los integrantes escriben las fortalezas, oportunidades, debilidades o amenazas de la idea que han seleccionado y luego las agregan a uno de los cuadrantes del cuadro FODA trazando una raya que parta en el área de escritura (Donde acaban de escribir su comentarios) y que termine en el cuadrante respectivo (Figuras 34-36). Una vez que se ha escrito el comentario deseado, se presiona el botón “volver a listado de ideas”. Las ideas que hayan sido votadas a partir del método FODA mostrarán un rating (Un número) en su parte superior, representando el valor de la idea calculado a partir del número de comentarios escritos en sus áreas de fortalezas, oportunidades, debilidades y amenazas (Figura 37).

Figura 31 Esperando a que los

otros dos participantes estén listos para

convergencia

Figura 32 Modo convergencia

29

4.1.3.2. Selección de las ideas finales A partir del rating de cada una de las ideas, se escoge la idea a usar en la decisión final. Si bien se tiene un rating para cada idea, esto es sólo una ayuda que permite medir aproximadamente el valor de las ideas. La decisión final, sin embargo, se toma basada en votación simple. Cada integrante hace un gesto de aprobación (Tick) sobre la idea que le parece óptima (Figura 38). La cantidad de votos con respecto al número de participantes se ve en la esquina superior izquierda de la idea en el modo convergencia. La idea con más votos pasará a conformar la decisión final tomada por el grupo.

Figura 34 Escribiendo una fortaleza

Figura 35 Agregando una fortaleza

Figura 36 Otros participantes agregan

ítems al análisis FODA

Figura 37 Los votos simples y FODA se

reflejan en el modo convergencia

Figura 33 Modo FODA para una idea de convergencia

30

4.1.4. FODA inmediato En caso de que el problema a resolver usando decisión colaborativa sea muy simple y no contemple alternativas, sino que se requiera decidir acerca de la viabilidad de una sola opción, se puede entrar al modo FODA sin pasar por las primeras dos etapas de la toma de decisiones, lo que permitirá discutir las fortalezas, oportunidades, debilidades y amenazas de la opción única a discutir. Para entrar al modo FODA instantáneo desde cualquier parte del sistema, se debe seleccionar el ítem “FODA” desde el menú de selección de modos especiales (El que contiene las opciones para entrar al log o al modo de administración de grupos, ubicado abajo a la izquierda de la pantalla (Figura 39)). Luego se utiliza el modo FODA de la misma forma en que se había utilizado en el modo convergencia.

4.1.5. Navegando entre etapas El sistema está pensado para que se pase secuencialmente de una etapa a la siguiente, tal y como el modelo de toma de decisiones está pensado. Lamentablemente, las sesiones de toma de decisiones rara vez progresan de manera estrictamente secuencial. Usualmente hay que volver a etapas anteriores para corregir o agregar más datos debido a que se detectaron problemas en las etapas posteriores. Para reflejar esta situación, el sistema permite volver a fases anteriores de la fase actual y operar en ellas, actualizando los datos de las fases posteriores con la información nueva. No se permite

Figura 38 Votando por una idea

Figura 39 Menú de selección de

modos especiales

31

pasar de una etapa a otra posterior, pero que no se ha alcanzado todavía. Por ejemplo, no se permite pasar de la etapa brainstorming a convergencia si no se ha pasado al menos una vez por la etapa groan. 4.2. Funcionalidades educativas El sistema provee ciertos mecanismos que permiten a los usuarios aprender a partir de la experiencia de tomar decisiones, similarmente a un sistema de simulación participativa. En particular, se proveen mecanismos de feedback de los propios usuarios hacia los demás integrantes en forma de mensajes y votos que obtengan sus ideas, indicadores del desempeño general del grupo en tiempo real y un resumen del proceso al final para aprender de sus errores y aciertos. Estos mecanismos satisfacen los requerimientos mencionados en 3.1.2. Los indicadores se basan principalmente en la cantidad de aportes de cada integrante y de todo el grupo en conjunto y de la satisfacción de cada integrante hacia los demás, medida a partir de los mensajes enviados. 4.2.1. Feedback por mensajes Cada participante puede escribir mensajes positivos o negativos hacia los demás basados en su desempeño o actitud hacia el resto del grupo. Estos mensajes pueden estar orientados hacia una idea particular de un participante. La cantidad de mensajes positivos o negativos se usa para dar feedback del desempeño a los participantes. 4.2.2. Indicadores Para medir el aprendizaje que los integrantes lograron a partir del proceso de toma de decisiones hay dos medidas básicas que se usan: La cantidad de aportes y la satisfacción por el trabajo. El desempeño del usuario se muestra en el borde superior de la pantalla en forma de un puntaje obtenido por varios factores que afectan las medidas mencionadas anteriormente (Cantidad de ideas nuevas, cantidad de agrupaciones, cantidad de comentarios positivos/negativos recibidos, etc.). 4.2.2.1. Cantidad de aportes Esta medida representa cuanto ha aportado un integrante del grupo a la toma de la decisión. Sin embargo, este indicador solo no es de gran utilidad, pues un integrante puede haber hecho muchos aportes inútiles, y éste sería medido favorablemente en comparación a un integrante que ha hecho uno o dos aportes de gran impacto y relevancia. Por lo tanto, este indicador debe ser acompañado por otro que mida la calidad de los aportes. 4.2.2.2. Satisfacción con el trabajo Esta medida representa el valor de los aportes de un integrante percibido por el resto de sus compañeros. Se puede obtener a partir de comentarios positivos o negativos hechos por los integrantes mismos. Estos comentarios son anónimos, pues si no se arriesga a comprometer la sinceridad de las opiniones.

32

4.2.3. Log La siguiente componente educativa del sistema es el log de operaciones. En esta bitácora se almacenan todas las acciones hechas o deshechas por los integrantes. La bitácora almacena introducción de datos nuevos, fusión y agrupación de ideas, votos, comentarios y por supuesto la decisión final. Examinar la bitácora hace posible obtener una visión del proceso de toma de decisiones completo. Esto permitirá obtener información de puntos claves en la toma de decisiones, tales como la fusión o agrupación de dos ideas o la votación en la etapa de convergencia (Figuras 40-41).

4.2.4. Aportes del profesor El sistema permite a un profesor establecer los grupos de trabajo y comentar en ellos. 4.2.4.1. Establecer los grupos de trabajo El sistema puede funcionar sin que haya grupos de participantes definidos, pero usualmente el sistema opera óptimamente si los participantes están separados en grupos de tres. Para lograr esto, se espera a que todas las handheld estén conectadas entre sí. Logrado esto, el profesor cambia su handheld al modo “Group-Making” (Figura 42). Una vez ahí, crea grupos usando el botón agregar grupo. Los nuevos grupos van apareciendo con nombres generados automáticamente (Figura 44). Además de los grupos (Representados como rectángulos con un nombre) se ven en pantalla todos los participantes (Figuras 43-44).

Figura 40 Accediendo al modo log

Figura 41 Modo log

33

Para asignara los participantes a los grupos recién creados, se les arrastra sobre el grupo deseado (Figura 45). Al hacer esto, los participantes quedan aislados de los demás que no estén en su mismo grupo.

El sistema funciona exactamente de la misma forma en que funcionaría si los participantes no estuvieran agrupados. El único que recibe los mensajes de todos los participantes es el profesor, que ve desplegado en los rectángulos la actividad de cada grupo. En particular, ve un preview de la fase actual del proceso de toma de decisiones del grupo (Figuras 46-48), representado por dicho rectángulo.

Figura 42 Entrando al modo de

grupos (Profesor) de una sesión nueva

Figura 43 Modo de grupos

Figura 44 Creación de dos grupos

Figura 45 Moviendo dos participantes

a un grupo

34

Es importante notar que la característica de grupos de trabajo era preexistente en la plataforma SmartDraw, por lo que su implementación no está descrita en la sección de implementación. 4.2.4.2. Comentar dentro de un grupo El profesor puede entrar a los grupos para ver de cerca su actividad (Figuras 49-54). Una vez adentro de un grupo, el profesor puede escribir trazos en los distintos modos del sistema. Los trazos escritos por el profesor sólo son visibles en el modo en que fueron creados, y sólo pueden ser borrados por él (Figura 51). Esto se cumple en todos los modos, excepto en el modo de decisión, donde se le permite a los participantes interactuar directamente con los trazos escritos por el profesor.

Figura 46 Grupo de la izquierda

está en modo brainstorming

Figura 47 Grupo de la izquierda está en modo groan

Figura 48 Grupo de la izquierda está

en modo convergencia

Figura 49 Grupo de la izquierda

seleccionado

Figura 50 Profesor comentando dentro de un grupo de trabajo en el

modo convergencia

Figura 51 Profesor borrando

comentarios de un grupo de trabajo

35

4.3. Escenario típico de uso del sistema El sistema se inicia por defecto en el modo de brainstorming. Inmediatamente se buscan todos los participantes conectados dentro de la misma red. Una vez que todos se conectan entre sí, cada participante ve a sus compañeros listados en el lado izquierdo de la pantalla. Haciendo click sobre el nombre de uno de ellos es posible para uno de los participantes ver las ideas del participante cuyo nombre ha clickeado, siempre y cuando él haya hecho lo mismo. En este modo es posible agregar ideas, moverlas y fusionarlas. Una vez satisfecho con las ideas personales, se presiona el botón Groan, lo que deja al sistema esperando que todos los demás participantes hayan hecho lo mismo. Cuando todos lo hayan hecho, el sistema automáticamente pasa al modo groan, donde las ideas de los participantes son organizadas en forma de una tabla, donde cada columna corresponde a uno de los participantes. En este modo, cada integrante puede ver o editar las ideas de otros. Además, las ideas se pueden agrupar por similitud al arrastrar una idea sobre otra, y si una de estas agrupaciones fue hecha incorrectamente, se pueden deshacer arrastrando la idea agrupada sobre la posición original de la idea movida anteriormente (Esta posición es resaltada mientras la agrupación por deshacer está siendo arrastrada). Al agrupar una idea sobre otra, la primera queda vacía. Mientras se está en el modo groan, los participantes pueden hacer click sobre una idea para ver sus contenidos en pantalla completa. Además, al ver la idea de este modo aparece la opción de hacer un comentario respecto de esa idea a su autor (Esta opción aparece sólo si la idea desplegada en pantalla completa es una idea propia. Las ideas propias están resaltadas en amarillo). Si se escoge esta opción, se presenta el modo de comentarios, donde se escribe un comentario y luego se hace cualquier línea que termine en uno de los nombres de los participantes. Hecho esto, el comentario es enviado sólo a ese participante. El participante cuya idea se está comentando aparece resaltado para fácil ubicación. Apretando el botón “volver a groan” se vuelve a la representación de tabla de las ideas. Una vez que las ideas han sido reducidas a un grupo sin redundancia, se presiona el botón “convergencia”, lo que hace pasar a todos los integrantes al modo convergencia. En este modo se

Figura 52 Profesor comentando en

grupo de trabajo en modo groan

Figura 53 Profesor comentando en grupo de trabajo en modo brainstorming. Está viendo las ideas de los dos

integrantes del grupo

Figura 54 Profesor viendo ideas de

participante “azul”, y no las de “verde7”

36

muestran sólo las ideas que no quedaron vacías. Cada una de las ideas muestra su rating en su esquina superior derecha. El rating es un número que indica la aprobación de una idea entre los participantes de la sesión. Para modificar el rating de una idea, se hace click sobre ella, lo que muestra la pantalla de análisis FODA de la idea. Esta pantalla muestra una tabla de cuatro celdas, cada una representando las fortalezas, oportunidades, debilidades y amenazas que presenta la idea seleccionada. Los usuarios agregan nuevas entradas en cada categoría escribiendo en la parte superior de la pantalla (Sobre la tabla) y luego trazando una línea que vaya desde lo escrito hasta la celda deseada. Luego los participantes vuelven a la pantalla de convergencia presionando el botón “volver a convergencia”, donde la idea comentada ahora refleja su nuevo rating calculado como la suma entre el número de sus fortalezas y oportunidades restada con la suma entre el número de sus debilidades y amenazas. Finalmente, se vota la idea final a escoger marcando ticks sobre ellas. La idea con mayor votación es escogida. Notar que durante todo el proceso los integrantes pueden haber vuelto a etapas anteriores a refinar sus ideas o agregar nuevas.

37

5. Implementación A continuación se describe la implementación de los modos de operación descritos en el punto anterior. Primero se especifica el ambiente o plataforma en que tuvo lugar el desarrollo del proyecto. Posteriormente se describe la arquitectura del sistema construido, las componentes generales de interacción con el sistema y de despliegue de información en la pantalla reducida. Luego se describe la estructura del sistema de soporte a la toma de decisiones colaborativas en base a las componentes de interacción y despliegue descritas anteriormente. 5.1. Ambiente de programación Para el desarrollo del sistema se utilizó un computador Pentium 4 de 3 GHz con 1GB de RAM. El sistema se ejecuta en computadores Pocket-PC Dell X50 y X51. Dichos computadores están basados en el sistema operativo Windows PocketPC. Tienen capacidad de conectividad inalámbrica y como interfaz de entrada utilizan un sistema de touch-screen. El ambiente de programación usado fue Microsoft Visual Studio 2005. En particular, se usó la componente .NET 2.0 Compact Framework para la ejecución del programa en la PDA. El lenguaje de programación usado fue C#. Originalmente se había escogido Java, pero había problemas de velocidad por la máquina virtual y no se tenía soporte para la resolución de 640x480 de las pocket PC’s. 5.2. Arquitectura de la plataforma En general, la plataforma SmartDraw está construida modularmente. Existe un thread principal de ejecución que recibe eventos (Principalmente de operaciones con el lápiz sobre la pantalla touch-screen). Estos eventos son transmitidos al modo actual. Los modos son clases encargadas de recibir eventos de lápiz y reaccionar a ellos de acuerdo a la función que cumple el modo. Los modos a su vez verifican que los eventos correspondan a ciertos gestos de lápiz para reaccionar adecuadamente. Cada verificador de gestos ejecuta su acción asociada si detecta que el patrón del evento encaja con sus parámetros. Una vez que el gesto se examina, éste puede traducirse en una acción ejecutada localmente. Un ejemplo de tales acciones sería crear un nuevo elemento en la pantalla (Una raya, un cuadrado). Estos elementos son representados por objetos “dibujables”. Al mismo tiempo que se reciben eventos locales, existe un thread especializado en recibir eventos remotos. Estos eventos pueden ser recepción de nuevos dibujables, cambios en el estado de los ya existentes (Posición, tamaño, etc.) o comandos más avanzados que involucran muchos dibujables.

38

El siguiente diagrama describe muy generalmente la arquitectura del sistema

A continuación se describe básicamente las componentes de la plataforma 5.2.1. Postprocesables Los objetos de las clases que heredan de la clase PostProcesable pueden ser serializados para ser transmitidos por la red. La mayoría de los objetos transmitidos por la red heredan de la clase PostProcesable. El siguiente diagrama ilustra este hecho:

Además de objetos que representan datos persistentes, un postprocesable puede ser creado con el único fin de ejecutar una acción en los handheld remotos.

39

5.2.2. SmartDraw El thread de ejecución principal es creado por el punto de entrada en la ejecución del programa. Consiste en un loop de recepción de eventos locales (Principalmente eventos de la pantalla touch-screen). Estos eventos gatillan la ejecución de métodos en el módulo principal del programa: SmartDraw.cs. SmartDraw es una gran clase que contiene métodos y variables estáticas que controlan el dibujado y manipulación de eventos en el sistema. Por sí solo es capaz de dibujar los componentes de la pantalla. La reacción a los eventos es básica en SmartDraw, pero puede ser delegada a los modos para reacciones más complejas. Lo mismo puede ocurrir con el dibujado. Aunque este se puede dejar a los modos, la mayoría de éstos no necesitan intervenir en el orden de dibujado de los componentes. Adicionalmente, SmartDraw (O los modos si estos así lo especifican) puede agregar botones a los costados de elementos seleccionados, que ejecutan diversas acciones. Finalmente, SmartDraw contiene las rutinas de inicialización del sistema, que incluyen la detección de modos disponibles, la componente de red del sistema, los buffers de dibujado y los envíos de datos hacia los otros participantes de una sesión. 5.2.3. Dibujables SmartDraw mantiene una colección de elementos dibujables. Un dibujable es un elemento que, dados ciertos parámetros de posición y zoom y un elemento Graphics, es capaz de dibujarse a sí mismo en el elemento Graphics. Es tarea de SmartDraw (O de los modos, si así lo especifican) saber qué elementos dibujar y donde dibujarlos. Además, SmartDraw mantiene un set de buffers gráficos que evitan el redibujado de la pantalla entera. De esta manera se hace más eficiente el proceso de dibujado. Cada dibujable está asociado a una página. Una página es un contenedor de dibujables. Existe una página inicial “Home” contenida en SmartDraw. Ciertos dibujables, como el “PageOwner” contienen una página, de forma que es posible “entrar” a un dibujable, estableciendo que la página actual sea la página contenida en el dibujable. Aunque por defecto sólo los dibujables de la página actual son dibujados, los modos pueden cambiar este comportamiento. Además, cada dibujable puede responder si puede ser dibujado o no, permitiendo evitar el dibujado de dibujables que no son consistentes en el modo actual, aunque estén en la página actual. Cada dibujable puede estar en estado seleccionado o no seleccionado. Esto influye en el manejo que los modos hacen sobre los dibujables. Finalmente, un dibujable puede responder si cierto elemento lo cruza, si es editable, si es borrable, etc. Esto es necesario para permitir flexibilidad en el set de operaciones permitidas por un dibujable sobre sí mismo. Por defecto, el dibujable es visible si está en la página actual y siempre es editable y borrable. Todos los dibujables están contenidos dentro de un rectángulo, que es una de sus variables de instancia. El dibujable más básico es el Trazo (Stroke). El trazo está compuesto de una serie de puntos relativos al rectángulo contenedor. Este dibujable es usualmente pasado a los modos para

40

ser analizado en busca de encaje con un gesto conocido. Por ejemplo, una serie de puntos en forma de X es reconocida como el gesto para borrar. 5.2.4. Modos Un modo es una clase que hereda de la clase Mode. Los modos son enumerados por el sistema al iniciarse y se listan en el sector izquierdo del borde inferior de la pantalla. Sólo puede haber un modo seleccionado en un momento determinado. Cada modo debe implementar una serie de métodos que reaccionan a los eventos de la pantalla touch-screen. Estos eventos son MouseDown (Cuando el lápiz se posa en un punto de la pantalla), MouseMove (Cuando el lápiz se mueve de un punto a otro mientras está posado sobre la pantalla) y MouseUp (Cuando el lápiz se levanta de la pantalla). Estos métodos determinan si alguna acción especial relacionada al modo ha de ejecutarse, basados en la posición del evento, los dibujables involucrados y el estado del sistema en general. Los métodos antes mencionados retornan valores boléanos. Si uno de ellos retorna true, SmartDraw asume que el evento fue manejado por el modo activo, por lo que no se ejecutan las acciones por defecto asociadas al evento analizado no se ejecutan. Si el método retorna false, SmartDraw asume que el modo activo no ejecutó ninguna acción para manejar el evento, por lo que ejecuta las acciones por defecto asociadas al mismo. Usualmente estas acciones se reducen a dibujar el camino trazado por el lápiz. Adicionalmente, cada modo puede implementar varias funciones que agregan más control sobre las funcionalidades por defecto de SmartDraw. Algunas de estas funciones son EnterMode (Se ejecuta cuando un modo se establece como activo), ExitMode (Se ejecuta cuando un modo deja de estar activo), Receive (Se ejecuta cuando se recibe un objeto de otro dispositivo móvil), ManageContextualOptions (Se ejecuta cuando SmartDraw está listo para agregar botones a la pantalla que ejecuten funciones relacionadas con el modo actual y los dibujables en pantalla. Retornar true indica a SmartDraw que no debe agregar los botones estándares). Otras funcionalidades que un modo puede implementar para cambiar la funcionalidad de SmartDraw son aquellas relacionadas con el dibujado de los elementos en el contenedor actual y la manipulación de los dibujables (Cambio de tamaño y ángulo). Existen diversos modos, cada uno con su interpretación de los gestos hechos por el usuario. El modo de dibujo es el más básico. Permite dibujar, borrar, crear dibujables contenedores, copiar, cortar y pegar dibujables, hacer scroll si hay un dibujable fuera del rango de la pantalla, etc. El modo de tabla permite ver información en celdas. El modo decisión permite tomar notas en poco espacio, etc. 5.2.5. Gestos Los objetos de clases derivadas de la clase gesto son usados por los modos para determinar como reaccionar ante eventos de la pantalla touch-screen. Los gestos extienden métodos para cada evento de la pantalla. Si determinan que un evento encaja con su gesto de lápiz, ejecutan la acción asociada y retornan el valor booleano true, lo que indica al modo activo que debe detener la búsqueda de un gesto que encaje con los eventos recibidos. Si el gesto determina que no encaja con el evento, retorna false.

41

Los eventos se pasan como un punto en el caso de MouseDown y MouseMove, y como un trazo en caso de MouseUp. Debido a que los gestos están íntimamente relacionados con los modos que los contienen, el orden de llamado de los gestos también debe ser tomado en cuenta al analizar un evento, debido a que usualmente se quiere dar más prioridad a un evento sobre otro. Además, un gesto usualmente requiere analizar los tres tipos de eventos (MouseDown, MouseMove y MouseUp), no sólo uno. Esto produce que excepto en casos muy contados, los gestos de un modo son difícilmente aplicables a otro modo. Estos casos son los gestos más genéricos, como cortar, mover, scroll, resize, rotar, etc. 5.2.6. Participantes Los objetos de la clase Participante representan a cada uno de los usuarios del sistema que se han conectado en red entre sí. Cada dibujable tiene asociado un participante como creador. Los participantes contienen campos tales como nombre, id, etc. 5.2.7. Contenedor de Dibujables Los contenedores de dibujables consisten en una colección de dibujables que permiten varias funciones sobre los dibujables que contienen. Algunas de estas funciones se usan para obtener todos los dibujables seleccionados, los dibujables de un tipo específico, mover la selección a otro punto de la pantalla, etc. 5.2.8. SmartNode SmartNode es la componente principal de manejo de red. Contiene todos los métodos y estructuras de datos que mantienen la lista de postprocesables enviados y recibidos junto con su id de red asociado. El id de red es un string único que representa cualquier elemento compartido únicamente. El id de red es el mismo en todas las PDA’s conectadas para un mismo postprocesables. SmartNode utiliza varios threads que cumplen las tareas de envío y recepción. Permite a SmartDraw abstraerse del proceso de serialización de los postprocesables. Debido a que e serializador XML usado es sólo capaz de serializar objetos simples (Strings, integers, etc.) y no objetos más complejos (Que en realidad son punteros), todos los postprocesables pueden redefinir el método PostProcessXML, que da la oportunidad de reconstruir los objetos basado en elementos serializables dentro del objeto a enviar o recibir. Este elemento se ejecuta apenas llega al receptor. 5.2.9. Despliegue de la información La información se despliega usualmente como trazos y rectángulos. Cada dibujable recibe un parámetro al pedir que se dibuje que representa el zoom al cual se quiere presentar el dibujo. Este parámetro se usa extensivamente a través de todo el sistema, manipulándolo para el óptimo uso del espacio reducido del que se dispone. Algunos dibujables, como la celda usada en el modo de tabla, determina el rectángulo mínimo que contiene a todos los elementos de su contenedor de

42

dibujables. Sólo el espacio que esté dentro de este rectángulo será mostrado, y el contenido será escalado para aumentar la legibilidad. Así, cuando se debe presentar una página que contiene dibujables en sólo una parte de su área, no se despliega el área en blanco, sino sólo el área útil. El despliegue se logra de varias formas. En el modo tabla se usa una grilla. En el modo decisión se usa un formato de lista. En el Modo FODA, la información se muestra en cuatro celdas representando las componentes del análisis FODA. 5.3. Arquitectura del sistema de toma de decisiones Utilizando la plataforma como base, se procede a mencionar las clases más relevantes del sistema de soporte a la toma de decisiones.

BrainStormingMode maneja los aspectos de brainstorming del sistema. Todos los dibujables idea (IdeaDrawables) sólo son visibles si este modo es el activo y si fueron creados por el usuario actual del sistema. Este modo contiene la lista de selectores de participantes necesarios para ver las ideas de otros participantes además del usuario actual. Cuando el modo está funcionando individualmente, se deja a SmartDraw el dibujado de todos los dibujables idea. Cuando se está trabajando en modo grupal, el modo mantiene una lista con los dibujables que son visibles y los despliega manualmente en su método DrawAfter, pues en este caso es necesario mostrar dibujables que no son del usuario actual, cuya posición es inconsistente con él. Finalmente, este modo maneja las operaciones de reposición y fusión de ideas. GroanMode maneja las operaciones necesarias para la fase groan. Los dibujables celda (CellDrawables) son visibles sólo en este modo. En este caso, todos los dibujables celda son visibles para todos los usuarios del sistema conectados. Para un más fácil acceso a los dibujables celda, el modo groan mantiene un dibujable invisible (CellMatrixDrawable), que contiene la

43

estructura de la tabla de groan en forma de un arreglo de dos dimensiones que contiene dibujables celda. Además maneja las operaciones de agrupación y deshacer agrupación sobre las celdas. Este modo está íntimamente relacionado con el modo rating, pues en rating se hacen comentarios que tienen por objetivo una de las ideas vistas en groan. ConvergenceMode maneja los aspectos de la fase convergence en el sistema. Los dibujables de convergencia (ConvergenceDrawables) sólo son visibles bajo este modo. Todos los usuarios ven todos los dibujables de convergencia. Este modo está íntimamente relacionado con el modo FODA, ya que la votación preliminar sobre las ideas del modo convergencia se hace en el modo FODA. FODAMode maneja la votación FODA de las ideas del modo convergencia. Este modo mantiene una referencia a un dibujable FODA (FODADrawable), que es considerado el activo. Sólo dicho dibujable es visible al usuario (En el borde inferior de la pantalla), y es asignado cuando se pide votar una idea en el modo convergencia. Este modo es el encargado de procesar los gestos para introducir los comentarios en las celdas del análisis FODA y de actualizar el dibujable de convergencia asociado. RatignMode es el modo encargado de procesar los envíos y recepciones de comentarios personales que se hacen entre los participantes. Este modo mantiene una referencia al dibujable celda que se considera activo. Dicho dibujable representa la idea con respecto a que el comentario se hace. Este dibujable es asignado al seleccionar “comentar idea” en el modo groan, y puede ser nulo. Este modo también es responsable por mostrar los comentarios personales que han sido enviados al usuario actual, en forma de dibujables de rating (RatingDrawables). Los dibujables de rating sólo son visibles en este modo. IdeaDrawable, CellDrawable y ConvergenceDrawable son las clases encargadas de mostrar las ideas durante las fases Brainstorming, Groan y Convergence, respectivamente. Todas son “PageOwners”, por lo que tienen un contenedor de dibujables como variable de instancia. Este contenedor de dibujables es compartido por los objetos de las tres clases para una misma idea, de tal forma que un cambio en una idea se ve reflejado todos dichos objetos. La visualización de las ideas cambia entre las diferentes clases. Un dibujable de ideas muestra las ideas escritas en tamaño real, mientras que los dibujables celda y convergencia fuerzan el zoom de los contenidos a un tamaño fijo, eliminando el espacio vacío. Esto asegura que los datos se muestren en forma reducida si es necesario, cumpliendo los requerimientos mencionados en 3.2.1. RatingDrawable es la clase encargada de mostrar los comentarios hechos al usuario por los demás participantes. La visualización de dichos comentarios es idéntica a la de las ideas en los dibujables celda (Zoom a tamaño fijo), excepto porque el fondo del dibujable está coloreado verde si el comentario es positivo y rojo si es negativo.

44

Contienen una referencia hacia la celda sobre la que el comentario está hecho. Esta referencia puede ser null. Finalmente, FODADrawable es la clase que contiene las celdas del análisis FODA, que representan las fortalezas, oportunidades, debilidades y amenazas de la idea. La visualización de los comentarios FODA es idéntica a la de las ideas contenidas en una celda. Contienen una referencia al dibujable de convergencia asociado. Esta referencia no puede ser null. 5.4. Implementación de los modos principales A continuación se describe la implementación de las operaciones descritas en el capítulo de requerimientos. Los detalles de la plataforma no son descritos, pues no es el tema de esta memoria. 5.4.1. Brainstorming Para implementar brainstorming, se mantiene una lista de dibujables idea. Cada dibujable idea sólo usa la componente vertical de la posición de su rectángulo contenedor al dibujarse. Horizontalmente siempre están en una posición predefinida, separados del borde izquierdo de la pantalla por un margen usado para los selectores de participantes. Los dibujables idea son “PageOwners”, de forma que poseen un contenedor de dibujables. Los dibujables contenidos son mostrados en su mismo tamaño original. Adicionalmente, existe un dibujable invisible llamado dibujable de información de ideas. Este dibujable mantiene la información de la posición del dibujable idea más bajo que se ha introducido, de forma que de saber a qué altura posicionar un dibujable idea nuevo cuando sea creado. Este dibujable invisible es actualizado cuando se agregan, editan o quitan dibujables idea. 5.4.1.1. Agregar ideas Para implementar esta funcionalidad se requiere detectar una línea relativamente recta que sirva de delimitador de ideas. Esto se hace en la función analyzemouseup. Se recibe un trazo de SmartDraw y se analiza, detectando el rectángulo que lo contiene. Se aplica un criterio de cuán ancho y cuán bajo debe ser el rectángulo para que sea considerado una línea. Si se cumple el criterio, el gesto selecciona todos los dibujables en la pantalla que no sean ideas ya introducidas y los traspasa del contenedor de dibujables actual al contenedor de una nueva idea creada. La idea recién creada es registrada para que obtenga un identificador único en todas las PDA’s del grupo y es compartida con los demás. Luego se transmite un mensaje postprocesable que indica a las demás PDA’s que los dibujables que componen la idea ahora están contenidos en la idea. 5.4.1.2. Mover ideas Para esta funcionalidad se utilizan los tres eventos de lápiz. En analyzemousedown se determina si el lápiz ha tocado una idea propia. Si es así, se fija una variable booleana en true para que se sepa en los otros eventos que efectivamente se está arrastrando una idea. En analyzemousemove

45

se verifica si esta variable es true. Si es true, se altera la posición de la idea, cambiando sólo su coordenada vertical según el punto donde está siendo movido el lápiz. Finalmente, en analyzemouseup, si la variable booleana estaba fija en true, se determina en qué posición quedó finalmente la idea, distinguiéndose tres casos. Si la idea no cambió de posición lo suficiente para ser movida, se recupera la posición original de la idea, almacenada en mousedown. Los otros dos casos ocurren si la idea quedó más abajo o más arriba de su posición original, respectivamente. En estos casos se desplaza la idea inmediatamente más arriba o más abajo de la posición final de la idea movida. La magnitud del desplazamiento es el alto de la idea movida. Luego la idea movida se fija en la posición de la idea desplazada y se fija la variable booleana en false. 5.4.1.3. Editar ideas Para lograr esta funcionalidad, se necesita de un gesto que analice los eventos mousedown y mouseup. Este gesto se utiliza para determinar si una idea ha sido seleccionada. Simplemente se compara el punto en el que se hizo mousedown con aquel en que se hizo mouseup. Si no son lo suficientemente cercanos, no hay ningún efecto. En caso contrario, se determina si existe una idea propia que esté en el punto de mousedown. Si es así, la idea es seleccionada y aparecen los botones de selección (Provistos por SmartDraw), en particular, el botón para entrar a la idea. Al presionar el botón se cambia la página actual por la de la idea, se cambia el modo al de dibujo y se refresca la pantalla. Una vez que se termina de editar la idea, se presiona el botón para volver a la página original, lo que gatilla el regreso al modo decisión. Si en la decisión editada cambia el tamaño o disposición de los elementos dentro de su contenedor de dibujables, ésta se redimensiona, reorganizando la lista de ideas para reflejar el espacio ganado o perdido. Si no hay dibujables dentro de la idea al salir de ella, la idea se borra completamente y se recalculan las dimensiones de la lista de ideas. 5.4.1.4. Fusionar ideas Para lograr esta funcionalidad, se recorre la lista de ideas hasta encontrar la primera que esté seleccionada. Esta idea será la que contendrá la mezcla de todas las ideas. Se sigue iterando y cada vez que se encuentra una idea seleccionada se le extraen todos sus dibujables y se acomodan abajo de los dibujables de la primera idea. Luego se procede a borrar la idea y enviar un mensaje avisando su destrucción al resto de las PDA’s. Además se envía un mensaje avisando del cambio de dueño y posición de los dibujables. Finalmente se vuelve a iterar sobre la ya dañada estructura de la lista de ideas y se rehace completamente, de forma de eliminar los espacios vacíos dejados por las ideas destruidas. 5.4.1.5. Cambiar entre modos individual y grupal La forma de implementar esta funcionalidad es la siguiente: En modo individual, las ideas sólo son visibles para SmartDraw si el usuario es el creador de la idea. Se mantiene una lista con el estado de compartición de todos los participantes. Si se selecciona uno de ellos, se envía un mensaje al participante seleccionado, indicándole que el primer usuario quiere compartir sus ideas con él. Además, el participante queda localmente seleccionado, de forma que se espera su respuesta para ejecutar la operación, si es que el aquel participante no había seleccionado al primero antes. Si así era, entonces el sistema del primer usuario cambia a modo grupal. Esto también significa que el participante seleccionado también cambia a modo grupal cuando le llega el mensaje del primer usuario. Basta con estar viendo a un solo participante para estar en modo grupal.

46

Al cambiar a modo grupal se cambia la forma de desplegar las ideas. Ahora todas las ideas son invisibles para SmartDraw y se utiliza una lista con ideas que son desplegadas manualmente por el modo mismo en su método DrawAfter. Primero se construye una lista ordenada donde aparecen primero las ideas del primer usuario y a continuación las del usuario seleccionado (Si ya se estaba en modo grupal, simplemente se agregan a la lista las ideas del nuevo usuario agregado). Una vez que la lista ha sido construida, las ideas ya no son desplegadas de forma convencional (Esto es, de acuerdo a su información de posición), sino que son desplegadas según el orden en el que aparecen en la lista construida. Si se agrega una idea nueva, ésta se agrega al final de la lista. Si se recibe una idea de un participante que esté entre los participantes en el grupo, ésta también es agregada al final. Si se deselecciona un participante que antes estaba en el grupo, se le envía un mensaje para que borre las ideas propias de su lista, lo que también se hará en la lista propia. Finalmente, si se deselecciona el último integrante del grupo, el sistema sale del modo grupal y se borra la lista usada anteriormente para mantener las ideas de todos los integrantes del grupo. 5.4.1.6. Salida de la etapa Para implementar esta funcionalidad, que requiere mostrar las ideas en forma de una tabla, se necesita saber cuantos participantes han agregado ideas y cuál es el máximo de ideas que ha agregado cada participante individualmente, pues éstos datos serán el número de columnas y filas que tendrá la tabla finalmente. Esto se logra cuando el último de los integrantes entra presionando el botón “groan”. Para este integrante, el sistema detecta que es el último que faltaba (Pues se mantiene un contador estático en el modo brainstorming que indica la cantidad de usuarios del sistema que han enviado el mensaje avisando que están listos para groan) y determina estos datos, que procede a distribuir a los demás integrantes. El mensaje es personalizado para cada integrante. Para cada integrante, el sistema le indica cuántas filas y columnas tendrá la tabla y qué número de columna ha sido asignado para él. Una vez que un integrante recibe esta información, éste crea las celdas correspondientes (De acuerdo al tamaño de las celdas de la tabla y la columna asignada para él) para sus ideas y las distribuye. Las celdas recientemente creadas descartan su contenedor de dibujables predeterminado en favor del contenedor de dibujables de la idea que la origina. De esta forma, los dibujables de ideas y los de celdas comparten el mismo contenedor de dibujables. Esto es útil cuando se requiere volver a una fase anterior a la actual para corregir o modificar los contenidos. Finalmente, se cambia de modo a groan y se refresca la pantalla. 5.4.2. Groan Para implementar este modo, se mantiene una matriz de dibujables celda. Cada dibujable celda es un “PageOwner”. Esto es, posee un contenedor de dibujables. Los dibujables en el contenedor son mostrados de tal forma que sólo se muestre espacio ocupado, descartando los alrededores vacíos. Esto se logra calculando las coordenadas X e Y mínimas y máximas entre todos los dibujables contenidos, lo que define un rectángulo que los encierra. El zoom de despliegue se adapta entonces para mostrar sólo este rectángulo. Los dibujables celda contienen además dos campos que indican cuál es su fila y columna. Para mantener la estructura de matriz en memoria, se almacena un dibujable invisible, llamado dibujable de matriz de celdas. Este dibujable contiene una matriz de referencias a objetos dibujable celda. Esta matriz permite ejecutar con mayor facilidad operaciones de tabla tales como

47

agregar o eliminar columnas y filas, mover celdas, etc. La gracia de utilizar un dibujable que mantenga la información de las celdas es que éste se puede almacenar en un contenedor de dibujables, lo que permitiría mostrar una tabla dentro de la celda de otra tabla. Esto no es usado en el sistema de soporte a decisiones. 5.4.2.1. Agrupar ideas Para implementar esta funcionalidad, se detecta que el lápiz ha tocado una celda y la ha arrastrado, utilizando los eventos mousedown (Donde se almacena la posición original de la celda a arrastrar para poder posicionarla ahí nuevamente en caso de que no se ejecute una agrupación) y mousemove. Una vez detectado el movimiento, se espera al evento mouseup. Cuando mouseup ocurre, se determina si existe una celda que esté suficientemente cercana a la posición final de la celda arrastrada como para asumir que se trató de agrupar ambas ideas. Si existe tal celda, se mueven los contenidos de la celda arrastrada a la celda destino y se notifica a los demás participantes. Finalmente, la celda origen se mueve a su posición original, almacenada en mousedown. Cabe notar que este gesto debe soportar la funcionalidad de deshacer la agrupación, por lo que la celda objetivo almacena una lista con los elementos agregados desde la celda arrastrada y un puntero a dicha celda, para saber qué celda resaltar si se está intentando deshacer la última agrupación de ideas. 5.4.2.2. Deshacer agrupar ideas Para implementar esta funcionalidad, cada celda contiene dos campos: El primero es una lista que contiene los últimos elementos agrupados con la celda y el segundo es un puntero a la celda que era dueña de estos elementos. Cada celda, en su método draw, verifica si se está ejecutando el gesto de agrupar ideas. Si así es, la celda verifica si la celda siendo arrastrada tiene un campo válido de información para deshacer agrupaciones. Si lo tiene, y éste campo apunta hacia ella misma, la celda se dibuja en color verde en vez del color seleccionado por el usuario. El usuario entonces suelta la idea sobre la celda de color verde. El gesto para agrupar ideas, en su evento mouseup, detecta si la celda sobre la que se está arrastrando la celda seleccionada es la celda apuntada por su campo deshacer. Si es así, se devuelven los elementos a la celda deshacer. Finalmente, los campos necesarios para deshacer las agrupaciones en la celda arrastrada son invalidados, ya que se han deshecho los cambios. 5.4.2.3. Editar ideas Para implementar esta funcionalidad, se necesita determinar si se está ejecutando el gesto agrupar ideas o si se está ejecutando el gesto entrar a la celda. Para lograr esto, el gesto para agrupar ideas determina si el lápiz se movió más allá de un umbral predefinido mientras estuvo presionado contra la pantalla. Si no es así, entonces el gesto para entrar a la celda determina la celda sobre la cual se tocó la pantalla. Luego cambia el contenedor actual al contenedor dentro de la celda tocada y cambia el modo al modo de edición, que permite manipular los elementos dentro de la celda.

48

5.4.2.4. Comentar ideas Para implementar el modo de comentarios, el modo contiene una referencia estática a la idea a comentar, obtenida al hacer click en el botón “comentar idea”. A la izquierda de la pantalla se pueden ver todos los participantes de la sesión, representados cada uno por un dibujable rectangular. Estos dibujables tienen un fondo de color sólo si el participante representado por el dibujable es el creador de la idea a comentar. Se escriben trazos en el área de escritura de comentarios. Cuando se desea enviar el comentario, se dibuja un trazo que parta en cualquier parte del comentario y termine en uno de los dibujables que representan a los participantes. Para determinar si el gesto indica un comentario positivo o negativo se guarda la posición vertical del último punto del trazo y se busca desde el penúltimo punto del trazo hasta el primero. Si uno de estos puntos tiene una componente vertical mayor que el último punto, el comentario es marcado como positivo con una variable booleana. Si no, es marcado como negativo. Se crea un dibujable de comentario que contenga esta variable y una referencia a la idea a comentar y se envía sólo al destinatario del comentario. Cabe notar que si la idea a comentar no pertenece al destinatario escogido, la referencia de la idea a comentar no se envía en el comentario. Al recibir el destinatario el dibujable de comentario, se posiciona al final de la lista de comentarios, mantenida por un dibujable invisible, que se actualiza para reflejar el alto del comentario recién agregado. Este dibujable de comentario se colorea verde si la variable booleana indica que es positivo y rojo si no. 5.4.2.5. Salida de la etapa Para implementar esta funcionalidad, simplemente se seleccionan todas las celdas que contienen dibujables. Éstas son insertadas en una lista. Se divide la pantalla en partes iguales dependiendo del largo de esta lista, se crean dibujables de convergencia y se les asignan el contenedor de dibujables de la celda respectiva. Esto significa que los dibujables de ideas, las celdas y los dibujables de convergencia comparten el mismo contenedor de dibujables para una misma idea. Finalmente, para cada dibujable de convergencia, se crea un dibujable FODA, que servirá para votar por cada idea, y se cambia el modo actual al modo de convergencia. 5.4.3. Convergence/FODA Para implementar este modo se mantiene un conjunto de dibujables de convergencia que representan a cada una de las ideas finales. Estos dibujables son “PageOwners” y muestran sus contenidos de la misma forma en que lo hacen los dibujables de celda. Ocupan todo el ancho de la pantalla y tienen el mismo alto entre sí, ocupando en conjunto todo el alto de la pantalla. Los dibujables de convergencia además contienen una referencia a un dibujable FODA, lo que permitirá que las ideas sean evaluadas en un análisis FODA. Finalmente, los dibujables de convergencia muestran su valor percibido por el grupo mediante un rating numérico obtenido a partir de los comentarios hechos a su dibujable FODA respectivo. 5.4.3.1. Votación mediante FODA Para implementar esta funcionalidad, se detecta la presión y liberación del lápiz sobre una idea. Una vez determinada esta idea, se cambia al modo FODA. Este modo contiene un campo estático que apunta hacia el dibujable FODA de la idea presionada. Sólo este dibujable FODA es visible para SmartDraw. El dibujable FODA contiene punteros hacia cuatro dibujables SubFODA, uno

49

para cada campo del análisis FODA (Fortalezas, oportunidades, debilidades y amenazas). Los dibujables SubFODA son invisibles para SmartDraw, y dependen del método dibujar de su dibujable FODA padre para ser desplegados. Cada dibujable SubFODA está dispuesto de forma que entre los cuatro se agrupan en forma de una tabla de dos por dos centrada en la pantalla. En este modo se pueden escribir varios trazos representando una fortaleza, oportunidad, debilidad o amenaza. Si uno de los trazos comienza en el área de escritura y termina en uno de los dibujables SubFODA, entonces se seleccionan todos los trazos hasta entonces creados y se agregan al final de los contenidos de dicho dibujable SubFODA. Debido a que un elemento que pertenece a uno de estos dibujables SubFODA puede contener más de un trazo, se requiere de un contador que almacene cuantos elementos se han ingresado en cada dibujable SubFODA, no contar cuantos trazos contiene el dibujable SubFODA. Así, cada dibujable SubFODA contiene, además de sus elementos, un contador que indica cuantos elementos contiene. Cuando se agrega un elemento a uno de los dibujables SubFODA, este contador se incrementa en 1. Por la misma razón anterior, es necesario notificar a cada participante del nuevo valor del contador del dibujable SubFODA cuando éste cambia (Pues no se puede obtener como el número de trazos transmitidos). Para lograr esto, se envía un mensaje de incremento. Cada participante que reciba este mensaje automáticamente incrementa en 1 el contador del dibujable SubFODA respectivo. El contador es mostrado en la esquina superior derecha de cada dibujable SubFODA. Para obtener el valor de la idea asociada al dibujable SubFODA, se calcula la suma de los elementos de las fortalezas y oportunidades, restada con la suma de los elementos de las debilidades y amenazas. Una vez que se han agregado todas las fortalezas, oportunidades, debilidades y amenazas para la idea seleccionada en el modo convergencia, se presiona el botón “Volver a convergencia”, lo que devuelve al sistema al modo Convergencia. El valor de las ideas calculado anteriormente es desplegado en la esquina superior derecha de la idea en el modo de convergencia. 5.4.3.2. Selección de las ideas finales Para implementar esta funcionalidad se utiliza el gesto para detectar “ticks” provisto por SmartDraw. Si el gesto es reconocido como un tick, se determina el dibujable de convergencia sobre el que está el primer punto del gesto tick. Luego se determina si el dibujable ya era la idea seleccionada por medio de ticks. Si es así, el gesto se ignora. Si no, se cambia una variable estática en el modo convergencia que apunta al dibujable de convergencia de la idea votada para que apunte al dibujable sobre el cual se hizo el gesto. Si había un dibujable votado antes de votar por el actual, a éste se le quita un voto en su contador de votos y se le agrega un voto al votado actualmente. Finalmente se envía un mensaje a los demás participantes que actualiza la cantidad de votos recibidos por cada dibujable de convergencia para que refleje el estado actual de los dibujables de convergencia afectados por el voto. 5.4.4. FODA inmediato Para implementar esta característica, los dibujables FODA contienen un campo que indica si son de tipo genérico o no. Al hacer click sobre el ítem FODA en el menú de modos especiales, se detecta que se accedió al modo FODA a través de este menú. Luego se verifica si la sesión ya contiene un dibujable FODA genérico. Si existe, éste dibujable se asigna como el FODA actual.

50

Si no existe, se crea y se distribuye a los participantes. Cuando los participantes lo reciben, se almacena para usarlo cuando el usuario seleccione la opción de FODA inmediato. 5.4.5. Navegando entre etapas Para navegar entre los distintos modos sin perder la consistencia se requiere de ciertas características descritas a continuación. 5.4.5.1. Compartición de contenedores de dibujables El primer cambio requerido afecta el funcionamiento estándar de un PageOwner. Específicamente, se requiere que varios PageOwners compartan sus contenedores de dibujables, de tal forma que cada PageOwner es simplemente una forma distinta de visualizar la información (Las ideas) que comparten entre sí. Para cada idea, hay tres PageOwners que la visualizan. Éstos son el dibujable idea, el dibujable celda y el dibujable de convergencia, relacionados con la fase de brainstorming, groan y convergencia respectivamente. Cada contenedor de dibujables contiene una referencia a su dueño principal (El primer dueño que le fue asignado). Además contiene una lista de referencias a todos los demás dueños que ha tenido. Cuando una idea se crea por primera vez, la lista contiene sólo una referencia al dibujable idea. Al pasar por primera vez por la fase groan, se le agrega un dibujable celda a la lista. Finalmente, al entrar por primera vez a la fase convergencia, se le agrega un dibujable de convergencia a la lista. Este sistema tiene la ventaja de que no es necesario modificar las ideas en tres contenedores distintos cuando se les hace algún cambio. 5.4.5.2. Actualización al salir del contenedor Existe un problema con esta manera de compartir contenedores: El tema de saber a cuál de los dueños de un contenedor de dibujables volver cuando se sale del contenedor. Cuando se entra a una idea desde algún modo, se espera (Por motivos de usabilidad) que al salir de esa idea el sistema vuelva a estar en el modo de operación en que estaba antes de entrar en la idea. Por ejemplo, si se entra a una idea desde el modo groan para hacerle cambios, se esperaría que al salir de la idea luego de los cambios se vuelva al modo groan, y no al modo brainstorming o convergencia. Para lograr esto, cada contenedor mantiene una referencia al PageOwner que será activado cuando se salga del contenedor (Éste es el PageOwner de retorno). Esta referencia debe ser actualizada manualmente en el código del programa. Cuando se activa el PageOwner de retorno se invoca a un método de dicho PageOwner, diseñado para recuperar la consistencia de la vista del PageOwner con respecto a los cambios hechos a la idea. Además, este método se usa para volver al modo en que se estaba al entrar en la idea. Por ejemplo, si se entró a un dibujable celda el programa entra en modo edición para modificar los contenidos. Al salir, el método de salida de los dibujables celda devuelve el modo actual a modo groan, además de actualizar los otros PageOwners que también contienen la misma idea. 5.4.5.3. Caso especial de los dibujables de convergencia Cuando se entra por primera vez al modo convergencia, sólo las ideas no vacías son seleccionadas para crear dibujables de convergencia. Algunas ideas podrían no tener contenidos por dos razones: Podrían haber sido borrados todos sus contenidos al editarlas o sus contenidos podrían haber sido fusionados con los de otra celda en el modo groan. Por esta razón, si se entra

51

al modo convergencia y luego se agregan contenidos a una idea previamente vacía, es necesario que se cree un nuevo dibujable de convergencia que represente la nueva idea que ya no está vacía. Esto ocurre en varios casos: Si explícitamente se agregan contenidos a una celda que estaba vacía, si se deshace una fusión de celdas o si se fusiona una celda no vacía con una vacía. Existe otro caso a considerar: El caso de que se le agregan o quitan contenidos a una idea que ya tenía asociada un dibujable de convergencia. Si se quitan todos los contenidos de una idea, el mostrar esta idea en el modo de convergencia no tiene sentido (No se puede votar por una idea vacía). Por esto, cuando una idea es vaciada completamente, el modo de convergencia no muestra la idea recientemente vaciada. Esto se logra usando una variable booleana llamada “descartado” en los dibujables de convergencia, que es verdadera si la idea no debe ser mostrada, y falsa si sí debe ser mostrada. De la misma forma, si una idea recupera sus contenidos después de haber sido vaciada, la idea ahora debe ser mostrada en el modo de convergencia. Cabe notar que cuando el estado de un la variable “descartado” de un dibujable de convergencia cambia, todos los dibujables de convergencia que sobreviven deben cambiar su posición y tamaño para que una vez más ocupen la totalidad del espacio de la pantalla. Este comportamiento se puede apreciar en las figuras 54-57.

Figura 54 Volviendo a groan para

hacer cambios

Figura 55 Volviendo a

brainstorming para hacer cambios

Figura 56 Los cambios en

brainstorming se reflejan en groan

52

5.4.5.4. Adición de nuevas ideas después de salir de la fase de brainstorming Finalmente, existe un último caso a considerar para la implementación de la navegación libre por los modos, y esto es la adición de nuevas ideas cuando ya se ha entrado a fases posteriores a la de brainstorming. En este caso, el sistema verifica en qué fase está el proceso de toma de decisiones se está. Si el proceso está en la etapa groan, junto con el dibujable idea se crea un dibujable celda al final de la columna asignada para el creador de la idea y se reajusta la tabla que mantiene las celdas (Esto es, se cambian la posición, el ancho y el alto de las celdas ya existentes). Si el proceso está en la etapa convergencia, además se agrega un dibujable de convergencia al final de la lista de dibujables de convergencia (Figuras 55-57). 5.5. Funciones educativas 5.5.1. Feedback por mensajes El modo de mensajería forma parte del modo Groan. Su implementación está descrita en la sección 5.4.2.4. 5.5.2. Indicadores Para implementar estas funcionalidades se mantiene una variable estática de la clase Score. Esta clase mantiene una tabla de hash que vincula strings que describen cierto indicador con un entero que indica el número de eventos que afectaron dicho indicador. Además, en otra tabla de hash se mantiene el valor o “peso” que tiene cada unidad de un indicador sobre el puntaje final. Cada acción que afecta los indicadores modifica esta variable estática. Para desplegar el puntaje, en el método de SmartDraw que redibuja la pantalla se llama a la función getScore() del objeto estático de clase score. Este método multiplica las unidades de cada

Figura 57 Los cambios en

brainstorming y groan se reflejan en convergencia

53

indicador por su peso y lo suma al valor final, que se inicializa en cero. Luego este valor es dibujado en la parte superior de la pantalla. 5.5.3. Log Cada acción necesaria de registrar agrega una entrada al log. Para mantener el log, existe una variable estática en SmartDraw de la clase Log. Esta clase mantiene un ArrayList de “entradas”, que consisten en texto relacionado con un evento y la hora a la que ocurrió (El timestamp de la entrada). Para desplegar el log, el modo log quita el control del dibujado de SmartDraw y despliega cada entrada como una línea, concatenando el mensaje con el timestamp. 5.5.4. Aportes del profesor 5.5.4.1. Comentar dentro de un grupo Cada vez que el usuario ejecuta un gesto, el sistema verifica que la variable AdminParticipant esté asignada. Si lo está, y el participante apuntado por ella (El administrador, o en este caso, el profesor) es el mismo usuario, se asume que es el profesor que está escribiendo un comentario. Cada modo entonces adopta otro conjunto de acciones a ejecutar para cada evento del usuario. Estas acciones están orientadas a dibujar los trazos que está dibujando el profesor de la misma forma en que un usuario que no es el profesor escribiría en una página en blanco o en el modo brainstorming, al escribir una idea. Los trazos escritos por el profesor son de tipo AdminStroke, una subclase de Stroke, que tienen la particularidad de que siempre son visibles en el modo en que fueron creados y no pueden ser modificados excepto por un usuario que sea el profesor y esté en el mismo modo en que fueron creados. Para lograr estas características, la clase AdminStroke responde false a varios métodos cuyo objetivo es determinar las propiedades de visibilidad y edición de un dibujable. Ejemplos de dichas funciones son IsEditable (Que responde false para no ser movido o modificado en cualquier sentido) y Touches (Que responde false para nunca ser incluido en un gesto que pasó por su ubicación). 5.6. Funciones genéricas Durante la creación del sistema, se debió implementar varias funciones que no pertenecen a un solo modo. Estas funciones son scrolling, rotación y redimensionado de dibujables, selección por cruce y el selector de color y ancho de línea. Todas estas funciones cumplen los requisitos mencionados en 3.2.1.

54

5.6.1. Scrolling Como fue mencionado anteriormente, para visualizar toda la información que el sistema ha de mostrar en pantalla, usualmente se requiere hacer uso de scrolling vertical. Esta funcionalidad está implementada de dos formas: 5.6.1.1. Scroll automático Esta forma de scrolling se invoca cada vez que el usuario deja de presionar el lápiz sobre la pantalla, o sea, en el evento mouseup. Si el evento mouseup ocurrió sobre un área de la pantalla lo suficientemente baja, se hace scroll hacia abajo, moviendo todos los dibujables de la pantalla (Incluyendo el trazo que se estaba escribiendo) hacia arriba, creando espacio para escribir más trazos. Si el evento mouseup ocurre sobre un área lo suficientemente alta de la pantalla, se hace scroll hacia arriba, similarmente moviendo todos los dibujables de la pantalla hacia abajo. 5.6.1.2. Scroll manual Esta forma de scroll requiere que el usuario presione el lápiz sobre el borde derecho de la pantalla, lo que indica a SmartDraw que se quiere hacer scroll manualmente. El gesto de scrolling es modular. Esto es, está contenido en un gesto que se puede insertar fácilmente en cualquier modo que no redefina la forma en que SmartDraw dibuja los dibujables. Para hacerlo, simplemente se le debe agregar a los métodos que manejan los eventos mousedown, mousemove y mouseup. Si un modo no utiliza el gesto de scrolling, entonces los dibujables movidos por el gesto de scrolling en un modo que sí lo soporta no podrán ser movidos de vuelta a su posición original en el modo que no lo soporta a menos que se muevan uno por uno, como por ejemplo usando el gesto de arrastrar dibujable en el modo de edición. La forma de hacer scroll manualmente es la siguiente: Una vez que el lápiz toca la pantalla en su borde derecho, el punto en que se tocó la pantalla es tomado como referencia para determinar cuánto scroll se debe hacer (Mostrando una línea a la altura de dicho punto para dar una idea de cuánto falta para llegar a uno de los bordes de la pantalla (Figuras 58-59)), en qué dirección se hará y con qué velocidad se hará. Luego se mueve el lápiz hacia arriba o abajo dependiendo de dónde se quiera ir en la página.

55

Para mover los dibujables, se les cambia la posición del rectángulo que los contiene, de forma que efectivamente han sido movidos para todos los modos, incluso fuera del área de dibujo. Para implementar el scroll manual se siguen los siguientes pasos: Cuando se pone el lápiz sobre la pantalla, el punto en que el lápiz fue presionado es almacenado en memoria. Además, se calcula el tamaño total de la página sobre la que se hará scroll como el alto del rectángulo que encierra todos los dibujables visibles de la pantalla. Si el lápiz se mueve hacia arriba, se calcula qué proporción de la distancia entre el punto inicial y el borde superior ha recorrido el lápiz desde el punto inicial. Esa proporción se multiplica luego por la distancia que existe entre al punto inicial y el punto más alto del rectángulo que encierra los dibujables visibles de la pantalla. El resultado de esta multiplicación es la cantidad de píxeles a mover en las posiciones de todos los dibujables. Lo mismo ocurre si el lápiz se mueve hacia abajo, solamente que se usa el borde inferior de la pantalla en vez del superior y el punto más bajo del rectángulo que encierra a los dibujables en vez del punto más alto. Esto permite que se haga scroll a distintas velocidades dependiendo de donde se puso el lápiz por primera vez. Si el lápiz está muy cerca del borde superior y se hace scroll hacia arriba, el scroll será muy rápido en esa dirección y viceversa para la dirección opuesta. La característica notable de este modo de scroll es que no importa en qué lugar de la pantalla se esté viendo, el scroll es siempre capaz de llegar al borde superior e inferior de la pantalla, más o menos rápido dependiendo de donde se puso el lápiz por primera vez. 5.6.2. Rotación Otra funcionalidad implementada para ser usada en todos los modos es la rotación. La rotación está orientada a corregir el ángulo de escritura a mano, que usualmente no es 0 debido a mal apoyo del lápiz por parte de los usuarios. Rotar un dibujable sólo está disponible para los dibujables de tipo trazo.

Figura 58 Scroll. Hay contenidos abajo del área visible

Figura 59 Scroll. Hay contenidos arriba y abajo del área

visible

56

Para usarla, se especifica un punto afuera del dibujable (Demarcado por un pequeño círculo azul (Figura 60)), que sirve para indicar a SmartDraw que se quiere rotar un dibujable o un grupo de dibujables.

Primero se selecciona el dibujable a rotar y se presiona el círculo de rotación. Al presionarlo, se rotan los dibujables seleccionados de acuerdo al movimiento del lápiz (Figura 61).

Existen dos comportamientos que la rotación puede seguir: Si hay sólo un dibujable seleccionado, la rotación se efectúa tomando como eje de rotación la esquina superior izquierda del rectángulo que contenía al dibujable original (Sin rotar), y el ángulo de rotación usado es el ángulo formado por una línea horizontal y otra línea que vaya del eje de rotación al punto actual en que está presionado el lápiz. Si hay más de un dibujable seleccionado, el eje de rotación se ubica en la esquina superior izquierda del rectángulo que contiene a todos los dibujables seleccionados (Sólo los dibujables

Figura 61 Rotando un trazo

Figura 60 Ancla de rotación, indicada

por la flecha

57

seleccionados de tipo trazo son rotados). El ángulo de rotación se obtiene de manera distinta que al rotar sólo un dibujable. Esto se debe a que en el caso de varios dibujables es menos probable que el lápiz pueda dar una vuelta completa alrededor del eje de rotación. En vez de obtener el ángulo dependiendo del ángulo formado por la horizontal y la línea que une el punto del lápiz actual y el eje, se calcula el ángulo proporcionalmente a la distancia vertical que hay entre el eje de rotación y el punto actual del lápiz. La implementación de la rotación es compleja y requiere de soporte de la implementación base de SmartDraw. Cuando hay uno o más dibujables seleccionados, SmartDraw dibuja un rectángulo que encierra todos los dibujables seleccionados. En este momento, SmartDraw determina si el modo actual es capaz de manejar rotación (Mediante una función booleana redefinida por cada modo al heredar de la clase Modo). Si así es, dibuja el ancla de rotación (Un círculo azul) a la derecha del rectángulo contenedor. Esta ancla indica el lugar donde se debe presionar el lápiz para comenzar a rotar los dibujables seleccionados. Cuando el lápiz se posa sobre el ancla, el gesto de rotación detecta un intento de rotación. Debido a que SmartDraw usa coordenadas basadas en número enteros para la posición de los dibujables y los puntos de los trazos, aplicar varias transformaciones de rotación sucesivas sobre los mismos puntos resulta en la pérdida de la información de ubicación de los puntos. Esto lleva a que los trazos originales se deformen y finalmente se reduzcan a un punto. Para evitar este efecto, se almacena una copia de los puntos originales y del rectángulo contenedor de todos los trazos inmediatamente después de que el lápiz se posa sobre el ancla de rotación. Luego, cuando haya que calcular los puntos rotados, se aplica la rotación siempre sobre los puntos originales. Una vez que se guarda un respaldo de los puntos originales, se calcula el ángulo de rotación de acuerdo a los criterios descritos anteriormente. Luego se procede a aplicar una matriz de rotación (Basada en el ángulo anteriormente obtenido) sobre cada uno de los puntos de cada uno de los trazos seleccionados. Luego de rotar un trazo, se recalcula el rectángulo que contiene al trazo. Cuando todos los trazos hayan sido rotados, se refresca la pantalla para que los cambios sean visibles. Esto ocurre cada vez que se gatilla el evento mousemove. Finalmente, cuando se levanta el lápiz, se gatilla el evento mouseup, lo que indica a SmartDraw que el dibujable quedó en la posición final deseada por el usuario. En este momento se borran los respaldos de puntos y rectángulos y se transmite la nueva posición de los puntos de los trazos rotados. 5.6.3. Redimensión La función de redimensión está disponible para todos los modos usados en SmartDraw y se aplica sobre trazos y dibujables basados en rectángulos. Para utilizarla, se especifica un área (En la forma de un cuadrado rojo (Figura 62)) que sirve como ancla de redimensionado.

58

Al presionarlo se indica a SmartDraw que se quiere redimensionar el dibujable o dibujables seleccionados. Primero se debe seleccionar todos los dibujables que se desee redimensionar. Luego se presiona el ancla de redimensionado y se le arrastra para cambiar el tamaño de los dibujables seleccionados (Figura 63). El ancla está ubicada en la esquina superior derecha del rectángulo que contiene a todos los dibujables seleccionados, y la redimensión está pensada para aumentar la dimensión horizontal hacia la derecha, y la vertical hacia arriba.

La función de redimensión está disponible para trazos y dibujables basados en rectángulos (Ejemplo: PageOwner). La implementación de la redimensión es la siguiente: Cuando SmartDraw dibuja los elementos que están seleccionados, también dibuja un rectángulo que contiene todos los dibujables seleccionados. El ancla de redimensionado es un cuadrado rojo ubicado en la esquina superior derecha, presente sólo si el modo actual especifica que soporta redimensionado. Al tocar la pantalla con el lápiz (Evento mousedown), si la posición de toque está sobre el ancla de

Figura 62 Ancla de redimensión, indicada por la flecha

Figura 63 Redimensionando un trazo

59

redimensionado, se hace un respaldo de los puntos de los trazos (Si hay trazos dentro de la selección) y de los rectángulos contenedores de los dibujables. Al mover el lápiz mientras se mantiene presionado sobre la pantalla (Evento mousemove), se calcula el factor de redimensionado a partir de cuanto se ha movido el lápiz con respecto a su posición inicial. Específicamente, se calcula el rectángulo que encierra el conjunto de dibujables seleccionados y se aumentan o disminuyen las dimensiones de todos los dibujables proporcionalmente a cuánto se movió el lápiz con respecto a la esquina superior derecha de este rectángulo. El factor de redimensión tiene componentes horizontales y verticales. La coordenada horizontal de cada punto se multiplica por la parte horizontal del factor y la coordenada vertical de cada punto se multiplica por la componente vertical del factor. Una vez que se tienen los puntos redimensionados, se procede a calcular el nuevo tamaño y ubicación del rectángulo contenedor de cada dibujable redimensionado. Para esto hay dos métodos, aplicados según el tipo de dibujable redimensionado: Para los trazos, simplemente se calcula el máximo y mínimo de las coordenadas horizontales y verticales, lo que permite calcular la posición (Los mínimos de las coordenadas) y las dimensiones (La resta entre los máximos y mínimos de las coordenadas) del nuevo rectángulo. Para los dibujables basados puramente en rectángulos, se calcula la nueva posición y dimensiones multiplicando el factor directamente por la posición y dimensión antiguas. Cabe destacar que la redimensión puede provocar un efecto “espejo”. Esto es, si el lápiz se lleva más a la izquierda que el lado izquierdo del rectángulo que contiene todos los dibujables o más abajo que el lado inferior del mismo rectángulo, los trazos se dibujan de forma invertida, como el reflejo en un espejo. El efecto en los dibujables puramente basados en rectángulos es indefinido, debido a la forma en que se calculan sus nuevas dimensiones (O sea, el rectángulo puede llegar a tener ancho y alto negativos luego de multiplicar sus dimensiones por un factor negativo). Al levantar el lápiz (Evento mouseup) se eliminan los respaldos de los puntos originales de los trazos en la selección y los rectángulos contenedores de todos los dibujables seleccionados y se transmiten los cambios efectuados sobre los dibujables a todos los participantes de la sesión. 5.6.4. Selección por cruce La manera usual de seleccionar dibujables para operar con ellos es presionar el lápiz sobre la pantalla en la posición de los dibujables. Esto es útil si se quiere seleccionar uno o dos dibujables, pero si se quiere seleccionar una frase entera escrita a mano, que usualmente está compuesta por varios dibujables de tipo trazo, no es muy conveniente. SmartDraw provee una forma alternativa pre-implementada para seleccionar objetos: Selección por lazo. En este modo se requiere encerrar todos los dibujables deseados en un lazo, que debe ser trazado dos veces. El problema con este tipo de selección es que a veces es difícil hacer un lazo que encierre por completo ciertos dibujables (Por ejemplo aquellos que están cerca de los bordes de la pantalla). Además, los dos lazos deben ser similares y cerrados para ser reconocidos como un gesto de selección por lazo. Para atacar estos problemas se implementó un nuevo tipo de selección: La selección por cruce. Para usar este tipo de selección, se debe primero dibujar un círculo pequeño y llenarlo (Círculo de selección), como si se estuviera dibujando un punto pequeño. Una vez que SmartDraw detecta que el círculo es lo suficientemente pequeño y que se han dibujado suficientes puntos, el color de

60

la línea con la que se está dibujando el círculo se torna azul, lo que es una señal de que se ha comenzado el gesto de selección por cruce. Luego se dibuja el resto de la línea de forma que cruce todos los objetos que se desea seleccionar (Figura 65). Una vez que suelta el lápiz, el comportamiento del gesto puede ser uno de dos: Si la línea dibujada cruza al menos un dibujable, entonces se seleccionan todos los dibujables cruzados (Figura 66).

Si no se cruzó ningún dibujable durante el gesto, entonces se copian todos los dibujables seleccionados (Y sus contenidos, si son PageOwners) sobre el inicio del gesto (Usualmente cerca del centro del círculo inicial). Este método de selección es útil pues no requiere que el gesto de selección pase por los bordes de los dibujables a seleccionar, sino sólo por parte de ellos. De esta forma se puede seleccionar un dibujable sin tenerlo completamente dentro de la pantalla (Por ejemplo, si se ha hecho scroll sobre la pantalla). Para implementar este gesto se requiere soporte directo de SmartDraw. Uno de los métodos llamados por SmartDraw ante eventos de lápiz es AnalyzeOnPeak. Este método se invoca cuando la línea de un gesto ha llegado a cierta cantidad de puntos. Esta cantidad de puntos usualmente es 0, lo que indica que no se debe invocar al método. Si la cantidad de puntos definida por el modo actual es mayor que 0, el método se invoca una vez que el gesto que se está dibujando actualmente alcanza dicha cantidad, pero sólo una vez. El método recibe el gesto que se está construyendo permite que se reaccione tempranamente a un gesto, usualmente para dar awareness al usuario del hecho de que un gesto fue reconocido. En el caso de la selección por cruce, es vital dar al usuario una señal de que ha ejecutado correctamente el gesto y que puede comenzar a dibujar la línea para seleccionar los dibujables deseados. Cuando se llega a la cantidad de puntos requerida por el gesto de la selección por cruce para determinar si el círculo es lo suficientemente pequeño, el método AnalyzeOnPeak se invoca, lo que ejecuta a su vez el método IsSelectionAttempt. Éste método determina si los puntos ingresados hasta el momento indican un intento de selección por cruce. Si es así, se fija una variable booleana en verdadero y el lápiz temporal de SmartDraw (El lápiz en que se dibujan los gestos cuando todavía no han sido terminados, usualmente rojo) se cambia al color azul, para indicar al usuario que puede dejar de

Figura 64 Escritura de múltiples

trazos

Figura 65 Selección de múltiples trazos usando selección por cruce.

Círculo de selección indicado por flecha

Figura 66 Resultado de la selección

de múltiples trazos usando selección por cruce

61

llenar el círculo y que la selección por cruce está lista para comenzar. Luego se espera a que se suelte el lápiz. Cuando se suelta, se verifica que la variable booleana esté fijada en verdadero. Si es así, se procede a determinar si el trazo dibujado cruza algún dibujable. Para lograr esta detección hay dos métodos que verifican cruce con trazos y con dibujables basados puramente en rectángulos respectivamente. Estos dos métodos son heurísticos. Para los dibujables basados puramente en rectángulos, el método verifica que al menos uno de los puntos del gesto esté dentro del rectángulo del dibujable. Si es así, se asume un cruce y el dibujable es seleccionado. Para los trazos el proceso es más largo y complejo. Se toman los dos primeros puntos del gesto y los dos primeros puntos del trazo a verificar y se determina si el rectángulo que contiene a los dos primeros intersecta al rectángulo que contiene a los segundos. Si es así, se pasa a la segunda etapa de la detección, donde se calcula matemáticamente si la recta formada por los dos primeros puntos del gesto intersecta a la recta formada por los dos primeros puntos del trazo a verificar. Si es así, se pasa a la etapa final de verificación. Si se determina que el punto de intersección está contenido dentro de uno o dos de los dos rectángulos anteriormente calculados, se asume un cruce y el trazo respectivo es seleccionado. Esta última condición es necesaria, pues dos rectas no paralelas siempre se cruzan, pero podrían cruzarse en un punto que no perteneciera a ninguno de los dos trazos verificados. Una vez detectado un cruce, se fija una variable que indica que se ha cruzado al menos un dibujable. Luego, cuando todos los dibujables han sido verificados para determinar cruces, se verifica el estado de esta variable. Si es verdadera, el gesto concluye, habiendo seleccionado a todos los dibujables en su camino y se resetean las variables booleanas utilizadas y el lápiz de SmartDraw vuelve a su color rojo normal. Si no se cruzó ningún dibujable, se asume que el gesto fue ejecutado para copiar los dibujables previamente seleccionados. Se copian todos los dibujables sobre la posición del inicio del gesto utilizando las facilidades provistas por SmartDraw para copiar dibujables, incluyendo los dibujables contenidos en PageOwners. Finalmente los dibujables copiados son compartidos con el resto de los participantes utilizando el método RecursiveShare, que comparte los dibujables y los dibujables contenidos por estos dibujables recursivamente. 5.6.5. Selector de color y ancho de línea Para robustecer el soporte al dibujo y escritura en el sistema, se requirió crear un selector de color que permitiera cambiar el color de los nuevos trazos dibujados en el sistema. Para utilizar el selector de color, se debe hacer click sobre el icono del selector, ubicado a la izquierda del borde inferior de la pantalla, identificado como un cuadrado con múltiples cuadrados de color dentro. Al hacerlo, el selector de color aparece (Figuras 67). El selector de color es un rectángulo en el borde inferior de la pantalla que contiene en su lado izquierdo un área con dos filas de rectángulos de colores (16 colores estándares). A la derecha hay un cuadrado subdividido en cuatro cuadrados que contienen una línea de un grosor determinado cada uno.

62

Al hacer click sobre un cuadrado de color, aparece un cuadrado más pequeño centrado dentro de él, lo que indica que dicho color es el color activo (Figura 68). Ahora cualquier trazo nuevo creado será dibujado con el color seleccionado. Para seleccionar un ancho de línea se debe hacer la misma operación, pero sobre uno de los cuadrados que contienen líneas de distintos grosores (Figura 69).

Una vez que se esté satisfecho con el cambio de color y ancho de línea, se presiona nuevamente el botón usado para mostrar el selector, lo que lo oculta. Para implementar esta funcionalidad, se mantienen dos variables estáticas: El botón de selector de colores y el selector mismo. El botón del selector está ubicado en el lado izquierdo del borde inferior de la pantalla. El selector de color está posicionado originalmente al centro de la pantalla, pero SmartDraw lo reposiciona fuera del espacio visible durante su inicialización. El botón del selector responde al evento click llamando a un método estático que reposiciona el selector su posición en el borde inferior de la pantalla. Además, éste gatilla el redibujado del

Figura 67 Selector de color

Figura 68 Seleccionando verde

Figura 69 Seleccionando grosor

número 4

Figura 70 Trazo de prueba

63

selector. El selector está dividido en dos áreas adyacentes horizontalmente, usadas para seleccionar el color y el ancho de la línea respectivamente. El color y ancho actual se almacenan en una variable de instancia del selector. Los colores desplegados por el selector están almacenados en un arreglo estático de dos dimensiones. Estos colores se despliegan de forma que se muestren en dos filas a lo largo del borde inferior. Los anchos de línea también están almacenados en un arreglo de dos dimensiones, representados por enteros. Al hacer click sobre uno de los colores, se determina en qué cuadrado de color cayó el lápiz y se cambia el color actual del selector. El proceso de dibujado y detección para los cuadrados de ancho de línea es el mismo que para los colores. Los dibujables de la clase trazo tienen como variables de instancia tres números enteros que representan la componente R, G y B del color del trazo, y un entero que representa el grueso del trazo. Cuando se crea un nuevo trazo, éste extrae el color y grueso seleccionado del selector de color y fija estas variables de instancia de acuerdo a él. Luego, al dibujarse, el trazo utiliza este color y ancho para dibujar los segmentos de los que está compuesto. De esta forma, cuando se crea un trazo nuevo al dibujarlo en SmartDraw, éste toma el color y ancho actual del selector de color. Estas propiedades no pueden ser cambiadas posteriormente. 5.7. Funciones no utilizadas Para construir el sistema se tuvo que implementar varias tecnologías basadas en SmartDraw, que apuntan a un uso más amplio que un sistema de soporte a decisiones, pero que en particular sirven para este propósito. Por ejemplo, tal es el caso del modo tabla, que permite agregar filas y columnas usando los gestos de filas y columnas, pero que no tienen mucho sentido en un sistema de soporte a decisiones. A continuación se detallan las funciones que fueron implementadas pero no utilizadas para el sistema de soporte a decisiones. 5.7.1. Modo Groan El modo groan es un modo con un subconjunto reducido de las funciones del modo padre, el modo Tabla. En este modo se pueden agregar nuevas filas y columnas a la tabla mostrada. Groan sólo muestra las celdas y permite mezclarlas, pero no permite agregar nuevas celdas. En el modo tabla puro se pueden seleccionar más de una celda y efectuar acciones sobre todas las celdas seleccionadas. Estas acciones son detalladas a continuación. 5.7.1.1. Asociación con modo FODA El modo tabla tiene la capacidad de asociar cada una de sus celdas con el modo FODA, de la misma en que lo hace el modo Convergencia. Para utilizarla, se selecciona una celda (Debe ser

64

sólo una) y se presiona el botón FODA, lo que permite entrar al modo FODA con el dibujable FODA asociado y sus dibujables SubFODA seleccionados. Luego se introducen comentarios en cada una de las celdas del análisis FODA de la misma forma en que se hace en el modo convergencia. La implementación es idéntica a la usada en el modo convergencia. 5.7.1.2. Movimiento/Agrupación de más de una celda En el modo groan es posible mover una celda sobre otra, lo que agrupa sus contenidos en una sola celda. El modo tabla permite ejecutar este gesto en más de una celda. Además, existe otro gesto de ejecución idéntica pero con el efecto de intercambiar las celdas que en el otro gesto se agruparían. Para ejecutar este gesto, se seleccionan las celdas que se desea mover o agrupar con otras celdas y se mueven sobre dichas celdas. El mover más de una celda implica que es posible que algunas celdas se muevan a posiciones inválidas. Estas posiciones pueden ser inexistentes (Fuera de la tabla) o posiciones donde el gesto no está bien definido. Por ejemplo, esto ocurre si se mueven dos celdas de forma tal que la posición final de una es idéntica a la posición inicial de la otra. El gesto de mover/agrupar verifica que las celdas no estén en estos casos. Si se detecta alguno de ellos, el gesto se aborta y queda sin efecto 5.7.1.3. Agregar filas/columnas El modo tabla es capaz de detectar el gesto para agregar filas o columnas sin necesidad de pasar por el modo brainstorming primero. Para utilizar esta característica se parte con el modo tabla en blanco. Luego se traza una línea horizontal (Si se quiere agregar una fila) o vertical (Si se quiere agregar una columna). Si la línea es lo suficientemente recta, el modo tabla crea dos filas o columnas (Dependiendo del gesto) con celdas vacías del mismo tamaño, que entre sí ocupan todo el alto y ancho de la pantalla. Nuevas filas y columnas se pueden agregar ejecutando el mismo gesto sobre la tabla ya existente. Cuando la tabla ya existe antes de crear la nueva fila o columna, las nuevas celdas se agregan a la derecha del borde derecho o abajo del borde inferior, dependiendo si se agregan columnas o filas respectivamente. Al agregar una nueva fila o columna, todas las celdas preexistentes se redimensionan y reposicionan para reflejar las nuevas dimensiones de la tabla, de forma que cada celda tenga el mismo tamaño y que la tabla ocupe todo el ancho y alto de la pantalla. Además de crear nuevas celdas, el dibujable que mantiene la estructura de matriz de la tabla es actualizado para que ahora contenga una matriz de las nuevas dimensiones de la tabla con referencias a las nuevas celdas tanto como a las antiguas. Al agregar una nueva fila o columna, las nuevas celdas y las nuevas dimensiones de las celdas antiguas se transmiten a todos los participantes. El dibujable que mantiene la estructura de matriz de la tabla no se transmite, sino que es recreado por cada participante cuando recibe las nuevas celdas. Si se recibe una celda que cabe en las dimensiones de la tabla actual, ésta es agregada en dicha matriz. Si la nueva celda excede las dimensiones de la matriz actual, se modifica la matriz local de celdas para contener las celdas antiguas y la nueva celda.

65

5.7.1.4. Borrar filas/columnas El modo tabla permite borrar una fila o columna arbitraria. Para ejecutar esta acción, se selecciona una celda que esté en la fila o columna a borrar, con lo que aparecen los botones borrar fila y borrar columna. Si se presiona uno de estos botones se ejecuta la acción seleccionada, borrando la fila o columna de dicha celda. Las celdas son redimensionadas y reposicionadas para reflejar esta acción La matriz que almacena la estructura de la tabla se actualiza al ejecutar estas acciones. Si se borra la última fila o columna de la tabla, el sistema borra la tabla completa, incluyendo la estructura de matriz. Al borrar una fila o columna no se envía el cambio de dimensiones a todos los participantes, sino el comando de borrar una fila, columna o la tabla completa, lo que hace más liviano el proceso para la red. 5.7.1.5. Escritura directa en una celda El modo tabla está diseñado para crear tablas desde cero. Para agregar contenido a una celda que está vacía después de ser creada, se puede entrar a la celda, lo que pone el sistema en el modo de edición para poder escribir nuevos trazos dentro de la celda. Pero si se quiere agregar un trazo rápidamente, éste se puede escribir directamente dentro del modo tabla. Para hacerlo se debe empezar dicho trazo en la celda objetivo. Una vez que el trazo (Que no debe parecerse a los de los gestos de columna y fila nueva) se termina, éste se agrega al final de los dibujables contenidos dentro de la celda objetivo (Aquella celda sobre la que está el primer punto del trazo). 5.7.2. Otras funciones 5.7.2.1. Autoscroll en tiempo real Para visualizar toda la información que el sistema muestra, es necesario utilizar scrolling automático y manual. Una forma de scrolling automático implementada es el scrolling en tiempo real. Esta forma de scroll se efectúa mientras se esta escribiendo en SmartDraw, antes de soltar el lápiz. Cuando se llega a cierto umbral de la coordenada Y en que está escribiendo el lápiz, inmediatamente se hace scroll vertical. El scroll continúa hasta que el usuario deje de mover el lápiz por debajo del umbral de scroll. Esta función no fue utilizada en el programa final debido a que es posible que confunda al usuario mientras escribe.

66

6. Comentarios 6.1. Trabajo futuro El desarrollo del sistema estuvo centrado principalmente en la toma de decisiones, con lo que algunos aspectos técnicos aun requieren afinamiento. Estos temas son la sincronización fina de los dispositivos handheld, el pulido de la interfaz, velocidad de transmisión y manejo de memoria. A continuación se procede a explicar cada uno de estos puntos. 6.1.1. Sincronización entre dispositivos handheld La plataforma SmartDraw no fue diseñada para proveer sincronización entre las acciones de los distintos participantes, sino como un ambiente colaborativo en el que todos pudieran interactuar al mismo tiempo sin preocuparse por cuál de las acciones ocurrió antes o después. Por ejemplo, un usuario puede crear un trazo en su handheld y manipularlo al mismo tiempo que otro participante lo manipula. Si el objeto se mueve erráticamente en una de las handheld realmente no tiene gran incidencia sobre el desarrollo de la sesión. Uno de los dos usuarios simplemente tendrá que aceptar la manipulación del otro o repetir la su acción. Este no es el caso en un sistema de soporte de decisiones. En este caso hay que sincronizar las acciones de todos los participantes, ya que existen varios eventos que requieren que la información en todos los dispositivos se encuentre en el mismo estado para mantener la consistencia de la interfaz. Por ejemplo, un usuario puede estar viendo las ideas de uno de sus compañeros moviendo una de ellas al mismo tiempo que su compañero la está fusionando con otra idea. Este caso produciría resultados impredecibles. Los casos de mayor prioridad son aquellos que ocurren al cambiar de fases. Estos casos requieren que todos los participantes estén de acuerdo para avanzar a la próxima fase. El problema surge cuando dos o más participantes escogen cambiar de fase simultáneamente, ya que es el último de ellos quien gatilla el cambio de fase efectivo. Si el último participante que selecciona cambiar de fase no sabe que es el último, el cambio puede no ocurrir. Otros problemas relacionados con el cambio de fase es que éste implica seleccionar todos los dibujables de un tipo y convertirlos en dibujables de otro tipo. Esto requiere que aquel que gatille el cambio debe tener acceso a todos los dibujables en ese momento. Esto podría no ocurrir debido a que alguien agrega o modifica un dibujable en el último momento. Otros casos importantes están relacionados con los efectos que tienen las acciones de un participante en un modo determinado sobre las de otro participante en un modo diferente. Por ejemplo, si se tienen tres usuarios, cada uno en una fase distinta (Se asume que el grupo ya llegó a la tercera etapa, por lo que pueden pasar de una fase a otra) y uno de ellos agrega una nueva idea en brainstorming, los otros dos usuarios verán cambios significativos sobre sus datos en los otros modos. En particular, en el modo groan podría aparecer una nueva fila en la tabla de ideas, y en el modo convergencia siempre aparecerá un nuevo ítem en la lista. En ambos modos la aparición de una nueva idea conlleva un reajuste del tamaño y posición de todas las ideas (Celdas y dibujables de convergencia). Para corregir estos problemas se requiere implementar un sistema que garantice orden en el envío de los datos. Esto minimizaría los problemas de sincronización si se logra mejorar el siguiente punto, el tiempo de envío de los datos.

67

6.1.2. Velocidad de transmisión La velocidad de transmisión juega un rol importante en lograr la sincronización del envío de datos, pues existen problemas de sincronización que no pueden resolverse simplemente ordenando los mensajes. Estos problemas de sincronización ocurren porque un usuario ejecutó una acción, pero el efecto se vio reflejado en los otros participantes demasiado tarde, lo que llevó a estos participantes a ejecutar acciones inválidas con respecto a la acción que todavía no se recibe. El sistema actual no posee una velocidad de transmisión óptima. Sólo objetos pequeños pueden ser serializados, transmitidos, recibidos y deserializados en un tiempo razonable, lo que es inconveniente, pues casi siempre el uso del sistema implica la transmisión de trazos, que contienen cientos, si no miles de puntos. Esto se debe a que el serializador utilizado es un serializador XML. XML presenta demoras significativas en el proceso de (de)serialización, pero también en el proceso de transmisión de los datos, pues los tags XML consumen gran parte del mensaje enviado. La solución es utilizar un serializador no basado en texto, como ASN.1, que reduciría significativamente el tiempo de transmisión y la carga de la red en general. 6.1.3. Pulido de la interfaz La interfaz de usuario del sistema es minimalista para evitar utilizar demasiado del poco espacio disponible de la pantalla en botones o decoraciones. Esto causa que la interfaz no sea realmente atractiva para el usuario. Se sugiere que en el futuro se analice la posibilidad de agregar sombras, suavizado de bordes y fuentes y esquemas de colores. 6.1.4. Manejo de memoria El sistema, siendo concebido apara plataformas handheld con limitaciones de memoria y capacidad de proceso, debiera poner un gran énfasis en conservar la memoria. En este momento el sistema no descarta dibujables borrados, pues al ser creados son insertados en una tabla de hash que mantiene referencias a todos los dibujables creados en el pasado. Esto efectivamente inhibe la acción del recolector de basura embebido en C#. Este comportamiento se debe en parte a que la plataforma fue pensada para poder recuperar cualquier información borrada accidentalmente, o para poder implementar el comportamiento de cortar/pegar. Trabajos futuros debieran incluir facilidades para determinar cuando un dibujable puede ser seguramente descartado sin generar pérdida de información relevante. 6.1.5. Evaluación de usabilidad Finalmente, sería de gran utilidad una evaluación de usabilidad del sistema, pues ya que el sistema será usado en ambientes educativos, es necesario que su interfaz de usuario no induzca errores o dificulte la toma de decisiones (Recordar que se pretende que los usuarios aprendan a tomar decisiones a partir del proceso mismo).

68

Debido a que la aplicación está orientada a aprendizaje colaborativo, se propone un estudio de usabilidad basado en interacción constructiva (También conocido como “Co-discovery learning”). Si bien este método usa grupos de dos personas, se propone la variante de usar grupos de tres personas, ya que el número óptimo de usuarios de una sesión es tres. Éste método provee los beneficios del método “think-aloud”, sin el problema de que los sujetos pueden sentirse incómodos al tener que hablar solos. Se le pediría a cada grupo que resolviera un mismo problema mientras hablan lo que están pensando (Esto es una consecuencia natural de la toma de decisiones colaborativa) y se les observa y graba silenciosamente. Un ejemplo de problema a resolver puede ser tan arbitrario como “¿Cómo resolver el tema de la congestión vehicular en Santiago eficientemente?”. También se propone la revisión experta en el futuro si se tiene acceso a expertos en el tema de la toma de decisiones colaborativa. Si se tiene acceso a más de uno se puede mejorar esta idea usando evaluación heurística. 6.1.6. Mejora del log El navegar a través de todos los eventos del log probablemente no tiene mucho valor educativo, por lo que se propone (No está implementado en esta memoria) un modo de log mejorado en que se pueda filtrar la información de acuerdo a distintos criterios. Dichos criterios serían: Participante que originó el evento, tipo de evento e idea asociada al evento. Cada uno de los criterios debiera ser posible de seleccionar usando un menú “pop-up” que sólo sea visible cuando se quiera cambiar el filtro. Además, debe ser posible resetear el criterio de filtro para dejar el modo log en el estado sin filtro original. Estas modificaciones apuntan a permitir un entendimiento más completo y expedito del proceso de toma de decisiones por parte de los participantes y el profesor. Usando estas mejoras se puede determinar el desempeño de un alumno en particular, la cantidad de eventos de un tipo determinado que ocurren o las diferentes transformaciones por las que pasa determinada idea. 6.2. Conclusiones El trabajo actual permite concluir que una plataforma orientada a la toma de decisiones colaborativa con interfaz de usuario especializada para sistemas handheld es posible sin perder funcionalidad. La interfaz de usuario está orientada a los gestos de lápiz, lo que permite ahorrar espacio de pantalla, aunque ciertas metáforas pensadas para plataformas de escritorio debieron ser mantenidas para evitar que el sistema hiciera demasiados conflictos con el modelo mental de los usuarios de computadores. Dichas metáforas son, por ejemplo, botones que ofrecen funcionalidad difícil de representar en un gesto de lápiz. Otra conclusión obtenida es que los requerimientos de capacidad de proceso y de memoria del sistema son satisfechos casi plenamente por el hardware de hoy en día. El sistema nunca tuvo problemas de memoria durante las pruebas, pero si sufrió el desempeño del dibujo de trazos cuando existía un proceso parelelo en background, como es el caso de la serialización y deserialización de objetos para su transmisión y recepción a través de la red. Esto se evidencia en

69

que los trazos dibujados por el lápiz pierden la mayor parte de su resolución, transformándose en unas cuantas líneas rectas en el mejor de los casos. Aunque se sospecha que cambiando el tipo de serializador desde XML a ASN.1 o similar, el problema sería minimizado, es probable que sea necesaria una mejora de las capacidades de los dispositivos handheld, especialmente en la capacidad de proceso. Se concluye además que es necesario agregar algoritmos de sincronización si se va a intentar construir un sistema complejo sobre la plataforma smartdraw. Esto debido a que los distintos modos que compone el sistema requieren interacción de distintos usuarios sobre objetos compartidos en las que una pequeña desincronización puede dar un sentido completamente distinto a una acción. Por ejemplo, si un usuario agrupa dos ideas mientras otro está votando, la agrupación podría causar que la idea sobre la cual el segundo estaba votando desapareciera, dándole el voto a otra idea. Finalmente, el sistema de escritura basado en trazos manuscritos es óptimo siempre y cuando se mejore el aspecto de velocidad de transmisión y serialización descrito anteriormente. Si estos problemas se resuelven, el sistema de trazos es capaz de darle al usuario una interfaz compatible con su modelo mental, visible para un tamaño de grupo de trabajo razonable.

70

7. Bibliografía [1] Pucher R, Mense A, Wahl H. How to motivate students in project based learning, IEEE Africon 2002 [2] Kim L, Albers M. Presenting information in the small screen-interface: Effects of table formatting. IEEE Transactions on professional communication, vol. 46, NO. 2, junio 2003 [3] Chen E, Shi Y, Zhang D, Xu G. Intelligent meeting room. Facilitating collaboration for multi-mobile devices on contextual information. The 8th International Conference on Computer Supported Cooperative Work in Design Proceedings, 2004. [4] Olmsted E, Usability Study on the Use of Handheld Devices to Collect Census Data, US. Census Bureau, Statistical Research Division, 2004. [5] Beale R, Supporting Social Interaction with Smart Phones, IEEE CS and IEEE ComSoc, 2005. [6] Bae Y, Lim J, Lee T, Mobile Learning System Using the ARCS Strategies, Proceedings of the Fifth IEEE International Conference on Advanced Learning Technologies (ICALT 2005). [7] Dai G, Wang H, Physical Object Icons Buttons Gesture (PIBG): A New Interaction Paradigm with Pen, Intelligence Engineering Lab,Institute of Software, Chinese Academy of Sciences, 2004 [8] Pervan G, Lewis L, Bajwa D, Adoption and Use of Electronic Meeting Systems in Large Australian and New Zealand Organizations, Group Decision and Negotiation 13: 403–414, 2004 [9] Rubens W, Emans B, Leinonen T, Gomez Skarmeta A, Simons R, Design of web-based collaborative learning environments. Translating the pedagogical learning principles to human computer interface, W. Rubens et al. / Computers & Education 45 (2005) 276–294, 2005. [10] Weinberger A, Fischer F, A framework to analyze argumentative knowledge construction in computer-supported collaborative learning, Computers & Education 46 (2006) 71–95, 2006. [11] Brewster S, Overcoming the Lack of Screen Space on Mobile Computers, Glasgow Interactive Systems Group, www.dcs.gla.ac.uk/~stephen, 2002. [12] Lai C, Chi J, Liang J, Chan T, Mobile learning supported by learning passport, ICALT 2005. [13] Bravo C, Redondo M, Ortega M, Verdejo M, Collaborative environments for the learning of design: a model and a case study in Domotics, Computers & Education 46 (2006) 152–173, 2006. [14] Colella V, Participatory simulations: Building collaborative understanding through immersive dynamic modelling, The journal of the learning science, 9(4),471-500, 2000. [15] Rystedt H, Lindström B, Introducing simulation technologies in nurse education: a nursing practice perspective, Journal of computer assisted learning, 19,260-272, 2001. [16] Mobile HCI Proceedings, 2004. [17] Lahti H, Hakkarainen P, Hakkarainen K, Collaboration patterns in computer supported collaborative designing, Design Studies 25 (2004) 351–371, 2005. [18] McFarlane A, Handheld route to collaboration, The Times Educational Supplement, June 17, 2005 [19] Hong J, Landai J, SATIN: A Toolkit for Informal Ink-based Applications, 2000. [20] Isokoski P, Raisamo R, Quikwriting as a Multi-Device Text Entry Method, Proceedings of NordiCHI 2004, 105-108, ACM Press, 2004 [21] Kostakos, V. and O'Neill, E. (2003) A Directional Stroke Recognition Technique for Mobile Interaction in a Pervasive Computing World, People and Computers XVII, Proceedings of HCI 2003: Designing for Society, Bath, Sept 2003, pp.197-206, 2003.

71

[22] Tyran C, Shepherd M, Collaborativetechnology in the classroom: A review of the GSS research and a research framework. Information technology and management 2, 395-418, 2001. [23] Alavi M, Computer-mediated collaborative learning: An empirical evaluation, MIS Quarterly; Jun 1994; 18, 2; ProQuest Computing, 1994. [24] Ochoa S, Guerrero L, Pino J, Collazos C, Selecting mobile devices to support mobile communication, 2006 [25] Kaner S, Lind L, Toldi C, Fisk S, Berger D, Facilitator’s guide to participatory decision-making, 2005 [26] Segall N, Doolen T, Porter D, A usability comparison of PDA-based quizzes and paper-and-pencil quizzes, Computers & Education 45 417–432, 2005 [27] Churchill D, Hedberg J, Learning object design considerations for small-screen handheld devices, 2006 [28] Simonoski G, Dell P, Helping or hindering: Students' use of collaborative technology in group projects, School of Information Systems 2006 [29] Jipping M, Krikke J, Dieter S, Sandro S, Using handheld computers in the classroom: laboratories and collaboration on handheld machines, ACM 2001 [30] Pinkwart N, Hoppe H, Milrad M, Pérez J, Educational scenarios for cooperative use of Personal Digital Assistants, Journal of Computer Assisted Learning Volume 19 Issue 3 Page 383 - September 2003 [31] Roschelle J, Tatar D, Vahey P, Penuel W, Handhelds Go to School: Lessons Learned, IEEE Computer Society Press 2003 [32] Vahey P, Crawford V, Palm Education Pioneers Program, SRI International 2002 [33] Wilensky U, Stroup W, Participatory Simulations: Network-based Design for Systems Learning in Classrooms, 1999 [34] Truscott M H, Rustogi H, Young C, Enhancing the Macroeconomics Course: An Experimential Learning Approach, 2000 [35] MacKinnon K, Yoon S, Andrews G, Using “Thinking Tags” to Improve Understanding in Science: A Genetics Simulation, 2002 [36] Klopfer E, Yoon S, Rivas L, Comparative analysis of Palm and wearable computers for Participatory Simulations, 2004 [37] Marburger D, Comparing Student Performance Using Cooperative Learning, 2005 [38] Landay J , Myers B, “Sketching interfaces: Toward more human interface design”, IEEE Computer, 2001 34(3), pp. 56-64 [39] Lank E, Phan S, “Focus+Context sketching on a pocket PC”, Proceedings of CHI Extended Abstracts, 2004, pp. 1275-1278 [40] Hinckley K, Baudisch P, Ramos G, Guimbretiere F, “Design and Analysis of Delimiters for Selection-Action Pen Gesture Phrases in Scriboli”, Proceeding of CHI 2005, ACM, 2005, pp. 451-460 [41] Nunamaker, Weatherall, “Getting Results from Electronic Meetings”, St. Richard Press Ltd., 1999 [42] Davis, Zaner, Farnham, Marcjan and McCarthy, “Wireless Brainstorming: Overcoming Status Effects in Small Group Decisions”, Computers in Human Interaction, june 2002 [43] Kerr, Murthy, “Divergent and Convergent Idea Generation in Teams: A Comparison of Computer-Mediated and Face to Face Communication”, Group Decision and Negotiation 13: 381-399, 2004 [44] Bannon L, “Group Decision Support Systems: An Analysis and Critique”, In Proceedings, 5th European Conference on Information Systems , Cork (1997) vol. 1 pp. 526-539, 1997 [45] “Groupsystems”, Group Intelligence and Innovation Technology, http://www.groupsystems.com/

72

[46] Davis, Landay, Chen, Huang, Lee, Li, Lin, Morrey III, Schleimer, Price and Schilit. “NotePals: Lightweight Note Sharing by the Group, for the Group”