jueves, 21 de mayo de 2020

Ayudas y accesibilidad en la IHM

Tratar con la ayuda y accesibilidad en la interacción hombre-computador implica más que brindar soporte y apoyo a personas con cierta discapacidad para el uso de los sistemas computacionales. Este implica facilitar el uso de estos sistemas a todos los usuarios.

Para ello, una guía que se puede seguir es la de los principios del diseño universal de Ron Mace (Centro para el diseño universal, Universidad Estatal de Carolina del Norte):

Principio Descripción
Uso equitativo El diseño es útil y comercializable para personas con habilidades diversas
Flexibilidad de uso El diseño se adapta a una amplia gama de individuos, preferencias y habilidades.
Uso simple e intuitivo El uso del diseño es fácil de entender, independientemente de la experiencia, el conocimiento, las habilidades lingüísticas del usuario o nivel de concentración actual.
Información perceptible El diseño comunica la información necesaria efectivamente para el usuario, independientemente del ambiente condiciones o habilidades sensoriales del usuario.
Tolerancia al error El diseño minimiza los riesgos y los efectos adversos, consecuencias de acciones accidentales o no intencionadas.
Bajo esfuerzo físico. El diseño se puede utilizar de manera eficiente y cómoda con un mínimo de fatiga
Tamaño y espacio de aproximación y uso. Se proporciona el tamaño y el espacio adecuados para el acercamiento, el alcance, la manipulación y el uso, independientemente del tamaño del cuerpo, la postura o la movilidad del usuario.


En lo concerniente a las páginas web, la W3C propone una serie de guías y principios mediante la publicación de diversas de estas como la Web Content Accessibility Guidelines (WCAG) 2.1 que en forma resumida da estos 4 principios con sus respectivas pautas:
  • Principio 1: Perceptible
    • Proporcione alternativas de texto para contenido que no sea de texto.
    • Proporcione subtítulos y otras alternativas para multimedia.
    • Cree contenido que se pueda presentar de diferentes maneras, incluso mediante tecnologías de asistencia, sin perder el significado.
    • Facilite a los usuarios ver y escuchar contenido.
  • Principio 2: Operable
    • Haga que toda la funcionalidad esté disponible desde un teclado.
    • Dé a los usuarios suficiente tiempo para leer y usar contenido.
    • No use contenido que cause convulsiones o reacciones físicas.
    • Ayuda a los usuarios a navegar y encontrar contenido.
    • Facilite el uso de entradas que no sean el teclado.
  • Principio 3: Comprensible
    • Haga que el texto sea legible y comprensible.
    • Hacer que el contenido aparezca y funcione de manera predecible.
    • Ayuda a los usuarios a evitar y corregir errores.
  • Principio 4: Robusto
    • Maximice la compatibilidad con las herramientas de usuario actuales y futuras.


Las pautas que indican estos principios no garantizan una navegación o interacción eficiente entre los usuarios y los sistemas, pues recordemos que el usuario no debe ser tratado como un experto o parte del equipo de desarrollo y en casos particulares ser un problema medular en el uso del sistema. Por ello, se debe realizar pruebas en estos usuarios si fuese posible para mitigar estos problemas.



Fuentes:

  • Dix, A., Finlay, J., Abowd, G. y Beale, R. (2004). Human–Computer Interaction (3a ed.). England: Pearson Education.
  • World Wide Web Consortium [W3C]. (2008). WCAG 2.1 at a Glance. Recuperado de: https://www.w3.org/WAI/standards-guidelines/wcag/glance/ 
  • Stone, D., Jarret, C., Woodroffe, M. y Minocha, S. (2005). User Interface Design and Evaluation. United States of America: Elsevier.



sábado, 16 de mayo de 2020

Parte humana de la Interacción

Los humanos tienen una capacidad limitada para procesar información. Esto tiene implicaciones importantes para el diseño.

Se recibe información y se dan respuestas a través de una serie de canales de entrada y salida:
  • canal visual
  • canal auditivo
  • canal háptico
  • movimiento.



La información se almacena en la memoria:
  • memoria sensorial
  • memoria a corto plazo (de trabajo)
  • memoria a largo plazo.



La información se procesa y aplica:
  • razonamiento
  • resolución de problemas
  • adquisición de habilidades
  • error


La emoción influye en las capacidades humanas.

Los usuarios comparten capacidades comunes pero son individuos con diferencias, que no deben ignorarse.

La interacción de una persona con el mundo exterior se produce a través de la información que se recibe y se envía: entrada y salida. En una interacción con una computadora, el usuario recibe información emitida por la computadora y responde proporcionando información a la computadora: la salida del usuario se convierte en la entrada de la computadora y viceversa. En consecuencia, el uso de los términos entrada y salida puede generar confusión, por lo que borraremos un poco la distinción y nos concentraremos en los canales involucrados.

Este desenfoque es apropiado ya que, aunque un canal en particular puede tener un rol principal como entrada o salida en la interacción, es más que probable que también se use en el otro rol. Por ejemplo, la vista se puede usar principalmente para recibir información de la computadora, pero también se puede usar para proporcionar información a la computadora, por ejemplo, fijándose en un punto de pantalla particular cuando se usa un sistema de observación visual.

Visión

La visión humana es una actividad altamente compleja con un rango de limitaciones físicas y perceptivas, sin embargo, es la fuente principal de información para la persona promedio.
Podemos dividir aproximadamente la percepción visual en dos etapas: la recepción física del estímulo del mundo exterior y el procesamiento e interpretación de ese estímulo. Por un lado, las propiedades físicas del ojo y del sistema visual significan que hay ciertas cosas que el ser humano no puede ver; Por otro lado, las capacidades interpretativas del procesamiento visual permiten construir imágenes a partir de información incompleta.

