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.

Integración Curricular

Resultados de Programa (ABET)

(A) La habilidad para aplicar conocimientos de matemáticas, ciencias e ingeniería.

(B) La habilidad para analizar un problema e identificar los requerimientos necesarios para su definición y solución.

(C) La habilidad para diseñar, implementar y evaluar procesos y sistemas computacionales.

(D) La habilidad para funcionar en equipos de trabajo.

(E) El entendimiento de la responsabilidad profesional y ética.

(F) La habilidad para comunicarse efectivamente.

(G) La habilidad para analizar los impactos de la computación y la ingeniería en las personas, organizaciones y la sociedad.

(H) El reconocimiento de la necesidad de, y la habilidad para, continuar con el desarrollo profesional.

(I) La habilidad para usar las técnicas, destrezas y herramientas modernas para la práctica de la computación.

(J) La habilidad para aplicar los fundamentos y principios de las matemáticas y de la computación en el modelamiento y diseño de sistemas computacionales de manera que se demuestre comprensión de las ventajas y desventajas en las decisiones de diseño.

(K) La habilidad para aplicar los principios de diseño y desarrollo de software en la construcción de sistemas de diferente complejidad.

Relevancia del curso con los resultados de programa

Resultados de Programa
A B C D E F G H I J K
Relevancia 2 3 5 3 3 4 3 4

Escala: (1) baja relevancia - (5) alta relevancia.

Integración de objetivos, contenido y metodología del curso

El curso es presencial y con participación y trabajo en clase. Se asignarán investigaciones, ejercicios y lecturas. Durante la sesión se expondrán los conceptos acompañados de ejemplos, se fomentará la participación de los estudiantes. Se realizará un taller semanal en el que se ponga en práctica algunos conceptos de computación.

Resultados del Programa Indicadores de Desempeño Objetivos/Contenido del Curso Actividades de aprendizaje Instrumentos de medición
(A) Aplicación de Conocimientos (A1) Identificar los fundamentos científicos y los principios de ingeniería que rigen un proceso o sistema. (Conocimiento) (A2) Resolver problemas relacionados con la disciplina y otras áreas por medio de la utilización de conocimientos, modelos y formalismos de las ciencias de la computación, las matemáticas y la ingeniería. (Aplicación) Capítulos 1 y 4 Exposiciones del profesor, solución de ejercicios y lecturas Exámenes
(B) Análisis de problemas y requerimientos (B1) Describir procesos de manera declarativa ignorando los detalles de su implementación. (Comprensión). (B2) Utilizar el lenguaje propio de las matemáticas, la lógica y la ingeniería para especificar requerimientos funcionales y no funcionales de un sistema o proceso. (Aplicación). Capítulos 1, 2 y 3 Exposiciones del profesor, laboratorios y lecturas Talleres
(C) Diseño (C1) Utilizar estándares de codificación en la implementación de componentes de software. (Aplicación). (C2) Identificar componentes, interacciones, relaciones e interfaces entre componentes. (Análisis). (C3) Diseñar procesos y componentes de software haciendo uso de la notación, técnicas y herramientas adecuadas. (Síntesis). Capítulos 3, 4 y 5 Exposiciones del profesor, laboratorios y lecturas Proyectos y tareas
(F) Comunicación efectiva (F1) Producir textos de manera efectiva teniendo en cuenta la estructura, coherencia, flujo, ortografía y correcto uso del lenguaje. (Aplicación). (F2) Comunicarse de manera efectiva de acuerdo al público objetivo haciendo uso correcto del lenguaje, estilo, tiempo y expresión corporal. (Aplicación). (F3) Utilizar recursos gráficos para comunicar y expresar una idea. (Aplicación). (F4) Defender ideas con precisión y claridad. (Evaluación). Capítulos 1, 2 y 3 Proyectos y tareas Presentaciones orales y tareas
(G) Impactos de la computación y la ingeniería (G2) Utilizar los conocimientos para identificar los impactos de las soluciones en ingeniería y computación. (Aplicación). Capítulo 1 Exposiciones del profesor, tareas Exámenes
(I) Uso de herramientas y técnicas (I1) Utilizar herramientas de desarrollo de software. (Aplicación). Capítulos 4 y 5 Proyectos y tareas Proyectos
(J) Modelamiento y diseño de sistemas computacionales (J1) Reconocer la importancia del modelamiento cuando se resuelve un problema. (Compresión). (J2) Relacionar conceptos y principios teóricos para la resolución efectiva de un problema. (Síntesis). Capitulos 2, 4 y 5 Exposiciones del profesor, lecturas Proyectos y tareas
(K) Desarrollo de software (K1) Hacer seguimiento a cronogramas y adaptar los recursos necesarios para cumplir con sus hitos. (Aplicación). (K2) Implementar e integrar componentes de software respetando los criterios de diseño. (Aplicación). (K4) Evaluar y verificar soluciones de software con respecto a las restricciones y requerimientos establecidos. (Aplicación - Evaluación). Capítulo 5 Laboratorios Proyectos

Contribución al Desarrollo de Competencias (CNA)

Resultados de Programa
A B C D E F G H I J K
Ciudadanía U
Comunicación escrita E
Lectura crítica E
Inglés U
Razonamiento cuantitativo E E U U E

E- Se evalúa. U - Se usa

Contribución a los objetivos educacionales

La Carrera de Ingeniería de Sistemas y Computación plantea los siguientes objetivos educacionales, El estudiante graduado de la carrera será capaz de:

  1. Ejercitar la práctica de la Ingeniería de Sistemas y Computación profesionalmente.
  2. Diseñar y operar sistemas de computación que contribuyen a la solución de problemas relacionados a la disciplina, otra área de la ciencia y la ingeniería u otras disciplinas.
  3. Contribuir al bienestar de las comunidades desde posiciones prominentes en la industria, academia, sector público o como un emprendedor.
  4. Ser distinguido por su bases sólidas en computación, su sentido de ciudadanía responsable, su profesionalismo y liderazgo.
  5. Continuar su desarrollo profesional o involucrarse en estudios de posgrado.
Resultados de Programa
A B C D E F G H I J K
Objetivo 1 3 4 5 2 3
Objetivo 2 2 4 5 1
Objetivo 3 2 4 5
Objetivo 4 4 2 1 3
Objetivo 5 4 2 3 1 2 3

Recomendaciones del Director del Programa

Reglas del curso

Calificación y Balance de Evaluación del Curso

Instrumento Porcentaje A B C D E F G H I J K
Parcial 18% 8 % 10%
Proyecto 32% 5% 6% 6% 15%
Tareas 22% 14% 3% 5%
Presentación y discusiones 8% 8%
Talleres 20% 11% 9%

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

 
materias/disenointerfaceshc.txt · Última modificación: 2016/09/04 10:42 por anavarro
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki