lunes, 30 de abril de 2012

[DISTRIBUIDOS Y PARALELOS] 12th week

This time I look for information to the next topic. This is the link to the wiki.

My nomination is for Gaby and her post about parallel programming in Xbox 360, and Cecy for her post about the dining philosophers problem.

viernes, 27 de abril de 2012

[DISPOSITIVOS MÓVILES] Seguridad y privacidad

Los dispositivos móviles como Smartphone y Tablets ya no son un lujo, en determinados entornos, como los ecosistemas empresariales son herramientas de trabajo básicas y muy superiores al tradicional teléfono móvil.

Cuando una tecnología se desarrolla rápidamente se generan preocupaciones sobre la repercusión en nuestra vida diaria, especialmente en aspectos relacionados con la seguridad y la privacidad. Un temor comprensible y lógico que está en boca de todos, pero con muy poca información disponible. En definitiva: ¿Son seguros los Smartphone?

En entornos corporativos, los smartphones son uno de los dispositivos principales para comunicarse entre miembros de una misma empresa, así como con proveedores y clientes. Por tanto, estos aparatos almacenan numerosa información confidencial de sus usuarios: desde cuentas de correo e información sensible de las empresas hasta datos bancarios. Además, el uso de plataformas en linea y servicios en la nube, la base de las comunicaciones por móvil, propicia una acumulación de datos muy tentadora para los delincuentes.

Ataques a moviles

Uno de los métodos más utilizados para vulnerar la información almacenada en dispositivos móviles son los ataques dirigidos a personas concretas, como altos directivos de empresas, personalidades o celebridades, con el objetivo de acceder a información confidencial. Estos ataques de ingeniería social, denominados "Whaling": el atacante sabe exactamente a quién asalta y la información que quiere conseguir.
Nuevos desarrollos tecnológicos, secretos empresariales o fotos privadas de famosos son algunos de los tipos de datos más susceptibles de robo.

Los ataques a móviles son aún bastante simples, podríamos decir que se asemejan a los programas maliciosos creados en los años 90 contra los ordenadores de sobremesa. Aún así, sirven para advertirnos de lo que puede deparar el futuro.

En líneas generales, el año 2011 se resume en las siguientes siete tendencias principales dentro del mercado de la seguridad:
  • El regreso de los cibercriminales activistas: en contra de lo sucedido en otros años, la motivación económica no siempre ha estado detrás de gran parte de los ataques.
  • Aumento continuado del volumen de código malicioso: En la actualidad, Sophos revisa más de 150.000 programas maliciosos nuevos al día, un 60% más que en 2010.
  • Aparición de programas maliciosos para dispositivos móviles, pero muy básicos
  • Sistemas de control e infraestructuras nacionales críticas: Los objetivos de los ciberdelincuentes se han diversificado y han empezado a prestar más atención a los sistemas de infraestructuras críticas.
  • Hablamos con los ciberdelincuentes: Durante 2011 los ciberdelincuentes llevaron a cabo técnicas de ingeniería social tales como llamar por teléfono a las propias empresas para sonsacar información. Los ataques a través de las plataformas de redes sociales, voz sobre IP y otros canales, fueron numerosos.
  • Ataques dirigidos de gran repercusión: Grandes ataques contra conocidas empresas de seguridad pusieron de manifiesto las prácticas de cibercriminales de espionaje corporativo e incluso patrocinados por gobiernos.
  • La protección básica sigue fallando: Infecciones a través de navegadores, provocadas por la falta de parches en los propios navegadores o en las aplicaciones de Flash o PDF, siguen siendo habituales.
En el año que comienza las empresas se enfrentan al reto de gestionar el aumento del volumen de programas maliciosos e infecciones, sino que también han de mantener la guardia en alto ante los nuevos métodos de acceso a aplicaciones y datos, como los servicios en la nube, que suscitarán un interés renovado

Estos son los retos básicos a tener en cuenta para el mercado de la seguridad en 2012:
  • Aumento continuado de la propagación de programas maliciosos a través de redes sociales e Internet
  • Mayor diversificación de los objetivos de los cibercriminales
  • Los dispositivos móviles son el centro de atención
  • Las nuevas tecnologías de redes e Internet nos obligan a tener la guardia en alto
  • El consumo despreocupado provoca un retroceso de la seguridad
  • Continúa la tendencia de los ataques dirigidos
  • Permanencia de los cibercriminales activistas y las amenazas de gran repercusión contra sistemas de control
  • Las tecnologías de conveniencia pueden convertirse en nuevos vectores de estafa
  • El retorno de los servicios en la nube