Necesitamos entender ambas etapas ya que ambas influyen en lo que puede y no puede ser percibido visualmente por un ser humano, lo que a su vez afecta directamente la forma en que diseñamos los sistemas informáticos. Comenzaremos mirando el ojo como un receptor físico y luego consideraremos el procesamiento involucrado en la visión básica.

Las capacidades y limitaciones del procesamiento visual.

Al considerar la forma en que percibimos las imágenes, ya hemos encontrado algunas de las capacidades y limitaciones del sistema de procesamiento visual humano. Sin embargo, nos hemos concentrado principalmente en la percepción de bajo nivel.

El procesamiento visual implica la transformación e interpretación de una imagen completa, a partir de la luz que se arroja a la retina. Además, nuestras expectativas afectan la forma en que se percibe una imagen. Por ejemplo, si sabemos que un objeto es de un tamaño particular, lo percibiremos como ese tamaño sin importar cuán lejos esté de nosotros.

El procesamiento visual compensa el movimiento de la imagen en la retina que ocurre cuando nos movemos y el objeto que vemos se mueve. Aunque la imagen retiniana se está moviendo, la imagen que percibimos es estable. Del mismo modo, el color y el brillo de los objetos se perciben como constantes, a pesar de los cambios en la luminancia.

El oído humano

Así como la visión comienza con la luz, el oído comienza con las vibraciones en el aire o las ondas sonoras. El oído recibe estas vibraciones y las transmite, a través de varias etapas, a los nervios auditivos. El oído comprende tres secciones, comúnmente conocidas como oído externo, oído medio y oído interno.

Procesamiento de sonido

Como hemos visto, el sonido son cambios o vibraciones en la presión del aire. Tiene una serie de características que podemos diferenciar. Pitch es la frecuencia del sonido. Una frecuencia baja produce un tono bajo, una frecuencia alta, un tono alto. El volumen es proporcional a la amplitud del sonido; La frecuencia permanece constante. El timbre se relaciona con el tipo de sonido: los sonidos pueden tener el mismo tono y sonoridad, pero están hechos por diferentes instrumentos y, por lo tanto, varían en el timbre. También podemos identificar la ubicación de un sonido, ya que los dos oídos reciben sonidos ligeramente diferentes, debido a la diferencia de tiempo entre el sonido que llega a los dos oídos y la reducción en la intensidad causada por las ondas de sonido que se reflejan desde la cabeza.

El oído humano puede escuchar frecuencias de aproximadamente 20 Hz a 15 kHz. Puede distinguir cambios de frecuencia de menos de 1.5 Hz a bajas frecuencias, pero es menos preciso a altas frecuencias. Las diferentes frecuencias desencadenan actividad en las neuronas en diferentes partes del sistema auditivo y causan diferentes tasas de activación de los impulsos nerviosos.

Tacto

El tercero y último de los sentidos que consideraremos es el tacto o la percepción háptica. Aunque este sentido a menudo se considera menos importante que la vista o el oído, imagine la vida sin él. Touch nos proporciona información vital sobre nuestro entorno.

Nos indica cuándo tocamos algo caliente o frío y, por lo tanto, puede actuar como una advertencia. También nos proporciona retroalimentación cuando intentamos levantar un objeto, por ejemplo. Considere el acto de recoger un vaso de agua. Si solo pudiéramos ver el vidrio y no sentir cuando nuestra mano hizo contacto con él o sentir su forma, la velocidad y la precisión de la acción se reducirían. Esta es la experiencia de los usuarios de cierta realidad virtual.

juegos: pueden ver los objetos generados por computadora que necesitan manipular pero no tienen la sensación física de tocarlos. ¡Mirar a estos usuarios puede ser una experiencia informativa y divertida! Por lo tanto, el tacto es un medio importante de retroalimentación, y esto no es menos en el uso de sistemas informáticos. Sentir que se presionan los botones es una parte importante de la tarea de presionar el botón. Además, debemos ser conscientes de que, aunque para la persona promedio, la percepción háptica es una fuente secundaria de información, para aquellos cuyos otros sentidos están alterados, puede ser de vital importancia. Para dichos usuarios, las interfaces como el braille pueden ser la principal fuente de información en la interacción. Por lo tanto, no debemos subestimar la importancia del tacto.




Fuentes:

  • Dix, A., Finlay, J., Abowd, G. y Beale, R. (2004). Human–Computer Interaction (3a ed.). England: Pearson Education.
  • Stone, D., Jarret, C., Woodroffe, M. y Minocha, S. (2005). User Interface Design and Evaluation. United States of America: Elsevier.


sábado, 9 de mayo de 2020

Prototipos

La palabra prototipo se define como: "Primer ejemplar que se fabrica de una figura, un invento u otra cosa, y que sirve de modelo para fabricar otras iguales, o molde original con el que se fabrica."

Dentro de la ingeniería de Software y el desarrollo de este, se entiende a un prototipo como un modelo del comportamiento del sistema. Este modelo puede ser empleado para comprender el sistema completo o algunos de sus aspectos para refinar los requisitos.

Dentro de la IHC un prototipo es una representación de un sistema, aunque no es un sistema completo, posee las características del sistema final o parte de ellas. Por ello, se dice que es un diseño experimental, generalmente incompleto, que puede usarse de dos maneras según la etapa de diseño en que se lleva a cabo.
  • Al principio del proceso de diseño, se puede utilizar para comunicar y compartir ideas entre el diseñador de la interfaz de usuario y los usuarios y las partes interesadas, de modo que se puedan aclarar los requisitos.
  • Más adelante en el proceso de diseño, puede usarse para explorar y demostrar la interacción y la coherencia del diseño.

Propósitos de los prototipos

  • Comprobar la viabilidad de las ideas con los usuarios.
  • Comprobar la utilidad de la aplicación.
  • Permitir a los usuarios contribuir al diseño de la aplicación.
  • Permitir a los usuarios probar ideas
  • Validar los requisitos (es decir, revelar requisitos inconsistentes o incompletos)
  • Para negociar requisitos


