Diseño de Interfaces Humano-Computador

Información Básica

  • Créditos: 3
  • Horas de trabajo acompañado: 5 / semana (3 horas clase, 2 horas taller)
  • Horas de trabajo independiente: 4 / semana
  • Pre-requisitos: Programación Orientada a Objetos
  • Tipo de curso: Núcleo de Formación Fundamental.

Descripción del Curso

La interacción humano computador trata del diseño de las interacciones entre las actividades humanas y los sistemas computacionales que las soportan y acerca de la construcción de las interfaces que permiten esta interacción. Este curso explora las distintas tendencias y técnicas para el diseño de interfaces centradas en los usuarios. Se centra en la identificación de requerimientos, prototipado, implementación y validación de interfaces. Se enfatiza en los principios de diseño de interfaces gráficas, pero se considera el contexto de las interfaces en general. Además, se tratan temas relacionados con la seguridad brindada por la interfaz.

Objetivos

Al finalizar el curso los participantes podrán:

  1. Conocer los conceptos fundamentales de las interfaces humano-computador
    1. Explicar en términos generales como las señales análogas pueden ser representadas razonablemente por muestras discretas, por ejemplo, la manera en que las imágenes son representadas por pixeles
    2. Discutir por qué el desarrollo de software centrado en el humano es importante
    3. Desarrollar y usar un vocabulario conceptual para analizar la interacción humana con el software: Affordance, modelo conceptual, retroalimentación, etc.
    4. Resumir los preceptos básicos de la interacción psicológica y social involucradas en las interfaces humano-computador
    5. Definir un proceso de diseño centrado en el usuario que tiene en cuenta explícitamente el hecho de que el usuario no es como el desarrollador o sus conocidos.
    6. Realizar y documentar un análisis de necesidades para un grupo de usuarios previamente identificados
  2. Utilizar técnicas de diseño, desarrollo y evaluación de interfaces de usuario
    1. Crear una aplicación sencilla, con una interfaz gráfica de usuario que provee elementos de ayuda y documentación
    2. Utilizar técnicas de prototipado lo-fi (low-fidelity) para recopilar y generar reportes de las respuestas de los usuarios
    3. Realizar evaluaciones cuantitativas y discutir/informar sobre los resultados
    4. Reconocer estándares de diseño de interfaces de usuario
  3. Aplicar las técnicas de diseño de interfaces a la solución de problemas que involucran el desarrollo de software
    1. Explicar la importancia del Patrón MVC en la programación de interfaces de usuario
    2. Explicar y utilizar los conceptos de programación de Interfaces Gráficas de Usuario: manejo de eventos, gestión de diseño basado en restricciones
    3. Crear una aplicación con una interfaz gráfica de usuario moderna
    4. Identificar similitudes y diferencias entre las interfaces de usuario de diferentes plataformas (web, móviles, industriales, etc.)
    5. Explicar cómo el diseño centrado en el usuario complementa otros modelos de procesos de software
    6. Elegir los métodos apropiados para apoyar el desarrollo de una interfaz de usuario específica
  4. Desarrollar aplicaciones especializadas en alguna plataforma específica teniendo en cuenta las fortalezas y limitaciones que éstas proveen.
    1. Ítem de lista desordenadaDescribir cómo el desarrollo basado en la plataformas difiere de la programación de propósito general
    2. Reconocer las características especiales de los lenguajes de plataforma
    3. Identificar las ventajas y desventajas de las limitaciones de programación basada en plataformas
    4. Diseñar e implementar una aplicación web sencilla.
    5. Identificar las limitaciones que implican desarrollar aplicaciones web para los desarrolladores
    6. Diseñar e implementar una aplicación para una determinada plataforma móvil
    7. Analizar los sacrificios entre rendimiento/potencia de las plataformas móviles
    8. Identificar las limitaciones que implican desarrollar aplicaciones móviles para los desarrolladores
    9. Diseñar e implementar una aplicación para una determinada plataforma industrial
    10. Identificar las diferencias entre los lenguajes de dominio vs los lenguajes de programación de propósito general.
    11. Describir las limitaciones que implican desarrollar aplicaciones para plataformas industriales
  5. Utilizar las mejores prácticas de ingeniería del software para el desarrollo de interfaces humano-computador
    1. Describir cómo el software puede interactuar con y participar en, varios sistemas, incluyendo la gestión de la información, sistemas embebidos, control de procesos y sistemas de comunicaciones.
    2. Explicar cómo la programación en grandes grupos de desarrollo difiere de la programación individual con respecto a la comprensión de un código base grande, legibilidad del código, la comprensión de los despliegues y la identificación del contexto de los cambios
    3. Listar los componentes clave de un modelo de datos
    4. Identificar uno o más patrones de diseño que serían aplicables al desarrollo de un sistema de software simple.
    5. Identificar las diferentes técnicas de programación, idioms y mecanismos para la implementación de diseños para conseguir las propiedades deseadas de un sistema, tales como la confiabilidad, la eficiencia y la robustez.
    6. Generar código robusto utilizando mecanismos para el manejo de excepciones