Cada vez más empresas intentan incorporar el uso de dispositivos de consumo en los entornos laborales, pero la transición despreocupada sin los controles adecuados provocará un retroceso de la capacidad de protección y abrirá agujeros que deben corregirse.

En el año 2012, será necesario concentrarse en contar con la protección básica para los nuevos modelos y dispositivos utilizados. Pero no debemos olvidarnos de actualizar las herramientas de seguridad de la empresa para solucionar la mayor cantidad posible de problemas.

Consejos

Muchas personas tienen una idea errada del uso y la seguridad de estos equipos, ya que se piensa que por ser celulares son inmunes a los virus y a los constantes ataques informáticos que a diario se presentan en todo el mundo y descuidan en un alto grado la información que guardan y comparten desde allí. La verdad es que entre más características tienen los smartphones y más acceso a la red se posee, por supuesto la seguridad también entra en juego.


ESET para este fin tiene una lista de consejos prácticos a la hora de aumentar la seguridad de la información en estos dispositivos:
  • Proteger el acceso al smartphone. Activar los códigos de bloqueo que trae el celular como el PIN. No dejar que el móvil caiga en manos equivocadas.
  • Activar las conexiones Bluetooth, Infrarrojos y Wi-Fi sólo cuando se vayan a utilizar. Estos son los métodos más usados actualmente para los ataques a los móviles, por estar razón solo se deben usar cuando sea necesario y desactivarlos una vez terminen el trabajo que se hace. Muchas personas dejan activados estos servicios sin ni siquiera darse cuenta, o incluso los tienen activos y desconocen que lo hacen. Para esto sirve leer los manuales del móvil y aprender como desactivarlos.
  • Cuidado con las tarjetas de memoria. Escanea frecuentemente estas tarjetas conectándolas a tu PC o incluso desde sistemas antivirus que tengas instalados en tu smartphone.
  • Atención a las aplicaciones. No descargues cualquier aplicación que se vea vistosa y útil sin mirar primero su procedencia. Trata siempre de instalar aplicaciones oficiales de las tiendas de cada marca móvil y mediante los métodos indicados por dichas compañías o los manuales de usuario.
  • Mensajes SMS o MMS no solicitados. Evita creer en los mensajes de texto que llegan ocasionalmente diciendo que has sido el ganador de importantes premios, indicando teléfonos, direcciones e incluso URL que si se siguen pueden afectar gravemente el celular y poner en riesgo la integridad de la información.
  • Servicios web con contraseña. Cierra la sesión cada que entres a sitios web donde se requieran contraseñas para evitar que otra persona ingrese a tus perfiles sin necesidad de ingresar tus datos.
  • Aplicaciones de redes sociales. Ten cuidado de siempre hacer que estas aplicaciones, que es donde más datos sensibles existen de los usuarios, pida inicio de sesión usando nombres de usuario y contraseña.
  • Conexiones a otros dispositivos. Antes de conectar nuestro móvil a un PC o a otro móvil, es importante recordar que todos los dispositivos deben estar libres de amenazas porque si la conexión se realiza con un equipo infectado, es muy probable que nuestro terminal también llegue a quedar con virus.
  • Actualizar el firmware y el software del sistema operativo y de las aplicaciones. Este punto es bastante importante. Las actualizaciones a las últimas versiones del software que controlan los móviles, siempre traen parches y mejoras que cubren agujeros de seguridad que podrían ser aprovechados por los delincuentes. Es muy importante siempre estar pendiente de dichas actualizaciones y mantener las últimas versiones de cualquier aplicación que se tenga instalada en nuestro equipo además del software en general.
  • Hacer copias de seguridad. Mantén siempre copias de seguridad de tus datos más importantes como fotos, videos, aplicaciones, contactos, claves, etc en tu PC o en otro lugar seguro con el fin de que si algo malo ocurre con tu móvil tengas acceso igualmente a toda tu información y procedas a hacer los cambios pertinentes. Es útil obviamente también para una posterior sincronización y recuperación.
  • Instalar un buen software de seguridad. Investiga acerca de las mejores aplicaciones de seguridad para los móviles e instala de inmediato dichas herramientas.
  • Guarde en sitio seguro el identificador de su teléfono. La mayoría de los smartphones tienen un número IMEI (Identidad Internacional de Equipo Móvil) que identifica, de forma única, al teléfono. Este número es el que permite a las operadoras de cualquier país desactivar el teléfono en caso de robo. Conocerlo nos será sumamente útil para evitar males mayores. Para averiguarlo, sólo tiene que marcar *#06# y el teléfono devolverá el código IMEI.