Prototipo de baja fidelidad
Prototipo de alta fidelidad
Los prototipos de baja fidelidad generalmente se basan en papel e incluyen bocetos, maquetas de pantallas y guiones gráficos. Se pueden crear a mano, pero también se pueden crear usando un paquete de dibujo como Paint o PowerPoint y luego se imprimen para probar con los usuarios.

Los prototipos de baja fidelidad son útiles en la fase de recopilación de requisitos del diseño de la interfaz de usuario. Se pueden utilizar como medio de comunicación entre usted y los usuarios y las partes interesadas. Los prototipos de baja fidelidad también ayudan a los usuarios y partes interesadas a articular lo que quieren y necesitan de un sistema, ya que les resultará más fácil hablar sobre algo visual y concreto en lugar de ideas conceptuales (o mentales abstractas), que pueden ser más difíciles de compartir .

Los prototipos de baja fidelidad se pueden usar para ilustrar ideas de diseño, diseños de pantalla y alternativas de diseño. Si bien pueden dar a los usuarios una indicación de la apariencia de la interfaz de usuario, solo proporcionan detalles limitados sobre cómo funcionará la interfaz de usuario o cómo se pueden realizar las tareas.
Los prototipos de alta fidelidad, que se basan en software, proporcionan una versión funcional del sistema con la que los usuarios pueden interactuar. El usuario puede experimentar la apariencia del sistema final. Se pueden realizar pruebas de usabilidad.

En esencia, un prototipo de alta fidelidad se ve y se comporta como si fuera el producto final y puede usarse como una herramienta para comercializar el producto final. Anteriormente, la construcción de prototipos de alta fidelidad era costosa y lenta; Sin embargo, esto ya no es el caso. Las aplicaciones de software como Microsoft PowerPoint y lenguajes como Visual Basic y HTML han facilitado la producción de prototipos de alta fidelidad de forma económica y rápida.

Si es factible, la creación de prototipos de alta fidelidad puede cumplir un papel importante en la prueba de diseños con usuarios y en la validación de requisitos.


Los prototipos en papel son rápidos y económicos, y pueden proporcionar información valiosa. Pero no demuestran funcionalidad. Para esto, debemos recurrir a la creación de prototipos de alta fidelidad.

Asegurar que un sistema propuesto tenga la funcionalidad necesaria para las tareas que los usuarios desean realizar es una parte importante de la recopilación de requisitos y el análisis de tareas.

Las métricas de usabilidad también se pueden probar con un prototipo funcional.




Fuentes:

  • Dix, A., Finlay, J., Abowd, G. y Beale, R. (2004). Human–Computer Interaction (3a ed.). England: Pearson Education.
  • Stone, D., Jarret, C., Woodroffe, M. y Minocha, S. (2005). User Interface Design and Evaluation. United States of America: Elsevier.


Diseño de la interacción y de Software

En la construcción de Software, uno de los principales procesos que encontramos son: el análisis y diseño del software. Donde a grandes rasgos la función del análisis es la de dar soporte al desarrollo de un producto de software.


Diseño de software

Esta fase o parte del ciclo de desarrollo de Software que aparece prácticamente en todas las metodologías de desarrollo tiene como propósito el de especificar la estructura interna y los detalles de procesamiento de un sistema. Además, se encarga de proporcionar un estudio sobre porque son tomadas las decisiones en el diseño.

El objetivo de los diseñadores de software es el de producir un modelo o la representación de una entidad que se codificará posteriormente en las fases subsiguientes.


La interacción

Dentro de la IHC, el tema sobre el cuál gira todo es ​​en cómo el usuario humano usa a la computadora como si esta fuese una herramienta para llevar a cabo determinadas tareas, optimizarlas o como un soporte a estas. Para hacer posible que esto suceda, el usuario debe comunicar sus requisitos a la computadora de diversas formas que pueden incluir mucha o poca interacción. Por ello, resulta importante definir a la interacción en este contexto.

Se define así a la interacción en la IHC como la comunicación entre los usuarios y la computadora y/o sus programas.




Diseño de la interacción

El diseño de interacción consiste en crear intervenciones en situaciones a menudo complejas utilizando tecnología de muchos tipos, incluido el software para PC, la web y dispositivos físicos.

Para poder realizar un diseño de interfaz de usuario es de vital importancia entender como los usuarios interactúan con los sistemas computacionales. Por ello, es imperativo entender el "Ciclo de acción humana" y sus detalles.


Ciclo de acción humana
El flujo de las actividades en el ciclo de acción humana se ilustra en
  • Determina un objetivo.
  • Crea y ejecuta acciones para alcanzar dicho objetivo.
  • Percibe e interpreta el resultado de ejecutar acciones para ver si el objetivo se logrará como se esperaba.
  • Reconoce que si el objetivo no se puede lograr, es posible que deba reformularse y que se repita el ciclo para alcanzarlo.
El ciclo de acción humano involucra actividades cognitivas y físicas.


Es importante así, examinar primero los objetivos del usuario, y que la interfaz sea de utilidad para que alcance esos objetivos y pueda validarlos.


El proceso de diseño de la interacción
Similar al ciclo de desarrollo de Sofwtare se resume en algunas fases que son:


  • Requisitos: La pregunta principal aquí es: ¿Qué se quiere? La primera etapa es establecer qué se necesita exactamente.
  • Análisis: Luego de llevar a cabo una observación y entrevistas, sus resultados deben ordenarse de alguna manera para resaltar los problemas clave y comunicarse con las etapas posteriores del diseño.
  • Diseño: es una etapa central donde se busca pasar de lo que se quiere a cómo hacerlo posible. Para ello, existen una gran cantidad de reglas, estándares, métodos, etc. que se deben adaptar de acuerdo con el tipo de usuario.
  • Iteración y creación de prototipos. En esta fase debemos comprender que los humanos son complejos y no podemos esperar obtener diseños correctos la primera vez. Por lo tanto, necesitamos evaluar un diseño para ver qué tan bien está funcionando y dónde puede haber mejoras.
  • Implementación y despliegue: Una vez alcanzado un diseño favorable a nuestros objetivos, necesitamos crearlo e implementarlo. Esto implicará escribir código, tal vez hacer Hardware, escribir documentación y manuales, todo lo que entra en un sistema real que se puede dar a otros.


