Vous êtes sur la page 1sur 40

Universidad Nacional Experimental de Guayana

rea de Informtica

Algoritmo de bsqueda de dispositivos

Julio de 2016

Sistemas Distribuidos 2016-I

Resumen
Actualmente durante el proceso de asignacin de IP en las redes no existe un
patrn predefinido con el que se diferencien los dispositivos mviles de los
dispositivos de escritorio, sin embargo los equipos mviles celulares, tambin
llamados Telfonos inteligentes, poseen una configuracin en su host name, la cual
se tom como referencia a patrones de bsqueda, en el caso de Android es AndroidCdigo, igualmente se aplica para dispositivos con sistema operativo IOS, Windows
Phone, Blackerry. Esta premisa permiti inferir un algoritmo que permita el filtrando
de estos mediante su hostname.
Es as que para alcanzar la meta de desarrollar un algoritmo de bsqueda de
dispositivos mviles nos basamos en la metodologa de desarrollo en cascada la cual
permiti el desarrollo del algoritmo, luego de esto se implement utilizando el
lenguaje JAVA para realizar la codificacin y por ltimo se migr al entorno de
Desarrollo de Android Studio, lo que nos permiti generar la aplicacin objeto de
estudio.
Todo esto nos dio por resultado una aplicacin Android completamente estable,
que realiza la bsqueda de manera eficiente y en poco tiempo, implementando el
algoritmo desarrollado de manera eficiente; las principales aplicacin de este
algoritmo se ven enfocadas en la seguridad de las redes, ya que al poder filtrar
dispositivos

mviles

contribuye

como

herramienta

para

condicionar

el

comportamientos de los mismos en las redes de acuerdo a la preferencia del usuario,


por ltimo cabe resaltar que la aplicacin es compatible con diferentes versiones del
sistema operativo Android.

Introduccin
Los telfonos mviles (Smartphones), han sido sin duda uno de los
protagonistas de la revolucin tecnolgica en las ltimas dcadas y la forma en la
que esta se adopta est descrita por la teora de la difusin de las innovaciones
(Rogers (1962)). Los aspectos sociales en el proceso de adopcin de tecnologa se
estn acelerando con el aumento de la computacin mvil y ubicua, y esto reduce los
ciclos de adopcin.
El uso de estos distintos conceptos abarca como objetivo principal el desarrollo
de un algoritmo para bsqueda de dispositivos, el cual se aplicar en una aplicacin
mvil bajo la plataforma del sistema operativo Android, se pretende que esta realice
un mapeo exitosos de la red local, logrando identificar los dispositivos conectados a
una red especfica.
Dentro del mercado actual de aplicaciones mviles se encuentran varias
aplicaciones que permiten buscar los dispositivos conectados a la red, sin embargo
son software propietario sin fines educativos, a los cuales solo se puede acceder de
manera paga. Sin embargo en aplicaciones de escritorio si se encuentran algunas
inclusiones en este campo, como la empresa Maxim Integrated Products, Inc. que en
el ao 2002 public la documentacin del desarrollo de un algoritmo de bsqueda, el
cual denominaron Wire Search Algorithm o Algoritmo de Bsqueda Alambre, el
cual est basado en rbol binario de bsqueda donde las ramas son seguidas hasta
que un nmero de dispositivo ROM, o de la hoja, se encuentra. La codificacin se
realiz en el lenguaje JAVA y est disponible en su sitio web para su libre
implementacin.
El diseo de esta propuesta, se basa la metodologa de desarrollo en
cascada, el cual es considerado como el enfoque clsico para el ciclo de vida del
desarrollo de sistemas, se puede decir que es un mtodo puro que implica un
desarrollo rgido. Esta es una secuencia de actividades (o etapas) que consisten en el
anlisis de requerimientos, l diseo, la implementacin, la integracin y las pruebas.
La aplicacin de estos mtodos se realizar en pos de obtener un algoritmo de
bsqueda de dispositivos eficiente, que cumpla con los principales requerimientos
funcionales, entre los cuales tenemos una bsqueda de dispositivos en la red,
1

identificacin de los dispositivos conectados a la red, entre otros que se especificaran


en la seccin de requerimientos.
Las etapas comprendidas en todo el desarrollo se presentan en el siguiente
informe, desglosadas de la siguiente manera:

Revisin Terica: donde se exponen las diferentes fuentes de informacin


exploradas para tener una visin amplia del problema y sus posibles

soluciones.
Objetivos: se exponen los objetivos generales y especficos, enfocados en la

aplicacin de la metodologa expuesta en Sistemas Distribuidos.


Metodologa de la Investigacin: se expondr de manera breve y precisa
todas las etapas de la programacin extrema, incluyendo los Diagramas de
Flujo de Datos, Diagrama Entidad Relacin, Diagrama de Estados y

Diccionario de Datos.
Materiales y Mtodos: presenta: el entorno de desarrollo, los programas de

diseo y el tipo de programacin utilizada, en las distintas etapas.


Arquitectura del Sistema: Detallar la arquitectura del sistema, tanto lgica

como fsica y los servicios involucrados.