viernes, 20 de abril de 2012

[MODELADO Y SIMULACIÓN] Pruebas estadísticas para números pseudoaleatorios

En esta tarea se seleccionara una librería de cualquier tipo que genere números pseudoaleatorios siguiendo una distribución, y comprobaremos que tan aleatorios son estos números generados.

Librería generadora de números pseudoaleatorios

Seleccioné la distribución logística generada por la librería numpy (numpy.random.logistic)

Prueba estadística

Cuando se analizan datos medidos por una variable cuantitativa continua, las pruebas estadísticas de estimación y contraste frecuentemente empleadas se basan en suponer que se ha obtenido una muestra aleatoria de una distribución de probabilidad de tipo normal o de Gauss.

Pero en muchas ocasiones esta suposición no resulta válida, y en otras la sospecha de que no sea adecuada no resulta fácil de comprobar, por tratarse de muestras pequeñas.

En estos casos disponemos de dos posibles mecanismos:

Los datos se pueden transformar de tal manera que sigan una distribución normal.
O bien se puede acudir a pruebas estadísticas que no se basan en ninguna suposición en cuanto a la distribución de probabilidad a partir de la que fueron obtenidos los datos, y por ello se denominan pruebas no paramétricas (distribución free), mientras que las pruebas que suponen una distribución de probabilidad determinada para los datos se denominan pruebas paramétricas.

Seleccioné la prueba de Anderson-Darling de la librería scipy para comprobar que la distribución en los números generados es realmente la seleccionada. También se realizó un test de frecuencia para saber que tan aleatorios son los números generados por la librería, en este caso monobit.

Programa

En la práctica me basé en el código de Cecilia y de Juan Carlos para generar los números pseudoaleatorios, utilizando las herramientas anteriormente descritas.

import numpy
from scipy import stats

ls = []

f = open("datos.txt","w")

for i in range(1000):
    dist = numpy.random.logistic(1, 1, None)
    ls.append(dist)
    f.write("%0.3f\n" %dist)

anderson, critical, sig = stats.anderson(ls, dist="logistic")

for i in range(len(critical)):
    if anderson > critical[i]:
        print "Hipotesis rechazada con valor de significancia "+str(sig[i])
    else:
        print "Hipotesis no rechazada con valor de significancia "+str(sig[i])


El código anterior genera 1000 números pseudoaleatorios siguendo la distribución logística. y dando como resultadoestos números graficados, que por lo que se ve, parese que son muy aleatorios:


El programa hace un test de anderson dando como resultado el siguiente:


Parece ser que la distribución es la correcta, puesto que las hipotesis o se rechazan.

Ahora veremos que tan aleatorios son los números mediante monobit.

import math, numpy
from scipy.special import erf
                                                                                                                                                                                                                 
def mono(lista):
    lista2 = [-1 for i in lista if i==0]
    suma = sum(lista) + sum(lista2)
    sumaAbs = abs(suma)/math.sqrt(len(lista)) 
    p_value = erf(sumaAbs/math.sqrt(2))
    
    if(p_value > 0.01):
        print "%f: P" % p_value
    else:
        print "%f: NP" % p_value

def main():
    cantidad = 1000
    L1 = []
    
    for i in range(cantidad):
        x = numpy.random.logistic(1,1, None)
        x = abs(int(round(x)))
        if(x > 1.0):
                x = 1.0
        elif(x < 0.0): 
                x = 0.0
        L1.append(x)
    
    mono(L1)

main()
El código es basado en el del Compañero Juancarlos para realizar la prueba de frecuencia monobit.

El resultado es el siguiente:

Noté que al correr la prueba varias veces, de vez en cuando fallaba. Sin embargo la mayoría de las veces esta pasa. Se puede concluir que genera números aleatorios de forma muy eficiente.

jueves, 19 de abril de 2012

[CÓMPUTO INTEGRADO] Taller de programación de Arduino

Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.

