Sie sind auf Seite 1von 5

TECLADO BIOMETRICO

(Submódulo de números negativos)

Angelo Franchesco Palomino Velazco


Josué Miguel Granados Sánchez
María Sarahí Oyervides García
Luis Antonio Rodríguez Olvera
Miguel Ángel Acosta Tristán
Materia: Planeación de Proyectos
Grupo: 80196
INTRODUCCION

El proyecto llamado “Teclado Biométrico” tiene la función de reconocer a un usuario por medio de
10 muestras de una contraseña, calculando la velocidad con la que el usuario escribe, es decir se
utilizan 2 métodos para calcular la rapidez con la que se pulsan las teclas, una para calcular el
pulsado y soltado de una tecla y la otra para calcular el soltado y pulsado entre las diferentes teclas
que puedan formar una contraseña.

PLANTEAMINETO DEL PROBLEMA

El problema principal que se nos presenta en este proyecto es que, al obtener las 10 muestras de
una cadena de caracteres de entre 13 y 15 caracteres el método comienza a presentar fallos,
mostrando valores negativos en los tiempos finales de algunas de las muestras.

Estos valores negativos en un principio se pensaban que tenían su origen en el método de “soltar-
pulsar” ya que el método se encuentra alojado en un servidor y el cliente únicamente consume ese
método desde el servidor para capturar los tiempos de las pulsaciones de las teclas para
posteriormente realizar los cálculos necesarios, entonces se pensaba que dichos errores podrían
estar vinculados a una mala conexión de internet o interferencias en el medio que hacia que algunos
valores llegaran antes al arreglo y posteriormente la resta que ser realiza en el método (que es el
tiempo en el que se soltó la última tecla menos el tiempo de la pulsación de la siguiente tecla) saliera
erróneo, causando que los valores por alguna extraña razón dentro de la operación se
intercambiaran o fueran menores los tiempos que se iban a restar respecto a los valores anteriores
generando un resultado negativo.

DESARROLLO

El razonamiento anterior en su momento determinamos que era incorrecto, aunque no del todo
por posteriores investigaciones que realizamos en equipo, ya que al realizar pruebas con diferentes
patrones de caracteres (contraseñas cortas, contraseñas cortas con espacios, contraseñas largas de
entre 8 y 12 caracteres, contraseñas largas de entre 8 y 12 caracteres con espacios, escribir lento
contraseñas y escribir lo más rápido que se podía una contraseña) nos dimos cuenta que las
contraseñas pequeñas de entre 6 y 8 caracteres no presentaban error alguno de números negativos
en la resta del método, lo cual extrañó mucho al equipo de trabajo.

Es aquí dónde el equipo decide investigar diferentes alternativas de solución para el problema ya
que obviamente el razonamiento principal estaba equivoco, ¿La conexión a internet no influía en
contraseñas pequeñas? ¿Por qué?
POSIBLES SOLUCIÓNES

Si bien el método de resolución de este problema, o como lo resolvió el equipo es relativamente


fácil, que fue trabajar con cantidades absolutas evitando así cualquier posibilidad de obtener un
resultado negativo, la realidad es que las muestras al aplicarles un valor absoluto a los resultados
no nos está generando un tiempo realmente verdadero, ayuda un poco que de las 10 muestras se
calcule un promedio para determinar un rango de validación del usuario para entrar al sistema ya
que los valores negativos o positivos son siempre cercanos a 0 comparándolos entre si por lo que el
equipo de trabajo dio solución así a este problema de esta manera.

Ahora bien, investigando un poco más se encontró un error dentro del código que fue la utilización
de una función especifica que fue “SYSTEM.CURRENTTIMEMILLIS()” la cual es una función NO
MONOTONA, ¿qué quiere decir esto?, bien… la función antes mencionada trabaja contando el
tiempo desde la media noche del primero de enero de 1970, lo que quiere decir que es una función
basada en la hora del sistema y está sujeta a cambios, de aquí el verdadero error y origen de los
números negativos, se debe ocupar una función monótona y que el sistema en el que se integre
dicha función soporte la monotonía cosa que solo Windows en la versión Professional y Server
soportan a través de punteros.

Cerrando el tema la solución realmente eficaz y recomendable que el equipo de trabajo es que se
trabaje con funciones y sistemas que soporten monotonía tales como: GetTickCount64 o
QueryPerformanceCounter, ya sea en sistemas para servidores Windows o Linux.
PRUEBAS

Prueba con función SYSTEM.CURRENTTIMEMILLIS() y SYSTEM.NANOTIME().


Prueba con Math.abs() función de valores absolutos.

Das könnte Ihnen auch gefallen