Modelo de Iteracin: Describe el modelo de interaccin de la aplicacin
Modelo de Fallas: presenta el modelo de fallas.
Instalacin: se presenta una manual paso a paso de la instalacin de la

aplicacin y una descripcin del algoritmo desarrollado.


Pruebas Realizadas: se muestra de manera cuantitativa el resultado de las

pruebas realizadas mediante tablas.


Resultados: se presentan los resultados de la investigacin y del experimento.
Conclusin: en base a un anlisis cualitativo se explica el logro de los

objetivos.
Referencias: listado de las referencias bibliogrficas consultadas a travs de
todo el desarrollo.

1.1 Revisin Terica


1.1.1 Sistemas Distribuidos
Los sistemas distribuidos suponen un paso ms en la evolucin de los sistemas
informticos, entendidos desde el punto de vista de las necesidades que las aplicaciones
plantean y las posibilidades que la tecnologa ofrece. Se llama sistema distribuido a un
conjunto de computadoras independientes que se presentan a sus usuarios como un
sistema nico y coherente. (Tanenbaum & Van Steen, 2002)
Un sistema distribuido permite compartir recursos y datos entre distintas
computadoras, entre las ventajas que presenta este tipo de sistemas se destacan: la
disminucin de costo de hardware, la optimizacin del rendimiento al permitir
paralelismo, y la sencilla resolucin de problemas de naturaleza distribuida. Las
computadoras que participan dentro del mismo sistema distribuido se encuentran
interconectadas entre s sobre una red que posibilita la comunicacin entre ellas. Las
aplicaciones que adoptan este esquema de trabajo son denominadas aplicaciones
distribuidas.
El desarrollo tecnolgico en un conjunto de reas est introduciendo nuevos
dispositivos que abren perspectivas para nuevas aplicaciones en el mundo de los
sistemas distribuidos. Una evolucin, iniciada en los aos noventa del siglo pasado a
partir de la introduccin de equipos porttiles, nos lleva a lo que denominamos la
computacin mvil. El equipo mvil sale de la red local para descubrir nuevos recursos,
este ha de adaptarse a condiciones cambiantes de red y eventualmente funcionar en
modo desconectado.
Sobre la base de las consideraciones anteriores cabe destacar un hecho relevante
y caracterstico de nuestra sociedad actual: la aparicin y rpida difusin de dispositivos
mviles (telfonos mviles, tablets, porttiles, etc) los cuales nos acompaan en todo
momento debido a su reducido tamao (Figura 1). Estos dispositivos tienen capacidad
de cmputo y adems pueden comunicarse con otros elementos sin necesidad de
conexiones fsicas, gracias a protocolos inalmbricos como GPRS, UMTS, WLAN y
Bluetooth.

Figura 1. Dispositivos mviles en un Sistema Distribuido. Fuente: Fuente: Coulouris George,


Sistemas Distribuidos, Addison Wesley, Madrid, 2001, 3 Ed.

Las aplicaciones software de estos pequeos dispositivos deben de adaptarse a


las restricciones de memoria, procesamiento y de comunicacin intermitente y de
calidad cambiante que les caracteriza. El paradigma de computacin distribuida que
mejor se adapta a todas estas caractersticas es lo que se denomina Agente y de esta
manera es que se desarrollan ampliamente los sistemas de computacin mvil y
ubicua.
1.1.2 Computacin Mvil
La computacin mvil se basa en los principios de los Sistemas Distribuidos
pero hace hincapi en la integracin de dispositivos a travs de clientes mviles.
Actualmente existen varias definiciones de computacin mvil, entre ellas tenemos:
1. Serie de artefactos y equipos porttiles, hardware, que hacen uso de la
computacin para lograr su funcionamiento, as, se tiene a las
computadoras porttiles, los telfonos celulares, los asistentes personales
digitales, las calculadoras de bolsillo, etc (Azara, 1997)
2. Es la realizacin de tareas informticas mientras el usuario est en
movimiento en lugares distintos de su entorno habitual. (Milln, 2003)
Se puede ver que todas las definiciones hacen nfasis en lo mismo: la
movilidad y el permitir estar en cualquier momento y lugar, lo que normalmente solo
se hace al frente de un escritorio en una oficina.
4

Por lo general la mayora de aplicaciones distribuidas para plataformas mviles