El hardware consiste en una placa con un microcontrolador Atmel AVR y puertos de entrada/salida. Los microcontroladores más usados son el Atmega168, Atmega328, Atmega1280, ATmega8 por su sencillez y bajo coste que permiten el desarrollo de múltiples diseños. Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programación Processing/Wiring y el cargador de arranque (boot loader) que corre en la placa.

Arduino puede tomar información del entorno a través de sus pines de entrada de toda una gama de sensores y puede afectar aquello que le rodea controlando luces, motores y otros actuadores. El microcontrolador en la placa Arduino se programa mediante el lenguaje de programación Arduino (basasdo en Wiring) y el entorno de desarrollo Arduino (basado en Processing). Los proyectos hechos con Arduino pueden ejecutarse sin necesidad de conectar a un ordenador, si bien tienen la posibilidad de hacerlo y comunicar con diferentes tipos de software (p.ej. Flash, Processing, MaxMSP).
Librerias

Las Librerías proveen funcionalidad extra a nuestro sketch, por ejemplo: al trabajar con hardware o al manipular datos. 

Librerías Estándar:
  • EEPROM - Para leer y escribir en memorias "permanentes".
  • Ethernet - Para conectar a internet usando el Ethernet Shield?.
  • Firmata - Para comunicarse con aplicaciones en la computadora usando un protocolo estándar Serial.
  • LiquidCrystal - Para controlar Displays de cristal líquido (LCD)
  • Servo - Para controlar servomotores
  • SoftwareSerial - Para la comunicación serial de cualquier pin digital.
  • Stepper - Para controlar motores paso a paso (Stepper motors)
  • Wire - Interfaz de dos cables, ó Two Wire Interface (TWI/I2C), para enviar y recibir datos a través de una red de dispositivos y sensores.



Estas librerías son compatibles con versiones de Wiring. Los siguientes enlaces apuntan a la (excelente) documentación de Wiring:

  • Matrix - Librería para manipular displays de matrices de LED básicas.
  • Sprite - Librería básica para manipulacion de sprites para usar en animaciones con matrices de LEDs.
Librerías Contribuídas