Fuentes:

  • Dix, A., Finlay, J., Abowd, G. y Beale, R. (2004). Human–Computer Interaction (3a ed.). England: Pearson Education.
  • Stone, D., Jarret, C., Woodroffe, M. y Minocha, S. (2005). User Interface Design and Evaluation. United States of America: Elsevier.


Usabilidad del Software

Para que un sistema interactivo cumpla sus objetivos tiene que ser usable y accesible a la mayor parte de la población humana

La Norma ISO 9241 que se encuentra enfocada a la calidad en usabilidad y ergonomía tanto de hardware como de software, define a la usabilidad como: "the extent to which a product can be used by specified users to achieve specified goals with effectiveness, efficiency and satisfaction in a specified context of use."

Lo que nos indica que la usabilidad es el grado en que un producto puede ser utilizado por usuarios específicos para lograr determinados objetivos específicos cumpliendo con:

  • Efectividad
  • Eficiencia
  • Satisfacción 
Todo esto realizado dentro de un contexto de uso específico de dicho Hardware o Software.

Calidad de Software y la usabilidad

El estandar ISO/IEC 9126 menciona a la usabilidad como la capacidad de un software de ser comprendido, aprendido, usado y ser atractivo para el usuario, en condiciones específicas de uso. Posteriormente, este fue reemplazado en el 2005 por el estándar ISO/IEC 25000 SQuaRE (System and Software Quality Requirements and Evaluation) que es una familia de normas que tiene por objetivo la creación de un marco de trabajo común para evaluar la calidad del producto software y actualmente tienen una acepción de usabilidad en el contexto de la creación de Software idéntica a la del ISO 9241 indicando características de esta que son:

  • Reconocibilidad de adecuación: grado en que los usuarios pueden reconocer si un producto o sistema es apropiado para sus necesidades.
  • Capacidad de aprendizaje: grado en que usuarios específicos pueden usar un producto o sistema para lograr los objetivos específicos de aprender a usar el producto o sistema con efectividad, eficiencia, libertad de riesgos y satisfacción en un contexto de uso específico.
  • Operabilidad: grado en que un producto o sistema tiene atributos que facilitan su operación y control.
  • Protección contra errores del usuario: grado en que un sistema protege a los usuarios contra errores.
  • Estética de la interfaz de usuario: grado en que una interfaz de usuario permite una interacción agradable y satisfactoria para el usuario.
  • Accesibilidad: grado en que un producto o sistema puede ser utilizado por personas con la más amplia gama de características y capacidades para lograr un objetivo específico en un contexto de uso específico.

Usabilidad en el desarrollo de Software

Es sabido que la usabilidad se enfoca en medir la satisfacción del usuario, y dentro de las etapas de desarrollo de Software, de debe implementar según el modelo elegido en las etapas correspondientes (generalmente en la etapa de pruebas) o fases (como en las metodologías RUP o UP). Para ello, se emplean diversos métodos heurísiticos donde se evalúa a grupos de usuarios interactuando con el programa definiendo algunas reglas como márgenes de tiempo, criterios predefinidos, etc.

Es así que la usabilidad debería medir como prioridad lo relacionado a:

  • Interfaces de usuario
  • Adaptación del sistema a la tarea
  • Costo de aprendizaje
  • Adaptación a estándares
  • Documentación
Existen diversos estándares y normas que deben seguirse a fin de crear diversas herramientas que nos permiten evaluar la usabilidad de un Software o programa.



Fuentes:

  • Dix, A., Finlay, J., Abowd, G. y Beale, R. (2004). Human–Computer Interaction (3a ed.). England: Pearson Education.
  • Stone, D., Jarret, C., Woodroffe, M. y Minocha, S. (2005). User Interface Design and Evaluation. United States of America: Elsevier.


Diseño de interfaces de usuario

Para definir una interfaz de usuario, se debe recordad el significado de "interfaz" que dice: "superficie de contacto entre dos entidades", de forma que en nuestra vida estamos en contacto permanente con diversas interfaces como las puertas, timones, pedales, teclados, micrófonos, etc.

De estos ejemplos, se define a la interfaz de usuario (IU o UI) como el medio o espacio en que el usuario puede comunicarse con una máquina, es decir donde se produce la interacción para que el usuario pueda tener control o poder sobre la máquina.

Dentro de la computación e informática, las IU son las partes del sistema con las que el usuario
entra en contacto de forma física (interactúa con teclados, pantallas, etc) y cognitiva (El usuario debe comprender como interactuar). Además, podemos encontrar que tenemos interfaces de Software y de Hardware o híbridas que resultan en tres tipos fundamentales de interfaces que son:

  • Interfaz de línea de comandos - CLI, la interacción es principalmente textual mediante instrucciones.
  • Interfaz gráfica de usuario - GUI, la interacción se propicia gracias a la representación gráfica que el usuario puede visualizar en pantalla.
  • Interfaz natural de usuario - NUI, la interacción es inherente al mismo ser humano mediante voz, movimientos o táctil.

Toda UI debe ser usable, intuitiva y útil.


Importancia de las IU

Para todo tipo de programa o máquina la forma como el usuario se comunica es sumamente importante. Por ello, la interfaz de usuario es una parte vital en estos. Se han atribuido numerosos accidentes y desastres al diseño de la interfaz de usuario.