se estn desarrollando en lenguaje Java el cual se caracteriza por su alta portabilidad.
Entre los servicios bsicos que debe proporcionar una plataforma de agentes
distribuidos para computacin mvil, se encuentran los siguientes:
Servicios de comunicacin: La mayora de plataformas de agentes que se han
desarrollado emplean mecanismos de computacin distribuida complejos como RMI,
CORBA, etc. Debido a las limitaciones de los dispositivos mviles (capacidad de
procesamiento, memoria), estas soluciones son inviables. Por lo tanto se deben
emplear otros mtodos de comunicacin que sean ms ligeros, aunque no
proporcionen tantas facilidades.
Servicios de descubrimiento y anuncio: Las plataformas deben de conocerse
unas a otras, y adems deben de saber qu tipo de servicios complementarios ofrecen
para poder beneficiarse de ellos. Existen varios protocolos de descubrimiento, como
SLP, Jini, SSDP de UPnP y SDP de Bluetooth, la mayora de ellos centralizan en un
nico elemento la informacin de estos servicios.
Servicios de seguridad: Uno de los principales frenos a la utilizacin de
agentes mviles en aplicaciones comerciales es la seguridad, por lo tanto es uno de los
temas que es necesario analizar en mayor profundidad. Las principales propuestas se
centran en que el servicio de seguridad se proporcione a travs de tarjetas inteligentes,
algo bastante habitual en este tipo de dispositivos, como en el caso de los telfonos
mviles.
La utilizacin de la tecnologa de agentes distribuidos en sistemas de
computacin mvil permite adaptarse a estas limitaciones de los equipos para
proporcionar mejores servicios a los usuarios finales y mejorar las prestaciones de la
red, debido a que:

Los agentes que proporcionan un servicio pueden enviarse dinmicamente y

bajo demanda a los propios usuarios.


Los agentes permiten realizar distribuciones de tareas para realizar actividades
de gestin, siendo los propios agentes quienes recopilen los datos y los procesen

localmente en la parte del dispositivo mvil.


La autonoma de los agentes permite que se realicen tareas de forma asncrona.
Los agentes pueden realizar gran parte del procesamiento de forma local, por lo
5

que se conseguira una reduccin importante del trfico en la red.


Los agentes permiten una mayor independencia de la disponibilidad de la red, ya
que su capacidad de movilidad les permite migrar a otros nodos de la red.

1.1.3 Middleware

Android

iOS

Windows Phone

Otros

El Middleware para
dispositivos mviles est compuesto por los sistemas operativos, los protocolos de
comunicacin, la seguridad y las bases de datos. Por el lado del servidor existe
tambin un middleware que se contrapone al middleware que corre en el dispositivo
mvil. En el campo de la telefona mvil, Android marca la pauta en los telfonos
inteligentes y tabletas, en la Figura 2 podemos ver la cuota de mercado de sistemas
operativos mviles para el primer trimestre de 2016.

Figura 2. Grfica del Mercado de Sistemas Operativos en Dispositivos Mviles

Android tiene la mayor cuota, desde enero 2011, con ms de la mitad del
mercado, experiment un creciente aumento y en solo dos aos (2009 a comienzos de
2011) ha pasado a ser el SO mvil ms utilizado.
1.1.4 Android
6

Est basado en Linux, disponiendo de un Kernel en este sistema y utilizando una


mquina virtual sobre este Kernel que es la responsable de convertir el cdigo escrito en
Java de las aplicaciones a cdigo capaz de comprender el Kernel.
Las aplicaciones para Android se escriben y desarrollan en Java aunque con unas
APIS propias por lo que las aplicaciones escritas en Java para PC y dems plataformas
ya existentes no son compatibles con este sistema.
Una de las grandes cualidades o caractersticas de este sistema operativo es su
carcter abierto. Android se distribuye bajo dos tipos de licencias, una que abarca todo
el cdigo del Kernel y que es GNU GPLv2 ( implica que su cdigo se debe poner al
alcance de todos y que todos podremos hacer con este cdigo lo que nos parezca
oportuno, modificarlo, ampliarlo, recortarlo, pero siempre estaremos en la obligacin de
volver a licenciarlo con las misma licencia) Google tambin por supuesto tiene otra
licencia para el resto de componentes del sistema que se licencia bajo APACHE v2
(implica que este cdigo se pueda distribuir para ser modificado y usado a antojo del
que lo utilice, pero a diferencia del primer caso, las modificaciones y el cdigo
resultante no es obligatorio el licenciarlo bajo las mismas condiciones en las que se
encontraba).

Direccin IP
Para poder comunicarse en una red, cada equipo debe tener una direccin IP
exclusiva. La direccin IP es el nico identificador que diferencia un equipo de otro en
una red y ayuda a localizar dnde reside ese equipo. Se necesita una direccin IP para
cada equipo y componente de red, como un router, que se comunique mediante
TCP/IP.
La direccin IP identifica la ubicacin de un equipo en la red, al igual que el
nmero de la direccin identifica una casa en una ciudad. Al igual que sucede con la
direccin de una casa especfica, que es exclusiva pero sigue ciertas convenciones, una
direccin IP debe ser exclusiva pero conforme a un formato estndar. Una direccin IP
est formada por un conjunto de cuatro nmeros, cada uno de los cuales puede oscilar
entre 0 y 255.
Al igual que la direccin de una casa tiene dos partes (una calle y un cdigo
postal), una direccin IP tambin est formada por dos partes: el ID de host y el ID de
red. ID de red La primera parte de una direccin IP es el ID de red, que identifica el
segmento de red en el que est ubicado el equipo.

Figura 3. Asignacin IP mediante Router