Se desarrollan competencias en

  • Identificar por qué el desarrollo de software centrado en el usuario es importante.
  • Desarrollar la capacidad de analizar y desarrollar la interacciones humanas con sistemas de software
  • Crear y conducir pruebas de usabilidad.
  • Crear aplicaciones con interfaces gráficas de usuario modernas.
  • Comparar métodos de evaluación de interfaces.
  • Construir prototipos de interfaces.
  • Analizar cómo incluir y cómo los aspectos de seguridad influyen en los factores humanos de una interfaz.

Contenido

Capítulo 1: Conceptos Básicos de las Interfaces Humano-Computador

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad
1 3 Digitalización de datos análogos, resolución y los límites de la percepción humana. Ej.: pixeles en pantallas, puntos por pulgada en impresoras laser y muestras por segundo en sistemas de audio. Uso
Contextualización acerca de la interfaces Humano-Computador Ej.: paginas web, aplicaciones empresariales, aplicaciones móviles, videojuegos, etc. Familiaridad
2 2 Procesos para el desarrollo de software enfocados hacia el usuario. Ej.: Enfoque temprano en usuarios, pruebas empíricas, diseño iterativo Uso
Medidas de evaluación. Ej.: Utilidad, eficiencia, facilidad de aprendizaje, satisfacción del usuario. Uso
Heurísticas de usabilidad y los principios de las pruebas de usabilidad Evaluación
3 3 Capacidades físicas que componen el diseño de interacción. Ej.: Percepción del color, ergonomía Familiaridad
Modelos cognitivos que componen el diseño de interacción. Ej.: la atención, la percepción y el reconocimiento, el movimiento y la memoria, diferencias entre la expectativa y la ejecución Familiaridad
Modelos sociales que componen el diseño de interacción. Ej.: la cultura, la comunicación, redes y organizaciones de personas Familiaridad
4 2 Principios del buen diseño y de los buenos diseñadores; sacrificios de la ingeniería Uso
Accesibilidad. Ej.: Interfaces para poblaciones con capacidades diferentes (ciegos, personas con movilidad reducida, etc.) Uso
Interfaces para grupos poblacionales de diferentes edades Ej.: niños, ancianos, etc. Evaluación

Total de Horas: 10.

Capítulo 2: Análisis y Diseño de Interfaces de Usuario

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad
5 3 Principios de interfaces graficas de usuario (GUIs) Uso
Elementos del diseño visual (diseño, color, fuentes, etiquetado) Uso
Análisis de tareas, incluyendo los aspectos cualitativos de la generación de modelos de análisis de tareas Familiaridad
6 2 Prototipado de baja fidelidad (paper) Uso
Técnicas de evaluación cuantitativas Ej.: Evaluación del nivel de pulsaciones de teclas Familiaridad
7 3 Documentación y Ayudas Uso
Manejo de fallas humanas o fallas del sistema Uso
Estándares de interfaces de usuario Familiaridad

Total de Horas: 8.

Capítulo 3: Programación de Sistemas Interactivos

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad
8 2 Patrones arquitecturales de software. Ej.: MVC, Objetos de comando, programación orientada a eventos, programación reactiva, como es usado el patrón MVC en el contexto de la programación orientada eventos. Uso
Patrones del diseño de interacción: jerarquía visual, distancia de navegación Familiaridad
9 3 Escogencia de estilos y técnicas de interacción Familiaridad
Presentación de la información: navegación, representación, manipulación Familiaridad
10-11 3 2 Librerías modernas de GUI (Ej.: iOS, Android, JavaFX), GUI builders y ambientes de programación de UI (Desarrollo basado en plataformas/Plataformas móviles) Uso
12 2 Especificaciones declarativas de interfaces: Hojas de estilos y DOMs Uso
Aplicaciones basadas en datos (paginas web en bases de datos) Familiaridad
13 3 Diseño multi-plataforma Familiaridad
Diseño para dispositivos de recursos limitados. Ej.: dispositivos móviles Familiaridad
Proceso de diseño: Enfoques y características Familiaridad
14 2 Técnicas para recolectar requerimientos. Ej.: Entrevistas, encuestas, investigaciones contextuales y etnográficas Evaluación
Técnicas y herramientas para el análisis y la presentación de los requerimientos. Ej.: reportes Evaluación
15 3 Internacionalización, diseño para usuarios de otras culturas Evaluación
Representación de la información para los usuarios: navegación, representación, manipulación Familiaridad

Total de Horas: 20.