Comunicación (networking y protocolos):
  • Messenger - Para procesar mensajes de texto desde la computadora.
  • NewSoftSerial - Versión mejorada de la librería SoftwareSerial.
  • OneWire - Controla dispositivos (de Dallas Semiconductor) que usan el protocolo One Wire.
  • PS2Keyboard - Lee caracteres de un teclado PS2.
  • Simple Message System - Envía mensajes entre Arduino y la computadora.
  • SSerial2Mobile - Envía mensajes de texto o emails usando un teléfono móvil (via comandos AT a través de software serial)
  • Webduino - Librería de web server extendible (para usar con Arduino Ethernet Shield)
  • X10 - Para enviar señales X10 a trav{es de lineas de corriente AC.
  • XBee - Para comunicaciones entre XBees en modo API.
  • SerialControl - Para controlar remotamente otras Arduino a través de una conexión serial.
IDE

Arduino cuenta con su propio lenguaje de programación y un IDE. El entorno de Desarrollo Arduino está constituido por un editor de texto para escribir el código, un área de mensajes, una consola de texto, una barra de herramientas con botones para las funciones comunes, y una serie de menús. Permite la conexión con el hardware de Arduino para cargar los programas y comunicarse con ellos.
Lenguajes

Existen distintos lenguajes diseñados para arduino, sin embargo es posible programarlo con otros lenguajes ya existentes mediante el uso de librerias.

Ardublock: Es un lenguaje de programación para arduino basado en gráficos, diseñado para los que no tienen conocimientos de programación, pero quieren iniciarse en ese mundo.


Python: Es posible utilizar python con arduino mediante la libreria pySerial.

Python Arduino Prototyping API: Es otra libreria especial para arduino basada en python.

Placas

La plataforma arduino cuenta con distintas placas de acuerdo con las necesidades de la persona.

Arduino Mega: Es con mucha diferencia el más potente y el que más i/o tiene, apto para trabajos ya algo más complejos aunque tengamos que sacrificar un poco el espacio, cuenta con el microcontrolador Atmega1280 con más memoria para el programa, más RAM y más pines que el resto de los modelos.
Arduino Bluetooth: incorpora un módulo para la transmisión de datos de hasta 100 metros, con esta placa podras programar sin cables asi como también realizar comunicaciones serie con cualquier dispositivo bluetooth.

Arduino Pro: Más robusto y mejor acabado final; incorpora funcionalidades interesantes tales como un conector especial para conectar una batería LiPo y realizar un montaje portatil.

Arduino Nano: Su principal ventaja es que puede ser pinchado directamente sobre una protoboard haciendo muy cómodo el prototipado al igual que el Arduino mini.

Arduino Duemilanove:  Es la placa estándar.

Arduino Diecimila: A pesar de ser el mismo modelo que el duemilanove pero en su versión anterior lo cito porque aún hay algunas tiendas con él en stock; la principal desventaja es que trae el chip atmega168 frente al atmega328 del duemilanove que es más potente aunque perfectamene compatibles respecto a patillaje y programación.

Arduino Mini: Versión miniaturizada de la placa Arduino. Mide tan sólo 30x18mm y permite ahorrar espacio en los proyectos que lo requieran. Las funcionalidades son las misma que Arduino Duemilanove.
Arduino UNO: Es la denominación para la última placa de la serie con usb integrado. Es equivalente a Duemilanove.

Clones

Como arduino es hardware libre, es completamente valido crear nuestro propio modelo a nuestro gusto, de ahí salen distintos clones que ofrecen cosas como mayor cantidad de pines o microcontroladores más potentes.

BeeBoard: Un clon de arduino con Atmel ATMEGA328 pero de tan solo 40x40 mm.

Oak Micros om328p: Basado en el Atmel ATMEGA328p, un clon compatible con arduino, tiene 28 pines.

Solo son algunos ejemplos de los muchos que se encuenran en esta página.

[CÓMPUTO INTEGRADO] Manejo de memoria


El microcontrolador está diseñado para que en su memoria de programa se almacenen todas las instrucciones del programa de control. Como éste siempre es el mismo, debe estar grabado de forma permanente.

En los microcontroladores la memoria no es abundante. Típicamente la memoria de programas no excederá de 16 K-localizaciones de memoria no volátil (flash o eprom) para contener los programas.

La memoria RAM está destinada al almacenamiento de información temporal que será utilizada por el procesador para realizar cálculos u otro tipo de operaciones lógicas. En el espacio de direcciones de memoria RAM se ubican además los registros de trabajo del procesador y los de configuración y trabajo de los distintos periféricos del microcontrolador.

Tipos de memoria

Algunos tipos de memoria son:


  • ROM con máscara: se graba mediante el uso de máscaras. Sólo es recomendable para series muy grandes debido a su elevado coste.
  • EPROM: se graba eléctricamente con un programador controlador por un PC. Disponen de una ventana en la parte superior para someterla a luz ultravioleta, lo que permite su borrado. Puede usarse en fase de diseño, aunque su coste unitario es elevado.
  • OTP: su proceso de grabación es similiar al anterior, pero éstas no pueden borrarse. Su bajo coste las hacen idóneas para productos finales.
  • EEPROM: también se graba eléctricamente, pero su borrado es mucho más sencillo, ya que también es eléctrico. No se pueden conseguir grandes capacidades y su tiempo de de escritura y su consumo es elevado. Los microcontroladores dotados de memoria EEPROM una vez instalados en el circuito, pueden grabarse y borrarse cuantas veces se quiera sin ser retirados de dicho circuito. Para ello se usan "grabadores en circuito" que confieren una gran flexibilidad y rapidez a la hora de realizar modificaciones en el programa de trabajo. El número de veces que puede grabarse y borrarse una memoria EEPROM es finito, por lo que no es recomendable una reprogramación continua. Son muy idóneos para la enseñanza y la Ingeniería de diseño. Se va extendiendo en los fabricantes la tendencia de incluir una pequeña zona de memoria EEPROM en los circuitos programables para guardar y modificar cómodamente una serie de parámetros que adecuan el dispositivo a las condiciones del entorno. Este tipo de memoria es relativamente lenta.
  • FLASH: se trata de una memoria no volátil, de bajo consumo, que se puede escribir y borrar en circuito al igual que las EEPROM, pero que suelen disponer de mayor capacidad que estas últimas. A diferencia de la ROM, la memoria FLASH es programable en el circuito. Es más rápida y de mayor densidad que la EEPROM. La alternativa FLASH está recomendada frente a la EEPROM cuando se precisa gran cantidad de memoria de programa no volátil. Es más veloz y tolera más ciclos de escritura/borrado.
Estas ultimas son recomendables aplicaciones en las que es necesario modificar el programa a lo largo de la vida del producto. Por sus mejores prestaciones, está sustituyendo a la memoria EEPROM para contener instrucciones.

De esta forma Microchip comercializa dos microcontroladores prácticamente iguales que sólo se diferencian en que la memoria de programa de uno de ellos es tipo EEPROM y la del otro tipo Flash. Se trata del PIC16C84 y el PIC16F84, respectivamente.

Estructura de la memoria

La memoria de programa se divide en páginas de 2,048 posiciones. El PIC16F84A sólo tiene implementadas 1K posiciones es decir de 0000h a 03FFh y el resto no está implementado. (es aquello que se ve en gris)

Cuando ocurre un Reset, el contador de programa (PC) apunta a la dirección 0000h, y el micro se inicia nuevamente. Por esta razón , en la primera dirección del programa se debe escribir todo lo relacionado con la iniciación del mismo (por ejemplo, la configuración de los puertos...).

Ahora, si ocurre una interrupción el contador de programa (PC) apunta a la dirección 0004h, entonces ahí escribiremos la programación necesaria para atender dicha interrupción.

Algo que se debe tener en cuenta es la pila o Stack, que consta de 8 posiciones (o niveles), esto es como una pila de 8 platos el último en poner es el primero en sacar, si seguimos con este ejemplo, cada plato contiene la dirección y los datos de la instrucción que se está ejecutando, así cuando se efectúa una llamada (CALL) o una interrupción, el PC sabe donde debe regresar (mediante la instrucción RETURN, RETLW o RETFIE, según el caso) para continuar con la ejecución del programa.

Memoria de datos

Hay dos zonas diferentes; la RAM estatica o SRAM y la EEPROM.

  • SRAM: donde residen los Registros Específicos (SFR) con 24 posiciones de tamaño byte, aunque dos de ellas no son operativas y los Registros de Propósito General (GPR) con 68 posiciones. La RAM del PIC16F84A se halla dividida en dos bancos (banco 0 y banco 1) de 128 bytes cada uno (7Fh).


  • EEPROM: de 64 bytes donde, opcionalmente, se pueden almacenar datos que no se pierden al desconectar la alimentación.

[DISTRIBUIDOS Y PARALELOS] 11th week

This week I've been looking for information about failover.

I posted information about that in this blog entry.

Also I found information about high-availability clusters and I posted in this page some information about them.

My nomination...










... for now.

miércoles, 18 de abril de 2012

[DISPOSITIVOS MÓVILES] Accesibilidad

Hoy en día, es común ver que todo mundo utilice dispositivos móviles de cualquier tipo, esto incluye a personas con o sin muchos recursos económicos, ya que estos dispositivos existen en muchas variedades de precios o enfoques para lo que la gente busca.

Ablando de enfoques, estos móviles están diseñados, la mayoría de ellos, para que cualquier persona lo utilice, ya sea personas con debilidades visuales, problemas auditivos, personas con discapacidades mentales, etc.

Se le llama accesibilidad al grado en el que todas las personas pueden utilizar un objeto, visitar un lugar o acceder a un servicio, independientemente de sus capacidades técnicas, cognitivas o físicas.


La telefonía móvil tiene actualmente grandes problemas de accesibilidad, derivados del tamaño y complejidad de uso de sus terminales. Aunque en los últimos años se está trabajando para hacerlos más accesibles, incorporando incluso servicios adicionales que permitan una mayor y mejor comunicación.

Hace años que los dispositivos bienen evolucionando haciendo sus funciones cada vez más sencillas y completas que permiten mayor accesibilidad.

El primer móvil accesible fue creado para personas invidentes y se le denominó Owasys 22c, con sintetizador de voz y teclado accesible. Es accesible también para discapacitados físicos ya que dispone de un teclado intuitivo y simple.


Otro dispositivo que vale la pena mencionar es el Pocket PC Accesible que HP y DELL han desarrollado conjuntamente. Se trata de una Agenda electrónica de bolsillo Maestro iPAQ Pocket PC. 

Se caracteriza por incorporar la tecnología text-to-speech, específicamente diseñada para invidentes, que permite la comunicación a través de texto. La pantalla táctil del iPAQ se ha sustituido por una membrana superpuesta con botones de acceso y aplicaciones de comunicación que permiten a los invidentes acceder a la información sin necesidad de emplear un lápiz digital.

Los anteriores son solo ejemplos de algunos dispositivos que cumplen con una serie de reglas de accesibilidad enfocadas para cierto tipo de personas. Los siguientes son algunas especificaciones de como deben ser los móviles accesibles para ciertas personas con distintas discapacidades:

Personas ciegas o debilidades visuales

Los dispositivos moviles son un gran reto para las personas ciegas o con algún problema visual, por lo que un teléfono o cualquier otro dispositivo que vaya a adquirir requiere de ciertas características:
  • Contraste entre las teclas y el fondo, para poder diferenciarlas.
  • Contar con contraste y tamaño de caracteres en pantalla configurables.
  • Emitir alguna señal de audio, vibración o luminosidad ante algún evento, como una llamada.
  • Disponer de marcación por voz configurada a un botón fácil de localizar..
Algunas empresas han trabajado para crear dispositivos con un gran nivel de accesibilidad, como es el caso de Samsung y su "touch Messenger", un dispositivo diseñado exclusivamente para personas con problemas visuales. A diferencia de los ejemplos anteriores, este modelo no utiliza lector de voz para los mensajes recibidos, sino que incluye su propia pantalla que muestra los mensajes en Braille, además de un teclado que le permite escribir mensajes en la misma manera.


Personas con problemas cognitivos y/o de aprendizaje

Las personas que padecen este tipo de problemas requieren de dispositivos fáciles de usar y con las funciones necesarias:

  • Menús fáciles de entender, con iconos que identifiquen claramente la función asociada.
  • Emisión de sonidos particulares al pulsar las teclas.
  • Gestión de distintas funciones a través de la voz.
  • Asignación de imágenes a diferentes llamadas.
  • Tamaño adecuado para un fácil manejo.
  • Batería de larga duración.
La mayoría de estas terminales suelen no tener una pantalla, sino que utilizan botones sencillos con las funciones necesarias.

EASY5, de ITT, es un celular de 7 botones, 5 de ellos programables, un botón para iniciar llamada y otro para colgar, sin pantalla. Un teléfono sencillo para personas con discapacidades mentales, niños y ancianos. No presenta tecnologías avanzadas como WiFi o Bluetooth, su único propósito es brindar la comunicación telefónica. Pesa 70 gramos y brinda 60 horas de batería y 3 en llamada. Presenta colores llamativos y botones grandes para fácil identificación.

Personas con dificultades en el habla

Es un aspecto muy difícil, ya que un teléfono diseñado para estas personas es un teléfono orientado a imágenes en combinación de sonidos provenientes del teléfono, personas con estos problemas deben contar con un servicio de videollamada, que depende de la compañía de servicios telefónicos.

En general este tipo de teléfonos tiene las siguientes características:
  • Obviamente contar con una cámara frontal para el servicio de videollamada para hacer uso del lenguaje de signos.
  • Letras suficientemente grandes así como una pantalla de buen tamaño.
Personas con problemas auditivos pueden poseer terminales con las funciones típicas que encontramos en los teléfonos de la actualidad como acceso a internet, Bluetooth, etc. En realidad muchos de los smartphones cuentan con las características antes mencionadas.

Personas sordas o con discapacidad auditiva

Su principal problemática es la incapacidad de recibir llamadas o mensajes de voz, lo que hace algo demasiado difícil la comunicación. Las recomendaciones para una persona parcialmente sorda serian:
  • El dispositivo debe contar con un vibrador potente y señales luminosas.
  • Compatibilidad con audífonos o accesorios equivalentes.
  • Ajuste de volumen en llamadas.
Para una persona con sordera total:
  • Al igual que con personas con problemas de habla, el dispositivo debe contar con el servicio de videollamada para usar el lenguaje de signos.
  • Letras suficientemente grandes así como una pantalla grande.


Personas con movilidad reducida.

En función de las dificultades de manipulación de cada uno se debería tener en cuenta lo siguiente:
  • Tecnología inalámbrica Bluetooth, así como manos libres integrado, eliminando la necesidad de desenredar cables.
  • Disponer de funciones a través de comandos de voz.
  • Un tamaño de dispositivo de acuerdo a las necesidades.
  • Teclas grandes para facilitar su uso.
  • La opción de que cualquier tecla responda ante un evento.
  • Interfaz básica con pocos comandos, o bien sin pantalla donde solo unos botones controlan el funcionamiento.
  • Batería de larga duración.
Estas son solo algunas características de móviles que se destinan para cada persona. Sin embargo existen tecnologías que contemplan más aspectos y que facilitan aún más el uso de estos aparatos como dispositivos de seguimiento ocular o basados en movimientos motrices.

lunes, 16 de abril de 2012

[DISTRIBUIDOS Y PARALELOS] Fiabilidad y tolerancia de fallos


Fallos de funcionamiento:

Se originan en: especificaciones inadecuadas, errores de diseño de software, averias en el hardware o interferencias en las comunicaciones.

Conceptos básicos

Fiabilidad (reliability) de un sistema es la medida de conformidad en base a una especificacion autorizada.

Avería (failure) es una desviación del comportamiento del sistema, estas se manifiestan en el comportamiento externo, pero son el resultado de errores internos del sistema.

Las causas de estos errores son llamados fallos (faults).

Un fallo puede probocar varios errores y averias, algo conocido como fallo encadenado.


Los fallos pueden ser:

  • Transitorios: desaparecen con el paso del tiempo.
  • Permanentes: se necesita reparar manualmente.
  • Intermitentes: fallos transitorios que ocurren de vez en cuando.

Prevención y tolerancia de fallos.

Para aumentar la fiabilidad del sistema se tienen dos formas:

  • Prevención de fallos: Evitar la introducción de fallos al sistema antes de que se ponga en funcionamiento.
  • Tolerancia de fallos: Se trata de conseguir que el sistema continúe aunque ocurran fallos.
  • Para la prevención de fallos hay dos etapas.
  • Evitar fallos: Se trata de impedir que se introduzcan fallos durante la construcción del sistema.
  • Eliminación de fallos: Consiste en encontrar y eliminar los fallos que se producen en el sistema una vez construido.

Las tecnicas para evitar fallos son:

Hardware:

  • Utilización de componentes fiables
  • Técnicas rigurosas de montaje de subsistemas
  • Apantallamiento de hardware

Software:

  • Especificación de requisitos rigurosa o formal
  • Métodos de diseño comprobados
  • Lenguajes con abstracción de datos y modularidad
  • Utilización de entornos de desarrollo con computador (CASE) adecuados para gestionar los componentes

Para la eliminación de fallos tambien hay técnicas:

Comprobaciones:

  • Revisiones de diseño
  • Verificación de programas – Inspección de código

Pruebas (tests):

Son necesarias, pero tienen problemas:

  • No pueden ser nunca exhaustivas
  • Sólo sirven para mostrar que hay errores, no que no los hay » a menudo es imposible reproducir las condiciones reales
  • Los errores de especificación no se detectan

Existen grados de tolerancia a fallos:

Tolerancia completa (fail operational): El sistema sigue funcionando, al menos durante un tiempo, sin
perder funcionalidad ni prestaciones

Degradación aceptable (fail soft, graceful degradation): El sistema sigue funcionando con una pérdida parcial de funcionalidad o prestaciones hasta la reparación del fallo

Parada segura (fail safe): El sistema se detiene en un estado que asegura la integridad del
entorno hasta que se repare el fallo

En todo caso, estos dependen de la aplicación.

La tolerancia a fallos se basa en la redundanica.

Existen dos tipos de redundancia en hardware; la estática y la dinámica.

La primera (estática) tiene sus componentes redundantes siempre activos y enmascaran los fallos.

La dinámica activa sus componentes solo cuando hay un fallo detectado, basada en la detección y recuperación de estos.

Para software existen tambien redundancia estática y dinámica.

En este caso la estática es la programación con N versiones. ¿Que es la programación de N versiones? N programas desarrollados independientemente con una misma especificación sin interacciones entre los equipos de desarrollo.



La dinámica utiliza varias etapas: detección, evaluación, recuperación y reparación de fallos, los bloques de recuperación proporcionan recuperación hacia atrás, las excepciones lo hacen hacia adelante. Las etapas son de la siguiente manera.


1. Detección de errores

  • No se puede hacer nada hasta que se detecta un error 

2. Evaluación y confinamiento de los daños

  • Diagnosis: averiguar hasta dónde ha llegado la información errónea 

3. Recuperación de errores

  • Llevar el sistema a un estado correcto, desde el que pueda seguir funcionando (tal vez con funcionalidad parcial)

4. Reparación de fallos

  • Aunque el sistema funcione, el fallo puede persistir y hay que repararlo