IP Mvil
Las versiones actuales del protocolo de Internet (IP) dan por supuesto que el
punto en el que un sistema se conecta a Internet o a una red es fijo. IP asume tambin
que la direccin IP del sistema identifica la red a la que este est conectado. Los
datagramas que se envan a un sistema se basan en la informacin de ubicacin
contenida en la direccin IP. Muchos protocolos de Internet exigen que la direccin IP
de un nodo no cambie. Si alguno de estos protocolos est activado en un sistema con IP
mvil, sus aplicaciones no funcionarn.
Si un sistema mvil, o nodo mvil, se traslada a una nueva red y su direccin IP
no cambia, la direccin del nodo no refleja el nuevo punto de conexin. En
consecuencia, los protocolos de enrutamiento en vigor no pueden enrutar los datagramas
correctamente al nodo mvil.
IP para mviles permite que un sistema se mueva libremente en Internet.
Tambin le permite moverse libremente en la red de una organizacin manteniendo la
misma direccin permanente. En consecuencia, las comunicaciones no se interrumpen
cuando el usuario cambia el punto de conexin del sistema. En vez de eso, la red se
actualiza con la nueva ubicacin del nodo mvil.

Figura 4. Topologa de IP para mviles

Servicio de Nombre de Dominio


DNS (servicio de nombres de dominio: Domain Name Service) es un servicio
distribuido y jerrquico que asocia nombres a direcciones IP y viceversa. No es otra
cosa que la traduccin de los nmeros IP a direcciones alfabticas y por lo tanto, ms
fcil de recordar. El DNS organiza los nombres de mquina (hostname) en una jerarqua
de dominios.
Bsquedas con DNS
DNS es como una gigantesca base de datos distribuida. Est realizada a travs de
los llamados servidores de nombres, que proporcionan la informacin de uno o varios
dominios. Para cada zona, debe haber dos o ms servidores de nombres capaces de
responder por ella. Para obtener la direccin IP de un dispositivo, todo lo que
necesitamos es contactar con el servidor de nombres de la red local y obtendremos los
datos solicitados.
Cuando un cliente DNS necesita buscar un nombre que se utiliza en un
programa, consulta los servidores DNS para resolver el nombre. Cada mensaje de
consulta que enva el cliente contiene tres grupos de informacin, que especifican una
pregunta que tiene que responder el servidor:
Las consultas DNS se resuelven de diferentes formas. A veces, un cliente
responde a una consulta localmente mediante la informacin almacenada en la cach
obtenida de una consulta anterior.
El servidor DNS puede utilizar su propia cach de informacin de registros de
recursos para responder a una consulta. Un servidor DNS tambin puede consultar o
ponerse en contacto con otros servidores DNS en nombre del cliente solicitante para
resolver el nombre por completo y, a continuacin, enviar una respuesta al cliente. Este
proceso se llama recursividad.
Adems, el mismo cliente puede intentar ponerse en contacto con servidores
DNS adicionales para resolver un nombre. Cuando un cliente lo hace, utiliza consultas
adicionales e independientes en funcin de respuestas de referencia de los servidores.
Este proceso se llama iteracin.
En general, el proceso de consulta DNS se realiza en dos partes:
10

La consulta de un nombre comienza en un equipo cliente y se pasa al

solucionador, el servicio Cliente DNS, para proceder a su resolucin.


Cuando la consulta no se puede resolver localmente, se puede consultar a los
servidores DNS segn sea necesario para resolver el nombre.

En la figura siguiente se muestra un resumen del proceso de consulta DNS completo.

Figura 5. Funcionamiento de una consulta DNS

HostName
Un nombre de host es un nombre que se asigna a un equipo, que lo identifica de
forma exclusiva en una red y esto le permite ser direccionado sin usar su IP completa.
Un host es un ordenador que est conectado a una red, generalmente Internet, u otra del
tipo TCP/IP (Transmission Control Protocol / Protocolo de Internet) como una LAN
(red de rea local). Cada host en una red TCP/IP tiene una direccin nica IP, que es un
identificador numrico nico.
Los nombres de host son muy tiles, ya que es mucho ms fcil para los seres
humanos de recordar, que recordar direcciones IP, que pueden contener hasta 12 dgitos
bajo el actual esquema de direccionamiento IPv4 (o un mximo de 32 dgitos
hexadecimales en el IPv6 de prxima generacin). Adems, es una cuestin de sencillez
para los administradores del sistema el asignar nombres de host en una LAN o una red
privada.

11