Una IU deficiente es la culpable de provocar mayores tasas de error, mayores costos de capacitación y un rendimiento reducido. Esto se transforma para las empresas en sobre-costos y en los usuarios genera estrés o que no se emplee la herramienta creada.


Diseño de interfaces de usuario

Partiendo de la palabra diseño, tenemos que se define como: "actividad creativa que tiene por fin proyectar objetos que sean útiles y estéticos", uniendo esto a las IU tenemos que es una disciplina que se encarga de definir la forma, función, utilidad, disposición y otros aspectos relevantes que afectan a la apariencia externa de las IU de una máquina o sistema con el objetivo de hacer que la interacción del usuario sea lo más simple y eficiente posible (usable).

El diseño de interfaces de usuario usables se cimienta en diversas disciplinas que incluyen la ciencia computacional, psicología cognitiva y diseño gráfico.


Diferencia entre el diseño de IU y la IHC

Ambos emplean a otras disciplinas como la psicología o la erganomía para sus fines, pero mientras que la IHC estudia como los humanos interactúan con las computadoras y sus sistemas, el diseño de IU es una disciplina orientada a la creación de IU que permiten una mejor interacción de los usuarios con los sistemas computacionales.




Fuentes:

  • Dix, A., Finlay, J., Abowd, G. y Beale, R. (2004). Human–Computer Interaction (3a ed.). England: Pearson Education.
  • Stone, D., Jarret, C., Woodroffe, M. y Minocha, S. (2005). User Interface Design and Evaluation. United States of America: Elsevier.


lunes, 27 de abril de 2020

Programación orientada a objetos

Para entender la programación orientada a objetos (POO) es necesario tener conocimiento de las definiciones de:
  • Arquitectura orientada a objetos
  • Análisis orientado a objetos
  • Diseño orientado a objetos
  • Lenguaje orientado a objetos
  • Metodología de desarrollo orientado a objetos
Para ver la definición de clases y objetos has clic aquí.


Arquitectura orientada a objetos

La arquitectura del software orientado a objetos da como resultado una serie de subsistemas en capas que encapsulan clases colaboradoras. Cada uno de estos elementos de sistema (subsistemas y clases) realiza funciones que ayudan a lograr los requerimientos del sistema.


Análisis orientado a objetos

analiza los requisitos desde una óptica de clases y objetos que encontrará durante los flujos de trabajo fundamentales de requisitos y análisis


Lenguaje orientado a objetos

Según el Institute of Electrical and Electronics Engineers (IEEE) son todos aquellos lenguajes de programación que permiten al usuario expresar un programa en términos de objetos y mensajes entre estos. Tenemos entre ellos a:
  • Java
  • PHP
  • C#
  • etc.

Diseño orientado a objetos

Según el IEEE el diseño orientado a objetos es una técnica de desarrollo de software en la cual un sistema o componente de este se expresa en términos de objetos y conexiones entre estos.


Metodología de desarrollo orientado a objetos

Es un enfoque de desarrollo que tiene como eje las abstracciones de objetos y clases, así como el uso de módulos para poder analizar y diseñar un software mediante el análisis y diseño orientado a objetos y posteriormente con ello desarrollar dicho sistema mediante la programación orientada a objetos que debe soportar como mínimo el encapsulamiento, herencia y polimorfismo. Para continuar luego con las demás fases de desarrollo.

Clases y objetos en POO

Objetos

Un objeto es:
  • La unidad básica de construcción en la programación orientada a objetos POO.
  • La abstracción de un concepto del mundo real contemplando sus atributos y las operaciones disponibles que realiza. 
  • Un módulo (identidad) que contiene atributos (estado) y métodos (comportamiento), visto como programa.
  • La instancia de una clase.

Atributos y métodos

  • Los atributos son las características o atributos que posee un objeto, deben declararse en la clase. Por ejemplo: el color, la profesión, número de hijos, edad, fecha de nacimiento, etc. son atributos de un objeto.
  • Los métodos son las operaciones o  comportamientos que posee un objeto, deben declararse en la clase. Por ejemplo: 

Clases

Las clases son:
  • Las definiciones de estructura y comportamiento abstracto que servirá posteriormente para la creación de objetos.
  • Abstracciones que definen a un determinado tipo de objetos, como si fueran plantillas.

Consideraciones

  • Cuando se crea un objeto, primero se debe definir a la clase.
  • Los objetos al crearse reciben un "nombre" que es su identidad y permanece inalterado aún cuando se realicen cambios en su estado. 
  • El proceso de creación de un objeto se conoce como instanciación.


domingo, 29 de marzo de 2020

Introducción al lenguaje unificado de modelado UML

Comprender que es exactamente el Lenguaje Unificado de Modelado (UML) resulta una tarea relativamente compleja si no realizamos una analogía a otras ciencias como la Ingeniería Civil, en ella se establece una serie de planos o documentos que especifican las características y demás de una obra que se va a construir. En las ciencias computacionales (Ing. de Software, Informática, etc.) se requiere artefactos similares que especifiquen las características, componentes y funcionamiento de un proyecto de software. De ahí parte una interrogante ¿Cómo estandarizar estos "planos"? Y la respuesta es un lenguaje gráfico de propósito general al que llamamos UML y que tiene como objetivos:
  • Especificar
  • Visualizar
  • Construir
  • Documentar
A todos los artefactos de un proyecto de software. Siendo independiente de la metodología de desarrollo de software a emplear. Aunque, la más empleada en conjunto es el Proceso Unificado de Desarrollo (UP o RUP).