Capítulo 4: Desarrollo Basado en Plataformas

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad
16 2 Visión general de las plataformas. Ej.: plataformas móviles, de videojuegos, web, industriales Familiaridad
Programando utilizando APIs especificas de cada plataforma Uso
17 3 Visión general de lenguajes de plataforma. Ej.: Objective-C, HTML5, Java Familiaridad
Programando bajo las limitaciones de cada plataforma Familiaridad
18 2 Lenguajes de programación web. Ej.: HTML5, JavaScript, PHP, CSS Evaluación
19 3 Limitaciones de las plataformas web Familiaridad
20 2 Estándares web Familiaridad
21 3 Lenguajes de programación para móviles Evaluación
22 2 Retos con la movilidad y la comunicación inalámbrica Uso
Aplicaciones basadas en la ubicación Uso
23 3 Compensaciones entre rendimiento/potencia Familiaridad
Limitaciones de las plataformas móviles Familiaridad
Tecnologías emergentes Familiaridad
24 2 Tipos de plataformas industriales Ej.: Matemáticas, Robóticas, Control de Industrias Uso
Software robótico y su arquitectura Familiaridad
25 3 Lenguajes específicos de dominio Evaluación
Limitaciones de las plataformas industriales Familiaridad

Total de Horas: 25 .

Capítulo 5: Técnicas de Ingeniería del Software

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad
26 3 Consideraciones a nivel de sistemas. Ej.: La interacción del software con su entorno previsto Familiaridad
Programación utilizando grandes grupos de gente vs programación individual Familiaridad
27-30 3 6 Descripción de los datos del sistema utilizando, por ejemplo, diagramas de clases y diagramas entidad-relación Familiaridad
Patrones de diseño Evaluación
31-32 3 2 Buenas practicas de programación: técnicas, idioms/patrones, mecanismos para construir programas de calidad (Programación defensiva, métodos de desarrollo): Practicas defensivas de codificación; Practicas de seguridad en la codificación; Uso de mecanismos para el manejo de excepciones con el fin de hacer los programas mas robustos y tolerantes a fallas Uso
Problemas potenciales de seguridad en los programas: Buffer y otros tipos de desbordamientos; Race conditions; Inicializaciones incorrectas, incluyendo la elección de privilegios; Verificación de entradas; Suponer el éxito y la correctitud; Validar suposiciones Uso

Total de Horas: 17.

Uso de material en exámenes

Asistencia

Bibliografía

  1. Buschmann, F., Henney, K., & Schmidt, D. C. (2007). Pattern-oriented software architecture, on patterns and pattern languages (Vol. 5). John wiley & sons.
  2. Dix, A. (2009). Human-Computer Interaction. En L. LIU & M. T. ÖZSU (Eds.), Encyclopedia of Database Systems (pp. 1327-1331). Boston, MA: Springer US.
  3. Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software (Adobe Reader). Pearson Education.
  4. Gothelf, J., & Manzano, J. L. (2014). Lean UX : cómo aplicar los principios Lean a la mejora de la experiencia de usuario. Universidad Internacional de La Rioja S.A.
  5. Harris, P. (2008). Designing And Reporting Experiments In Psychology. McGraw-Hill Education.
  6. Hartson, H. R., & Pyla, P. S. (2012). The UX Book: Process and Guidelines for Ensuring a Quality User Experience. Elsevier.
  7. Helander, M. G. (2014). Handbook of Human-Computer Interaction. Elsevier Science.
  8. Jakob, I. N. (1995). 10 Usability Heuristics for User Interface Design.
  9. Lazar, J., Feng, J. H., & Hochheiser, H. (2010). Research Methods in Human-Computer Interaction. John Wiley & Sons.
  10. Marcus, A. (2015). HCI and User-Experience Design: Fast-Forward to the Past, Present, and Future. Springer London.
  11. Neil, T. (2012). Mobile Design Pattern Gallery: UI Patterns for Mobile Applications. O’Reilly Media, Incorporated.
  12. Nielsen, J. (1994). Usability Engineering. Morgan Kaufmann.
  13. Preece, J., Rogers, Y., & Sharp, H. (2015). Interaction Design: Beyond Human-Computer Interaction. Wiley.
  14. Pressman, R., & Lowe, D. (2008). Web Engineering: A Practitioner’s Approach. McGraw-Hill Education.
  15. Pressman, R. S. (2005). Software Engineering: A Practitioner’s Approach. Boston.
  16. Rubin, J., Chisnell, D., & Spool, J. (2011). Handbook of Usability Testing: How to Plan, Design, and Conduct Effective Tests. Wiley.
  17. Saleh, K. A. (2009). Software Engineering. J. Ross Pub.
  18. Tidwell, J. (2010). Designing Interfaces. O’Reilly Media.
  19. Vora, P. (2009). Web Application Design Patterns. Elsevier Science.
  20. Walker, M., Takayama, L., & Landay, J. A. (2002). High-fidelity or low-fidelity, paper or computer? Choosing attributes when testing web prototypes (Vol. 46, pp. 661-665). Presentado en Proceedings of the human factors and ergonomics society annual meeting, SAGE Publications.

Instalaciones

Salón de clase con computador y proyector. Laboratorio de Ingeniería de Sistemas y Computación.

Material de este semestre