Los nombres de hosts en redes ms pequeas suelen consistir en una sola palabra
(o palabras) que describa al host y se suele omitir el nombre de dominio. Un nombre de
dominio es un nombre nico que identifica un host en Internet. Por ejemplo, a algunos
de los equipos en el departamento de contabilidad de una pequea empresa, se les
podran asignar nombres de host como 'conta1', 'conta2' y 'conta3'.
Normalmente, cada host tiene un solo nombre. Sin embargo, a menudo se les
permite tener mltiples nombres de hosts.
Hostname en los dispositivos mviles
En el caso de los dispositivos mviles Android, su nombre o hostname, al
tratarse de un dispositivo Linux, posee un valor por defecto (desde la versin Android
2.2) que se estructura de la siguiente manera: android-CDIGO donde CDIGO es
un valor de 16 caracteres hexadecimales. El cdigo corresponde al identificador de
Android (ANDROID_ID), una valor de 64 bits generado aleatoriamente en el primer
arranque del dispositivo mvil y que permanece constante durante toda la vida del
dispositivo, es dedir, hasta que se reinstale o se restablezcan los valores de fbrica.
El nombre del dispositivo mvil, que tambin es empleado como nombre para el
servicio DNS, hace uso del carcter _ (underscore), qu no es un carcter valido
segn el estndar del protocolo DNS y los servicios de resolucin de nombres. A partir
de Android 4.0 se hace uso de un guion - en su lugar. nicamente los dispositivos
mviles Android donde se ha realizado el proceso de rooting permiten la modificacin
del nombre del dispositivo, sin embargo no permite modificar la estructura del ID
(Android-Cdigo), solo el cdigo.
De manera similar se emplea el mismo proceso en los dispositivos Iphone,
Blackberry. Window, iPad. En la figura se puede evidenciar la ocurrencia de estos
patrones en los hostnames de los dispositivos conectados.

12

Figura 6. Lista de Dispositivos conectados mediante DHCP

El modelovistacontrolador (MVC)
Es un patrn de arquitectura de software, que separa los datos y la lgica de
negocio de una aplicacin de la interfaz de usuario y el mdulo encargado de gestionar
los eventos y las comunicaciones. Para ello MVC propone la construccin de tres
componentes distintos que son el modelo, la vista y el controlador, es decir, por un lado
define componentes para la representacin de la informacin, y por otro lado para la
interaccin del usuario.
Este patrn de arquitectura de software se basa en las ideas de reutilizacin de
cdigo y la separacin de conceptos, caractersticas que buscan facilitar la tarea de
desarrollo de aplicaciones y su posterior mantenimiento.

1.2 Objetivos General y Especficos


1.2.1 Objetivo General

Desarrollo de un algoritmo de bsqueda de dispositivos mviles

1.2.2 Objetivos Especficos

Definir los requerimientos generales que ha de cumplir el algoritmo de


bsqueda de dispositivos mviles.
13

Identificar requerimientos funcionales y no funcionales involucrados en

algoritmo de bsqueda de dispositivos mviles.


Desarrollar el algoritmo de bsqueda de dispositivos
Implementar el algoritmo de bsqueda de dispositivos mviles sobre la

plataforma Android.
Realizar pruebas del algoritmo de bsqueda de dispositivos mviles.

1.3 Metodologa de Desarrollo


El modelo de cascada, a veces llamado ciclo de vida clsico, sugiere un enfoque
sistemtico y secuencial para el desarrollo del software, que comienza con la
especificacin de los requerimientos por parte del cliente y avanza a travs de
planeacin, modelado, construccin y despliegue, para concluir con el apoyo del
software terminado (Pressman, 2005).
Este tipo de modelo es utilizado cuando los requerimientos para cierto problema
se comprenden bien: cuando el trabajo desde la comunicacin hasta el despliegue fluye
en forma razonablemente lineal. Tambin ocurre en cierto nmero limitado de nuevos
esfuerzos de desarrollo, pero slo cuando los requerimientos estn bien definidos y
tienen una estabilidad razonable.

Figura 7. Modelo Cascada Fuente: Pressman, R. 2010. Ingeniera del Software Un Enfoque
Prctico. 7ma ed.

14

1.3.1 Comunicacin
Incluye el inicio del proyecto y la determinacin de los requerimientos, tanto
funcionales como no funcionales.
Requerimientos Funcionales

Identificacin de los dispositivos conectados a la red


Filtrado de los dispositivos mviles conectados a la red
Mostrar informacin del resultado de la bsqueda.

Requerimientos No funcionales

Disponibilidad: las aplicaciones deben estar disponible las 24 horas del da,

siempre que el dispositivo est conectado a una red.


Usabilidad: deben ser amigable e intuitivo, para mostrar de manera clara y

sencilla la informacin de los diferentes dispositivos.


Escalabilidad: los diseos de las aplicaciones deben contemplar el uso ptimo de

los recursos.
Mantenibilidad: debe estar correctamente documentado para que interesados
futuros puedan hacerle mantenimiento, o bien, agregar funcionalidades. Por otro
lado, la estructuracin del cdigo debe ser consistente.

1.3.2 Planeacin
Se centra en realizar una estimacin del tiempo en el que se desarrollaran las
etapas del proyecto y como se le dar seguimiento.
Tabla 1. Planificacin de Actividades

Actividad
1

Determinar los requerimientos


de informacin
Anlisis del sistema
Diseo del Sistema
Desarrollo del sistema
Pruebas del sistema
Desarrollo del manual de
usuario del sistema
Implantacin del sistema
Documentacin

15

Semana
4
5

1.3.2 Modelado
Compuesto por el anlisis y el diseo del sistema.
Caso de Uso

Figura 8. Caso de Uso del Sistema

Diagrama de Clases

Figura 9. Diagrama de Clases correspondiente a la codificacin

16

Diagrama de Estados

Figura 10. Diagrama de Estados

Diseo de la Interfaz