UML incluye diversos conceptos semánticos, de notación y de principios generales que acompañan todas las fases de desarrollo. Este tiene partes estáticas, dinámicas, de entorno y organizativas. Se debe resaltar que la especificación de UML no define o pretende ser un proceso estándar, pues los métodos de desarrollo son casi únicos en cada proyecto a diferencia de lo que sucede en otras disciplinas que tienen antigüedades de hasta milenios, pero está orientado a dar apoyo a la mayoría de los procesos de desarrollo orientados a objetos existentes. Esto implica que esta íntimamente ligado a los lenguajes orientados a objetos.

UML nace al unificar tres metodologías de desarrollo orientado a objetos que son: OMT, Bootch y OOSE en una sola durante la década de los 90 que fue formalmente presentado en 1997.

Las versiones de UML fueron la 1.1, 1.5 y actualmente la 2.0 y posteriores hasta el 2015 con la versión 2.1.5

En UML existen tres áreas principales que se subdividen en vistas y estas tienen sus artefactos, llamados diagramas. Cada diagrama tiene sus propias características y sirven a determinados fines.

Área principal Vista Diagrama
Estructural Vista estática Diagrama de clases
Vista de diseño Estructura interna
Diagrama de colaboración
Diagrama de componentes
Vista de casos de uso Diagrama de casos de uso
Dinámica Vista de máquina de estado Diagrama de máquina de estados
Vista actividad Diagrama de actividad
Vista de interacción Diagrama de secuencia
Diagrama de comunicación
Física Vista de despliegue Diagrama de despliegue
Gestión del modelo Vista de gestión del proyecto Diagrama de paquetes

En conclusión, UML es un lenguaje gráfico que nos brinda un estándar en la construcción de los diversos artefactos de un sistema. Estos artefactos pueden describir los procesos del negocio, los componentes internos, la forma como interactúa con el usuario, los dispositivos, etc.


Fuentes:

  • Rumbaugh, J., Jacobson, I. y Booch, G. (2007). El lenguaje unificado de modelado: manual de referencia. (2a ed.). (Trad. Sánchez, S., San Juan, O. y García-Bermejo, R.). Madrid: Pearson Educación.
  • Alarcón, R. (2000). Diseño orientado a objetos con UML. Madrid: Grupo Eidos



miércoles, 18 de marzo de 2020

Interacción hombre-máquina y hombre-computadora

¿Qué es la interacción hombre-máquina y hombre-computadora?


La interacción hombre-máquina (IHM) es una disciplina que estudia el cómo los usuarios interactúan con las diversas tecnologías (incluyendo las computacionales) empleando principios psicológicos, sociales y de diseño.

La interacción hombre-computadora (IHC) es una disciplina relacionada con el diseño, implementación y evaluación de sistemas informáticos interactivos para uso de seres humanos.

En otras palabras la IHC estudia como los humanos interactúan con los sistemas computacionales teniendo como contribuidores a las disciplinas de: ingeniería, ergonomía, psicología y diseño gráfico principalmente.



Importancia y objetivos


Gran parte del éxito de un sistema informático está estrechamente relacionado con la facilidad y la comprensión natural del funcionamiento de este por parte del usuario. Esta facilidad se proporciona a través de las interfaces intuitivas con las que interactúa el usuario final.

Actualmente gran parte del código de un programa se dedica exclusivamente a la interfaz gráfica con la que el usuario interactúa, dependiendo del tipo de programa el porcentaje en líneas de código puede aumentar significativamente.

El objetivo de esta disciplina es desarrollar y/o mejorar la seguridad, utilidad, eficacia, eficiencia y usabilidad de sistemas que incluyan ordenadores (computadores de escritorio, portátiles, móviles, etc.).




Evolución


El desarrollo de software y hardware cada vez más sofisticado ha ido transformado la forma de trabajar, estudiar y jugar. Por ello, la IHM se ha convertido desde hace 4 décadas en una de las áreas de estudio en las ciencias de la información y administración de la tecnología en las que se desarrolla investigación y se le presta mayor atención.

Este estudio sistemático del desempeño humano comenzó en serio a principios del siglo pasado en las fábricas, con énfasis en las tareas manuales. Explícitamente en 1949 con la Segunda Guerra Mundial como antecedente que generó un impulso para estudiar la interacción entre humanos y máquinas, ya que cada bando durante este periodo se esforzó por producir armamento más efectivo, debido a esto se llevó a una ola de interés en el área entre los investigadores y a la formación de la Sociedad de Investigación de Ergonomía en 1949.

La ergonomía, una de las disciplinas en las que se apoya la IHM, pone énfasis en las características físicas de las máquinas y sistemas, y cómo afectan el rendimiento del usuario al utilizarlas. Los factores humanos (otra disciplina), incorporan estas preocupaciones y también las relacionadas a problemas cognitivos (entender el uso de la máquina o sistema).

La ergonomía y los factores humanos son disciplinas que están relacionadas con el rendimiento del usuario en el contexto de cualquier sistema, ya sea informático, mecánico o manual. A medida que el uso de la computadora se generalizó, un número cada vez mayor de investigadores se especializó en estudiar la interacción entre las personas y las computadoras, con respecto a los aspectos físicos, psicológicos y teóricos de este proceso. Este proceso de investigación se denominó originalmente como interacción hombre-máquina, pero el término se convirtió en interacción hombre-computadora en reconocimiento del interés particular en las computadoras y la composición de la población de usuarios.



Fuentes:


  • Dix, A., Finlay, J., Abowd, G. y Beale, R. (2004). Human–Computer Interaction (3a ed.). England: Pearson Education.



domingo, 9 de febrero de 2020

Ejercicios resueltos de pseudocódigos

Un maestro desea saber qué porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes. Elaborar un pseudocódigo que permita ingresar la cantidad de varones y mujeres y muestre el porcentaje de estos para su grupo de estudiantes.

SOLUCIÓN

Proceso procentajeAlumnos
 Definir varones, mujeres Como Entero
 Definir porcentajeVar, porcentajeMuj Como Real
 
 Escribir "Ingrese la cantidad de varones"
 Leer varones
 Escribir "Ingrese la cantidad de mujeres"
 Leer mujeres
 
 porcentajeVar <- varones / (varones + mujeres) * 100
 porcentajeMuj <- mujeres / (varones + mujeres) * 100
 
 Escribir "El porcentaje de varones es: ", porcentajeVar, "%"
 Escribir "El porcentaje de mujeres es: ", porcentajeMuj, "%"
FinProceso



Digite el importe de una compra, en caso de que el importe sea 150 o más, se le descontará el 12%. Mostrar el descuento otorgado y el importe de compra final

SOLUCIÓN

Proceso descuentos
 Definir impBase, dscto, impFinal Como Real 
 
 Escribir "Ingrese el importe"
 Leer impBase 
 
 dscto <- 0 
 Si impBase >= 150 Entonces
  dscto <- impBase * 0.12
 FinSi 
 impFinal <- impBase - dscto
 
 Escribir "Importe final S/", impFinal
FinProceso



Ingrese el nombre de un alumno y las notas de su examen parcial, examen final y el promedio de prácticas; muestre el nombre del alumno y su promedio final solo si el alumno está aprobado. Tenga en cuenta que para el cálculo del promedio la nota del examen final tiene peso doble. Considere que para aprobar se debe tener una nota de 11.5 o más.

SOLUCIÓN

Proceso aprobados
 Definir nombre Como Caracter
 Definir practicas, parcial, final Como Entero 
 Definir promedio Como Real
 
 Escribir "Ingrese el nombre"
 Leer nombre
 Escribir "Ingrese las notas de las prácticas"
 Leer practicas 
 Escribir "Ingrese la notas del parcial"
 Leer parcial  
 Escribir "Ingrese la notas del final"
 Leer final 
 
 promedio <- (practicas + parcial + 2*final)/4 
 
 Si promedio >= 11.5 Entonces  
  Escribir "Nombres ", nombre
  Escribir "Promedio ", promedio
 FinSi  
FinProceso



Ingrese un numero natural de dos cifras y muestre el mensaje “Es capicúa” o “No es capicúa” según sea el caso.

SOLUCIÓN

Proceso capicua2
 Definir num Como Entero
 
 Escribir "Ingrese un número de dos cifras"
 Leer num 
 
 Si num MOD 11 = 0 Entonces  
  Escribir num, " es capicúa"
 SiNo  
  Escribir num, " no es capicúa"
 FinSi  
FinProceso



Realizar un pseudocódigo que permita ingresar el nombre del cliente, la cantidad en soles a cambiar y el tipo de moneda a la que se desea cambiar, en este caso sólo será dólares o euros, se deberá visualizar la cantidad en la moneda extranjera cambiada. Tenga en cuenta el siguiente tipo de cambio $1 = S/ 2.35 y €1 = S/ 3.58.

SOLUCIÓN

Proceso divisas 
    Definir nombre, moneda Como Caracter      
    Definir monto, cambio Como Real      
    Escribir "Ingresa el nombre"  
    Leer nombre  
    Escribir "Ingrese el monto a cambiar en S/"  
    Leer monto  
    Escribir "Ingrese la moneda a cambiar dolares o euros"  
    Leer moneda          
    Si Mayusculas(moneda) = "DOLARES" Entonces   
        cambio <- monto/2.35   
    SiNo   
        Si Mayusculas(moneda) = "EUROS" Entonces    
            cambio <- monto/3.58    
        FinSi   
    FinSi      
    Escribir "Cambio ", cambio  
FinProceso 



Dado un número entero; determinar si el mismo es par, impar o nulo.

SOLUCIÓN

Proceso ceros 
    Definir num Como Entero 
    Escribir "Ingresa un número" 
    Leer num 
    Si num = 0 Entonces 
        Escribir "Es nulo" 
    SiNo 
        Si num MOD 2 = 0 Entonces 
            Escribir "Es par" 
        SiNo 
            Escribir "Es impar" 
        FinSi 
    FinSi 
FinProceso



A un trabajador le descuentan de su sueldo el 10% si su sueldo es menor o igual a 1000, por encima de 1000 hasta 2000 el 5% del adicional, y por encima de 2000 el 3% del adicional. Calcular el descuento y sueldo neto que recibe el trabajador dado un sueldo.

SOLUCIÓN

Proceso descuentos  
    Definir sueldo, dscto, sneto Como Real      
    Escribir "Ingrese el sueldo"  
    Leer sueldo  
    Si sueldo <= 1000 Entonces   
        dscto <- 0.1*sueldo   
    SiNo           
        Si sueldo <= 2000 Entonces    
            dscto <- 0.05*(sueldo-1000)    
        SiNo    
            dscto <- 0.03*(sueldo-2000)                
        FinSi   
    FinSi  
    sneto <- sueldo - dscto  
    Escribir "Sueldo:       S/", sueldo  
    Escribir "Descuento:    S/", dscto  
    Escribir "Sueldo neto:  S/", sneto  
FinProceso 



Una agencia de seguros para autos asigna costos mensuales en base al sexo y edad del conductor. Los varones menores de 25 años pagan 1000 soles, los de 25 a más pagan 700 soles. Las mujeres de 21 años o menos pagan 500 y las que tienen más de 21 años paga 600 soles. Realizar un programa en pseudocódigo que solicite la edad y sexo de la persona, luego de acuerdo con lo mencionado muestre el costo mensual del seguro en pantalla.

SOLUCIÓN