Figura 11. A la derecha interfaz principal, a la izquierda modelo para almacenar los
resultados

17

1.3.4 Construccin
En esta etapa se realiza la codificacin, en el caso de estudio se realiz en el
lenguaje Java.
Desarrollo del Algoritmo
En la inicializacin
RANGO = 254 //Dada que nuestra mascara de red local es
255.255.255.255
IP_red_local= 192.x.y.
ID_Dispositivos; [android,BlackBerry, Iphone, iPod, iPad]
[]Lista_Dispositivos;
[]Lista_Dispositivos_Moviles;
Para obtener el listado de dispositivos conectados a la red
if RANGO <=254 then
if hacerPing(IP_red_local + RANGO) then
agregar a Lista_ Dispositivos
else
RANGO++;
end-if
end-if
Para realizar el filtrado de dispositivos mviles
Desde i=0 hasta tamao_Lista_dispositivos
HostName: obtenerHostNameDispositivo(lista_dispositivos);
if HostName contiene ID_Dispositivos then
ADD to Lista_Dispositivos_Moviles;
else
i++;
end-if
devuelve Lista_Dispositivos_Moviles;
fin-desde
Codificacin
Clase Scan
Mtodo que permite obtener la direccin IP de la red

18

public static String getLocalIpv4Address(){


try {
String ipv4;
List<NetworkInterface>nilist= .list(NetworkInterface.getNetworkInterfaces());
if(nilist.size() > 0){
for (NetworkInterface ni: nilist){
List<InetAddress> ialist = Collections.list(ni.getInetAddresses());
if(ialist.size()>0){
for (InetAddress address: ialist){
if(!address.isLoopbackAddress()
&&
InetAddressUtils.isIPv4Address(ipv4=address.getHostAddress(){
return ipv4;
}}} } }
} catch (SocketException ex) {
} return ""; }
Mtodo que utiliza la direccin IP obtenida para devolver la lista de Dispositivos
conectados a la red mediante la autenticacin de la conexin a la red a travs la
clase Pinger
protected List<Device> doInBackground(NetDeviceAdapter... voids) {
String ipString = getLocalIpv4Address();
if (ipString == null){
return new ArrayList<Device>(1);
}
int lastdot = ipString.lastIndexOf(".");
ipString = ipString.substring(0, lastdot);
List<Device> addresses = Pinger.getDevicesOnNetwork(ipString);
adapter = voids[0];
return addresses;
}
Clase Pinger: comprueba la conectividad del dispositivo a la red mediante dos
mtodos: obtener lista de dispositivos en la red y agregar a lista de dispositivos
encontrados.
public class Pinger {
private static final int NUMTHREADS = 254;
public static List<Device> getDevicesOnNetwork(String subnet){
19

LinkedList<InetAddress> resAddresses = new LinkedList<InetAddress>();


DiscoverRunner[] tasks = new DiscoverRunner[NUMTHREADS];
Thread[] threads = new Thread[NUMTHREADS];
for(int i = 0; i < NUMTHREADS; i++){
tasks[i] = new
254/NUMTHREADS);

DiscoverRunner(subnet,

254/NUMTHREADS*i,

threads[i] = new Thread(tasks[i]); }


for(int i = 0; i < NUMTHREADS; i++){
threads[i].start(); }
for(int i = 0; i < NUMTHREADS; i++){
try{
threads[i].join();
}catch(InterruptedException e){
e.printStackTrace();
}}
for(int i = 0; i < NUMTHREADS; i++){
for(InetAddress a: tasks[i].getResults()){
try {
a = InetAddress.getByName(a.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
resAddresses.add(a);
}
}
ArrayList<Device> foundDev = new ArrayList<Device>(resAddresses.size());
for (InetAddress a: resAddresses){
foundDev.add(new
Device(a.getHostAddress(),
a.getCanonicalHostName()));

getMacFromArpCache(a.getHostAddress()),

20

} return foundDev; }

Clase DescubrirMoviles: realiza la comparacin y la filtraciones por las cabeceras


de los hostname
public void descubreMoviles() {
int timeout = 4000;
for (int i = startAdd; i < startAdd + numAdds; i++) {
String host = subnet + "." + i;
String dnsDominio= "android";
String dnsDominio2= "iphone";
String dnsDominio3= "BlackBerry";
String dnsDominio4= "iphone";
String nombreDevice= "";
try {
Process exec = Runtime.getRuntime().exec(String.format(CMD, host));
int i1 = exec.waitFor();
if (i1 == 0){
InetAddress a = InetAddress.getByName(host);
//Filtramos por Dispositivo Mvil
nombreDevice = a.getHostName();
if (nombreDevice.startsWith(dnsDominio)){
Log.i("Cant. " + startAdd + "- " + numAdds, "Nombre Dispositivo "+
a.getHostName());
results.add(a);
}
}else {
throw new IOException("Unable to get ping from runtime");
}
} catch (IOException | InterruptedException e) {
try {
InetAddress a = InetAddress.getByName(host);
if (a.isReachable(timeout)) {
Log.i(text, "Movil2: "+ a.getHostName());
results.add(a);
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
}

21

1.3.5 Despliegue
Al terminar el diseo y la codificacin se procede a implementar la aplicacin en
un dispositivo mvil tangible y realizar las pruebas necesarias. A continuacin se
muestra el proceso de la implementacin en una Tablet Canaima TRS10.

Figura 12. Proceso de ejecucin de la aplicacin.

Figura 13. A la derecha se muestra la ejecucin de la aplicacin, donde muestra los permisos
que requiere la aplicacin. A la izquierda el proceso de instalacin en el dispositivo.

22

Figura 14. Finalizacin de la instalacin y ejecucin de la aplicacin en el Dispositivo Mvil.

Figura 15. A la derecha se muestra la ejecucin en el dispositivo HTC Vivid donde se refleja un
error en el clculo de la direccin IP, luego fue resuelto. A la izquierda el acceso directo a la
aplicacin dentro del men del telfono que demuestra la instalacin exitosa de la app.

23

3. Materiales y Mtodos
Recursos Fsicos
La aplicacin ser desarrollada en un computador que posee las siguientes
caractersticas:

Memoria RAM: 4 GB
Disco Duro: 200 GB
Sistema Operativo: Windows 7 Ultimate 32Bits
Procesador: Intel(R) Core(TM)2 Duo 2.53 GHz de segunda generacin

Y ser implementada en dos dispositivos mviles:


Tableta Canaima TR10RS1:

Memoria RAM: 1 GB
Almacenamiento Interno: 8G
Sistema Operativo: Android 4.4.2 KitKat
Procesador: Intel Atom Z3735F, Quad Core de 1.33Ghz

Telfono Inteligente HTC Vivid 4G

Memoria RAM: 1GB


Almacenamiento Interno: 16G
Sistema Operativo: Android 4.0.1 Ice Cream Sandwich
Procesador: Qualcomm Snapdragon APQ8060 / Scorpion 1.2Ghz Dual-Core

Recursos Tecnolgicos
El prototipo de la aplicacin va a hacer uso de los siguientes elementos tecnolgicos
con el fin de garantizar un desarrollo hecho con el software ms actualizado posible:

Android Studio 2.1.2 (ltima Versin de Mayo 2016)


JVM: Java HotSpot(TM) Server VM
Plataforma Android 6.0 Marshmallow

24

3.1 Arquitectura del sistema


Modelo-Vista-Controlador

Figura 16. Arquitectura del sistema basada en MVC

La agrupacin de clases de nuestro sistema es:

25

Figura 17. Clases pertenecientes a la arquitectura

3.1 Modelo de Interaccin


El flujo de control que se sigues el siguiente:

El usuario interacta con la interfaz pulsando el botn de Actualizar.


El controlador recibe la notificacin de la accin solicitada por el usuario y
gestiona el evento accediendo al modelo, utilizando los mtodos necesarios para

realizar el escner en la red.


El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de
usuario. La vista obtiene sus datos del modelo para generar la interfaz apropiada

para el usuario donde se reflejan los cambios en el modelo


La interfaz de usuario espera nuevas interacciones del usuario, comenzando el
ciclo nuevamente.

Figura 18. Modelo de Interaccin de la aplicacin.

Manejo de Eventos
26

Figura 19. Diagrama que refleja el manejo de Eventos dentro de la arquitectura

3.2 Modelo de Fallas


Se est realizando una aplicacin android que se conecta a una red inalmbrica,
donde su funcin es identificar los tipos de dispositivos mviles que se encuentran
conectados a la red con sus respectivas caractersticas, para este caso el nico modelo de
fallas que se podra presentar a lo largo del funcionamiento de la aplicacin seria:
Falla en los medios de comunicacin: ocurre cuando un sitio no puede comunicarse
con otro sitio operacional en la red. Esto es ocasionado por la falla del nodo de
conmutacin y/o por los enlaces de comunicacin del sistema
Es la nica falla que puede presentar el sistema que a la vez no se considera una falla
como tal debido a que se supone que la funcionabilidad de la aplicacin se basa en eso
conectarse a una red para realizar la bsqueda de los dispositivos mviles y as poder
identificar los dispositivos existentes en la red

Por otra parte se usa el protocolo DHCP (mediante la librera de Java llamada
InetAddres), el cual en un determinado caso puede fallar si se cae el servido, pero para
evitar esas fallas en el sistema se usa un try catch para que la aplicacin siempre est en
funcionamiento as ocurra una falla debido a que se produce una excepcin que avisa
que hay un error y corrige la falla correctamente, si esto no se hace se puede presentar
27

un problema a la hora de que se quieran obtener las direcciones IP para poder encontrar
los dispositivos y filtrarlos para poder cifrar los dispositivos conectados en la red, por
eso es necesario el try catch.

Instalacin
Aplicacin Escaner Mvil
1. Trasladamos el archivo app-debug.apk al dispositivo mvil, y ejecutamos el
archivo. En el caso ejemplo el archivo se envi va correo electrnico y luego se
descarg. Ver la siguiente figura.

Figura 1. Paso 1 en la instalacin de la aplicacin

28

2. Seguido se hace clic en Instalar, en la seccin de acceso al dispositivo se pueden


ver los permisos que requiere la aplicacin

Figura 20. Paso 1 en la instalacin de la Aplicacin.


Figura 21. Paso 2 en la instalacin de la aplicacin

29

3. Se espera unos segundos a que se instale la aplicacin, este tiempo vara segn
el dispositivo.

Figura 22. Paso 3 en la instalacin de la aplicacin

30

4. Luego de finalizada la instalacin se puede abrir la aplicacin o cerrar la


ventana.

Figura 23. Paso 4 en la instalacin de la aplicacin

31

5. En caso de elegir cerrar la ventana: para poder iniciar la aplicacin se debe elegir
el icono correspondiente en el men de aplicaciones del dispositivo.

Figura 24. Paso 5 en la instalacin de la aplicacin

32

6. En caso de elegir abrir: se abrir automticamente la aplicacin y mostrar la ip


del dispositivo.

Figura 25. Paso 6 en la instalacin de la aplicacin

33

7. Para escanear los dispositivos mviles disponibles se debe presionar el botn


ubicado en la esquina superior derecha. Luego se bloqueara la pantalla y
mostrar una barra de estado.

Figura 26. Paso 7 en la instalacin de la aplicacin

34

8. Finalmente mostrar el resultado de la bsqueda y se activar nuevamente el


botn de bsqueda, que queda disponible para realizar una nueva bsqueda.

Figura 27. Paso 8 en la instalacin de la aplicacin

35

Pruebas realizadas
Se realizaron un total de 7 pruebas en 2 dispositivos mviles distintos, cuyos
resultados nos permitieron resolver errores sintcticos, estas cuales se describen a
continuacin en la tabla 1:
Pruebas Realizadas
Satisfactorias
infructuoso
Tiempo Promedio de Respuesta

7
4
3
20 s

Tabla 2. Resumen de las pruebas de la aplicacin mvil.

Figura 28. Pantalla de pruebas en el dispositivo HTC

36

Conclusin

Como resultado del proyecto se realiz de manera exitosa el desarrollo de un


algoritmo que permite realizar la bsqueda de dispositivos mviles en la red
local, a travs de la implementacin de una metodologa de desarrollo de

software que result conveniente para la capacidad del analista desarrollador.


Se definieron con los requerimientos generales que deba cumplir el algoritmo
en la seccin de requerimientos funcionales, lo que contribuy a desglosarlos en

la codificacin.
Fueron aadidos requerimientos no funcionales como la usabilidad, que permiti
el desarrollo de una interfaz amigable e intuitiva, para mostrar de manera clara y

sencilla la informacin de los diferentes dispositivos resultantes en la bsqueda.


Mediante el entorno de desarrollo Android Studio se codific el algoritmo y se

implement en varios dispositivos mviles.


La implementacin permiti detectar errores dentro del modelo vista
controlador, especficamente en el manejo de eventos entre capas, y poder

realizar una correccin de estos hasta estabilizar la aplicacin.


La aplicacin mvil resultante se instal en un total de 7 dispositivos mviles,
pruebas que permitieron recoger informacin necesaria para la correccin de

errores.
El algoritmo sirve como base para realizar medidas de seguridad sobre las redes,
por ejemplo el bloqueo de dispositivos mviles dentro de un ambiente de
trabajo.

37

Referencias
Pressman, R. (2005). Ingeniera del Software: Un enfoque prctico. Mxico: McGrawHills Interamericana Editores, S.A. de C.V.
Azara, C. (1997). Computacin Mvil. Venezuela, caracas.
Cabrera, H. S. (2 de Mayo de 2015). Computacin ubicua. Correo del Orinoco, pg. 4.
Hernndez, M. L. (2010). Diseo Estructurado de Algoritmos: Diagramas de flujos y
pseudocdigos. Mxico: Universidad de Teuxtepe.
Milln, A. F. (2003). Computacin Movil: El desafo de la generacin de Ingenieros de
Sistemas del nuevo siglo. Santiago de Cali, Cali.
Pressman, R. (2005). Ingeniera del Software: Un enfoque prctico. Mxico: McGrawHills Interamericana Editores, S.A. de C.V.
Tanenbaum, A. S., & Van Steen, M. (2002). Distributed Systems: Principles and
Paradigms. Prentice Hall.
UNAD. (2005). Universidad Nacional Abierta y a Distancia. Recuperado el 10 de Julio
de
2016,
de
Campus
Virtual
UNAD:
http://datateca.unad.edu.co/contenidos/201493/CONTENIDO%20DIDACTICO
%20EXE1/leccion_4_computacion_ubicua.html
Vargas Cordero, R. Z. (2009). La Investigacin aplicada: una forma de conocer las
realidades
con
evidencia
cientifica.
Obtenido
de
http://www.latindex.ucr.ac.cr/educacion-33-1/educacion-33-1-09.pdf
Weiser, M. (1991). The Computer for the Twenty-First Century". En M. Weiser, The
Computer for the Twenty-First Century" (pgs. 94-10). Scientific American.

38

Vous aimerez peut-être aussi