Proceso seguros 
    Definir genero Como Caracter // V o M 
    Definir edad Como Entero 
    Definir precio Como Real 
    Escribir "Ingrese el genero V o M" 
    Leer genero 
    Escribir "Ingrese la edad" 
    Leer edad 
    Segun Mayusculas(genero) Hacer 
        "V": 
            Si edad < 25 Entonces 
                precio <- 1000 
            SiNo 
                precio <- 700  
            FinSi 
        "M": 
            Si edad >= 21 Entonces 
                precio <- 500 
            SiNo 
                precio <- 600                

            FinSi             
        De Otro Modo: 
            Escribir "ERROR" 
    FinSegun 
    Escribir "El pago es: S/", precio 
FinProceso



Hacer un pseudocodigo que imprima los números pares entre 0 y 100

SOLUCIÓN

Proceso pares1_100
    Para cont <- 1 Hasta 100 Con Paso 1 Hacer        
        Si cont MOD 2 = 0 Entonces 
            Escribir cont," - " Sin Saltar 
        FinSi          
    FinPara 
FinProceso



Proceso pares1_100
    Para cont <- 2 Hasta 100 Con Paso 2 Hacer
            Escribir cont," - " Sin Saltar     
    FinPara 
FinProceso



Calcular el salario total de un grupo de “n” trabajadores (el valor “n” se ingresa por teclado) dada la cantidad de horas trabajadas y la tarifa por hora para cada uno de los trabajadores.

SOLUCIÓN

Proceso sueldos 
    Definir horas, n Como Entero 
    Definir tarifa, sueldo, sueldoTotal Como Real     
    sueldoTotal <- 0//acumulador, aumenta de acuerdo a un valor "x" 
    Escribir "Ingrese el numero de trabajadores" 
    Leer n     
    Para cont <- 1 hasta n Con Paso 1 Hacer 
        Escribir "Ingrese las horas" 
        Leer horas 
        Escribir "Ingrese la tarifa por hora" 
        Leer tarifa 
        sueldo <- horas * tarifa 
        sueldoTotal <- sueldoTotal + sueldo 
    FinPara     
    Escribir "Sueldo del grupo: S/",sueldoTotal 
FinProceso 



Construir un programa que calcule el factorial de un número

SOLUCIÓN

Proceso factoriales 
    Definir n,fact,aux Como Entero 
    fact<-1 
    Escribir "Ingrese n" 
    Leer n 
    Para i<-1 hasta n Con paso 1 Hacer 
        fact<-fact*i 
    FinPara 
    Escribir n,"! = ", fact 
FinProceso

Proceso factoriales
    Definir n,fact,aux Como Entero 
    fact<-1 
    aux<-1 
    Escribir "Ingrese n" 
    Leer n   
    Mientras aux<=n Hacer 
        fact<-fact*aux 
        aux<-aux+1 
    FinMientras       
    Escribir n,"! = ", fact 
FinProceso



Dado un número entero positivo cualquiera, invertirlo y mostrarlo en pantalla

SOLUCIÓN

Proceso invertido  
    Definir num, cf, inv, aux Como Entero    
    Leer num  
    aux<-num  
    Mientras aux>0 Hacer   
        cf <- aux MOD 10   
        aux <- (aux - cf)/10  
        inv<-inv*10+cf   
    FinMientras      
    Escribir "numero inicial  :", num  
    Escribir "numero invertido:", inv 
FinProceso



Se desea crear un algoritmo para un sistema de votación. Supóngase en este caso que hay cuatro candidatos, con identificadores 1, 2, 3, 4. Usted habrá de calcular mediante un programa, el número de votos correspondiente a cada candidato y el porcentaje que obtuvo respecto al total de los votantes. El usuario ingresara los votos de manera desorganizada, tal y como se obtuvieron en la elección. El conteo de votos se detiene si se ingresa el valor cero. Observe, como ejemplo, la siguiente lista: 1 3 1 4 2 2 1 3 1 1 1 3 4 1 2 4 4 0

SOLUCIÓN

Proceso votaciones  
    Definir v,a,b,c,d Como Entero  
    // Contadores para cada cantidato
    a<-0  
    b<-0  
    c<-0  
    d<-0  
    Repetir   
        Escribir "ingrese voto"   
        leer v   
        Si v=1 Entonces    
            a<-a+1    
        FinSi   
        Si v=2 Entonces    
            b<-b+1    
        FinSi   
        Si v=3 Entonces   
            c<-c+1    
        FinSi   
        Si v=4 Entonces    
            d<-d+1    
        FinSi   
    Hasta Que v=0 //Se detiene si v es CERO
    Escribir "votos del candidato 1=", a 
    Escribir "votos del candidato 2=", b  
    Escribir "votos del candidato 3=", c  
    Escribir "votos del candidato 4=", d 
FinProceso



Construir un algoritmo que permita ingresar un número “n” de estudiantes (se cumple que: 1<=n<=50), cada uno de los cuáles cursa 5 materias. Para cada alumno se ingresa, clave y las 5 calificaciones. Escriba un algoritmo para calcular el promedio de cada estudiante luego de ingresar sus notas.

SOLUCIÓN

Proceso clase  
    Definir n, notas Como Entero  
    Definir clave Como Caracter  
    Definir prom Como Real  
    prom<-0  
    Repetir   
        Escribir "Ingrese la cantidad de alumnos"   
        Leer n 
 Hasta Que n>=1 Y n <=50
 Para i<-1 Hasta n Con Paso 1 Hacer
  Escribir "Ingrese la clave del alumno#",i
  Leer clave  
  Para j<-1 Hasta 5 Con Paso 1 Hacer  
   Repetir    
    Escribir "Ingrese la nota #",j     
    Leer notas  
   Hasta Que notas>=0 Y notas<=20
   prom<-prom+notas     
  FinPara    
  prom<-prom/5
  Escribir "Codigo: ", clave, " Promedio: ", prom     
  prom<-0
 FinPara   
FinProceso



Ejercicio con PseInt usando funciones

Las funciones dentro de PseInt se pueden crear mediante la palabra reservada SubProceso, SubAlgortimo o Función. Esto dependerá del estilo d...